diff --git a/.changeset/eleven-spiders-knock.md b/.changeset/eleven-spiders-knock.md new file mode 100644 index 0000000000..6e6efec009 --- /dev/null +++ b/.changeset/eleven-spiders-knock.md @@ -0,0 +1,5 @@ +--- +"@ryanatkn/gro": minor +--- + +upgrade to svelte@5 and esbuild@0.20 diff --git a/package-lock.json b/package-lock.json index 67ed475770..71811213aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,15 +12,15 @@ "@ryanatkn/belt": "^0.20.10", "chokidar": "^3.6.0", "dotenv": "^16.4.5", - "es-module-lexer": "^1.5.0", + "es-module-lexer": "^1.5.3", "kleur": "^4.1.5", "mri": "^1.2.0", "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.2.2", + "prettier-plugin-svelte": "^3.2.3", "tiny-glob": "^0.2.9", "ts-morph": "^22.0.0", "tslib": "^2.6.2", - "zod": "^3.22.4" + "zod": "^3.23.8" }, "bin": { "gro": "dist/gro.js" @@ -28,22 +28,23 @@ "devDependencies": { "@changesets/changelog-git": "^0.2.0", "@changesets/types": "^6.0.0", - "@ryanatkn/eslint-config": "^0.1.0", - "@ryanatkn/fuz": "^0.92.0", + "@ryanatkn/eslint-config": "^0.1.2", + "@ryanatkn/fuz": "^0.101.2", + "@ryanatkn/moss": "^0.3.0", "@sveltejs/adapter-static": "^3.0.1", - "@sveltejs/kit": "^2.5.4", - "@sveltejs/package": "^2.3.0", - "@sveltejs/vite-plugin-svelte": "^3.0.2", + "@sveltejs/kit": "^2.5.10", + "@sveltejs/package": "^2.3.1", + "@sveltejs/vite-plugin-svelte": "^3.1.0", "@types/fs-extra": "^11.0.4", - "@types/node": "^20.11.30", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", - "esbuild": "^0.19.0", + "@types/node": "^20.12.12", + "@typescript-eslint/eslint-plugin": "^7.10.0", + "@typescript-eslint/parser": "^7.10.0", + "esbuild": "^0.20.2", "eslint": "^8.57.0", - "eslint-plugin-svelte": "^2.35.1", - "svelte": "^4.2.12", - "svelte-check": "^3.6.8", - "typescript": "^5.4.3", + "eslint-plugin-svelte": "^2.39.0", + "svelte": "^5.0.0-next.141", + "svelte-check": "^3.7.1", + "typescript": "^5.4.5", "uvu": "^0.5.6" }, "engines": { @@ -53,8 +54,8 @@ "url": "https://www.ryanatkn.com/funding" }, "peerDependencies": { - "esbuild": "^0.19", - "svelte": "*" + "esbuild": "^0.20", + "svelte": "^5.0.0-next.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -67,12 +68,12 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -94,9 +95,9 @@ "dev": true }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "cpu": [ "ppc64" ], @@ -110,9 +111,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "cpu": [ "arm" ], @@ -126,9 +127,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "cpu": [ "arm64" ], @@ -142,9 +143,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "cpu": [ "x64" ], @@ -158,9 +159,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -174,9 +175,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "cpu": [ "x64" ], @@ -190,9 +191,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "cpu": [ "arm64" ], @@ -206,9 +207,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "cpu": [ "x64" ], @@ -222,9 +223,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "cpu": [ "arm" ], @@ -238,9 +239,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "cpu": [ "arm64" ], @@ -254,9 +255,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "cpu": [ "ia32" ], @@ -270,9 +271,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "cpu": [ "loong64" ], @@ -286,9 +287,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "cpu": [ "mips64el" ], @@ -302,9 +303,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "cpu": [ "ppc64" ], @@ -318,9 +319,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "cpu": [ "riscv64" ], @@ -334,9 +335,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ "s390x" ], @@ -350,9 +351,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ "x64" ], @@ -366,9 +367,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], @@ -382,9 +383,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ "x64" ], @@ -398,9 +399,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], @@ -414,9 +415,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], @@ -430,9 +431,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], @@ -446,9 +447,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], @@ -589,19 +590,19 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz", - "integrity": "sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -616,9 +617,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -629,9 +630,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz", - "integrity": "sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -670,15 +671,15 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.24", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", - "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.2.tgz", + "integrity": "sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==", "cpu": [ "arm" ], @@ -690,9 +691,9 @@ "peer": true }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.2.tgz", + "integrity": "sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==", "cpu": [ "arm64" ], @@ -704,9 +705,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.2.tgz", + "integrity": "sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==", "cpu": [ "arm64" ], @@ -718,9 +719,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.2.tgz", + "integrity": "sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==", "cpu": [ "x64" ], @@ -732,9 +733,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.2.tgz", + "integrity": "sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==", "cpu": [ "arm" ], @@ -746,9 +747,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.2.tgz", + "integrity": "sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==", "cpu": [ "arm64" ], @@ -760,9 +761,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.2.tgz", + "integrity": "sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==", "cpu": [ "arm64" ], @@ -773,10 +774,24 @@ ], "peer": true }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.2.tgz", + "integrity": "sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.2.tgz", + "integrity": "sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==", "cpu": [ "riscv64" ], @@ -787,10 +802,24 @@ ], "peer": true }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.2.tgz", + "integrity": "sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.2.tgz", + "integrity": "sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==", "cpu": [ "x64" ], @@ -802,9 +831,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.2.tgz", + "integrity": "sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==", "cpu": [ "x64" ], @@ -816,9 +845,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.2.tgz", + "integrity": "sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==", "cpu": [ "arm64" ], @@ -830,9 +859,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.2.tgz", + "integrity": "sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==", "cpu": [ "ia32" ], @@ -844,9 +873,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.2.tgz", + "integrity": "sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==", "cpu": [ "x64" ], @@ -869,9 +898,9 @@ } }, "node_modules/@ryanatkn/eslint-config": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@ryanatkn/eslint-config/-/eslint-config-0.1.0.tgz", - "integrity": "sha512-5DwEtUpsth+NJilm56OLEQ/YxjkN5xtxf2I5FejMrCw/3B8Osp9uiM6BVWXbRMAud9fLAHO/Vw8EQmcipHAbLA==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@ryanatkn/eslint-config/-/eslint-config-0.1.2.tgz", + "integrity": "sha512-s75cw1jUMPiWNMyXqLMfO5f8YfO5OfwJSrT7GYHvYqqI3dEOtOJrzTs60k/y1w1bKEKqXknN7lO6sQut66x/lg==", "dev": true, "engines": { "node": ">=20.10" @@ -881,14 +910,14 @@ "@typescript-eslint/parser": ">=6", "eslint": ">=8", "eslint-plugin-svelte": ">=2", - "svelte": ">=4", + "svelte": "*", "typescript": ">=5" } }, "node_modules/@ryanatkn/fuz": { - "version": "0.92.0", - "resolved": "https://registry.npmjs.org/@ryanatkn/fuz/-/fuz-0.92.0.tgz", - "integrity": "sha512-6phoxYy4O5w+dqNDkhybxe93CD1eTiMLdMHumNTIgE17tS1KXDAgn8igXegXl6EjLz2eh8K67PUbMlUwXwUePA==", + "version": "0.101.2", + "resolved": "https://registry.npmjs.org/@ryanatkn/fuz/-/fuz-0.101.2.tgz", + "integrity": "sha512-2T0eR6kTFbw3lvfOiNPYuhMCxDSBSTAea2IT7HPQL+nzzPOBwomRUyFr5uPO74p8c8SOeLcdMNbjdsAu0S/Mvw==", "dev": true, "engines": { "node": ">=20.10" @@ -898,8 +927,21 @@ }, "peerDependencies": { "@ryanatkn/belt": "*", - "@sveltejs/kit": "*", - "svelte": "*" + "@ryanatkn/moss": "*", + "@sveltejs/kit": "^2", + "svelte": "^5.0.0-next.0" + } + }, + "node_modules/@ryanatkn/moss": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ryanatkn/moss/-/moss-0.3.0.tgz", + "integrity": "sha512-EWVwvRp3w74ItF+SuLHdwBDGYuxqKUouGAhWXS7eKOAmYdKfnW9Wpi6ot2jptea0orFaz/Sxj2fq3nX/fU9kLA==", + "dev": true, + "engines": { + "node": ">=20.10" + }, + "funding": { + "url": "https://www.ryanatkn.com/funding" } }, "node_modules/@sveltejs/adapter-static": { @@ -912,17 +954,17 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.4.tgz", - "integrity": "sha512-eDxK2d4EGzk99QsZNoPXe7jlzA5EGqfcCpUwZ912bhnalsZ2ZsG5wGRthkydupVjYyqdmzEanVKFhLxU2vkPSQ==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.10.tgz", + "integrity": "sha512-OqoyTmFG2cYmCFAdBfW+Qxbg8m23H4dv6KqwEt7ofr/ROcfcIl3Z/VT56L22H9f0uNZyr+9Bs1eh2gedOCK9kA==", "dev": true, "hasInstallScript": true, "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.6.0", - "devalue": "^4.3.2", + "devalue": "^5.0.0", "esm-env": "^1.0.0", - "import-meta-resolve": "^4.0.0", + "import-meta-resolve": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.5", "mrmime": "^2.0.0", @@ -944,9 +986,9 @@ } }, "node_modules/@sveltejs/package": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sveltejs/package/-/package-2.3.0.tgz", - "integrity": "sha512-wmtwEfi3gQnmtotAjygRHR6cmLfpblQl1dU764f3N2I5DPe34llFs44bHOYcuk91Bp2sSq6bWUmNwxGlYCchOA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/package/-/package-2.3.1.tgz", + "integrity": "sha512-JvR2J4ost1oCn1CSdqenYRwGX/1RX+7LN+VZ71aPnz3JAlIFaEKQd1pBxlb+OSQTfeugJO0W39gB9voAbBO5ow==", "dev": true, "dependencies": { "chokidar": "^3.6.0", @@ -966,17 +1008,17 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.2.tgz", - "integrity": "sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.0.tgz", + "integrity": "sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==", "dev": true, "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0", "debug": "^4.3.4", "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.30.5", - "svelte-hmr": "^0.15.3", + "magic-string": "^0.30.9", + "svelte-hmr": "^0.16.0", "vitefu": "^0.2.5" }, "engines": { @@ -988,9 +1030,9 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz", - "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -1004,6 +1046,18 @@ "vite": "^5.0.0" } }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, "node_modules/@ts-morph/common": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.23.0.tgz", @@ -1050,12 +1104,6 @@ "@types/node": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, "node_modules/@types/jsonfile": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", @@ -1066,9 +1114,9 @@ } }, "node_modules/@types/node": { - "version": "20.11.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", - "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -1080,29 +1128,21 @@ "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", "dev": true }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz", - "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz", + "integrity": "sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/type-utils": "7.4.0", - "@typescript-eslint/utils": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/type-utils": "7.10.0", + "@typescript-eslint/utils": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1122,15 +1162,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.4.0.tgz", - "integrity": "sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", + "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/typescript-estree": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4" }, "engines": { @@ -1150,13 +1190,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", - "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1167,15 +1207,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz", - "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz", + "integrity": "sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.4.0", - "@typescript-eslint/utils": "7.4.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/utils": "7.10.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1194,9 +1234,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1207,19 +1247,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", - "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1235,18 +1275,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", - "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/typescript-estree": "7.4.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1260,13 +1297,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.10.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1302,6 +1339,14 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-typescript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", + "peerDependencies": { + "acorn": ">=8.9.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1391,11 +1436,14 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/brace-expansion": { @@ -1479,18 +1527,6 @@ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz", "integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==" }, - "node_modules/code-red": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", - "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "@types/estree": "^1.0.1", - "acorn": "^8.10.0", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1538,18 +1574,6 @@ "node": ">= 8" } }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -1618,9 +1642,9 @@ } }, "node_modules/devalue": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", - "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", + "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", "dev": true }, "node_modules/diff": { @@ -1668,9 +1692,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==" }, "node_modules/es6-promise": { "version": "3.3.1", @@ -1679,9 +1703,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "bin": { @@ -1691,29 +1715,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/escape-string-regexp": { @@ -1784,10 +1808,13 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", + "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, "engines": { "node": ">=12" }, @@ -1796,23 +1823,23 @@ } }, "node_modules/eslint-plugin-svelte": { - "version": "2.35.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.1.tgz", - "integrity": "sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==", + "version": "2.39.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.39.0.tgz", + "integrity": "sha512-FXktBLXsrxbA+6ZvJK2z/sQOrUKyzSg3fNWK5h0reSCjr2fjAsc9ai/s/JvSl4Hgvz3nYVtTIMwarZH5RcB7BA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "eslint-compat-utils": "^0.1.2", + "@eslint-community/eslint-utils": "^4.4.0", + "@jridgewell/sourcemap-codec": "^1.4.15", + "debug": "^4.3.4", + "eslint-compat-utils": "^0.5.0", "esutils": "^2.0.3", - "known-css-properties": "^0.29.0", - "postcss": "^8.4.5", + "known-css-properties": "^0.31.0", + "postcss": "^8.4.38", "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": ">=0.33.0 <1.0.0" + "postcss-selector-parser": "^6.0.16", + "semver": "^7.6.0", + "svelte-eslint-parser": ">=0.36.0 <1.0.0" }, "engines": { "node": "^14.17.0 || >=16.0.0" @@ -1821,8 +1848,8 @@ "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0-0", - "svelte": "^3.37.0 || ^4.0.0" + "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.112" }, "peerDependenciesMeta": { "svelte": { @@ -1895,8 +1922,7 @@ "node_modules/esm-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", - "dev": true + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" }, "node_modules/espree": { "version": "9.6.1", @@ -1927,6 +1953,15 @@ "node": ">=0.10" } }, + "node_modules/esrap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz", + "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -1948,14 +1983,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2229,9 +2256,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "funding": { "type": "github", @@ -2372,9 +2399,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", + "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", "dev": true }, "node_modules/levn": { @@ -2447,9 +2474,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", - "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", + "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -2457,11 +2484,6 @@ "node": ">=12" } }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2492,9 +2514,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2710,16 +2732,6 @@ "node": ">=8" } }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -2738,9 +2750,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -2759,7 +2771,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -2837,9 +2849,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -2873,9 +2885,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.2.tgz", - "integrity": "sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.3.tgz", + "integrity": "sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==", "peerDependencies": { "prettier": "^3.0.0", "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" @@ -2954,9 +2966,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.2.tgz", + "integrity": "sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==", "dev": true, "peer": true, "dependencies": { @@ -2970,19 +2982,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.14.2", + "@rollup/rollup-android-arm64": "4.14.2", + "@rollup/rollup-darwin-arm64": "4.14.2", + "@rollup/rollup-darwin-x64": "4.14.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.2", + "@rollup/rollup-linux-arm64-gnu": "4.14.2", + "@rollup/rollup-linux-arm64-musl": "4.14.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.2", + "@rollup/rollup-linux-riscv64-gnu": "4.14.2", + "@rollup/rollup-linux-s390x-gnu": "4.14.2", + "@rollup/rollup-linux-x64-gnu": "4.14.2", + "@rollup/rollup-linux-x64-musl": "4.14.2", + "@rollup/rollup-win32-arm64-msvc": "4.14.2", + "@rollup/rollup-win32-ia32-msvc": "4.14.2", + "@rollup/rollup-win32-x64-msvc": "4.14.2", "fsevents": "~2.3.2" } }, @@ -3125,9 +3139,10 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3181,33 +3196,32 @@ } }, "node_modules/svelte": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.12.tgz", - "integrity": "sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==", + "version": "5.0.0-next.141", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.0.0-next.141.tgz", + "integrity": "sha512-zT74TUo0vOOrbxRfdlWXu+ac4O9lqPFG0YoZB3uOfrOewT1GKxKm0qwG/jo9bGvgZ++TSHjR7AtV091LY2FhBA==", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/estree": "^1.0.1", - "acorn": "^8.9.0", + "@types/estree": "^1.0.5", + "acorn": "^8.11.3", + "acorn-typescript": "^1.4.13", "aria-query": "^5.3.0", "axobject-query": "^4.0.0", - "code-red": "^1.0.3", - "css-tree": "^2.3.1", - "estree-walker": "^3.0.3", - "is-reference": "^3.0.1", + "esm-env": "^1.0.0", + "esrap": "^1.2.2", + "is-reference": "^3.0.2", "locate-character": "^3.0.0", - "magic-string": "^0.30.4", - "periscopic": "^3.1.0" + "magic-string": "^0.30.5", + "zimmerframe": "^1.1.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/svelte-check": { - "version": "3.6.8", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.8.tgz", - "integrity": "sha512-rhXU7YCDtL+lq2gCqfJDXKTxJfSsCgcd08d7VWBFxTw6IWIbMWSaASbAOD3N0VV9TYSSLUqEBiratLd8WxAJJA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.7.1.tgz", + "integrity": "sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", @@ -3227,16 +3241,16 @@ } }, "node_modules/svelte-eslint-parser": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", - "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.36.0.tgz", + "integrity": "sha512-/6YmUSr0FAVxW8dXNdIMydBnddPMHzaHirAZ7RrT21XYdgGGZMh0LQG6CZsvAFS4r2Y4ItUuCQc8TQ3urB30mQ==", "dev": true, "dependencies": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.29", - "postcss-scss": "^4.0.8" + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "postcss": "^8.4.38", + "postcss-scss": "^4.0.9" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3245,7 +3259,7 @@ "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0" + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.115" }, "peerDependenciesMeta": { "svelte": { @@ -3253,18 +3267,6 @@ } } }, - "node_modules/svelte-hmr": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", - "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0" - } - }, "node_modules/svelte-preprocess": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz", @@ -3329,9 +3331,9 @@ } }, "node_modules/svelte2tsx": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.1.tgz", - "integrity": "sha512-0lKa6LrqJxRan0bDmBd/uFsVzYSXnoFUDaczaH0znke/XI79oy1JjFaF51J9EsOvpn8lXPlrUc3n/MA/ORNxBg==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.6.tgz", + "integrity": "sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==", "dev": true, "dependencies": { "dedent-js": "^1.0.1", @@ -3378,9 +3380,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { "node": ">=16" @@ -3428,9 +3430,9 @@ } }, "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3480,15 +3482,15 @@ } }, "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", + "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", "dev": true, "peer": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -3597,10 +3599,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==" + }, "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 41963720d7..e4ef14bb60 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "node": ">=20.10" }, "scripts": { - "build": "rm -rf .gro dist && svelte-package && chmod +x ./dist/gro.js && npm link -f", + "build": "rm -rf .gro dist && svelte-kit sync && svelte-package && chmod +x ./dist/gro.js && npm link -f", "start": "gro dev", "test": "gro test" }, @@ -48,39 +48,40 @@ "@ryanatkn/belt": "^0.20.10", "chokidar": "^3.6.0", "dotenv": "^16.4.5", - "es-module-lexer": "^1.5.0", + "es-module-lexer": "^1.5.3", "kleur": "^4.1.5", "mri": "^1.2.0", "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.2.2", + "prettier-plugin-svelte": "^3.2.3", "tiny-glob": "^0.2.9", "ts-morph": "^22.0.0", "tslib": "^2.6.2", - "zod": "^3.22.4" + "zod": "^3.23.8" }, "peerDependencies": { - "esbuild": "^0.19", - "svelte": "*" + "esbuild": "^0.20", + "svelte": "^5.0.0-next.0" }, "devDependencies": { "@changesets/changelog-git": "^0.2.0", "@changesets/types": "^6.0.0", - "@ryanatkn/eslint-config": "^0.1.0", - "@ryanatkn/fuz": "^0.92.0", + "@ryanatkn/eslint-config": "^0.1.2", + "@ryanatkn/fuz": "^0.101.2", + "@ryanatkn/moss": "^0.3.0", "@sveltejs/adapter-static": "^3.0.1", - "@sveltejs/kit": "^2.5.4", - "@sveltejs/package": "^2.3.0", - "@sveltejs/vite-plugin-svelte": "^3.0.2", + "@sveltejs/kit": "^2.5.10", + "@sveltejs/package": "^2.3.1", + "@sveltejs/vite-plugin-svelte": "^3.1.0", "@types/fs-extra": "^11.0.4", - "@types/node": "^20.11.30", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", - "esbuild": "^0.19.0", + "@types/node": "^20.12.12", + "@typescript-eslint/eslint-plugin": "^7.10.0", + "@typescript-eslint/parser": "^7.10.0", + "esbuild": "^0.20.2", "eslint": "^8.57.0", - "eslint-plugin-svelte": "^2.35.1", - "svelte": "^4.2.12", - "svelte-check": "^3.6.8", - "typescript": "^5.4.3", + "eslint-plugin-svelte": "^2.39.0", + "svelte": "^5.0.0-next.141", + "svelte-check": "^3.7.1", + "typescript": "^5.4.5", "uvu": "^0.5.6" }, "eslintConfig": { @@ -357,6 +358,10 @@ "default": "./dist/src_json.js", "types": "./dist/src_json.d.ts" }, + "./svelte_helpers.js": { + "default": "./dist/svelte_helpers.js", + "types": "./dist/svelte_helpers.d.ts" + }, "./sveltekit_config.js": { "default": "./dist/sveltekit_config.js", "types": "./dist/sveltekit_config.d.ts" diff --git a/src/fixtures/modules/Some_Test_Svelte.svelte b/src/fixtures/modules/Some_Test_Svelte.svelte index 6165faed2d..8201a22080 100644 --- a/src/fixtures/modules/Some_Test_Svelte.svelte +++ b/src/fixtures/modules/Some_Test_Svelte.svelte @@ -1 +1,9 @@ + + + + Some_Test_Svelte.svelte contents diff --git a/src/fixtures/modules/some_test_css.css b/src/fixtures/modules/some_test_css.css index 1e974512ae..b06ff4ef89 100644 --- a/src/fixtures/modules/some_test_css.css +++ b/src/fixtures/modules/some_test_css.css @@ -1,4 +1,5 @@ /* some_test_css */ .some_test_css { + --a: ok; --some_test_property: red; } diff --git a/src/fixtures/modules/some_test_js.js b/src/fixtures/modules/some_test_js.js new file mode 100644 index 0000000000..fe67c40e4f --- /dev/null +++ b/src/fixtures/modules/some_test_js.js @@ -0,0 +1,9 @@ +export const a = 'ok'; + +export const some_test_js = '.js'; + +export const some_test_fn = () => true; + +export class Some_Test_Class { + a = 1; +} diff --git a/src/fixtures/modules/some_test_json.json b/src/fixtures/modules/some_test_json.json index 28c95406f8..90a17c3ef7 100644 --- a/src/fixtures/modules/some_test_json.json +++ b/src/fixtures/modules/some_test_json.json @@ -1,3 +1,4 @@ { + "a": "ok", "some_test_json": ".json" } diff --git a/src/fixtures/modules/some_test_server.ts b/src/fixtures/modules/some_test_server.ts new file mode 100644 index 0000000000..659eea0112 --- /dev/null +++ b/src/fixtures/modules/some_test_server.ts @@ -0,0 +1,5 @@ +import {Some_Test_Svelte_Ts} from './some_test_svelte_ts.svelte.js'; + +export const some_test_server = 'some_test_server'; + +export const Rexported_Some_Test_Svelte_Ts = Some_Test_Svelte_Ts; diff --git a/src/fixtures/modules/some_test_svelte_js.svelte.js b/src/fixtures/modules/some_test_svelte_js.svelte.js new file mode 100644 index 0000000000..0fd9eabb58 --- /dev/null +++ b/src/fixtures/modules/some_test_svelte_js.svelte.js @@ -0,0 +1,3 @@ +export class Some_Test_Svelte_Js { + a = $state('ok'); +} diff --git a/src/fixtures/modules/some_test_svelte_ts.svelte.ts b/src/fixtures/modules/some_test_svelte_ts.svelte.ts new file mode 100644 index 0000000000..a181ed02e7 --- /dev/null +++ b/src/fixtures/modules/some_test_svelte_ts.svelte.ts @@ -0,0 +1,3 @@ +export class Some_Test_Svelte_Ts { + a = $state('ok'); +} diff --git a/src/fixtures/modules/some_test_ts.ts b/src/fixtures/modules/some_test_ts.ts index 3c75044ce2..eef6b8f91f 100644 --- a/src/fixtures/modules/some_test_ts.ts +++ b/src/fixtures/modules/some_test_ts.ts @@ -1,3 +1,5 @@ +export const a = 'ok'; + export const some_test_ts = '.ts'; export const some_test_fn = (): boolean => true; diff --git a/src/lib/esbuild_plugin_svelte.test.ts b/src/lib/esbuild_plugin_svelte.test.ts new file mode 100644 index 0000000000..2ffb663000 --- /dev/null +++ b/src/lib/esbuild_plugin_svelte.test.ts @@ -0,0 +1,88 @@ +import {test} from 'uvu'; +import * as assert from 'uvu/assert'; +import * as esbuild from 'esbuild'; +import {readFile, rm} from 'node:fs/promises'; + +import {esbuild_plugin_svelte} from './esbuild_plugin_svelte.js'; + +test('build for the client', async () => { + const outfile = './src/fixtures/modules/some_test_server_bundle_DELETEME.js'; + const built = await esbuild.build({ + entryPoints: ['./src/fixtures/modules/some_test_server.ts'], + plugins: [esbuild_plugin_svelte()], + outfile, + format: 'esm', + platform: 'node', + packages: 'external', + bundle: true, + target: 'esnext', + }); + assert.is(built.errors.length, 0); + assert.is(built.warnings.length, 0); + + const built_output = await readFile(outfile, 'utf8'); + assert.is( + built_output, + `// src/fixtures/modules/some_test_svelte_ts.svelte.ts +import * as $ from "svelte/internal/client"; +var Some_Test_Svelte_Ts = class { + #a = $.source("ok"); + get a() { + return $.get(this.#a); + } + set a(value) { + $.set(this.#a, $.proxy(value)); + } +}; + +// src/fixtures/modules/some_test_server.ts +var some_test_server = "some_test_server"; +var Rexported_Some_Test_Svelte_Ts = Some_Test_Svelte_Ts; +export { + Rexported_Some_Test_Svelte_Ts, + some_test_server +}; +`, + ); + + await rm(outfile); // TODO could be cleaner +}); + +test('build for the server', async () => { + const outfile = './src/fixtures/modules/some_test_client_bundle_DELETEME.js'; + const built = await esbuild.build({ + entryPoints: ['./src/fixtures/modules/some_test_server.ts'], + plugins: [esbuild_plugin_svelte({svelte_compile_module_options: {generate: 'server'}})], + outfile, + format: 'esm', + platform: 'node', + packages: 'external', + bundle: true, + target: 'esnext', + }); + assert.is(built.errors.length, 0); + assert.is(built.warnings.length, 0); + + const built_output = await readFile(outfile, 'utf8'); + assert.is( + built_output, + `// src/fixtures/modules/some_test_svelte_ts.svelte.ts +import * as $ from "svelte/internal/server"; +var Some_Test_Svelte_Ts = class { + a = "ok"; +}; + +// src/fixtures/modules/some_test_server.ts +var some_test_server = "some_test_server"; +var Rexported_Some_Test_Svelte_Ts = Some_Test_Svelte_Ts; +export { + Rexported_Some_Test_Svelte_Ts, + some_test_server +}; +`, + ); + + await rm(outfile); // TODO could be cleaner +}); + +test.run(); diff --git a/src/lib/esbuild_plugin_svelte.ts b/src/lib/esbuild_plugin_svelte.ts index 5d9fce937c..7e4664f6f5 100644 --- a/src/lib/esbuild_plugin_svelte.ts +++ b/src/lib/esbuild_plugin_svelte.ts @@ -1,52 +1,83 @@ import type * as esbuild from 'esbuild'; -import {compile, preprocess, type CompileOptions, type PreprocessorGroup} from 'svelte/compiler'; +import { + compile, + compileModule, + preprocess, + type CompileOptions, + type ModuleCompileOptions, + type PreprocessorGroup, +} from 'svelte/compiler'; import {readFile} from 'node:fs/promises'; import {relative} from 'node:path'; import {cwd} from 'node:process'; +import {SVELTE_MATCHER, SVELTE_RUNES_MATCHER} from './svelte_helpers.js'; + export interface Options { dir?: string; - // These `svelte_` prefixes are unnecessary and verbose - // but they align with the upstream APIs, - // so it's simpler overall like for project-wide searching. svelte_compile_options?: CompileOptions; + svelte_compile_module_options?: ModuleCompileOptions; svelte_preprocessors?: PreprocessorGroup | PreprocessorGroup[]; } -export const esbuild_plugin_svelte = ({ - dir = cwd(), - svelte_compile_options, - svelte_preprocessors, -}: Options): esbuild.Plugin => ({ - name: 'svelte', - setup: (build) => { - build.onLoad({filter: /\.svelte$/u}, async ({path}) => { - let source = await readFile(path, 'utf8'); - try { - const filename = relative(dir, path); - const preprocessed = svelte_preprocessors - ? await preprocess(source, svelte_preprocessors, {filename}) - : null; - // TODO handle preprocessor sourcemaps, same as in loader - merge? - if (preprocessed?.code) source = preprocessed?.code; - const {js, warnings} = compile(source, svelte_compile_options); - const contents = js.map ? js.code + '//# sourceMappingURL=' + js.map.toUrl() : js.code; - return { - contents, - warnings: warnings.map((w) => to_sveltekit_message(filename, source, w)), - }; - } catch (err) { - return {errors: [to_sveltekit_message(path, source, err)]}; - } - }); - }, -}); +export const esbuild_plugin_svelte = (options: Options = {}): esbuild.Plugin => { + const { + dir = cwd(), + svelte_compile_options = {}, + svelte_compile_module_options = {}, + svelte_preprocessors, + } = options; + return { + name: 'svelte', + setup: (build) => { + build.onLoad({filter: SVELTE_RUNES_MATCHER}, async ({path}) => { + const source = await readFile(path, 'utf8'); + try { + const filename = relative(dir, path); + const {js, warnings} = compileModule(source, { + filename, + ...svelte_compile_module_options, + }); + const contents = js.map ? js.code + '//# sourceMappingURL=' + js.map.toUrl() : js.code; + return { + contents, + warnings: warnings.map((w) => convert_svelte_message_to_esbuild(filename, source, w)), + }; + } catch (err) { + return {errors: [convert_svelte_message_to_esbuild(path, source, err)]}; + } + }); + build.onLoad({filter: SVELTE_MATCHER}, async ({path}) => { + let source = await readFile(path, 'utf8'); + try { + const filename = relative(dir, path); + const preprocessed = svelte_preprocessors + ? await preprocess(source, svelte_preprocessors, {filename}) + : null; + // TODO handle preprocessor sourcemaps, same as in loader - merge? + if (preprocessed?.code) source = preprocessed?.code; + const {js, warnings} = compile(source, { + filename, + ...svelte_compile_options, + }); + const contents = js.map ? js.code + '//# sourceMappingURL=' + js.map.toUrl() : js.code; + return { + contents, + warnings: warnings.map((w) => convert_svelte_message_to_esbuild(filename, source, w)), + }; + } catch (err) { + return {errors: [convert_svelte_message_to_esbuild(path, source, err)]}; + } + }); + }, + }; +}; /** * Following the example in the esbuild docs: * https://esbuild.github.io/plugins/#svelte-plugin */ -const to_sveltekit_message = ( +const convert_svelte_message_to_esbuild = ( path: string, source: string, {message, start, end}: SvelteError, diff --git a/src/lib/esbuild_plugin_sveltekit_local_imports.ts b/src/lib/esbuild_plugin_sveltekit_local_imports.ts index 90a39d4397..f58c9d3e2e 100644 --- a/src/lib/esbuild_plugin_sveltekit_local_imports.ts +++ b/src/lib/esbuild_plugin_sveltekit_local_imports.ts @@ -25,7 +25,6 @@ export const esbuild_plugin_sveltekit_local_imports = (): esbuild.Plugin => ({ })); build.onLoad({filter: /.*/u, namespace: 'sveltekit_local_imports_js'}, async ({path}) => ({ contents: await readFile(path), - loader: 'js', resolveDir: dirname(path), })); }, diff --git a/src/lib/esbuild_plugin_sveltekit_shim_app.ts b/src/lib/esbuild_plugin_sveltekit_shim_app.ts index 9ca38242dd..adf1cd2107 100644 --- a/src/lib/esbuild_plugin_sveltekit_shim_app.ts +++ b/src/lib/esbuild_plugin_sveltekit_shim_app.ts @@ -28,7 +28,6 @@ export const esbuild_plugin_sveltekit_shim_app = ({ namespace: 'sveltekit_shim_app_paths', })); build.onLoad({filter: /.*/u, namespace: 'sveltekit_shim_app_paths'}, () => ({ - loader: 'js', contents: render_sveltekit_shim_app_paths(base_url, assets_url), })); build.onResolve({filter: /^\$app\/environment$/u}, ({path}) => ({ @@ -36,7 +35,6 @@ export const esbuild_plugin_sveltekit_shim_app = ({ namespace: 'sveltekit_shim_app_environment', })); build.onLoad({filter: /.*/u, namespace: 'sveltekit_shim_app_environment'}, () => ({ - loader: 'js', contents: render_sveltekit_shim_app_environment(dev), })); }, diff --git a/src/lib/gro_plugin_server.ts b/src/lib/gro_plugin_server.ts index 00baa39884..0577b8c1cd 100644 --- a/src/lib/gro_plugin_server.ts +++ b/src/lib/gro_plugin_server.ts @@ -143,6 +143,11 @@ export const gro_plugin_server = ({ svelte_preprocessors, } = await init_sveltekit_config(sveltekit_config ?? dir); + // TODO feels hacky + if (svelte_compile_options.generate === undefined) { + svelte_compile_options.generate = 'server'; + } + const {outbase, outdir, outname} = outpaths(dev); const server_outpath = join(outdir, outname); diff --git a/src/lib/loader.test.ts b/src/lib/loader.test.ts new file mode 100644 index 0000000000..9bbe1f2b11 --- /dev/null +++ b/src/lib/loader.test.ts @@ -0,0 +1,49 @@ +import {test} from 'uvu'; +import * as assert from 'uvu/assert'; +import {resolve} from 'node:path'; + +test('import js', async () => { + const imported = await import(resolve('src/fixtures/modules/some_test_ts.js')); + assert.ok(imported); + assert.is(imported.a, 'ok'); +}); + +test('import ts', async () => { + const imported = await import(resolve('src/fixtures/modules/some_test_ts.ts')); + assert.ok(imported); + assert.is(imported.a, 'ok'); +}); + +test('import json', async () => { + const imported = await import(resolve('src/fixtures/modules/some_test_json.json')); + assert.ok(imported); + assert.is(imported.default.a, 'ok'); +}); + +test('import css as a no-op', async () => { + const imported = await import(resolve('src/fixtures/modules/some_test_css.css')); + assert.is(typeof imported.default, 'string'); + assert.ok(imported); +}); + +test('import svelte', async () => { + const imported = await import(resolve('src/fixtures/modules/Some_Test_Svelte.svelte')); + assert.ok(imported); + assert.is(imported.a, 'ok'); +}); + +test('import svelte.js', async () => { + const imported = await import(resolve('src/fixtures/modules/some_test_svelte_js.svelte.js')); + assert.ok(imported.Some_Test_Svelte_Js); + const instance = new imported.Some_Test_Svelte_Js(); + assert.is(instance.a, 'ok'); +}); + +test('import svelte.ts', async () => { + const imported = await import(resolve('src/fixtures/modules/some_test_svelte_ts.svelte.ts')); + assert.ok(imported.Some_Test_Svelte_Ts); + const instance = new imported.Some_Test_Svelte_Ts(); + assert.is(instance.a, 'ok'); +}); + +test.run(); diff --git a/src/lib/loader.ts b/src/lib/loader.ts index 44afcb6094..5a9ad14447 100644 --- a/src/lib/loader.ts +++ b/src/lib/loader.ts @@ -1,7 +1,7 @@ import * as esbuild from 'esbuild'; -import {compile, preprocess} from 'svelte/compiler'; +import {compile, compileModule, preprocess} from 'svelte/compiler'; import {fileURLToPath, pathToFileURL} from 'node:url'; -import {dirname, join, relative} from 'node:path'; +import {dirname, join} from 'node:path'; import type {LoadHook, ResolveHook} from 'node:module'; import {escape_regexp} from '@ryanatkn/belt/regexp.js'; @@ -14,6 +14,7 @@ import { sveltekit_shim_app_specifiers, } from './sveltekit_shim_app.js'; import {init_sveltekit_config} from './sveltekit_config.js'; +import {SVELTE_MATCHER, SVELTE_RUNES_MATCHER} from './svelte_helpers.js'; import {paths, NODE_MODULES_DIRNAME} from './paths.js'; import {to_define_import_meta_env, ts_transform_options} from './esbuild_helpers.js'; import {resolve_specifier} from './resolve_specifier.js'; @@ -38,6 +39,7 @@ TODO how to improve that gnarly import line? was originally designed for the now */ +// TODO support `?raw` import variants // TODO sourcemaps for svelte and the svelte preprocessors // TODO `import.meta.resolve` wasn't available in loaders when this was first implemented, but might be now @@ -54,6 +56,7 @@ const { private_prefix, public_prefix, svelte_compile_options, + svelte_compile_module_options, svelte_preprocessors, } = await init_sveltekit_config(dir); // always load it to keep things simple ahead @@ -66,8 +69,8 @@ const final_ts_transform_options: esbuild.TransformOptions = { const aliases = Object.entries({$lib: 'src/lib', ...alias}); const ts_matcher = /\.(ts|tsx|mts|cts)$/u; -const svelte_matcher = /\.(svelte)$/u; const json_matcher = /\.(json)$/u; +const noop_matcher = /\.(css|svg)$/u; // TODO others? configurable? const env_matcher = /src\/lib\/\$env\/(static|dynamic)\/(public|private)$/u; const node_modules_matcher = new RegExp(escape_regexp('/' + NODE_MODULES_DIRNAME + '/'), 'u'); @@ -75,19 +78,30 @@ const package_json_cache: Record = {}; export const load: LoadHook = async (url, context, nextLoad) => { if (sveltekit_shim_app_paths_matcher.test(url)) { - // $app/paths shim + // SvelteKit `$app/paths` shim return { format: 'module', shortCircuit: true, source: render_sveltekit_shim_app_paths(base_url, assets_url), }; } else if (sveltekit_shim_app_environment_matcher.test(url)) { - // $app/environment shim + // SvelteKit `$app/environment` shim return { format: 'module', shortCircuit: true, source: render_sveltekit_shim_app_environment(dev), }; + } else if (SVELTE_RUNES_MATCHER.test(url)) { + // Svelte runes in js/ts + // TODO support sourcemaps + const loaded = await nextLoad( + url, + context.format === 'module' ? context : {...context, format: 'module'}, // TODO dunno why this is needed, specifically with tests + ); + const filename = fileURLToPath(url); + const source = loaded.source!.toString(); // eslint-disable-line @typescript-eslint/no-base-to-string + const transformed = compileModule(source, {...svelte_compile_module_options, filename}); + return {format: 'module', shortCircuit: true, source: transformed.js.code}; } else if (ts_matcher.test(url)) { // ts const loaded = await nextLoad( @@ -99,21 +113,20 @@ export const load: LoadHook = async (url, context, nextLoad) => { {...final_ts_transform_options, sourcefile: url}, ); return {format: 'module', shortCircuit: true, source: transformed.code}; - } else if (svelte_matcher.test(url)) { - // svelte + } else if (SVELTE_MATCHER.test(url)) { + // Svelte // TODO support sourcemaps const loaded = await nextLoad( url, context.format === 'module' ? context : {...context, format: 'module'}, // TODO dunno why this is needed, specifically with tests ); + const filename = fileURLToPath(url); const raw_source = loaded.source!.toString(); // eslint-disable-line @typescript-eslint/no-base-to-string const preprocessed = svelte_preprocessors - ? await preprocess(raw_source, svelte_preprocessors, { - filename: relative(dir, fileURLToPath(url)), - }) + ? await preprocess(raw_source, svelte_preprocessors, {filename}) : null; const source = preprocessed?.code ?? raw_source; - const transformed = compile(source, svelte_compile_options); + const transformed = compile(source, {...svelte_compile_options, filename}); return {format: 'module', shortCircuit: true, source: transformed.js.code}; } else if (json_matcher.test(url)) { // json @@ -122,10 +135,14 @@ export const load: LoadHook = async (url, context, nextLoad) => { const raw_source = loaded.source!.toString(); // eslint-disable-line @typescript-eslint/no-base-to-string const source = `export default ` + raw_source; return {format: 'module', shortCircuit: true, source}; + } else if (noop_matcher.test(url)) { + // no-ops like `.css` and `.svg` + const source = `export default 'no-op import from ${url}'`; + return {format: 'module', shortCircuit: true, source}; } else { - // neither ts nor svelte const matched_env = env_matcher.exec(url); if (matched_env) { + // SvelteKit `$env` const mode: 'static' | 'dynamic' = matched_env[1] as any; const visibility: 'public' | 'private' = matched_env[2] as any; return { @@ -143,6 +160,7 @@ export const load: LoadHook = async (url, context, nextLoad) => { } } + // fallback to default behavior return nextLoad(url, context); }; @@ -185,7 +203,7 @@ export const resolve: ResolveHook = async (specifier, context, nextResolve) => { // The specifier `path` has now been mapped to its final form, so we can inspect it. if (path[0] !== '.' && path[0] !== '/') { // Resolve to `node_modules`. - if (svelte_matcher.test(path) || json_matcher.test(path)) { + if (SVELTE_MATCHER.test(path) || json_matcher.test(path)) { // Match the behavior of Vite and esbuild for Svelte and JSON imports. // TODO maybe `.ts` too const source_id = await resolve_node_specifier(path, dir, parent_url, package_json_cache); diff --git a/src/lib/package.ts b/src/lib/package.ts index 245e2302fb..ef79dcb132 100644 --- a/src/lib/package.ts +++ b/src/lib/package.ts @@ -20,7 +20,8 @@ export const package_json = { type: 'module', engines: {node: '>=20.10'}, scripts: { - build: 'rm -rf .gro dist && svelte-package && chmod +x ./dist/gro.js && npm link -f', + build: + 'rm -rf .gro dist && svelte-kit sync && svelte-package && chmod +x ./dist/gro.js && npm link -f', start: 'gro dev', test: 'gro test', }, @@ -40,36 +41,37 @@ export const package_json = { '@ryanatkn/belt': '^0.20.10', chokidar: '^3.6.0', dotenv: '^16.4.5', - 'es-module-lexer': '^1.5.0', + 'es-module-lexer': '^1.5.3', kleur: '^4.1.5', mri: '^1.2.0', prettier: '^3.2.5', - 'prettier-plugin-svelte': '^3.2.2', + 'prettier-plugin-svelte': '^3.2.3', 'tiny-glob': '^0.2.9', 'ts-morph': '^22.0.0', tslib: '^2.6.2', - zod: '^3.22.4', + zod: '^3.23.8', }, - peerDependencies: {esbuild: '^0.19', svelte: '*'}, + peerDependencies: {esbuild: '^0.20', svelte: '^5.0.0-next.0'}, devDependencies: { '@changesets/changelog-git': '^0.2.0', '@changesets/types': '^6.0.0', - '@ryanatkn/eslint-config': '^0.1.0', - '@ryanatkn/fuz': '^0.92.0', + '@ryanatkn/eslint-config': '^0.1.2', + '@ryanatkn/fuz': '^0.101.2', + '@ryanatkn/moss': '^0.3.0', '@sveltejs/adapter-static': '^3.0.1', - '@sveltejs/kit': '^2.5.4', - '@sveltejs/package': '^2.3.0', - '@sveltejs/vite-plugin-svelte': '^3.0.2', + '@sveltejs/kit': '^2.5.10', + '@sveltejs/package': '^2.3.1', + '@sveltejs/vite-plugin-svelte': '^3.1.0', '@types/fs-extra': '^11.0.4', - '@types/node': '^20.11.30', - '@typescript-eslint/eslint-plugin': '^7.4.0', - '@typescript-eslint/parser': '^7.4.0', - esbuild: '^0.19.0', + '@types/node': '^20.12.12', + '@typescript-eslint/eslint-plugin': '^7.10.0', + '@typescript-eslint/parser': '^7.10.0', + esbuild: '^0.20.2', eslint: '^8.57.0', - 'eslint-plugin-svelte': '^2.35.1', - svelte: '^4.2.12', - 'svelte-check': '^3.6.8', - typescript: '^5.4.3', + 'eslint-plugin-svelte': '^2.39.0', + svelte: '^5.0.0-next.141', + 'svelte-check': '^3.7.1', + typescript: '^5.4.5', uvu: '^0.5.6', }, eslintConfig: {root: true, extends: '@ryanatkn', rules: {'no-console': 1}}, @@ -193,6 +195,10 @@ export const package_json = { './run.task.js': {default: './dist/run.task.js', types: './dist/run.task.d.ts'}, './search_fs.js': {default: './dist/search_fs.js', types: './dist/search_fs.d.ts'}, './src_json.js': {default: './dist/src_json.js', types: './dist/src_json.d.ts'}, + './svelte_helpers.js': { + default: './dist/svelte_helpers.js', + types: './dist/svelte_helpers.d.ts', + }, './sveltekit_config.js': { default: './dist/sveltekit_config.js', types: './dist/sveltekit_config.d.ts', @@ -783,6 +789,13 @@ export const src_json = { {name: 'to_src_modules', kind: 'function'}, ], }, + './svelte_helpers.js': { + path: 'svelte_helpers.ts', + declarations: [ + {name: 'SVELTE_MATCHER', kind: 'variable'}, + {name: 'SVELTE_RUNES_MATCHER', kind: 'variable'}, + ], + }, './sveltekit_config.js': { path: 'sveltekit_config.ts', declarations: [ diff --git a/src/lib/search_fs.test.ts b/src/lib/search_fs.test.ts index 9508e10646..f72d1b3bcb 100644 --- a/src/lib/search_fs.test.ts +++ b/src/lib/search_fs.test.ts @@ -35,7 +35,11 @@ test__search_fs('basic behavior', async () => { 'some_test_exports.ts', 'modules/some_test_ts.ts', 'modules/Some_Test_Svelte.svelte', + 'modules/some_test_svelte_ts.svelte.ts', + 'modules/some_test_svelte_js.svelte.js', + 'modules/some_test_server.ts', 'modules/some_test_json.json', + 'modules/some_test_js.js', 'modules/some_test_css.css', 'changelog_example.md', 'changelog_cache.json', diff --git a/src/lib/src_json.test.ts b/src/lib/src_json.test.ts index cbc994d044..c7e871ab70 100644 --- a/src/lib/src_json.test.ts +++ b/src/lib/src_json.test.ts @@ -34,26 +34,12 @@ test('to_package_modules', async () => { './fixtures/modules/some_test_ts.js': { path: 'fixtures/modules/some_test_ts.ts', declarations: [ - { - name: 'some_test_ts', - kind: 'variable', - }, - { - name: 'some_test_fn', - kind: 'function', - }, - { - name: 'Some_Test_Type', - kind: 'type', - }, - { - name: 'Some_Test_Interface', - kind: 'type', - }, - { - name: 'Some_Test_Class', - kind: 'class', - }, + {name: 'a', kind: 'variable'}, + {name: 'some_test_ts', kind: 'variable'}, + {name: 'some_test_fn', kind: 'function'}, + {name: 'Some_Test_Type', kind: 'type'}, + {name: 'Some_Test_Interface', kind: 'type'}, + {name: 'Some_Test_Class', kind: 'class'}, ], }, }, diff --git a/src/lib/svelte_helpers.ts b/src/lib/svelte_helpers.ts new file mode 100644 index 0000000000..51ffc20679 --- /dev/null +++ b/src/lib/svelte_helpers.ts @@ -0,0 +1,2 @@ +export const SVELTE_MATCHER = /\.svelte$/u; +export const SVELTE_RUNES_MATCHER = /\.svelte\.(js|ts)$/u; // TODO probably let `.svelte.` appear anywhere - https://github.com/sveltejs/svelte/issues/11536 diff --git a/src/lib/sveltekit_config.ts b/src/lib/sveltekit_config.ts index 0619edebd7..a9d5ee8145 100644 --- a/src/lib/sveltekit_config.ts +++ b/src/lib/sveltekit_config.ts @@ -1,5 +1,5 @@ import type {Config as SveltekitConfig} from '@sveltejs/kit'; -import type {CompileOptions, PreprocessorGroup} from 'svelte/compiler'; +import type {CompileOptions, PreprocessorGroup, ModuleCompileOptions} from 'svelte/compiler'; import {join} from 'node:path'; import {cwd} from 'node:process'; @@ -42,7 +42,8 @@ export interface Parsed_Sveltekit_Config { env_dir: string | undefined; private_prefix: string | undefined; public_prefix: string | undefined; - svelte_compile_options: CompileOptions | undefined; + svelte_compile_options: CompileOptions; + svelte_compile_module_options: ModuleCompileOptions; svelte_preprocessors: PreprocessorGroup | PreprocessorGroup[] | undefined; } @@ -73,7 +74,8 @@ export const init_sveltekit_config = async ( const private_prefix = kit?.env?.privatePrefix; const public_prefix = kit?.env?.publicPrefix; - const svelte_compile_options = sveltekit_config?.compilerOptions; + const svelte_compile_options = sveltekit_config?.compilerOptions ?? {}; + const svelte_compile_module_options = {}; // TODO from `kit`? or subset of `svelte_compile_options`? const svelte_preprocessors = sveltekit_config?.preprocess; return { @@ -88,6 +90,7 @@ export const init_sveltekit_config = async ( private_prefix, public_prefix, svelte_compile_options, + svelte_compile_module_options, svelte_preprocessors, }; }; diff --git a/src/lib/sync.task.ts b/src/lib/sync.task.ts index 2d603dfe74..43d6f08cbd 100644 --- a/src/lib/sync.task.ts +++ b/src/lib/sync.task.ts @@ -45,7 +45,7 @@ export const task: Task = { export const sveltekit_sync = async (): Promise => { if (!(await find_cli('svelte-kit'))) { - return; + throw new Task_Error('failed to find svelte-kit CLI - do you need to run `npm i`?'); } const result = await spawn_cli('svelte-kit', ['sync']); if (!result?.ok) { diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index f71eecf3d4..2a3a4e5cac 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,12 +1,15 @@ @@ -14,5 +17,5 @@ - + {@render children()} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ce35d5db1f..954ae23d57 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -19,7 +19,7 @@

gro

- + a pixelated green oak acorn with a glint of sun -
-
- this website is a work in progress!
-
- for now, docs are in  +
+
{#if show_detail} @@ -52,11 +50,10 @@
{/if} -
- about -
- + + {#snippet logo_header()}about{/snippet} +
+ - 🧶
diff --git a/svelte.config.js b/svelte.config.js index 9eac2db9a8..83d5bf1d36 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -4,8 +4,9 @@ import adapter from '@sveltejs/adapter-static'; /** @type {import('@sveltejs/kit').Config} */ export default { preprocess: [vitePreprocess()], - compilerOptions: {immutable: true}, - vitePlugin: {inspector: true}, // docs: https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/inspector.md + // TODO ideally this would use the default but it conflicts with ctrl+shift+c in Chrome, + // but it's strange to me that I'm resetting it to what the Mac default is + vitePlugin: {inspector: {toggleKeyCombo: 'meta-shift'}}, // docs: https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/inspector.md kit: { adapter: adapter(), alias: {$routes: 'src/routes', $fixtures: 'src/fixtures'}, diff --git a/tsconfig.json b/tsconfig.json index 5d2a268a56..97815ffe07 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,8 +2,6 @@ "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { "types": ["@sveltejs/kit"], - "moduleResolution": "bundler", - "noEmit": true, "strict": true, "useUnknownInCatchVariables": false, "exactOptionalPropertyTypes": false,