From 2722ea9bbe97edbfc15d568517cd4cb42f27b0e5 Mon Sep 17 00:00:00 2001 From: d34dscene Date: Thu, 30 Jan 2025 00:48:31 +0100 Subject: [PATCH] fixed plugin and otp --- internal/api/handler/auth.go | 24 +- internal/api/server/routes.go | 4 +- web/package.json | 8 +- web/pnpm-lock.yaml | 544 +++++++++--------- web/src/app.css | 132 ++--- web/src/lib/api.ts | 21 +- web/src/lib/components/forms/BaseForm.svelte | 326 ----------- web/src/lib/components/forms/FormField.svelte | 156 +++-- .../ui/avatar/avatar-fallback.svelte | 6 +- .../components/ui/avatar/avatar-image.svelte | 6 +- .../lib/components/ui/avatar/avatar.svelte | 6 +- web/src/lib/components/ui/avatar/index.ts | 8 +- web/src/lib/components/ui/badge/badge.svelte | 31 +- web/src/lib/components/ui/badge/index.ts | 4 +- .../lib/components/ui/button/button.svelte | 56 +- web/src/lib/components/ui/button/index.ts | 6 +- .../components/ui/card/card-content.svelte | 8 +- .../ui/card/card-description.svelte | 8 +- .../lib/components/ui/card/card-footer.svelte | 8 +- .../lib/components/ui/card/card-header.svelte | 8 +- .../lib/components/ui/card/card-title.svelte | 8 +- web/src/lib/components/ui/card/card.svelte | 8 +- web/src/lib/components/ui/card/index.ts | 14 +- .../components/ui/checkbox/checkbox.svelte | 12 +- web/src/lib/components/ui/checkbox/index.ts | 4 +- .../ui/collapsible/collapsible-content.svelte | 13 +- .../lib/components/ui/collapsible/index.ts | 4 +- .../ui/command/command-dialog.svelte | 12 +- .../ui/command/command-empty.svelte | 6 +- .../ui/command/command-group.svelte | 10 +- .../ui/command/command-input.svelte | 10 +- .../components/ui/command/command-item.svelte | 6 +- .../ui/command/command-link-item.svelte | 6 +- .../components/ui/command/command-list.svelte | 6 +- .../ui/command/command-separator.svelte | 6 +- .../ui/command/command-shortcut.svelte | 8 +- .../lib/components/ui/command/command.svelte | 8 +- web/src/lib/components/ui/command/index.ts | 24 +- .../ui/data-table/data-table.svelte.ts | 14 +- .../ui/data-table/flex-render.svelte | 6 +- web/src/lib/components/ui/data-table/index.ts | 6 +- .../ui/data-table/render-helpers.ts | 4 +- .../ui/dialog/dialog-content.svelte | 14 +- .../ui/dialog/dialog-description.svelte | 6 +- .../components/ui/dialog/dialog-footer.svelte | 8 +- .../components/ui/dialog/dialog-header.svelte | 8 +- .../ui/dialog/dialog-overlay.svelte | 6 +- .../components/ui/dialog/dialog-portal.svelte | 2 +- .../components/ui/dialog/dialog-title.svelte | 6 +- web/src/lib/components/ui/dialog/index.ts | 16 +- .../dropdown-menu-checkbox-item.svelte | 14 +- .../dropdown-menu-content.svelte | 6 +- .../dropdown-menu-group-heading.svelte | 6 +- .../dropdown-menu/dropdown-menu-item.svelte | 8 +- .../dropdown-menu/dropdown-menu-label.svelte | 8 +- .../dropdown-menu-radio-group.svelte | 2 +- .../dropdown-menu-radio-item.svelte | 8 +- .../dropdown-menu-separator.svelte | 6 +- .../dropdown-menu-shortcut.svelte | 8 +- .../dropdown-menu-sub-content.svelte | 6 +- .../dropdown-menu-sub-trigger.svelte | 10 +- .../lib/components/ui/dropdown-menu/index.ts | 24 +- .../lib/components/ui/form/form-button.svelte | 2 +- .../ui/form/form-description.svelte | 8 +- .../ui/form/form-element-field.svelte | 12 +- .../ui/form/form-field-errors.svelte | 8 +- .../lib/components/ui/form/form-field.svelte | 12 +- .../components/ui/form/form-fieldset.svelte | 10 +- .../lib/components/ui/form/form-label.svelte | 10 +- .../lib/components/ui/form/form-legend.svelte | 8 +- web/src/lib/components/ui/form/index.ts | 20 +- .../ui/hover-card/hover-card-content.svelte | 8 +- web/src/lib/components/ui/hover-card/index.ts | 6 +- web/src/lib/components/ui/input-otp/index.ts | 10 +- .../ui/input-otp/input-otp-group.svelte | 8 +- .../ui/input-otp/input-otp-separator.svelte | 6 +- .../ui/input-otp/input-otp-slot.svelte | 12 +- .../components/ui/input-otp/input-otp.svelte | 10 +- web/src/lib/components/ui/input/index.ts | 4 +- web/src/lib/components/ui/input/input.svelte | 8 +- web/src/lib/components/ui/label/index.ts | 4 +- web/src/lib/components/ui/label/label.svelte | 6 +- web/src/lib/components/ui/pagination/index.ts | 16 +- .../ui/pagination/pagination-content.svelte | 8 +- .../ui/pagination/pagination-ellipsis.svelte | 10 +- .../ui/pagination/pagination-item.svelte | 4 +- .../ui/pagination/pagination-link.svelte | 12 +- .../pagination/pagination-next-button.svelte | 12 +- .../pagination/pagination-prev-button.svelte | 12 +- .../ui/pagination/pagination.svelte | 6 +- web/src/lib/components/ui/popover/index.ts | 6 +- .../ui/popover/popover-content.svelte | 8 +- web/src/lib/components/ui/progress/index.ts | 4 +- .../components/ui/progress/progress.svelte | 8 +- web/src/lib/components/ui/select/index.ts | 18 +- .../ui/select/select-content.svelte | 12 +- .../ui/select/select-group-heading.svelte | 6 +- .../components/ui/select/select-item.svelte | 8 +- .../components/ui/select/select-label.svelte | 8 +- .../select/select-scroll-down-button.svelte | 8 +- .../ui/select/select-scroll-up-button.svelte | 8 +- .../ui/select/select-separator.svelte | 8 +- .../ui/select/select-trigger.svelte | 8 +- web/src/lib/components/ui/separator/index.ts | 4 +- .../components/ui/separator/separator.svelte | 10 +- web/src/lib/components/ui/sheet/index.ts | 16 +- .../components/ui/sheet/sheet-content.svelte | 36 +- .../ui/sheet/sheet-description.svelte | 6 +- .../components/ui/sheet/sheet-footer.svelte | 8 +- .../components/ui/sheet/sheet-header.svelte | 8 +- .../components/ui/sheet/sheet-overlay.svelte | 6 +- .../components/ui/sheet/sheet-portal.svelte | 3 +- .../components/ui/sheet/sheet-title.svelte | 6 +- .../lib/components/ui/sidebar/constants.ts | 10 +- .../components/ui/sidebar/context.svelte.ts | 16 +- web/src/lib/components/ui/sidebar/index.ts | 50 +- .../ui/sidebar/sidebar-content.svelte | 8 +- .../ui/sidebar/sidebar-footer.svelte | 8 +- .../ui/sidebar/sidebar-group-action.svelte | 18 +- .../ui/sidebar/sidebar-group-content.svelte | 8 +- .../ui/sidebar/sidebar-group-label.svelte | 16 +- .../ui/sidebar/sidebar-group.svelte | 8 +- .../ui/sidebar/sidebar-header.svelte | 8 +- .../ui/sidebar/sidebar-input.svelte | 10 +- .../ui/sidebar/sidebar-inset.svelte | 10 +- .../ui/sidebar/sidebar-menu-action.svelte | 26 +- .../ui/sidebar/sidebar-menu-badge.svelte | 18 +- .../ui/sidebar/sidebar-menu-button.svelte | 54 +- .../ui/sidebar/sidebar-menu-item.svelte | 8 +- .../ui/sidebar/sidebar-menu-skeleton.svelte | 10 +- .../ui/sidebar/sidebar-menu-sub-button.svelte | 30 +- .../ui/sidebar/sidebar-menu-sub-item.svelte | 4 +- .../ui/sidebar/sidebar-menu-sub.svelte | 10 +- .../components/ui/sidebar/sidebar-menu.svelte | 8 +- .../ui/sidebar/sidebar-provider.svelte | 18 +- .../components/ui/sidebar/sidebar-rail.svelte | 20 +- .../ui/sidebar/sidebar-separator.svelte | 8 +- .../ui/sidebar/sidebar-trigger.svelte | 12 +- .../lib/components/ui/sidebar/sidebar.svelte | 67 ++- web/src/lib/components/ui/skeleton/index.ts | 4 +- .../components/ui/skeleton/skeleton.svelte | 8 +- web/src/lib/components/ui/sonner/index.ts | 2 +- .../lib/components/ui/sonner/sonner.svelte | 15 +- web/src/lib/components/ui/switch/index.ts | 4 +- .../lib/components/ui/switch/switch.svelte | 8 +- web/src/lib/components/ui/table/index.ts | 18 +- .../lib/components/ui/table/table-body.svelte | 8 +- .../components/ui/table/table-caption.svelte | 8 +- .../lib/components/ui/table/table-cell.svelte | 8 +- .../components/ui/table/table-footer.svelte | 8 +- .../lib/components/ui/table/table-head.svelte | 8 +- .../components/ui/table/table-header.svelte | 8 +- .../lib/components/ui/table/table-row.svelte | 8 +- web/src/lib/components/ui/table/table.svelte | 8 +- web/src/lib/components/ui/tabs/index.ts | 10 +- .../components/ui/tabs/tabs-content.svelte | 6 +- .../lib/components/ui/tabs/tabs-list.svelte | 12 +- .../components/ui/tabs/tabs-trigger.svelte | 6 +- web/src/lib/components/ui/textarea/index.ts | 4 +- .../components/ui/textarea/textarea.svelte | 8 +- web/src/lib/components/ui/toggle/index.ts | 8 +- .../lib/components/ui/toggle/toggle.svelte | 35 +- web/src/lib/components/ui/tooltip/index.ts | 6 +- .../ui/tooltip/tooltip-content.svelte | 6 +- web/src/lib/hooks/is-mobile.svelte.ts | 2 +- web/src/routes/login/+page.svelte | 4 +- web/src/routes/login/reset/+page.svelte | 86 +-- web/tailwind.config.ts | 112 ++-- 168 files changed, 1414 insertions(+), 1679 deletions(-) delete mode 100644 web/src/lib/components/forms/BaseForm.svelte diff --git a/internal/api/handler/auth.go b/internal/api/handler/auth.go index 1cc0b0d..04d917a 100644 --- a/internal/api/handler/auth.go +++ b/internal/api/handler/auth.go @@ -35,7 +35,7 @@ func Login(DB *sql.DB, secret string) http.HandlerFunc { http.Error(w, "User not found", http.StatusNotFound) return } - if err := bcrypt.CompareHashAndPassword([]byte(dbUser.Password), []byte(user.Password)); err != nil { + if err = bcrypt.CompareHashAndPassword([]byte(dbUser.Password), []byte(user.Password)); err != nil { http.Error(w, "Invalid username or password "+err.Error(), http.StatusUnauthorized) return } @@ -61,8 +61,8 @@ func Login(DB *sql.DB, secret string) http.HandlerFunc { } } -// VerifyToken checks the validity of a JWT token provided in cookies or Authorization header. -func VerifyToken(DB *sql.DB, secret string) http.HandlerFunc { +// VerifyJWT checks the validity of a JWT token provided in cookies or Authorization header. +func VerifyJWT(DB *sql.DB, secret string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { q := db.New(DB) var token string @@ -97,14 +97,13 @@ func VerifyToken(DB *sql.DB, secret string) http.HandlerFunc { } } -// ResetPassword allows users to reset their password using a valid JWT token. -func ResetPassword(DB *sql.DB, secret string) http.HandlerFunc { +// VerifyOTP allows users to login using an OTP token, to reset their password +func VerifyOTP(DB *sql.DB, secret string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { q := db.New(DB) var data struct { Username string `json:"username"` Token string `json:"token"` - Password string `json:"password"` } if err := json.NewDecoder(r.Body).Decode(&data); err != nil { http.Error(w, "Failed to decode credentials", http.StatusBadRequest) @@ -123,7 +122,7 @@ func ResetPassword(DB *sql.DB, secret string) http.HandlerFunc { return } - if user.Otp != &data.Token { + if *user.Otp != data.Token { http.Error(w, "Invalid token", http.StatusUnauthorized) return } @@ -133,21 +132,20 @@ func ResetPassword(DB *sql.DB, secret string) http.HandlerFunc { return } - hash, err := bcrypt.GenerateFromPassword([]byte(data.Password), bcrypt.DefaultCost) + expirationTime := time.Now().Add(1 * time.Hour) + token, err := util.EncodeUserJWT(user.Username, secret, expirationTime) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - if err = q.UpdateUserPassword(r.Context(), db.UpdateUserPasswordParams{ - ID: user.ID, - Password: string(hash), - }); err != nil { + if err := q.UpdateUserLastLogin(r.Context(), user.ID); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - w.WriteHeader(http.StatusOK) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]string{"token": token}) } } diff --git a/internal/api/server/routes.go b/internal/api/server/routes.go index 354fad2..ede587f 100644 --- a/internal/api/server/routes.go +++ b/internal/api/server/routes.go @@ -40,8 +40,8 @@ func (s *Server) routes() { // Auth register("POST", "/login", logChain, handler.Login(DB, s.app.Config.Secret)) - register("POST", "/verify", logChain, handler.VerifyToken(DB, s.app.Config.Secret)) - register("POST", "/reset", logChain, handler.ResetPassword(DB, s.app.Config.Secret)) + register("POST", "/verify", logChain, handler.VerifyJWT(DB, s.app.Config.Secret)) + register("POST", "/verify/otp", logChain, handler.VerifyOTP(DB, s.app.Config.Secret)) register("POST", "/reset/{name}", logChain, handler.SendResetEmail(DB, s.app.Config.Secret)) // Events diff --git a/web/package.json b/web/package.json index d12392f..6b6fed5 100644 --- a/web/package.json +++ b/web/package.json @@ -18,11 +18,11 @@ "@sveltejs/kit": "^2.16.1", "@sveltejs/vite-plugin-svelte": "^4.0.4", "@types/eslint": "^9.6.1", - "@types/node": "^22.10.10", + "@types/node": "^22.12.0", "autoprefixer": "^10.4.20", "bits-ui": "1.0.0-next.79", "clsx": "^2.1.1", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.46.1", "formsnap": "^2.0.0", @@ -34,7 +34,7 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", - "svelte": "^5.19.2", + "svelte": "^5.19.5", "svelte-check": "^4.1.4", "svelte-highlight": "^7.8.2", "svelte-sonner": "^0.3.28", @@ -44,7 +44,7 @@ "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", "typescript": "^5.7.3", - "typescript-eslint": "^8.21.0", + "typescript-eslint": "^8.22.0", "vite": "^5.4.14", "yaml": "^2.7.0", "zod": "^3.24.1" diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index cbf1886..4fe9f23 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -26,43 +26,43 @@ importers: version: 2.2.1 '@sveltejs/adapter-auto': specifier: ^3.3.1 - version: 3.3.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10))) + version: 3.3.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0))) '@sveltejs/adapter-static': specifier: ^3.0.8 - version: 3.0.8(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10))) + version: 3.0.8(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0))) '@sveltejs/kit': specifier: ^2.16.1 - version: 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + version: 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) '@sveltejs/vite-plugin-svelte': specifier: ^4.0.4 - version: 4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + version: 4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 '@types/node': - specifier: ^22.10.10 - version: 22.10.10 + specifier: ^22.12.0 + version: 22.12.0 autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.5.1) bits-ui: specifier: 1.0.0-next.79 - version: 1.0.0-next.79(svelte@5.19.2) + version: 1.0.0-next.79(svelte@5.19.5) clsx: specifier: ^2.1.1 version: 2.1.1 eslint: - specifier: ^9.18.0 - version: 9.18.0(jiti@1.21.7) + specifier: ^9.19.0 + version: 9.19.0(jiti@1.21.7) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.18.0(jiti@1.21.7)) + version: 9.1.0(eslint@9.19.0(jiti@1.21.7)) eslint-plugin-svelte: specifier: ^2.46.1 - version: 2.46.1(eslint@9.18.0(jiti@1.21.7))(svelte@5.19.2) + version: 2.46.1(eslint@9.19.0(jiti@1.21.7))(svelte@5.19.5) formsnap: specifier: ^2.0.0 - version: 2.0.0(svelte@5.19.2)(sveltekit-superforms@2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(@types/json-schema@7.0.15)(svelte@5.19.2)(typescript@5.7.3)) + version: 2.0.0(svelte@5.19.5)(sveltekit-superforms@2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(@types/json-schema@7.0.15)(svelte@5.19.5)(typescript@5.7.3)) globals: specifier: ^15.14.0 version: 15.14.0 @@ -71,10 +71,10 @@ importers: version: 11.11.1 lucide-svelte: specifier: ^0.424.0 - version: 0.424.0(svelte@5.19.2) + version: 0.424.0(svelte@5.19.5) mode-watcher: specifier: ^0.4.1 - version: 0.4.1(svelte@5.19.2) + version: 0.4.1(svelte@5.19.5) postcss: specifier: ^8.5.1 version: 8.5.1 @@ -83,25 +83,25 @@ importers: version: 3.4.2 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.4.2)(svelte@5.19.2) + version: 3.3.3(prettier@3.4.2)(svelte@5.19.5) prettier-plugin-tailwindcss: specifier: ^0.6.11 - version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.2))(prettier@3.4.2) + version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.5))(prettier@3.4.2) svelte: - specifier: ^5.19.2 - version: 5.19.2 + specifier: ^5.19.5 + version: 5.19.5 svelte-check: specifier: ^4.1.4 - version: 4.1.4(svelte@5.19.2)(typescript@5.7.3) + version: 4.1.4(svelte@5.19.5)(typescript@5.7.3) svelte-highlight: specifier: ^7.8.2 version: 7.8.2 svelte-sonner: specifier: ^0.3.28 - version: 0.3.28(svelte@5.19.2) + version: 0.3.28(svelte@5.19.5) sveltekit-superforms: specifier: ^2.23.1 - version: 2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(@types/json-schema@7.0.15)(svelte@5.19.2)(typescript@5.7.3) + version: 2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(@types/json-schema@7.0.15)(svelte@5.19.5)(typescript@5.7.3) tailwind-merge: specifier: ^2.6.0 version: 2.6.0 @@ -118,11 +118,11 @@ importers: specifier: ^5.7.3 version: 5.7.3 typescript-eslint: - specifier: ^8.21.0 - version: 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + specifier: ^8.22.0 + version: 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) vite: specifier: ^5.4.14 - version: 5.4.14(@types/node@22.10.10) + version: 5.4.14(@types/node@22.12.0) yaml: specifier: ^2.7.0 version: 2.7.0 @@ -140,14 +140,14 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@ark/schema@0.36.0': - resolution: {integrity: sha512-1zL+9AjNk6fNcCp5krt3HxM80kFr+MskqH2Gbz60GzXsjsAVZ38xM5WFVZMEPL8VbmTqDvBiwPm7HvK972lADg==} + '@ark/schema@0.39.0': + resolution: {integrity: sha512-LQbQUb3Sj461LgklXObAyUJNtsUUCBxZlO2HqRLYvRSqpStm0xTMrXn51DwBNNxeSULvKVpXFwoxiSec9kwKww==} - '@ark/util@0.36.0': - resolution: {integrity: sha512-3tn3udpNeoLdmU1kvJYjDnhXereB2PYHED2c2j8Q7OsIRMx+AlOCXWjsI4qjAarjjbfCsKtsdMlE2QnLrcVCuA==} + '@ark/util@0.39.0': + resolution: {integrity: sha512-90APHVklk8BP4kku7hIh1BgrhuyKYqoZ4O7EybtFRo7cDl9mIyc/QUbGvYDg//73s0J2H0I/gW9pzroA1R4IBQ==} - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + '@babel/runtime@7.26.7': + resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} engines: {node: '>=6.9.0'} '@esbuild/aix-ppc64@0.21.5': @@ -460,8 +460,8 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.18.0': - resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} + '@eslint/js@9.19.0': + resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.5': @@ -571,98 +571,98 @@ packages: resolution: {integrity: sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==} engines: {node: '>=18.16.0'} - '@rollup/rollup-android-arm-eabi@4.31.0': - resolution: {integrity: sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==} + '@rollup/rollup-android-arm-eabi@4.32.1': + resolution: {integrity: sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.31.0': - resolution: {integrity: sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==} + '@rollup/rollup-android-arm64@4.32.1': + resolution: {integrity: sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.31.0': - resolution: {integrity: sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==} + '@rollup/rollup-darwin-arm64@4.32.1': + resolution: {integrity: sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.31.0': - resolution: {integrity: sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==} + '@rollup/rollup-darwin-x64@4.32.1': + resolution: {integrity: sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.31.0': - resolution: {integrity: sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==} + '@rollup/rollup-freebsd-arm64@4.32.1': + resolution: {integrity: sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.31.0': - resolution: {integrity: sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==} + '@rollup/rollup-freebsd-x64@4.32.1': + resolution: {integrity: sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': - resolution: {integrity: sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==} + '@rollup/rollup-linux-arm-gnueabihf@4.32.1': + resolution: {integrity: sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.31.0': - resolution: {integrity: sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==} + '@rollup/rollup-linux-arm-musleabihf@4.32.1': + resolution: {integrity: sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.31.0': - resolution: {integrity: sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==} + '@rollup/rollup-linux-arm64-gnu@4.32.1': + resolution: {integrity: sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.31.0': - resolution: {integrity: sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==} + '@rollup/rollup-linux-arm64-musl@4.32.1': + resolution: {integrity: sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': - resolution: {integrity: sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.32.1': + resolution: {integrity: sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': - resolution: {integrity: sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': + resolution: {integrity: sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.31.0': - resolution: {integrity: sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==} + '@rollup/rollup-linux-riscv64-gnu@4.32.1': + resolution: {integrity: sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.31.0': - resolution: {integrity: sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==} + '@rollup/rollup-linux-s390x-gnu@4.32.1': + resolution: {integrity: sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.31.0': - resolution: {integrity: sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==} + '@rollup/rollup-linux-x64-gnu@4.32.1': + resolution: {integrity: sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.31.0': - resolution: {integrity: sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==} + '@rollup/rollup-linux-x64-musl@4.32.1': + resolution: {integrity: sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.31.0': - resolution: {integrity: sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==} + '@rollup/rollup-win32-arm64-msvc@4.32.1': + resolution: {integrity: sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.31.0': - resolution: {integrity: sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==} + '@rollup/rollup-win32-ia32-msvc@4.32.1': + resolution: {integrity: sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.31.0': - resolution: {integrity: sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==} + '@rollup/rollup-win32-x64-msvc@4.32.1': + resolution: {integrity: sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q==} cpu: [x64] os: [win32] @@ -735,8 +735,8 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@22.10.10': - resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==} + '@types/node@22.12.0': + resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==} '@types/validator@13.12.2': resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} @@ -757,51 +757,51 @@ packages: '@types/json-schema': optional: true - '@typescript-eslint/eslint-plugin@8.21.0': - resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} + '@typescript-eslint/eslint-plugin@8.22.0': + resolution: {integrity: sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.21.0': - resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} + '@typescript-eslint/parser@8.22.0': + resolution: {integrity: sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.21.0': - resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} + '@typescript-eslint/scope-manager@8.22.0': + resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.21.0': - resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} + '@typescript-eslint/type-utils@8.22.0': + resolution: {integrity: sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.21.0': - resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} + '@typescript-eslint/types@8.22.0': + resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.21.0': - resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} + '@typescript-eslint/typescript-estree@8.22.0': + resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.21.0': - resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} + '@typescript-eslint/utils@8.22.0': + resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.21.0': - resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} + '@typescript-eslint/visitor-keys@8.22.0': + resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vinejs/compiler@3.0.0': @@ -863,8 +863,8 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - arktype@2.0.1: - resolution: {integrity: sha512-IfczIefYOd2Omac9J1MH8YKmhGe4pQor1rg3w9mc6m8DA9fSnBRI7GF0XP8GQiHH5Khlj6MS6J1ZPbt68HDbrQ==} + arktype@2.0.4: + resolution: {integrity: sha512-S68rWVDnJauwH7/QCm8zCUM3aTe9Xk6oRihdcc3FSUAtxCo/q1Fwq46JhcwB5Ufv1YStwdQRz+00Y/URlvbhAQ==} autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} @@ -920,8 +920,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001695: - resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} + caniuse-lite@1.0.30001696: + resolution: {integrity: sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1003,8 +1003,8 @@ packages: effect@3.12.7: resolution: {integrity: sha512-BsDTgSjLbL12g0+vGn5xkOgOVhRSaR3VeHmjcUb0gLvpXACJ9OgmlfeH+/FaAZwM5+omIF3I/j1gC5KJrbK1Aw==} - electron-to-chromium@1.5.87: - resolution: {integrity: sha512-mPFwmEWmRivw2F8x3w3l2m6htAUN97Gy0kwpO++2m9iT1Gt8RCFVUfv9U/sIbHJ6rY4P6/ooqFL/eL7ock+pPg==} + electron-to-chromium@1.5.88: + resolution: {integrity: sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1074,8 +1074,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.18.0: - resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} + eslint@9.19.0: + resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1641,8 +1641,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.31.0: - resolution: {integrity: sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==} + rollup@4.32.1: + resolution: {integrity: sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1663,8 +1663,8 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.7.0: + resolution: {integrity: sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==} engines: {node: '>=10'} hasBin: true @@ -1775,8 +1775,8 @@ packages: peerDependencies: svelte: ^5.0.0 - svelte@5.19.2: - resolution: {integrity: sha512-Ww1uLgdX5MdQrAO5zfU1dWUh6zqiPR6uIbwqm8a+4eQ+tNEYHRPgypvKKfHh9lmTkmJ30PWZ2O5qX8aS+PblRQ==} + svelte@5.19.5: + resolution: {integrity: sha512-vVAntseegJX80sgbY8CxQISSE/VoDSfP7VZHoQaf2+z+2XOPOz/N+k455HJmO9O0g8oxTtuE0TBhC/5LAP4lPg==} engines: {node: '>=18'} sveltekit-superforms@2.23.1: @@ -1855,8 +1855,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - typescript-eslint@8.21.0: - resolution: {integrity: sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==} + typescript-eslint@8.22.0: + resolution: {integrity: sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1989,15 +1989,15 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@ark/schema@0.36.0': + '@ark/schema@0.39.0': dependencies: - '@ark/util': 0.36.0 + '@ark/util': 0.39.0 optional: true - '@ark/util@0.36.0': + '@ark/util@0.39.0': optional: true - '@babel/runtime@7.26.0': + '@babel/runtime@7.26.7': dependencies: regenerator-runtime: 0.14.1 optional: true @@ -2146,9 +2146,9 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.19.0(jiti@1.21.7))': dependencies: - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -2179,7 +2179,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.18.0': {} + '@eslint/js@9.19.0': {} '@eslint/object-schema@2.1.5': {} @@ -2288,61 +2288,61 @@ snapshots: '@poppinss/macroable@1.0.4': optional: true - '@rollup/rollup-android-arm-eabi@4.31.0': + '@rollup/rollup-android-arm-eabi@4.32.1': optional: true - '@rollup/rollup-android-arm64@4.31.0': + '@rollup/rollup-android-arm64@4.32.1': optional: true - '@rollup/rollup-darwin-arm64@4.31.0': + '@rollup/rollup-darwin-arm64@4.32.1': optional: true - '@rollup/rollup-darwin-x64@4.31.0': + '@rollup/rollup-darwin-x64@4.32.1': optional: true - '@rollup/rollup-freebsd-arm64@4.31.0': + '@rollup/rollup-freebsd-arm64@4.32.1': optional: true - '@rollup/rollup-freebsd-x64@4.31.0': + '@rollup/rollup-freebsd-x64@4.32.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': + '@rollup/rollup-linux-arm-gnueabihf@4.32.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.31.0': + '@rollup/rollup-linux-arm-musleabihf@4.32.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.31.0': + '@rollup/rollup-linux-arm64-gnu@4.32.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.31.0': + '@rollup/rollup-linux-arm64-musl@4.32.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': + '@rollup/rollup-linux-loongarch64-gnu@4.32.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.31.0': + '@rollup/rollup-linux-riscv64-gnu@4.32.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.31.0': + '@rollup/rollup-linux-s390x-gnu@4.32.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.31.0': + '@rollup/rollup-linux-x64-gnu@4.32.1': optional: true - '@rollup/rollup-linux-x64-musl@4.31.0': + '@rollup/rollup-linux-x64-musl@4.32.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.31.0': + '@rollup/rollup-win32-arm64-msvc@4.32.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.31.0': + '@rollup/rollup-win32-ia32-msvc@4.32.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.31.0': + '@rollup/rollup-win32-x64-msvc@4.32.1': optional: true '@sideway/address@4.1.5': @@ -2359,18 +2359,18 @@ snapshots: '@sinclair/typebox@0.34.14': optional: true - '@sveltejs/adapter-auto@3.3.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))': + '@sveltejs/adapter-auto@3.3.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))': dependencies: - '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) import-meta-resolve: 4.1.0 - '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))': + '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))': dependencies: - '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) - '@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10))': + '@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -2382,28 +2382,28 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.0 - svelte: 5.19.2 - vite: 5.4.14(@types/node@22.10.10) + svelte: 5.19.5 + vite: 5.4.14(@types/node@22.12.0) - '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10))': + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) debug: 4.4.0 - svelte: 5.19.2 - vite: 5.4.14(@types/node@22.10.10) + svelte: 5.19.5 + vite: 5.4.14(@types/node@22.12.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10))': + '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 - svelte: 5.19.2 - vite: 5.4.14(@types/node@22.10.10) - vitefu: 1.0.5(vite@5.4.14(@types/node@22.10.10)) + svelte: 5.19.5 + vite: 5.4.14(@types/node@22.12.0) + vitefu: 1.0.5(vite@5.4.14(@types/node@22.12.0)) transitivePeerDependencies: - supports-color @@ -2428,7 +2428,7 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/node@22.10.10': + '@types/node@22.12.0': dependencies: undici-types: 6.20.0 @@ -2449,15 +2449,15 @@ snapshots: '@types/json-schema': 7.0.15 optional: true - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 - eslint: 9.18.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 + eslint: 9.19.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -2466,64 +2466,64 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.21.0': + '@typescript-eslint/scope-manager@8.22.0': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 - '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.21.0': {} + '@typescript-eslint/types@8.22.0': {} - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.0 ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - eslint: 9.18.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.21.0': + '@typescript-eslint/visitor-keys@8.22.0': dependencies: - '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/types': 8.22.0 eslint-visitor-keys: 4.2.0 '@vinejs/compiler@3.0.0': @@ -2581,16 +2581,16 @@ snapshots: aria-query@5.3.2: {} - arktype@2.0.1: + arktype@2.0.4: dependencies: - '@ark/schema': 0.36.0 - '@ark/util': 0.36.0 + '@ark/schema': 0.39.0 + '@ark/util': 0.39.0 optional: true autoprefixer@10.4.20(postcss@8.5.1): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001696 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -2603,15 +2603,15 @@ snapshots: binary-extensions@2.3.0: {} - bits-ui@1.0.0-next.79(svelte@5.19.2): + bits-ui@1.0.0-next.79(svelte@5.19.5): dependencies: '@floating-ui/core': 1.6.9 '@floating-ui/dom': 1.6.13 '@internationalized/date': 3.7.0 esm-env: 1.2.2 - runed: 0.23.1(svelte@5.19.2) - svelte: 5.19.2 - svelte-toolbelt: 0.7.0(svelte@5.19.2) + runed: 0.23.1(svelte@5.19.5) + svelte: 5.19.5 + svelte-toolbelt: 0.7.0(svelte@5.19.5) brace-expansion@1.1.11: dependencies: @@ -2628,8 +2628,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001695 - electron-to-chromium: 1.5.87 + caniuse-lite: 1.0.30001696 + electron-to-chromium: 1.5.88 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -2643,7 +2643,7 @@ snapshots: camelcase@8.0.0: optional: true - caniuse-lite@1.0.30001695: {} + caniuse-lite@1.0.30001696: {} chalk@4.1.2: dependencies: @@ -2719,7 +2719,7 @@ snapshots: fast-check: 3.23.2 optional: true - electron-to-chromium@1.5.87: {} + electron-to-chromium@1.5.88: {} emoji-regex@8.0.0: {} @@ -2791,31 +2791,31 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.18.0(jiti@1.21.7)): + eslint-compat-utils@0.5.1(eslint@9.19.0(jiti@1.21.7)): dependencies: - eslint: 9.18.0(jiti@1.21.7) - semver: 7.6.3 + eslint: 9.19.0(jiti@1.21.7) + semver: 7.7.0 - eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@1.21.7)): + eslint-config-prettier@9.1.0(eslint@9.19.0(jiti@1.21.7)): dependencies: - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) - eslint-plugin-svelte@2.46.1(eslint@9.18.0(jiti@1.21.7))(svelte@5.19.2): + eslint-plugin-svelte@2.46.1(eslint@9.19.0(jiti@1.21.7))(svelte@5.19.5): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) '@jridgewell/sourcemap-codec': 1.5.0 - eslint: 9.18.0(jiti@1.21.7) - eslint-compat-utils: 0.5.1(eslint@9.18.0(jiti@1.21.7)) + eslint: 9.19.0(jiti@1.21.7) + eslint-compat-utils: 0.5.1(eslint@9.19.0(jiti@1.21.7)) esutils: 2.0.3 known-css-properties: 0.35.0 postcss: 8.5.1 postcss-load-config: 3.1.4(postcss@8.5.1) postcss-safe-parser: 6.0.0(postcss@8.5.1) postcss-selector-parser: 6.1.2 - semver: 7.6.3 - svelte-eslint-parser: 0.43.0(svelte@5.19.2) + semver: 7.7.0 + svelte-eslint-parser: 0.43.0(svelte@5.19.5) optionalDependencies: - svelte: 5.19.2 + svelte: 5.19.5 transitivePeerDependencies: - ts-node @@ -2833,14 +2833,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.18.0(jiti@1.21.7): + eslint@9.19.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.1 '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.18.0 + '@eslint/js': 9.19.0 '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -2954,11 +2954,11 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - formsnap@2.0.0(svelte@5.19.2)(sveltekit-superforms@2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(@types/json-schema@7.0.15)(svelte@5.19.2)(typescript@5.7.3)): + formsnap@2.0.0(svelte@5.19.5)(sveltekit-superforms@2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(@types/json-schema@7.0.15)(svelte@5.19.5)(typescript@5.7.3)): dependencies: - svelte: 5.19.2 - svelte-toolbelt: 0.5.0(svelte@5.19.2) - sveltekit-superforms: 2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(@types/json-schema@7.0.15)(svelte@5.19.2)(typescript@5.7.3) + svelte: 5.19.5 + svelte-toolbelt: 0.5.0(svelte@5.19.5) + sveltekit-superforms: 2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(@types/json-schema@7.0.15)(svelte@5.19.5)(typescript@5.7.3) fraction.js@4.3.7: {} @@ -3060,7 +3060,7 @@ snapshots: json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.26.7 ts-algebra: 2.0.0 optional: true @@ -3100,9 +3100,9 @@ snapshots: lru-cache@10.4.3: {} - lucide-svelte@0.424.0(svelte@5.19.2): + lucide-svelte@0.424.0(svelte@5.19.5): dependencies: - svelte: 5.19.2 + svelte: 5.19.5 magic-string@0.30.17: dependencies: @@ -3127,9 +3127,9 @@ snapshots: minipass@7.1.2: {} - mode-watcher@0.4.1(svelte@5.19.2): + mode-watcher@0.4.1(svelte@5.19.5): dependencies: - svelte: 5.19.2 + svelte: 5.19.5 mri@1.2.0: {} @@ -3256,16 +3256,16 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.2): + prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.5): dependencies: prettier: 3.4.2 - svelte: 5.19.2 + svelte: 5.19.5 - prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.2))(prettier@3.4.2): + prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.5))(prettier@3.4.2): dependencies: prettier: 3.4.2 optionalDependencies: - prettier-plugin-svelte: 3.3.3(prettier@3.4.2)(svelte@5.19.2) + prettier-plugin-svelte: 3.3.3(prettier@3.4.2)(svelte@5.19.5) prettier@3.4.2: {} @@ -3304,50 +3304,50 @@ snapshots: reusify@1.0.4: {} - rollup@4.31.0: + rollup@4.32.1: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.31.0 - '@rollup/rollup-android-arm64': 4.31.0 - '@rollup/rollup-darwin-arm64': 4.31.0 - '@rollup/rollup-darwin-x64': 4.31.0 - '@rollup/rollup-freebsd-arm64': 4.31.0 - '@rollup/rollup-freebsd-x64': 4.31.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.31.0 - '@rollup/rollup-linux-arm-musleabihf': 4.31.0 - '@rollup/rollup-linux-arm64-gnu': 4.31.0 - '@rollup/rollup-linux-arm64-musl': 4.31.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.31.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.31.0 - '@rollup/rollup-linux-riscv64-gnu': 4.31.0 - '@rollup/rollup-linux-s390x-gnu': 4.31.0 - '@rollup/rollup-linux-x64-gnu': 4.31.0 - '@rollup/rollup-linux-x64-musl': 4.31.0 - '@rollup/rollup-win32-arm64-msvc': 4.31.0 - '@rollup/rollup-win32-ia32-msvc': 4.31.0 - '@rollup/rollup-win32-x64-msvc': 4.31.0 + '@rollup/rollup-android-arm-eabi': 4.32.1 + '@rollup/rollup-android-arm64': 4.32.1 + '@rollup/rollup-darwin-arm64': 4.32.1 + '@rollup/rollup-darwin-x64': 4.32.1 + '@rollup/rollup-freebsd-arm64': 4.32.1 + '@rollup/rollup-freebsd-x64': 4.32.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.32.1 + '@rollup/rollup-linux-arm-musleabihf': 4.32.1 + '@rollup/rollup-linux-arm64-gnu': 4.32.1 + '@rollup/rollup-linux-arm64-musl': 4.32.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.32.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.32.1 + '@rollup/rollup-linux-riscv64-gnu': 4.32.1 + '@rollup/rollup-linux-s390x-gnu': 4.32.1 + '@rollup/rollup-linux-x64-gnu': 4.32.1 + '@rollup/rollup-linux-x64-musl': 4.32.1 + '@rollup/rollup-win32-arm64-msvc': 4.32.1 + '@rollup/rollup-win32-ia32-msvc': 4.32.1 + '@rollup/rollup-win32-x64-msvc': 4.32.1 fsevents: 2.3.3 run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - runed@0.20.0(svelte@5.19.2): + runed@0.20.0(svelte@5.19.5): dependencies: esm-env: 1.2.2 - svelte: 5.19.2 + svelte: 5.19.5 - runed@0.23.1(svelte@5.19.2): + runed@0.23.1(svelte@5.19.5): dependencies: esm-env: 1.2.2 - svelte: 5.19.2 + svelte: 5.19.5 sade@1.8.1: dependencies: mri: 1.2.0 - semver@7.6.3: {} + semver@7.7.0: {} set-cookie-parser@2.7.1: {} @@ -3421,19 +3421,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.1.4(svelte@5.19.2)(typescript@5.7.3): + svelte-check@4.1.4(svelte@5.19.5)(typescript@5.7.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 fdir: 6.4.3 picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.19.2 + svelte: 5.19.5 typescript: 5.7.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.43.0(svelte@5.19.2): + svelte-eslint-parser@0.43.0(svelte@5.19.5): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -3441,30 +3441,30 @@ snapshots: postcss: 8.5.1 postcss-scss: 4.0.9(postcss@8.5.1) optionalDependencies: - svelte: 5.19.2 + svelte: 5.19.5 svelte-highlight@7.8.2: dependencies: highlight.js: 11.11.1 - svelte-sonner@0.3.28(svelte@5.19.2): + svelte-sonner@0.3.28(svelte@5.19.5): dependencies: - svelte: 5.19.2 + svelte: 5.19.5 - svelte-toolbelt@0.5.0(svelte@5.19.2): + svelte-toolbelt@0.5.0(svelte@5.19.5): dependencies: clsx: 2.1.1 style-to-object: 1.0.8 - svelte: 5.19.2 + svelte: 5.19.5 - svelte-toolbelt@0.7.0(svelte@5.19.2): + svelte-toolbelt@0.7.0(svelte@5.19.5): dependencies: clsx: 2.1.1 - runed: 0.20.0(svelte@5.19.2) + runed: 0.20.0(svelte@5.19.5) style-to-object: 1.0.8 - svelte: 5.19.2 + svelte: 5.19.5 - svelte@5.19.2: + svelte@5.19.5: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -3481,12 +3481,12 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 - sveltekit-superforms@2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(@types/json-schema@7.0.15)(svelte@5.19.2)(typescript@5.7.3): + sveltekit-superforms@2.23.1(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(@types/json-schema@7.0.15)(svelte@5.19.5)(typescript@5.7.3): dependencies: - '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)))(svelte@5.19.2)(vite@5.4.14(@types/node@22.10.10)) + '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)))(svelte@5.19.5)(vite@5.4.14(@types/node@22.12.0)) devalue: 5.1.1 memoize-weak: 1.0.2 - svelte: 5.19.2 + svelte: 5.19.5 ts-deepmerge: 7.0.2 optionalDependencies: '@exodus/schemasafe': 1.3.0 @@ -3494,7 +3494,7 @@ snapshots: '@sinclair/typebox': 0.34.14 '@typeschema/class-validator': 0.3.0(@types/json-schema@7.0.15)(class-validator@0.14.1) '@vinejs/vine': 3.0.0 - arktype: 2.0.1 + arktype: 2.0.4 class-validator: 0.14.1 effect: 3.12.7 joi: 17.13.3 @@ -3589,12 +3589,12 @@ snapshots: type-fest@2.19.0: optional: true - typescript-eslint@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3): + typescript-eslint@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.18.0(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -3626,18 +3626,18 @@ snapshots: validator@13.12.0: optional: true - vite@5.4.14(@types/node@22.10.10): + vite@5.4.14(@types/node@22.12.0): dependencies: esbuild: 0.21.5 postcss: 8.5.1 - rollup: 4.31.0 + rollup: 4.32.1 optionalDependencies: - '@types/node': 22.10.10 + '@types/node': 22.12.0 fsevents: 2.3.3 - vitefu@1.0.5(vite@5.4.14(@types/node@22.10.10)): + vitefu@1.0.5(vite@5.4.14(@types/node@22.12.0)): optionalDependencies: - vite: 5.4.14(@types/node@22.10.10) + vite: 5.4.14(@types/node@22.12.0) which@2.0.2: dependencies: diff --git a/web/src/app.css b/web/src/app.css index c87c27b..cd4053f 100644 --- a/web/src/app.css +++ b/web/src/app.css @@ -3,73 +3,73 @@ @tailwind utilities; @layer base { - :root { - --background: 0 0% 100%; - --foreground: 222.2 84% 4.9%; - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - --popover: 0 0% 100%; - --popover-foreground: 222.2 84% 4.9%; - --card: 0 0% 100%; - --card-foreground: 222.2 84% 4.9%; - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - --primary: 222.2 47.4% 11.2%; - --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; - --destructive: 0 72.2% 50.6%; - --destructive-foreground: 210 40% 98%; - --ring: 222.2 84% 4.9%; - --radius: 0.5rem; - --sidebar-background: 0 0% 98%; - --sidebar-foreground: 240 5.3% 26.1%; - --sidebar-primary: 240 5.9% 10%; - --sidebar-primary-foreground: 0 0% 98%; - --sidebar-accent: 240 4.8% 95.9%; - --sidebar-accent-foreground: 240 5.9% 10%; - --sidebar-border: 220 13% 91%; - --sidebar-ring: 217.2 91.2% 59.8%; - } + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 210 40% 98%; + --ring: 222.2 84% 4.9%; + --radius: 0.5rem; + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + } - .dark { - --background: 222.2 84% 4.9%; - --foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; - --muted-foreground: 215 20.2% 65.1%; - --popover: 222.2 84% 4.9%; - --popover-foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; - --card-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; - --input: 217.2 32.6% 17.5%; - --primary: 210 40% 98%; - --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; - --secondary-foreground: 210 40% 98%; - --accent: 217.2 32.6% 17.5%; - --accent-foreground: 210 40% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 40% 98%; - --ring: 212.7 26.8% 83.9%; - --sidebar-background: 240 5.9% 10%; - --sidebar-foreground: 240 4.8% 95.9%; - --sidebar-primary: 224.3 76.3% 48%; - --sidebar-primary-foreground: 0 0% 100%; - --sidebar-accent: 240 3.7% 15.9%; - --sidebar-accent-foreground: 240 4.8% 95.9%; - --sidebar-border: 240 3.7% 15.9%; - --sidebar-ring: 217.2 91.2% 59.8%; - } + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + --ring: 212.7 26.8% 83.9%; + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + } } @layer base { - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - } -} \ No newline at end of file + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/web/src/lib/api.ts b/web/src/lib/api.ts index 34d4bb0..89dd1a2 100644 --- a/web/src/lib/api.ts +++ b/web/src/lib/api.ts @@ -131,7 +131,6 @@ export const api = { } await api.load(); - return data; }, async verify(fetch: typeof window.fetch = window.fetch) { @@ -158,11 +157,17 @@ export const api = { await send(`/reset/${username}`, { method: 'POST' }); }, - async resetPassword(username: string, token: string, password: string) { - await send('/reset', { + async verifyOTP(username: string, token: string) { + const data = await send('/verify/otp', { method: 'POST', - body: { username, token, password } + body: { username, token } }); + + if (data.token) { + localStorage.setItem(TOKEN_SK, data.token); + goto('/'); + } + await api.load(); }, async load() { @@ -201,10 +206,10 @@ export const api = { const agents = await api.listAgents(); stats.set({ - profiles: get(profiles)?.length, - agents: agents?.length, - users: get(users)?.length, - dnsProviders: get(dnsProviders)?.length, + profiles: get(profiles)?.length ?? 0, + agents: agents?.length ?? 0, + users: get(users)?.length ?? 0, + dnsProviders: get(dnsProviders)?.length ?? 0, activeDNS: get(dnsProviders)?.find((item) => item.isActive)?.name ?? 'None' }); }, diff --git a/web/src/lib/components/forms/BaseForm.svelte b/web/src/lib/components/forms/BaseForm.svelte deleted file mode 100644 index 4b6f190..0000000 --- a/web/src/lib/components/forms/BaseForm.svelte +++ /dev/null @@ -1,326 +0,0 @@ - - -
- {#if schema instanceof z.ZodRecord} - - - {#snippet children({ props })} -
- Plugin -