From 2851f1094c03d696682efb4f3b321ef27e29e88c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:49:19 +0100 Subject: [PATCH 1/8] fix(deps): update dependency svelte to v5.51.5 [security] (#15581) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre --- .changeset/jolly-dots-shop.md | 5 + examples/framework-multiple/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/ssr/package.json | 2 +- .../e2e/fixtures/client-only/package.json | 2 +- .../astro/e2e/fixtures/errors/package.json | 2 +- .../fixtures/multiple-frameworks/package.json | 2 +- .../fixtures/nested-in-preact/package.json | 2 +- .../e2e/fixtures/nested-in-react/package.json | 2 +- .../e2e/fixtures/nested-in-solid/package.json | 2 +- .../fixtures/nested-in-svelte/package.json | 2 +- .../e2e/fixtures/nested-in-vue/package.json | 2 +- .../fixtures/nested-recursive/package.json | 2 +- .../fixtures/svelte-component/package.json | 2 +- .../fixtures/view-transitions/package.json | 2 +- .../astro/test/fixtures/0-css/package.json | 2 +- .../alias-tsconfig-baseurl-only/package.json | 2 +- .../test/fixtures/alias-tsconfig/package.json | 2 +- .../astro/test/fixtures/alias/package.json | 2 +- .../test/fixtures/astro-children/package.json | 2 +- .../fixtures/astro-client-only/package.json | 2 +- .../test/fixtures/astro-dynamic/package.json | 2 +- .../fixtures/astro-slots-nested/package.json | 2 +- .../fixtures/component-library/package.json | 2 +- .../css-dangling-references/package.json | 2 +- .../astro/test/fixtures/fetch/package.json | 2 +- packages/astro/test/fixtures/jsx/package.json | 2 +- .../astro/test/fixtures/postcss/package.json | 2 +- .../server-islands/hybrid/package.json | 2 +- .../fixtures/server-islands/ssr/package.json | 2 +- .../test/fixtures/slots-svelte/package.json | 2 +- .../fixtures/svelte-component/package.json | 2 +- .../vue-with-multi-renderer/package.json | 2 +- .../test/fixtures/with-svelte/package.json | 2 +- packages/integrations/svelte/package.json | 2 +- .../fixtures/async-rendering/package.json | 2 +- .../conditional-rendering/package.json | 2 +- .../test/fixtures/prop-types/package.json | 2 +- .../language-server/test/package.json | 2 +- pnpm-lock.yaml | 249 +++++++++--------- 40 files changed, 168 insertions(+), 162 deletions(-) create mode 100644 .changeset/jolly-dots-shop.md diff --git a/.changeset/jolly-dots-shop.md b/.changeset/jolly-dots-shop.md new file mode 100644 index 000000000000..c7aa86fc6816 --- /dev/null +++ b/.changeset/jolly-dots-shop.md @@ -0,0 +1,5 @@ +--- +'@astrojs/svelte': patch +--- + +Updates `svelte` to v5.51.5 diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 42f8ebb6bf66..de915f06e41e 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -25,7 +25,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index d07648ee8997..f00a3ddba863 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -15,6 +15,6 @@ "dependencies": { "@astrojs/svelte": "^8.0.0-beta.2", "astro": "^6.0.0-beta.14", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index cb928673d416..10edbd3198b8 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -17,6 +17,6 @@ "@astrojs/node": "^10.0.0-beta.4", "@astrojs/svelte": "^8.0.0-beta.2", "astro": "^6.0.0-beta.14", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/e2e/fixtures/client-only/package.json b/packages/astro/e2e/fixtures/client-only/package.json index 2b5eab5e7a4e..c6ad3b2bb1ce 100644 --- a/packages/astro/e2e/fixtures/client-only/package.json +++ b/packages/astro/e2e/fixtures/client-only/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/errors/package.json b/packages/astro/e2e/fixtures/errors/package.json index 5313c72e36e1..9f10228c4e73 100644 --- a/packages/astro/e2e/fixtures/errors/package.json +++ b/packages/astro/e2e/fixtures/errors/package.json @@ -14,7 +14,7 @@ "react-dom": "^18.3.1", "sass": "^1.97.3", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/multiple-frameworks/package.json b/packages/astro/e2e/fixtures/multiple-frameworks/package.json index ad20cf5eeab4..d072aba1b59f 100644 --- a/packages/astro/e2e/fixtures/multiple-frameworks/package.json +++ b/packages/astro/e2e/fixtures/multiple-frameworks/package.json @@ -17,7 +17,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/nested-in-preact/package.json b/packages/astro/e2e/fixtures/nested-in-preact/package.json index 068aec903a7f..3872a02b82b0 100644 --- a/packages/astro/e2e/fixtures/nested-in-preact/package.json +++ b/packages/astro/e2e/fixtures/nested-in-preact/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/nested-in-react/package.json b/packages/astro/e2e/fixtures/nested-in-react/package.json index 7ba9195043c6..ea68b9dda500 100644 --- a/packages/astro/e2e/fixtures/nested-in-react/package.json +++ b/packages/astro/e2e/fixtures/nested-in-react/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/nested-in-solid/package.json b/packages/astro/e2e/fixtures/nested-in-solid/package.json index 76f234c7a6db..b119a2ab4c4b 100644 --- a/packages/astro/e2e/fixtures/nested-in-solid/package.json +++ b/packages/astro/e2e/fixtures/nested-in-solid/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/nested-in-svelte/package.json b/packages/astro/e2e/fixtures/nested-in-svelte/package.json index 325ee50908be..fff8b2613f8b 100644 --- a/packages/astro/e2e/fixtures/nested-in-svelte/package.json +++ b/packages/astro/e2e/fixtures/nested-in-svelte/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/nested-in-vue/package.json b/packages/astro/e2e/fixtures/nested-in-vue/package.json index f342f7641c6c..209a74e077b9 100644 --- a/packages/astro/e2e/fixtures/nested-in-vue/package.json +++ b/packages/astro/e2e/fixtures/nested-in-vue/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/e2e/fixtures/nested-recursive/package.json b/packages/astro/e2e/fixtures/nested-recursive/package.json index 974a1e8398b7..8141e0cea63c 100644 --- a/packages/astro/e2e/fixtures/nested-recursive/package.json +++ b/packages/astro/e2e/fixtures/nested-recursive/package.json @@ -15,7 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" }, "scripts": { diff --git a/packages/astro/e2e/fixtures/svelte-component/package.json b/packages/astro/e2e/fixtures/svelte-component/package.json index 74442ab80682..17fe94c9dca3 100644 --- a/packages/astro/e2e/fixtures/svelte-component/package.json +++ b/packages/astro/e2e/fixtures/svelte-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/e2e/fixtures/view-transitions/package.json b/packages/astro/e2e/fixtures/view-transitions/package.json index 7f5cb4c201fc..d1643a15ba71 100644 --- a/packages/astro/e2e/fixtures/view-transitions/package.json +++ b/packages/astro/e2e/fixtures/view-transitions/package.json @@ -12,7 +12,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/test/fixtures/0-css/package.json b/packages/astro/test/fixtures/0-css/package.json index 0287cc2e35a6..9d6cf2319f37 100644 --- a/packages/astro/test/fixtures/0-css/package.json +++ b/packages/astro/test/fixtures/0-css/package.json @@ -9,7 +9,7 @@ "astro": "workspace:*", "react": "^18.3.1", "react-dom": "^18.3.1", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json b/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json index a1bdf2f29cd7..4b99e162b469 100644 --- a/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json +++ b/packages/astro/test/fixtures/alias-tsconfig-baseurl-only/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/alias-tsconfig/package.json b/packages/astro/test/fixtures/alias-tsconfig/package.json index 25fbb46048cc..0600019cdb29 100644 --- a/packages/astro/test/fixtures/alias-tsconfig/package.json +++ b/packages/astro/test/fixtures/alias-tsconfig/package.json @@ -6,6 +6,6 @@ "@astrojs/svelte": "workspace:*", "@test/namespace-package": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/alias/package.json b/packages/astro/test/fixtures/alias/package.json index df1da2ed17ea..6db7f0afb555 100644 --- a/packages/astro/test/fixtures/alias/package.json +++ b/packages/astro/test/fixtures/alias/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/astro-children/package.json b/packages/astro/test/fixtures/astro-children/package.json index 4ba99302492f..7c0dff8dba68 100644 --- a/packages/astro/test/fixtures/astro-children/package.json +++ b/packages/astro/test/fixtures/astro-children/package.json @@ -8,7 +8,7 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "preact": "^10.28.3", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/test/fixtures/astro-client-only/package.json b/packages/astro/test/fixtures/astro-client-only/package.json index d07669535683..49022bd66008 100644 --- a/packages/astro/test/fixtures/astro-client-only/package.json +++ b/packages/astro/test/fixtures/astro-client-only/package.json @@ -9,6 +9,6 @@ "astro": "workspace:*", "react": "^18.3.1", "react-dom": "^18.3.1", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/astro-dynamic/package.json b/packages/astro/test/fixtures/astro-dynamic/package.json index 608fb8082ff6..eeac27efe3bf 100644 --- a/packages/astro/test/fixtures/astro-dynamic/package.json +++ b/packages/astro/test/fixtures/astro-dynamic/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*", "react": "^18.3.1", "react-dom": "^18.3.1", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/astro-slots-nested/package.json b/packages/astro/test/fixtures/astro-slots-nested/package.json index 437679b2e44e..5cc80a61928a 100644 --- a/packages/astro/test/fixtures/astro-slots-nested/package.json +++ b/packages/astro/test/fixtures/astro-slots-nested/package.json @@ -13,7 +13,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/test/fixtures/component-library/package.json b/packages/astro/test/fixtures/component-library/package.json index 26f2d061b146..741bffcb966a 100644 --- a/packages/astro/test/fixtures/component-library/package.json +++ b/packages/astro/test/fixtures/component-library/package.json @@ -11,6 +11,6 @@ "preact": "^10.28.3", "react": "^18.3.1", "react-dom": "^18.3.1", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/css-dangling-references/package.json b/packages/astro/test/fixtures/css-dangling-references/package.json index e299cf9ae95a..629a7832acfa 100644 --- a/packages/astro/test/fixtures/css-dangling-references/package.json +++ b/packages/astro/test/fixtures/css-dangling-references/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/fetch/package.json b/packages/astro/test/fixtures/fetch/package.json index e09f1a2672bb..73bd5e056478 100644 --- a/packages/astro/test/fixtures/fetch/package.json +++ b/packages/astro/test/fixtures/fetch/package.json @@ -8,7 +8,7 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "preact": "^10.28.3", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/test/fixtures/jsx/package.json b/packages/astro/test/fixtures/jsx/package.json index 3570e8ef431b..224c508f53ae 100644 --- a/packages/astro/test/fixtures/jsx/package.json +++ b/packages/astro/test/fixtures/jsx/package.json @@ -16,7 +16,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json index 3dc53b9b879b..753f201c8340 100644 --- a/packages/astro/test/fixtures/postcss/package.json +++ b/packages/astro/test/fixtures/postcss/package.json @@ -10,7 +10,7 @@ "autoprefixer": "^10.4.24", "postcss": "^8.5.6", "solid-js": "^1.9.11", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" }, "devDependencies": { diff --git a/packages/astro/test/fixtures/server-islands/hybrid/package.json b/packages/astro/test/fixtures/server-islands/hybrid/package.json index 1384a37d530c..f7cea6098c11 100644 --- a/packages/astro/test/fixtures/server-islands/hybrid/package.json +++ b/packages/astro/test/fixtures/server-islands/hybrid/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/server-islands/ssr/package.json b/packages/astro/test/fixtures/server-islands/ssr/package.json index 3b601121b261..ae3f14d7fc09 100644 --- a/packages/astro/test/fixtures/server-islands/ssr/package.json +++ b/packages/astro/test/fixtures/server-islands/ssr/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/slots-svelte/package.json b/packages/astro/test/fixtures/slots-svelte/package.json index 8500b9875040..c775f2bf0208 100644 --- a/packages/astro/test/fixtures/slots-svelte/package.json +++ b/packages/astro/test/fixtures/slots-svelte/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/svelte-component/package.json b/packages/astro/test/fixtures/svelte-component/package.json index 20a0ac768713..de9176ccd0b5 100644 --- a/packages/astro/test/fixtures/svelte-component/package.json +++ b/packages/astro/test/fixtures/svelte-component/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/astro/test/fixtures/vue-with-multi-renderer/package.json b/packages/astro/test/fixtures/vue-with-multi-renderer/package.json index e8dcc15c670a..7551b580b3e5 100644 --- a/packages/astro/test/fixtures/vue-with-multi-renderer/package.json +++ b/packages/astro/test/fixtures/vue-with-multi-renderer/package.json @@ -6,7 +6,7 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3", + "svelte": "^5.51.5", "vue": "^3.5.28" } } diff --git a/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json b/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json index f6699b54da28..21c589263f15 100644 --- a/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json +++ b/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json @@ -6,6 +6,6 @@ "@astrojs/cloudflare": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index cd881dcbe12c..5c10dc0d1efc 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -46,7 +46,7 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.2.0", - "svelte": "^5.50.3" + "svelte": "^5.51.5" }, "peerDependencies": { "astro": "^6.0.0-alpha.0", diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/package.json b/packages/integrations/svelte/test/fixtures/async-rendering/package.json index 0e290e477ac1..9f5d83a7171d 100644 --- a/packages/integrations/svelte/test/fixtures/async-rendering/package.json +++ b/packages/integrations/svelte/test/fixtures/async-rendering/package.json @@ -11,6 +11,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/integrations/svelte/test/fixtures/conditional-rendering/package.json b/packages/integrations/svelte/test/fixtures/conditional-rendering/package.json index 31aa9310b0e7..57953d54ab09 100644 --- a/packages/integrations/svelte/test/fixtures/conditional-rendering/package.json +++ b/packages/integrations/svelte/test/fixtures/conditional-rendering/package.json @@ -11,6 +11,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/integrations/svelte/test/fixtures/prop-types/package.json b/packages/integrations/svelte/test/fixtures/prop-types/package.json index e3efd2f9ed6c..a45296acb301 100644 --- a/packages/integrations/svelte/test/fixtures/prop-types/package.json +++ b/packages/integrations/svelte/test/fixtures/prop-types/package.json @@ -11,6 +11,6 @@ "dependencies": { "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" } } diff --git a/packages/language-tools/language-server/test/package.json b/packages/language-tools/language-server/test/package.json index d275d6b50205..3606565b5d65 100644 --- a/packages/language-tools/language-server/test/package.json +++ b/packages/language-tools/language-server/test/package.json @@ -6,7 +6,7 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "svelte": "^5.50.3" + "svelte": "^5.51.5" }, "devDependencies": { "tinyglobby": "^0.2.15" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e47412bde737..3f343245e25b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,8 +287,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -350,8 +350,8 @@ importers: specifier: ^6.0.0-beta.14 version: link:../../packages/astro svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 examples/framework-vue: dependencies: @@ -404,8 +404,8 @@ importers: specifier: ^6.0.0-beta.14 version: link:../../packages/astro svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 examples/starlog: dependencies: @@ -934,8 +934,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1132,8 +1132,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1189,8 +1189,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1245,8 +1245,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1285,8 +1285,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1325,8 +1325,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1365,8 +1365,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1405,8 +1405,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1445,8 +1445,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1641,8 +1641,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1701,8 +1701,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1845,8 +1845,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1866,8 +1866,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1881,8 +1881,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1893,8 +1893,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: dependencies: @@ -2039,8 +2039,8 @@ importers: specifier: ^10.28.3 version: 10.28.3 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -2072,8 +2072,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2164,8 +2164,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/astro-env: dependencies: @@ -2506,8 +2506,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -2596,8 +2596,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/component-library-shared: dependencies: @@ -2992,8 +2992,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/css-deduplication: dependencies: @@ -3307,8 +3307,8 @@ importers: specifier: ^10.28.3 version: 10.28.3 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -3568,8 +3568,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -3783,8 +3783,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -4049,8 +4049,8 @@ importers: specifier: workspace:* version: link:../../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/server-islands/ssr: dependencies: @@ -4064,8 +4064,8 @@ importers: specifier: workspace:* version: link:../../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/sessions: dependencies: @@ -4139,8 +4139,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/slots-vue: dependencies: @@ -4441,8 +4441,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/astro/test/fixtures/svg-deduplication: dependencies: @@ -4570,8 +4570,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -5120,7 +5120,7 @@ importers: version: 0.34.5 svelte: specifier: ^5.50.3 - version: 5.50.3 + version: 5.51.5 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -5161,8 +5161,8 @@ importers: specifier: workspace:* version: link:../../../../../astro svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/integrations/cloudflare/test/fixtures/with-vue: dependencies: @@ -5418,7 +5418,7 @@ importers: version: 3.1.1 acorn: specifier: ^8.15.0 - version: 8.15.0 + version: 8.16.0 es-module-lexer: specifier: ^2.0.0 version: 2.0.0 @@ -6195,10 +6195,10 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) svelte2tsx: specifier: ^0.7.47 - version: 0.7.47(svelte@5.50.3)(typescript@5.9.3) + version: 0.7.47(svelte@5.51.5)(typescript@5.9.3) vite: specifier: ^7.3.1 version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) @@ -6213,8 +6213,8 @@ importers: specifier: 1.2.0 version: 1.2.0 svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/integrations/svelte/test/fixtures/async-rendering: dependencies: @@ -6225,8 +6225,8 @@ importers: specifier: workspace:* version: link:../../../../../astro svelte: - specifier: 5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/integrations/svelte/test/fixtures/conditional-rendering: dependencies: @@ -6237,8 +6237,8 @@ importers: specifier: workspace:* version: link:../../../../../astro svelte: - specifier: 5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/integrations/svelte/test/fixtures/prop-types: dependencies: @@ -6249,8 +6249,8 @@ importers: specifier: workspace:* version: link:../../../../../astro svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 packages/integrations/vercel: dependencies: @@ -6259,7 +6259,7 @@ importers: version: link:../../internal-helpers '@vercel/analytics': specifier: ^1.6.1 - version: 1.6.1(react@19.2.4)(svelte@5.50.3)(vue@3.5.28(typescript@5.9.3)) + version: 1.6.1(react@19.2.4)(svelte@5.51.5)(vue@3.5.28(typescript@5.9.3)) '@vercel/functions': specifier: ^3.4.2 version: 3.4.2 @@ -6730,8 +6730,8 @@ importers: specifier: workspace:* version: link:../../../astro svelte: - specifier: ^5.50.3 - version: 5.50.3 + specifier: ^5.51.5 + version: 5.51.5 devDependencies: tinyglobby: specifier: ^0.2.15 @@ -10701,8 +10701,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true @@ -15052,8 +15052,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.50.3: - resolution: {integrity: sha512-5JCO8P/cFlwyfi1LeZ9uppMZvuaHWygyZmqxyKOIqbV3PoHKaddvV1C6njL/InpDXplNYZnAVEbn8mLslycBxQ==} + svelte@5.51.5: + resolution: {integrity: sha512-/4tR5cLsWOgH3wnNRXnFoWaJlwPGbJanZPSKSD6nHM2y01dvXeEF4Nx7jevoZ+UpJpkIHh6mY2tqDncuI4GHng==} engines: {node: '>=18'} svgo@3.3.2: @@ -16306,7 +16306,7 @@ snapshots: dependencies: '@astrojs/markdown-remark': 6.3.10 '@mdx-js/mdx': 3.1.1 - acorn: 8.15.0 + acorn: 8.16.0 astro: link:packages/astro es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 @@ -18113,7 +18113,7 @@ snapshots: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 - acorn: 8.15.0 + acorn: 8.16.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -18122,7 +18122,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.15.0) + recma-jsx: 1.0.1(acorn@8.16.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.1 @@ -19050,24 +19050,24 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@sveltejs/acorn-typescript@1.0.9(acorn@8.15.0)': + '@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)': dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) obug: 2.1.1 - svelte: 5.50.3 + svelte: 5.51.5 vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.50.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 - svelte: 5.50.3 + svelte: 5.51.5 vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) @@ -19494,10 +19494,10 @@ snapshots: dependencies: valibot: 1.2.0(typescript@5.9.3) - '@vercel/analytics@1.6.1(react@19.2.4)(svelte@5.50.3)(vue@3.5.28(typescript@5.9.3))': + '@vercel/analytics@1.6.1(react@19.2.4)(svelte@5.51.5)(vue@3.5.28(typescript@5.9.3))': optionalDependencies: react: 19.2.4 - svelte: 5.50.3 + svelte: 5.51.5 vue: 3.5.28(typescript@5.9.3) '@vercel/functions@3.4.2': @@ -19508,8 +19508,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 2.0.3 '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -19527,8 +19527,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 2.0.3 '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -20092,15 +20092,15 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn-import-attributes@1.9.5(acorn@8.15.0): + acorn-import-attributes@1.9.5(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn@8.15.0: {} + acorn@8.16.0: {} agent-base@7.1.4: {} @@ -20214,7 +20214,7 @@ snapshots: astro-auto-import@0.4.6(astro@packages+astro): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 astro: link:packages/astro astro-embed@0.8.0(astro@packages+astro): @@ -21119,7 +21119,7 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.15.0 + acorn: 8.16.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 @@ -21355,8 +21355,8 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -22161,8 +22161,8 @@ snapshots: import-in-the-middle@1.15.0: dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 @@ -23174,8 +23174,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -23394,7 +23394,7 @@ snapshots: mlly@1.8.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 @@ -24403,10 +24403,10 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.1(acorn@8.15.0): + recma-jsx@1.0.1(acorn@8.16.0): dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -25208,20 +25208,21 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.47(svelte@5.50.3)(typescript@5.9.3): + svelte2tsx@0.7.47(svelte@5.51.5)(typescript@5.9.3): dependencies: dedent-js: 1.0.1 scule: 1.3.0 - svelte: 5.50.3 + svelte: 5.51.5 typescript: 5.9.3 - svelte@5.50.3: + svelte@5.51.5: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 - '@sveltejs/acorn-typescript': 1.0.9(acorn@8.15.0) + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) '@types/estree': 1.0.8 - acorn: 8.15.0 + '@types/trusted-types': 2.0.7 + acorn: 8.16.0 aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 From 1cc62dc5fec874de620a597492be036be26505f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:35:18 +0100 Subject: [PATCH 2/8] fix(deps): update all non-major dependencies (#15612) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Lefebvre --- examples/framework-multiple/package.json | 4 +- examples/framework-preact/package.json | 4 +- examples/framework-svelte/package.json | 2 +- examples/ssr/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 4 +- package.json | 10 +- packages/astro-rss/package.json | 2 +- .../render-with-components/package.json | 2 +- packages/telemetry/package.json | 2 +- pnpm-lock.yaml | 1060 +++++++++-------- 12 files changed, 557 insertions(+), 539 deletions(-) diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index de915f06e41e..f1149ed0c97d 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -21,11 +21,11 @@ "@types/react": "^18.3.28", "@types/react-dom": "^18.3.7", "astro": "^6.0.0-beta.14", - "preact": "^10.28.3", + "preact": "^10.28.4", "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.11", - "svelte": "^5.51.5", + "svelte": "^5.53.0", "vue": "^3.5.28" } } diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 1076c195ac9d..b1445f088b1a 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -14,8 +14,8 @@ }, "dependencies": { "@astrojs/preact": "^5.0.0-beta.3", - "@preact/signals": "^2.7.1", + "@preact/signals": "^2.8.1", "astro": "^6.0.0-beta.14", - "preact": "^10.28.3" + "preact": "^10.28.4" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index f00a3ddba863..f348c4df845b 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -15,6 +15,6 @@ "dependencies": { "@astrojs/svelte": "^8.0.0-beta.2", "astro": "^6.0.0-beta.14", - "svelte": "^5.51.5" + "svelte": "^5.53.0" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 10edbd3198b8..21d1650d337d 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -17,6 +17,6 @@ "@astrojs/node": "^10.0.0-beta.4", "@astrojs/svelte": "^8.0.0-beta.2", "astro": "^6.0.0-beta.14", - "svelte": "^5.51.5" + "svelte": "^5.53.0" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 796acb9d750a..8dee61e8cc2f 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -16,6 +16,6 @@ "@astrojs/mdx": "^5.0.0-beta.8", "@astrojs/preact": "^5.0.0-beta.3", "astro": "^6.0.0-beta.14", - "preact": "^10.28.3" + "preact": "^10.28.4" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 26d82f1144b9..37b6a482d7ff 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -17,6 +17,6 @@ "@nanostores/preact": "^1.0.0", "astro": "^6.0.0-beta.14", "nanostores": "^1.1.0", - "preact": "^10.28.3" + "preact": "^10.28.4" } } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 765ac7f9fe90..5fbf665cf48c 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@astrojs/mdx": "^5.0.0-beta.8", - "@tailwindcss/vite": "^4.1.18", + "@tailwindcss/vite": "^4.2.0", "@types/canvas-confetti": "^1.9.0", "astro": "^6.0.0-beta.14", "canvas-confetti": "^1.9.4", - "tailwindcss": "^4.1.18" + "tailwindcss": "^4.2.0" } } diff --git a/package.json b/package.json index 0c0d6ccd5e52..af011e8f420f 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "engines": { "node": ">=22.12.0" }, - "packageManager": "pnpm@10.29.3", + "packageManager": "pnpm@10.30.1", "dependencies": { "astro-benchmark": "workspace:*" }, @@ -64,8 +64,8 @@ "@biomejs/biome": "2.4.2", "@changesets/changelog-github": "^0.5.2", "@changesets/cli": "^2.29.8", - "@flue/cli": "^0.0.32", - "@flue/client": "^0.0.18", + "@flue/cli": "^0.0.44", + "@flue/client": "^0.0.27", "@types/node": "^18.19.115", "esbuild": "0.25.5", "eslint": "^9.39.2", @@ -76,9 +76,9 @@ "prettier-plugin-astro": "^0.14.1", "publint": "^0.3.17", "tinyglobby": "^0.2.15", - "turbo": "^2.8.7", + "turbo": "^2.8.10", "typescript": "~5.9.3", - "typescript-eslint": "^8.55.0", + "typescript-eslint": "^8.56.0", "valibot": "^1.2.0" } } diff --git a/packages/astro-rss/package.json b/packages/astro-rss/package.json index cbf0e7c1a952..0065c0894240 100644 --- a/packages/astro-rss/package.json +++ b/packages/astro-rss/package.json @@ -32,7 +32,7 @@ "xml2js": "0.6.2" }, "dependencies": { - "fast-xml-parser": "^5.3.6", + "fast-xml-parser": "^5.3.7", "piccolore": "^0.1.3", "zod": "^4.3.6" } diff --git a/packages/integrations/markdoc/test/fixtures/render-with-components/package.json b/packages/integrations/markdoc/test/fixtures/render-with-components/package.json index db05e1a2092f..1bf5cf8872f8 100644 --- a/packages/integrations/markdoc/test/fixtures/render-with-components/package.json +++ b/packages/integrations/markdoc/test/fixtures/render-with-components/package.json @@ -6,6 +6,6 @@ "@astrojs/markdoc": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.28.3" + "preact": "^10.28.4" } } diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index e68ce7e50783..dfaa652d6019 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -33,7 +33,7 @@ "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^4.0.0", - "is-wsl": "^3.1.0", + "is-wsl": "^3.1.1", "which-pm-runs": "^1.1.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f343245e25b..11e30a5c919c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,11 +25,11 @@ importers: specifier: ^2.29.8 version: 2.29.8(@types/node@18.19.130) '@flue/cli': - specifier: ^0.0.32 - version: 0.0.32(typescript@5.9.3) + specifier: ^0.0.44 + version: 0.0.44(typescript@5.9.3) '@flue/client': - specifier: ^0.0.18 - version: 0.0.18(typescript@5.9.3) + specifier: ^0.0.27 + version: 0.0.27(typescript@5.9.3) '@types/node': specifier: ^18.19.115 version: 18.19.130 @@ -61,14 +61,14 @@ importers: specifier: ^0.2.15 version: 0.2.15 turbo: - specifier: ^2.8.7 - version: 2.8.7 + specifier: ^2.8.10 + version: 2.8.10 typescript: specifier: ~5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.55.0 - version: 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.56.0 + version: 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) valibot: specifier: ^1.2.0 version: 1.2.0(typescript@5.9.3) @@ -114,10 +114,10 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: 5.2.0 - version: 5.2.0(tinybench@2.9.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.2.0(tinybench@2.9.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) benchmark/packages/adapter: dependencies: @@ -224,7 +224,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@types/react': specifier: ^18.3.28 @@ -275,8 +275,8 @@ importers: specifier: ^6.0.0-beta.14 version: link:../../packages/astro preact: - specifier: ^10.28.3 - version: 10.28.3 + specifier: ^10.28.4 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -287,8 +287,8 @@ importers: specifier: ^1.9.11 version: 1.9.11 svelte: - specifier: ^5.51.5 - version: 5.51.5 + specifier: ^5.53.0 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -299,14 +299,14 @@ importers: specifier: ^5.0.0-beta.3 version: link:../../packages/integrations/preact '@preact/signals': - specifier: ^2.7.1 - version: 2.7.1(preact@10.28.3) + specifier: ^2.8.1 + version: 2.8.1(preact@10.28.4) astro: specifier: ^6.0.0-beta.14 version: link:../../packages/astro preact: - specifier: ^10.28.3 - version: 10.28.3 + specifier: ^10.28.4 + version: 10.28.4 examples/framework-react: dependencies: @@ -350,8 +350,8 @@ importers: specifier: ^6.0.0-beta.14 version: link:../../packages/astro svelte: - specifier: ^5.51.5 - version: 5.51.5 + specifier: ^5.53.0 + version: 5.53.0 examples/framework-vue: dependencies: @@ -404,8 +404,8 @@ importers: specifier: ^6.0.0-beta.14 version: link:../../packages/astro svelte: - specifier: ^5.51.5 - version: 5.51.5 + specifier: ^5.53.0 + version: 5.53.0 examples/starlog: dependencies: @@ -449,8 +449,8 @@ importers: specifier: ^6.0.0-beta.14 version: link:../../packages/astro preact: - specifier: ^10.28.3 - version: 10.28.3 + specifier: ^10.28.4 + version: 10.28.4 examples/with-nanostores: dependencies: @@ -459,7 +459,7 @@ importers: version: link:../../packages/integrations/preact '@nanostores/preact': specifier: ^1.0.0 - version: 1.0.0(nanostores@1.1.0)(preact@10.28.3) + version: 1.0.0(nanostores@1.1.0)(preact@10.28.4) astro: specifier: ^6.0.0-beta.14 version: link:../../packages/astro @@ -467,8 +467,8 @@ importers: specifier: ^1.1.0 version: 1.1.0 preact: - specifier: ^10.28.3 - version: 10.28.3 + specifier: ^10.28.4 + version: 10.28.4 examples/with-tailwindcss: dependencies: @@ -476,8 +476,8 @@ importers: specifier: ^5.0.0-beta.8 version: link:../../packages/integrations/mdx '@tailwindcss/vite': - specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^4.2.0 + version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@types/canvas-confetti': specifier: ^1.9.0 version: 1.9.0 @@ -488,8 +488,8 @@ importers: specifier: ^1.9.4 version: 1.9.4 tailwindcss: - specifier: ^4.1.18 - version: 4.1.18 + specifier: ^4.2.0 + version: 4.2.0 examples/with-vitest: dependencies: @@ -498,7 +498,7 @@ importers: version: link:../../packages/astro vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/astro: dependencies: @@ -657,10 +657,10 @@ importers: version: 6.0.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vitefu: specifier: ^1.1.1 - version: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) xxhash-wasm: specifier: ^1.1.0 version: 1.1.0 @@ -763,7 +763,7 @@ importers: version: 11.0.5 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: sharp: specifier: ^0.34.0 @@ -785,8 +785,8 @@ importers: packages/astro-rss: dependencies: fast-xml-parser: - specifier: ^5.3.6 - version: 5.3.6 + specifier: ^5.3.7 + version: 5.3.7 piccolore: specifier: ^0.1.3 version: 0.1.3 @@ -889,7 +889,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/astro-envs: dependencies: @@ -923,7 +923,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -935,7 +935,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -987,7 +987,7 @@ importers: version: 18.3.7(@types/react@18.3.28) '@vitejs/plugin-vue': specifier: ^6.0.4 - version: 6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) astro: specifier: workspace:* version: link:../../.. @@ -996,7 +996,7 @@ importers: version: 2.1.1 preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1073,7 +1073,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/error-cyclic: dependencies: @@ -1085,7 +1085,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/error-sass: dependencies: @@ -1118,7 +1118,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1133,7 +1133,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1157,7 +1157,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/i18n: dependencies: @@ -1178,7 +1178,7 @@ importers: version: 3.3.2 preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1190,7 +1190,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1218,7 +1218,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -1234,7 +1234,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1246,7 +1246,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1274,7 +1274,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1286,7 +1286,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1314,7 +1314,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1326,7 +1326,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1354,7 +1354,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1366,7 +1366,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1394,7 +1394,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1406,7 +1406,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1434,7 +1434,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -1446,7 +1446,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1502,7 +1502,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/preact-component: dependencies: @@ -1517,7 +1517,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/preact-lazy-component: dependencies: @@ -1532,7 +1532,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/e2e/fixtures/prefetch: dependencies: @@ -1642,19 +1642,19 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/e2e/fixtures/tailwindcss: dependencies: '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.18 - version: 4.1.18 + version: 4.2.0 packages/astro/e2e/fixtures/ts-resolution: dependencies: @@ -1702,7 +1702,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1846,7 +1846,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -1867,7 +1867,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1882,7 +1882,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1894,7 +1894,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: dependencies: @@ -1989,7 +1989,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/astro-check-errors: dependencies: @@ -2037,10 +2037,10 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -2073,7 +2073,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2165,7 +2165,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/astro-env: dependencies: @@ -2219,7 +2219,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/astro-external-files: dependencies: @@ -2237,7 +2237,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/astro-generator: dependencies: @@ -2441,13 +2441,13 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.18 - version: 4.1.18 + version: 4.2.0 packages/astro/test/fixtures/astro-sitemap-rss: dependencies: @@ -2465,7 +2465,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/astro-slots: dependencies: @@ -2495,7 +2495,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -2507,7 +2507,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -2522,7 +2522,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/build-assets: dependencies: @@ -2534,7 +2534,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/build-concurrency: dependencies: @@ -2588,7 +2588,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -2597,13 +2597,13 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/component-library-shared: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -2787,7 +2787,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/content-layer-remark-plugins: dependencies: @@ -2993,7 +2993,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/css-deduplication: dependencies: @@ -3257,7 +3257,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/error-bad-js: dependencies: @@ -3305,10 +3305,10 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -3413,7 +3413,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/i18n-double-prefix: dependencies: @@ -3557,7 +3557,7 @@ importers: dependencies: preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -3569,7 +3569,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -3678,13 +3678,13 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.18 - version: 4.1.18 + version: 4.2.0 packages/astro/test/fixtures/middleware-virtual: dependencies: @@ -3784,7 +3784,7 @@ importers: version: 1.9.11 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -3806,7 +3806,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/preact-compat-component/packages/react-lib: dependencies: @@ -3821,13 +3821,13 @@ importers: version: link:../../../../integrations/preact '@preact/signals': specifier: 2.7.1 - version: 2.7.1(preact@10.28.3) + version: 2.7.1(preact@10.28.4) astro: specifier: workspace:* version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/prerender-conflict-dynamic-dynamic: dependencies: @@ -3906,7 +3906,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/remote-css: dependencies: @@ -4050,7 +4050,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/server-islands/ssr: dependencies: @@ -4065,7 +4065,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/sessions: dependencies: @@ -4092,7 +4092,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/slots-react: dependencies: @@ -4140,7 +4140,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/slots-vue: dependencies: @@ -4251,7 +4251,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/ssr-markdown: dependencies: @@ -4326,7 +4326,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/ssr-split-manifest: dependencies: @@ -4356,7 +4356,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/astro/test/fixtures/static-build-code-component: dependencies: @@ -4383,7 +4383,7 @@ importers: version: link:../../.. preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 react: specifier: ^18.3.1 version: 18.3.1 @@ -4442,7 +4442,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/astro/test/fixtures/svg-deduplication: dependencies: @@ -4457,13 +4457,13 @@ importers: version: link:../../../../integrations/mdx '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.18 - version: 4.1.18 + version: 4.2.0 packages/astro/test/fixtures/third-party-astro: dependencies: @@ -4532,7 +4532,7 @@ importers: version: link:../../.. vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/astro/test/fixtures/vue-component: dependencies: @@ -4571,7 +4571,7 @@ importers: version: link:../../.. svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -4674,7 +4674,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/db/test/fixtures/basics: dependencies: @@ -4830,7 +4830,7 @@ importers: version: link:../../../scripts vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/integrations/alpinejs/test/fixtures/basics: dependencies: @@ -4887,7 +4887,7 @@ importers: version: link:../../underscore-redirects '@cloudflare/vite-plugin': specifier: ^1.25.0 - version: 1.25.0(@cloudflare/workers-types@4.20260213.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260212.0) + version: 1.25.0(@cloudflare/workers-types@4.20260213.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260212.0) piccolore: specifier: ^0.1.3 version: 0.1.3 @@ -4896,7 +4896,7 @@ importers: version: 0.2.15 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@cloudflare/workers-types': specifier: ^4.20260213.0 @@ -4998,13 +4998,13 @@ importers: version: link:../../.. '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: workspace:* version: link:../../../../../astro tailwindcss: specifier: ^4.1.18 - version: 4.1.18 + version: 4.2.0 packages/integrations/cloudflare/test/fixtures/routing-priority: dependencies: @@ -5105,7 +5105,7 @@ importers: version: 18.3.7(@types/react@18.3.28) '@vitejs/plugin-vue': specifier: ^6.0.4 - version: 6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) astro: specifier: workspace:* version: link:../../../../../astro @@ -5120,7 +5120,7 @@ importers: version: 0.34.5 svelte: specifier: ^5.50.3 - version: 5.51.5 + version: 5.53.0 vue: specifier: ^3.5.28 version: 3.5.28(typescript@5.9.3) @@ -5141,7 +5141,7 @@ importers: version: link:../../.. '@astrojs/solid-js': specifier: ^5.1.3 - version: 5.1.3(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(solid-js@1.9.11)(tsx@4.21.0)(yaml@2.8.2) + version: 5.1.3(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(solid-js@1.9.11)(tsx@4.21.0)(yaml@2.8.2) astro: specifier: workspace:* version: link:../../../../../astro @@ -5162,7 +5162,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/integrations/cloudflare/test/fixtures/with-vue: dependencies: @@ -5171,7 +5171,7 @@ importers: version: link:../../.. '@astrojs/vue': specifier: ^5.1.4 - version: 5.1.4(@types/node@25.2.3)(astro@packages+astro)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(sass@1.97.3)(tsx@4.21.0)(vue@3.5.28(typescript@5.9.3))(yaml@2.8.2) + version: 5.1.4(@types/node@25.2.3)(astro@packages+astro)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.57.1)(sass@1.97.3)(tsx@4.21.0)(vue@3.5.28(typescript@5.9.3))(yaml@2.8.2) astro: specifier: workspace:* version: link:../../../../../astro @@ -5229,7 +5229,7 @@ importers: version: 0.18.12 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -5360,8 +5360,8 @@ importers: specifier: workspace:* version: link:../../../../../astro preact: - specifier: ^10.28.3 - version: 10.28.3 + specifier: ^10.28.4 + version: 10.28.4 packages/integrations/markdoc/test/fixtures/render-with-config: dependencies: @@ -5503,7 +5503,7 @@ importers: version: 11.0.5 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -5572,7 +5572,7 @@ importers: version: link:../../../../../astro preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/integrations/mdx/test/fixtures/mdx-namespace: dependencies: @@ -5677,7 +5677,7 @@ importers: version: 5.1.2 '@netlify/vite-plugin': specifier: ^2.9.0 - version: 2.9.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.9.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@vercel/nft': specifier: ^1.3.1 version: 1.3.1(rollup@4.57.1) @@ -5689,7 +5689,7 @@ importers: version: 0.2.15 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@types/node': specifier: ^22.10.6 @@ -6026,16 +6026,16 @@ importers: dependencies: '@preact/preset-vite': specifier: ^2.10.3 - version: 2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.10.3(@babel/core@7.29.0)(preact@10.28.4)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@preact/signals': specifier: ^2.7.1 - version: 2.7.1(preact@10.28.3) + version: 2.8.1(preact@10.28.4) preact-render-to-string: specifier: ^6.6.5 - version: 6.6.5(preact@10.28.3) + version: 6.6.5(preact@10.28.4) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: astro: specifier: workspace:* @@ -6045,19 +6045,19 @@ importers: version: link:../../../scripts preact: specifier: ^10.28.3 - version: 10.28.3 + version: 10.28.4 packages/integrations/react: dependencies: '@vitejs/plugin-react': specifier: ^5.1.4 - version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) ultrahtml: specifier: ^1.6.0 version: 1.6.0 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@types/react': specifier: ^18.3.28 @@ -6176,10 +6176,10 @@ importers: dependencies: vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-solid: specifier: ^2.11.10 - version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) devDependencies: astro: specifier: workspace:* @@ -6195,13 +6195,13 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.2.4(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) svelte2tsx: specifier: ^0.7.47 - version: 0.7.47(svelte@5.51.5)(typescript@5.9.3) + version: 0.7.47(svelte@5.53.0)(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: astro: specifier: workspace:* @@ -6214,7 +6214,7 @@ importers: version: 1.2.0 svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/integrations/svelte/test/fixtures/async-rendering: dependencies: @@ -6226,7 +6226,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/integrations/svelte/test/fixtures/conditional-rendering: dependencies: @@ -6238,7 +6238,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/integrations/svelte/test/fixtures/prop-types: dependencies: @@ -6250,7 +6250,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 packages/integrations/vercel: dependencies: @@ -6259,7 +6259,7 @@ importers: version: link:../../internal-helpers '@vercel/analytics': specifier: ^1.6.1 - version: 1.6.1(react@19.2.4)(svelte@5.51.5)(vue@3.5.28(typescript@5.9.3)) + version: 1.6.1(react@19.2.4)(svelte@5.53.0)(vue@3.5.28(typescript@5.9.3)) '@vercel/functions': specifier: ^3.4.2 version: 3.4.2 @@ -6287,7 +6287,7 @@ importers: version: 1.2.0 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) packages/integrations/vercel/test/fixtures/basic: dependencies: @@ -6476,19 +6476,19 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^6.0.4 - version: 6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vitejs/plugin-vue-jsx': specifier: ^5.1.4 - version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/compiler-sfc': specifier: ^3.5.28 version: 3.5.28 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-vue-devtools: specifier: ^8.0.6 - version: 8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) devDependencies: astro: specifier: workspace:* @@ -6731,7 +6731,7 @@ importers: version: link:../../../astro svelte: specifier: ^5.51.5 - version: 5.51.5 + version: 5.53.0 devDependencies: tinyglobby: specifier: ^0.2.15 @@ -6975,8 +6975,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 is-wsl: - specifier: ^3.1.0 - version: 3.1.0 + specifier: ^3.1.1 + version: 3.1.1 which-pm-runs: specifier: ^1.1.0 version: 1.1.0 @@ -8747,12 +8747,12 @@ packages: '@fastify/static@9.0.0': resolution: {integrity: sha512-r64H8Woe/vfilg5RTy7lwWlE8ZZcTrc3kebYFMEUBrMqlydhQyoiExQXdYAy2REVpST/G35+stAM8WYp1WGmMA==} - '@flue/cli@0.0.32': - resolution: {integrity: sha512-o7c+ziPIdAxrUYA/71RqEGssMdNva7ZcIve48kelJ3yughYMB659djOL70GpWvOkBDXhLZjFEdaZgihi4UTmhQ==} + '@flue/cli@0.0.44': + resolution: {integrity: sha512-W4MYfgrNU14awSjhAeOiqoKpJDmZoKdpYxFW+muncfFv20AYkdFoiPxOpl8Q5OSLF6VLuf/GBijgnkG+iqaRGA==} hasBin: true - '@flue/client@0.0.18': - resolution: {integrity: sha512-DA0ctHnYj57qDGc1H5DvwPlsjlTncxCXX9mXtwfSN80Wa2mp1THYcgZZU+7VrlL0IjoPHNcqSwNF2w3keI9Bdw==} + '@flue/client@0.0.27': + resolution: {integrity: sha512-fO+UEjHeT8Wxo9Mm5uXXGMSQKCMc91Z4xakgV77/PFiCIK/LCH6vN8u/al/YlT7wzvx/Nmvg/LvwQzUuN3XW3Q==} '@fontsource/monofett@5.2.8': resolution: {integrity: sha512-cUtT8ScH3HHsMBkRrXFCrhGpKqRrKVNOhnYVSusECfB7g13YZjOrrLlhlc3o+R2IYpRrQQg/T/febSVD6k2Dhw==} @@ -9622,6 +9622,11 @@ packages: peerDependencies: preact: '>= 10.25.0 || >=11.0.0-0' + '@preact/signals@2.8.1': + resolution: {integrity: sha512-wX6U0SpcCukZTJBs5ChljvBZb3XmYzA5gd4vKHgX8wZZKaQCo2WHtmThdLx+mcVvlBa5u3XShC7ffbETJD4BiQ==} + peerDependencies: + preact: '>= 10.25.0 || >=11.0.0-0' + '@prefresh/babel-plugin@0.5.2': resolution: {integrity: sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==} @@ -9923,69 +9928,69 @@ packages: svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 - '@tailwindcss/node@4.1.18': - resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + '@tailwindcss/node@4.2.0': + resolution: {integrity: sha512-Yv+fn/o2OmL5fh/Ir62VXItdShnUxfpkMA4Y7jdeC8O81WPB8Kf6TT6GSHvnqgSwDzlB5iT7kDpeXxLsUS0T6Q==} - '@tailwindcss/oxide-android-arm64@4.1.18': - resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-android-arm64@4.2.0': + resolution: {integrity: sha512-F0QkHAVaW/JNBWl4CEKWdZ9PMb0khw5DCELAOnu+RtjAfx5Zgw+gqCHFvqg3AirU1IAd181fwOtJQ5I8Yx5wtw==} + engines: {node: '>= 20'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.18': - resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-arm64@4.2.0': + resolution: {integrity: sha512-I0QylkXsBsJMZ4nkUNSR04p6+UptjcwhcVo3Zu828ikiEqHjVmQL9RuQ6uT/cVIiKpvtVA25msu/eRV97JeNSA==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.18': - resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-x64@4.2.0': + resolution: {integrity: sha512-6TmQIn4p09PBrmnkvbYQ0wbZhLtbaksCDx7Y7R3FYYx0yxNA7xg5KP7dowmQ3d2JVdabIHvs3Hx4K3d5uCf8xg==} + engines: {node: '>= 20'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.18': - resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-freebsd-x64@4.2.0': + resolution: {integrity: sha512-qBudxDvAa2QwGlq9y7VIzhTvp2mLJ6nD/G8/tI70DCDoneaUeLWBJaPcbfzqRIWraj+o969aDQKvKW9dvkUizw==} + engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': - resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.0': + resolution: {integrity: sha512-7XKkitpy5NIjFZNUQPeUyNJNJn1CJeV7rmMR+exHfTuOsg8rxIO9eNV5TSEnqRcaOK77zQpsyUkBWmPy8FgdSg==} + engines: {node: '>= 20'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': - resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.0': + resolution: {integrity: sha512-Mff5a5Q3WoQR01pGU1gr29hHM1N93xYrKkGXfPw/aRtK4bOc331Ho4Tgfsm5WDGvpevqMpdlkCojT3qlCQbCpA==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': - resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-musl@4.2.0': + resolution: {integrity: sha512-XKcSStleEVnbH6W/9DHzZv1YhjE4eSS6zOu2eRtYAIh7aV4o3vIBs+t/B15xlqoxt6ef/0uiqJVB6hkHjWD/0A==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [musl] - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': - resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-gnu@4.2.0': + resolution: {integrity: sha512-/hlXCBqn9K6fi7eAM0RsobHwJYa5V/xzWspVTzxnX+Ft9v6n+30Pz8+RxCn7sQL/vRHHLS30iQPrHQunu6/vJA==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-x64-musl@4.1.18': - resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-musl@4.2.0': + resolution: {integrity: sha512-lKUaygq4G7sWkhQbfdRRBkaq4LY39IriqBQ+Gk6l5nKq6Ay2M2ZZb1tlIyRNgZKS8cbErTwuYSor0IIULC0SHw==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [musl] - '@tailwindcss/oxide-wasm32-wasi@4.1.18': - resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + '@tailwindcss/oxide-wasm32-wasi@4.2.0': + resolution: {integrity: sha512-xuDjhAsFdUuFP5W9Ze4k/o4AskUtI8bcAGU4puTYprr89QaYFmhYOPfP+d1pH+k9ets6RoE23BXZM1X1jJqoyw==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -9996,24 +10001,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': - resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-arm64-msvc@4.2.0': + resolution: {integrity: sha512-2UU/15y1sWDEDNJXxEIrfWKC2Yb4YgIW5Xz2fKFqGzFWfoMHWFlfa1EJlGO2Xzjkq/tvSarh9ZTjvbxqWvLLXA==} + engines: {node: '>= 20'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': - resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-x64-msvc@4.2.0': + resolution: {integrity: sha512-CrFadmFoc+z76EV6LPG1jx6XceDsaCG3lFhyLNo/bV9ByPrE+FnBPckXQVP4XRkN76h3Fjt/a+5Er/oA/nCBvQ==} + engines: {node: '>= 20'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.18': - resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide@4.2.0': + resolution: {integrity: sha512-AZqQzADaj742oqn2xjl5JbIOzZB/DGCYF/7bpvhA8KvjUj9HJkag6bBuwZvH1ps6dfgxNHyuJVlzSr2VpMgdTQ==} + engines: {node: '>= 20'} - '@tailwindcss/vite@4.1.18': - resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} + '@tailwindcss/vite@4.2.0': + resolution: {integrity: sha512-da9mFCaHpoOgtQiWtDGIikTrSpUFBtIZCG3jy/u2BGV+l/X1/pbxzmIUxNt6JWm19N3WtGi4KlJdSH/Si83WOA==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 @@ -10233,63 +10238,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.55.0': - resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} + '@typescript-eslint/eslint-plugin@8.56.0': + resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.55.0 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/parser': ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.55.0': - resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} + '@typescript-eslint/parser@8.56.0': + resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.55.0': - resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} + '@typescript-eslint/project-service@8.56.0': + resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.55.0': - resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} + '@typescript-eslint/scope-manager@8.56.0': + resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.55.0': - resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} + '@typescript-eslint/tsconfig-utils@8.56.0': + resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.55.0': - resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} + '@typescript-eslint/type-utils@8.56.0': + resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.55.0': - resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} + '@typescript-eslint/types@8.56.0': + resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.55.0': - resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} + '@typescript-eslint/typescript-estree@8.56.0': + resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.55.0': - resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} + '@typescript-eslint/utils@8.56.0': + resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.55.0': - resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} + '@typescript-eslint/visitor-keys@8.56.0': + resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': @@ -11934,6 +11939,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -12083,8 +12092,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-parser@5.3.6: - resolution: {integrity: sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==} + fast-xml-parser@5.3.7: + resolution: {integrity: sha512-JzVLro9NQv92pOM/jTCR6mHlJh2FGwtomH8ZQjhFj/R29P2Fnj38OgPJVtcvYw6SuKClhgYuwUZf5b3rd8u2mA==} hasBin: true fastify-plugin@5.1.0: @@ -12767,8 +12776,8 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} is64bit@2.0.0: @@ -12966,78 +12975,78 @@ packages: light-my-request@6.6.0: resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} linkedom@0.18.12: @@ -14225,8 +14234,8 @@ packages: peerDependencies: preact: '>=10 || >= 11.0.0-0' - preact@10.28.3: - resolution: {integrity: sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==} + preact@10.28.4: + resolution: {integrity: sha512-uKFfOHWuSNpRFVTnljsCluEFq57OKT+0QdOiQo8XWnQ/pSvg7OpX5eNOejELXJMWy+BwM2nobz0FkvzmnpCNsQ==} prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} @@ -15052,8 +15061,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.51.5: - resolution: {integrity: sha512-/4tR5cLsWOgH3wnNRXnFoWaJlwPGbJanZPSKSD6nHM2y01dvXeEF4Nx7jevoZ+UpJpkIHh6mY2tqDncuI4GHng==} + svelte@5.53.0: + resolution: {integrity: sha512-7dhHkSamGS2vtoBmIW2hRab+gl5Z60alEHZB4910ePqqJNxAWnDAxsofVmlZ2tREmWyHNE+A1nCKwICAquoD2A==} engines: {node: '>=18'} svgo@3.3.2: @@ -15074,8 +15083,8 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} - tailwindcss@4.1.18: - resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} + tailwindcss@4.2.0: + resolution: {integrity: sha512-yYzTZ4++b7fNYxFfpnberEEKu43w44aqDMNM9MHMmcKuCH7lL8jJ4yJ7LGHv7rSwiqM0nkiobF9I6cLlpS2P7Q==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -15242,38 +15251,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.8.7: - resolution: {integrity: sha512-Xr4TO/oDDwoozbDtBvunb66g//WK8uHRygl72vUthuwzmiw48pil4IuoG/QbMHd9RE8aBnVmzC0WZEWk/WWt3A==} + turbo-darwin-64@2.8.10: + resolution: {integrity: sha512-A03fXh+B7S8mL3PbdhTd+0UsaGrhfyPkODvzBDpKRY7bbeac4MDFpJ7I+Slf2oSkCEeSvHKR7Z4U71uKRUfX7g==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.8.7: - resolution: {integrity: sha512-p8Xbmb9kZEY/NoshQUcFmQdO80s2PCGoLYj5DbpxjZr3diknipXxzOK7pcmT7l2gNHaMCpFVWLkiFY9nO3EU5w==} + turbo-darwin-arm64@2.8.10: + resolution: {integrity: sha512-sidzowgWL3s5xCHLeqwC9M3s9M0i16W1nuQF3Mc7fPHpZ+YPohvcbVFBB2uoRRHYZg6yBnwD4gyUHKTeXfwtXA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.8.7: - resolution: {integrity: sha512-nwfEPAH3m5y/nJeYly3j1YJNYU2EG5+2ysZUxvBNM+VBV2LjQaLxB9CsEIpIOKuWKCjnFHKIADTSDPZ3D12J5Q==} + turbo-linux-64@2.8.10: + resolution: {integrity: sha512-YK9vcpL3TVtqonB021XwgaQhY9hJJbKKUhLv16osxV0HkcQASQWUqR56yMge7puh6nxU67rQlTq1b7ksR1T3KA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.8.7: - resolution: {integrity: sha512-mgA/M6xiJzyxtXV70TtWGDPh+I6acOKmeQGtOzbFQZYEf794pu5jax26bCk5skAp1gqZu3vacPr6jhYHoHU9IQ==} + turbo-linux-arm64@2.8.10: + resolution: {integrity: sha512-3+j2tL0sG95iBJTm+6J8/45JsETQABPqtFyYjVjBbi6eVGdtNTiBmHNKrbvXRlQ3ZbUG75bKLaSSDHSEEN+btQ==} cpu: [arm64] os: [linux] - turbo-windows-64@2.8.7: - resolution: {integrity: sha512-sHTYMaXuCcyHnGUQgfUUt7S8407TWoP14zc/4N2tsM0wZNK6V9h4H2t5jQPtqKEb6Fg8313kygdDgEwuM4vsHg==} + turbo-windows-64@2.8.10: + resolution: {integrity: sha512-hdeF5qmVY/NFgiucf8FW0CWJWtyT2QPm5mIsX0W1DXAVzqKVXGq+Zf+dg4EUngAFKjDzoBeN6ec2Fhajwfztkw==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.8.7: - resolution: {integrity: sha512-WyGiOI2Zp3AhuzVagzQN+T+iq0fWx0oGxDfAWT3ZiLEd4U0cDUkwUZDKVGb3rKqPjDL6lWnuxKKu73ge5xtovQ==} + turbo-windows-arm64@2.8.10: + resolution: {integrity: sha512-QGdr/Q8LWmj+ITMkSvfiz2glf0d7JG0oXVzGL3jxkGqiBI1zXFj20oqVY0qWi+112LO9SVrYdpHS0E/oGFrMbQ==} cpu: [arm64] os: [win32] - turbo@2.8.7: - resolution: {integrity: sha512-RBLh5caMAu1kFdTK1jgH2gH/z+jFsvX5rGbhgJ9nlIAWXSvxlzwId05uDlBA1+pBd3wO/UaKYzaQZQBXDd7kcA==} + turbo@2.8.10: + resolution: {integrity: sha512-OxbzDES66+x7nnKGg2MwBA1ypVsZoDTLHpeaP4giyiHSixbsiTaMyeJqbEyvBdp5Cm28fc+8GG6RdQtic0ijwQ==} hasBin: true type-check@0.4.0: @@ -15311,11 +15320,11 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript-eslint@8.55.0: - resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} + typescript-eslint@8.56.0: + resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: @@ -16325,11 +16334,11 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/solid-js@5.1.3(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(solid-js@1.9.11)(tsx@4.21.0)(yaml@2.8.2)': + '@astrojs/solid-js@5.1.3(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(solid-js@1.9.11)(tsx@4.21.0)(yaml@2.8.2)': dependencies: solid-js: 1.9.11 - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - '@testing-library/jest-dom' - '@types/node' @@ -16345,14 +16354,14 @@ snapshots: - tsx - yaml - '@astrojs/vue@5.1.4(@types/node@25.2.3)(astro@packages+astro)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.57.1)(sass@1.97.3)(tsx@4.21.0)(vue@3.5.28(typescript@5.9.3))(yaml@2.8.2)': + '@astrojs/vue@5.1.4(@types/node@25.2.3)(astro@packages+astro)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.57.1)(sass@1.97.3)(tsx@4.21.0)(vue@3.5.28(typescript@5.9.3))(yaml@2.8.2)': dependencies: - '@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) - '@vitejs/plugin-vue-jsx': 4.2.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + '@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': 4.2.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/compiler-sfc': 3.5.28 astro: link:packages/astro - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-plugin-vue-devtools: 7.7.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-plugin-vue-devtools: 7.7.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - '@nuxt/kit' @@ -16922,12 +16931,12 @@ snapshots: optionalDependencies: workerd: 1.20260212.0 - '@cloudflare/vite-plugin@1.25.0(@cloudflare/workers-types@4.20260213.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260212.0)': + '@cloudflare/vite-plugin@1.25.0(@cloudflare/workers-types@4.20260213.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260212.0)': dependencies: '@cloudflare/unenv-preset': 2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260212.0) miniflare: 4.20260212.0 unenv: 2.0.0-rc.24 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) wrangler: 4.65.0(@cloudflare/workers-types@4.20260213.0) ws: 8.18.0 transitivePeerDependencies: @@ -16962,12 +16971,12 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@5.2.0(tinybench@2.9.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@codspeed/vitest-plugin@5.2.0(tinybench@2.9.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@codspeed/core': 5.2.0 tinybench: 2.9.0 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - debug @@ -17820,13 +17829,15 @@ snapshots: fastq: 1.20.1 glob: 13.0.3 - '@flue/cli@0.0.32(typescript@5.9.3)': + '@flue/cli@0.0.44(typescript@5.9.3)': dependencies: - '@flue/client': 0.0.18(typescript@5.9.3) + '@flue/client': 0.0.27(typescript@5.9.3) + '@valibot/to-json-schema': 1.5.0(valibot@1.2.0(typescript@5.9.3)) + valibot: 1.2.0(typescript@5.9.3) transitivePeerDependencies: - typescript - '@flue/client@0.0.18(typescript@5.9.3)': + '@flue/client@0.0.27(typescript@5.9.3)': dependencies: '@opencode-ai/sdk': 1.1.65 '@valibot/to-json-schema': 1.5.0(valibot@1.2.0(typescript@5.9.3)) @@ -18141,10 +18152,10 @@ snapshots: dependencies: minimist: 1.2.8 - '@nanostores/preact@1.0.0(nanostores@1.1.0)(preact@10.28.3)': + '@nanostores/preact@1.0.0(nanostores@1.1.0)(preact@10.28.4)': dependencies: nanostores: 1.1.0 - preact: 10.28.3 + preact: 10.28.4 '@napi-rs/wasm-runtime@0.2.12': dependencies: @@ -18419,12 +18430,12 @@ snapshots: '@netlify/types@2.3.0': {} - '@netlify/vite-plugin@2.9.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@netlify/vite-plugin@2.9.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@netlify/dev': 4.10.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1) '@netlify/dev-utils': 4.3.3 dedent: 1.7.1 - vite: 7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18778,18 +18789,18 @@ snapshots: '@poppinss/exception@1.2.3': {} - '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.3)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@preact/preset-vite@2.10.3(@babel/core@7.29.0)(preact@10.28.4)(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@prefresh/vite': 2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@prefresh/vite': 2.4.11(preact@10.28.4)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.0) debug: 4.4.3(supports-color@8.1.1) picocolors: 1.1.1 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - preact - rollup @@ -18797,28 +18808,33 @@ snapshots: '@preact/signals-core@1.13.0': {} - '@preact/signals@2.7.1(preact@10.28.3)': + '@preact/signals@2.7.1(preact@10.28.4)': dependencies: '@preact/signals-core': 1.13.0 - preact: 10.28.3 + preact: 10.28.4 + + '@preact/signals@2.8.1(preact@10.28.4)': + dependencies: + '@preact/signals-core': 1.13.0 + preact: 10.28.4 '@prefresh/babel-plugin@0.5.2': {} - '@prefresh/core@1.5.9(preact@10.28.3)': + '@prefresh/core@1.5.9(preact@10.28.4)': dependencies: - preact: 10.28.3 + preact: 10.28.4 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.11(preact@10.28.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@prefresh/vite@2.4.11(preact@10.28.4)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@prefresh/babel-plugin': 0.5.2 - '@prefresh/core': 1.5.9(preact@10.28.3) + '@prefresh/core': 1.5.9(preact@10.28.4) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.28.3 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + preact: 10.28.4 + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -19054,90 +19070,90 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) obug: 2.1.1 - svelte: 5.51.5 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + svelte: 5.53.0 + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.51.5)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 - svelte: 5.51.5 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + svelte: 5.53.0 + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) - '@tailwindcss/node@4.1.18': + '@tailwindcss/node@4.2.0': dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.19.0 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.18 + tailwindcss: 4.2.0 - '@tailwindcss/oxide-android-arm64@4.1.18': + '@tailwindcss/oxide-android-arm64@4.2.0': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.18': + '@tailwindcss/oxide-darwin-arm64@4.2.0': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.18': + '@tailwindcss/oxide-darwin-x64@4.2.0': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.18': + '@tailwindcss/oxide-freebsd-x64@4.2.0': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.0': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + '@tailwindcss/oxide-linux-arm64-gnu@4.2.0': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + '@tailwindcss/oxide-linux-arm64-musl@4.2.0': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + '@tailwindcss/oxide-linux-x64-gnu@4.2.0': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.18': + '@tailwindcss/oxide-linux-x64-musl@4.2.0': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.18': + '@tailwindcss/oxide-wasm32-wasi@4.2.0': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + '@tailwindcss/oxide-win32-arm64-msvc@4.2.0': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + '@tailwindcss/oxide-win32-x64-msvc@4.2.0': optional: true - '@tailwindcss/oxide@4.1.18': + '@tailwindcss/oxide@4.2.0': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-x64': 4.1.18 - '@tailwindcss/oxide-freebsd-x64': 4.1.18 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-x64-musl': 4.1.18 - '@tailwindcss/oxide-wasm32-wasi': 4.1.18 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - - '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@tailwindcss/node': 4.1.18 - '@tailwindcss/oxide': 4.1.18 - tailwindcss: 4.1.18 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + '@tailwindcss/oxide-android-arm64': 4.2.0 + '@tailwindcss/oxide-darwin-arm64': 4.2.0 + '@tailwindcss/oxide-darwin-x64': 4.2.0 + '@tailwindcss/oxide-freebsd-x64': 4.2.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.0 + '@tailwindcss/oxide-linux-x64-musl': 4.2.0 + '@tailwindcss/oxide-wasm32-wasi': 4.2.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.0 + + '@tailwindcss/vite@4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@tailwindcss/node': 4.2.0 + '@tailwindcss/oxide': 4.2.0 + tailwindcss: 4.2.0 + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) '@test/server-entry-fake-adapter@file:packages/astro/test/fixtures/server-entry/fake-adapter': dependencies: @@ -19369,14 +19385,14 @@ snapshots: '@types/node': 18.19.130 optional: true - '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/parser': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -19385,41 +19401,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3(supports-color@8.1.1) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.55.0': + '@typescript-eslint/scope-manager@8.56.0': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -19427,14 +19443,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.55.0': {} + '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.5 semver: 7.7.4 @@ -19444,21 +19460,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.55.0': + '@typescript-eslint/visitor-keys@8.56.0': dependencies: - '@typescript-eslint/types': 8.55.0 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.56.0 + eslint-visitor-keys: 5.0.0 '@typescript/twoslash@3.1.0': dependencies: @@ -19494,10 +19510,10 @@ snapshots: dependencies: valibot: 1.2.0(typescript@5.9.3) - '@vercel/analytics@1.6.1(react@19.2.4)(svelte@5.51.5)(vue@3.5.28(typescript@5.9.3))': + '@vercel/analytics@1.6.1(react@19.2.4)(svelte@5.53.0)(vue@3.5.28(typescript@5.9.3))': optionalDependencies: react: 19.2.4 - svelte: 5.51.5 + svelte: 5.53.0 vue: 3.5.28(typescript@5.9.3) '@vercel/functions@3.4.2': @@ -19551,7 +19567,7 @@ snapshots: optionalDependencies: ajv: 6.12.6 - '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -19559,42 +19575,42 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.2.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@4.2.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) '@rolldown/pluginutils': 1.0.0-rc.4 '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) '@rolldown/pluginutils': 1.0.0-rc.4 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.28(typescript@5.9.3) - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.28(typescript@5.9.3) '@vitest/expect@3.2.4': @@ -19614,21 +19630,21 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@3.2.4': dependencies: @@ -19959,26 +19975,26 @@ snapshots: '@vue/compiler-dom': 3.5.28 '@vue/shared': 3.5.28 - '@vue/devtools-core@7.7.9(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vue/devtools-core@7.7.9(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@vue/devtools-kit': 7.7.9 '@vue/devtools-shared': 7.7.9 mitt: 3.0.1 nanoid: 5.1.6 pathe: 2.0.3 - vite-hot-client: 2.1.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite-hot-client: 2.1.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - vite - '@vue/devtools-core@8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vue/devtools-core@8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@vue/devtools-kit': 8.0.6 '@vue/devtools-shared': 8.0.6 mitt: 3.0.1 nanoid: 5.1.6 pathe: 2.0.3 - vite-hot-client: 2.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite-hot-client: 2.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - vite @@ -20601,7 +20617,7 @@ snapshots: clipboardy@4.0.0: dependencies: execa: 8.0.1 - is-wsl: 3.1.0 + is-wsl: 3.1.1 is64bit: 2.0.0 cliui@6.0.0: @@ -20936,7 +20952,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.9.3): dependencies: - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.9.3 @@ -21308,6 +21324,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.0: {} + eslint@9.39.2(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -21540,7 +21558,7 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-parser@5.3.6: + fast-xml-parser@5.3.7: dependencies: strnum: 2.1.2 @@ -22324,7 +22342,7 @@ snapshots: is-windows@1.0.2: {} - is-wsl@3.1.0: + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 @@ -22562,54 +22580,54 @@ snapshots: process-warning: 4.0.1 set-cookie-parser: 2.7.2 - lightningcss-android-arm64@1.30.2: + lightningcss-android-arm64@1.31.1: optional: true - lightningcss-darwin-arm64@1.30.2: + lightningcss-darwin-arm64@1.31.1: optional: true - lightningcss-darwin-x64@1.30.2: + lightningcss-darwin-x64@1.31.1: optional: true - lightningcss-freebsd-x64@1.30.2: + lightningcss-freebsd-x64@1.31.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.2: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true - lightningcss-linux-arm64-gnu@1.30.2: + lightningcss-linux-arm64-gnu@1.31.1: optional: true - lightningcss-linux-arm64-musl@1.30.2: + lightningcss-linux-arm64-musl@1.31.1: optional: true - lightningcss-linux-x64-gnu@1.30.2: + lightningcss-linux-x64-gnu@1.31.1: optional: true - lightningcss-linux-x64-musl@1.30.2: + lightningcss-linux-x64-musl@1.31.1: optional: true - lightningcss-win32-arm64-msvc@1.30.2: + lightningcss-win32-arm64-msvc@1.31.1: optional: true - lightningcss-win32-x64-msvc@1.30.2: + lightningcss-win32-x64-msvc@1.31.1: optional: true - lightningcss@1.30.2: + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 linkedom@0.18.12: dependencies: @@ -24168,11 +24186,11 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact-render-to-string@6.6.5(preact@10.28.3): + preact-render-to-string@6.6.5(preact@10.28.4): dependencies: - preact: 10.28.3 + preact: 10.28.4 - preact@10.28.3: {} + preact@10.28.4: {} prebuild-install@7.1.3: dependencies: @@ -25208,14 +25226,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.47(svelte@5.51.5)(typescript@5.9.3): + svelte2tsx@0.7.47(svelte@5.53.0)(typescript@5.9.3): dependencies: dedent-js: 1.0.1 scule: 1.3.0 - svelte: 5.51.5 + svelte: 5.53.0 typescript: 5.9.3 - svelte@5.51.5: + svelte@5.53.0: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -25264,7 +25282,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@4.1.18: {} + tailwindcss@4.2.0: {} tapable@2.3.0: {} @@ -25415,32 +25433,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.8.7: + turbo-darwin-64@2.8.10: optional: true - turbo-darwin-arm64@2.8.7: + turbo-darwin-arm64@2.8.10: optional: true - turbo-linux-64@2.8.7: + turbo-linux-64@2.8.10: optional: true - turbo-linux-arm64@2.8.7: + turbo-linux-arm64@2.8.10: optional: true - turbo-windows-64@2.8.7: + turbo-windows-64@2.8.10: optional: true - turbo-windows-arm64@2.8.7: + turbo-windows-arm64@2.8.10: optional: true - turbo@2.8.7: + turbo@2.8.10: optionalDependencies: - turbo-darwin-64: 2.8.7 - turbo-darwin-arm64: 2.8.7 - turbo-linux-64: 2.8.7 - turbo-linux-arm64: 2.8.7 - turbo-windows-64: 2.8.7 - turbo-windows-arm64: 2.8.7 + turbo-darwin-64: 2.8.10 + turbo-darwin-arm64: 2.8.10 + turbo-linux-64: 2.8.10 + turbo-linux-arm64: 2.8.10 + turbo-windows-64: 2.8.10 + turbo-windows-arm64: 2.8.10 type-check@0.4.0: dependencies: @@ -25481,12 +25499,12 @@ snapshots: dependencies: semver: 7.7.4 - typescript-eslint@8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -25720,27 +25738,27 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-dev-rpc@1.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-dev-rpc@1.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: birpc: 2.9.0 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-hot-client: 2.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-hot-client: 2.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) - vite-hot-client@2.1.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-hot-client@2.1.0(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-hot-client@2.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-hot-client@2.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-node@3.2.4(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): + vite-node@3.2.4(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -25755,7 +25773,7 @@ snapshots: - tsx - yaml - vite-plugin-inspect@0.8.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-inspect@0.8.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.3.0(rollup@4.57.1) @@ -25766,12 +25784,12 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.1.1 sirv: 3.0.2 - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - rollup - supports-color - vite-plugin-inspect@11.3.3(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-inspect@11.3.3(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: ansis: 4.2.0 debug: 4.4.3(supports-color@8.1.1) @@ -25781,12 +25799,12 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@babel/core': 7.29.0 '@types/babel__core': 7.20.5 @@ -25794,12 +25812,12 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.11 solid-refresh: 0.6.3(solid-js@1.9.11) - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@babel/core': 7.29.0 '@types/babel__core': 7.20.5 @@ -25807,42 +25825,42 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.11 solid-refresh: 0.6.3(solid-js@1.9.11) - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.7.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)): + vite-plugin-vue-devtools@7.7.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)): dependencies: - '@vue/devtools-core': 7.7.9(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + '@vue/devtools-core': 7.7.9(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/devtools-kit': 7.7.9 '@vue/devtools-shared': 7.7.9 execa: 9.6.1 sirv: 3.0.2 - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-plugin-inspect: 0.8.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) - vite-plugin-vue-inspector: 5.3.2(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-plugin-inspect: 0.8.9(rollup@4.57.1)(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite-plugin-vue-inspector: 5.3.2(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - '@nuxt/kit' - rollup - supports-color - vue - vite-plugin-vue-devtools@8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)): + vite-plugin-vue-devtools@8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)): dependencies: - '@vue/devtools-core': 8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + '@vue/devtools-core': 8.0.6(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/devtools-kit': 8.0.6 '@vue/devtools-shared': 8.0.6 sirv: 3.0.2 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-plugin-inspect: 11.3.3(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) - vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-plugin-inspect: 11.3.3(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - '@nuxt/kit' - supports-color - vue - vite-plugin-vue-inspector@5.3.2(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-vue-inspector@5.3.2(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -25853,11 +25871,11 @@ snapshots: '@vue/compiler-dom': 3.5.28 kolorist: 1.8.0 magic-string: 0.30.21 - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - vite-plugin-vue-inspector@5.3.2(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-vue-inspector@5.3.2(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -25868,11 +25886,11 @@ snapshots: '@vue/compiler-dom': 3.5.28 kolorist: 1.8.0 magic-string: 0.30.21 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -25880,14 +25898,14 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) vite-svg-loader@5.1.0(vue@3.5.28(typescript@5.9.3)): dependencies: svgo: 3.3.2 vue: 3.5.28(typescript@5.9.3) - vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): + vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.5 fdir: 6.5.0(picomatch@4.0.3) @@ -25899,12 +25917,12 @@ snapshots: '@types/node': 25.2.3 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -25916,12 +25934,12 @@ snapshots: '@types/node': 22.19.11 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -25933,24 +25951,24 @@ snapshots: '@types/node': 25.2.3 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 tsx: 4.21.0 yaml: 2.8.2 - vitefu@1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: - vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vitefu@1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -25968,8 +25986,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -25988,10 +26006,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -26008,7 +26026,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -26269,7 +26287,7 @@ snapshots: wsl-utils@0.1.0: dependencies: - is-wsl: 3.1.0 + is-wsl: 3.1.1 xml2js@0.5.0: dependencies: From c0430340fe8ef964454dd77b5e8aa2782c640785 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:48:28 +0100 Subject: [PATCH 3/8] chore(deps): update actions/checkout action to v6 (#15617) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1416792bba70..7856b04b3471 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,7 +97,7 @@ jobs: contents: read steps: - name: Checkout - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup Biome From 926b82881e59d9032e55f271f96b3e65717c6d4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:48:47 +0100 Subject: [PATCH 4/8] fix(deps): update astro adapters (#15616) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/integrations/cloudflare/package.json | 4 +- .../fixtures/astro-dev-platform/package.json | 2 +- .../test/fixtures/astro-env/package.json | 2 +- .../fixtures/custom-entryfile/package.json | 2 +- .../fixtures/prerender-styles/package.json | 4 +- .../fixtures/routing-priority/package.json | 2 +- .../test/fixtures/sessions/package.json | 2 +- .../test/fixtures/vite-plugin/package.json | 2 +- .../test/fixtures/with-svelte/package.json | 2 +- packages/integrations/netlify/package.json | 4 +- pnpm-lock.yaml | 272 ++++++++---------- 11 files changed, 135 insertions(+), 163 deletions(-) diff --git a/packages/integrations/cloudflare/package.json b/packages/integrations/cloudflare/package.json index f5df5b8931de..1d32bccc85de 100644 --- a/packages/integrations/cloudflare/package.json +++ b/packages/integrations/cloudflare/package.json @@ -43,7 +43,7 @@ "dependencies": { "@astrojs/internal-helpers": "workspace:*", "@astrojs/underscore-redirects": "workspace:*", - "@cloudflare/vite-plugin": "^1.25.0", + "@cloudflare/vite-plugin": "^1.25.2", "piccolore": "^0.1.3", "tinyglobby": "^0.2.15", "vite": "^7.3.1" @@ -53,7 +53,7 @@ "wrangler": "^4.61.1" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20260213.0", + "@cloudflare/workers-types": "^4.20260227.0", "@types/node": "^25.2.2", "astro": "workspace:*", "astro-scripts": "workspace:*", diff --git a/packages/integrations/cloudflare/test/fixtures/astro-dev-platform/package.json b/packages/integrations/cloudflare/test/fixtures/astro-dev-platform/package.json index 3835ec112ef9..a616b112d928 100644 --- a/packages/integrations/cloudflare/test/fixtures/astro-dev-platform/package.json +++ b/packages/integrations/cloudflare/test/fixtures/astro-dev-platform/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*" }, "devDependencies": { - "wrangler": "^4.65.0" + "wrangler": "^4.67.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/astro-env/package.json b/packages/integrations/cloudflare/test/fixtures/astro-env/package.json index 004a72612a2b..fedefe2cf805 100644 --- a/packages/integrations/cloudflare/test/fixtures/astro-env/package.json +++ b/packages/integrations/cloudflare/test/fixtures/astro-env/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*" }, "devDependencies": { - "wrangler": "^4.65.0" + "wrangler": "^4.67.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/custom-entryfile/package.json b/packages/integrations/cloudflare/test/fixtures/custom-entryfile/package.json index 30f94fd3ebad..bd8e1bce803b 100644 --- a/packages/integrations/cloudflare/test/fixtures/custom-entryfile/package.json +++ b/packages/integrations/cloudflare/test/fixtures/custom-entryfile/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/cloudflare": "workspace:*", "astro": "workspace:*", - "wrangler": "^4.65.0" + "wrangler": "^4.67.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-styles/package.json b/packages/integrations/cloudflare/test/fixtures/prerender-styles/package.json index a669d1fa5a6c..f2fa6954030c 100644 --- a/packages/integrations/cloudflare/test/fixtures/prerender-styles/package.json +++ b/packages/integrations/cloudflare/test/fixtures/prerender-styles/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "@astrojs/cloudflare": "workspace:*", - "@tailwindcss/vite": "^4.1.18", + "@tailwindcss/vite": "^4.2.0", "astro": "workspace:*", - "tailwindcss": "^4.1.18" + "tailwindcss": "^4.2.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/routing-priority/package.json b/packages/integrations/cloudflare/test/fixtures/routing-priority/package.json index a8c6a8dc9f14..21bb2cc84872 100644 --- a/packages/integrations/cloudflare/test/fixtures/routing-priority/package.json +++ b/packages/integrations/cloudflare/test/fixtures/routing-priority/package.json @@ -7,6 +7,6 @@ "@astrojs/cloudflare": "workspace:*" }, "devDependencies": { - "wrangler": "^4.65.0" + "wrangler": "^4.67.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/sessions/package.json b/packages/integrations/cloudflare/test/fixtures/sessions/package.json index 67c0f8b874d1..ff950816f44f 100644 --- a/packages/integrations/cloudflare/test/fixtures/sessions/package.json +++ b/packages/integrations/cloudflare/test/fixtures/sessions/package.json @@ -7,7 +7,7 @@ }, "devDependencies": { "astro": "workspace:*", - "wrangler": "^4.65.0" + "wrangler": "^4.67.0" }, "scripts": { "build": "astro build", diff --git a/packages/integrations/cloudflare/test/fixtures/vite-plugin/package.json b/packages/integrations/cloudflare/test/fixtures/vite-plugin/package.json index 4d478d497002..8c836d5aff87 100644 --- a/packages/integrations/cloudflare/test/fixtures/vite-plugin/package.json +++ b/packages/integrations/cloudflare/test/fixtures/vite-plugin/package.json @@ -12,7 +12,7 @@ "@astrojs/react": "workspace:*", "@astrojs/vue": "workspace:*", "@astrojs/svelte": "workspace:*", - "svelte":"^5.50.3", + "svelte":"^5.53.0", "vue": "^3.5.28", "@vitejs/plugin-vue": "^6.0.4", "@types/react": "^18.3.28", diff --git a/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json b/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json index 21c589263f15..8580cec7f386 100644 --- a/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json +++ b/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json @@ -6,6 +6,6 @@ "@astrojs/cloudflare": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^5.51.5" + "svelte": "^5.53.0" } } diff --git a/packages/integrations/netlify/package.json b/packages/integrations/netlify/package.json index 38ccd90639a0..87bf8821a0a2 100644 --- a/packages/integrations/netlify/package.json +++ b/packages/integrations/netlify/package.json @@ -41,9 +41,9 @@ "dependencies": { "@astrojs/internal-helpers": "workspace:*", "@astrojs/underscore-redirects": "workspace:*", - "@netlify/blobs": "^10.6.0", + "@netlify/blobs": "^10.7.0", "@netlify/functions": "^5.1.2", - "@netlify/vite-plugin": "^2.9.0", + "@netlify/vite-plugin": "^2.10.2", "@vercel/nft": "^1.3.1", "esbuild": "^0.25.0", "tinyglobby": "^0.2.15", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11e30a5c919c..137df9a15ef2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -651,7 +651,7 @@ importers: version: 5.1.0 unstorage: specifier: ^1.17.4 - version: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2) + version: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2) vfile: specifier: ^6.0.3 version: 6.0.3 @@ -4637,7 +4637,7 @@ importers: version: 1.0.2 drizzle-orm: specifier: ^0.42.0 - version: 0.42.0(@cloudflare/workers-types@4.20260213.0)(@libsql/client@0.17.0)(@opentelemetry/api@1.9.0) + version: 0.42.0(@cloudflare/workers-types@4.20260227.0)(@libsql/client@0.17.0)(@opentelemetry/api@1.9.0) nanoid: specifier: ^5.1.6 version: 5.1.6 @@ -4886,8 +4886,8 @@ importers: specifier: workspace:* version: link:../../underscore-redirects '@cloudflare/vite-plugin': - specifier: ^1.25.0 - version: 1.25.0(@cloudflare/workers-types@4.20260213.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260212.0) + specifier: ^1.25.2 + version: 1.25.2(@cloudflare/workers-types@4.20260227.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260219.0) piccolore: specifier: ^0.1.3 version: 0.1.3 @@ -4899,8 +4899,8 @@ importers: version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@cloudflare/workers-types': - specifier: ^4.20260213.0 - version: 4.20260213.0 + specifier: ^4.20260227.0 + version: 4.20260227.0 '@types/node': specifier: ^25.2.2 version: 25.2.3 @@ -4927,8 +4927,8 @@ importers: version: link:../../../../../astro devDependencies: wrangler: - specifier: ^4.65.0 - version: 4.65.0(@cloudflare/workers-types@4.20260213.0) + specifier: ^4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260227.0) packages/integrations/cloudflare/test/fixtures/astro-env: dependencies: @@ -4940,8 +4940,8 @@ importers: version: link:../../../../../astro devDependencies: wrangler: - specifier: ^4.65.0 - version: 4.65.0(@cloudflare/workers-types@4.20260213.0) + specifier: ^4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260227.0) packages/integrations/cloudflare/test/fixtures/binding-image-service: dependencies: @@ -4970,8 +4970,8 @@ importers: specifier: workspace:* version: link:../../../../../astro wrangler: - specifier: ^4.65.0 - version: 4.65.0(@cloudflare/workers-types@4.20260213.0) + specifier: ^4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260227.0) packages/integrations/cloudflare/test/fixtures/external-image-service: dependencies: @@ -4997,13 +4997,13 @@ importers: specifier: workspace:* version: link:../../.. '@tailwindcss/vite': - specifier: ^4.1.18 + specifier: ^4.2.0 version: 4.2.0(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) astro: specifier: workspace:* version: link:../../../../../astro tailwindcss: - specifier: ^4.1.18 + specifier: ^4.2.0 version: 4.2.0 packages/integrations/cloudflare/test/fixtures/routing-priority: @@ -5016,8 +5016,8 @@ importers: version: link:../../../../../astro devDependencies: wrangler: - specifier: ^4.65.0 - version: 4.65.0(@cloudflare/workers-types@4.20260213.0) + specifier: ^4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260227.0) packages/integrations/cloudflare/test/fixtures/server-entry: dependencies: @@ -5038,8 +5038,8 @@ importers: specifier: workspace:* version: link:../../../../../astro wrangler: - specifier: ^4.65.0 - version: 4.65.0(@cloudflare/workers-types@4.20260213.0) + specifier: ^4.67.0 + version: 4.67.0(@cloudflare/workers-types@4.20260227.0) packages/integrations/cloudflare/test/fixtures/sql-import: dependencies: @@ -5119,7 +5119,7 @@ importers: specifier: ^0.34.3 version: 0.34.5 svelte: - specifier: ^5.50.3 + specifier: ^5.53.0 version: 5.53.0 vue: specifier: ^3.5.28 @@ -5161,7 +5161,7 @@ importers: specifier: workspace:* version: link:../../../../../astro svelte: - specifier: ^5.51.5 + specifier: ^5.53.0 version: 5.53.0 packages/integrations/cloudflare/test/fixtures/with-vue: @@ -5670,14 +5670,14 @@ importers: specifier: workspace:* version: link:../../underscore-redirects '@netlify/blobs': - specifier: ^10.6.0 - version: 10.6.0 + specifier: ^10.7.0 + version: 10.7.0 '@netlify/functions': specifier: ^5.1.2 version: 5.1.2 '@netlify/vite-plugin': - specifier: ^2.9.0 - version: 2.9.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^2.10.2 + version: 2.10.2(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) '@vercel/nft': specifier: ^1.3.1 version: 1.3.1(rollup@4.57.1) @@ -7516,52 +7516,52 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.12.1': - resolution: {integrity: sha512-tP/Wi+40aBJovonSNJSsS7aFJY0xjuckKplmzDs2Xat06BJ68B6iG7YDUWXJL8gNn0gqW7YC5WhlYhO3QbugQA==} + '@cloudflare/unenv-preset@2.14.0': + resolution: {integrity: sha512-XKAkWhi1nBdNsSEoNG9nkcbyvfUrSjSf+VYVPfOto3gLTZVc3F4g6RASCMh6IixBKCG2yDgZKQIHGKtjcnLnKg==} peerDependencies: unenv: 2.0.0-rc.24 - workerd: ^1.20260115.0 + workerd: ^1.20260218.0 peerDependenciesMeta: workerd: optional: true - '@cloudflare/vite-plugin@1.25.0': - resolution: {integrity: sha512-IZV17IekBxc7dcu8TZw5I8DTQ+F6CT8f/rUwLYrQZdsPnfaqbPoc8t9/2V9ci+XNfgGRBNJxd/4YGuyJg+h1pQ==} + '@cloudflare/vite-plugin@1.25.2': + resolution: {integrity: sha512-CU4eRPZRumFkcsfinmr8txVCvGVwYEpR5/ATk2p3/004EdFKV4rZ0XzXhLlWVD1XppQ4DAc9FLjFJK4na7QF1A==} peerDependencies: vite: ^6.1.0 || ^7.0.0 - '@cloudflare/workerd-darwin-64@1.20260212.0': - resolution: {integrity: sha512-kLxuYutk88Wlo7edp8mlkN68TgZZ9237SUnuX9kNaD5jcOdblUqiBctMRZeRcPsuoX/3g2t0vS4ga02NBEVRNg==} + '@cloudflare/workerd-darwin-64@1.20260219.0': + resolution: {integrity: sha512-k+xM+swQBQnkrvwobjRPxyeYwjLSludJusR0PqeHe+h6X9QIRGgw3s1AO38lXQsqzMSgG5709oOXSF19NKVVaQ==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260212.0': - resolution: {integrity: sha512-fqoqQWMA1D0ZzDOD8sp0allREM2M8GHdpxMXQ8EdZpZ70z5bJbJ9Vr4qe35++FNIZJspsDHfTw3Xm/M4ELm/dQ==} + '@cloudflare/workerd-darwin-arm64@1.20260219.0': + resolution: {integrity: sha512-EyfQdsG1KcIVAf4qndT00LZly7sLFm1VxMWHBvOFB/EVYF2sE5HZ0dPbe+yrax5p3eS0oLZthR8ynhz4UulMUQ==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260212.0': - resolution: {integrity: sha512-bCSQoZzDzV5MSh4ueWo1DgmOn4Hf3QBu4Yo3eQFXA2llYFIu/sZgRtkEehw1X2/SY5Sn6O0EMCqxJYRf82Wdeg==} + '@cloudflare/workerd-linux-64@1.20260219.0': + resolution: {integrity: sha512-N0UHXILYYa6htFO/uC92uAqusvynbSbOcHcrVXMKqP9Jy7eqXGMovyKIrNgzYnKIszNB+0lfUYdGI3Wci07LuA==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260212.0': - resolution: {integrity: sha512-GPvp1iiKQodtbUDi6OmR5I0vD75lawB54tdYGtmypuHC7ZOI2WhBmhb3wCxgnQNOG1z7mhCQrzRCoqrKwYbVWQ==} + '@cloudflare/workerd-linux-arm64@1.20260219.0': + resolution: {integrity: sha512-835pjQ9uuAtwPBOAkPf+oxH3mNE5mqWuE3H7hJsul7WZsRD2FDcariyoT2AW6xyOePILrn4uMnmG1KGc9m/8Pg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260212.0': - resolution: {integrity: sha512-wHRI218Xn4ndgWJCUHH4Zx0YlU5q/o6OmcxXkcw95tJOsQn4lDrhppioPh4eScxJZALf2X+ODeZcyQTCq5exGw==} + '@cloudflare/workerd-windows-64@1.20260219.0': + resolution: {integrity: sha512-i7qcuOsuAxqqn1n5Ar3Rh1dHUL9vNmpF9FcdMTT84jIrdm5UNrPZz5grJthPmpB9LTcreT9iiP6qKbzGjnCwPA==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20260213.0': - resolution: {integrity: sha512-dr905ft/1R0mnfdT9aun4vanLgIBN27ZyPxTCENKmhctSz6zNmBOvHbzDWAhGE0RBAKFf3X7ifMRcd0MkmBvgA==} + '@cloudflare/workers-types@4.20260227.0': + resolution: {integrity: sha512-e/Lfx2LGmmTds9Soorj96ER+xzJZ/dfNcSd+odlRDv0HBYA4Ts7m01A1VwCPGvuy3/kQo7FYZEQdF6vnR0y73A==} '@codspeed/core@5.2.0': resolution: {integrity: sha512-CmDhpWjcOJg2iBOQ/BmBnSBq8qxlM3r4h8uvYDkoUaba+EKRT3T73BZtKuml/48jZMsB+4/FG2UbTBinDWtuvw==} @@ -9099,8 +9099,8 @@ packages: '@neon-rs/load@0.0.4': resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} - '@netlify/ai@0.3.6': - resolution: {integrity: sha512-razpNswXnCDRDkj7DDkVqX/sPifJSMO0GxDObNOiyY2ypKC7DPUcNdO4BW3gG1T8Hwf6StkQvAnNH291SvhBGA==} + '@netlify/ai@0.3.8': + resolution: {integrity: sha512-qz8XDb/82UzsUMKn+sB84V3ZGqeNQOvGwNo840nHIV9saJwLPTd+FOqSUoKUIxZphNA7kQ0uGeadSUkJzDz7og==} engines: {node: '>=20.6.1'} '@netlify/api@14.0.14': @@ -9110,8 +9110,8 @@ packages: '@netlify/binary-info@1.0.0': resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==} - '@netlify/blobs@10.6.0': - resolution: {integrity: sha512-orUfaNjUg0SDCRt/Zhtl1v3nCjYWb1NVqKwbB92lqpJWpHRZezxFViOoUoxv5UgHaXtjxgLitE24lL3hUm1bmg==} + '@netlify/blobs@10.7.0': + resolution: {integrity: sha512-wuiaKRbRLG/L049yR+7/p7xSKa4jx6JRBnweRYwP6mMYn9D+x/wccPgsxEMtKqthmow6frs7ZSrNYTt9U3yUdQ==} engines: {node: ^14.16.0 || >=16.0.0} '@netlify/cache@3.3.5': @@ -9127,9 +9127,14 @@ packages: resolution: {integrity: sha512-qziF8R9kf7mRNgSpmUH96O0aV1ZiwK4c9ZecFQbDSQuYhgy9GY1WTjiQF0oQnohjTjWNtXhrU39LAeXWNLaBJg==} engines: {node: ^18.14.0 || >=20} - '@netlify/dev@4.10.0': - resolution: {integrity: sha512-swS/f2FFrpUv/7LPuZ3TZu7QLh1kXaYRbxzoZ7zwpVnnCn4zBbZurmc0Q8B1nv+nU0tI9ty3+lff+VPg/RgrIQ==} + '@netlify/dev@4.11.2': + resolution: {integrity: sha512-quIKbuG7xD3yiWExuZA1Xl/b3Wc+/V3QjrNT4XX5m+dA/D54J61dABf1IGwQYNZHKiF5rVL7D3AwHNAojVQzuw==} engines: {node: '>=20.6.1'} + peerDependencies: + '@netlify/db-dev': 0.2.0 + peerDependenciesMeta: + '@netlify/db-dev': + optional: true '@netlify/edge-bundler@14.9.8': resolution: {integrity: sha512-FfP8WUyINS/LMO2wk23sgi9hiqPcgfRycjLPwWyLvEGwK3SYca9F5z0uaAvAeRsSJFCkm6ia9XdH28K1dSJhtg==} @@ -9138,16 +9143,16 @@ packages: '@netlify/edge-functions-bootstrap@2.16.0': resolution: {integrity: sha512-v8QQihSbBHj3JxtJsHoepXALpNumD9M7egHoc8z62FYl5it34dWczkaJoFFopEyhiBVKi4K/n0ZYpdzwfujd6g==} - '@netlify/edge-functions-dev@1.0.10': - resolution: {integrity: sha512-4MXn0Klbvfd8u308q/63ikMYXgOCDU+zjWs/pFpLfdnznddCYxVqPMyWyECJS3HLK7isAyQLupt34Lw1QdU1GA==} + '@netlify/edge-functions-dev@1.0.11': + resolution: {integrity: sha512-ASybM6fkopOKHorwI1TwsbBlF+eZQCMmlddWtSpyWDunKc4P7i/FEkzdTinNQvcLX7RIGOwjrxanTMEOen/Zvg==} engines: {node: '>=20.6.1'} '@netlify/edge-functions@3.0.3': resolution: {integrity: sha512-grElRK+rTBdYrPsULPKrhcHhrW+fwpDRLPbGByqa6Xrz0fhzcFJ2D9ijxEQ/onFcSVPYHT1u1mI48GhS5bZ/Ag==} engines: {node: '>=18.0.0'} - '@netlify/functions-dev@1.1.10': - resolution: {integrity: sha512-8ho8j/9voKQQZ4+tFxw+yezi1k5xdoy9DupOcrzItUYNSqtl4Gdc7yALxWC1e1MCgIgxOXjxjdz2Bh6N3sSNqA==} + '@netlify/functions-dev@1.1.12': + resolution: {integrity: sha512-rWFCthzhKiuM62yPd2upDY9+y/Ww5ahEKA8+E8WS8dgQKg+5/G/Yka6zfPNpkkFM3/oNi0R7LffWn2DMxrTMPQ==} engines: {node: '>=20.6.1'} '@netlify/functions@5.1.2': @@ -9178,16 +9183,16 @@ packages: resolution: {integrity: sha512-/HB3fcRRNgf6O/pbLn4EYNDHrU2kiadMMnazg8/OjvQK2S9i4y61vQcrICvDxYKUKQdgeEaABUuaCNAJFnfD9w==} engines: {node: '>=18.14.0'} - '@netlify/redirects@3.1.4': - resolution: {integrity: sha512-2FcF/0Q24JA+VmpWlVRp835UvhBHQe3XGVaxAQfHiDd5aXztaz2U5Y4VEZyrZJOubY5xnxr2yqumDfClAiCKxw==} + '@netlify/redirects@3.1.5': + resolution: {integrity: sha512-yU4YBqRYoqPobg/u96QI07IuevAc8+tVLAcnty6/vBJAlo5d7E72r+U6dez48EPGIJHY5hEQK4jT0m9SmKg8mg==} engines: {node: '>=20.6.1'} '@netlify/runtime-utils@2.3.0': resolution: {integrity: sha512-cW8weDvsKV7zfia2m5EcBy6KILGoPD+eYZ3qWNGnIo05DGF28goPES0xKSDkNYgAF/2rRSIhie2qcBhbGVgSRg==} engines: {node: ^18.14.0 || >=20} - '@netlify/runtime@4.1.14': - resolution: {integrity: sha512-lkue7cv4rUkyYXoBgP2Ho0tofVMRm3+fSh5mJONnFNFTEnoLa+8nQK0QjLAjGsEdJjmjDdnsYD1jIc3uqDr+eA==} + '@netlify/runtime@4.1.15': + resolution: {integrity: sha512-drX5NYNnqAMKnYsStRT8Q1ruNqd68QdMGdakdMtMb/aTaAtPCIug66BPP98YSWvgv9r7O5eO4NX/Ma7UkMVwvQ==} engines: {node: '>=20.6.1'} '@netlify/serverless-functions-api@2.9.0': @@ -9202,8 +9207,8 @@ packages: resolution: {integrity: sha512-5gxMWh/S7wr0uHKSTbMv4bjWmWSpwpeLYvErWeVNAPll5/QNFo9aWimMAUuh8ReLY3/fg92XAroVVu7+z27Snw==} engines: {node: ^18.14.0 || >=20} - '@netlify/vite-plugin@2.9.0': - resolution: {integrity: sha512-rIBsYu57VXacM6SmPBU6MMctwarOSunbZdJAI87/zO/ErHs+yaL0JDkLdvjLRd1xh3mKZDdiBzKpSgUsX40tLQ==} + '@netlify/vite-plugin@2.10.2': + resolution: {integrity: sha512-7enOUs5ijQx/MefNYa6yG41mm1uE/iiaTmBF6oJHIwmavyTP/rvPmo07OuV/PrODdXNEsdzIRWDZ70tGpN3q+w==} engines: {node: ^20.6.1 || >=22} peerDependencies: vite: ^5 || ^6 || ^7 @@ -12885,10 +12890,6 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - jsonwebtoken@9.0.3: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} @@ -12903,15 +12904,9 @@ packages: just-map-values@3.2.0: resolution: {integrity: sha512-TyqCKtK3NxiUgOjRYMIKURvBTHesi3XzomDY0QVPZ3rYzLCF+nNq5rSi0B/L5aOd/WMTZo6ukzA4wih4HUbrDg==} - jwa@1.4.2: - resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} - jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - jws@3.2.3: - resolution: {integrity: sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==} - jws@4.0.1: resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} @@ -13506,8 +13501,8 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - miniflare@4.20260212.0: - resolution: {integrity: sha512-Lgxq83EuR2q/0/DAVOSGXhXS1V7GDB04HVggoPsenQng8sqEDR3hO4FigIw5ZI2Sv2X7kIc30NCzGHJlCFIYWg==} + miniflare@4.20260219.0: + resolution: {integrity: sha512-EIb5wXbWUnnC60XU2aiFOPNd4fgTXzECkwRSOXZ1vdcY9WZaEE9rVf+h+Apw+WkOHRkp3Dr9/ZhQ5y1R+9iZ4Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -16000,20 +15995,20 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerd@1.20260212.0: - resolution: {integrity: sha512-4B9BoZUzKSRv3pVZGEPh7OX+Q817hpUqAUtz5O0TxJVqo4OsYJAUA/sY177Q5ha/twjT9KaJt2DtQzE+oyCOzw==} + workerd@1.20260219.0: + resolution: {integrity: sha512-l4U4iT5H8jNV6+EK23ExnUV2z6JvqQtQPrT8XCm4G8RpwC9EPpYTOO9s/ImMPJKe1WSbQUQoJ4k8Nd83fz8skQ==} engines: {node: '>=16'} hasBin: true workerpool@9.3.4: resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - wrangler@4.65.0: - resolution: {integrity: sha512-R+n3o3tlGzLK9I4fGocPReOuvcnjhtOL2aCVKkHMeuEwt9pPbOO4FxJtx/ec5cIUG/otRyJnfQGCAr9DplBVng==} + wrangler@4.67.0: + resolution: {integrity: sha512-58OoVth7bqm0nqsRgcI67gHbpp0IfR1JIBqDY0XR1FzRu9Qkjn6v2iJAdFf82QcVBFhaMBYQi88WqYGswq5wlQ==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260212.0 + '@cloudflare/workers-types': ^4.20260219.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -16925,19 +16920,19 @@ snapshots: '@cloudflare/kv-asset-handler@0.4.2': {} - '@cloudflare/unenv-preset@2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260212.0)': + '@cloudflare/unenv-preset@2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260219.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260212.0 + workerd: 1.20260219.0 - '@cloudflare/vite-plugin@1.25.0(@cloudflare/workers-types@4.20260213.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260212.0)': + '@cloudflare/vite-plugin@1.25.2(@cloudflare/workers-types@4.20260227.0)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(workerd@1.20260219.0)': dependencies: - '@cloudflare/unenv-preset': 2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260212.0) - miniflare: 4.20260212.0 + '@cloudflare/unenv-preset': 2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260219.0) + miniflare: 4.20260219.0 unenv: 2.0.0-rc.24 vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) - wrangler: 4.65.0(@cloudflare/workers-types@4.20260213.0) + wrangler: 4.67.0(@cloudflare/workers-types@4.20260227.0) ws: 8.18.0 transitivePeerDependencies: - '@cloudflare/workers-types' @@ -16945,22 +16940,22 @@ snapshots: - utf-8-validate - workerd - '@cloudflare/workerd-darwin-64@1.20260212.0': + '@cloudflare/workerd-darwin-64@1.20260219.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260212.0': + '@cloudflare/workerd-darwin-arm64@1.20260219.0': optional: true - '@cloudflare/workerd-linux-64@1.20260212.0': + '@cloudflare/workerd-linux-64@1.20260219.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20260212.0': + '@cloudflare/workerd-linux-arm64@1.20260219.0': optional: true - '@cloudflare/workerd-windows-64@1.20260212.0': + '@cloudflare/workerd-windows-64@1.20260219.0': optional: true - '@cloudflare/workers-types@4.20260213.0': {} + '@cloudflare/workers-types@4.20260227.0': {} '@codspeed/core@5.2.0': dependencies: @@ -18173,7 +18168,7 @@ snapshots: '@neon-rs/load@0.0.4': {} - '@netlify/ai@0.3.6': + '@netlify/ai@0.3.8': dependencies: '@netlify/api': 14.0.14 @@ -18186,7 +18181,7 @@ snapshots: '@netlify/binary-info@1.0.0': {} - '@netlify/blobs@10.6.0': + '@netlify/blobs@10.7.0': dependencies: '@netlify/dev-utils': 4.3.3 '@netlify/otel': 5.1.1 @@ -18244,18 +18239,18 @@ snapshots: uuid: 13.0.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.10.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)': + '@netlify/dev@4.11.2(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)': dependencies: - '@netlify/ai': 0.3.6 - '@netlify/blobs': 10.6.0 + '@netlify/ai': 0.3.8 + '@netlify/blobs': 10.7.0 '@netlify/config': 24.4.0 '@netlify/dev-utils': 4.3.3 - '@netlify/edge-functions-dev': 1.0.10 - '@netlify/functions-dev': 1.1.10(rollup@4.57.1) + '@netlify/edge-functions-dev': 1.0.11 + '@netlify/functions-dev': 1.1.12(rollup@4.57.1) '@netlify/headers': 2.1.3 - '@netlify/images': 1.3.3(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2) - '@netlify/redirects': 3.1.4 - '@netlify/runtime': 4.1.14 + '@netlify/images': 1.3.3(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2) + '@netlify/redirects': 3.1.5 + '@netlify/runtime': 4.1.15 '@netlify/static': 3.1.3 ulid: 3.0.2 transitivePeerDependencies: @@ -18308,7 +18303,7 @@ snapshots: '@netlify/edge-functions-bootstrap@2.16.0': {} - '@netlify/edge-functions-dev@1.0.10': + '@netlify/edge-functions-dev@1.0.11': dependencies: '@netlify/dev-utils': 4.3.3 '@netlify/edge-bundler': 14.9.8 @@ -18321,9 +18316,9 @@ snapshots: dependencies: '@netlify/types': 2.3.0 - '@netlify/functions-dev@1.1.10(rollup@4.57.1)': + '@netlify/functions-dev@1.1.12(rollup@4.57.1)': dependencies: - '@netlify/blobs': 10.6.0 + '@netlify/blobs': 10.7.0 '@netlify/dev-utils': 4.3.3 '@netlify/functions': 5.1.2 '@netlify/zip-it-and-ship-it': 14.3.2(rollup@4.57.1) @@ -18360,9 +18355,9 @@ snapshots: dependencies: '@netlify/headers-parser': 9.0.2 - '@netlify/images@1.3.3(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2)': + '@netlify/images@1.3.3(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2)': dependencies: - ipx: 3.1.1(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2) + ipx: 3.1.1(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18403,19 +18398,19 @@ snapshots: is-plain-obj: 4.1.0 path-exists: 5.0.0 - '@netlify/redirects@3.1.4': + '@netlify/redirects@3.1.5': dependencies: '@netlify/dev-utils': 4.3.3 '@netlify/redirect-parser': 15.0.3 cookie: 1.1.1 - jsonwebtoken: 9.0.2 + jsonwebtoken: 9.0.3 netlify-redirector: 0.5.0 '@netlify/runtime-utils@2.3.0': {} - '@netlify/runtime@4.1.14': + '@netlify/runtime@4.1.15': dependencies: - '@netlify/blobs': 10.6.0 + '@netlify/blobs': 10.7.0 '@netlify/cache': 3.3.5 '@netlify/runtime-utils': 2.3.0 '@netlify/types': 2.3.0 @@ -18430,9 +18425,9 @@ snapshots: '@netlify/types@2.3.0': {} - '@netlify/vite-plugin@2.9.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': + '@netlify/vite-plugin@2.10.2(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1)(vite@7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@netlify/dev': 4.10.0(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1) + '@netlify/dev': 4.11.2(@azure/identity@4.13.0)(@vercel/functions@3.4.2)(rollup@4.57.1) '@netlify/dev-utils': 4.3.3 dedent: 1.7.1 vite: 7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) @@ -18445,6 +18440,7 @@ snapshots: - '@azure/storage-blob' - '@capacitor/preferences' - '@deno/kv' + - '@netlify/db-dev' - '@planetscale/database' - '@upstash/redis' - '@vercel/blob' @@ -21024,9 +21020,9 @@ snapshots: dotenv@8.6.0: {} - drizzle-orm@0.42.0(@cloudflare/workers-types@4.20260213.0)(@libsql/client@0.17.0)(@opentelemetry/api@1.9.0): + drizzle-orm@0.42.0(@cloudflare/workers-types@4.20260227.0)(@libsql/client@0.17.0)(@opentelemetry/api@1.9.0): optionalDependencies: - '@cloudflare/workers-types': 4.20260213.0 + '@cloudflare/workers-types': 4.20260227.0 '@libsql/client': 0.17.0 '@opentelemetry/api': 1.9.0 @@ -22208,7 +22204,7 @@ snapshots: ipaddr.js@2.3.0: {} - ipx@3.1.1(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2): + ipx@3.1.1(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2): dependencies: '@fastify/accept-negotiator': 2.0.1 citty: 0.1.6 @@ -22224,7 +22220,7 @@ snapshots: sharp: 0.34.5 svgo: 4.0.0 ufo: 1.6.3 - unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2) + unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2) xss: 1.0.15 transitivePeerDependencies: - '@azure/app-configuration' @@ -22440,19 +22436,6 @@ snapshots: jsonpointer@5.0.1: {} - jsonwebtoken@9.0.2: - dependencies: - jws: 3.2.3 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.7.4 - jsonwebtoken@9.0.3: dependencies: jws: 4.0.1 @@ -22477,23 +22460,12 @@ snapshots: just-map-values@3.2.0: {} - jwa@1.4.2: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - jws@3.2.3: - dependencies: - jwa: 1.4.2 - safe-buffer: 5.2.1 - jws@4.0.1: dependencies: jwa: 2.0.1 @@ -23367,12 +23339,12 @@ snapshots: mimic-response@3.1.0: optional: true - miniflare@4.20260212.0: + miniflare@4.20260219.0: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 undici: 7.18.2 - workerd: 1.20260212.0 + workerd: 1.20260219.0 ws: 8.18.0 youch: 4.1.0-beta.10 transitivePeerDependencies: @@ -25653,7 +25625,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 - unstorage@1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.6.0)(@vercel/functions@3.4.2): + unstorage@1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.2): dependencies: anymatch: 3.1.3 chokidar: 5.0.0 @@ -25665,7 +25637,7 @@ snapshots: ufo: 1.6.3 optionalDependencies: '@azure/identity': 4.13.0 - '@netlify/blobs': 10.6.0 + '@netlify/blobs': 10.7.0 '@vercel/functions': 3.4.2 untun@0.1.3: @@ -26229,28 +26201,28 @@ snapshots: word-wrap@1.2.5: {} - workerd@1.20260212.0: + workerd@1.20260219.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260212.0 - '@cloudflare/workerd-darwin-arm64': 1.20260212.0 - '@cloudflare/workerd-linux-64': 1.20260212.0 - '@cloudflare/workerd-linux-arm64': 1.20260212.0 - '@cloudflare/workerd-windows-64': 1.20260212.0 + '@cloudflare/workerd-darwin-64': 1.20260219.0 + '@cloudflare/workerd-darwin-arm64': 1.20260219.0 + '@cloudflare/workerd-linux-64': 1.20260219.0 + '@cloudflare/workerd-linux-arm64': 1.20260219.0 + '@cloudflare/workerd-windows-64': 1.20260219.0 workerpool@9.3.4: {} - wrangler@4.65.0(@cloudflare/workers-types@4.20260213.0): + wrangler@4.67.0(@cloudflare/workers-types@4.20260227.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260212.0) + '@cloudflare/unenv-preset': 2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260219.0) blake3-wasm: 2.1.5 esbuild: 0.27.3 - miniflare: 4.20260212.0 + miniflare: 4.20260219.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260212.0 + workerd: 1.20260219.0 optionalDependencies: - '@cloudflare/workers-types': 4.20260213.0 + '@cloudflare/workers-types': 4.20260227.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil From f6473fd45b74291e1a038f2f4142eb61a932d01d Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 23 Feb 2026 14:22:51 +0000 Subject: [PATCH 5/8] perf: SSR rendering optimizations (#15605) * bench: add targeted rendering performance benchmarks Add benchmarks isolating specific rendering hot paths: - many-components: markHTMLString/isHTMLString/validateComponentProps - many-expressions: renderChild dispatch ordering, escapeHTML - many-head-elements: head deduplication - many-slots: eager slot prerendering - large-array: BufferedRenderer per array child - static-heavy: baseline for static HTML overhead * perf: rendering optimizations (A+B+C+E+F, no WeakMap cache) * chore: add changeset for rendering perf optimizations * Changes from review --- .changeset/fast-wolves-render.md | 7 + benchmark/bench/codspeed-setup.js | 24 +- benchmark/bench/rendering-perf.bench.js | 90 ++++++ benchmark/make-project/rendering-perf.js | 285 ++++++++++++++++++ packages/astro/src/runtime/server/escape.ts | 2 +- .../astro/src/runtime/server/render/any.ts | 77 +++-- .../server/render/astro/render-template.ts | 85 ++++-- .../astro/src/runtime/server/render/head.ts | 64 ++-- 8 files changed, 534 insertions(+), 100 deletions(-) create mode 100644 .changeset/fast-wolves-render.md create mode 100644 benchmark/bench/rendering-perf.bench.js create mode 100644 benchmark/make-project/rendering-perf.js diff --git a/.changeset/fast-wolves-render.md b/.changeset/fast-wolves-render.md new file mode 100644 index 000000000000..28ba531e297e --- /dev/null +++ b/.changeset/fast-wolves-render.md @@ -0,0 +1,7 @@ +--- +'astro': patch +--- + +Improves `.astro` component SSR rendering performance by up to 2x. + +This includes several optimizations to the way that Astro generates and renders components on the server. These are mostly micro-optimizations, but they add up to a significant improvement in performance. Most pages will benefit, but pages with many components will see the biggest improvement, as will pages with lots of strings (e.g. text-heavy pages with lots of HTML elements). diff --git a/benchmark/bench/codspeed-setup.js b/benchmark/bench/codspeed-setup.js index 23c6bbdaa7de..043ab45c3051 100644 --- a/benchmark/bench/codspeed-setup.js +++ b/benchmark/bench/codspeed-setup.js @@ -4,21 +4,23 @@ import { astroBin, makeProject } from './_util.js'; /** * Setup script for codspeed benchmarks. - * This builds the render-bench project which is required for the rendering benchmarks. + * This builds the benchmark projects which are required for the rendering benchmarks. * This is separated out so it can run in a separate CI job since it takes a long time. */ async function setup() { - console.log('Setting up render-bench project...'); - const render = await makeProject('render-bench'); - const root = fileURLToPath(render); + for (const name of ['render-bench', 'rendering-perf']) { + console.log(`Setting up ${name} project...`); + const projectDir = await makeProject(name); + const root = fileURLToPath(projectDir); - console.log(`Building project at ${root}...`); - await exec(astroBin, ['build'], { - nodeOptions: { - cwd: root, - stdio: 'inherit', - }, - }); + console.log(`Building project at ${root}...`); + await exec(astroBin, ['build'], { + nodeOptions: { + cwd: root, + stdio: 'inherit', + }, + }); + } } setup().catch((error) => { diff --git a/benchmark/bench/rendering-perf.bench.js b/benchmark/bench/rendering-perf.bench.js new file mode 100644 index 000000000000..db71f7691570 --- /dev/null +++ b/benchmark/bench/rendering-perf.bench.js @@ -0,0 +1,90 @@ +import { existsSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { beforeAll, bench, describe } from 'vitest'; + +/** + * Rendering performance benchmarks targeting specific hot paths from RENDERING_PERF_PLAN.md. + * + * Each page isolates a different performance pattern: + * - many-components: #1 markHTMLString, #2 isHTMLString, #6 validateComponentProps + * - many-expressions: #2 isHTMLString, #5 renderChild dispatch, #10 escapeHTML + * - many-head-elements: #3 head dedup O(N²) + * - many-slots: #9 eager slot prerendering + * - large-array: #8 BufferedRenderer per array child + * - static-heavy: #1 markHTMLString baseline, #11/#12 future comparison + * + * Requires: pnpm run build:bench + */ + +const projectRoot = new URL('../projects/rendering-perf/', import.meta.url); + +let streamingApp; +let nonStreamingApp; + +beforeAll(async () => { + const entry = new URL('./dist/server/entry.mjs', projectRoot); + + if (!existsSync(fileURLToPath(entry))) { + throw new Error( + 'rendering-perf project not built. Please run `pnpm run build:bench` before running the benchmarks.', + ); + } + + const { createApp } = await import(entry); + streamingApp = createApp(true); + nonStreamingApp = createApp(false); +}, 900000); + +// Non-streaming (prerender path) — this is the primary target for most optimizations +// since it's the path where all the overhead is synchronous and measurable. +describe('Rendering perf (non-streaming)', () => { + bench('many-components (markHTMLString, isHTMLString, validateProps)', async () => { + const request = new Request(new URL('http://example.com/many-components')); + await nonStreamingApp.render(request); + }); + + bench('many-expressions (renderChild dispatch, escapeHTML)', async () => { + const request = new Request(new URL('http://example.com/many-expressions')); + await nonStreamingApp.render(request); + }); + + bench('many-head-elements (head dedup)', async () => { + const request = new Request(new URL('http://example.com/many-head-elements')); + await nonStreamingApp.render(request); + }); + + bench('many-slots (eager slot prerendering)', async () => { + const request = new Request(new URL('http://example.com/many-slots')); + await nonStreamingApp.render(request); + }); + + bench('large-array (BufferedRenderer per child)', async () => { + const request = new Request(new URL('http://example.com/large-array')); + await nonStreamingApp.render(request); + }); + + bench('static-heavy (markHTMLString baseline)', async () => { + const request = new Request(new URL('http://example.com/static-heavy')); + await nonStreamingApp.render(request); + }); +}); + +// Streaming path — included for comparison. Optimizations to the sync path +// (#1, #2, #5, #6) should show up here too, but BufferedRenderer (#8) and +// slot prerendering (#9) may behave differently. +describe('Rendering perf (streaming)', () => { + bench('many-components [streaming]', async () => { + const request = new Request(new URL('http://example.com/many-components')); + await streamingApp.render(request); + }); + + bench('many-expressions [streaming]', async () => { + const request = new Request(new URL('http://example.com/many-expressions')); + await streamingApp.render(request); + }); + + bench('large-array [streaming]', async () => { + const request = new Request(new URL('http://example.com/large-array')); + await streamingApp.render(request); + }); +}); diff --git a/benchmark/make-project/rendering-perf.js b/benchmark/make-project/rendering-perf.js new file mode 100644 index 000000000000..453972ca5dc2 --- /dev/null +++ b/benchmark/make-project/rendering-perf.js @@ -0,0 +1,285 @@ +import fs from 'node:fs/promises'; +import { loremIpsumHtml } from './_util.js'; + +/** + * Generates a benchmark project targeting specific rendering hot paths + * identified in RENDERING_PERF_PLAN.md. Each page isolates a different + * performance-sensitive pattern so we can measure the impact of optimizations. + */ + +// --------------------------------------------------------------------------- +// Components +// --------------------------------------------------------------------------- + +const components = { + // A leaf component with ~4 static HTML parts and a few expressions. + // Used by many-components to stress markHTMLString + isHTMLString (#1, #2). + 'components/Card.astro': `\ +--- +const { title, href, index } = Astro.props; +--- +
+
+

{title}

+
+
+

Card number {index}, rendering static content around expressions.

+
+
+ Item {index} +
+
+`, + + // A wrapper component that renders children via a default slot. + // Used by many-slots to stress eager slot prerendering (#9). + 'components/Section.astro': `\ +--- +const { heading } = Astro.props; +--- +
+

{heading}

+ +
+`, + + // A component with 3 named slots — only default is typically used. + // Stresses eager slot prerendering (#9). + 'components/Layout.astro': `\ +--- +const { title } = Astro.props; +--- + + + {title} + + + +
+
+
+ + +`, + + // A component that contributes a +`, + + // A component that contributes a unique +`, +}; + +// --------------------------------------------------------------------------- +// Pages +// --------------------------------------------------------------------------- + +const pages = { + // #1, #2, #6: 200 Astro component instances, each with ~4 HTML parts. + // Stresses markHTMLString allocs, isHTMLString checks, validateComponentProps. + 'pages/many-components.astro': `\ +--- +import Card from '../components/Card.astro'; +const items = Array.from({ length: 200 }, (_, i) => ({ + title: \`Card \${i}\`, + href: \`/card/\${i}\`, + index: i, +})); +--- + + Many Components + +

200 Component Instances

+ {items.map((item) => ( + + ))} + + +`, + + // #2, #5, #10: Thousands of text expressions ({value}). + // Stresses renderChild dispatch ordering, isHTMLString, escapeHTML. + 'pages/many-expressions.astro': `\ +--- +const items = Array.from({ length: 2000 }, (_, i) => ({ + name: \`Item \${i}\`, + value: i * 17, + label: i % 2 === 0 ? "even" : "odd", +})); +const title = "Expression Heavy Page"; +const subtitle = "Testing renderChild dispatch"; +--- + + {title} + +

{title}

+

{subtitle}

+ + + + + + {items.map((item) => ( + + + + + + ))} + +
NameValueLabel
{item.name}{item.value}{item.label}
+ + +`, + + // #3: 60 components each contributing styles to . + // Stresses head deduplication O(N^2) with JSON.stringify. + 'pages/many-head-elements.astro': `\ +--- +import StyledWidget from '../components/StyledWidget.astro'; +import UniqueStyled from '../components/UniqueStyled.astro'; +// 30 instances of same component (dedup should collapse these) +const duplicated = Array.from({ length: 30 }, (_, i) => i); +// 30 instances with unique styles (dedup must compare all) +const unique = Array.from({ length: 30 }, (_, i) => i); +--- + + Many Head Elements + +

Head Deduplication Stress Test

+ {duplicated.map((i) => ( + + ))} + {unique.map((i) => ( + + ))} + + +`, + + // #9: Components with multiple named slots, only default used. + // Stresses eager slot prerendering of unused slots. + 'pages/many-slots.astro': `\ +--- +import Layout from '../components/Layout.astro'; +import Section from '../components/Section.astro'; +const sections = Array.from({ length: 100 }, (_, i) => ({ + heading: \`Section \${i}\`, + content: \`Content for section \${i} with some text to render.\`, +})); +--- + +

100 Sections with Slots

+ {sections.map((s) => ( +
+

{s.content}

+
+ ))} +
+`, + + // #8: Large array .map() with component children. + // Stresses BufferedRenderer-per-array-child allocation. + 'pages/large-array.astro': `\ +--- +import Card from '../components/Card.astro'; +const items = Array.from({ length: 5000 }, (_, i) => ({ + title: \`Item \${i}\`, + href: \`/item/\${i}\`, + index: i, +})); +--- + + Large Array + +

5000 Array Items with Components

+
+ {items.map((item) => ( + + ))} +
+ + +`, + + // #1, #11, #12: Mostly static HTML with very few expressions. + // Baseline for measuring overhead of the rendering machinery on static content. + 'pages/static-heavy.astro': `\ +--- +const title = "Static Heavy Page"; +--- + + {title} + +

{title}

+ ${Array.from({ length: 200 }) + .map( + (_, i) => `
+

Section ${i}

+

${loremIpsumHtml}

+

${loremIpsumHtml}

+
`, + ) + .join('\n ')} + + +`, +}; + +// --------------------------------------------------------------------------- +// Exports +// --------------------------------------------------------------------------- + +export const renderPages = Object.keys(pages) + .filter((f) => f.startsWith('pages/')) + .map((f) => f.replace('pages/', '')); + +/** + * @param {URL} projectDir + */ +export async function run(projectDir) { + await fs.rm(projectDir, { recursive: true, force: true }); + await fs.mkdir(new URL('./src/pages', projectDir), { recursive: true }); + await fs.mkdir(new URL('./src/components', projectDir), { recursive: true }); + + const allFiles = { ...components, ...pages }; + + await Promise.all( + Object.entries(allFiles).map(([name, content]) => { + return fs.writeFile(new URL(`./src/${name}`, projectDir), content, 'utf-8'); + }), + ); + + await fs.writeFile( + new URL('./astro.config.js', projectDir), + `\ +import { defineConfig } from 'astro/config'; +import adapter from '@benchmark/adapter'; + +export default defineConfig({ + output: 'server', + adapter: adapter(), +});`, + 'utf-8', + ); +} diff --git a/packages/astro/src/runtime/server/escape.ts b/packages/astro/src/runtime/server/escape.ts index 1dbfd3725a88..1bd90785dbf8 100644 --- a/packages/astro/src/runtime/server/escape.ts +++ b/packages/astro/src/runtime/server/escape.ts @@ -48,7 +48,7 @@ export const markHTMLString = (value: any) => { }; export function isHTMLString(value: any): value is HTMLString { - return Object.prototype.toString.call(value) === '[object HTMLString]'; + return value instanceof HTMLString; } function markHTMLBytes(bytes: Uint8Array) { diff --git a/packages/astro/src/runtime/server/render/any.ts b/packages/astro/src/runtime/server/render/any.ts index b56ca7cdac87..4f17e28cd01b 100644 --- a/packages/astro/src/runtime/server/render/any.ts +++ b/packages/astro/src/runtime/server/render/any.ts @@ -6,6 +6,13 @@ import { SlotString } from './slot.js'; import { createBufferedRenderer } from './util.js'; export function renderChild(destination: RenderDestination, child: any): void | Promise { + // Strings are the most common child type (text expressions like {title}, {name}) + // so check them first for the fastest dispatch in the common case. + if (typeof child === 'string') { + destination.write(markHTMLString(escapeHTML(child))); + return; + } + if (isPromise(child)) { return child.then((x) => renderChild(destination, x)); } @@ -20,6 +27,11 @@ export function renderChild(destination: RenderDestination, child: any): void | return; } + if (!child && child !== 0) { + // do nothing, safe to ignore falsey values. + return; + } + if (Array.isArray(child)) { return renderArray(destination, child); } @@ -31,16 +43,6 @@ export function renderChild(destination: RenderDestination, child: any): void | return renderChild(destination, child()); } - if (!child && child !== 0) { - // do nothing, safe to ignore falsey values. - return; - } - - if (typeof child === 'string') { - destination.write(markHTMLString(escapeHTML(child))); - return; - } - if (isRenderInstance(child)) { return child.render(destination); } @@ -70,32 +72,43 @@ export function renderChild(destination: RenderDestination, child: any): void | } function renderArray(destination: RenderDestination, children: any[]): void | Promise { - // Render all children eagerly and in parallel - const flushers = children.map((c) => { - return createBufferedRenderer(destination, (bufferDestination) => { - return renderChild(bufferDestination, c); - }); - }); - - const iterator = flushers[Symbol.iterator](); - - const iterate = (): void | Promise => { - for (;;) { - const { value: flusher, done } = iterator.next(); - - if (done) { - break; + // Fast path: render children one at a time directly to the destination. + // If all children are sync, no buffering is needed at all. + // If a child returns a Promise, fall back to buffered rendering for + // the remaining children to preserve output ordering. + for (let i = 0; i < children.length; i++) { + const result = renderChild(destination, children[i]); + + if (isPromise(result)) { + // This child is async. Buffer remaining children in parallel + // to preserve ordering, then flush them sequentially. + if (i + 1 >= children.length) { + // No remaining children, just wait for this one + return result; } - const result = flusher.flush(); - - if (isPromise(result)) { - return result.then(iterate); + const remaining = children.length - i - 1; + const flushers = new Array(remaining); + for (let j = 0; j < remaining; j++) { + flushers[j] = createBufferedRenderer(destination, (bufferDestination) => { + return renderChild(bufferDestination, children[i + 1 + j]); + }); } - } - }; - return iterate(); + return result.then(() => { + let k = 0; + const iterate = (): void | Promise => { + while (k < flushers.length) { + const flushResult = flushers[k++].flush(); + if (isPromise(flushResult)) { + return flushResult.then(iterate); + } + } + }; + return iterate(); + }); + } + } } function renderIterable( diff --git a/packages/astro/src/runtime/server/render/astro/render-template.ts b/packages/astro/src/runtime/server/render/astro/render-template.ts index 330368a6ab1b..48d3be8fa9e3 100644 --- a/packages/astro/src/runtime/server/render/astro/render-template.ts +++ b/packages/astro/src/runtime/server/render/astro/render-template.ts @@ -33,44 +33,71 @@ export class RenderTemplateResult { } render(destination: RenderDestination): void | Promise { - // Render all expressions eagerly and in parallel - const flushers = this.expressions.map((exp) => { - return createBufferedRenderer(destination, (bufferDestination) => { - // Skip render if falsy, except the number 0 - if (exp || exp === 0) { - return renderChild(bufferDestination, exp); - } - }); - }); + // Fast path: render HTML parts and expressions directly to the + // destination without buffering. If all expressions are sync, + // this avoids all BufferedRenderer allocations. When an async + // expression is encountered, fall back to buffered rendering + // for the remaining expressions to preserve output ordering. + // + // Template structure: html[0] exp[0] html[1] exp[1] ... html[N] + // (htmlParts.length === expressions.length + 1) + const { htmlParts, expressions } = this; - let i = 0; + for (let i = 0; i < htmlParts.length; i++) { + const html = htmlParts[i]; + if (html) { + destination.write(markHTMLString(html)); + } - const iterate = (): void | Promise => { - while (i < this.htmlParts.length) { - const html = this.htmlParts[i]; - const flusher = flushers[i]; + // expressions[i] doesn't exist for the last htmlPart + if (i >= expressions.length) break; - // increment here due to potential return in - // Promise scenario - i++; + const exp = expressions[i]; + // Skip render if falsy, except the number 0 + if (!(exp || exp === 0)) continue; - if (html) { - // only write non-empty strings + const result = renderChild(destination, exp); - destination.write(markHTMLString(html)); + if (isPromise(result)) { + // This expression is async. Buffer remaining expressions + // in parallel to preserve ordering, then flush sequentially. + const startIdx = i + 1; + const remaining = expressions.length - startIdx; + const flushers = new Array(remaining); + for (let j = 0; j < remaining; j++) { + const rExp = expressions[startIdx + j]; + flushers[j] = createBufferedRenderer(destination, (bufferDestination) => { + if (rExp || rExp === 0) { + return renderChild(bufferDestination, rExp); + } + }); } - if (flusher) { - const result = flusher.flush(); + return result.then(() => { + let k = 0; + const iterate = (): void | Promise => { + while (k < flushers.length) { + // Write the HTML part that precedes this expression + const rHtml = htmlParts[startIdx + k]; + if (rHtml) { + destination.write(markHTMLString(rHtml)); + } - if (isPromise(result)) { - return result.then(iterate); - } - } + const flushResult = flushers[k++].flush(); + if (isPromise(flushResult)) { + return flushResult.then(iterate); + } + } + // Write the final trailing HTML part + const lastHtml = htmlParts[htmlParts.length - 1]; + if (lastHtml) { + destination.write(markHTMLString(lastHtml)); + } + }; + return iterate(); + }); } - }; - - return iterate(); + } } } diff --git a/packages/astro/src/runtime/server/render/head.ts b/packages/astro/src/runtime/server/render/head.ts index 48ce553dea98..333cce4dfe9e 100644 --- a/packages/astro/src/runtime/server/render/head.ts +++ b/packages/astro/src/runtime/server/render/head.ts @@ -5,14 +5,30 @@ import type { MaybeRenderHeadInstruction, RenderHeadInstruction } from './instru import { createRenderInstruction } from './instruction.js'; import { renderElement } from './util.js'; -// Filter out duplicate elements in our set -const uniqueElements = (item: any, index: number, all: any[]) => { - const props = JSON.stringify(item.props); - const children = item.children; - return ( - index === all.findIndex((i) => JSON.stringify(i.props) === props && i.children === children) - ); -}; +// Deterministic stringification of props that is key-order independent, +// so elements with the same props in different insertion order are still deduped. +function stablePropsKey(props: Record): string { + const keys = Object.keys(props).sort(); + let result = '{'; + for (let i = 0; i < keys.length; i++) { + if (i > 0) result += ','; + result += JSON.stringify(keys[i]) + ':' + JSON.stringify(props[keys[i]]); + } + result += '}'; + return result; +} + +// Filter out duplicate elements using a Set for O(N) instead of O(N²) +function deduplicateElements(elements: any[]): any[] { + if (elements.length <= 1) return elements; + const seen = new Set(); + return elements.filter((item) => { + const key = stablePropsKey(item.props) + item.children; + if (seen.has(key)) return false; + seen.add(key); + return true; + }); +} export function renderAllHeadContent(result: SSRResult) { result._metadata.hasRenderedHead = true; @@ -30,27 +46,21 @@ export function renderAllHeadContent(result: SSRResult) { false, ); } - const styles = Array.from(result.styles) - .filter(uniqueElements) - .map((style) => - style.props.rel === 'stylesheet' - ? renderElement('link', style) - : renderElement('style', style), - ); + const styles = deduplicateElements(Array.from(result.styles)).map((style) => + style.props.rel === 'stylesheet' ? renderElement('link', style) : renderElement('style', style), + ); // Clear result.styles so that any new styles added will be inlined. result.styles.clear(); - const scripts = Array.from(result.scripts) - .filter(uniqueElements) - .map((script) => { - if (result.userAssetsBase) { - script.props.src = - (result.base === '/' ? '' : result.base) + result.userAssetsBase + script.props.src; - } - return renderElement('script', script, false); - }); - const links = Array.from(result.links) - .filter(uniqueElements) - .map((link) => renderElement('link', link, false)); + const scripts = deduplicateElements(Array.from(result.scripts)).map((script) => { + if (result.userAssetsBase) { + script.props.src = + (result.base === '/' ? '' : result.base) + result.userAssetsBase + script.props.src; + } + return renderElement('script', script, false); + }); + const links = deduplicateElements(Array.from(result.links)).map((link) => + renderElement('link', link, false), + ); // Order styles -> links -> scripts similar to src/content/runtime.ts // The order is usually fine as the ordering between these groups are mutually exclusive, From 98ea30c56d6d317d76e2290ed903f11961204714 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Mon, 23 Feb 2026 09:34:06 -0500 Subject: [PATCH 6/8] Limit action request body size (#15564) (#15585) * Limit the size of an action payload Limits the size to prevent exhausting the server and potentionally crashing it. * fix build --- .changeset/giant-bananas-sit.md | 6 ++ packages/astro/src/actions/runtime/server.ts | 65 +++++++++++++++++++- packages/astro/test/actions.test.js | 41 ++++++++++++ 3 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 .changeset/giant-bananas-sit.md diff --git a/.changeset/giant-bananas-sit.md b/.changeset/giant-bananas-sit.md new file mode 100644 index 000000000000..f310f9982fc5 --- /dev/null +++ b/.changeset/giant-bananas-sit.md @@ -0,0 +1,6 @@ +--- +'astro': patch +'@astrojs/node': patch +--- + +Add a default body size limit for server actions to prevent oversized requests from exhausting memory. diff --git a/packages/astro/src/actions/runtime/server.ts b/packages/astro/src/actions/runtime/server.ts index 8e7180c317d5..d015466121cb 100644 --- a/packages/astro/src/actions/runtime/server.ts +++ b/packages/astro/src/actions/runtime/server.ts @@ -199,6 +199,9 @@ export function getActionContext(context: APIContext): AstroActionContext { try { input = await parseRequestBody(context.request); } catch (e) { + if (e instanceof ActionError) { + return { data: undefined, error: e }; + } if (e instanceof TypeError) { return { data: undefined, error: new ActionError({ code: 'UNSUPPORTED_MEDIA_TYPE' }) }; } @@ -250,16 +253,41 @@ function getCallerInfo(ctx: APIContext) { return undefined; } +const DEFAULT_ACTION_BODY_SIZE_LIMIT = 1024 * 1024; + async function parseRequestBody(request: Request) { const contentType = request.headers.get('content-type'); - const contentLength = request.headers.get('Content-Length'); + const contentLengthHeader = request.headers.get('content-length'); + const contentLength = contentLengthHeader ? Number.parseInt(contentLengthHeader, 10) : undefined; + const hasContentLength = typeof contentLength === 'number' && Number.isFinite(contentLength); if (!contentType) return undefined; + if (hasContentLength && contentLength > DEFAULT_ACTION_BODY_SIZE_LIMIT) { + throw new ActionError({ + code: 'CONTENT_TOO_LARGE', + message: `Request body exceeds ${DEFAULT_ACTION_BODY_SIZE_LIMIT} bytes`, + }); + } if (hasContentType(contentType, formContentTypes)) { + if (!hasContentLength) { + const body = await readRequestBodyWithLimit(request.clone(), DEFAULT_ACTION_BODY_SIZE_LIMIT); + const formRequest = new Request(request.url, { + method: request.method, + headers: request.headers, + body: toArrayBuffer(body), + }); + return await formRequest.formData(); + } return await request.clone().formData(); } if (hasContentType(contentType, ['application/json'])) { - return contentLength === '0' ? undefined : await request.clone().json(); + if (contentLength === 0) return undefined; + if (!hasContentLength) { + const body = await readRequestBodyWithLimit(request.clone(), DEFAULT_ACTION_BODY_SIZE_LIMIT); + if (body.byteLength === 0) return undefined; + return JSON.parse(new TextDecoder().decode(body)); + } + return await request.clone().json(); } throw new TypeError('Unsupported content type'); } @@ -444,3 +472,36 @@ export function serializeActionResult(res: SafeResult): SerializedActi body, }; } +async function readRequestBodyWithLimit(request: Request, limit: number): Promise { + if (!request.body) return new Uint8Array(); + const reader = request.body.getReader(); + const chunks: Uint8Array[] = []; + let received = 0; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + if (value) { + received += value.byteLength; + if (received > limit) { + throw new ActionError({ + code: 'CONTENT_TOO_LARGE', + message: `Request body exceeds ${limit} bytes`, + }); + } + chunks.push(value); + } + } + const buffer = new Uint8Array(received); + let offset = 0; + for (const chunk of chunks) { + buffer.set(chunk, offset); + offset += chunk.byteLength; + } + return buffer; +} + +function toArrayBuffer(buffer: Uint8Array): ArrayBuffer { + const copy = new Uint8Array(buffer.byteLength); + copy.set(buffer); + return copy.buffer; +} diff --git a/packages/astro/test/actions.test.js b/packages/astro/test/actions.test.js index 7f3e4bd0f08c..91fce8b59660 100644 --- a/packages/astro/test/actions.test.js +++ b/packages/astro/test/actions.test.js @@ -66,6 +66,26 @@ describe('Astro Actions', () => { assert.equal(data.subscribeButtonState, 'smashed'); }); + it('Rejects oversized JSON action body', async () => { + const largeActionPayload = JSON.stringify({ + channel: 'a'.repeat(2 * 1024 * 1024), + }); + const res = await fixture.fetch('/_actions/subscribe', { + method: 'POST', + body: largeActionPayload, + headers: { + 'Content-Type': 'application/json', + }, + }); + + assert.equal(res.ok, false); + assert.equal(res.status, 413); + assert.equal(res.headers.get('Content-Type'), 'application/json'); + + const data = await res.json(); + assert.equal(data.code, 'CONTENT_TOO_LARGE'); + }); + it('Exposes comment action', async () => { const formData = new FormData(); formData.append('channel', 'bholmesdev'); @@ -180,6 +200,27 @@ describe('Astro Actions', () => { assert.equal(data.subscribeButtonState, 'smashed'); }); + it('Rejects oversized JSON action body', async () => { + const largeActionPayload = JSON.stringify({ + channel: 'a'.repeat(2 * 1024 * 1024), + }); + const req = new Request('http://example.com/_actions/subscribe', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: largeActionPayload, + }); + const res = await app.render(req); + + assert.equal(res.ok, false); + assert.equal(res.status, 413); + assert.equal(res.headers.get('Content-Type'), 'application/json'); + + const data = await res.json(); + assert.equal(data.code, 'CONTENT_TOO_LARGE'); + }); + it('Exposes comment action', async () => { const formData = new FormData(); formData.append('channel', 'bholmesdev'); From bbfa7c8b73776976c93f41203fdcb7bf44ad6cc2 Mon Sep 17 00:00:00 2001 From: Rafael Yasuhide Sudo Date: Tue, 24 Feb 2026 00:04:54 +0900 Subject: [PATCH 7/8] fix(preact): avoid triggering React 19 hook error logs (#15619) --- .changeset/calm-bats-create.md | 5 +++ .../astro.config.mjs | 12 ++++++ .../react19-preact-hook-error/package.json | 15 +++++++ .../src/components/preact/PreactCounter.tsx | 20 +++++++++ .../src/components/react/ReactCounter.tsx | 19 +++++++++ .../src/pages/index.astro | 28 +++++++++++++ .../src/styles/global.css | 21 ++++++++++ .../e2e/react19-preact-hook-error.test.js | 42 +++++++++++++++++++ packages/integrations/preact/src/server.ts | 7 +++- pnpm-lock.yaml | 22 ++++++++++ 10 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 .changeset/calm-bats-create.md create mode 100644 packages/astro/e2e/fixtures/react19-preact-hook-error/astro.config.mjs create mode 100644 packages/astro/e2e/fixtures/react19-preact-hook-error/package.json create mode 100644 packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/preact/PreactCounter.tsx create mode 100644 packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/react/ReactCounter.tsx create mode 100644 packages/astro/e2e/fixtures/react19-preact-hook-error/src/pages/index.astro create mode 100644 packages/astro/e2e/fixtures/react19-preact-hook-error/src/styles/global.css create mode 100644 packages/astro/e2e/react19-preact-hook-error.test.js diff --git a/.changeset/calm-bats-create.md b/.changeset/calm-bats-create.md new file mode 100644 index 000000000000..3d11c5ec15dc --- /dev/null +++ b/.changeset/calm-bats-create.md @@ -0,0 +1,5 @@ +--- +'@astrojs/preact': patch +--- + +Fixed an issue where the Preact integration would incorrectly intercept React 19 components, triggering "Invalid hook call" error logs. diff --git a/packages/astro/e2e/fixtures/react19-preact-hook-error/astro.config.mjs b/packages/astro/e2e/fixtures/react19-preact-hook-error/astro.config.mjs new file mode 100644 index 000000000000..7640254b068b --- /dev/null +++ b/packages/astro/e2e/fixtures/react19-preact-hook-error/astro.config.mjs @@ -0,0 +1,12 @@ +import preact from '@astrojs/preact'; +import react from '@astrojs/react'; +import { defineConfig } from 'astro/config'; + +// https://astro.build/config +export default defineConfig({ + integrations: [ + // This issue only reproduces when the Preact integration is placed before the React integration. + preact({ include: ['**/preact/*'] }), + react({ include: ['**/react/*'] }), + ], +}); diff --git a/packages/astro/e2e/fixtures/react19-preact-hook-error/package.json b/packages/astro/e2e/fixtures/react19-preact-hook-error/package.json new file mode 100644 index 000000000000..3b1fc64a4d6e --- /dev/null +++ b/packages/astro/e2e/fixtures/react19-preact-hook-error/package.json @@ -0,0 +1,15 @@ +{ + "name": "@e2e/react19-preact-hook-error", + "version": "0.0.0", + "private": true, + "devDependencies": { + "@astrojs/preact": "workspace:*", + "@astrojs/react": "workspace:*", + "astro": "workspace:*" + }, + "dependencies": { + "preact": "^10.28.3", + "react": "^19.2.4", + "react-dom": "^19.2.4" + } +} diff --git a/packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/preact/PreactCounter.tsx b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/preact/PreactCounter.tsx new file mode 100644 index 000000000000..ace9c01ba428 --- /dev/null +++ b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/preact/PreactCounter.tsx @@ -0,0 +1,20 @@ +import type { ComponentChildren } from 'preact'; +import { useState } from 'preact/hooks'; + +/** A counter written with Preact */ +export function PreactCounter({ children }: { children?: ComponentChildren }) { + const [count, setCount] = useState(0); + const add = () => setCount((i) => i + 1); + const subtract = () => setCount((i) => i - 1); + + return ( + <> +
+ +
{count}
+ +
+
{children}
+ + ); +} diff --git a/packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/react/ReactCounter.tsx b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/react/ReactCounter.tsx new file mode 100644 index 000000000000..02eb1953907d --- /dev/null +++ b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/components/react/ReactCounter.tsx @@ -0,0 +1,19 @@ +import { useState } from 'react'; + +/** a counter written in React */ +export function Counter({ children, id }) { + const [count, setCount] = useState(0); + const add = () => setCount((i) => i + 1); + const subtract = () => setCount((i) => i - 1); + + return ( + <> +
+ +
{count}
+ +
+
{children}
+ + ); +} diff --git a/packages/astro/e2e/fixtures/react19-preact-hook-error/src/pages/index.astro b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/pages/index.astro new file mode 100644 index 000000000000..7dfd9f20de49 --- /dev/null +++ b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/pages/index.astro @@ -0,0 +1,28 @@ +--- +// Style Imports +import '../styles/global.css'; + +import { PreactCounter } from '../components/preact/PreactCounter'; +import * as react from '../components/react/ReactCounter'; +--- + + + + + + + + + + +
+ +

Hello from React!

+
+ + +

Hello from Preact!

+
+
+ + diff --git a/packages/astro/e2e/fixtures/react19-preact-hook-error/src/styles/global.css b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/styles/global.css new file mode 100644 index 000000000000..4912b4c399a4 --- /dev/null +++ b/packages/astro/e2e/fixtures/react19-preact-hook-error/src/styles/global.css @@ -0,0 +1,21 @@ +html, +body { + font-family: system-ui; + margin: 0; +} + +body { + padding: 2rem; +} + +.counter { + display: grid; + font-size: 2em; + grid-template-columns: repeat(3, minmax(0, 1fr)); + margin-top: 2em; + place-items: center; +} + +.counter-message { + text-align: center; +} diff --git a/packages/astro/e2e/react19-preact-hook-error.test.js b/packages/astro/e2e/react19-preact-hook-error.test.js new file mode 100644 index 000000000000..3a28375cbcec --- /dev/null +++ b/packages/astro/e2e/react19-preact-hook-error.test.js @@ -0,0 +1,42 @@ +import { expect } from '@playwright/test'; +import { testFactory } from './test-utils.js'; + +const test = testFactory(import.meta.url, { root: './fixtures/react19-preact-hook-error/' }); + +function hookError() { + const error = console.error; + const errors = []; + console.error = function (...args) { + errors.push(args); + }; + return () => { + console.error = error; + return errors; + }; +} + +let devServer; +let unhook; + +test.beforeAll(async ({ astro }) => { + devServer = await astro.startDevServer(); + unhook = hookError(); +}); + +test.afterAll(async () => { + await devServer.stop(); +}); + +// See: https://github.com/withastro/astro/issues/15341 +test.describe('React v19 and preact hook issue', () => { + test('should not have "Invalid hook call" errors', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + + const errors = unhook(); + const hasInvalidHookCallErrorLog = errors + .flat() + .some((log) => log.includes('Invalid hook call')); + + expect(hasInvalidHookCallErrorLog).toBe(false); + }); +}); diff --git a/packages/integrations/preact/src/server.ts b/packages/integrations/preact/src/server.ts index fde181343c75..193bb87f6600 100644 --- a/packages/integrations/preact/src/server.ts +++ b/packages/integrations/preact/src/server.ts @@ -136,8 +136,11 @@ function filteredConsoleError(msg: string, ...rest: any[]) { // When attempting this on a React component, React may output // the following error, which we can safely filter out: const isKnownReactHookError = - msg.includes('Warning: Invalid hook call.') && - msg.includes('https://reactjs.org/link/invalid-hook-call'); + msg.includes('Invalid hook call.') && + // for React v18 and earlier + (msg.includes('https://reactjs.org/link/invalid-hook-call') || + // for React v19 and later + msg.includes('https://react.dev/link/invalid-hook-call')); if (isKnownReactHookError) return; } originalConsoleError(msg, ...rest); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 137df9a15ef2..12ad52208a51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1558,6 +1558,28 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) + packages/astro/e2e/fixtures/react19-preact-hook-error: + dependencies: + preact: + specifier: ^10.28.3 + version: 10.28.4 + react: + specifier: ^19.2.4 + version: 19.2.4 + react-dom: + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) + devDependencies: + '@astrojs/preact': + specifier: workspace:* + version: link:../../../../integrations/preact + '@astrojs/react': + specifier: workspace:* + version: link:../../../../integrations/react + astro: + specifier: workspace:* + version: link:../../.. + packages/astro/e2e/fixtures/server-islands: dependencies: '@astrojs/mdx': From 35bc81428b7fd08d8d7249c58666fc13e9609d90 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Mon, 23 Feb 2026 10:05:55 -0500 Subject: [PATCH 8/8] Respect remote image allowlists (#15586) * Respect remote image allowlists (#15569) * Respect remote image allowlists * Fix inferRemoteSize virtual module import * fix tests * fix(tests): allow Unsplash host in layout fixture * Update .changeset/tame-lemons-probe.md Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> * Add back support for service override --------- Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> --- .changeset/tame-lemons-probe.md | 5 ++ packages/astro/src/assets/build/remote.ts | 12 ++++- packages/astro/src/assets/endpoint/generic.ts | 5 ++ packages/astro/src/assets/endpoint/shared.ts | 6 ++- packages/astro/src/assets/internal.ts | 10 +++- packages/astro/src/assets/services/service.ts | 4 +- .../astro/src/assets/utils/remoteProbe.ts | 51 ++++++++++++++++++- .../astro/src/assets/vite-plugin-assets.ts | 18 +++---- packages/astro/src/core/errors/errors-data.ts | 14 +++++ .../astro/test/core-image-infersize.test.js | 46 +++++++++++++++++ packages/astro/test/core-image-layout.test.js | 6 +-- packages/astro/test/core-image.test.js | 42 +++++++++++++++ .../src/pages/disallowed.astro | 6 +++ .../src/pages/index.astro | 10 ++-- .../core-image-layout/astro.config.mjs | 8 +-- 15 files changed, 214 insertions(+), 29 deletions(-) create mode 100644 .changeset/tame-lemons-probe.md create mode 100644 packages/astro/test/fixtures/core-image-infersize/src/pages/disallowed.astro diff --git a/.changeset/tame-lemons-probe.md b/.changeset/tame-lemons-probe.md new file mode 100644 index 000000000000..5b21fded5e80 --- /dev/null +++ b/.changeset/tame-lemons-probe.md @@ -0,0 +1,5 @@ +--- +"astro": patch +--- + +Fixes an issue where allowlists were not being enforced when handling remote images diff --git a/packages/astro/src/assets/build/remote.ts b/packages/astro/src/assets/build/remote.ts index daa45dc82df0..12f6ed8ae75a 100644 --- a/packages/astro/src/assets/build/remote.ts +++ b/packages/astro/src/assets/build/remote.ts @@ -9,7 +9,11 @@ export type RemoteCacheEntry = { export async function loadRemoteImage(src: string) { const req = new Request(src); - const res = await fetch(req); + const res = await fetch(req, { redirect: 'manual' }); + + if (res.status >= 300 && res.status < 400) { + throw new Error(`Failed to load remote image ${src}. The request was redirected.`); + } if (!res.ok) { throw new Error( @@ -47,7 +51,11 @@ export async function revalidateRemoteImage( ...(revalidationData.lastModified && { 'If-Modified-Since': revalidationData.lastModified }), }; const req = new Request(src, { headers, cache: 'no-cache' }); - const res = await fetch(req); + const res = await fetch(req, { redirect: 'manual' }); + + if (res.status >= 300 && res.status < 400) { + throw new Error(`Failed to revalidate cached remote image ${src}. The request was redirected.`); + } // Asset not modified: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304 if (!res.ok && res.status !== 304) { diff --git a/packages/astro/src/assets/endpoint/generic.ts b/packages/astro/src/assets/endpoint/generic.ts index d4f3a4dd7a92..98f4c294e2c5 100644 --- a/packages/astro/src/assets/endpoint/generic.ts +++ b/packages/astro/src/assets/endpoint/generic.ts @@ -12,8 +12,13 @@ async function loadRemoteImage(src: URL, headers: Headers) { const res = await fetch(src, { // Forward all headers from the original request headers, + redirect: 'manual', }); + if (res.status >= 300 && res.status < 400) { + return undefined; + } + if (!res.ok) { return undefined; } diff --git a/packages/astro/src/assets/endpoint/shared.ts b/packages/astro/src/assets/endpoint/shared.ts index a43c6e68c483..d692d2aa92b6 100644 --- a/packages/astro/src/assets/endpoint/shared.ts +++ b/packages/astro/src/assets/endpoint/shared.ts @@ -8,7 +8,11 @@ import { etag } from '../utils/etag.js'; export async function loadRemoteImage(src: URL): Promise { try { - const res = await fetch(src); + const res = await fetch(src, { redirect: 'manual' }); + + if (res.status >= 300 && res.status < 400) { + return undefined; + } if (!res.ok) { return undefined; diff --git a/packages/astro/src/assets/internal.ts b/packages/astro/src/assets/internal.ts index 7595ace1660d..63fc02ee2b76 100644 --- a/packages/astro/src/assets/internal.ts +++ b/packages/astro/src/assets/internal.ts @@ -1,4 +1,5 @@ import { isRemotePath } from '@astrojs/internal-helpers/path'; +import { isRemoteAllowed } from '@astrojs/internal-helpers/remote'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; import type { AstroConfig } from '../types/public/config.js'; import type { AstroAdapterClientConfig } from '../types/public/integrations.js'; @@ -83,8 +84,15 @@ export async function getImage( delete resolvedOptions.inferSize; // Delete so it doesn't end up in the attributes if (isRemoteImage(resolvedOptions.src) && isRemotePath(resolvedOptions.src)) { + if (!isRemoteAllowed(resolvedOptions.src, imageConfig)) { + throw new AstroError({ + ...AstroErrorData.RemoteImageNotAllowed, + message: AstroErrorData.RemoteImageNotAllowed.message(resolvedOptions.src), + }); + } + const getRemoteSize = (url: string) => - service.getRemoteSize?.(url, imageConfig) ?? inferRemoteSize(url); + service.getRemoteSize?.(url, imageConfig) ?? inferRemoteSize(url, imageConfig); const result = await getRemoteSize(resolvedOptions.src); // Directly probe the image URL resolvedOptions.width ??= result.width; resolvedOptions.height ??= result.height; diff --git a/packages/astro/src/assets/services/service.ts b/packages/astro/src/assets/services/service.ts index 74a65fd59dc2..9c9fc478bc48 100644 --- a/packages/astro/src/assets/services/service.ts +++ b/packages/astro/src/assets/services/service.ts @@ -413,8 +413,8 @@ export const baseService: Omit = { return transform; }, - getRemoteSize(url, _imageConfig) { - return inferRemoteSize(url); + getRemoteSize(url, imageConfig) { + return inferRemoteSize(url, imageConfig); }, }; diff --git a/packages/astro/src/assets/utils/remoteProbe.ts b/packages/astro/src/assets/utils/remoteProbe.ts index 2b7bba38b202..2feeab2dc0a4 100644 --- a/packages/astro/src/assets/utils/remoteProbe.ts +++ b/packages/astro/src/assets/utils/remoteProbe.ts @@ -1,17 +1,64 @@ +import { isRemoteAllowed } from '@astrojs/internal-helpers/remote'; import { AstroError, AstroErrorData } from '../../core/errors/index.js'; +import type { AstroConfig } from '../../types/public/config.js'; import type { ImageMetadata } from '../types.js'; import { imageMetadata } from './metadata.js'; +type RemoteImageConfig = Pick; + /** * Infers the dimensions of a remote image by streaming its data and analyzing it progressively until sufficient metadata is available. * * @param {string} url - The URL of the remote image from which to infer size metadata. + * @param {RemoteImageConfig} [imageConfig] - Optional image config used to validate remote allowlists. * @return {Promise>} Returns a promise that resolves to an object containing the image dimensions metadata excluding `src` and `fsPath`. * @throws {AstroError} Thrown when the fetching fails or metadata cannot be extracted. */ -export async function inferRemoteSize(url: string): Promise> { +export async function inferRemoteSize( + url: string, + imageConfig?: RemoteImageConfig, +): Promise> { + if (!URL.canParse(url)) { + throw new AstroError({ + ...AstroErrorData.FailedToFetchRemoteImageDimensions, + message: AstroErrorData.FailedToFetchRemoteImageDimensions.message(url), + }); + } + + const allowlistConfig = imageConfig + ? { + domains: imageConfig.domains ?? [], + remotePatterns: imageConfig.remotePatterns ?? [], + } + : undefined; + + if (!allowlistConfig) { + const parsedUrl = new URL(url); + if (!['http:', 'https:'].includes(parsedUrl.protocol)) { + throw new AstroError({ + ...AstroErrorData.FailedToFetchRemoteImageDimensions, + message: AstroErrorData.FailedToFetchRemoteImageDimensions.message(url), + }); + } + } + + if (allowlistConfig && !isRemoteAllowed(url, allowlistConfig)) { + throw new AstroError({ + ...AstroErrorData.RemoteImageNotAllowed, + message: AstroErrorData.RemoteImageNotAllowed.message(url), + }); + } + // Start fetching the image - const response = await fetch(url); + const response = await fetch(url, { redirect: 'manual' }); + + if (response.status >= 300 && response.status < 400) { + throw new AstroError({ + ...AstroErrorData.FailedToFetchRemoteImageDimensions, + message: AstroErrorData.FailedToFetchRemoteImageDimensions.message(url), + }); + } + if (!response.body || !response.ok) { throw new AstroError({ ...AstroErrorData.FailedToFetchRemoteImageDimensions, diff --git a/packages/astro/src/assets/vite-plugin-assets.ts b/packages/astro/src/assets/vite-plugin-assets.ts index c949612791b8..540d491335fd 100644 --- a/packages/astro/src/assets/vite-plugin-assets.ts +++ b/packages/astro/src/assets/vite-plugin-assets.ts @@ -170,7 +170,7 @@ export default function assets({ fs, settings, sync, logger }: Options): vite.Pl export const getConfiguredImageService = _getConfiguredImageService; - export const viteFSConfig = ${JSON.stringify(resolvedConfig.server.fs ?? {})}; + export const viteFSConfig = ${JSON.stringify(resolvedConfig.server.fs ?? {})}; export const safeModulePaths = new Set(${JSON.stringify( // @ts-expect-error safeModulePaths is internal to Vite @@ -190,11 +190,11 @@ export default function assets({ fs, settings, sync, logger }: Options): vite.Pl enumerable: false, configurable: true, }); -export const inferRemoteSize = async (url) => { - const service = await _getConfiguredImageService() - - return service.getRemoteSize?.(url, imageConfig) ?? inferRemoteSizeInternal(url) - } // This is used by the @astrojs/node integration to locate images. + export const inferRemoteSize = async (url) => { + const service = await _getConfiguredImageService(); + return service.getRemoteSize?.(url, imageConfig) ?? inferRemoteSizeInternal(url, imageConfig); + } + // This is used by the @astrojs/node integration to locate images. // It's unused on other platforms, but on some platforms like Netlify (and presumably also Vercel) // new URL("dist/...") is interpreted by the bundler as a signal to include that directory // in the Lambda bundle, which would bloat the bundle with images. @@ -207,9 +207,9 @@ export const inferRemoteSize = async (url) => { : settings.config.outDir, ), )}); - export const serverDir = /* #__PURE__ */ new URL(${JSON.stringify( - new URL(settings.config.build.server), - )}); + export const serverDir = /* #__PURE__ */ new URL(${JSON.stringify( + new URL(settings.config.build.server), + )}); export const getImage = async (options) => await getImageInternal(options, imageConfig); `, }; diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index c24f94ac222e..c6ab0b78c4ec 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -556,6 +556,20 @@ export const FailedToFetchRemoteImageDimensions = { message: (imageURL: string) => `Failed to get the dimensions for ${imageURL}.`, hint: 'Verify your remote image URL is accurate, and that you are not using `inferSize` with a file located in your `public/` folder.', } satisfies ErrorData; +/** + * @docs + * @message + * Remote image `IMAGE_URL` is not allowed by your image configuration. + * @description + * The remote image URL does not match your configured `image.domains` or `image.remotePatterns`. + */ +export const RemoteImageNotAllowed = { + name: 'RemoteImageNotAllowed', + title: 'Remote image is not allowed', + message: (imageURL: string) => + `Remote image ${imageURL} is not allowed by your image configuration.`, + hint: 'Update `image.domains` or `image.remotePatterns`, or remove `inferSize` for this image.', +} satisfies ErrorData; /** * @docs * @description diff --git a/packages/astro/test/core-image-infersize.test.js b/packages/astro/test/core-image-infersize.test.js index f1ec2d7a0d88..a64508dda5e2 100644 --- a/packages/astro/test/core-image-infersize.test.js +++ b/packages/astro/test/core-image-infersize.test.js @@ -4,11 +4,13 @@ import { after, before, describe, it } from 'node:test'; import * as cheerio from 'cheerio'; import { Logger } from '../dist/core/logger/core.js'; +import { testImageService } from './test-image-service.js'; import { loadFixture } from './test-utils.js'; describe('astro:image:infersize', () => { /** @type {import('./test-utils').Fixture} */ let fixture; + const remoteAvatarUrl = 'https://avatars.githubusercontent.com/u/622227?s=64&v=4'; describe('dev', () => { /** @type {import('./test-utils').DevServer} */ @@ -76,5 +78,49 @@ describe('astro:image:infersize', () => { assert.equal($dimensions.text().trim(), '64x64'); }); }); + + it('rejects remote inferSize that is not allowlisted', async () => { + logs.length = 0; + const res = await fixture.fetch('/disallowed'); + await res.text(); + + const hasDisallowedLog = logs.some( + (log) => log.message.includes('Remote image') && log.message.includes('not allowed'), + ); + assert.equal(hasDisallowedLog, true); + }); + }); + + describe('dev with custom image service', () => { + /** @type {import('./test-utils').Fixture} */ + let customFixture; + /** @type {import('./test-utils').DevServer} */ + let customDevServer; + + before(async () => { + customFixture = await loadFixture({ + root: './fixtures/core-image-infersize/', + image: { + domains: ['avatars.githubusercontent.com'], + service: testImageService({ + transform: { path: remoteAvatarUrl, scale: 2 }, + }), + }, + }); + + customDevServer = await customFixture.startDevServer({}); + }); + + after(async () => { + await customDevServer.stop(); + }); + + it('uses service.getRemoteSize for inferRemoteSize', async () => { + const res = await customFixture.fetch('/'); + const html = await res.text(); + const $ = cheerio.load(html); + const dimensions = $('#direct').text().trim(); + assert.equal(dimensions, '128x128'); + }); }); }); diff --git a/packages/astro/test/core-image-layout.test.js b/packages/astro/test/core-image-layout.test.js index 018e8ee836f2..f5fb7a058532 100755 --- a/packages/astro/test/core-image-layout.test.js +++ b/packages/astro/test/core-image-layout.test.js @@ -27,7 +27,7 @@ describe('astro:image:layout', () => { foo: 'bar', transform: { path: walrusImagePath, scale: imageScale }, }), - domains: ['avatars.githubusercontent.com'], + domains: ['avatars.githubusercontent.com', 'images.unsplash.com'], }, }); @@ -599,7 +599,7 @@ describe('astro:image:layout', () => { root: './fixtures/core-image-layout/', image: { service: testImageService({ foo: 'bar' }), - domains: ['avatars.githubusercontent.com'], + domains: ['avatars.githubusercontent.com', 'images.unsplash.com'], }, }); @@ -710,7 +710,7 @@ describe('astro:image:layout', () => { root: './fixtures/core-image-layout/', image: { service: testImageService({ foo: 'bar' }), - domains: ['avatars.githubusercontent.com'], + domains: ['avatars.githubusercontent.com', 'images.unsplash.com'], responsiveStyles: false, }, }); diff --git a/packages/astro/test/core-image.test.js b/packages/astro/test/core-image.test.js index 531157bd24db..042e722a9a37 100644 --- a/packages/astro/test/core-image.test.js +++ b/packages/astro/test/core-image.test.js @@ -1,4 +1,5 @@ import assert from 'node:assert/strict'; +import { createServer } from 'node:http'; import { basename } from 'node:path'; import { Writable } from 'node:stream'; import { after, afterEach, before, describe, it } from 'node:test'; @@ -19,8 +20,30 @@ describe('astro:image', () => { let devServer; /** @type {Array<{ type: any, level: 'error', message: string; }>} */ let logs = []; + /** @type {import('node:http').Server | undefined} */ + let redirectServer; + /** @type {string | undefined} */ + let redirectUrl; before(async () => { + redirectServer = createServer((req, res) => { + if (req.url === '/redirect') { + res.statusCode = 302; + res.setHeader('Location', 'https://example.com/image.png'); + res.end(); + return; + } + + res.statusCode = 404; + res.end(); + }); + + await new Promise((resolve) => redirectServer.listen(0, '127.0.0.1', resolve)); + const address = redirectServer.address(); + if (address && typeof address === 'object') { + redirectUrl = `http://127.0.0.1:${address.port}/redirect`; + } + fixture = await loadFixture({ root: './fixtures/core-image/', image: { @@ -30,6 +53,15 @@ describe('astro:image', () => { { protocol: 'data', }, + ...(redirectUrl + ? [ + { + protocol: 'http', + hostname: '127.0.0.1', + port: new URL(redirectUrl).port, + }, + ] + : []), ], }, }); @@ -50,6 +82,9 @@ describe('astro:image', () => { after(async () => { await devServer.stop(); + if (redirectServer) { + await new Promise((resolve) => redirectServer.close(resolve)); + } }); describe('basics', () => { @@ -487,6 +522,13 @@ describe('astro:image', () => { assert.ok($img.attr('width')); assert.ok($img.attr('height')); }); + + it('rejects remote redirects', async () => { + assert.ok(redirectUrl, 'Expected redirect URL to be set'); + const src = `/_image?href=${encodeURIComponent(redirectUrl)}&w=1&h=1&f=png`; + const imageRequest = await fixture.fetch(src); + assert.ok(imageRequest.status >= 400); + }); }); it('error if no width and height', async () => { diff --git a/packages/astro/test/fixtures/core-image-infersize/src/pages/disallowed.astro b/packages/astro/test/fixtures/core-image-infersize/src/pages/disallowed.astro new file mode 100644 index 000000000000..878a9a54f864 --- /dev/null +++ b/packages/astro/test/fixtures/core-image-infersize/src/pages/disallowed.astro @@ -0,0 +1,6 @@ +--- +import { inferRemoteSize } from 'astro:assets'; + +await inferRemoteSize('https://example.com/not-allowlisted.png'); +--- +
Should not render
diff --git a/packages/astro/test/fixtures/core-image-infersize/src/pages/index.astro b/packages/astro/test/fixtures/core-image-infersize/src/pages/index.astro index ef7bf57c012d..0f5dbdd626c6 100644 --- a/packages/astro/test/fixtures/core-image-infersize/src/pages/index.astro +++ b/packages/astro/test/fixtures/core-image-infersize/src/pages/index.astro @@ -1,17 +1,17 @@ --- -// https://avatars.githubusercontent.com/u/622227?s=64 is a .jpeg +// https://avatars.githubusercontent.com/u/622227?s=64&v=4 is a .jpeg import { Image, Picture, getImage, inferRemoteSize } from 'astro:assets'; -const { width, height } = await inferRemoteSize('https://avatars.githubusercontent.com/u/622227?s=64'); +const { width, height } = await inferRemoteSize('https://avatars.githubusercontent.com/u/622227?s=64&v=4'); const remoteImg = await getImage({ - src: 'https://avatars.githubusercontent.com/u/622227?s=64', + src: 'https://avatars.githubusercontent.com/u/622227?s=64&v=4', inferSize: true, alt: '', }); --- - - + +
diff --git a/packages/astro/test/fixtures/core-image-layout/astro.config.mjs b/packages/astro/test/fixtures/core-image-layout/astro.config.mjs index 2db01beab2f1..b932ac360c5b 100644 --- a/packages/astro/test/fixtures/core-image-layout/astro.config.mjs +++ b/packages/astro/test/fixtures/core-image-layout/astro.config.mjs @@ -3,8 +3,8 @@ import { defineConfig } from 'astro/config'; export default defineConfig({ image: { - layout: 'constrained', - responsiveStyles: true - }, - + layout: 'constrained', + responsiveStyles: true, + domains: ['images.unsplash.com'], + }, });