diff --git a/apps/publisher-dashboard/eslint.config.js b/apps/publisher-dashboard/eslint.config.js index d4e8a6d..f3d6a2e 100644 --- a/apps/publisher-dashboard/eslint.config.js +++ b/apps/publisher-dashboard/eslint.config.js @@ -1,10 +1,24 @@ import { configs } from "@macalinao/eslint-config"; +import tsParser from "@typescript-eslint/parser"; +import svelte from "eslint-plugin-svelte"; +import svelteParser from "svelte-eslint-parser"; export default [ { ignores: [".svelte-kit/**", "build/**"], }, ...configs.fast, + ...svelte.configs["flat/recommended"], + { + files: ["**/*.svelte", "**/*.svelte.ts"], + languageOptions: { + parser: svelteParser, + parserOptions: { + parser: tsParser, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, { languageOptions: { parserOptions: { diff --git a/apps/publisher-dashboard/package.json b/apps/publisher-dashboard/package.json index 84796ab..ec796e4 100644 --- a/apps/publisher-dashboard/package.json +++ b/apps/publisher-dashboard/package.json @@ -39,9 +39,12 @@ "@tailwindcss/vite": "^4.1.4", "@types/ua-parser-js": "^0.7.39", "@types/zxcvbn": "^4.4.5", + "@typescript-eslint/parser": "^8.52.0", "eslint": "catalog:", + "eslint-plugin-svelte": "^3.14.0", "svelte": "^5.28.2", "svelte-check": "^4.2.1", + "svelte-eslint-parser": "^1.4.1", "tailwindcss": "^4.1.4", "tw-animate-css": "^1.4.0", "typescript": "catalog:", diff --git a/apps/publisher-dashboard/src/lib/components/account/account-nav.svelte b/apps/publisher-dashboard/src/lib/components/account/account-nav.svelte index cbef801..bf64247 100644 --- a/apps/publisher-dashboard/src/lib/components/account/account-nav.svelte +++ b/apps/publisher-dashboard/src/lib/components/account/account-nav.svelte @@ -5,6 +5,7 @@ import MonitorIcon from "@lucide/svelte/icons/monitor"; import ShieldCheckIcon from "@lucide/svelte/icons/shield-check"; import UserIcon from "@lucide/svelte/icons/user"; import { createQuery } from "@tanstack/svelte-query"; +import { resolve } from "$app/paths"; import { page } from "$app/stores"; import { api } from "$lib/api/client"; import { cn } from "$lib/utils.js"; @@ -56,10 +57,10 @@ function isActive(href: string, pathname: string): boolean { className )} > - {#each navItems as item} + {#each navItems as item (item.href)} {@const active = isActive(item.href, $page.url.pathname)} ({ // Redirect to login if not authenticated on non-auth pages $effect(() => { if (!isAuthPage && userQuery.error) { - goto(`/auth/login?redirect=${encodeURIComponent(page.url.pathname)}`); + goto( + resolve(`/auth/login?redirect=${encodeURIComponent(page.url.pathname)}`), + ); } }); diff --git a/apps/publisher-dashboard/src/lib/components/auth/password-strength.svelte b/apps/publisher-dashboard/src/lib/components/auth/password-strength.svelte index c4b3510..0346c6a 100644 --- a/apps/publisher-dashboard/src/lib/components/auth/password-strength.svelte +++ b/apps/publisher-dashboard/src/lib/components/auth/password-strength.svelte @@ -32,7 +32,7 @@ const config = $derived(strengthConfig[score]);
- {#each Array(4) as _, i} + {#each Array(4) as _, i (i)}
{result.feedback.warning}

{/if} - {#each result.feedback.suggestions as suggestion} + {#each result.feedback.suggestions as suggestion, i (i)}

{suggestion}

{/each}
diff --git a/apps/publisher-dashboard/src/lib/components/dashboard/frequent-filters.svelte b/apps/publisher-dashboard/src/lib/components/dashboard/frequent-filters.svelte index 51e780c..33600ed 100644 --- a/apps/publisher-dashboard/src/lib/components/dashboard/frequent-filters.svelte +++ b/apps/publisher-dashboard/src/lib/components/dashboard/frequent-filters.svelte @@ -1,4 +1,5 @@ @@ -60,7 +61,7 @@ function handleTabChange(tabId: string) {
- {#each tabs as tab} + {#each tabs as tab (tab.id)} {@const isActive = activeTab === tab.id} {:else} @@ -147,8 +148,8 @@ async function handleSubmit(e: Event) { diff --git a/apps/publisher-dashboard/src/routes/auth/setup/user/+page.svelte b/apps/publisher-dashboard/src/routes/auth/setup/user/+page.svelte index ee55cc8..93c5f34 100644 --- a/apps/publisher-dashboard/src/routes/auth/setup/user/+page.svelte +++ b/apps/publisher-dashboard/src/routes/auth/setup/user/+page.svelte @@ -3,6 +3,7 @@ import { AlertCircle, Loader2 } from "@lucide/svelte"; import { createQuery } from "@tanstack/svelte-query"; import { toast } from "svelte-sonner"; import { goto } from "$app/navigation"; +import { resolve } from "$app/paths"; import { api } from "$lib/api/client"; import { ErrorAlert } from "$lib/components/auth"; import { Alert, AlertDescription } from "$lib/components/ui/alert"; @@ -22,7 +23,7 @@ const userQuery = createQuery(() => ({ // Redirect if user doesn't need setup $effect(() => { if (userQuery.data && !userQuery.data.needsSetup) { - goto("/"); + goto(resolve("/")); } }); @@ -68,7 +69,7 @@ async function handleSubmit(e: Event) { }); toast.success("Profile setup complete!"); - goto("/"); + goto(resolve("/")); } catch (e) { error = e instanceof Error ? e.message : "Failed to save profile"; } finally { diff --git a/apps/publisher-dashboard/src/routes/auth/signup/+page.svelte b/apps/publisher-dashboard/src/routes/auth/signup/+page.svelte index 69397d3..47d9a49 100644 --- a/apps/publisher-dashboard/src/routes/auth/signup/+page.svelte +++ b/apps/publisher-dashboard/src/routes/auth/signup/+page.svelte @@ -5,6 +5,7 @@ import { } from "@simplewebauthn/browser"; import zxcvbn from "zxcvbn"; import { goto } from "$app/navigation"; +import { resolve } from "$app/paths"; import { api } from "$lib/api/client"; import { ErrorAlert, @@ -75,7 +76,7 @@ async function handlePasskeySignup() { }); // Redirect to user setup - await goto("/auth/setup/user"); + await goto(resolve("/auth/setup/user")); } catch (err) { if (err instanceof Error) { // Handle WebAuthn cancellation @@ -103,7 +104,7 @@ async function handlePasswordSignup() { }); // Redirect to user setup - await goto("/auth/setup/user"); + await goto(resolve("/auth/setup/user")); } catch (err) { if (err instanceof Error) { error = err.message; @@ -249,8 +250,8 @@ function switchToPasskey() { diff --git a/apps/publisher-dashboard/src/routes/auth/trust-device/+page.svelte b/apps/publisher-dashboard/src/routes/auth/trust-device/+page.svelte index ad2b6ab..d64541b 100644 --- a/apps/publisher-dashboard/src/routes/auth/trust-device/+page.svelte +++ b/apps/publisher-dashboard/src/routes/auth/trust-device/+page.svelte @@ -4,6 +4,7 @@ import { createQuery } from "@tanstack/svelte-query"; import { toast } from "svelte-sonner"; import { UAParser } from "ua-parser-js"; import { goto } from "$app/navigation"; +import { resolve } from "$app/paths"; import { api } from "$lib/api/client"; import { ErrorAlert } from "$lib/components/auth"; import { Button } from "$lib/components/ui/button"; @@ -52,7 +53,7 @@ async function handleTrust() { try { await api.me.devices.trust({ name: deviceName.trim() }); toast.success("Device trusted successfully!"); - goto("/"); + goto(resolve("/")); } catch (e) { error = e instanceof Error ? e.message : "Failed to trust device"; } finally { @@ -61,7 +62,7 @@ async function handleTrust() { } async function handleSkip() { - goto("/performance"); + goto(resolve("/performance")); } // Get device icon based on type diff --git a/apps/publisher-dashboard/src/routes/auth/verify/+page.svelte b/apps/publisher-dashboard/src/routes/auth/verify/+page.svelte index c2c1c51..98128ac 100644 --- a/apps/publisher-dashboard/src/routes/auth/verify/+page.svelte +++ b/apps/publisher-dashboard/src/routes/auth/verify/+page.svelte @@ -2,6 +2,7 @@ import { CheckCircle2, Loader2, Mail, XCircle } from "@lucide/svelte"; import { toast } from "svelte-sonner"; import { goto } from "$app/navigation"; +import { resolve } from "$app/paths"; import { page } from "$app/state"; import { api } from "$lib/api/client"; import { ErrorAlert } from "$lib/components/auth"; @@ -31,7 +32,7 @@ async function verifyEmail(): Promise { try { await api.auth.verifyEmail({ token }); toast.success("Email verified successfully!"); - goto("/"); + goto(resolve("/")); } catch (e) { error = e instanceof Error ? e.message : "Verification failed"; } finally { @@ -132,7 +133,7 @@ async function resendVerification(): Promise {
Back to login diff --git a/apps/publisher-dashboard/src/routes/dashboard/+page.svelte b/apps/publisher-dashboard/src/routes/dashboard/+page.svelte index 91acb2b..112efe7 100644 --- a/apps/publisher-dashboard/src/routes/dashboard/+page.svelte +++ b/apps/publisher-dashboard/src/routes/dashboard/+page.svelte @@ -8,6 +8,7 @@ import { } from "@lucide/svelte"; import { createQuery } from "@tanstack/svelte-query"; import { goto } from "$app/navigation"; +import { resolve } from "$app/paths"; import { api } from "$lib/api/client"; import { DashboardLayout } from "$lib/components/layout"; import { Badge } from "$lib/components/ui/badge"; @@ -40,7 +41,9 @@ const invitesQuery = createQuery(() => ({ $effect(() => { if (orgsQuery.error) { goto( - `/auth/login?redirect=${encodeURIComponent(window.location.pathname)}`, + resolve( + `/auth/login?redirect=${encodeURIComponent(window.location.pathname)}`, + ), ); } }); @@ -98,7 +101,7 @@ function formatRole(role: string): string { {#if canManageOrg} - @@ -126,7 +127,7 @@ const orgName = $derived(orgQuery.data?.displayName ?? slug);
- + Members @@ -163,7 +164,7 @@ const orgName = $derived(orgQuery.data?.displayName ?? slug);
Team Members View all diff --git a/apps/publisher-dashboard/src/routes/dashboard/[slug]/members/+page.svelte b/apps/publisher-dashboard/src/routes/dashboard/[slug]/members/+page.svelte index b20adca..9f37b3f 100644 --- a/apps/publisher-dashboard/src/routes/dashboard/[slug]/members/+page.svelte +++ b/apps/publisher-dashboard/src/routes/dashboard/[slug]/members/+page.svelte @@ -300,7 +300,7 @@ const availableInviteRoles = $derived.by(() => { {inviteRole.charAt(0).toUpperCase() + inviteRole.slice(1)} - {#each availableInviteRoles as role} + {#each availableInviteRoles as role (role)} {/each} diff --git a/apps/publisher-dashboard/src/routes/dashboard/[slug]/performance/+page.svelte b/apps/publisher-dashboard/src/routes/dashboard/[slug]/performance/+page.svelte index 19da408..c4496eb 100644 --- a/apps/publisher-dashboard/src/routes/dashboard/[slug]/performance/+page.svelte +++ b/apps/publisher-dashboard/src/routes/dashboard/[slug]/performance/+page.svelte @@ -47,7 +47,7 @@ const metrics = [
- {#each metrics as metric} + {#each metrics as metric (metric.label)} { {inviteRole.charAt(0).toUpperCase() + inviteRole.slice(1)} - {#each availableInviteRoles as role} + {#each availableInviteRoles as role (role)} {/each} diff --git a/apps/publisher-dashboard/src/routes/invite/accept/+page.svelte b/apps/publisher-dashboard/src/routes/invite/accept/+page.svelte index bd146d9..50ac128 100644 --- a/apps/publisher-dashboard/src/routes/invite/accept/+page.svelte +++ b/apps/publisher-dashboard/src/routes/invite/accept/+page.svelte @@ -2,6 +2,7 @@ import { CheckCircle2, Loader2, UserPlus, XCircle } from "@lucide/svelte"; import { toast } from "svelte-sonner"; import { goto } from "$app/navigation"; +import { resolve } from "$app/paths"; import { page } from "$app/state"; import { api } from "$lib/api/client"; import { Button } from "$lib/components/ui/button"; @@ -45,7 +46,7 @@ async function acceptInvite(): Promise { if (!isAuthenticated) { // Redirect to login with return URL const returnUrl = `/invite/accept?token=${encodeURIComponent(token)}`; - goto(`/auth/login?redirect=${encodeURIComponent(returnUrl)}`); + goto(resolve(`/auth/login?redirect=${encodeURIComponent(returnUrl)}`)); return; } @@ -55,7 +56,7 @@ async function acceptInvite(): Promise { toast.success("You've joined the organization!"); // Redirect to dashboard after a short delay setTimeout(() => { - goto("/dashboard"); + goto(resolve("/dashboard")); }, 1500); } catch (e) { if (e instanceof Error) { @@ -168,13 +169,13 @@ $effect(() => { {/if} -
Sign in with a different account diff --git a/apps/publisher-dashboard/src/routes/login/+page.svelte b/apps/publisher-dashboard/src/routes/login/+page.svelte index bda2dd1..cf0df33 100644 --- a/apps/publisher-dashboard/src/routes/login/+page.svelte +++ b/apps/publisher-dashboard/src/routes/login/+page.svelte @@ -1,9 +1,10 @@ diff --git a/bun.lock b/bun.lock index 641ca0e..d305dc7 100644 --- a/bun.lock +++ b/bun.lock @@ -101,9 +101,12 @@ "@tailwindcss/vite": "^4.1.4", "@types/ua-parser-js": "^0.7.39", "@types/zxcvbn": "^4.4.5", + "@typescript-eslint/parser": "^8.52.0", "eslint": "catalog:", + "eslint-plugin-svelte": "^3.14.0", "svelte": "^5.28.2", "svelte-check": "^4.2.1", + "svelte-eslint-parser": "^1.4.1", "tailwindcss": "^4.1.4", "tw-animate-css": "^1.4.0", "typescript": "catalog:", @@ -619,6 +622,8 @@ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + "dateformat": ["dateformat@4.6.3", "", {}, "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA=="], "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], @@ -671,6 +676,8 @@ "eslint-config-turbo": ["eslint-config-turbo@2.7.3", "", { "dependencies": { "eslint-plugin-turbo": "2.7.3" }, "peerDependencies": { "eslint": ">6.6.0", "turbo": ">2.0.0" } }, "sha512-1ik3XQLJoE9d9ljhw60wTQf7rlwnz8tc6vnhSL7/Ciep2+qPMJpNg+mapcmGhirfDSceVNI8r9pv+HyvrBXhpQ=="], + "eslint-plugin-svelte": ["eslint-plugin-svelte@3.14.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.6.1", "@jridgewell/sourcemap-codec": "^1.5.0", "esutils": "^2.0.3", "globals": "^16.0.0", "known-css-properties": "^0.37.0", "postcss": "^8.4.49", "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^7.0.0", "semver": "^7.6.3", "svelte-eslint-parser": "^1.4.0" }, "peerDependencies": { "eslint": "^8.57.1 || ^9.0.0", "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["svelte"] }, "sha512-Isw0GvaMm0yHxAj71edAdGFh28ufYs+6rk2KlbbZphnqZAzrH3Se3t12IFh2H9+1F/jlDhBBL4oiOJmLqmYX0g=="], + "eslint-plugin-turbo": ["eslint-plugin-turbo@2.7.3", "", { "dependencies": { "dotenv": "16.0.3" }, "peerDependencies": { "eslint": ">6.6.0", "turbo": ">2.0.0" } }, "sha512-q7kYzJCyvceSLVwHgmn3ZBhqpUihQHxC7LEddq5a1eLe5P+/Ob4TnJrdocP38qO1n9MCuO+cJSUTGUtZb1X3bQ=="], "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], @@ -799,6 +806,8 @@ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + "known-css-properties": ["known-css-properties@0.37.0", "", {}, "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ=="], + "kysely": ["kysely@0.28.9", "", {}, "sha512-3BeXMoiOhpOwu62CiVpO6lxfq4eS6KMYfQdMsN/2kUCRNuF2YiEr7u0HLHaQU+O4Xu8YXE3bHVkwaQ85i72EuA=="], "kysely-codegen": ["kysely-codegen@0.19.0", "", { "dependencies": { "chalk": "4.1.2", "cosmiconfig": "^9.0.0", "dotenv": "^17.2.1", "dotenv-expand": "^12.0.2", "git-diff": "^2.0.6", "micromatch": "^4.0.8", "minimist": "^1.2.8", "pluralize": "^8.0.0", "zod": "^4.1.5" }, "peerDependencies": { "@libsql/kysely-libsql": ">=0.3.0 <0.5.0", "@tediousjs/connection-string": ">=0.5.0 <0.6.0", "better-sqlite3": ">=7.6.2 <13.0.0", "kysely": ">=0.27.0 <1.0.0", "kysely-bun-sqlite": ">=0.3.2 <1.0.0", "kysely-bun-worker": ">=1.2.0 <2.0.0", "mysql2": ">=2.3.3 <4.0.0", "pg": ">=8.8.0 <9.0.0", "tarn": ">=3.0.0 <4.0.0", "tedious": ">=18.0.0 <20.0.0" }, "optionalPeers": ["@libsql/kysely-libsql", "@tediousjs/connection-string", "better-sqlite3", "kysely-bun-sqlite", "kysely-bun-worker", "mysql2", "pg", "tarn", "tedious"], "bin": { "kysely-codegen": "dist/cli/bin.js" } }, "sha512-ZpdQQnpfY0kh45CA6yPA9vdFsBE+b06Fx7QVcbL5rX//yjbA0yYGZGhnH7GTd4P4BY/HIv5uAfuOD83JVZf95w=="], @@ -831,6 +840,8 @@ "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="], + "lilconfig": ["lilconfig@2.1.0", "", {}, "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="], + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], "locate-character": ["locate-character@3.0.0", "", {}, "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="], @@ -929,6 +940,14 @@ "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + "postcss-load-config": ["postcss-load-config@3.1.4", "", { "dependencies": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg=="], + + "postcss-safe-parser": ["postcss-safe-parser@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A=="], + + "postcss-scss": ["postcss-scss@4.0.9", "", { "peerDependencies": { "postcss": "^8.4.29" } }, "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A=="], + + "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], + "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], "postgres-bytea": ["postgres-bytea@1.0.1", "", {}, "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ=="], @@ -1011,6 +1030,8 @@ "svelte-check": ["svelte-check@4.3.5", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "chokidar": "^4.0.1", "fdir": "^6.2.0", "picocolors": "^1.0.0", "sade": "^1.7.4" }, "peerDependencies": { "svelte": "^4.0.0 || ^5.0.0-next.0", "typescript": ">=5.0.0" }, "bin": { "svelte-check": "bin/svelte-check" } }, "sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q=="], + "svelte-eslint-parser": ["svelte-eslint-parser@1.4.1", "", { "dependencies": { "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.0.0", "espree": "^10.0.0", "postcss": "^8.4.49", "postcss-scss": "^4.0.9", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["svelte"] }, "sha512-1eqkfQ93goAhjAXxZiu1SaKI9+0/sxp4JIWQwUpsz7ybehRE5L8dNuz7Iry7K22R47p5/+s9EM+38nHV2OlgXA=="], + "svelte-sonner": ["svelte-sonner@1.0.7", "", { "dependencies": { "runed": "^0.28.0" }, "peerDependencies": { "svelte": "^5.0.0" } }, "sha512-1EUFYmd7q/xfs2qCHwJzGPh9n5VJ3X6QjBN10fof2vxgy8fYE7kVfZ7uGnd7i6fQaWIr5KvXcwYXE/cmTEjk5A=="], "svelte-toolbelt": ["svelte-toolbelt@0.10.6", "", { "dependencies": { "clsx": "^2.1.1", "runed": "^0.35.1", "style-to-object": "^1.0.8" }, "peerDependencies": { "svelte": "^5.30.2" } }, "sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ=="], @@ -1075,6 +1096,8 @@ "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], "vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="], @@ -1087,6 +1110,8 @@ "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + "yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], "zimmerframe": ["zimmerframe@1.1.4", "", {}, "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ=="],