From 904d33727df6f0e7b464c2ec1c345821c0f9d5ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:55:38 +0200 Subject: [PATCH 01/50] chore(deps): update github-actions (#14323) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/benchmark.yml | 4 ++-- .github/workflows/check-merge.yml | 8 ++++---- .github/workflows/check.yml | 2 +- .github/workflows/ci.yml | 12 ++++++------ .github/workflows/cleanup-cache.yml | 2 +- .github/workflows/continuous_benchmark.yml | 4 ++-- .github/workflows/examples-deploy.yml | 2 +- .github/workflows/issue-labeled.yml | 6 +++--- .github/workflows/issue-needs-repro.yml | 2 +- .github/workflows/issue-opened.yml | 2 +- .github/workflows/preview-release.yml | 4 ++-- .github/workflows/release.yml | 2 +- .github/workflows/scripts.yml | 6 +++--- .github/workflows/sync-examples.yml | 2 +- .github/workflows/test-hosts.yml | 2 +- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index fdb19edf45d6..8dab6df96365 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -28,7 +28,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/actions/checkout/issues/331#issuecomment-1438220926 - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: persist-credentials: false ref: refs/pull/${{ github.event.issue.number }}/head @@ -70,7 +70,7 @@ jobs: shell: bash # main benchmark - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: persist-credentials: false ref: "main" diff --git a/.github/workflows/check-merge.yml b/.github/workflows/check-merge.yml index d4d659ea1930..d0fa2b26d662 100644 --- a/.github/workflows/check-merge.yml +++ b/.github/workflows/check-merge.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Check if there is already a block on this PR id: blocked - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 env: issue_number: ${{ github.event.number }} with: @@ -32,7 +32,7 @@ jobs: return 'false' result-encoding: string - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 if: steps.blocked.outputs.result != 'true' with: repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -67,7 +67,7 @@ jobs: done - name: Add label - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 if: steps.check.outputs.found == 'true' env: issue_number: ${{ github.event.number }} @@ -81,7 +81,7 @@ jobs: }); - name: Change PR Status - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 if: steps.check.outputs.found == 'true' env: issue_number: ${{ github.event.number }} diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index aebb3a4fd819..602856272e32 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -28,7 +28,7 @@ jobs: timeout-minutes: 7 steps: - name: Check out repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51ce8d107493..2dd4b54b2238 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,7 +48,7 @@ jobs: run: git config --global core.autocrlf false - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 @@ -78,7 +78,7 @@ jobs: run: git config --global core.autocrlf false - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 @@ -134,7 +134,7 @@ jobs: run: git config --global core.autocrlf false - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 @@ -171,7 +171,7 @@ jobs: run: git config --global core.autocrlf false - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 @@ -207,7 +207,7 @@ jobs: run: git config --global core.autocrlf false - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 @@ -219,7 +219,7 @@ jobs: cache: "pnpm" - name: Checkout docs - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: repository: withastro/docs path: smoke/docs diff --git a/.github/workflows/cleanup-cache.yml b/.github/workflows/cleanup-cache.yml index 57429c4447c7..52f636cb0dbf 100644 --- a/.github/workflows/cleanup-cache.yml +++ b/.github/workflows/cleanup-cache.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Cleanup caches older than 5 days if: github.event_name == 'schedule' diff --git a/.github/workflows/continuous_benchmark.yml b/.github/workflows/continuous_benchmark.yml index 27cf44b8edba..d780e2c579c7 100644 --- a/.github/workflows/continuous_benchmark.yml +++ b/.github/workflows/continuous_benchmark.yml @@ -29,7 +29,7 @@ jobs: pull-requests: write steps: - name: Check out repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 @@ -47,7 +47,7 @@ jobs: run: pnpm run build - name: Run the benchmarks - uses: CodSpeedHQ/action@0b6e7a3d96c9d2a6057e7bcea6b45aaf2f7ce60b # v3.8.0 + uses: CodSpeedHQ/action@76578c2a7ddd928664caa737f0e962e3085d4e7c # v3.8.1 timeout-minutes: 30 with: working-directory: ./benchmark diff --git a/.github/workflows/examples-deploy.yml b/.github/workflows/examples-deploy.yml index 06cecbe1eef6..38673df654ec 100644 --- a/.github/workflows/examples-deploy.yml +++ b/.github/workflows/examples-deploy.yml @@ -15,7 +15,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Send a POST request to Netlify to rebuild preview.astro.new run: 'curl -X POST -d {} ${{ env.BUILD_HOOK }}' env: diff --git a/.github/workflows/issue-labeled.yml b/.github/workflows/issue-labeled.yml index 0136d4ac221a..bb7c5b6bfa3c 100644 --- a/.github/workflows/issue-labeled.yml +++ b/.github/workflows/issue-labeled.yml @@ -11,7 +11,7 @@ jobs: steps: - name: remove triage if: contains(github.event.label.description, '(priority)') && contains(github.event.issue.labels.*.name, 'needs triage') - uses: actions-cool/issues-helper@50068f49b7b2b3857270ead65e2d02e4459b022c # v3.6.2 + uses: actions-cool/issues-helper@45d75b6cf72bf4f254be6230cb887ad002702491 # v3.6.3 with: actions: "remove-labels" token: ${{ secrets.GITHUB_TOKEN }} @@ -20,7 +20,7 @@ jobs: - name: needs repro if: github.event.label.name == 'needs repro' - uses: actions-cool/issues-helper@50068f49b7b2b3857270ead65e2d02e4459b022c # v3.6.2 + uses: actions-cool/issues-helper@45d75b6cf72bf4f254be6230cb887ad002702491 # v3.6.3 with: actions: "create-comment, remove-labels" token: ${{ secrets.GITHUB_TOKEN }} @@ -30,7 +30,7 @@ jobs: labels: "needs triage" - name: wontfix if: github.event.label.name == 'wontfix' - uses: actions-cool/issues-helper@50068f49b7b2b3857270ead65e2d02e4459b022c # v3.6.2 + uses: actions-cool/issues-helper@45d75b6cf72bf4f254be6230cb887ad002702491 # v3.6.3 with: actions: "create-comment, close-issue" token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/issue-needs-repro.yml b/.github/workflows/issue-needs-repro.yml index 13ac5cf0e7a2..cce4527812e4 100644 --- a/.github/workflows/issue-needs-repro.yml +++ b/.github/workflows/issue-needs-repro.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: needs repro - uses: actions-cool/issues-helper@50068f49b7b2b3857270ead65e2d02e4459b022c # v3.6.2 + uses: actions-cool/issues-helper@45d75b6cf72bf4f254be6230cb887ad002702491 # v3.6.3 with: actions: "close-issues" token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/issue-opened.yml b/.github/workflows/issue-opened.yml index 4e6de6fedd48..a193ff3cd2d7 100644 --- a/.github/workflows/issue-opened.yml +++ b/.github/workflows/issue-opened.yml @@ -12,7 +12,7 @@ jobs: permissions: issues: write steps: - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | github.rest.issues.addLabels({ diff --git a/.github/workflows/preview-release.yml b/.github/workflows/preview-release.yml index f266998c2837..b2134cc30bb4 100644 --- a/.github/workflows/preview-release.yml +++ b/.github/workflows/preview-release.yml @@ -37,7 +37,7 @@ jobs: - name: Disable git crlf run: git config --global core.autocrlf false - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: # Changeset needs access to the main branch to find pending changesets fetch-depth: 0 @@ -71,7 +71,7 @@ jobs: - name: Compute affected packages id: compute-affected-packages - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 env: CHANGES: ${{ steps.changeset-status.outputs.changes-output }} PACKAGES: ${{ steps.pnpm-packages.outputs.packages-output }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 98af6b199d05..7d1126b4c2a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 diff --git a/.github/workflows/scripts.yml b/.github/workflows/scripts.yml index f031bbddb9d2..3d3d10298f9e 100644 --- a/.github/workflows/scripts.yml +++ b/.github/workflows/scripts.yml @@ -24,10 +24,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Checkout Main into tmp - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: ref: main path: main @@ -45,7 +45,7 @@ jobs: run: pnpm install - name: Check Bundle Size - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | const { default: script } = await import('${{ github.workspace }}/.github/scripts/bundle-size.mjs') diff --git a/.github/workflows/sync-examples.yml b/.github/workflows/sync-examples.yml index 45d127447a73..a816d3c1cec9 100644 --- a/.github/workflows/sync-examples.yml +++ b/.github/workflows/sync-examples.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: fetch-depth: 2 # fetch 2 to compare with previous commit for changes ref: ${{ inputs.checkout-ref }} diff --git a/.github/workflows/test-hosts.yml b/.github/workflows/test-hosts.yml index f12ed9b40aa0..d2a6164c6d9b 100644 --- a/.github/workflows/test-hosts.yml +++ b/.github/workflows/test-hosts.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup PNPM uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 From 17c7b0395c00a0ea29dad9517b60bad3bd3a87a1 Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Tue, 9 Sep 2025 13:53:52 +0200 Subject: [PATCH 02/50] feat: update sharp (#14335) --- .changeset/wet-clouds-behave.md | 5 ++++ .github/renovate.json5 | 2 -- benchmark/package.json | 2 +- examples/blog/package.json | 2 +- examples/starlog/package.json | 2 +- packages/astro/package.json | 2 +- .../fixtures/primitives/package.json | 2 +- .../fixtures/middleware/package.json | 2 +- .../node/test/fixtures/image/package.json | 2 +- pnpm-lock.yaml | 24 ++++++++++--------- 10 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 .changeset/wet-clouds-behave.md diff --git a/.changeset/wet-clouds-behave.md b/.changeset/wet-clouds-behave.md new file mode 100644 index 000000000000..30742935d8b4 --- /dev/null +++ b/.changeset/wet-clouds-behave.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Bumps `sharp` minimal version to `0.34.0` diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 92227fff4824..e86954622428 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -83,7 +83,5 @@ // follow vite deps version "postcss-load-config", "esbuild", - // TODO: follow https://github.com/withastro/astro/pull/13478 - "@vitejs/plugin-vue" ], } diff --git a/benchmark/package.json b/benchmark/package.json index 6099f4306ae3..f93c123dc99a 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -20,7 +20,7 @@ "mri": "^1.2.0", "port-authority": "^2.0.1", "pretty-bytes": "^7.0.1", - "sharp": "^0.33.3", + "sharp": "^0.34.3", "tinyexec": "^1.0.1" }, "devDependencies": { diff --git a/examples/blog/package.json b/examples/blog/package.json index 1f3aaea0aed6..4a3c93da59bb 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -14,6 +14,6 @@ "@astrojs/rss": "^4.0.12", "@astrojs/sitemap": "^3.5.1", "astro": "^5.13.6", - "sharp": "^0.34.2" + "sharp": "^0.34.3" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index b7806fd8580b..51fe5f5804d6 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -11,6 +11,6 @@ "dependencies": { "astro": "^5.13.6", "sass": "^1.92.0", - "sharp": "^0.33.3" + "sharp": "^0.34.3" } } diff --git a/packages/astro/package.json b/packages/astro/package.json index e04b5965ae69..ea54b6bc4a9e 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -179,7 +179,7 @@ "zod-to-ts": "^1.2.0" }, "optionalDependencies": { - "sharp": "^0.33.3" + "sharp": "^0.34.0" }, "devDependencies": { "@astrojs/check": "^0.9.4", diff --git a/packages/integrations/netlify/test/development/fixtures/primitives/package.json b/packages/integrations/netlify/test/development/fixtures/primitives/package.json index 822a8a47e815..ef04fff080af 100644 --- a/packages/integrations/netlify/test/development/fixtures/primitives/package.json +++ b/packages/integrations/netlify/test/development/fixtures/primitives/package.json @@ -5,6 +5,6 @@ "dependencies": { "astro": "workspace:", "@astrojs/netlify": "workspace:", - "sharp": "^0.33.5" + "sharp": "^0.34.3" } } diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware/package.json b/packages/integrations/netlify/test/functions/fixtures/middleware/package.json index ddc811223b2e..1cf0fbe8ec58 100644 --- a/packages/integrations/netlify/test/functions/fixtures/middleware/package.json +++ b/packages/integrations/netlify/test/functions/fixtures/middleware/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "@astrojs/netlify": "workspace:", - "sharp": "^0.33.5" + "sharp": "^0.34.3" } } diff --git a/packages/integrations/node/test/fixtures/image/package.json b/packages/integrations/node/test/fixtures/image/package.json index e21388c8a88a..7ed290cf4241 100644 --- a/packages/integrations/node/test/fixtures/image/package.json +++ b/packages/integrations/node/test/fixtures/image/package.json @@ -7,7 +7,7 @@ "astro": "workspace:*" }, "peerDependencies": { - "sharp": "^0.33.5" + "sharp": "^0.34.3" }, "scripts": { "build": "astro build", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6bd06b69f49..756f8ed5b9c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,8 +101,8 @@ importers: specifier: ^7.0.1 version: 7.0.1 sharp: - specifier: ^0.33.3 - version: 0.33.5 + specifier: ^0.34.3 + version: 0.34.3 tinyexec: specifier: ^1.0.1 version: 1.0.1 @@ -167,7 +167,7 @@ importers: specifier: ^5.13.6 version: link:../../packages/astro sharp: - specifier: ^0.34.2 + specifier: ^0.34.3 version: 0.34.3 examples/component: @@ -384,8 +384,8 @@ importers: specifier: ^1.92.0 version: 1.92.0 sharp: - specifier: ^0.33.3 - version: 0.33.5 + specifier: ^0.34.3 + version: 0.34.3 examples/toolbar-app: devDependencies: @@ -770,8 +770,8 @@ importers: version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) optionalDependencies: sharp: - specifier: ^0.33.3 - version: 0.33.5 + specifier: ^0.34.0 + version: 0.34.3 packages/astro-prism: dependencies: @@ -5446,8 +5446,8 @@ importers: specifier: 'workspace:' version: link:../../../../../../astro sharp: - specifier: ^0.33.5 - version: 0.33.5 + specifier: ^0.34.3 + version: 0.34.3 packages/integrations/netlify/test/functions/fixtures/cookies: dependencies: @@ -5470,8 +5470,8 @@ importers: specifier: 'workspace:' version: link:../../../.. sharp: - specifier: ^0.33.5 - version: 0.33.5 + specifier: ^0.34.3 + version: 0.34.3 packages/integrations/netlify/test/functions/fixtures/redirects: dependencies: @@ -11313,6 +11313,7 @@ packages: libsql@0.5.22: resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} + cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] lightningcss-darwin-arm64@1.30.1: @@ -21296,6 +21297,7 @@ snapshots: '@img/sharp-wasm32': 0.33.5 '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 + optional: true sharp@0.34.3: dependencies: From 72e14abed6e20d31b1cd2caeeaa7e43703bf3aa3 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 9 Sep 2025 15:42:51 +0100 Subject: [PATCH 03/50] fix: remove the pinned simple-swizzle (#14330) * Revert "fix: pin simple-swizzle (#14327)" This reverts commit c1033beafa331bbd67f0ee76b47303deb3db806f. * Add changeset --- .changeset/lazy-results-wash.md | 5 +++++ knip.js | 1 - packages/astro/package.json | 1 - pnpm-lock.yaml | 3 --- 4 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 .changeset/lazy-results-wash.md diff --git a/.changeset/lazy-results-wash.md b/.changeset/lazy-results-wash.md new file mode 100644 index 000000000000..8a4dabce4c3a --- /dev/null +++ b/.changeset/lazy-results-wash.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Removes pinned package that is no longer needed. diff --git a/knip.js b/knip.js index 3ab8e1d4a3ce..fc6d95a72253 100644 --- a/knip.js +++ b/knip.js @@ -38,7 +38,6 @@ export default { 'rehype-toc', 'remark-code-titles', '@types/http-cache-semantics', - 'simple-swizzle', // Pinned dep to avoid a vulnerability ], }, 'packages/db': { diff --git a/packages/astro/package.json b/packages/astro/package.json index ea54b6bc4a9e..4d9242c3cd7c 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -159,7 +159,6 @@ "rehype": "^13.0.2", "semver": "^7.7.2", "shiki": "^3.12.0", - "simple-swizzle": "0.2.2", "smol-toml": "^1.4.2", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 756f8ed5b9c8..e0c4a67c915d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -605,9 +605,6 @@ importers: shiki: specifier: ^3.12.0 version: 3.12.2 - simple-swizzle: - specifier: 0.2.2 - version: 0.2.2 smol-toml: specifier: ^1.4.2 version: 1.4.2 From 468c845d40b92cb4e9ce503a2a5b3337b63c5dde Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Tue, 9 Sep 2025 08:05:17 -0700 Subject: [PATCH 04/50] [ci] release (#14336) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/lazy-results-wash.md | 5 --- .changeset/wet-clouds-behave.md | 5 --- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-multiple/package.json | 2 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 2 +- examples/integration/package.json | 2 +- examples/minimal/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 2 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/with-markdoc/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 8 ++++ packages/astro/package.json | 2 +- pnpm-lock.yaml | 47 ++++++++++----------- 28 files changed, 55 insertions(+), 58 deletions(-) delete mode 100644 .changeset/lazy-results-wash.md delete mode 100644 .changeset/wet-clouds-behave.md diff --git a/.changeset/lazy-results-wash.md b/.changeset/lazy-results-wash.md deleted file mode 100644 index 8a4dabce4c3a..000000000000 --- a/.changeset/lazy-results-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Removes pinned package that is no longer needed. diff --git a/.changeset/wet-clouds-behave.md b/.changeset/wet-clouds-behave.md deleted file mode 100644 index 30742935d8b4..000000000000 --- a/.changeset/wet-clouds-behave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Bumps `sharp` minimal version to `0.34.0` diff --git a/examples/basics/package.json b/examples/basics/package.json index b152dbe44617..70dd48fb8bd4 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index 4a3c93da59bb..e205cf2e0c03 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -13,7 +13,7 @@ "@astrojs/mdx": "^4.3.5", "@astrojs/rss": "^4.0.12", "@astrojs/sitemap": "^3.5.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "sharp": "^0.34.3" } } diff --git a/examples/component/package.json b/examples/component/package.json index eb3bc1c10a1c..0d5283dc4895 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^5.13.6" + "astro": "^5.13.7" }, "peerDependencies": { "astro": "^4.0.0 || ^5.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index c3966a27baf6..4898f998a0a8 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/react": "^4.3.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "^3.2.4" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index 4270675bf2e0..68b3cd525040 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -13,6 +13,6 @@ "@astrojs/alpinejs": "^0.4.9", "@types/alpinejs": "^3.13.11", "alpinejs": "^3.14.9", - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 4b9248788c62..a25f3db2fce9 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -17,7 +17,7 @@ "@astrojs/vue": "^5.1.1", "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", - "astro": "^5.13.6", + "astro": "^5.13.7", "preact": "^10.27.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 5811fa48b8f1..32e74418c591 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/preact": "^4.1.1", "@preact/signals": "^2.3.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "preact": "^10.27.1" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index 9ff514645b9d..bf144e30f937 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -13,7 +13,7 @@ "@astrojs/react": "^4.3.1", "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", - "astro": "^5.13.6", + "astro": "^5.13.7", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index f8c7e3925377..7c3df72976bf 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/solid-js": "^5.1.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "solid-js": "^1.9.9" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index e87133259e81..dc77a661a988 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/svelte": "^7.1.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "svelte": "^5.38.6" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 39d3b51db348..8e266683bc65 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/vue": "^5.1.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "vue": "^3.5.21" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index 5f1b05f8b39a..bccbf2fabf14 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -11,6 +11,6 @@ }, "dependencies": { "@astrojs/node": "^9.4.3", - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index c0c47eaf898e..c97d794d1661 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^5.13.6" + "astro": "^5.13.7" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index ea03cd56c6d8..2987ad3c419d 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index 992c3110850d..c868395c6ccd 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 4c6b2b102200..527664db804f 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/node": "^9.4.3", "@astrojs/svelte": "^7.1.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "svelte": "^5.38.6" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index 51fe5f5804d6..98a2bbbf2ffa 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -9,7 +9,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.6", + "astro": "^5.13.7", "sass": "^1.92.0", "sharp": "^0.34.3" } diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index 1845d45bb20b..c7adca14be97 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -16,6 +16,6 @@ }, "devDependencies": { "@types/node": "^18.17.8", - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 9d733379609f..353de132bd9c 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -11,6 +11,6 @@ }, "dependencies": { "@astrojs/markdoc": "^0.15.6", - "astro": "^5.13.6" + "astro": "^5.13.7" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 8d3853eead04..d8dc9d28cf58 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/mdx": "^4.3.5", "@astrojs/preact": "^4.1.1", - "astro": "^5.13.6", + "astro": "^5.13.7", "preact": "^10.27.1" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 6c5f227d2865..5eafaa91c9da 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/preact": "^4.1.1", "@nanostores/preact": "^0.5.2", - "astro": "^5.13.6", + "astro": "^5.13.7", "nanostores": "^0.11.4", "preact": "^10.27.1" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index a39f6b9b5aa6..dea8ffceb759 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -13,7 +13,7 @@ "@astrojs/mdx": "^4.3.5", "@tailwindcss/vite": "^4.1.12", "@types/canvas-confetti": "^1.9.0", - "astro": "^5.13.6", + "astro": "^5.13.7", "canvas-confetti": "^1.9.3", "tailwindcss": "^4.1.12" } diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index ff6cf857af7c..b3a7e05e063f 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -11,7 +11,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^5.13.6", + "astro": "^5.13.7", "vitest": "^3.2.4" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index 7bfc6364daa6..1f02aef90cce 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,13 @@ # astro +## 5.13.7 + +### Patch Changes + +- [#14330](https://github.com/withastro/astro/pull/14330) [`72e14ab`](https://github.com/withastro/astro/commit/72e14abed6e20d31b1cd2caeeaa7e43703bf3aa3) Thanks [@ascorbic](https://github.com/ascorbic)! - Removes pinned package that is no longer needed. + +- [#14335](https://github.com/withastro/astro/pull/14335) [`17c7b03`](https://github.com/withastro/astro/commit/17c7b0395c00a0ea29dad9517b60bad3bd3a87a1) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Bumps `sharp` minimal version to `0.34.0` + ## 5.13.6 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index 4d9242c3cd7c..97b9240a8e9f 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "5.13.6", + "version": "5.13.7", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e0c4a67c915d..65178e0a0b07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,7 +149,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/blog: @@ -164,7 +164,7 @@ importers: specifier: ^3.5.1 version: link:../../packages/integrations/sitemap astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro sharp: specifier: ^0.34.3 @@ -173,7 +173,7 @@ importers: examples/component: devDependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/container-with-vitest: @@ -182,7 +182,7 @@ importers: specifier: ^4.3.1 version: link:../../packages/integrations/react astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -213,7 +213,7 @@ importers: specifier: ^3.14.9 version: 3.14.9 astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/framework-multiple: @@ -240,7 +240,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.24) astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro preact: specifier: ^10.27.1 @@ -270,7 +270,7 @@ importers: specifier: ^2.3.1 version: 2.3.1(preact@10.27.1) astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro preact: specifier: ^10.27.1 @@ -288,7 +288,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.24) astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -303,7 +303,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/solid astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro solid-js: specifier: ^1.9.9 @@ -315,7 +315,7 @@ importers: specifier: ^7.1.1 version: link:../../packages/integrations/svelte astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro svelte: specifier: ^5.38.6 @@ -327,7 +327,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/vue astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro vue: specifier: ^3.5.21 @@ -339,25 +339,25 @@ importers: specifier: ^9.4.3 version: link:../../packages/integrations/node astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/minimal: dependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/ssr: @@ -369,7 +369,7 @@ importers: specifier: ^7.1.1 version: link:../../packages/integrations/svelte astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro svelte: specifier: ^5.38.6 @@ -378,7 +378,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro sass: specifier: ^1.92.0 @@ -393,7 +393,7 @@ importers: specifier: ^18.17.8 version: 18.19.123 astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/with-markdoc: @@ -402,7 +402,7 @@ importers: specifier: ^0.15.6 version: link:../../packages/integrations/markdoc astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro examples/with-mdx: @@ -414,7 +414,7 @@ importers: specifier: ^4.1.1 version: link:../../packages/integrations/preact astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro preact: specifier: ^10.27.1 @@ -429,7 +429,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.4)(preact@10.27.1) astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro nanostores: specifier: ^0.11.4 @@ -450,7 +450,7 @@ importers: specifier: ^1.9.0 version: 1.9.0 astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro canvas-confetti: specifier: ^1.9.3 @@ -462,7 +462,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^5.13.6 + specifier: ^5.13.7 version: link:../../packages/astro vitest: specifier: ^3.2.4 @@ -11310,7 +11310,6 @@ packages: libsql@0.5.22: resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} - cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] lightningcss-darwin-arm64@1.30.1: From f75fd9977f0f3f8afd1128cc3616205edec0a11c Mon Sep 17 00:00:00 2001 From: Chris Swithinbank Date: Wed, 10 Sep 2025 16:33:47 +0200 Subject: [PATCH 05/50] Attach declarative Shadow DOM templates during view transition (#14341) --- .changeset/few-parrots-cover.md | 5 +++++ .../src/pages/declarative-shadow-dom.astro | 9 ++++++++ .../view-transitions/src/pages/one.astro | 1 + packages/astro/e2e/view-transitions.test.js | 17 ++++++++++++++ .../astro/src/transitions/swap-functions.ts | 22 +++++++++++++++++++ 5 files changed, 54 insertions(+) create mode 100644 .changeset/few-parrots-cover.md create mode 100644 packages/astro/e2e/fixtures/view-transitions/src/pages/declarative-shadow-dom.astro diff --git a/.changeset/few-parrots-cover.md b/.changeset/few-parrots-cover.md new file mode 100644 index 000000000000..bf447282b6d4 --- /dev/null +++ b/.changeset/few-parrots-cover.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes support for declarative Shadow DOM when using the `` component diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/declarative-shadow-dom.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/declarative-shadow-dom.astro new file mode 100644 index 000000000000..6a8e6b30a160 --- /dev/null +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/declarative-shadow-dom.astro @@ -0,0 +1,9 @@ +--- +import Layout from '../components/Layout.astro'; +--- + + +
+ +
+
diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/one.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/one.astro index facaba076e34..231d1947562b 100644 --- a/packages/astro/e2e/fixtures/view-transitions/src/pages/one.astro +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/one.astro @@ -20,6 +20,7 @@ import Layout from '../components/Layout.astro'; go to 2 + go to declarative shadow DOM example
test content
diff --git a/packages/astro/e2e/view-transitions.test.js b/packages/astro/e2e/view-transitions.test.js index 7d0220d1d926..5789b0723ad3 100644 --- a/packages/astro/e2e/view-transitions.test.js +++ b/packages/astro/e2e/view-transitions.test.js @@ -189,6 +189,23 @@ test.describe('View Transitions', () => { ).toEqual(3); }); + test('Declarative Shadow DOM elements are attached after transitions', async ({ + page, + astro, + }) => { + const loads = collectLoads(page); + + // Go to page 1 + await page.goto(astro.resolveUrl('/one')); + + // transition to DSD page + await page.click('#click-declarative-shadow-dom'); + const host = page.locator('#dsd-host'); + await expect(host, 'should have content').toHaveText('Welcome to the Shadow Realm!'); + + expect(loads.length, 'There should only be 1 page load').toEqual(1); + }); + test('Stylesheets in the head are waited on', async ({ page, astro }) => { // Go to page 1 await page.goto(astro.resolveUrl('/one')); diff --git a/packages/astro/src/transitions/swap-functions.ts b/packages/astro/src/transitions/swap-functions.ts index e02ac423b4a3..63ec70a6e7da 100644 --- a/packages/astro/src/transitions/swap-functions.ts +++ b/packages/astro/src/transitions/swap-functions.ts @@ -92,6 +92,28 @@ export function swapBodyElement(newElement: Element, oldElement: Element) { } } } + + // This will upgrade any Declarative Shadow DOM in the new body. + attachShadowRoots(newElement); +} + +/** + * Attach Shadow DOM roots for templates with the declarative `shadowrootmode` attribute. + * @see https://github.com/withastro/astro/issues/14340 + * @see https://web.dev/articles/declarative-shadow-dom#polyfill + * @param root DOM subtree to attach shadow roots within. + */ +function attachShadowRoots(root: Element | ShadowRoot) { + root.querySelectorAll('template[shadowrootmode]').forEach((template) => { + const mode = template.getAttribute('shadowrootmode'); + const parent = template.parentNode; + if ((mode === 'closed' || mode === 'open') && parent instanceof HTMLElement) { + const shadowRoot = parent.attachShadow({ mode }); + shadowRoot.appendChild(template.content); + template.remove(); + attachShadowRoots(shadowRoot); + } + }); } export const saveFocus = (): (() => void) => { From 13f7d36688042cdb5644786d795fc921841da76a Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Thu, 11 Sep 2025 11:49:14 +0200 Subject: [PATCH 06/50] fix(astro): type assertions (#14343) --- .changeset/many-symbols-arrive.md | 5 +++++ packages/astro/src/assets/endpoint/generic.ts | 2 +- packages/astro/src/assets/endpoint/node.ts | 2 +- packages/astro/src/assets/utils/node/emitAsset.ts | 2 +- packages/astro/src/core/encryption.ts | 10 +++++----- 5 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/many-symbols-arrive.md diff --git a/.changeset/many-symbols-arrive.md b/.changeset/many-symbols-arrive.md new file mode 100644 index 000000000000..dbd81fed9886 --- /dev/null +++ b/.changeset/many-symbols-arrive.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes a regression in non node runtimes diff --git a/packages/astro/src/assets/endpoint/generic.ts b/packages/astro/src/assets/endpoint/generic.ts index 101f193a8701..6f55169ae277 100644 --- a/packages/astro/src/assets/endpoint/generic.ts +++ b/packages/astro/src/assets/endpoint/generic.ts @@ -63,7 +63,7 @@ export const GET: APIRoute = async ({ request }) => { imageConfig, ); - return new Response(Buffer.from(data), { + return new Response(data as Uint8Array, { status: 200, headers: { 'Content-Type': mime.lookup(format) ?? `image/${format}`, diff --git a/packages/astro/src/assets/endpoint/node.ts b/packages/astro/src/assets/endpoint/node.ts index d2b1290f1d13..e115e9489b08 100644 --- a/packages/astro/src/assets/endpoint/node.ts +++ b/packages/astro/src/assets/endpoint/node.ts @@ -112,7 +112,7 @@ export const GET: APIRoute = async ({ request }) => { const { data, format } = await imageService.transform(inputBuffer, transform, imageConfig); - return new Response(Buffer.from(data), { + return new Response(data as Uint8Array, { status: 200, headers: { 'Content-Type': mime.lookup(format) ?? `image/${format}`, diff --git a/packages/astro/src/assets/utils/node/emitAsset.ts b/packages/astro/src/assets/utils/node/emitAsset.ts index dccc47a6c30d..59e1150fa71a 100644 --- a/packages/astro/src/assets/utils/node/emitAsset.ts +++ b/packages/astro/src/assets/utils/node/emitAsset.ts @@ -34,7 +34,7 @@ async function handleSvgDeduplication( filename: string, fileEmitter: FileEmitter, ): Promise { - const contentHash = await generateContentHash(Uint8Array.from(fileData).buffer); + const contentHash = await generateContentHash(fileData.buffer as ArrayBuffer); const key = keyFor(contentHash); const existing = svgContentCache.get(key); diff --git a/packages/astro/src/core/encryption.ts b/packages/astro/src/core/encryption.ts index f06e6dc1b6cc..bf8df34fafef 100644 --- a/packages/astro/src/core/encryption.ts +++ b/packages/astro/src/core/encryption.ts @@ -67,7 +67,7 @@ export async function encodeKey(key: CryptoKey) { */ export async function decodeKey(encoded: string): Promise { const bytes = decodeBase64(encoded); - return crypto.subtle.importKey('raw', Buffer.from(bytes), ALGORITHM, true, [ + return crypto.subtle.importKey('raw', bytes.buffer as ArrayBuffer, ALGORITHM, true, [ 'encrypt', 'decrypt', ]); @@ -101,15 +101,15 @@ export async function encryptString(key: CryptoKey, raw: string) { * Takes a base64 encoded string, decodes it and returns the decrypted text. */ export async function decryptString(key: CryptoKey, encoded: string) { - const iv = decodeHex(encoded.slice(0, IV_LENGTH)); - const dataArray = decodeBase64(encoded.slice(IV_LENGTH)); + const iv = decodeHex(encoded.slice(0, IV_LENGTH)) as Uint8Array; + const dataArray = decodeBase64(encoded.slice(IV_LENGTH)) as Uint8Array; const decryptedBuffer = await crypto.subtle.decrypt( { name: ALGORITHM, - iv: Buffer.from(iv), + iv, }, key, - Buffer.from(dataArray), + dataArray, ); const decryptedString = decoder.decode(decryptedBuffer); return decryptedString; From d71448efd8b6693ef5d2b071ef4dea20a289699c Mon Sep 17 00:00:00 2001 From: Adam Matthiesen Date: Thu, 11 Sep 2025 16:33:19 -0700 Subject: [PATCH 07/50] feat(db): add support for non-node libsql client (#14204) * feat(db): add support for non-node libsql client * feat(db): update remote database info retrieval to include mode parameter * feat(db): export AstroDBConfig type alongside integration from core integration * test(db): ensure mode parameter is passed to getRemoteDatabaseInfo in tests * feat(db): refactor database client handling and remove legacy code * test(db): remove mode parameter from getRemoteDatabaseInfo assertions * test(db): remove mode parameter from getRemoteDatabaseInfo call in tests * fix(db): ensure correct handling of 'node' mode in client module functions * refactor(db): consolidate utility functions by moving hasPrimaryKey to utils * fix(db): re-export hasPrimaryKey from utils for consistency * fix(db): update import path for hasPrimaryKey to utils for consistency * fix(db): update client import to use VIRTUAL_CLIENT_MODULE_ID for consistency * fix(db): remove commented export of hasPrimaryKey for clarity * fix(db): update DB_CLIENTS paths to use '@astrojs' for consistency fix(db): ensure local client module is returned in default case * fix(db): update DB_CLIENTS paths to use PACKAGE_NAME for consistency * fix(db): simplify db-client export paths for consistency * fix(db): unify client creation function names across db-client modules * fix(db): standardize client creation function names across db-client modules * fix(db): rename remote database client import for consistency * fix(db): change const to let for parsedUrl in createClient function * fix(db): update variable naming for consistency in createClient function * fix(test): add logging for prodDbPath and ASTRO_DB_REMOTE_URL in libsql-remote tests * fix(test): add logging for absoluteFileUrl in libsql-remote tests * fix(db): correct variable reference for rawUrl in createClient function * fix(test): remove debug logging for prodDbPath in libsql-remote tests * fix(db): rename __execute to localExecution for clarity in virtual module loading * refactor(db): replace parseOpts with parseLibSQLConfig for improved configuration handling * fix(db): prevent redundant assignment for 'url' in LibSQL config parsing * refactor(db): streamline libSQL configuration handling in createClient functions * fix(test): remove redundant 'url' field from config assertions in db-client tests * refactor(db): enhance boolean parsing logic in LibSQL config handling * Apply suggestions from code review Thank god for the save by the docs queen Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Emanuele Stoppa * Refactor localExecution handling in vitePluginDb and related functions * Update .changeset/full-dingos-repeat.md Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> * Update .changeset/full-dingos-repeat.md Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> --------- Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> Co-authored-by: Emanuele Stoppa --- .changeset/full-dingos-repeat.md | 21 +++++ packages/db/package.json | 1 + .../db/src/core/cli/commands/execute/index.ts | 2 + .../db/src/core/cli/commands/push/index.ts | 4 +- .../db/src/core/cli/commands/shell/index.ts | 8 +- packages/db/src/core/cli/migration-queries.ts | 6 +- packages/db/src/core/consts.ts | 8 ++ .../db/src/core/db-client/libsql-local.ts | 15 ++++ packages/db/src/core/db-client/libsql-node.ts | 43 ++++++++++ packages/db/src/core/db-client/libsql-web.ts | 33 ++++++++ packages/db/src/core/db-client/utils.ts | 57 ++++++++++++++ packages/db/src/core/integration/index.ts | 35 ++++++++- .../core/integration/vite-plugin-db-client.ts | 51 ++++++++++++ .../db/src/core/integration/vite-plugin-db.ts | 78 ++++++++++++++++--- packages/db/src/core/queries.ts | 2 +- packages/db/src/db-client.d.ts | 4 + packages/db/src/index.ts | 2 +- packages/db/src/runtime/db-client.ts | 71 ----------------- packages/db/src/runtime/index.ts | 8 +- packages/db/src/runtime/utils.ts | 7 +- packages/db/test/unit/db-client.test.js | 10 +-- 21 files changed, 358 insertions(+), 108 deletions(-) create mode 100644 .changeset/full-dingos-repeat.md create mode 100644 packages/db/src/core/db-client/libsql-local.ts create mode 100644 packages/db/src/core/db-client/libsql-node.ts create mode 100644 packages/db/src/core/db-client/libsql-web.ts create mode 100644 packages/db/src/core/db-client/utils.ts create mode 100644 packages/db/src/core/integration/vite-plugin-db-client.ts create mode 100644 packages/db/src/db-client.d.ts delete mode 100644 packages/db/src/runtime/db-client.ts diff --git a/.changeset/full-dingos-repeat.md b/.changeset/full-dingos-repeat.md new file mode 100644 index 000000000000..54e7490080a6 --- /dev/null +++ b/.changeset/full-dingos-repeat.md @@ -0,0 +1,21 @@ +--- +'@astrojs/db': minor +--- + +Adds a new libSQL web driver to support environments that require a non-Node.js libSQL client such as Cloudflare or Deno. Also adds a new `mode` configuration option to allow you to set your client connection type: `node` (default) or `web`. + +The default db `node` driver mode is identical to the previous AstroDB functionality. No changes have been made to how AstroDB works in Node.js environments, and this is still the integration's default behavior. If you are currently using AstroDB, no changes to your project code are required and setting a `mode` is not required. + +However, if you have previously been unable to use AstroDB because you required a non-Node.js libSQL client, you can now install and configure the libSQL web driver by setting `mode: 'web'` in your `db` configuration: + +```ts +import db from '@astrojs/db'; +import { defineConfig } from 'astro/config'; + +// https://astro.build/config +export default defineConfig({ + integrations: [db({ mode: 'web' })], +}); +``` + +For more information, see the [`@astrojs/db` documentation](https://docs.astro.build/en/guides/integrations-guide/db/#mode). \ No newline at end of file diff --git a/packages/db/package.json b/packages/db/package.json index 8d02fafeaf1a..42a888265b9f 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -27,6 +27,7 @@ "types": "./dist/runtime/index.d.ts", "default": "./dist/runtime/index.js" }, + "./db-client/*": "./dist/core/db-client/*", "./dist/runtime/virtual.js": { "default": "./dist/runtime/virtual.js" }, diff --git a/packages/db/src/core/cli/commands/execute/index.ts b/packages/db/src/core/cli/commands/execute/index.ts index 140f5f74bd13..0664e642d602 100644 --- a/packages/db/src/core/cli/commands/execute/index.ts +++ b/packages/db/src/core/cli/commands/execute/index.ts @@ -46,11 +46,13 @@ export async function cmd({ appToken: flags.token ?? dbInfo.token, isBuild: false, output: 'server', + localExecution: true, }); } else { virtualModContents = getLocalVirtualModContents({ tables: dbConfig.tables ?? {}, root: astroConfig.root, + localExecution: true, }); } const { code } = await bundleFile({ virtualModContents, root: astroConfig.root, fileUrl }); diff --git a/packages/db/src/core/cli/commands/push/index.ts b/packages/db/src/core/cli/commands/push/index.ts index d1755a56d4ef..663b648119cf 100644 --- a/packages/db/src/core/cli/commands/push/index.ts +++ b/packages/db/src/core/cli/commands/push/index.ts @@ -2,8 +2,8 @@ import type { AstroConfig } from 'astro'; import { sql } from 'drizzle-orm'; import prompts from 'prompts'; import type { Arguments } from 'yargs-parser'; -import { createRemoteDatabaseClient } from '../../../../runtime/index.js'; import { MIGRATION_VERSION } from '../../../consts.js'; +import { createClient } from '../../../db-client/libsql-node.js'; import type { DBConfig, DBSnapshot } from '../../../types.js'; import { getRemoteDatabaseInfo, type RemoteDatabaseInfo } from '../../../utils.js'; import { @@ -108,7 +108,7 @@ type RequestBody = { }; async function pushToDb(requestBody: RequestBody, appToken: string, remoteUrl: string) { - const client = createRemoteDatabaseClient({ + const client = createClient({ token: appToken, url: remoteUrl, }); diff --git a/packages/db/src/core/cli/commands/shell/index.ts b/packages/db/src/core/cli/commands/shell/index.ts index 941bf2296e8d..a4b61863c92e 100644 --- a/packages/db/src/core/cli/commands/shell/index.ts +++ b/packages/db/src/core/cli/commands/shell/index.ts @@ -1,12 +1,10 @@ import type { AstroConfig } from 'astro'; import { sql } from 'drizzle-orm'; import type { Arguments } from 'yargs-parser'; -import { - createLocalDatabaseClient, - createRemoteDatabaseClient, -} from '../../../../runtime/db-client.js'; import { normalizeDatabaseUrl } from '../../../../runtime/index.js'; import { DB_PATH } from '../../../consts.js'; +import { createClient as createLocalDatabaseClient } from '../../../db-client/libsql-local.js'; +import { createClient as createRemoteDatabaseClient } from '../../../db-client/libsql-node.js'; import { SHELL_QUERY_MISSING_ERROR } from '../../../errors.js'; import type { DBConfigInput } from '../../../types.js'; import { getAstroEnv, getRemoteDatabaseInfo } from '../../../utils.js'; @@ -35,7 +33,7 @@ export async function cmd({ ASTRO_DATABASE_FILE, new URL(DB_PATH, astroConfig.root).href, ); - const db = createLocalDatabaseClient({ dbUrl }); + const db = createLocalDatabaseClient({ url: dbUrl }); const result = await db.run(sql.raw(query)); console.log(result); } diff --git a/packages/db/src/core/cli/migration-queries.ts b/packages/db/src/core/cli/migration-queries.ts index d0299df80c0e..5b662a3f3d22 100644 --- a/packages/db/src/core/cli/migration-queries.ts +++ b/packages/db/src/core/cli/migration-queries.ts @@ -4,10 +4,10 @@ import { sql } from 'drizzle-orm'; import { SQLiteAsyncDialect } from 'drizzle-orm/sqlite-core'; import * as color from 'kleur/colors'; import { customAlphabet } from 'nanoid'; -import { createRemoteDatabaseClient, hasPrimaryKey } from '../../runtime/index.js'; import { isSerializedSQL } from '../../runtime/types.js'; -import { isDbError } from '../../runtime/utils.js'; +import { hasPrimaryKey, isDbError } from '../../runtime/utils.js'; import { MIGRATION_VERSION } from '../consts.js'; +import { createClient } from '../db-client/libsql-node.js'; import { RENAME_COLUMN_ERROR, RENAME_TABLE_ERROR } from '../errors.js'; import { getCreateIndexQueries, @@ -434,7 +434,7 @@ async function getDbCurrentSnapshot( appToken: string, remoteUrl: string, ): Promise { - const client = createRemoteDatabaseClient({ + const client = createClient({ token: appToken, url: remoteUrl, }); diff --git a/packages/db/src/core/consts.ts b/packages/db/src/core/consts.ts index 8b8ccaf2d442..7cb3cf565cc2 100644 --- a/packages/db/src/core/consts.ts +++ b/packages/db/src/core/consts.ts @@ -15,3 +15,11 @@ export const DB_PATH = '.astro/content.db'; export const CONFIG_FILE_NAMES = ['config.ts', 'config.js', 'config.mts', 'config.mjs']; export const MIGRATION_VERSION = '2024-03-12'; + +export const VIRTUAL_CLIENT_MODULE_ID = 'virtual:astro:db-client'; + +export const DB_CLIENTS = { + node: `${PACKAGE_NAME}/db-client/libsql-node.js`, + web: `${PACKAGE_NAME}/db-client/libsql-web.js`, + local: `${PACKAGE_NAME}/db-client/libsql-local.js`, +}; diff --git a/packages/db/src/core/db-client/libsql-local.ts b/packages/db/src/core/db-client/libsql-local.ts new file mode 100644 index 000000000000..8d8f6ad3df30 --- /dev/null +++ b/packages/db/src/core/db-client/libsql-local.ts @@ -0,0 +1,15 @@ +import { createClient as createLibsqlClient } from '@libsql/client'; +import { drizzle as drizzleLibsql, type LibSQLDatabase } from 'drizzle-orm/libsql'; + +const isWebContainer = !!process.versions?.webcontainer; + +type LocalDbClientOptions = { + url: string; +}; + +export function createClient(options: LocalDbClientOptions): LibSQLDatabase { + const url = isWebContainer ? 'file:content.db' : options.url; + const client = createLibsqlClient({ url }); + const db = drizzleLibsql(client); + return db; +} diff --git a/packages/db/src/core/db-client/libsql-node.ts b/packages/db/src/core/db-client/libsql-node.ts new file mode 100644 index 000000000000..1653d4047564 --- /dev/null +++ b/packages/db/src/core/db-client/libsql-node.ts @@ -0,0 +1,43 @@ +import { createClient as createLibsqlClient } from '@libsql/client'; +import { drizzle as drizzleLibsql } from 'drizzle-orm/libsql'; +import { parseLibSQLConfig } from './utils.js'; + +type RemoteDbClientOptions = { + token: string; + url: string; +}; + +export function createClient(opts: RemoteDbClientOptions) { + const { token, url: rawUrl } = opts; + + let parsedUrl = new URL(rawUrl); + + const options: Record = Object.fromEntries(parsedUrl.searchParams.entries()); + parsedUrl.search = ''; + + let url = parsedUrl.toString(); + if (parsedUrl.protocol === 'memory:') { + // libSQL expects a special string in place of a URL + // for in-memory DBs. + url = ':memory:'; + } else if ( + parsedUrl.protocol === 'file:' && + parsedUrl.pathname.startsWith('/') && + !rawUrl.startsWith('file:/') + ) { + // libSQL accepts relative and absolute file URLs + // for local DBs. This doesn't match the URL specification. + // Parsing `file:some.db` and `file:/some.db` should yield + // the same result, but libSQL interprets the former as + // a relative path, and the latter as an absolute path. + // This detects when such a conversion happened during parsing + // and undoes it so that the URL given to libSQL is the + // same as given by the user. + url = 'file:' + parsedUrl.pathname.substring(1); + } + + const libSQLOptions = parseLibSQLConfig(options); + + const client = createLibsqlClient({ ...libSQLOptions, url, authToken: token }); + return drizzleLibsql(client); +} diff --git a/packages/db/src/core/db-client/libsql-web.ts b/packages/db/src/core/db-client/libsql-web.ts new file mode 100644 index 000000000000..fce032f61e60 --- /dev/null +++ b/packages/db/src/core/db-client/libsql-web.ts @@ -0,0 +1,33 @@ +import { createClient as createLibsqlClient } from '@libsql/client/web'; +import { drizzle as drizzleLibsql } from 'drizzle-orm/libsql/web'; +import { parseLibSQLConfig } from './utils.js'; + +type RemoteDbClientOptions = { + token: string; + url: string; +}; + +export function createClient(opts: RemoteDbClientOptions) { + const { token, url: rawUrl } = opts; + + let parsedUrl = new URL(rawUrl); + + const options: Record = Object.fromEntries(parsedUrl.searchParams.entries()); + + parsedUrl.search = ''; + + let url = parsedUrl.toString(); + + const supportedProtocols = ['http:', 'https:', 'libsql:']; + + if (!supportedProtocols.includes(parsedUrl.protocol)) { + throw new Error( + `Unsupported protocol "${parsedUrl.protocol}" for libSQL web client. Supported protocols are: ${supportedProtocols.join(', ')}.`, + ); + } + + const libSQLOptions = parseLibSQLConfig(options); + + const client = createLibsqlClient({ ...libSQLOptions, url, authToken: token }); + return drizzleLibsql(client); +} diff --git a/packages/db/src/core/db-client/utils.ts b/packages/db/src/core/db-client/utils.ts new file mode 100644 index 000000000000..69e56e4ee8c5 --- /dev/null +++ b/packages/db/src/core/db-client/utils.ts @@ -0,0 +1,57 @@ +import type { Config as LibSQLConfig } from '@libsql/client'; +import z from 'zod'; + +const rawLibSQLOptions = z.record(z.string()); + +const parseNumber = (value: string) => z.coerce.number().parse(value); +const parseBoolean = (value: string) => z.coerce.boolean().parse(value); + +const booleanValues = ['true', 'false']; + +// parse a value that should be a boolean, but could be a valueless variable: +// e.g. 'file://local-copy.db?readYourWrites' & 'file://local-copy.db?readYourWrites=true' should be parsed as true +const parseOptionalBoolean = (value: string) => { + if (booleanValues.includes(value)) { + return parseBoolean(value); + } + return true; // If the value is not explicitly 'true' or 'false', assume it's true (valueless variable) +}; + +const libSQLConfigTransformed = rawLibSQLOptions.transform((raw) => { + // Ensure the URL is always present + const parsed: Partial = {}; + + // Optional fields + for (const [key, value] of Object.entries(raw)) { + switch (key) { + case 'syncInterval': + case 'concurrency': + parsed[key] = parseNumber(value); + break; + case 'readYourWrites': + case 'offline': + case 'tls': + parsed[key] = parseOptionalBoolean(value); + break; + case 'authToken': + case 'encryptionKey': + case 'syncUrl': + parsed[key] = value; + break; + } + } + + // Return the parsed config + return parsed; +}); + +export const parseLibSQLConfig = (config: Record): Partial => { + try { + return libSQLConfigTransformed.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + throw new Error(`Invalid LibSQL config: ${error.errors.map((e) => e.message).join(', ')}`); + } + throw error; + } +}; diff --git a/packages/db/src/core/integration/index.ts b/packages/db/src/core/integration/index.ts index adaccda24470..2947a9650de3 100644 --- a/packages/db/src/core/integration/index.ts +++ b/packages/db/src/core/integration/index.ts @@ -13,6 +13,7 @@ import { type ViteDevServer, } from 'vite'; import parseArgs from 'yargs-parser'; +import { z } from 'zod'; import { AstroDbError, isDbError } from '../../runtime/utils.js'; import { CONFIG_FILE_NAMES, DB_PATH, VIRTUAL_MODULE_ID } from '../consts.js'; import { EXEC_DEFAULT_EXPORT_ERROR, EXEC_ERROR } from '../errors.js'; @@ -27,8 +28,29 @@ import { type SeedHandler, vitePluginDb, } from './vite-plugin-db.js'; +import { vitePluginDbClient } from './vite-plugin-db-client.js'; -function astroDBIntegration(): AstroIntegration { +const astroDBConfigSchema = z + .object({ + /** + * Sets the mode of the underlying `@libsql/client` connection. + * + * In most cases, the default 'node' mode is sufficient. On platforms like Cloudflare, or Deno, you may need to set this to 'web'. + * + * @default 'node' + */ + mode: z + .union([z.literal('node'), z.literal('web')]) + .optional() + .default('node'), + }) + .optional() + .default({}); + +export type AstroDBConfig = z.infer; + +function astroDBIntegration(options?: AstroDBConfig): AstroIntegration { + const resolvedConfig = astroDBConfigSchema.parse(options); let connectToRemote = false; let configFileDependencies: string[] = []; let root: URL; @@ -69,6 +91,11 @@ function astroDBIntegration(): AstroIntegration { const args = parseArgs(process.argv.slice(3)); connectToRemote = process.env.ASTRO_INTERNAL_TEST_REMOTE || args['remote']; + const dbClientPlugin = vitePluginDbClient({ + connectToRemote, + mode: resolvedConfig.mode, + }); + if (connectToRemote) { dbPlugin = vitePluginDb({ connectToRemote, @@ -95,7 +122,7 @@ function astroDBIntegration(): AstroIntegration { updateConfig({ vite: { assetsInclude: [DB_PATH], - plugins: [dbPlugin], + plugins: [dbClientPlugin, dbPlugin], }, }); }, @@ -182,8 +209,8 @@ function databaseFileEnvDefined() { return env.ASTRO_DATABASE_FILE != null || process.env.ASTRO_DATABASE_FILE != null; } -export function integration(): AstroIntegration[] { - return [astroDBIntegration(), fileURLIntegration()]; +export function integration(options?: AstroDBConfig): AstroIntegration[] { + return [astroDBIntegration(options), fileURLIntegration()]; } async function executeSeedFile({ diff --git a/packages/db/src/core/integration/vite-plugin-db-client.ts b/packages/db/src/core/integration/vite-plugin-db-client.ts new file mode 100644 index 000000000000..3e47842fb385 --- /dev/null +++ b/packages/db/src/core/integration/vite-plugin-db-client.ts @@ -0,0 +1,51 @@ +import { DB_CLIENTS, VIRTUAL_CLIENT_MODULE_ID } from '../consts.js'; +import type { VitePlugin } from '../utils.js'; + +type VitePluginDBClientParams = { + connectToRemote: boolean; + mode: 'node' | 'web'; +}; + +function getRemoteClientModule(mode: 'node' | 'web') { + switch (mode) { + case 'web': + return `export { createClient } from '${DB_CLIENTS.web}';`; + case 'node': + default: + return `export { createClient } from '${DB_CLIENTS.node}';`; + } +} + +function getLocalClientModule(mode: 'node' | 'web') { + switch (mode) { + case 'node': + case 'web': + default: + return `export { createClient } from '${DB_CLIENTS.local}';`; + } +} + +const resolved = '\0' + VIRTUAL_CLIENT_MODULE_ID; + +export function vitePluginDbClient(params: VitePluginDBClientParams): VitePlugin { + return { + name: 'virtual:astro:db-client', + enforce: 'pre', + async resolveId(id) { + if (id !== VIRTUAL_CLIENT_MODULE_ID) return; + return resolved; + }, + async load(id) { + if (id !== resolved) return; + + switch (params.connectToRemote) { + case true: + return getRemoteClientModule(params.mode); + case false: + default: + // Local client is always available, even if not used. + return getLocalClientModule(params.mode); + } + }, + }; +} diff --git a/packages/db/src/core/integration/vite-plugin-db.ts b/packages/db/src/core/integration/vite-plugin-db.ts index 7394ab046f12..1e6bc96088b0 100644 --- a/packages/db/src/core/integration/vite-plugin-db.ts +++ b/packages/db/src/core/integration/vite-plugin-db.ts @@ -3,9 +3,16 @@ import { fileURLToPath } from 'node:url'; import type { AstroConfig, AstroIntegrationLogger } from 'astro'; import { type SQL, sql } from 'drizzle-orm'; import { SQLiteAsyncDialect } from 'drizzle-orm/sqlite-core'; -import { createLocalDatabaseClient } from '../../runtime/db-client.js'; import { normalizeDatabaseUrl } from '../../runtime/index.js'; -import { DB_PATH, RUNTIME_IMPORT, RUNTIME_VIRTUAL_IMPORT, VIRTUAL_MODULE_ID } from '../consts.js'; +import { + DB_CLIENTS, + DB_PATH, + RUNTIME_IMPORT, + RUNTIME_VIRTUAL_IMPORT, + VIRTUAL_CLIENT_MODULE_ID, + VIRTUAL_MODULE_ID, +} from '../consts.js'; +import { createClient } from '../db-client/libsql-local.js'; import { getResolvedFileUrl } from '../load-file.js'; import { getCreateIndexQueries, getCreateTableQuery, SEED_DEV_FILE_NAME } from '../queries.js'; import type { DBTables } from '../types.js'; @@ -77,6 +84,7 @@ export function vitePluginDb(params: VitePluginDBParams): VitePlugin { tables: params.tables.get(), isBuild: command === 'build', output: params.output, + localExecution: false, }); } @@ -87,6 +95,7 @@ export function vitePluginDb(params: VitePluginDBParams): VitePlugin { return getLocalVirtualModContents({ root: params.root, tables: params.tables.get(), + localExecution: false, }); } @@ -108,6 +117,7 @@ export function vitePluginDb(params: VitePluginDBParams): VitePlugin { return getLocalVirtualModContents({ root: params.root, tables: params.tables.get(), + localExecution: false, }); }, }; @@ -117,15 +127,51 @@ export function getConfigVirtualModContents() { return `export * from ${RUNTIME_VIRTUAL_IMPORT}`; } -export function getLocalVirtualModContents({ tables, root }: { tables: DBTables; root: URL }) { +/** + * Get the module import for the DB client. + * This is used to pick which module to import based on whether + * the DB client is being used by the CLI, or in the Astro runtime. + * + * This is important for the `astro db execute` command to work correctly. + * + * @param localExecution - Whether the DB client is being used in a local execution context (e.g. CLI commands). + * @returns The module import string for the DB client. + */ +function getDBModule(localExecution: boolean) { + return localExecution + ? `import { createClient } from '${DB_CLIENTS.node}';` + : `import { createClient } from '${VIRTUAL_CLIENT_MODULE_ID}';`; +} + +export function getLocalVirtualModContents({ + tables, + root, + localExecution, +}: { + tables: DBTables; + root: URL; + /** + * Used for the execute command to import the client directly. + * In other cases, we use the runtime only vite virtual module. + * + * This is used to ensure that the client is imported correctly + * when executing commands like `astro db execute`. + */ + localExecution: boolean; +}) { const { ASTRO_DATABASE_FILE } = getAstroEnv(); - const dbInfo = getRemoteDatabaseInfo(); const dbUrl = new URL(DB_PATH, root); + + // If this is for the execute command, we need to import the client directly instead of using the runtime only virtual module. + const clientImport = getDBModule(localExecution); + return ` -import { asDrizzleTable, createLocalDatabaseClient, normalizeDatabaseUrl } from ${RUNTIME_IMPORT}; +import { asDrizzleTable, normalizeDatabaseUrl } from ${RUNTIME_IMPORT}; + +${clientImport} const dbUrl = normalizeDatabaseUrl(${JSON.stringify(ASTRO_DATABASE_FILE)}, ${JSON.stringify(dbUrl)}); -export const db = createLocalDatabaseClient({ dbUrl, enableTransactions: ${dbInfo.url === 'libsql'} }); +export const db = createClient({ url: dbUrl }); export * from ${RUNTIME_VIRTUAL_IMPORT}; @@ -137,11 +183,20 @@ export function getRemoteVirtualModContents({ appToken, isBuild, output, + localExecution, }: { tables: DBTables; appToken: string; isBuild: boolean; output: AstroConfig['output']; + /** + * Used for the execute command to import the client directly. + * In other cases, we use the runtime only vite virtual module. + * + * This is used to ensure that the client is imported correctly + * when executing commands like `astro db execute`. + */ + localExecution: boolean; }) { const dbInfo = getRemoteDatabaseInfo(); @@ -170,10 +225,15 @@ export function getRemoteVirtualModContents({ } } + // If this is for the execute command, we need to import the client directly instead of using the runtime only virtual module. + const clientImport = getDBModule(localExecution); + return ` -import {asDrizzleTable, createRemoteDatabaseClient} from ${RUNTIME_IMPORT}; +import {asDrizzleTable} from ${RUNTIME_IMPORT}; + +${clientImport} -export const db = await createRemoteDatabaseClient({ +export const db = await createClient({ url: ${dbUrlArg()}, token: ${appTokenArg()}, }); @@ -200,7 +260,7 @@ const sqlite = new SQLiteAsyncDialect(); async function recreateTables({ tables, root }: { tables: LateTables; root: URL }) { const { ASTRO_DATABASE_FILE } = getAstroEnv(); const dbUrl = normalizeDatabaseUrl(ASTRO_DATABASE_FILE, new URL(DB_PATH, root).href); - const db = createLocalDatabaseClient({ dbUrl }); + const db = createClient({ url: dbUrl }); const setupQueries: SQL[] = []; for (const [name, table] of Object.entries(tables.get() ?? {})) { const dropQuery = sql.raw(`DROP TABLE IF EXISTS ${sqlite.escapeName(name)}`); diff --git a/packages/db/src/core/queries.ts b/packages/db/src/core/queries.ts index cb483d4ef3fa..f772f802501e 100644 --- a/packages/db/src/core/queries.ts +++ b/packages/db/src/core/queries.ts @@ -7,8 +7,8 @@ import { FOREIGN_KEY_REFERENCES_LENGTH_ERROR, REFERENCE_DNE_ERROR, } from '../runtime/errors.js'; -import { hasPrimaryKey } from '../runtime/index.js'; import { isSerializedSQL } from '../runtime/types.js'; +import { hasPrimaryKey } from '../runtime/utils.js'; import type { BooleanColumn, ColumnType, diff --git a/packages/db/src/db-client.d.ts b/packages/db/src/db-client.d.ts new file mode 100644 index 000000000000..7709b30f6dfc --- /dev/null +++ b/packages/db/src/db-client.d.ts @@ -0,0 +1,4 @@ +declare module 'virtual:astro:db-client' { + export const createClient: typeof import('./core/db-client/libsql-node.ts').createRemoteLibSQLClient + +} \ No newline at end of file diff --git a/packages/db/src/index.ts b/packages/db/src/index.ts index 9d7b176fae28..d96fd260932a 100644 --- a/packages/db/src/index.ts +++ b/packages/db/src/index.ts @@ -1,3 +1,3 @@ export { cli } from './core/cli/index.js'; -export { integration as default } from './core/integration/index.js'; +export { type AstroDBConfig, integration as default } from './core/integration/index.js'; export type { TableConfig } from './core/types.js'; diff --git a/packages/db/src/runtime/db-client.ts b/packages/db/src/runtime/db-client.ts deleted file mode 100644 index 35cdd6e51138..000000000000 --- a/packages/db/src/runtime/db-client.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { createClient, type Config as LibSQLConfig } from '@libsql/client'; -import type { LibSQLDatabase } from 'drizzle-orm/libsql'; -import { drizzle as drizzleLibsql } from 'drizzle-orm/libsql'; - -const isWebContainer = !!process.versions?.webcontainer; - -type LocalDbClientOptions = { - dbUrl: string; -}; - -export function createLocalDatabaseClient(options: LocalDbClientOptions): LibSQLDatabase { - const url = isWebContainer ? 'file:content.db' : options.dbUrl; - const client = createClient({ url }); - const db = drizzleLibsql(client); - return db; -} - -type RemoteDbClientOptions = { - token: string; - url: string | URL; -}; - -export function createRemoteDatabaseClient(options: RemoteDbClientOptions) { - const url = new URL(options.url); - - return createRemoteLibSQLClient(options.token, url, options.url.toString()); -} - -// this function parses the options from a `Record` -// provided from the object conversion of the searchParams and properly -// verifies that the Config object is providing the correct types. -// without this, there is runtime errors due to incorrect values -export function parseOpts(config: Record): Partial { - return { - ...config, - ...(config.syncInterval ? { syncInterval: parseInt(config.syncInterval) } : {}), - ...('readYourWrites' in config ? { readYourWrites: config.readYourWrites !== 'false' } : {}), - ...('offline' in config ? { offline: config.offline !== 'false' } : {}), - ...('tls' in config ? { tls: config.tls !== 'false' } : {}), - ...(config.concurrency ? { concurrency: parseInt(config.concurrency) } : {}), - }; -} - -function createRemoteLibSQLClient(authToken: string, dbURL: URL, rawUrl: string) { - const options: Record = Object.fromEntries(dbURL.searchParams.entries()); - dbURL.search = ''; - - let url = dbURL.toString(); - if (dbURL.protocol === 'memory:') { - // libSQL expects a special string in place of a URL - // for in-memory DBs. - url = ':memory:'; - } else if ( - dbURL.protocol === 'file:' && - dbURL.pathname.startsWith('/') && - !rawUrl.startsWith('file:/') - ) { - // libSQL accepts relative and absolute file URLs - // for local DBs. This doesn't match the URL specification. - // Parsing `file:some.db` and `file:/some.db` should yield - // the same result, but libSQL interprets the former as - // a relative path, and the latter as an absolute path. - // This detects when such a conversion happened during parsing - // and undoes it so that the URL given to libSQL is the - // same as given by the user. - url = 'file:' + dbURL.pathname.substring(1); - } - - const client = createClient({ ...parseOpts(options), url, authToken }); - return drizzleLibsql(client); -} diff --git a/packages/db/src/runtime/index.ts b/packages/db/src/runtime/index.ts index 2ea7916d6dd2..dca3cacef069 100644 --- a/packages/db/src/runtime/index.ts +++ b/packages/db/src/runtime/index.ts @@ -11,14 +11,10 @@ import { } from 'drizzle-orm/sqlite-core'; import type { DBColumn, DBTable } from '../core/types.js'; import { isSerializedSQL, type SerializedSQL } from './types.js'; -import { pathToFileURL } from './utils.js'; +import { hasPrimaryKey, pathToFileURL } from './utils.js'; export type Database = LibSQLDatabase; -export { createLocalDatabaseClient, createRemoteDatabaseClient } from './db-client.js'; export type { Table } from './types.js'; - -export function hasPrimaryKey(column: DBColumn) { - return 'primaryKey' in column.schema && !!column.schema.primaryKey; -} +export { hasPrimaryKey } from './utils.js'; // Taken from: // https://stackoverflow.com/questions/52869695/check-if-a-date-string-is-in-iso-and-utc-format diff --git a/packages/db/src/runtime/utils.ts b/packages/db/src/runtime/utils.ts index af3fc66ec381..9af3f37570d5 100644 --- a/packages/db/src/runtime/utils.ts +++ b/packages/db/src/runtime/utils.ts @@ -1,5 +1,10 @@ import { LibsqlError } from '@libsql/client'; import { AstroError } from 'astro/errors'; +import type { DBColumn } from '../core/types.js'; + +export function hasPrimaryKey(column: DBColumn) { + return 'primaryKey' in column.schema && !!column.schema.primaryKey; +} const isWindows = process?.platform === 'win32'; @@ -33,4 +38,4 @@ export function pathToFileURL(path: string): URL { // Unix is easy return new URL('file://' + path); -} +} \ No newline at end of file diff --git a/packages/db/test/unit/db-client.test.js b/packages/db/test/unit/db-client.test.js index 22df2610e49a..c1c27ce97a91 100644 --- a/packages/db/test/unit/db-client.test.js +++ b/packages/db/test/unit/db-client.test.js @@ -1,6 +1,6 @@ import assert from 'node:assert'; import test, { describe } from 'node:test'; -import { parseOpts } from '../../dist/runtime/db-client.js'; +import { parseLibSQLConfig } from '../../dist/core/db-client/utils.js'; describe('db client config', () => { test('parse config options from URL (docs example url)', () => { @@ -9,7 +9,7 @@ describe('db client config', () => { ); const options = Object.fromEntries(remoteURLToParse.searchParams.entries()); - const config = parseOpts(options); + const config = parseLibSQLConfig(options); assert.deepEqual(config, { encryptionKey: 'your-encryption-key', @@ -22,7 +22,7 @@ describe('db client config', () => { const remoteURLToParse = new URL('file://local-copy.db?readYourWrites&offline&tls'); const options = Object.fromEntries(remoteURLToParse.searchParams.entries()); - const config = parseOpts(options); + const config = parseLibSQLConfig(options); assert.deepEqual(config, { readYourWrites: true, @@ -37,7 +37,7 @@ describe('db client config', () => { ); const options = Object.fromEntries(remoteURLToParse.searchParams.entries()); - const config = parseOpts(options); + const config = parseLibSQLConfig(options); assert.deepEqual(config, { readYourWrites: true, @@ -50,7 +50,7 @@ describe('db client config', () => { const remoteURLToParse = new URL('file://local-copy.db?syncInterval=60&concurrency=2'); const options = Object.fromEntries(remoteURLToParse.searchParams.entries()); - const config = parseOpts(options); + const config = parseLibSQLConfig(options); assert.deepEqual(config, { syncInterval: 60, From 107d8a213dd9819bdd21b4c071964dd1584e28c1 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen Date: Thu, 11 Sep 2025 23:33:59 +0000 Subject: [PATCH 08/50] [ci] format --- packages/db/src/core/integration/vite-plugin-db-client.ts | 8 ++++---- packages/db/src/db-client.d.ts | 5 ++--- packages/db/src/runtime/utils.ts | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/db/src/core/integration/vite-plugin-db-client.ts b/packages/db/src/core/integration/vite-plugin-db-client.ts index 3e47842fb385..25138653a5d5 100644 --- a/packages/db/src/core/integration/vite-plugin-db-client.ts +++ b/packages/db/src/core/integration/vite-plugin-db-client.ts @@ -10,7 +10,7 @@ function getRemoteClientModule(mode: 'node' | 'web') { switch (mode) { case 'web': return `export { createClient } from '${DB_CLIENTS.web}';`; - case 'node': + case 'node': default: return `export { createClient } from '${DB_CLIENTS.node}';`; } @@ -18,8 +18,8 @@ function getRemoteClientModule(mode: 'node' | 'web') { function getLocalClientModule(mode: 'node' | 'web') { switch (mode) { - case 'node': - case 'web': + case 'node': + case 'web': default: return `export { createClient } from '${DB_CLIENTS.local}';`; } @@ -44,7 +44,7 @@ export function vitePluginDbClient(params: VitePluginDBClientParams): VitePlugin case false: default: // Local client is always available, even if not used. - return getLocalClientModule(params.mode); + return getLocalClientModule(params.mode); } }, }; diff --git a/packages/db/src/db-client.d.ts b/packages/db/src/db-client.d.ts index 7709b30f6dfc..9f2d5e9e6f88 100644 --- a/packages/db/src/db-client.d.ts +++ b/packages/db/src/db-client.d.ts @@ -1,4 +1,3 @@ declare module 'virtual:astro:db-client' { - export const createClient: typeof import('./core/db-client/libsql-node.ts').createRemoteLibSQLClient - -} \ No newline at end of file + export const createClient: typeof import('./core/db-client/libsql-node.ts').createRemoteLibSQLClient; +} diff --git a/packages/db/src/runtime/utils.ts b/packages/db/src/runtime/utils.ts index 9af3f37570d5..4a3260144cdb 100644 --- a/packages/db/src/runtime/utils.ts +++ b/packages/db/src/runtime/utils.ts @@ -38,4 +38,4 @@ export function pathToFileURL(path: string): URL { // Unix is easy return new URL('file://' + path); -} \ No newline at end of file +} From a671925193ad2a67d8737707ba17a54cff7f485f Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 12 Sep 2025 10:10:28 +0100 Subject: [PATCH 09/50] chore: update internal convention (#14349) Co-authored-by: florian-lefebvre <69633530+florian-lefebvre@users.noreply.github.com> Co-authored-by: ascorbic <213306+ascorbic@users.noreply.github.com> --- CONTRIBUTING.md | 16 ++++ biome.jsonc | 15 +++- package.json | 2 +- .../html/transform/html-token-transform.ts | 3 +- pnpm-lock.yaml | 74 +++++++++---------- 5 files changed, 70 insertions(+), 40 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e299f5a0bfd3..e04accc52b41 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,6 +77,22 @@ During the development process, you may want to test your changes to ensure they Overall, it's up to personal preference which method to use. For smaller changes, using the examples folder may be sufficient. For larger changes, using a separate project may be more appropriate. +#### Naming convention and APIs usage + +> [!NOTE] +> This is a requirement that is applied only to the `packages/astro` source code. + +> [!IMPORTANT] +> This convention is recent, the source code might not follow this convention yet. + +The use of `Node.js` APIs e.g. `node:` is limited and should be done only in specific parts of the code. The reason why +the project can't use `Node.js` APIs at will is because Astro code might run in environments that support runtimes other than +Node.js. An example is Cloudflare Workers. + +Code that is runtime-agnostic (i.e. code that shouldn't use Node.js APIs) should be placed inside folders or files called `runtime` (`runtime/` or `runtime.ts`). + +You can use `Node.js` APIs inside the implementation of the vite plugins, but if the vite plugin returns a virtual module, that virtual module can't use Node.js APIs. + #### Debugging Vite You can debug vite by prefixing any command with `DEBUG` like so: diff --git a/biome.jsonc b/biome.jsonc index dbecea355e70..796ea9f12129 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.1.2/schema.json", + "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", "files": { "includes": ["**", "!**/smoke/**", "!**/fixtures/**", "!**/_temp-fixtures/**", "!**/vendor/**"] }, @@ -155,6 +155,19 @@ } } } + }, + { + "includes": [ + "**/packages/astro/src/**/runtime/**/*.ts", + "**/packages/astro/src/**/runtime.ts" + ], + "linter": { + "rules": { + "correctness": { + "noNodejsModules": "error" + } + } + } } ] } diff --git a/package.json b/package.json index 3807ef17dae6..befc2d684992 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "devDependencies": { "@astrojs/check": "^0.9.4", - "@biomejs/biome": "2.1.2", + "@biomejs/biome": "2.2.4", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.29.6", "@types/node": "^18.19.115", diff --git a/packages/integrations/markdoc/src/html/transform/html-token-transform.ts b/packages/integrations/markdoc/src/html/transform/html-token-transform.ts index b80595f97b35..10b4c030c697 100644 --- a/packages/integrations/markdoc/src/html/transform/html-token-transform.ts +++ b/packages/integrations/markdoc/src/html/transform/html-token-transform.ts @@ -1,7 +1,8 @@ +/** biome-ignore-all lint/correctness/noUnusedImports: not correctly detected because type isn't exported */ + import type { Tokenizer } from '@markdoc/markdoc'; import { Parser } from 'htmlparser2'; // @ts-expect-error This type isn't exported -// biome-ignore lint/correctness/noUnusedImports: not correctly detected because type isn't exported import type * as Token from 'markdown-it/lib/token'; export function htmlTokenTransform(tokenizer: Tokenizer, tokens: Token[]): Token[] { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65178e0a0b07..a2c806cd4681 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,8 +20,8 @@ importers: specifier: ^0.9.4 version: 0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.2) '@biomejs/biome': - specifier: 2.1.2 - version: 2.1.2 + specifier: 2.2.4 + version: 2.2.4 '@changesets/changelog-github': specifier: ^0.5.1 version: 0.5.1 @@ -6666,55 +6666,55 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.1.2': - resolution: {integrity: sha512-yq8ZZuKuBVDgAS76LWCfFKHSYIAgqkxVB3mGVVpOe2vSkUTs7xG46zXZeNPRNVjiJuw0SZ3+J2rXiYx0RUpfGg==} + '@biomejs/biome@2.2.4': + resolution: {integrity: sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.1.2': - resolution: {integrity: sha512-leFAks64PEIjc7MY/cLjE8u5OcfBKkcDB0szxsWUB4aDfemBep1WVKt0qrEyqZBOW8LPHzrFMyDl3FhuuA0E7g==} + '@biomejs/cli-darwin-arm64@2.2.4': + resolution: {integrity: sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.1.2': - resolution: {integrity: sha512-Nmmv7wRX5Nj7lGmz0FjnWdflJg4zii8Ivruas6PBKzw5SJX/q+Zh2RfnO+bBnuKLXpj8kiI2x2X12otpH6a32A==} + '@biomejs/cli-darwin-x64@2.2.4': + resolution: {integrity: sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.1.2': - resolution: {integrity: sha512-qgHvafhjH7Oca114FdOScmIKf1DlXT1LqbOrrbR30kQDLFPEOpBG0uzx6MhmsrmhGiCFCr2obDamu+czk+X0HQ==} + '@biomejs/cli-linux-arm64-musl@2.2.4': + resolution: {integrity: sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@2.1.2': - resolution: {integrity: sha512-NWNy2Diocav61HZiv2enTQykbPP/KrA/baS7JsLSojC7Xxh2nl9IczuvE5UID7+ksRy2e7yH7klm/WkA72G1dw==} + '@biomejs/cli-linux-arm64@2.2.4': + resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@2.1.2': - resolution: {integrity: sha512-xlB3mU14ZUa3wzLtXfmk2IMOGL+S0aHFhSix/nssWS/2XlD27q+S6f0dlQ8WOCbYoXcuz8BCM7rCn2lxdTrlQA==} + '@biomejs/cli-linux-x64-musl@2.2.4': + resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@2.1.2': - resolution: {integrity: sha512-Km/UYeVowygTjpX6sGBzlizjakLoMQkxWbruVZSNE6osuSI63i4uCeIL+6q2AJlD3dxoiBJX70dn1enjQnQqwA==} + '@biomejs/cli-linux-x64@2.2.4': + resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@2.1.2': - resolution: {integrity: sha512-G8KWZli5ASOXA3yUQgx+M4pZRv3ND16h77UsdunUL17uYpcL/UC7RkWTdkfvMQvogVsAuz5JUcBDjgZHXxlKoA==} + '@biomejs/cli-win32-arm64@2.2.4': + resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.1.2': - resolution: {integrity: sha512-9zajnk59PMpjBkty3bK2IrjUsUHvqe9HWwyAWQBjGLE7MIBjbX2vwv1XPEhmO2RRuGoTkVx3WCanHrjAytICLA==} + '@biomejs/cli-win32-x64@2.2.4': + resolution: {integrity: sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -14433,39 +14433,39 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@biomejs/biome@2.1.2': + '@biomejs/biome@2.2.4': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.1.2 - '@biomejs/cli-darwin-x64': 2.1.2 - '@biomejs/cli-linux-arm64': 2.1.2 - '@biomejs/cli-linux-arm64-musl': 2.1.2 - '@biomejs/cli-linux-x64': 2.1.2 - '@biomejs/cli-linux-x64-musl': 2.1.2 - '@biomejs/cli-win32-arm64': 2.1.2 - '@biomejs/cli-win32-x64': 2.1.2 + '@biomejs/cli-darwin-arm64': 2.2.4 + '@biomejs/cli-darwin-x64': 2.2.4 + '@biomejs/cli-linux-arm64': 2.2.4 + '@biomejs/cli-linux-arm64-musl': 2.2.4 + '@biomejs/cli-linux-x64': 2.2.4 + '@biomejs/cli-linux-x64-musl': 2.2.4 + '@biomejs/cli-win32-arm64': 2.2.4 + '@biomejs/cli-win32-x64': 2.2.4 - '@biomejs/cli-darwin-arm64@2.1.2': + '@biomejs/cli-darwin-arm64@2.2.4': optional: true - '@biomejs/cli-darwin-x64@2.1.2': + '@biomejs/cli-darwin-x64@2.2.4': optional: true - '@biomejs/cli-linux-arm64-musl@2.1.2': + '@biomejs/cli-linux-arm64-musl@2.2.4': optional: true - '@biomejs/cli-linux-arm64@2.1.2': + '@biomejs/cli-linux-arm64@2.2.4': optional: true - '@biomejs/cli-linux-x64-musl@2.1.2': + '@biomejs/cli-linux-x64-musl@2.2.4': optional: true - '@biomejs/cli-linux-x64@2.1.2': + '@biomejs/cli-linux-x64@2.2.4': optional: true - '@biomejs/cli-win32-arm64@2.1.2': + '@biomejs/cli-win32-arm64@2.2.4': optional: true - '@biomejs/cli-win32-x64@2.1.2': + '@biomejs/cli-win32-x64@2.2.4': optional: true '@bluwy/giget-core@0.1.3': From c54b11ee022a4530579713cf101e0c60540559c9 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 12 Sep 2025 09:11:20 +0000 Subject: [PATCH 10/50] [ci] format --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e04accc52b41..5703b4248d68 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,7 +85,7 @@ Overall, it's up to personal preference which method to use. For smaller changes > [!IMPORTANT] > This convention is recent, the source code might not follow this convention yet. -The use of `Node.js` APIs e.g. `node:` is limited and should be done only in specific parts of the code. The reason why +The use of `Node.js` APIs e.g. `node:` is limited and should be done only in specific parts of the code. The reason why the project can't use `Node.js` APIs at will is because Astro code might run in environments that support runtimes other than Node.js. An example is Cloudflare Workers. From bd4a70bde3c8e0c04e2754cf26d222aa36d3c3c8 Mon Sep 17 00:00:00 2001 From: Louis Escher <66965600+louisescher@users.noreply.github.com> Date: Fri, 12 Sep 2025 15:14:12 +0200 Subject: [PATCH 11/50] feat: Add Vite version & integration versions to `astro info` (#14300) Co-authored-by: Luiz Ferraz Co-authored-by: Florian Lefebvre Co-authored-by: Adam Matthiesen --- .changeset/eleven-geckos-ring.md | 5 + package.json | 1 + packages/astro/package.json | 1 + packages/astro/src/cli/info/index.ts | 158 +- packages/astro/test/cli.test.js | 93 +- .../fixtures/astro-info-versions/.gitignore | 6 + .../astro-info-versions/astro.config.mjs | 11 + .../fixtures/astro-info-versions/package.json | 18 + .../astro-info-versions/src/pages/index.astro | 11 + .../astro-info-versions/tsconfig.json | 2 + pnpm-lock.yaml | 1987 +++++++++-------- 11 files changed, 1329 insertions(+), 964 deletions(-) create mode 100644 .changeset/eleven-geckos-ring.md create mode 100644 packages/astro/test/fixtures/astro-info-versions/.gitignore create mode 100644 packages/astro/test/fixtures/astro-info-versions/astro.config.mjs create mode 100644 packages/astro/test/fixtures/astro-info-versions/package.json create mode 100644 packages/astro/test/fixtures/astro-info-versions/src/pages/index.astro create mode 100644 packages/astro/test/fixtures/astro-info-versions/tsconfig.json diff --git a/.changeset/eleven-geckos-ring.md b/.changeset/eleven-geckos-ring.md new file mode 100644 index 000000000000..138116d839fb --- /dev/null +++ b/.changeset/eleven-geckos-ring.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Adds Vite version & integration versions to output of `astro info` diff --git a/package.json b/package.json index befc2d684992..69dd56259d44 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "test:integrations": "turbo run test --concurrency=1 --filter=create-astro --filter=\"@astrojs/*\" --only", "test:citgm": "pnpm -r --filter=astro test", "test:match": "cd packages/astro && pnpm run test:match", + "test:cli": "cd packages/astro && pnpm run test:cli", "test:unit": "cd packages/astro && pnpm run test:unit", "test:types": "cd packages/astro && pnpm run test:types", "test:smoke": "pnpm test:smoke:example && pnpm test:smoke:docs", diff --git a/packages/astro/package.json b/packages/astro/package.json index 97b9240a8e9f..85ec3394f125 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -105,6 +105,7 @@ "dev": "astro-scripts dev --copy-wasm --prebuild \"src/runtime/server/astro-island.ts\" --prebuild \"src/runtime/client/{idle,load,media,only,visible}.ts\" \"src/**/*.{ts,js}\"", "test": "pnpm run test:unit && pnpm run test:integration && pnpm run test:types", "test:match": "astro-scripts test \"test/**/*.test.js\" --match", + "test:cli": "astro-scripts test \"test/**/cli.test.js\"", "test:e2e": "pnpm test:e2e:chrome && pnpm test:e2e:firefox", "test:e2e:match": "playwright test -g", "test:e2e:chrome": "playwright test", diff --git a/packages/astro/src/cli/info/index.ts b/packages/astro/src/cli/info/index.ts index 554c89608af0..60eea529a876 100644 --- a/packages/astro/src/cli/info/index.ts +++ b/packages/astro/src/cli/info/index.ts @@ -1,4 +1,4 @@ -import { spawnSync } from 'node:child_process'; +import { spawn, spawnSync } from 'node:child_process'; import { arch, platform } from 'node:os'; import * as colors from 'kleur/colors'; import prompts from 'prompts'; @@ -19,29 +19,64 @@ export async function getInfoOutput({ userConfig: AstroUserConfig | AstroConfig; print: boolean; }): Promise { + const packageManager = getPackageManager(); + const rows: Array<[string, string | string[]]> = [ ['Astro', `v${ASTRO_VERSION}`], ['Node', process.version], ['System', getSystem()], - ['Package Manager', getPackageManager()], + ['Package Manager', packageManager], ]; + if (print) { + const viteVersion = await getVersion(packageManager, "vite"); + + if (viteVersion) { + rows.splice(1, 0, ['Vite', viteVersion]); + } + } + + const hasAdapter = "adapter" in userConfig && userConfig.adapter?.name; + let adapterVersion: string | undefined = undefined; + + if (print && hasAdapter) { + adapterVersion = await getVersion(packageManager, userConfig.adapter!.name); + } + + const adatperOutputString = hasAdapter + ? `${userConfig.adapter!.name}${adapterVersion ? ` (${adapterVersion})` : ""}` + : "none"; + try { - rows.push(['Output', userConfig.output ?? 'static']); - rows.push(['Adapter', userConfig.adapter?.name ?? 'none']); + rows.push(['Output', ("adapter" in userConfig && userConfig.output ? userConfig.output : 'static')]); + rows.push(['Adapter', adatperOutputString]); + const integrations = (userConfig?.integrations ?? []) .filter(Boolean) .flat() - .map((i: any) => i?.name) - .filter(Boolean); - rows.push(['Integrations', integrations.length > 0 ? integrations : 'none']); - } catch {} + .map(async (i: any) => { + if (!i.name) return; + if (!print) return i.name; + + const version = await getVersion(packageManager, i.name); + + return `${i.name}${version ? ` (${version})` : ""}`; + }); + const awaitedIntegrations = (await Promise.all(integrations)).filter(Boolean); + + rows.push(['Integrations', awaitedIntegrations.length > 0 ? awaitedIntegrations : 'none']); + } catch {} + let output = ''; for (const [label, value] of rows) { output += printRow(label, value, print); } + if (packageManager === "bun") { + console.warn("Bun is not officially supported by Astro. Unable to retreive certain version information."); + } + return output.trim(); } @@ -191,3 +226,110 @@ function printRow(label: string, value: string | string[], print: boolean) { } return plaintext; } + +function formatPnpmVersionOutput(versionOutput: string): string { + return versionOutput.startsWith("link:") + ? "Local" + : `v${versionOutput}`; +} + +type BareNpmLikeVersionOutput = { + version: string; + dependencies: Record; +} + +async function spawnAsync(executable: string, opts: Array): Promise { + return new Promise((resolve, reject) => { + const child = spawn(executable, opts, { shell: true }); + let stdout = ""; + let stderr = ""; + + child.stdout.on("data", d => (stdout += d)); + child.stderr.on("data", d => (stderr += d)); + child.on("error", reject); + child.on("close", code => { + if (code !== 0) reject(new Error(stderr)); + else resolve(stdout); + }); + }); +} + +async function getVersionUsingPNPM(dependency: string): Promise { + const output = await spawnAsync("pnpm", ["why", dependency, "--json"]); + + const parsedOutput = JSON.parse(output) as Array; + + const deps = parsedOutput[0].dependencies; + + if (parsedOutput.length === 0 || !deps) { + return undefined; + } + + const userProvidedDependency = deps[dependency]; + + if (userProvidedDependency) { + return userProvidedDependency.version.startsWith("link:") + ? "Local" + : `v${userProvidedDependency.version}`; + } + + const astroDependency = deps.astro?.dependencies[dependency]; + return astroDependency ? formatPnpmVersionOutput(astroDependency.version) : undefined; +} + +async function getVersionUsingNPM(dependency: string): Promise { + const output = await spawnAsync("npm", ["ls", dependency, "--json", "--depth=1"]); + const parsedNpmOutput = JSON.parse(output) as BareNpmLikeVersionOutput; + + if (!parsedNpmOutput.dependencies) { + return undefined; + } + + if (parsedNpmOutput.dependencies[dependency]) { + return `v${parsedNpmOutput.dependencies[dependency].version}`; + } + + const astro = parsedNpmOutput.dependencies.astro; + return astro ? `v${astro.dependencies[dependency].version}` : undefined; +} + +type YarnVersionOutputLine = { + children: Record +} + +function getYarnOutputDepVersion(dependency: string, outputLine: string) { + const parsed = JSON.parse(outputLine) as YarnVersionOutputLine; + + for (const [key, value] of Object.entries(parsed.children)) { + if (key.startsWith(`${dependency}@`)) { + return `v${value.locator.split(":").pop()}`; + } + } +} + +async function getVersionUsingYarn(dependency: string): Promise { + const yarnOutput = await spawnAsync("yarn", ["why", dependency, "--json"]); + + const hasUserDefinition = yarnOutput.includes("workspace:."); + + for (const line of yarnOutput.split("\n")) { + if (hasUserDefinition && line.includes("workspace:.")) return getYarnOutputDepVersion(dependency, line); + if (!hasUserDefinition && line.includes("astro@")) return getYarnOutputDepVersion(dependency, line); + } +} + +async function getVersion(packageManager: string, dependency: string): Promise { + try { + switch (packageManager) { + case "pnpm": return await getVersionUsingPNPM(dependency); + case "npm": return getVersionUsingNPM(dependency); + case "yarn": return getVersionUsingYarn(dependency); + case "bun": return undefined; + } + + return undefined; + } catch (err) { + console.error(err); + return undefined; + } +} diff --git a/packages/astro/test/cli.test.js b/packages/astro/test/cli.test.js index ce30b12bbd15..665560ab4b04 100644 --- a/packages/astro/test/cli.test.js +++ b/packages/astro/test/cli.test.js @@ -1,4 +1,5 @@ import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; import { promises as fs, readFileSync } from 'node:fs'; import { isIPv4 } from 'node:net'; import { join } from 'node:path'; @@ -80,10 +81,13 @@ describe('astro cli', () => { assert.equal(proc.stdout.includes(pkgVersion), true); }); - it('astro info', async () => { + it('astro info has correct Astro version', async () => { const proc = await cli('info', '--copy'); const pkgURL = new URL('../package.json', import.meta.url); - const pkgVersion = await fs.readFile(pkgURL, 'utf8').then((data) => JSON.parse(data).version); + const pkgJson = await fs.readFile(pkgURL, 'utf8').then((data) => JSON.parse(data)); + + const pkgVersion = pkgJson.version; + assert.ok(proc.stdout.includes(`v${pkgVersion}`)); assert.equal(proc.exitCode, 0); @@ -99,6 +103,91 @@ describe('astro cli', () => { assert.ok(clipboardContent.includes(`v${pkgVersion}`)); } }); + + it('astro info shows correct Vite and integration versions when using pnpm', async () => { + const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); + const projectPackageJSONUrl = new URL('./package.json', projectRootURL); + + const version = await fs.readFile(fileURLToPath(projectPackageJSONUrl)) + .then((json) => JSON.parse(json).dependencies.vite); + + const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { cwd: projectRootURL, encoding: "utf-8", shell: true }); + + assert.equal(proc.stdout.includes(`v${version}`), true); + assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); + assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); + }); + + it('astro info shows correct Vite and integration versions when using npm', async () => { + const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); + const projectPackageJSONUrl = new URL('./package.json', projectRootURL); + + const version = await fs.readFile(fileURLToPath(projectPackageJSONUrl)) + .then((json) => JSON.parse(json).dependencies.vite); + + const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { cwd: projectRootURL, encoding: "utf-8", shell: true }); + + assert.equal(proc.stdout.includes(`v${version}`), true); + assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); + assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); + }); + + it('astro info shows correct Vite and integration versions when using yarn', async () => { + const fixtureRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); + const testsRootURL = new URL('../', import.meta.url); + const astroPackageJSONUrl = new URL('./package.json', testsRootURL); + const packageJSONUrl = new URL('./package.json', fixtureRootURL); + const yarnLockUrl = new URL('./yarn.lock', fixtureRootURL); + + const astroVersion = await fs.readFile(fileURLToPath(astroPackageJSONUrl)).then((text) => JSON.parse(text).version); + const packFileName = `./astro-${astroVersion}.tgz`; + const packURL = new URL(packFileName, testsRootURL); + const packDestinationURL = new URL(packFileName, fixtureRootURL); + + // Add a packageManager field to the fixture's package.json file, otherwise + // corepack won't allow us to use yarn because a parent directory has a different + // package.json file with a packageManager field + let packageJSON = await fs.readFile(fileURLToPath(packageJSONUrl), { encoding: "utf-8" }).then((text) => JSON.parse(text)); + packageJSON.packageManager = "yarn@4.9.4"; + + const viteVersion = packageJSON.dependencies.vite; + + await fs.writeFile( + fileURLToPath(packageJSONUrl), + JSON.stringify(packageJSON), + { encoding: "utf-8" } + ); + await fs.writeFile(yarnLockUrl, "", { encoding: "utf-8" }); + + spawnSync('pnpm', ['pack'], { cwd: testsRootURL, encoding: 'utf-8', shell: true }); + await fs.rename(packURL, packDestinationURL); + + spawnSync('corepack', ['use', 'yarn@4.9.4'], { cwd: fixtureRootURL, encoding: 'utf-8', shell: true }); + spawnSync('corepack', ['yarn', 'add', packFileName], { cwd: fixtureRootURL, encoding: 'utf-8', shell: true }); + + const proc = spawnSync( + 'corepack', + ['yarn', 'astro', 'info', '--copy'], + { + cwd: fixtureRootURL, + encoding: "utf-8", + shell: true + } + ); + + // Reset changes to package.json + delete packageJSON.packageManager; + packageJSON.dependencies.astro = "workspace:*"; + await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: "utf-8" }); + await fs.rm(yarnLockUrl, { force: true }); + await fs.rm(packDestinationURL, { force: true }); + + spawnSync('pnpm', ['install'], { cwd: fixtureRootURL, shell: true }); + + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); + assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); + assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); + }); it( 'astro check no errors', diff --git a/packages/astro/test/fixtures/astro-info-versions/.gitignore b/packages/astro/test/fixtures/astro-info-versions/.gitignore new file mode 100644 index 000000000000..53cf4fd5f8e4 --- /dev/null +++ b/packages/astro/test/fixtures/astro-info-versions/.gitignore @@ -0,0 +1,6 @@ +.pnp.cjs +.pnp.loader.mjs +yarn.lock +astro-*.tgz +.yarn +.yarnrc.yml diff --git a/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs b/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs new file mode 100644 index 000000000000..faf35282657c --- /dev/null +++ b/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig } from 'astro/config'; +import react from '@astrojs/react'; +import node from '@astrojs/node'; + +// https://astro.build/config +export default defineConfig({ + integrations: [react()], + adapter: node({ + mode: "standalone" + }) +}); diff --git a/packages/astro/test/fixtures/astro-info-versions/package.json b/packages/astro/test/fixtures/astro-info-versions/package.json new file mode 100644 index 000000000000..5533ee673390 --- /dev/null +++ b/packages/astro/test/fixtures/astro-info-versions/package.json @@ -0,0 +1,18 @@ +{ + "name": "@test/astro-info-versions", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/node": "9.4.0", + "@astrojs/react": "4.3.0", + "@types/react": "19.1.1", + "@types/react-dom": "19.1.1", + "astro": "workspace:*", + "react": "19.1.1", + "react-dom": "19.1.1", + "vite": "6.3.6" + }, + "scripts": { + "astro": "astro" + } +} \ No newline at end of file diff --git a/packages/astro/test/fixtures/astro-info-versions/src/pages/index.astro b/packages/astro/test/fixtures/astro-info-versions/src/pages/index.astro new file mode 100644 index 000000000000..49d10645690e --- /dev/null +++ b/packages/astro/test/fixtures/astro-info-versions/src/pages/index.astro @@ -0,0 +1,11 @@ + + + + + + Document + + +
Hello, Astro!
+ + diff --git a/packages/astro/test/fixtures/astro-info-versions/tsconfig.json b/packages/astro/test/fixtures/astro-info-versions/tsconfig.json new file mode 100644 index 000000000000..d64f4787597c --- /dev/null +++ b/packages/astro/test/fixtures/astro-info-versions/tsconfig.json @@ -0,0 +1,2 @@ +// Having a `tsconfig.json`, even empty speeds up the test massively since TypeScript does not have to look for one +{} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a2c806cd4681..2fbfb2fdb6c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,22 +27,22 @@ importers: version: 0.5.1 '@changesets/cli': specifier: ^2.29.6 - version: 2.29.6(@types/node@18.19.123) + version: 2.29.7(@types/node@18.19.124) '@types/node': specifier: ^18.19.115 - version: 18.19.123 + version: 18.19.124 esbuild: specifier: 0.25.5 version: 0.25.5 eslint: specifier: ^9.34.0 - version: 9.34.0(jiti@2.5.1) + version: 9.35.0(jiti@2.5.1) eslint-plugin-regexp: specifier: ^2.10.0 - version: 2.10.0(eslint@9.34.0(jiti@2.5.1)) + version: 2.10.0(eslint@9.35.0(jiti@2.5.1)) knip: specifier: 5.61.3 - version: 5.61.3(@types/node@18.19.123)(typescript@5.9.2) + version: 5.61.3(@types/node@18.19.124)(typescript@5.9.2) only-allow: specifier: ^1.2.1 version: 1.2.1 @@ -57,7 +57,7 @@ importers: version: 0.3.12 tinyglobby: specifier: ^0.2.14 - version: 0.2.14 + version: 0.2.15 turbo: specifier: ^2.5.6 version: 2.5.6 @@ -66,7 +66,7 @@ importers: version: 5.9.2 typescript-eslint: specifier: ^8.42.0 - version: 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) benchmark: dependencies: @@ -109,10 +109,10 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: 4.0.1 - version: 4.0.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.0.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) benchmark/packages/adapter: dependencies: @@ -192,7 +192,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@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) devDependencies: '@types/react': specifier: ^18.3.24 @@ -211,7 +211,7 @@ importers: version: 3.13.11 alpinejs: specifier: ^3.14.9 - version: 3.14.9 + version: 3.15.0 astro: specifier: ^5.13.7 version: link:../../packages/astro @@ -382,7 +382,7 @@ importers: version: link:../../packages/astro sass: specifier: ^1.92.0 - version: 1.92.0 + version: 1.92.1 sharp: specifier: ^0.34.3 version: 0.34.3 @@ -391,7 +391,7 @@ importers: devDependencies: '@types/node': specifier: ^18.17.8 - version: 18.19.123 + version: 18.19.124 astro: specifier: ^5.13.7 version: link:../../packages/astro @@ -445,7 +445,7 @@ importers: version: link:../../packages/integrations/mdx '@tailwindcss/vite': specifier: ^4.1.12 - version: 4.1.12(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@types/canvas-confetti': specifier: ^1.9.0 version: 1.9.0 @@ -457,7 +457,7 @@ importers: version: 1.9.3 tailwindcss: specifier: ^4.1.12 - version: 4.1.12 + version: 4.1.13 examples/with-vitest: dependencies: @@ -466,7 +466,7 @@ importers: version: link:../../packages/astro vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) packages/astro: dependencies: @@ -490,7 +490,7 @@ importers: version: 1.1.0 '@rollup/pluginutils': specifier: ^5.2.0 - version: 5.2.0(rollup@4.50.0) + version: 5.3.0(rollup@4.50.1) acorn: specifier: ^8.15.0 version: 8.15.0 @@ -571,7 +571,7 @@ importers: version: 4.1.5 magic-string: specifier: ^0.30.18 - version: 0.30.18 + version: 0.30.19 magicast: specifier: ^0.3.5 version: 0.3.5 @@ -586,7 +586,7 @@ importers: version: 6.2.0 p-queue: specifier: ^8.1.0 - version: 8.1.0 + version: 8.1.1 package-manager-detector: specifier: ^1.3.0 version: 1.3.0 @@ -613,7 +613,7 @@ importers: version: 0.3.2 tinyglobby: specifier: ^0.2.14 - version: 0.2.14 + version: 0.2.15 tsconfck: specifier: ^3.1.6 version: 3.1.6(typescript@5.9.2) @@ -628,16 +628,16 @@ importers: version: 5.0.0 unstorage: specifier: ^1.17.0 - version: 1.17.0(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13) + version: 1.17.1(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13) vfile: specifier: ^6.0.3 version: 6.0.3 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vitefu: specifier: ^1.1.1 - version: 1.1.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) xxhash-wasm: specifier: ^1.1.0 version: 1.1.0 @@ -701,7 +701,7 @@ importers: version: 2.4.9 '@types/semver': specifier: ^7.7.0 - version: 7.7.0 + version: 7.7.1 '@types/yargs-parser': specifier: ^21.0.3 version: 21.0.3 @@ -731,7 +731,7 @@ importers: version: 3.2.0 node-mocks-http: specifier: ^1.17.2 - version: 1.17.2(@types/node@22.18.0) + version: 1.17.2(@types/node@22.18.1) parse-srcset: specifier: ^1.0.2 version: 1.0.2 @@ -749,10 +749,10 @@ importers: version: 0.1.2 rollup: specifier: ^4.50.0 - version: 4.50.0 + version: 4.50.1 sass: specifier: ^1.91.0 - version: 1.92.0 + version: 1.92.1 typescript: specifier: ^5.9.2 version: 5.9.2 @@ -764,7 +764,7 @@ importers: version: 11.0.5 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) optionalDependencies: sharp: specifier: ^0.34.0 @@ -1042,7 +1042,7 @@ importers: version: link:../../.. sass: specifier: ^1.91.0 - version: 1.92.0 + version: 1.92.1 packages/astro/e2e/fixtures/errors: dependencies: @@ -1075,7 +1075,7 @@ importers: version: 18.3.1(react@18.3.1) sass: specifier: ^1.91.0 - version: 1.92.0 + version: 1.92.1 solid-js: specifier: ^1.9.9 version: 1.9.9 @@ -1093,7 +1093,7 @@ importers: version: link:../../.. sass: specifier: ^1.91.0 - version: 1.92.0 + version: 1.92.1 packages/astro/e2e/fixtures/hydration-race: dependencies: @@ -1596,13 +1596,13 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.12 - version: 4.1.12(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.12 - version: 4.1.12 + version: 4.1.13 packages/astro/e2e/fixtures/ts-resolution: dependencies: @@ -2196,6 +2196,33 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/astro-info-versions: + dependencies: + '@astrojs/node': + specifier: 9.4.0 + version: 9.4.0(astro@packages+astro) + '@astrojs/react': + specifier: 4.3.0 + version: 4.3.0(@types/node@22.18.1)(@types/react-dom@19.1.1(@types/react@19.1.1))(@types/react@19.1.1)(jiti@2.5.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1)(yaml@2.8.1) + '@types/react': + specifier: 19.1.1 + version: 19.1.1 + '@types/react-dom': + specifier: 19.1.1 + version: 19.1.1(@types/react@19.1.1) + astro: + specifier: workspace:* + version: link:../../.. + react: + specifier: 19.1.1 + version: 19.1.1 + react-dom: + specifier: 19.1.1 + version: 19.1.1(react@19.1.1) + vite: + specifier: 6.3.6 + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + packages/astro/test/fixtures/astro-jsx: dependencies: astro: @@ -2380,13 +2407,13 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.12 - version: 4.1.12(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.12 - version: 4.1.12 + version: 4.1.13 packages/astro/test/fixtures/astro-sitemap-rss: dependencies: @@ -3545,13 +3572,13 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.12 - version: 4.1.12(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.12 - version: 4.1.12 + version: 4.1.13 packages/astro/test/fixtures/middleware-virtual: dependencies: @@ -4320,13 +4347,13 @@ importers: version: link:../../../../integrations/mdx '@tailwindcss/vite': specifier: ^4.1.12 - version: 4.1.12(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) astro: specifier: workspace:* version: link:../../.. tailwindcss: specifier: ^4.1.12 - version: 4.1.12 + version: 4.1.13 packages/astro/test/fixtures/third-party-astro: dependencies: @@ -4389,7 +4416,7 @@ importers: version: link:../../.. vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) packages/astro/test/fixtures/vue-component: dependencies: @@ -4482,13 +4509,13 @@ importers: dependencies: '@libsql/client': specifier: ^0.15.14 - version: 0.15.14 + version: 0.15.15 deep-diff: specifier: ^1.0.2 version: 1.0.2 drizzle-orm: specifier: ^0.42.0 - version: 0.42.0(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14) + version: 0.42.0(@cloudflare/workers-types@4.20250909.0)(@libsql/client@0.15.15) kleur: specifier: ^4.1.5 version: 4.1.5 @@ -4531,7 +4558,7 @@ importers: version: 5.9.2 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) packages/db/test/fixtures/basics: dependencies: @@ -4687,7 +4714,7 @@ importers: version: link:../../../scripts vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) packages/integrations/alpinejs/test/fixtures/basics: dependencies: @@ -4699,7 +4726,7 @@ importers: version: 3.13.11 alpinejs: specifier: ^3.14.9 - version: 3.14.9 + version: 3.15.0 astro: specifier: workspace:* version: link:../../../../../astro @@ -4714,7 +4741,7 @@ importers: version: 3.13.11 alpinejs: specifier: ^3.14.9 - version: 3.14.9 + version: 3.15.0 astro: specifier: workspace:* version: link:../../../../../astro @@ -4729,7 +4756,7 @@ importers: version: 3.13.11 alpinejs: specifier: ^3.14.9 - version: 3.14.9 + version: 3.15.0 astro: specifier: workspace:* version: link:../../../../../astro @@ -4744,16 +4771,16 @@ importers: version: link:../../underscore-redirects '@cloudflare/workers-types': specifier: ^4.20250903.0 - version: 4.20250903.0 + version: 4.20250909.0 tinyglobby: specifier: ^0.2.14 - version: 0.2.14 + version: 0.2.15 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250903.0) + version: 4.14.1(@cloudflare/workers-types@4.20250909.0) devDependencies: astro: specifier: workspace:* @@ -4772,7 +4799,7 @@ importers: version: 8.0.1 rollup: specifier: ^4.50.0 - version: 4.50.0 + version: 4.50.1 packages/integrations/cloudflare/test/fixtures/astro-dev-platform: dependencies: @@ -4785,7 +4812,7 @@ importers: devDependencies: wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250903.0) + version: 4.14.1(@cloudflare/workers-types@4.20250909.0) packages/integrations/cloudflare/test/fixtures/astro-env: dependencies: @@ -4798,7 +4825,7 @@ importers: devDependencies: wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250903.0) + version: 4.14.1(@cloudflare/workers-types@4.20250909.0) packages/integrations/cloudflare/test/fixtures/compile-image-service: dependencies: @@ -4865,7 +4892,7 @@ importers: version: link:../../../../../astro wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250903.0) + version: 4.14.1(@cloudflare/workers-types@4.20250909.0) packages/integrations/cloudflare/test/fixtures/with-base: dependencies: @@ -4943,7 +4970,7 @@ importers: version: link:../../astro-prism '@markdoc/markdoc': specifier: ^0.5.4 - version: 0.5.4(@types/react@18.3.24)(react@19.1.1) + version: 0.5.4(@types/react@19.1.1)(react@19.1.1) esbuild: specifier: ^0.25.0 version: 0.25.5 @@ -4971,7 +4998,7 @@ importers: version: 0.18.12 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -5227,7 +5254,7 @@ importers: version: 11.0.5 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -5398,26 +5425,26 @@ importers: version: 10.0.10 '@netlify/functions': specifier: ^4.2.5 - version: 4.2.5(rollup@4.50.0) + version: 4.2.5(rollup@4.50.1) '@netlify/vite-plugin': specifier: ^2.5.8 - version: 2.5.8(@vercel/functions@2.2.13)(rollup@4.50.0)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 2.5.9(@vercel/functions@2.2.13)(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@vercel/nft': specifier: ^0.30.1 - version: 0.30.1(rollup@4.50.0) + version: 0.30.1(rollup@4.50.1) esbuild: specifier: ^0.25.0 version: 0.25.5 tinyglobby: specifier: ^0.2.14 - version: 0.2.14 + version: 0.2.15 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) devDependencies: '@types/node': specifier: ^22.10.6 - version: 22.18.0 + version: 22.18.1 astro: specifier: workspace:* version: link:../../astro @@ -5521,7 +5548,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.6 - version: 22.18.0 + version: 22.18.1 '@types/send': specifier: ^0.17.5 version: 0.17.5 @@ -5545,7 +5572,7 @@ importers: version: 4.21.2 node-mocks-http: specifier: ^1.17.2 - version: 1.17.2(@types/node@22.18.0) + version: 1.17.2(@types/node@22.18.1) packages/integrations/node/test/fixtures/api-route: dependencies: @@ -5720,7 +5747,7 @@ importers: dependencies: '@preact/preset-vite': specifier: ^2.10.2 - version: 2.10.2(@babel/core@7.28.3)(preact@10.27.1)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.4)(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@preact/signals': specifier: ^2.3.1 version: 2.3.1(preact@10.27.1) @@ -5729,7 +5756,7 @@ importers: version: 6.6.1(preact@10.27.1) vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) devDependencies: astro: specifier: workspace:* @@ -5745,13 +5772,13 @@ importers: dependencies: '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 4.7.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) ultrahtml: specifier: ^1.6.0 version: 1.6.0 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) devDependencies: '@types/react': specifier: ^18.3.24 @@ -5861,10 +5888,10 @@ importers: dependencies: vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) devDependencies: astro: specifier: workspace:* @@ -5880,13 +5907,13 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 - version: 5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + version: 5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) svelte2tsx: specifier: ^0.7.42 version: 0.7.42(svelte@5.38.7)(typescript@5.9.2) vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) devDependencies: astro: specifier: workspace:* @@ -5911,7 +5938,7 @@ importers: version: 2.2.13 '@vercel/nft': specifier: ^0.30.1 - version: 0.30.1(rollup@4.50.0) + version: 0.30.1(rollup@4.50.1) '@vercel/routing-utils': specifier: ^5.1.1 version: 5.1.1 @@ -5920,7 +5947,7 @@ importers: version: 0.25.5 tinyglobby: specifier: ^0.2.14 - version: 0.2.14 + version: 0.2.15 devDependencies: astro: specifier: workspace:* @@ -6119,19 +6146,19 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: 5.2.1 - version: 5.2.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + version: 5.2.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) '@vitejs/plugin-vue-jsx': specifier: ^4.2.0 - version: 4.2.0(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + version: 4.2.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) '@vue/compiler-sfc': specifier: ^3.5.21 version: 3.5.21 vite: specifier: ^6.3.6 - version: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vite-plugin-vue-devtools: specifier: ^7.7.7 - version: 7.7.7(rollup@4.50.0)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + version: 7.7.7(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) devDependencies: astro: specifier: workspace:* @@ -6359,7 +6386,7 @@ importers: version: 1.1.5 '@types/node': specifier: ^18.17.8 - version: 18.19.123 + version: 18.19.124 '@types/which-pm-runs': specifier: ^1.0.2 version: 1.0.2 @@ -6393,7 +6420,7 @@ importers: devDependencies: '@types/semver': specifier: ^7.7.0 - version: 7.7.0 + version: 7.7.1 arg: specifier: ^5.0.2 version: 5.0.2 @@ -6414,17 +6441,13 @@ importers: version: 6.2.0 tinyglobby: specifier: ^0.2.14 - version: 0.2.14 + version: 0.2.15 tsconfck: specifier: ^3.1.6 version: 3.1.6(typescript@5.9.2) packages: - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} @@ -6457,8 +6480,8 @@ packages: peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta - '@astro-community/astro-embed-youtube@0.5.6': - resolution: {integrity: sha512-/mRfCl/eTBUz0kmjD1psOy0qoDDBorVp0QumUacjFcIkBullYtbeFQ2ZGZ+3N/tA6cR/OIyzr2QA4dQXlY6USg==} + '@astro-community/astro-embed-youtube@0.5.7': + resolution: {integrity: sha512-Yq1cw4JCnrjnf/278frWZ9VQyAjyAwUd1CH2XZHFt9pNb5PeFNoRUSPlBvUzN6F/XorkWEEyE2N98rcdyx9mHg==} peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta @@ -6475,6 +6498,9 @@ packages: '@astrojs/compiler@2.12.2': resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==} + '@astrojs/internal-helpers@0.7.1': + resolution: {integrity: sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ==} + '@astrojs/language-server@2.15.4': resolution: {integrity: sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==} hasBin: true @@ -6487,6 +6513,20 @@ packages: prettier-plugin-astro: optional: true + '@astrojs/node@9.4.0': + resolution: {integrity: sha512-Gxs0iVUvOmQmK+H1DBoabcgvdSDg277SwbujRv2cUBlnpcOTJQDFRhRvyJ7G+Zkd06/jhRphsTTmmrBY0PqI4g==} + peerDependencies: + astro: ^5.3.0 + + '@astrojs/react@4.3.0': + resolution: {integrity: sha512-N02aj52Iezn69qHyx5+XvPqgsPMEnel9mI5JMbGiRMTzzLMuNaxRVoQTaq2024Dpr7BLsxCjqMkNvelqMDhaHA==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + peerDependencies: + '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 + '@types/react-dom': ^17.0.17 || ^18.0.6 || ^19.0.0 + react: ^17.0.2 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 + '@astrojs/yaml2ts@0.2.2': resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} @@ -6494,12 +6534,12 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.3': - resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} '@babel/generator@7.28.3': @@ -6572,12 +6612,12 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.3': - resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true @@ -6646,24 +6686,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.3': - resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.3': - resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} '@babel/types@7.28.1': resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@biomejs/biome@2.2.4': @@ -6726,8 +6766,8 @@ packages: '@capsizecss/unpack@2.4.0': resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@changesets/apply-release-plan@7.0.13': + resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} '@changesets/assemble-release-plan@6.0.9': resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} @@ -6738,8 +6778,8 @@ packages: '@changesets/changelog-github@0.5.1': resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} - '@changesets/cli@2.29.6': - resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==} + '@changesets/cli@2.29.7': + resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} hasBin: true '@changesets/config@3.1.1': @@ -6838,8 +6878,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20250903.0': - resolution: {integrity: sha512-F6G3MG7EZxsJ2Fgsy3eed+U2fU/XGfKqDlyY/vCL/zUqI8KuaNx8GVnxttqzktBY55HK3xe82Zpj8xujW6PfXw==} + '@cloudflare/workers-types@4.20250909.0': + resolution: {integrity: sha512-3WvDDOvFGOAlBUZpWe2N+9BxB1kRt9eHo3AhIKg1fihNdqrGxyh9cJe1MpYs5BI8gXSRxjkDvzPVebRED8iwOQ==} '@codspeed/core@4.0.1': resolution: {integrity: sha512-fJ53arfgtzCDZa8DuGJhpTZ3Ll9A1uW5nQ2jSJnfO4Hl5MRD2cP8P4vPvIUAGbdbjwCxR1jat6cW8OloMJkJXw==} @@ -7160,14 +7200,14 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@envelop/instrumentation@1.0.0': resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} @@ -7191,8 +7231,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.6': - resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -7215,8 +7255,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.6': - resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -7239,8 +7279,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.6': - resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -7263,8 +7303,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.6': - resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -7287,8 +7327,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.6': - resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -7311,8 +7351,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.6': - resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -7335,8 +7375,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.6': - resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -7359,8 +7399,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.6': - resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -7383,8 +7423,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.6': - resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -7407,8 +7447,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.6': - resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -7431,8 +7471,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.6': - resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -7455,8 +7495,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.6': - resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -7479,8 +7519,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.6': - resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -7503,8 +7543,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.6': - resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -7527,8 +7567,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.6': - resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -7551,8 +7591,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.6': - resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -7575,8 +7615,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.6': - resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -7599,8 +7639,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.6': - resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -7623,8 +7663,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.6': - resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -7647,8 +7687,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.6': - resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -7671,14 +7711,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.6': - resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.6': - resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -7701,8 +7741,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.6': - resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -7725,8 +7765,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.6': - resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -7749,8 +7789,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.6': - resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -7773,14 +7813,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.6': - resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -7805,8 +7845,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.34.0': - resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} + '@eslint/js@9.35.0': + resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -7833,8 +7873,8 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': @@ -7845,10 +7885,6 @@ packages: resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} engines: {node: '>=10.10.0'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -8126,11 +8162,11 @@ packages: resolution: {integrity: sha512-n5JEf16Wr4mdkRMZ8wMP/wN9/sHmTjRPbouXjJH371mZ2LEGDl72t8tEsMRNFerQN/QJtivOxqK1frdGa4QK5Q==} engines: {node: '>=10'} - '@libsql/client@0.15.14': - resolution: {integrity: sha512-oXeFYcSyAsYWvpWVmynrwNwb+NHNHtMfSIVdfQTF1B9RsgDXQE5YCDP3SS0i1FA8nuLWy2trFDVwP1b2LNdNPQ==} + '@libsql/client@0.15.15': + resolution: {integrity: sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==} - '@libsql/core@0.15.14': - resolution: {integrity: sha512-b2eVQma78Ss+edIIFi7LnhhyUy5hAJjYvrSAD5RFdO/YKP2rEvNAT1pIn2Li7NrqcsMmoEQWlpUWH4fWMdXtpQ==} + '@libsql/core@0.15.15': + resolution: {integrity: sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA==} '@libsql/darwin-arm64@0.5.22': resolution: {integrity: sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==} @@ -8243,8 +8279,8 @@ packages: resolution: {integrity: sha512-900jiduBT3b7GagpOGJKD3FQypkNbskGyx+Mvd9Ajy7pU3K0CNj4JBaji4aJZz7krrMxZZJacr0wCEsqWLQQmA==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/cache@3.0.11': - resolution: {integrity: sha512-Dtm/UWv1X70gaj5dcJBV6zzVU89brcX/zpuVpuNUi7t7przGP1emuE+59A3razcamFP8hs98gbrfUpniLQMa0Q==} + '@netlify/cache@3.1.0': + resolution: {integrity: sha512-wOScL/qVfwJMyJZigydBM8nCM3K0XW/HGcjzmksLPD/pB3d1smczHFIvB2xMETkZWJ8SMUWVSQG05vvYDPOzDw==} engines: {node: '>=20.6.1'} '@netlify/config@23.2.0': @@ -8256,16 +8292,16 @@ packages: resolution: {integrity: sha512-Cc8XNyKNVPWmRJAMVD8VICdYvVxZ66uoVdDzSyhrctw0cT7hW3NAlXF/xoLFK7uOV1xejah/Qt+2MPCJn32mqg==} engines: {node: ^18.14.0 || >=20} - '@netlify/dev@4.5.8': - resolution: {integrity: sha512-TKfJ01m03Pv1w5yrcd7Z/V07ZotOXrixzJ3Bvo+gnOICiazrxuLA8m4GUMIK/ts6nxUoGwlX8dNgQxxbXkUAZA==} + '@netlify/dev@4.5.9': + resolution: {integrity: sha512-tWV2jfpXjAHOCLGy6kwGhOSql1VU3bRmHbHxpSdCp4sV2AsPXPSx5dIECLkQE+nC/7hyjbC2V+XU5USv6mVvLQ==} engines: {node: '>=20.6.1'} - '@netlify/edge-bundler@14.5.2': - resolution: {integrity: sha512-Op5OFeraZbNvZxjjo7LqUtA57O/JHrZJJ42Mcjk6eLmzgc2vLAItylBhV300X9FUFzTF/xbZo6NuiDkXSVBDVQ==} + '@netlify/edge-bundler@14.5.4': + resolution: {integrity: sha512-mGEQTOsC3VoUcio6y5zXj5s5Rs4ygFGWdHmweU2K7QH+Zy5co7GuzbpivoP0VCBws3VSBCdx1rvGPY9ylZaOHQ==} engines: {node: '>=18.14.0'} - '@netlify/edge-functions-bootstrap@2.16.2': - resolution: {integrity: sha512-C0oObD0QnCj9f2FqUNb/6NI+Y/TNNVThlA5qc0iFDN6F+NG6wtcfCuD4U6fOZylETxu6sXpNYiE+X6nb7mT2Sg==} + '@netlify/edge-functions-bootstrap@2.16.3': + resolution: {integrity: sha512-ae/bJpeAnHZK8ailEKfcV4smmkbCAORpVyU3WgYJwvKp94NOXzo+OWQZbCNIbcEMq2q7luRdmu1KeREh4D5Qgg==} '@netlify/edge-functions@2.17.4': resolution: {integrity: sha512-r8cmsTxlF7TUAmVCplS14H+HQewhfqKaCiVshAr4rlSdCfH1QqygMPWFAxgWNhLcgFQOVYH1+uT0fUZOTlVoiA==} @@ -8303,12 +8339,12 @@ packages: resolution: {integrity: sha512-z1h+wjB7IVYUsFZsuIYyNxiw5WWuylseY+eXaUDHBxNeLTlqziy+lz03QkR67CUR4Y790xGIhaHV00aOR2KAtw==} engines: {node: ^18.14.0 || >=20} - '@netlify/runtime@4.0.14': - resolution: {integrity: sha512-Wgao7AwtieF1K9O34nKuoxDMoXiKKRG5eK95dbd/rXnXvdv4viaCspykuFUanPnXw5Ry478R9UsSCIOrIe77Rw==} + '@netlify/runtime@4.0.15': + resolution: {integrity: sha512-NP8HsF/Aq+pmjrRpJyxaBwSl3vm43worqzJ7t7InE/eVS4w3koO/0pK0+lE6UXpai5CH/B9K4tif/k7PbA0pTA==} engines: {node: '>=20.6.1'} - '@netlify/serverless-functions-api@2.2.1': - resolution: {integrity: sha512-PAEyziX2pkENwQLCqWfS2Jw5CKATwAty/4mcnBcAEVWrfWE5vqKx82qta1nDrbeFOcBw6QD5ShYCfbXUnQ4MNA==} + '@netlify/serverless-functions-api@2.5.0': + resolution: {integrity: sha512-0Hl6POpkEs3aan8T+EQvPIj5/gNc+64nwNv93VY4JoxFSrLPKYWmUyXJhT9lG93VxwGfmbxrCOV8U4sq2eWgTw==} engines: {node: '>=18.0.0'} '@netlify/static@3.0.10': @@ -8319,14 +8355,14 @@ packages: resolution: {integrity: sha512-OcV8ivKTdsyANqVSQzbusOA7FVtE9s6zwxNCGR/aNnQaVxMUgm93UzKgfR7cZ1nnQNZHAbjd0dKJKaAUqrzbMw==} engines: {node: ^18.14.0 || >=20} - '@netlify/vite-plugin@2.5.8': - resolution: {integrity: sha512-Ka46zlTjILGwdOywxn98X5kRdrayMcAzgQBZvgLjGj5G8PXhqzIXJiKEeEGa3pHOrpM/a9kQ4UxYdISAHRQ0jQ==} + '@netlify/vite-plugin@2.5.9': + resolution: {integrity: sha512-bol5XjvCSNgVUxOSTPkjDIjJ75Ee8CDDgGhnOvtoS0V++Vq/YHM3VSUlrUo5UVRNgTRva4QkQEgR/T/9TdtGhw==} engines: {node: ^20.6.1 || >=22} peerDependencies: vite: ^5 || ^6 || ^7 - '@netlify/zip-it-and-ship-it@14.1.4': - resolution: {integrity: sha512-SLMDv+Wqw496YCar7GI8mhCXjZE5P3L5+W2y7+b8Fu529ocTLpCnSeDjJPgGZBZNM/NC9dOl9r8+hUx1a5CV1w==} + '@netlify/zip-it-and-ship-it@14.1.7': + resolution: {integrity: sha512-GuPYN/+oAmT5boiKVPsIk5sE25qmln8+bHaakMAr2S6vwy/yArEYcM/Oa7kLMIyN3aryYrdpqOSwU1ly20tkyw==} engines: {node: '>=18.14.0'} hasBin: true @@ -8345,98 +8381,98 @@ packages: '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxc-resolver/binding-android-arm-eabi@11.6.2': - resolution: {integrity: sha512-b1h87/Nv5QPiT2xXg7RiSzJ0HsKSMf1U8vj6cUKdEDD1+KhDaXEH9xffB5QE54Df3SM4+wrYVy9NREil7/0C/Q==} + '@oxc-resolver/binding-android-arm-eabi@11.7.1': + resolution: {integrity: sha512-K0gF1mD6CYMAuX0dMWe6XW1Js00xCOBh/+ZAAJReQMa4+jmAk3bIeitsc8VnDthDbzOOKp3riizP3o/tBvNpgw==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.6.2': - resolution: {integrity: sha512-iIFsbWOQ42VJqOH0PkNs2+IcIjkmO7T+Gr27XDVXmaIWz3dkVYzYRlCtqGJOMIrjyUD52BtVXjej5s51i9Lgmg==} + '@oxc-resolver/binding-android-arm64@11.7.1': + resolution: {integrity: sha512-O1XEX/KxKX7baPgYHahP+3vT+9f4gasPA0px4DYrjy1mN9wWQqJPLLo/PO3cBw3qI3qRaaiAGT3eJSs8rKu8mA==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.6.2': - resolution: {integrity: sha512-Lt/6pfDy2rtoxGmwFQOp4a9GxIW0CEUSQYofW1eQBpy/JpGM/AJgLTsg2nmgszODJpBOPO19GCIlzSZ7Et5cGg==} + '@oxc-resolver/binding-darwin-arm64@11.7.1': + resolution: {integrity: sha512-OSCJlXUTvGoal5dTMkdacmXL2R3YQ+97R7NMSdjkUVnh3TxvGBhoF9OebqY3PR7w2gQaY5LX+Ju+dYeHGBCGgw==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.6.2': - resolution: {integrity: sha512-UmGEeXk4/E3ubBWgoehVEQSBTEpl+UjZqY55sB+/5NHYFPMxY6PgG8y7dGZhyWPvwVW/pS/drnG3gptAjwF8cg==} + '@oxc-resolver/binding-darwin-x64@11.7.1': + resolution: {integrity: sha512-d0jKwK4r4Yw19xSijyt7wHZT77xh3v4GnJSbvEiPavLms27zqc//BqYJUSp9XgOTOkyFQ+oHno47JNiLTnsSnQ==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.6.2': - resolution: {integrity: sha512-p0Aj5aQKmyVamAtRio7Ct0Woh/iElvMxhAlbSWqJ9J/GH7lPG8H4R/iHWjURz+2iYPywqJICR8Eu1GDSApnzfA==} + '@oxc-resolver/binding-freebsd-x64@11.7.1': + resolution: {integrity: sha512-oNch5OpAnxFjukDZ5GJkuEDEPPYDirm10q2cJcbK0SETVM0rY+ou1cLqJAJC9R/dULbqGKC9fv2kuyuw9M6Fig==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.6.2': - resolution: {integrity: sha512-hDAF4FAkGxZsJCvutoBQ21LKcpUrvq5qAj3FpBTIzBaeIpupe6z0kHF9oIeTF8DJiLj4uEejaZXXtOSfJY50+A==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.1': + resolution: {integrity: sha512-ldUPUfV/0L56fTSfzUo86Bmgov8SAfau8Q4Y3WiAiQi6WHLA239abTZZViLZuXvrC+4RQF/kD0ySqKfBjW/X9g==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.6.2': - resolution: {integrity: sha512-LTUs3PG9O3YjGPbguiM/fhaoWr19Yu/vqkBKXgvUo2Zpa7InHzZzurMQU9BAPr6A7gnIrKQ3W61h+RhQfSuUGQ==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.7.1': + resolution: {integrity: sha512-M+ORXlPV0dXCHleqOYLjKHwxn9kDmcJqnJ7zGZ07vggaxOCnpM6zqyGS92YTTyeYre2AqO3Xrx1D4rnUeozI8g==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.6.2': - resolution: {integrity: sha512-VBZZ/5uYiFs+09h1royv78GAEPPy5Bsro53hPWMlJL/E9pPibaj3fCzZEAnrKSzVpvwf7+QSc5w7ZUrX3xAKpg==} + '@oxc-resolver/binding-linux-arm64-gnu@11.7.1': + resolution: {integrity: sha512-ukHZp9Vm07AlxqdOLFf8Bj4inzpt+ISbbODvwwHxX32GfcMLWYYJGAYWc13IGhWoElvWnI7D1M9ifDGyTNRGzg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@11.6.2': - resolution: {integrity: sha512-x+LooeNXy3hhvDT7q29jLjh914OYX9YnrQbGT3ogep5EY/LLbUiG3LV8XSrWRqXD5132gea9SOYxmcpF9i6xTQ==} + '@oxc-resolver/binding-linux-arm64-musl@11.7.1': + resolution: {integrity: sha512-atkZ1OIt6t90kjQz1iqq6cN3OpfPG5zUJlO64Vd1ieYeqHRkOFeRgnWEobTePUHi34NlYr7mNZqIaAg7gjPUFg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-ppc64-gnu@11.6.2': - resolution: {integrity: sha512-+CluEbUpAaKvcNREZtUUiunqzo5o0/qp+6xoFkbDAwNhWIw1mtWCg1Di++Fa053Cah/Rx+dRMQteANoMBGCxxg==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': + resolution: {integrity: sha512-HGgV4z3JwVF4Qvg2a1GhDnqn8mKLihy5Gp4rMfqNIAlERPSyIxo8oPQIL1XQKLYyyrkEEO99uwM+4cQGwhtbpQ==} cpu: [ppc64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-gnu@11.6.2': - resolution: {integrity: sha512-OKWK/QvC6gECaeCNjfhuj0yiqMIisS0ewCRAmgT2pyxDwkNWgSm2wli+Tj/gpLjua2HjFDnDEcg0/dOoO6+xQg==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': + resolution: {integrity: sha512-+vCO7iOR1s6VGefV02R2a702IASNWhSNm/MrR8RcWjKChmU0G+d1iC0oToUrGC4ovAEfstx2/O8EkROnfcLgrA==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-musl@11.6.2': - resolution: {integrity: sha512-YtQ3hLvhVzan3boR44C0qu/jiTanaBAL9uTqs/S2tzOLfpO2PoTDbQDgADvOqYJDTJkOGiofJC2E1lJcRmpbXQ==} + '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': + resolution: {integrity: sha512-3folNmS5gYNFy/9HYzLcdeThqAGvDJU0gQKrhHn7RPWQa58yZ0ZPpBMk6KRSSO61+wkchkL+0sdcLsoe5wZW8g==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-s390x-gnu@11.6.2': - resolution: {integrity: sha512-pcX/ih9QHrEWliiXJdZoX/bnfOlr5E0eOWSG2ew5U1HntGket/1AcdcA4UH3MQU/TrOLxxiKhGzeZv+fwewmmA==} + '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': + resolution: {integrity: sha512-Ceo4z6g8vqPUKADROFL0b7MoyXlUdOBYCxTDu/fhd/5I3Ydk2S6bxkjJdzpBdlu+h2Z+eS9lTHFvkwkaORMPzw==} cpu: [s390x] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@11.6.2': - resolution: {integrity: sha512-LFYSgeYW11u4cQXzgIGthqCRAoLvl0IqbIMGeJLVt1tD7yrpTukfQynMzwP3vuTK5hmWgYc7NfK6G5+Zv/75hw==} + '@oxc-resolver/binding-linux-x64-gnu@11.7.1': + resolution: {integrity: sha512-QyFW5e43imQLxiBpCImhOiP4hY9coWGjroEm8elDqGNNaA7vXooaMQS2N3avMQawSaKhsb/3RemxaZ852XG38Q==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@11.6.2': - resolution: {integrity: sha512-IE13zwhg+XX9FVQHADbIe6RB2MgQeqyKdGyH67meGPgqCbLqT41K9qAm0k2uDlSswjLK8nhNe5Z+hhopBKzRRg==} + '@oxc-resolver/binding-linux-x64-musl@11.7.1': + resolution: {integrity: sha512-JhuCqCqktqQyQVc37V+eDiP3buCIuyCLpb92tUEyAP8nY3dy2b/ojMrH1ZNnJUlfY/67AqoZPL6nQGAB2WA3Sg==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-wasm32-wasi@11.6.2': - resolution: {integrity: sha512-6nNW/wOKrptS9Rebf83aHvIsIiNcXOEWwUmhMR/4MHrH07zbcptBoZQcWO6362B9Y2lMN7dIF9v7brQcNDs63A==} + '@oxc-resolver/binding-wasm32-wasi@11.7.1': + resolution: {integrity: sha512-sMXm5Z2rfBwkCUespZBJCPhCVbgh/fpYQ23BQs0PmnvWoXrGQHWvnvg1p/GYmleN+nwe8strBjfutirZFiC5lA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.6.2': - resolution: {integrity: sha512-YDR9UBOlKfFvWhVlyvNSlZjJ+B5kDpDn5K5s69JKW+Ke5ZYupVPTJPZ3GIMjbgj54fJQNFW+BiT4dL/EUGOHVQ==} + '@oxc-resolver/binding-win32-arm64-msvc@11.7.1': + resolution: {integrity: sha512-C/Sam1RJi/h/F618IB/H3pCOhTf+2ArdTqrqQolN8ARV35iWTSezgy6qPjQGj7aWn/9M5vgtCInfS2SwnkBJ4w==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-ia32-msvc@11.6.2': - resolution: {integrity: sha512-8MqToY82sKT4po6bfb71LTiWW4PYXy/WNnzFIpkO88O1TtZV8ZsZ1kSeSwFazbqhV8H8nnxyJemqXNIqhtqNfw==} + '@oxc-resolver/binding-win32-ia32-msvc@11.7.1': + resolution: {integrity: sha512-iNRgJxOkfmxeq9DiF9S4jtw3vq5kkAm6dsP4RPxoAO/WsShPPHOSlTpOqyB8bSj5Bt9DBLRoI43XcNfDKgM+jA==} cpu: [ia32] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.6.2': - resolution: {integrity: sha512-y/xXcOwP9kp+3zRC8PiG5E4VMJeW59gwwRyxzh6DyMrKlcfikMFnuEbC2ZV0+mOffg7pkOOMKlNRK2aJC8gzkA==} + '@oxc-resolver/binding-win32-x64-msvc@11.7.1': + resolution: {integrity: sha512-MXS81efp8pu2MkjEPu+nDhgoyHwdWUygXYSzIh3gV2A8/qF0PVEzH+EpmKR7Pl8dEZIaG1YXA+CO6bmNZT8oSw==} cpu: [x64] os: [win32] @@ -8588,15 +8624,15 @@ packages: '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-beta.34': - resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} + '@rolldown/pluginutils@1.0.0-beta.36': + resolution: {integrity: sha512-qa+gfzhv0/Xv52zZInENLu6JbsnSjSExD7kTaNm7Qn5LUIH6IQb7l9pB+NrsU5/Bvt9aqcBTdRGc7x1DYMTiqQ==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -8604,108 +8640,108 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.50.0': - resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==} + '@rollup/rollup-android-arm-eabi@4.50.1': + resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.50.0': - resolution: {integrity: sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==} + '@rollup/rollup-android-arm64@4.50.1': + resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.50.0': - resolution: {integrity: sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==} + '@rollup/rollup-darwin-arm64@4.50.1': + resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.50.0': - resolution: {integrity: sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==} + '@rollup/rollup-darwin-x64@4.50.1': + resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.50.0': - resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==} + '@rollup/rollup-freebsd-arm64@4.50.1': + resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.50.0': - resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==} + '@rollup/rollup-freebsd-x64@4.50.1': + resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.50.0': - resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==} + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.50.0': - resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==} + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.50.0': - resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==} + '@rollup/rollup-linux-arm64-gnu@4.50.1': + resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.50.0': - resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==} + '@rollup/rollup-linux-arm64-musl@4.50.1': + resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.50.0': - resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.50.0': - resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==} + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.50.0': - resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==} + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.50.0': - resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==} + '@rollup/rollup-linux-riscv64-musl@4.50.1': + resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.50.0': - resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==} + '@rollup/rollup-linux-s390x-gnu@4.50.1': + resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.50.0': - resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==} + '@rollup/rollup-linux-x64-gnu@4.50.1': + resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.50.0': - resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==} + '@rollup/rollup-linux-x64-musl@4.50.1': + resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.50.0': - resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==} + '@rollup/rollup-openharmony-arm64@4.50.1': + resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.50.0': - resolution: {integrity: sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==} + '@rollup/rollup-win32-arm64-msvc@4.50.1': + resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.50.0': - resolution: {integrity: sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==} + '@rollup/rollup-win32-ia32-msvc@4.50.1': + resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.50.0': - resolution: {integrity: sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==} + '@rollup/rollup-win32-x64-msvc@4.50.1': + resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} cpu: [x64] os: [win32] @@ -8765,65 +8801,65 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@tailwindcss/node@4.1.12': - resolution: {integrity: sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==} + '@tailwindcss/node@4.1.13': + resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} - '@tailwindcss/oxide-android-arm64@4.1.12': - resolution: {integrity: sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==} + '@tailwindcss/oxide-android-arm64@4.1.13': + resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.12': - resolution: {integrity: sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==} + '@tailwindcss/oxide-darwin-arm64@4.1.13': + resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.12': - resolution: {integrity: sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==} + '@tailwindcss/oxide-darwin-x64@4.1.13': + resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.12': - resolution: {integrity: sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==} + '@tailwindcss/oxide-freebsd-x64@4.1.13': + resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.12': - resolution: {integrity: sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': + resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.12': - resolution: {integrity: sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': + resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.12': - resolution: {integrity: sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': + resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.12': - resolution: {integrity: sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': + resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.12': - resolution: {integrity: sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==} + '@tailwindcss/oxide-linux-x64-musl@4.1.13': + resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.12': - resolution: {integrity: sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==} + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -8834,24 +8870,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.12': - resolution: {integrity: sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.12': - resolution: {integrity: sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.12': - resolution: {integrity: sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==} + '@tailwindcss/oxide@4.1.13': + resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==} engines: {node: '>= 10'} - '@tailwindcss/vite@4.1.12': - resolution: {integrity: sha512-4pt0AMFDx7gzIrAOIYgYP0KCBuKWqyW8ayrdiLEjoJTT4pKTjrzG/e4uzWtTLDziC+66R9wbUqZBccJalSE5vQ==} + '@tailwindcss/vite@4.1.13': + resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 @@ -8973,11 +9009,11 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.123': - resolution: {integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==} + '@types/node@18.19.124': + resolution: {integrity: sha512-hY4YWZFLs3ku6D2Gqo3RchTd9VRCcrjqp/I0mmohYeUVA5Y8eCXKJEasHxLAJVZRJuQogfd1GiJ9lgogBgKeuQ==} - '@types/node@22.18.0': - resolution: {integrity: sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==} + '@types/node@22.18.1': + resolution: {integrity: sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -8999,17 +9035,25 @@ packages: peerDependencies: '@types/react': ^18.0.0 + '@types/react-dom@19.1.1': + resolution: {integrity: sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==} + peerDependencies: + '@types/react': ^19.0.0 + '@types/react@18.3.24': resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} + '@types/react@19.1.1': + resolution: {integrity: sha512-ePapxDL7qrgqSF67s0h9m412d9DbXyC1n59O2st+9rjuuamWsZuD2w55rqY12CbzsZ7uVXb5Nw0gEp9Z8MMutQ==} + '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -9047,63 +9091,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.42.0': - resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} + '@typescript-eslint/eslint-plugin@8.43.0': + resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.42.0 + '@typescript-eslint/parser': ^8.43.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.42.0': - resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} + '@typescript-eslint/parser@8.43.0': + resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.42.0': - resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} + '@typescript-eslint/project-service@8.43.0': + resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.42.0': - resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} + '@typescript-eslint/scope-manager@8.43.0': + resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.42.0': - resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} + '@typescript-eslint/tsconfig-utils@8.43.0': + resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.42.0': - resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} + '@typescript-eslint/type-utils@8.43.0': + resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.42.0': - resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.42.0': - resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} + '@typescript-eslint/typescript-estree@8.43.0': + resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.42.0': - resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} + '@typescript-eslint/utils@8.43.0': + resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.42.0': - resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} + '@typescript-eslint/visitor-keys@8.43.0': + resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': @@ -9385,8 +9429,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - alpinejs@3.14.9: - resolution: {integrity: sha512-gqSOhTEyryU9FhviNqiHBHzgjkvtukq9tevew29fTj+ofZtfsYriw4zPirHHOAy9bw8QoL3WGhyk7QqCh5AYlw==} + alpinejs@3.15.0: + resolution: {integrity: sha512-lpokA5okCF1BKh10LG8YjqhfpxyHBk4gE7boIgVHltJzYoM7O9nK3M7VlntLEJGsVmu7U/RzUWajmHREGT38Eg==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -9411,16 +9455,16 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.0: - resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansis@4.1.0: @@ -9605,8 +9649,8 @@ packages: brotli@1.3.3: resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - browserslist@4.25.3: - resolution: {integrity: sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==} + browserslist@4.25.4: + resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -9664,8 +9708,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001737: - resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} + caniuse-lite@1.0.30001741: + resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} canvas-confetti@1.9.3: resolution: {integrity: sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g==} @@ -9681,8 +9725,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.6.0: - resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-spinner@1.0.1: @@ -10300,14 +10344,14 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.209: - resolution: {integrity: sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==} + electron-to-chromium@1.5.215: + resolution: {integrity: sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==} emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -10406,8 +10450,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.6: - resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} engines: {node: '>=18'} hasBin: true @@ -10449,8 +10493,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.34.0: - resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} + eslint@9.35.0: + resolution: {integrity: sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -10767,8 +10811,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.3.1: + resolution: {integrity: sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -11485,16 +11529,16 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - luxon@3.7.1: - resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.18: - resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -11917,8 +11961,8 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-mock-http@1.0.2: - resolution: {integrity: sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==} + node-mock-http@1.0.3: + resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} node-mocks-http@1.17.2: resolution: {integrity: sha512-HVxSnjNzE9NzoWMx9T9z4MLqwMpLwVvA0oVZ+L+gXskYXEJ6tFn3Kx4LargoB6ie7ZlCLplv7QbWO6N+MysWGA==} @@ -11932,8 +11976,8 @@ packages: '@types/node': optional: true - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.20: + resolution: {integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==} node-source-walk@7.0.1: resolution: {integrity: sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==} @@ -12034,8 +12078,8 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - oxc-resolver@11.6.2: - resolution: {integrity: sha512-9lXwNQUzgPs5UgjKig5+EINESHYJCFsRQLzPyjWLc7sshl6ZXvXPiQfEGqUIs2fsd9SdV/jYmL7IuaK43cL0SA==} + oxc-resolver@11.7.1: + resolution: {integrity: sha512-PzbEnD6NKTCFVKkUZtmQcX69ajdfM33RqI5kyb8mH9EdIqEUS00cWSXN0lsgYrtdTMzwo0EKKoH7hnGg6EDraQ==} p-event@6.0.1: resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} @@ -12081,8 +12125,8 @@ packages: resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} - p-queue@8.1.0: - resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} + p-queue@8.1.1: + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} engines: {node: '>=18'} p-retry@6.2.1: @@ -12694,8 +12738,8 @@ packages: remark-math@6.0.0: resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -12786,13 +12830,13 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.50.0: - resolution: {integrity: sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==} + rollup@4.50.1: + resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} run-parallel@1.2.0: @@ -12821,8 +12865,8 @@ packages: sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - sass@1.92.0: - resolution: {integrity: sha512-KDNI0BxgIRDAfJgzNm5wuy+4yOCIZyrUbjSpiU/JItfih+KGXAVefKL53MTml054MmBA3DDKIBMSI/7XLxZJ3A==} + sass@1.92.1: + resolution: {integrity: sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -12856,8 +12900,8 @@ packages: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} - seroval-plugins@1.3.2: - resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==} + seroval-plugins@1.3.3: + resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 @@ -12945,8 +12989,8 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sirv@3.0.1: - resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} sisteransi@1.0.5: @@ -13095,8 +13139,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -13181,8 +13225,8 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - tailwindcss@4.1.12: - resolution: {integrity: sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==} + tailwindcss@4.1.13: + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} tapable@2.2.3: resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} @@ -13225,8 +13269,8 @@ packages: tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -13363,8 +13407,8 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript-eslint@8.42.0: - resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==} + typescript-eslint@8.43.0: + resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -13491,8 +13535,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unstorage@1.17.0: - resolution: {integrity: sha512-l9Z7lBiwtNp8ZmcoZ/dmPkFXFdtEdZtTZafCSnEIj3YvtkXeGAtL2rN8MQFy/0cs4eOLpuRJMp9ivdug7TCvww==} + unstorage@1.17.1: + resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -13506,7 +13550,7 @@ packages: '@planetscale/database': ^1.19.0 '@upstash/redis': ^1.34.3 '@vercel/blob': '>=0.27.1' - '@vercel/functions': ^2.2.12 + '@vercel/functions': ^2.2.12 || ^3.0.0 '@vercel/kv': ^1.0.1 aws4fetch: ^1.0.20 db0: '>=0.2.1' @@ -13657,8 +13701,8 @@ packages: peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - vite-prerender-plugin@0.5.11: - resolution: {integrity: sha512-xWOhb8Ef2zoJIiinYVunIf3omRfUbEXcPEvrkQcrDpJ2yjDokxhvQ26eSJbkthRhymntWx6816jpATrJphh+ug==} + vite-prerender-plugin@0.5.12: + resolution: {integrity: sha512-EiwhbMn+flg14EysbLTmZSzq8NGTxhytgK3bf4aGRF1evWLGwZiHiUJ1KZDvbxgKbMf2pG6fJWGEa3UZXOnR1g==} peerDependencies: vite: 5.x || 6.x || 7.x @@ -13951,8 +13995,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: @@ -14106,11 +14150,6 @@ packages: snapshots: - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 - '@antfu/utils@0.7.10': {} '@assemblyscript/loader@0.19.23': {} @@ -14125,7 +14164,7 @@ snapshots: '@astro-community/astro-embed-link-preview': 0.2.2 '@astro-community/astro-embed-twitter': 0.5.8(astro@packages+astro) '@astro-community/astro-embed-vimeo': 0.3.10(astro@packages+astro) - '@astro-community/astro-embed-youtube': 0.5.6(astro@packages+astro) + '@astro-community/astro-embed-youtube': 0.5.7(astro@packages+astro) '@types/unist': 2.0.11 astro: link:packages/astro astro-auto-import: 0.4.4(astro@packages+astro) @@ -14149,7 +14188,7 @@ snapshots: '@astro-community/astro-embed-utils': 0.1.3 astro: link:packages/astro - '@astro-community/astro-embed-youtube@0.5.6(astro@packages+astro)': + '@astro-community/astro-embed-youtube@0.5.7(astro@packages+astro)': dependencies: astro: link:packages/astro lite-youtube-embed: 0.3.3 @@ -14167,12 +14206,14 @@ snapshots: '@astrojs/cli-kit@0.4.1': dependencies: - chalk: 5.6.0 + chalk: 5.6.2 log-update: 5.0.1 sisteransi: 1.0.5 '@astrojs/compiler@2.12.2': {} + '@astrojs/internal-helpers@0.7.1': {} + '@astrojs/language-server@2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.2)': dependencies: '@astrojs/compiler': 2.12.2 @@ -14199,6 +14240,38 @@ snapshots: transitivePeerDependencies: - typescript + '@astrojs/node@9.4.0(astro@packages+astro)': + dependencies: + '@astrojs/internal-helpers': 0.7.1 + astro: link:packages/astro + send: 1.2.0 + server-destroy: 1.0.1 + transitivePeerDependencies: + - supports-color + + '@astrojs/react@4.3.0(@types/node@22.18.1)(@types/react-dom@19.1.1(@types/react@19.1.1))(@types/react@19.1.1)(jiti@2.5.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1)(yaml@2.8.1)': + dependencies: + '@types/react': 19.1.1 + '@types/react-dom': 19.1.1(@types/react@19.1.1) + '@vitejs/plugin-react': 4.7.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + ultrahtml: 1.6.0 + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + '@astrojs/yaml2ts@0.2.2': dependencies: yaml: 2.8.1 @@ -14209,20 +14282,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.28.4': {} - '@babel/core@7.28.3': + '@babel/core@7.28.4': dependencies: - '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) - '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -14233,33 +14306,33 @@ snapshots: '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.3 + browserslist: 4.25.4 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)': + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -14268,50 +14341,50 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -14321,104 +14394,104 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.3': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/parser@7.28.3': + '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/types': 7.28.2 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/runtime@7.28.3': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - '@babel/traverse@7.28.3': + '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -14428,7 +14501,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.2': + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -14480,7 +14553,7 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 '@changesets/get-version-range-type': 0.4.0 @@ -14517,9 +14590,9 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.29.6(@types/node@18.19.123)': + '@changesets/cli@2.29.7(@types/node@18.19.124)': dependencies: - '@changesets/apply-release-plan': 7.0.12 + '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 '@changesets/config': 3.1.1 @@ -14533,7 +14606,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.1(@types/node@18.19.123) + '@inquirer/external-editor': 1.0.1(@types/node@18.19.124) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -14675,7 +14748,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250428.0': optional: true - '@cloudflare/workers-types@4.20250903.0': {} + '@cloudflare/workers-types@4.20250909.0': {} '@codspeed/core@4.0.1': dependencies: @@ -14686,11 +14759,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@4.0.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@codspeed/vitest-plugin@4.0.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: '@codspeed/core': 4.0.1 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - debug @@ -15016,18 +15089,18 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} - '@emnapi/core@1.4.5': + '@emnapi/core@1.5.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true @@ -15046,7 +15119,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.5': optional: true - '@esbuild/aix-ppc64@0.25.6': + '@esbuild/aix-ppc64@0.25.9': optional: true '@esbuild/android-arm64@0.24.2': @@ -15058,7 +15131,7 @@ snapshots: '@esbuild/android-arm64@0.25.5': optional: true - '@esbuild/android-arm64@0.25.6': + '@esbuild/android-arm64@0.25.9': optional: true '@esbuild/android-arm@0.24.2': @@ -15070,7 +15143,7 @@ snapshots: '@esbuild/android-arm@0.25.5': optional: true - '@esbuild/android-arm@0.25.6': + '@esbuild/android-arm@0.25.9': optional: true '@esbuild/android-x64@0.24.2': @@ -15082,7 +15155,7 @@ snapshots: '@esbuild/android-x64@0.25.5': optional: true - '@esbuild/android-x64@0.25.6': + '@esbuild/android-x64@0.25.9': optional: true '@esbuild/darwin-arm64@0.24.2': @@ -15094,7 +15167,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.5': optional: true - '@esbuild/darwin-arm64@0.25.6': + '@esbuild/darwin-arm64@0.25.9': optional: true '@esbuild/darwin-x64@0.24.2': @@ -15106,7 +15179,7 @@ snapshots: '@esbuild/darwin-x64@0.25.5': optional: true - '@esbuild/darwin-x64@0.25.6': + '@esbuild/darwin-x64@0.25.9': optional: true '@esbuild/freebsd-arm64@0.24.2': @@ -15118,7 +15191,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.5': optional: true - '@esbuild/freebsd-arm64@0.25.6': + '@esbuild/freebsd-arm64@0.25.9': optional: true '@esbuild/freebsd-x64@0.24.2': @@ -15130,7 +15203,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.5': optional: true - '@esbuild/freebsd-x64@0.25.6': + '@esbuild/freebsd-x64@0.25.9': optional: true '@esbuild/linux-arm64@0.24.2': @@ -15142,7 +15215,7 @@ snapshots: '@esbuild/linux-arm64@0.25.5': optional: true - '@esbuild/linux-arm64@0.25.6': + '@esbuild/linux-arm64@0.25.9': optional: true '@esbuild/linux-arm@0.24.2': @@ -15154,7 +15227,7 @@ snapshots: '@esbuild/linux-arm@0.25.5': optional: true - '@esbuild/linux-arm@0.25.6': + '@esbuild/linux-arm@0.25.9': optional: true '@esbuild/linux-ia32@0.24.2': @@ -15166,7 +15239,7 @@ snapshots: '@esbuild/linux-ia32@0.25.5': optional: true - '@esbuild/linux-ia32@0.25.6': + '@esbuild/linux-ia32@0.25.9': optional: true '@esbuild/linux-loong64@0.24.2': @@ -15178,7 +15251,7 @@ snapshots: '@esbuild/linux-loong64@0.25.5': optional: true - '@esbuild/linux-loong64@0.25.6': + '@esbuild/linux-loong64@0.25.9': optional: true '@esbuild/linux-mips64el@0.24.2': @@ -15190,7 +15263,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.5': optional: true - '@esbuild/linux-mips64el@0.25.6': + '@esbuild/linux-mips64el@0.25.9': optional: true '@esbuild/linux-ppc64@0.24.2': @@ -15202,7 +15275,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.5': optional: true - '@esbuild/linux-ppc64@0.25.6': + '@esbuild/linux-ppc64@0.25.9': optional: true '@esbuild/linux-riscv64@0.24.2': @@ -15214,7 +15287,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.5': optional: true - '@esbuild/linux-riscv64@0.25.6': + '@esbuild/linux-riscv64@0.25.9': optional: true '@esbuild/linux-s390x@0.24.2': @@ -15226,7 +15299,7 @@ snapshots: '@esbuild/linux-s390x@0.25.5': optional: true - '@esbuild/linux-s390x@0.25.6': + '@esbuild/linux-s390x@0.25.9': optional: true '@esbuild/linux-x64@0.24.2': @@ -15238,7 +15311,7 @@ snapshots: '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/linux-x64@0.25.6': + '@esbuild/linux-x64@0.25.9': optional: true '@esbuild/netbsd-arm64@0.24.2': @@ -15250,7 +15323,7 @@ snapshots: '@esbuild/netbsd-arm64@0.25.5': optional: true - '@esbuild/netbsd-arm64@0.25.6': + '@esbuild/netbsd-arm64@0.25.9': optional: true '@esbuild/netbsd-x64@0.24.2': @@ -15262,7 +15335,7 @@ snapshots: '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/netbsd-x64@0.25.6': + '@esbuild/netbsd-x64@0.25.9': optional: true '@esbuild/openbsd-arm64@0.24.2': @@ -15274,7 +15347,7 @@ snapshots: '@esbuild/openbsd-arm64@0.25.5': optional: true - '@esbuild/openbsd-arm64@0.25.6': + '@esbuild/openbsd-arm64@0.25.9': optional: true '@esbuild/openbsd-x64@0.24.2': @@ -15286,10 +15359,10 @@ snapshots: '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/openbsd-x64@0.25.6': + '@esbuild/openbsd-x64@0.25.9': optional: true - '@esbuild/openharmony-arm64@0.25.6': + '@esbuild/openharmony-arm64@0.25.9': optional: true '@esbuild/sunos-x64@0.24.2': @@ -15301,7 +15374,7 @@ snapshots: '@esbuild/sunos-x64@0.25.5': optional: true - '@esbuild/sunos-x64@0.25.6': + '@esbuild/sunos-x64@0.25.9': optional: true '@esbuild/win32-arm64@0.24.2': @@ -15313,7 +15386,7 @@ snapshots: '@esbuild/win32-arm64@0.25.5': optional: true - '@esbuild/win32-arm64@0.25.6': + '@esbuild/win32-arm64@0.25.9': optional: true '@esbuild/win32-ia32@0.24.2': @@ -15325,7 +15398,7 @@ snapshots: '@esbuild/win32-ia32@0.25.5': optional: true - '@esbuild/win32-ia32@0.25.6': + '@esbuild/win32-ia32@0.25.9': optional: true '@esbuild/win32-x64@0.24.2': @@ -15337,12 +15410,12 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@esbuild/win32-x64@0.25.6': + '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.5.1))': dependencies: - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -15375,7 +15448,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.34.0': {} + '@eslint/js@9.35.0': {} '@eslint/object-schema@2.1.6': {} @@ -15394,17 +15467,15 @@ snapshots: '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/momoa@2.0.4': {} - '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.3': {} '@iarna/toml@2.2.5': {} @@ -15547,12 +15618,12 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 optional: true '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 optional: true '@img/sharp-win32-arm64@0.34.3': @@ -15572,18 +15643,18 @@ snapshots: '@import-maps/resolve@2.0.0': {} - '@inquirer/external-editor@1.0.1(@types/node@18.19.123)': + '@inquirer/external-editor@1.0.1(@types/node@18.19.124)': dependencies: chardet: 2.1.0 iconv-lite: 0.6.3 optionalDependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -15618,9 +15689,9 @@ snapshots: '@jsdevtools/rehype-toc@3.0.2': {} - '@libsql/client@0.15.14': + '@libsql/client@0.15.15': dependencies: - '@libsql/core': 0.15.14 + '@libsql/core': 0.15.15 '@libsql/hrana-client': 0.7.0 js-base64: 3.7.8 libsql: 0.5.22 @@ -15629,7 +15700,7 @@ snapshots: - bufferutil - utf-8-validate - '@libsql/core@0.15.14': + '@libsql/core@0.15.15': dependencies: js-base64: 3.7.8 @@ -15688,14 +15759,14 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -15715,11 +15786,11 @@ snapshots: - encoding - supports-color - '@markdoc/markdoc@0.5.4(@types/react@18.3.24)(react@19.1.1)': + '@markdoc/markdoc@0.5.4(@types/react@19.1.1)(react@19.1.1)': optionalDependencies: '@types/linkify-it': 3.0.5 '@types/markdown-it': 12.2.3 - '@types/react': 18.3.24 + '@types/react': 19.1.1 react: 19.1.1 '@mdx-js/mdx@3.1.1': @@ -15740,7 +15811,7 @@ snapshots: recma-jsx: 1.0.1(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 source-map: 0.7.6 @@ -15759,8 +15830,8 @@ snapshots: '@napi-rs/wasm-runtime@1.0.3': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.10.0 optional: true @@ -15780,7 +15851,7 @@ snapshots: '@netlify/dev-utils': 4.1.3 '@netlify/runtime-utils': 2.1.0 - '@netlify/cache@3.0.11': + '@netlify/cache@3.1.0': dependencies: '@netlify/runtime-utils': 2.1.0 @@ -15790,7 +15861,7 @@ snapshots: '@netlify/api': 14.0.4 '@netlify/headers-parser': 9.0.2 '@netlify/redirect-parser': 15.0.3 - chalk: 5.6.0 + chalk: 5.6.2 cron-parser: 4.9.0 deepmerge: 4.3.1 dot-prop: 9.0.0 @@ -15829,17 +15900,17 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.5.8(@vercel/functions@2.2.13)(rollup@4.50.0)': + '@netlify/dev@4.5.9(@vercel/functions@2.2.13)(rollup@4.50.1)': dependencies: '@netlify/blobs': 10.0.10 '@netlify/config': 23.2.0 '@netlify/dev-utils': 4.1.3 '@netlify/edge-functions': 2.17.4 - '@netlify/functions': 4.2.5(rollup@4.50.0) + '@netlify/functions': 4.2.5(rollup@4.50.1) '@netlify/headers': 2.0.11 '@netlify/images': 1.2.7(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13) '@netlify/redirects': 3.0.12 - '@netlify/runtime': 4.0.14 + '@netlify/runtime': 4.0.15 '@netlify/static': 3.0.10 ulid: 3.0.1 transitivePeerDependencies: @@ -15865,7 +15936,7 @@ snapshots: - supports-color - uploadthing - '@netlify/edge-bundler@14.5.2': + '@netlify/edge-bundler@14.5.4': dependencies: '@import-maps/resolve': 2.0.0 ajv: 8.17.1 @@ -15873,7 +15944,7 @@ snapshots: better-ajv-errors: 1.2.0(ajv@8.17.1) common-path-prefix: 3.0.0 env-paths: 3.0.0 - esbuild: 0.25.6 + esbuild: 0.25.9 execa: 8.0.1 find-up: 7.0.0 get-port: 7.1.0 @@ -15888,23 +15959,23 @@ snapshots: urlpattern-polyfill: 8.0.2 uuid: 11.1.0 - '@netlify/edge-functions-bootstrap@2.16.2': {} + '@netlify/edge-functions-bootstrap@2.16.3': {} '@netlify/edge-functions@2.17.4': dependencies: '@netlify/dev-utils': 4.1.3 - '@netlify/edge-bundler': 14.5.2 - '@netlify/edge-functions-bootstrap': 2.16.2 + '@netlify/edge-bundler': 14.5.4 + '@netlify/edge-functions-bootstrap': 2.16.3 '@netlify/runtime-utils': 2.1.0 '@netlify/types': 2.0.3 get-port: 7.1.0 - '@netlify/functions@4.2.5(rollup@4.50.0)': + '@netlify/functions@4.2.5(rollup@4.50.1)': dependencies: '@netlify/blobs': 10.0.10 '@netlify/dev-utils': 4.1.3 '@netlify/types': 2.0.3 - '@netlify/zip-it-and-ship-it': 14.1.4(rollup@4.50.0) + '@netlify/zip-it-and-ship-it': 14.1.7(rollup@4.50.1) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -15974,14 +16045,14 @@ snapshots: '@netlify/runtime-utils@2.1.0': {} - '@netlify/runtime@4.0.14': + '@netlify/runtime@4.0.15': dependencies: '@netlify/blobs': 10.0.10 - '@netlify/cache': 3.0.11 + '@netlify/cache': 3.1.0 '@netlify/runtime-utils': 2.1.0 '@netlify/types': 2.0.3 - '@netlify/serverless-functions-api@2.2.1': {} + '@netlify/serverless-functions-api@2.5.0': {} '@netlify/static@3.0.10': dependencies: @@ -15989,11 +16060,11 @@ snapshots: '@netlify/types@2.0.3': {} - '@netlify/vite-plugin@2.5.8(@vercel/functions@2.2.13)(rollup@4.50.0)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@netlify/vite-plugin@2.5.9(@vercel/functions@2.2.13)(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@netlify/dev': 4.5.8(@vercel/functions@2.2.13)(rollup@4.50.0) + '@netlify/dev': 4.5.9(@vercel/functions@2.2.13)(rollup@4.50.1) '@netlify/dev-utils': 4.1.3 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16017,18 +16088,18 @@ snapshots: - supports-color - uploadthing - '@netlify/zip-it-and-ship-it@14.1.4(rollup@4.50.0)': + '@netlify/zip-it-and-ship-it@14.1.7(rollup@4.50.1)': dependencies: - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@babel/types': 7.28.1 '@netlify/binary-info': 1.0.0 - '@netlify/serverless-functions-api': 2.2.1 - '@vercel/nft': 0.29.4(rollup@4.50.0) + '@netlify/serverless-functions-api': 2.5.0 + '@vercel/nft': 0.29.4(rollup@4.50.1) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.1.0 es-module-lexer: 1.7.0 - esbuild: 0.25.6 + esbuild: 0.25.9 execa: 8.0.1 fast-glob: 3.3.3 filter-obj: 6.1.0 @@ -16070,63 +16141,63 @@ snapshots: '@oslojs/encoding@1.1.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.6.2': + '@oxc-resolver/binding-android-arm-eabi@11.7.1': optional: true - '@oxc-resolver/binding-android-arm64@11.6.2': + '@oxc-resolver/binding-android-arm64@11.7.1': optional: true - '@oxc-resolver/binding-darwin-arm64@11.6.2': + '@oxc-resolver/binding-darwin-arm64@11.7.1': optional: true - '@oxc-resolver/binding-darwin-x64@11.6.2': + '@oxc-resolver/binding-darwin-x64@11.7.1': optional: true - '@oxc-resolver/binding-freebsd-x64@11.6.2': + '@oxc-resolver/binding-freebsd-x64@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.6.2': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.6.2': + '@oxc-resolver/binding-linux-arm-musleabihf@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.6.2': + '@oxc-resolver/binding-linux-arm64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.6.2': + '@oxc-resolver/binding-linux-arm64-musl@11.7.1': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.6.2': + '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.6.2': + '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.6.2': + '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.6.2': + '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.6.2': + '@oxc-resolver/binding-linux-x64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.6.2': + '@oxc-resolver/binding-linux-x64-musl@11.7.1': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.6.2': + '@oxc-resolver/binding-wasm32-wasi@11.7.1': dependencies: '@napi-rs/wasm-runtime': 1.0.3 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.6.2': + '@oxc-resolver/binding-win32-arm64-msvc@11.7.1': optional: true - '@oxc-resolver/binding-win32-ia32-msvc@11.6.2': + '@oxc-resolver/binding-win32-ia32-msvc@11.7.1': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.6.2': + '@oxc-resolver/binding-win32-x64-msvc@11.7.1': optional: true '@parcel/watcher-android-arm64@2.5.1': @@ -16207,18 +16278,18 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.3)(preact@10.27.1)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.3) - '@prefresh/vite': 2.4.10(preact@10.27.1)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) + '@prefresh/vite': 2.4.10(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 - babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.3) + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.4) debug: 4.4.1 picocolors: 1.1.1 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) - vite-prerender-plugin: 0.5.11(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + vite-prerender-plugin: 0.5.12(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: - preact - supports-color @@ -16238,15 +16309,15 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.10(preact@10.27.1)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@prefresh/vite@2.4.10(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@prefresh/babel-plugin': 0.5.2 '@prefresh/core': 1.5.7(preact@10.27.1) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.27.1 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -16258,82 +16329,82 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-beta.34': {} + '@rolldown/pluginutils@1.0.0-beta.36': {} '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.2.0(rollup@4.50.0)': + '@rollup/pluginutils@5.3.0(rollup@4.50.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/rollup-android-arm-eabi@4.50.0': + '@rollup/rollup-android-arm-eabi@4.50.1': optional: true - '@rollup/rollup-android-arm64@4.50.0': + '@rollup/rollup-android-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-arm64@4.50.0': + '@rollup/rollup-darwin-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-x64@4.50.0': + '@rollup/rollup-darwin-x64@4.50.1': optional: true - '@rollup/rollup-freebsd-arm64@4.50.0': + '@rollup/rollup-freebsd-arm64@4.50.1': optional: true - '@rollup/rollup-freebsd-x64@4.50.0': + '@rollup/rollup-freebsd-x64@4.50.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.50.0': + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.50.0': + '@rollup/rollup-linux-arm-musleabihf@4.50.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.50.0': + '@rollup/rollup-linux-arm64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.50.0': + '@rollup/rollup-linux-arm64-musl@4.50.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.50.0': + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.50.0': + '@rollup/rollup-linux-ppc64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.50.0': + '@rollup/rollup-linux-riscv64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.50.0': + '@rollup/rollup-linux-riscv64-musl@4.50.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.50.0': + '@rollup/rollup-linux-s390x-gnu@4.50.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.50.0': + '@rollup/rollup-linux-x64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-x64-musl@4.50.0': + '@rollup/rollup-linux-x64-musl@4.50.1': optional: true - '@rollup/rollup-openharmony-arm64@4.50.0': + '@rollup/rollup-openharmony-arm64@4.50.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.50.0': + '@rollup/rollup-win32-arm64-msvc@4.50.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.50.0': + '@rollup/rollup-win32-ia32-msvc@4.50.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.50.0': + '@rollup/rollup-win32-x64-msvc@4.50.1': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -16381,25 +16452,25 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)))(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.1 svelte: 5.38.7 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)))(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.18 + magic-string: 0.30.19 svelte: 5.38.7 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -16407,76 +16478,76 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/node@4.1.12': + '@tailwindcss/node@4.1.13': dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.18.3 jiti: 2.5.1 lightningcss: 1.30.1 - magic-string: 0.30.18 + magic-string: 0.30.19 source-map-js: 1.2.1 - tailwindcss: 4.1.12 + tailwindcss: 4.1.13 - '@tailwindcss/oxide-android-arm64@4.1.12': + '@tailwindcss/oxide-android-arm64@4.1.13': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.12': + '@tailwindcss/oxide-darwin-arm64@4.1.13': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.12': + '@tailwindcss/oxide-darwin-x64@4.1.13': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.12': + '@tailwindcss/oxide-freebsd-x64@4.1.13': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.12': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.12': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.12': + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.12': + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.12': + '@tailwindcss/oxide-linux-x64-musl@4.1.13': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.12': + '@tailwindcss/oxide-wasm32-wasi@4.1.13': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.12': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.12': + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': optional: true - '@tailwindcss/oxide@4.1.12': + '@tailwindcss/oxide@4.1.13': dependencies: detect-libc: 2.0.4 tar: 7.4.3 optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.12 - '@tailwindcss/oxide-darwin-arm64': 4.1.12 - '@tailwindcss/oxide-darwin-x64': 4.1.12 - '@tailwindcss/oxide-freebsd-x64': 4.1.12 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.12 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.12 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.12 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.12 - '@tailwindcss/oxide-linux-x64-musl': 4.1.12 - '@tailwindcss/oxide-wasm32-wasi': 4.1.12 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.12 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.12 - - '@tailwindcss/vite@4.1.12(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': - dependencies: - '@tailwindcss/node': 4.1.12 - '@tailwindcss/oxide': 4.1.12 - tailwindcss: 4.1.12 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + '@tailwindcss/oxide-android-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-x64': 4.1.13 + '@tailwindcss/oxide-freebsd-x64': 4.1.13 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.13 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-x64-musl': 4.1.13 + '@tailwindcss/oxide-wasm32-wasi': 4.1.13 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.13 + + '@tailwindcss/vite@4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + dependencies: + '@tailwindcss/node': 4.1.13 + '@tailwindcss/oxide': 4.1.13 + tailwindcss: 4.1.13 + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) '@trysound/sax@0.2.0': {} @@ -16491,24 +16562,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@types/canvas-confetti@1.9.0': {} @@ -16540,7 +16611,7 @@ snapshots: '@types/fontkit@2.0.8': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@types/hast@3.0.4': dependencies: @@ -16594,11 +16665,11 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@18.19.123': + '@types/node@18.19.124': dependencies: undici-types: 5.26.5 - '@types/node@22.18.0': + '@types/node@22.18.1': dependencies: undici-types: 6.21.0 @@ -16610,7 +16681,7 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 kleur: 3.0.3 '@types/prop-types@15.7.15': {} @@ -16619,27 +16690,35 @@ snapshots: dependencies: '@types/react': 18.3.24 + '@types/react-dom@19.1.1(@types/react@19.1.1)': + dependencies: + '@types/react': 19.1.1 + '@types/react@18.3.24': dependencies: '@types/prop-types': 15.7.15 csstype: 3.1.3 + '@types/react@19.1.1': + dependencies: + csstype: 3.1.3 + '@types/retry@0.12.2': {} '@types/sax@1.2.7': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 - '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@types/server-destroy@1.0.4': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@types/triple-beam@1.3.5': {} @@ -16655,28 +16734,28 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@types/xml2js@0.4.14': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@types/yargs-parser@21.0.3': {} '@types/yauzl@2.10.3': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 optional: true - '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.42.0 - eslint: 9.34.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 + eslint: 9.35.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -16685,56 +16764,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.42.0': + '@typescript-eslint/scope-manager@8.43.0': dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.42.0': {} + '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -16745,20 +16824,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - eslint: 9.34.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.42.0': + '@typescript-eslint/visitor-keys@8.43.0': dependencies: - '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 '@typescript/twoslash@3.1.0': @@ -16793,10 +16872,10 @@ snapshots: dependencies: '@vercel/oidc': 2.0.2 - '@vercel/nft@0.29.4(rollup@4.50.0)': + '@vercel/nft@0.29.4(rollup@4.50.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -16812,10 +16891,10 @@ snapshots: - rollup - supports-color - '@vercel/nft@0.30.1(rollup@4.50.0)': + '@vercel/nft@0.30.1(rollup@4.50.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -16843,32 +16922,32 @@ snapshots: optionalDependencies: ajv: 6.12.6 - '@vitejs/plugin-react@4.7.0(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@vitejs/plugin-react@4.7.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.2.0(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue-jsx@4.2.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) - '@rolldown/pluginutils': 1.0.0-beta.34 - '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.3) - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + '@babel/core': 7.28.4 + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@rolldown/pluginutils': 1.0.0-beta.36 + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.4) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vue: 3.5.21(typescript@5.9.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': dependencies: - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vue: 3.5.21(typescript@5.9.2) '@vitest/expect@3.2.4': @@ -16879,13 +16958,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.18 + magic-string: 0.30.19 optionalDependencies: - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -16900,7 +16979,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.18 + magic-string: 0.30.19 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -16965,36 +17044,36 @@ snapshots: '@vue/babel-helper-vue-transform-on@1.5.0': {} - '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.3)': + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.4)': dependencies: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 '@vue/babel-helper-vue-transform-on': 1.5.0 - '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.3) + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.4) '@vue/shared': 3.5.21 optionalDependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.3)': + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.4)': dependencies: '@babel/code-frame': 7.27.1 - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@vue/compiler-sfc': 3.5.21 transitivePeerDependencies: - supports-color '@vue/compiler-core@3.5.21': dependencies: - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@vue/shared': 3.5.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -17007,13 +17086,13 @@ snapshots: '@vue/compiler-sfc@3.5.21': dependencies: - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@vue/compiler-core': 3.5.21 '@vue/compiler-dom': 3.5.21 '@vue/compiler-ssr': 3.5.21 '@vue/shared': 3.5.21 estree-walker: 2.0.2 - magic-string: 0.30.18 + magic-string: 0.30.19 postcss: 8.5.6 source-map-js: 1.2.1 @@ -17022,14 +17101,14 @@ snapshots: '@vue/compiler-dom': 3.5.21 '@vue/shared': 3.5.21 - '@vue/devtools-core@7.7.7(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': + '@vue/devtools-core@7.7.7(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': dependencies: '@vue/devtools-kit': 7.7.7 '@vue/devtools-shared': 7.7.7 mitt: 3.0.1 nanoid: 5.1.5 pathe: 2.0.3 - vite-hot-client: 2.1.0(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + vite-hot-client: 2.1.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) vue: 3.5.21(typescript@5.9.2) transitivePeerDependencies: - vite @@ -17156,7 +17235,7 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alpinejs@3.14.9: + alpinejs@3.15.0: dependencies: '@vue/reactivity': 3.1.5 @@ -17178,13 +17257,13 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.2.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} ansis@4.1.0: {} @@ -17241,7 +17320,7 @@ snapshots: astro-auto-import@0.4.4(astro@packages+astro): dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 acorn: 8.15.0 astro: link:packages/astro @@ -17252,7 +17331,7 @@ snapshots: '@astro-community/astro-embed-link-preview': 0.2.2 '@astro-community/astro-embed-twitter': 0.5.8(astro@packages+astro) '@astro-community/astro-embed-vimeo': 0.3.10(astro@packages+astro) - '@astro-community/astro-embed-youtube': 0.5.6(astro@packages+astro) + '@astro-community/astro-embed-youtube': 0.5.7(astro@packages+astro) astro: link:packages/astro astro-remote@0.3.4: @@ -17297,8 +17376,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.3 - caniuse-lite: 1.0.30001737 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001741 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -17317,24 +17396,24 @@ snapshots: b4a@1.6.7: {} - babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.3): + babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/types': 7.28.2 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 html-entities: 2.3.3 parse5: 7.3.0 validate-html-nesting: 1.2.3 - babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.3): + babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - babel-preset-solid@1.9.9(@babel/core@7.28.3)(solid-js@1.9.9): + babel-preset-solid@1.9.9(@babel/core@7.28.4)(solid-js@1.9.9): dependencies: - '@babel/core': 7.28.3 - babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.4) optionalDependencies: solid-js: 1.9.9 @@ -17397,12 +17476,12 @@ snapshots: dependencies: ansi-align: 3.0.1 camelcase: 8.0.0 - chalk: 5.6.0 + chalk: 5.6.2 cli-boxes: 3.0.0 string-width: 7.2.0 type-fest: 4.41.0 widest-line: 5.0.0 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 brace-expansion@1.1.12: dependencies: @@ -17421,12 +17500,12 @@ snapshots: dependencies: base64-js: 1.5.1 - browserslist@4.25.3: + browserslist@4.25.4: dependencies: - caniuse-lite: 1.0.30001737 - electron-to-chromium: 1.5.209 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.3) + caniuse-lite: 1.0.30001741 + electron-to-chromium: 1.5.215 + node-releases: 2.0.20 + update-browserslist-db: 1.1.3(browserslist@4.25.4) buffer-crc32@0.2.13: {} @@ -17448,7 +17527,7 @@ snapshots: bundle-name@4.1.0: dependencies: - run-applescript: 7.0.0 + run-applescript: 7.1.0 bytes@3.1.2: {} @@ -17472,7 +17551,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001737: {} + caniuse-lite@1.0.30001741: {} canvas-confetti@1.9.3: {} @@ -17491,7 +17570,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.0: {} + chalk@5.6.2: {} char-spinner@1.0.1: {} @@ -17697,7 +17776,7 @@ snapshots: cron-parser@4.9.0: dependencies: - luxon: 3.7.1 + luxon: 3.7.2 cross-argv@2.0.0: {} @@ -17877,7 +17956,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.9.2): dependencies: - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.9.2 @@ -17947,10 +18026,10 @@ snapshots: dotenv@8.6.0: {} - drizzle-orm@0.42.0(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14): + drizzle-orm@0.42.0(@cloudflare/workers-types@4.20250909.0)(@libsql/client@0.15.15): optionalDependencies: - '@cloudflare/workers-types': 4.20250903.0 - '@libsql/client': 0.15.14 + '@cloudflare/workers-types': 4.20250909.0 + '@libsql/client': 0.15.15 dset@3.1.4: {} @@ -17968,14 +18047,14 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.209: {} + electron-to-chromium@1.5.215: {} emmet@2.4.11: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 - emoji-regex@10.4.0: {} + emoji-regex@10.5.0: {} emoji-regex@8.0.0: {} @@ -18135,34 +18214,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.5 '@esbuild/win32-x64': 0.25.5 - esbuild@0.25.6: + esbuild@0.25.9: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.6 - '@esbuild/android-arm': 0.25.6 - '@esbuild/android-arm64': 0.25.6 - '@esbuild/android-x64': 0.25.6 - '@esbuild/darwin-arm64': 0.25.6 - '@esbuild/darwin-x64': 0.25.6 - '@esbuild/freebsd-arm64': 0.25.6 - '@esbuild/freebsd-x64': 0.25.6 - '@esbuild/linux-arm': 0.25.6 - '@esbuild/linux-arm64': 0.25.6 - '@esbuild/linux-ia32': 0.25.6 - '@esbuild/linux-loong64': 0.25.6 - '@esbuild/linux-mips64el': 0.25.6 - '@esbuild/linux-ppc64': 0.25.6 - '@esbuild/linux-riscv64': 0.25.6 - '@esbuild/linux-s390x': 0.25.6 - '@esbuild/linux-x64': 0.25.6 - '@esbuild/netbsd-arm64': 0.25.6 - '@esbuild/netbsd-x64': 0.25.6 - '@esbuild/openbsd-arm64': 0.25.6 - '@esbuild/openbsd-x64': 0.25.6 - '@esbuild/openharmony-arm64': 0.25.6 - '@esbuild/sunos-x64': 0.25.6 - '@esbuild/win32-arm64': 0.25.6 - '@esbuild/win32-ia32': 0.25.6 - '@esbuild/win32-x64': 0.25.6 + '@esbuild/aix-ppc64': 0.25.9 + '@esbuild/android-arm': 0.25.9 + '@esbuild/android-arm64': 0.25.9 + '@esbuild/android-x64': 0.25.9 + '@esbuild/darwin-arm64': 0.25.9 + '@esbuild/darwin-x64': 0.25.9 + '@esbuild/freebsd-arm64': 0.25.9 + '@esbuild/freebsd-x64': 0.25.9 + '@esbuild/linux-arm': 0.25.9 + '@esbuild/linux-arm64': 0.25.9 + '@esbuild/linux-ia32': 0.25.9 + '@esbuild/linux-loong64': 0.25.9 + '@esbuild/linux-mips64el': 0.25.9 + '@esbuild/linux-ppc64': 0.25.9 + '@esbuild/linux-riscv64': 0.25.9 + '@esbuild/linux-s390x': 0.25.9 + '@esbuild/linux-x64': 0.25.9 + '@esbuild/netbsd-arm64': 0.25.9 + '@esbuild/netbsd-x64': 0.25.9 + '@esbuild/openbsd-arm64': 0.25.9 + '@esbuild/openbsd-x64': 0.25.9 + '@esbuild/openharmony-arm64': 0.25.9 + '@esbuild/sunos-x64': 0.25.9 + '@esbuild/win32-arm64': 0.25.9 + '@esbuild/win32-ia32': 0.25.9 + '@esbuild/win32-x64': 0.25.9 escalade@3.2.0: {} @@ -18180,12 +18259,12 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-plugin-regexp@2.10.0(eslint@9.34.0(jiti@2.5.1)): + eslint-plugin-regexp@2.10.0(eslint@9.35.0(jiti@2.5.1)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.5.1) jsdoc-type-pratt-parser: 4.8.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 @@ -18200,17 +18279,17 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.34.0(jiti@2.5.1): + eslint@9.35.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.34.0 + '@eslint/js': 9.35.0 '@eslint/plugin-kit': 0.3.5 - '@humanfs/node': 0.16.6 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 @@ -18592,7 +18671,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.3.1: {} get-intrinsic@1.3.0: dependencies: @@ -18683,7 +18762,7 @@ snapshots: defu: 6.1.4 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.2 + node-mock-http: 1.0.3 radix3: 1.1.2 ufo: 1.6.1 uncrypto: 0.1.3 @@ -18984,7 +19063,7 @@ snapshots: sharp: 0.34.3 svgo: 4.0.0 ufo: 1.6.1 - unstorage: 1.17.0(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13) + unstorage: 1.17.1(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13) xss: 1.0.15 transitivePeerDependencies: - '@azure/app-configuration' @@ -19191,16 +19270,16 @@ snapshots: kleur@4.1.5: {} - knip@5.61.3(@types/node@18.19.123)(typescript@5.9.2): + knip@5.61.3(@types/node@18.19.124)(typescript@5.9.2): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 18.19.123 + '@types/node': 18.19.124 fast-glob: 3.3.3 formatly: 0.2.4 jiti: 2.5.1 js-yaml: 4.1.0 minimist: 1.2.8 - oxc-resolver: 11.6.2 + oxc-resolver: 11.7.1 picocolors: 1.1.1 picomatch: 4.0.3 smol-toml: 1.4.2 @@ -19390,7 +19469,7 @@ snapshots: ansi-escapes: 5.0.0 cli-cursor: 4.0.0 slice-ansi: 5.0.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrap-ansi: 8.1.0 logform@2.7.0: @@ -19420,18 +19499,18 @@ snapshots: dependencies: yallist: 3.1.1 - luxon@3.7.1: {} + luxon@3.7.2: {} lz-string@1.5.0: {} - magic-string@0.30.18: + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 source-map-js: 1.2.1 manage-path@2.0.0: {} @@ -20095,9 +20174,9 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-mock-http@1.0.2: {} + node-mock-http@1.0.3: {} - node-mocks-http@1.17.2(@types/node@22.18.0): + node-mocks-http@1.17.2(@types/node@22.18.1): dependencies: accepts: 1.3.8 content-disposition: 0.5.4 @@ -20110,13 +20189,13 @@ snapshots: range-parser: 1.2.1 type-is: 1.6.18 optionalDependencies: - '@types/node': 22.18.0 + '@types/node': 22.18.1 - node-releases@2.0.19: {} + node-releases@2.0.20: {} node-source-walk@7.0.1: dependencies: - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 node-stream-zip@1.15.0: {} @@ -20217,29 +20296,29 @@ snapshots: outdent@0.5.0: {} - oxc-resolver@11.6.2: + oxc-resolver@11.7.1: dependencies: napi-postinstall: 0.3.3 optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.6.2 - '@oxc-resolver/binding-android-arm64': 11.6.2 - '@oxc-resolver/binding-darwin-arm64': 11.6.2 - '@oxc-resolver/binding-darwin-x64': 11.6.2 - '@oxc-resolver/binding-freebsd-x64': 11.6.2 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.6.2 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.6.2 - '@oxc-resolver/binding-linux-arm64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-arm64-musl': 11.6.2 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-riscv64-musl': 11.6.2 - '@oxc-resolver/binding-linux-s390x-gnu': 11.6.2 - '@oxc-resolver/binding-linux-x64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-x64-musl': 11.6.2 - '@oxc-resolver/binding-wasm32-wasi': 11.6.2 - '@oxc-resolver/binding-win32-arm64-msvc': 11.6.2 - '@oxc-resolver/binding-win32-ia32-msvc': 11.6.2 - '@oxc-resolver/binding-win32-x64-msvc': 11.6.2 + '@oxc-resolver/binding-android-arm-eabi': 11.7.1 + '@oxc-resolver/binding-android-arm64': 11.7.1 + '@oxc-resolver/binding-darwin-arm64': 11.7.1 + '@oxc-resolver/binding-darwin-x64': 11.7.1 + '@oxc-resolver/binding-freebsd-x64': 11.7.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.7.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.7.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.7.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.7.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.7.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-x64-musl': 11.7.1 + '@oxc-resolver/binding-wasm32-wasi': 11.7.1 + '@oxc-resolver/binding-win32-arm64-msvc': 11.7.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.7.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.7.1 p-event@6.0.1: dependencies: @@ -20281,7 +20360,7 @@ snapshots: p-map@7.0.3: {} - p-queue@8.1.0: + p-queue@8.1.1: dependencies: eventemitter3: 5.0.1 p-timeout: 6.1.4 @@ -20614,7 +20693,7 @@ snapshots: '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.6) '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6) autoprefixer: 10.4.21(postcss@8.5.6) - browserslist: 4.25.3 + browserslist: 4.25.4 css-blank-pseudo: 7.0.1(postcss@8.5.6) css-has-pseudo: 7.0.3(postcss@8.5.6) css-prefers-color-scheme: 10.0.0(postcss@8.5.6) @@ -21015,7 +21094,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@3.1.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -21136,34 +21215,34 @@ snapshots: rfdc@1.4.1: {} - rollup@4.50.0: + rollup@4.50.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.0 - '@rollup/rollup-android-arm64': 4.50.0 - '@rollup/rollup-darwin-arm64': 4.50.0 - '@rollup/rollup-darwin-x64': 4.50.0 - '@rollup/rollup-freebsd-arm64': 4.50.0 - '@rollup/rollup-freebsd-x64': 4.50.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.0 - '@rollup/rollup-linux-arm-musleabihf': 4.50.0 - '@rollup/rollup-linux-arm64-gnu': 4.50.0 - '@rollup/rollup-linux-arm64-musl': 4.50.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.50.0 - '@rollup/rollup-linux-ppc64-gnu': 4.50.0 - '@rollup/rollup-linux-riscv64-gnu': 4.50.0 - '@rollup/rollup-linux-riscv64-musl': 4.50.0 - '@rollup/rollup-linux-s390x-gnu': 4.50.0 - '@rollup/rollup-linux-x64-gnu': 4.50.0 - '@rollup/rollup-linux-x64-musl': 4.50.0 - '@rollup/rollup-openharmony-arm64': 4.50.0 - '@rollup/rollup-win32-arm64-msvc': 4.50.0 - '@rollup/rollup-win32-ia32-msvc': 4.50.0 - '@rollup/rollup-win32-x64-msvc': 4.50.0 + '@rollup/rollup-android-arm-eabi': 4.50.1 + '@rollup/rollup-android-arm64': 4.50.1 + '@rollup/rollup-darwin-arm64': 4.50.1 + '@rollup/rollup-darwin-x64': 4.50.1 + '@rollup/rollup-freebsd-arm64': 4.50.1 + '@rollup/rollup-freebsd-x64': 4.50.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 + '@rollup/rollup-linux-arm-musleabihf': 4.50.1 + '@rollup/rollup-linux-arm64-gnu': 4.50.1 + '@rollup/rollup-linux-arm64-musl': 4.50.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 + '@rollup/rollup-linux-ppc64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-musl': 4.50.1 + '@rollup/rollup-linux-s390x-gnu': 4.50.1 + '@rollup/rollup-linux-x64-gnu': 4.50.1 + '@rollup/rollup-linux-x64-musl': 4.50.1 + '@rollup/rollup-openharmony-arm64': 4.50.1 + '@rollup/rollup-win32-arm64-msvc': 4.50.1 + '@rollup/rollup-win32-ia32-msvc': 4.50.1 + '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 - run-applescript@7.0.0: {} + run-applescript@7.1.0: {} run-parallel@1.2.0: dependencies: @@ -21187,7 +21266,7 @@ snapshots: dependencies: suf-log: 2.5.3 - sass@1.92.0: + sass@1.92.1: dependencies: chokidar: 4.0.3 immutable: 5.1.3 @@ -21247,7 +21326,7 @@ snapshots: transitivePeerDependencies: - supports-color - seroval-plugins@1.3.2(seroval@1.3.2): + seroval-plugins@1.3.3(seroval@1.3.2): dependencies: seroval: 1.3.2 @@ -21408,7 +21487,7 @@ snapshots: dependencies: is-arrayish: 0.3.2 - sirv@3.0.1: + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 @@ -21429,7 +21508,7 @@ snapshots: slice-ansi@5.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 4.0.0 smartypants@0.2.2: {} @@ -21440,13 +21519,13 @@ snapshots: dependencies: csstype: 3.1.3 seroval: 1.3.2 - seroval-plugins: 1.3.2(seroval@1.3.2) + seroval-plugins: 1.3.3(seroval@1.3.2) solid-refresh@0.6.3(solid-js@1.9.9): dependencies: '@babel/generator': 7.28.3 '@babel/helper-module-imports': 7.27.1 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 solid-js: 1.9.9 transitivePeerDependencies: - supports-color @@ -21536,13 +21615,13 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 + emoji-regex: 10.5.0 + get-east-asian-width: 1.3.1 + strip-ansi: 7.1.2 string_decoder@1.1.1: dependencies: @@ -21565,9 +21644,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -21639,7 +21718,7 @@ snapshots: esrap: 2.1.0 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.18 + magic-string: 0.30.19 zimmerframe: 1.1.2 svgo@3.3.2: @@ -21664,7 +21743,7 @@ snapshots: system-architecture@0.1.0: {} - tailwindcss@4.1.12: {} + tailwindcss@4.1.13: {} tapable@2.2.3: {} @@ -21706,7 +21785,7 @@ snapshots: tinyexec@1.0.1: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 @@ -21809,13 +21888,13 @@ snapshots: dependencies: semver: 7.7.2 - typescript-eslint@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.34.0(jiti@2.5.1) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -21962,7 +22041,7 @@ snapshots: unpipe@1.0.0: {} - unstorage@1.17.0(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13): + unstorage@1.17.1(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13): dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -21982,9 +22061,9 @@ snapshots: consola: 3.4.2 pathe: 1.1.2 - update-browserslist-db@1.1.3(browserslist@4.25.3): + update-browserslist-db@1.1.3(browserslist@4.25.4): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -22034,17 +22113,17 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-hot-client@2.1.0(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)): + vite-hot-client@2.1.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): dependencies: - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) - vite-node@3.2.4(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1): + vite-node@3.2.4(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -22059,106 +22138,106 @@ snapshots: - tsx - yaml - vite-plugin-inspect@0.8.9(rollup@4.50.0)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)): + vite-plugin-inspect@0.8.9(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) debug: 4.4.1 error-stack-parser-es: 0.1.5 fs-extra: 11.3.1 open: 10.2.0 perfect-debounce: 1.0.0 picocolors: 1.1.1 - sirv: 3.0.1 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + sirv: 3.0.2 + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)): + vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.9(@babel/core@7.28.3)(solid-js@1.9.9) + babel-preset-solid: 1.9.9(@babel/core@7.28.4)(solid-js@1.9.9) merge-anything: 5.1.7 solid-js: 1.9.9 solid-refresh: 0.6.3(solid-js@1.9.9) - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.7.7(rollup@4.50.0)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)): + vite-plugin-vue-devtools@7.7.7(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)): dependencies: - '@vue/devtools-core': 7.7.7(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + '@vue/devtools-core': 7.7.7(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) '@vue/devtools-kit': 7.7.7 '@vue/devtools-shared': 7.7.7 execa: 9.6.0 - sirv: 3.0.1 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) - vite-plugin-inspect: 0.8.9(rollup@4.50.0)(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) - vite-plugin-vue-inspector: 5.3.2(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + sirv: 3.0.2 + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + vite-plugin-inspect: 0.8.9(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + vite-plugin-vue-inspector: 5.3.2(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: - '@nuxt/kit' - rollup - supports-color - vue - vite-plugin-vue-inspector@5.3.2(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)): + vite-plugin-vue-inspector@5.3.2(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) - '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.4) '@vue/compiler-dom': 3.5.21 kolorist: 1.8.0 - magic-string: 0.30.18 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + magic-string: 0.30.19 + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.11(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)): + vite-prerender-plugin@0.5.12(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): dependencies: kolorist: 1.8.0 - magic-string: 0.30.18 + magic-string: 0.30.19 node-html-parser: 6.1.13 simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vite-svg-loader@5.1.0(vue@3.5.21(typescript@5.9.2)): dependencies: svgo: 3.3.2 vue: 3.5.21(typescript@5.9.2) - vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1): + vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1): dependencies: esbuild: 0.25.5 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.50.0 - tinyglobby: 0.2.14 + rollup: 4.50.1 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.18.0 + '@types/node': 22.18.1 fsevents: 2.3.3 jiti: 2.5.1 lightningcss: 1.30.1 - sass: 1.92.0 + sass: 1.92.1 yaml: 2.8.1 - vitefu@1.1.1(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)): + vitefu@1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): optionalDependencies: - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -22167,21 +22246,21 @@ snapshots: chai: 5.3.3 debug: 4.4.1 expect-type: 1.2.2 - magic-string: 0.30.18 + magic-string: 0.30.19 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.6(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.18.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.0)(yaml@2.8.1) + vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.18.0 + '@types/node': 22.18.1 transitivePeerDependencies: - jiti - less @@ -22388,7 +22467,7 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20250428.0 '@cloudflare/workerd-windows-64': 1.20250428.0 - wrangler@4.14.1(@cloudflare/workers-types@4.20250903.0): + wrangler@4.14.1(@cloudflare/workers-types@4.20250909.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250428.0) @@ -22399,7 +22478,7 @@ snapshots: unenv: 2.0.0-rc.15 workerd: 1.20250428.0 optionalDependencies: - '@cloudflare/workers-types': 4.20250903.0 + '@cloudflare/workers-types': 4.20250909.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: @@ -22420,15 +22499,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} From f7a19990038c7ea1ef32f2f6aa72c7539b4e76ea Mon Sep 17 00:00:00 2001 From: Louis Escher Date: Fri, 12 Sep 2025 13:14:53 +0000 Subject: [PATCH 12/50] [ci] format --- packages/astro/src/cli/info/index.ts | 129 ++++++++++++++------------- packages/astro/test/cli.test.js | 112 +++++++++++++---------- 2 files changed, 133 insertions(+), 108 deletions(-) diff --git a/packages/astro/src/cli/info/index.ts b/packages/astro/src/cli/info/index.ts index 60eea529a876..3bae95edae1a 100644 --- a/packages/astro/src/cli/info/index.ts +++ b/packages/astro/src/cli/info/index.ts @@ -20,7 +20,7 @@ export async function getInfoOutput({ print: boolean; }): Promise { const packageManager = getPackageManager(); - + const rows: Array<[string, string | string[]]> = [ ['Astro', `v${ASTRO_VERSION}`], ['Node', process.version], @@ -29,26 +29,29 @@ export async function getInfoOutput({ ]; if (print) { - const viteVersion = await getVersion(packageManager, "vite"); - + const viteVersion = await getVersion(packageManager, 'vite'); + if (viteVersion) { rows.splice(1, 0, ['Vite', viteVersion]); } } - - const hasAdapter = "adapter" in userConfig && userConfig.adapter?.name; + + const hasAdapter = 'adapter' in userConfig && userConfig.adapter?.name; let adapterVersion: string | undefined = undefined; if (print && hasAdapter) { adapterVersion = await getVersion(packageManager, userConfig.adapter!.name); } - + const adatperOutputString = hasAdapter - ? `${userConfig.adapter!.name}${adapterVersion ? ` (${adapterVersion})` : ""}` - : "none"; - + ? `${userConfig.adapter!.name}${adapterVersion ? ` (${adapterVersion})` : ''}` + : 'none'; + try { - rows.push(['Output', ("adapter" in userConfig && userConfig.output ? userConfig.output : 'static')]); + rows.push([ + 'Output', + 'adapter' in userConfig && userConfig.output ? userConfig.output : 'static', + ]); rows.push(['Adapter', adatperOutputString]); const integrations = (userConfig?.integrations ?? []) @@ -59,22 +62,24 @@ export async function getInfoOutput({ if (!print) return i.name; const version = await getVersion(packageManager, i.name); - - return `${i.name}${version ? ` (${version})` : ""}`; + + return `${i.name}${version ? ` (${version})` : ''}`; }); const awaitedIntegrations = (await Promise.all(integrations)).filter(Boolean); - + rows.push(['Integrations', awaitedIntegrations.length > 0 ? awaitedIntegrations : 'none']); } catch {} - + let output = ''; for (const [label, value] of rows) { output += printRow(label, value, print); } - if (packageManager === "bun") { - console.warn("Bun is not officially supported by Astro. Unable to retreive certain version information."); + if (packageManager === 'bun') { + console.warn( + 'Bun is not officially supported by Astro. Unable to retreive certain version information.', + ); } return output.trim(); @@ -228,105 +233,109 @@ function printRow(label: string, value: string | string[], print: boolean) { } function formatPnpmVersionOutput(versionOutput: string): string { - return versionOutput.startsWith("link:") - ? "Local" - : `v${versionOutput}`; + return versionOutput.startsWith('link:') ? 'Local' : `v${versionOutput}`; } type BareNpmLikeVersionOutput = { version: string; dependencies: Record; -} +}; async function spawnAsync(executable: string, opts: Array): Promise { - return new Promise((resolve, reject) => { - const child = spawn(executable, opts, { shell: true }); - let stdout = ""; - let stderr = ""; - - child.stdout.on("data", d => (stdout += d)); - child.stderr.on("data", d => (stderr += d)); - child.on("error", reject); - child.on("close", code => { - if (code !== 0) reject(new Error(stderr)); - else resolve(stdout); - }); - }); + return new Promise((resolve, reject) => { + const child = spawn(executable, opts, { shell: true }); + let stdout = ''; + let stderr = ''; + + child.stdout.on('data', (d) => (stdout += d)); + child.stderr.on('data', (d) => (stderr += d)); + child.on('error', reject); + child.on('close', (code) => { + if (code !== 0) reject(new Error(stderr)); + else resolve(stdout); + }); + }); } async function getVersionUsingPNPM(dependency: string): Promise { - const output = await spawnAsync("pnpm", ["why", dependency, "--json"]); + const output = await spawnAsync('pnpm', ['why', dependency, '--json']); const parsedOutput = JSON.parse(output) as Array; - + const deps = parsedOutput[0].dependencies; if (parsedOutput.length === 0 || !deps) { return undefined; } - + const userProvidedDependency = deps[dependency]; - + if (userProvidedDependency) { - return userProvidedDependency.version.startsWith("link:") - ? "Local" + return userProvidedDependency.version.startsWith('link:') + ? 'Local' : `v${userProvidedDependency.version}`; } - + const astroDependency = deps.astro?.dependencies[dependency]; return astroDependency ? formatPnpmVersionOutput(astroDependency.version) : undefined; } async function getVersionUsingNPM(dependency: string): Promise { - const output = await spawnAsync("npm", ["ls", dependency, "--json", "--depth=1"]); + const output = await spawnAsync('npm', ['ls', dependency, '--json', '--depth=1']); const parsedNpmOutput = JSON.parse(output) as BareNpmLikeVersionOutput; - + if (!parsedNpmOutput.dependencies) { return undefined; } - + if (parsedNpmOutput.dependencies[dependency]) { return `v${parsedNpmOutput.dependencies[dependency].version}`; } - + const astro = parsedNpmOutput.dependencies.astro; return astro ? `v${astro.dependencies[dependency].version}` : undefined; } type YarnVersionOutputLine = { - children: Record -} + children: Record; +}; function getYarnOutputDepVersion(dependency: string, outputLine: string) { const parsed = JSON.parse(outputLine) as YarnVersionOutputLine; - + for (const [key, value] of Object.entries(parsed.children)) { if (key.startsWith(`${dependency}@`)) { - return `v${value.locator.split(":").pop()}`; + return `v${value.locator.split(':').pop()}`; } } } async function getVersionUsingYarn(dependency: string): Promise { - const yarnOutput = await spawnAsync("yarn", ["why", dependency, "--json"]); - - const hasUserDefinition = yarnOutput.includes("workspace:."); - - for (const line of yarnOutput.split("\n")) { - if (hasUserDefinition && line.includes("workspace:.")) return getYarnOutputDepVersion(dependency, line); - if (!hasUserDefinition && line.includes("astro@")) return getYarnOutputDepVersion(dependency, line); + const yarnOutput = await spawnAsync('yarn', ['why', dependency, '--json']); + + const hasUserDefinition = yarnOutput.includes('workspace:.'); + + for (const line of yarnOutput.split('\n')) { + if (hasUserDefinition && line.includes('workspace:.')) + return getYarnOutputDepVersion(dependency, line); + if (!hasUserDefinition && line.includes('astro@')) + return getYarnOutputDepVersion(dependency, line); } } async function getVersion(packageManager: string, dependency: string): Promise { try { switch (packageManager) { - case "pnpm": return await getVersionUsingPNPM(dependency); - case "npm": return getVersionUsingNPM(dependency); - case "yarn": return getVersionUsingYarn(dependency); - case "bun": return undefined; + case 'pnpm': + return await getVersionUsingPNPM(dependency); + case 'npm': + return getVersionUsingNPM(dependency); + case 'yarn': + return getVersionUsingYarn(dependency); + case 'bun': + return undefined; } - + return undefined; } catch (err) { console.error(err); diff --git a/packages/astro/test/cli.test.js b/packages/astro/test/cli.test.js index 665560ab4b04..770ea842893d 100644 --- a/packages/astro/test/cli.test.js +++ b/packages/astro/test/cli.test.js @@ -85,9 +85,9 @@ describe('astro cli', () => { const proc = await cli('info', '--copy'); const pkgURL = new URL('../package.json', import.meta.url); const pkgJson = await fs.readFile(pkgURL, 'utf8').then((data) => JSON.parse(data)); - + const pkgVersion = pkgJson.version; - + assert.ok(proc.stdout.includes(`v${pkgVersion}`)); assert.equal(proc.exitCode, 0); @@ -103,87 +103,103 @@ describe('astro cli', () => { assert.ok(clipboardContent.includes(`v${pkgVersion}`)); } }); - - it('astro info shows correct Vite and integration versions when using pnpm', async () => { + + it('astro info shows correct Vite and integration versions when using pnpm', async () => { const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - - const version = await fs.readFile(fileURLToPath(projectPackageJSONUrl)) + + const version = await fs + .readFile(fileURLToPath(projectPackageJSONUrl)) .then((json) => JSON.parse(json).dependencies.vite); - - const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { cwd: projectRootURL, encoding: "utf-8", shell: true }); - + + const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { + cwd: projectRootURL, + encoding: 'utf-8', + shell: true, + }); + assert.equal(proc.stdout.includes(`v${version}`), true); assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); }); - - it('astro info shows correct Vite and integration versions when using npm', async () => { + + it('astro info shows correct Vite and integration versions when using npm', async () => { const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - - const version = await fs.readFile(fileURLToPath(projectPackageJSONUrl)) + + const version = await fs + .readFile(fileURLToPath(projectPackageJSONUrl)) .then((json) => JSON.parse(json).dependencies.vite); - - const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { cwd: projectRootURL, encoding: "utf-8", shell: true }); + + const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { + cwd: projectRootURL, + encoding: 'utf-8', + shell: true, + }); assert.equal(proc.stdout.includes(`v${version}`), true); assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); }); - - it('astro info shows correct Vite and integration versions when using yarn', async () => { + + it('astro info shows correct Vite and integration versions when using yarn', async () => { const fixtureRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); const testsRootURL = new URL('../', import.meta.url); const astroPackageJSONUrl = new URL('./package.json', testsRootURL); const packageJSONUrl = new URL('./package.json', fixtureRootURL); const yarnLockUrl = new URL('./yarn.lock', fixtureRootURL); - - const astroVersion = await fs.readFile(fileURLToPath(astroPackageJSONUrl)).then((text) => JSON.parse(text).version); + + const astroVersion = await fs + .readFile(fileURLToPath(astroPackageJSONUrl)) + .then((text) => JSON.parse(text).version); const packFileName = `./astro-${astroVersion}.tgz`; const packURL = new URL(packFileName, testsRootURL); const packDestinationURL = new URL(packFileName, fixtureRootURL); - + // Add a packageManager field to the fixture's package.json file, otherwise // corepack won't allow us to use yarn because a parent directory has a different // package.json file with a packageManager field - let packageJSON = await fs.readFile(fileURLToPath(packageJSONUrl), { encoding: "utf-8" }).then((text) => JSON.parse(text)); - packageJSON.packageManager = "yarn@4.9.4"; - + let packageJSON = await fs + .readFile(fileURLToPath(packageJSONUrl), { encoding: 'utf-8' }) + .then((text) => JSON.parse(text)); + packageJSON.packageManager = 'yarn@4.9.4'; + const viteVersion = packageJSON.dependencies.vite; - - await fs.writeFile( - fileURLToPath(packageJSONUrl), - JSON.stringify(packageJSON), - { encoding: "utf-8" } - ); - await fs.writeFile(yarnLockUrl, "", { encoding: "utf-8" }); - + + await fs.writeFile(fileURLToPath(packageJSONUrl), JSON.stringify(packageJSON), { + encoding: 'utf-8', + }); + await fs.writeFile(yarnLockUrl, '', { encoding: 'utf-8' }); + spawnSync('pnpm', ['pack'], { cwd: testsRootURL, encoding: 'utf-8', shell: true }); await fs.rename(packURL, packDestinationURL); - - spawnSync('corepack', ['use', 'yarn@4.9.4'], { cwd: fixtureRootURL, encoding: 'utf-8', shell: true }); - spawnSync('corepack', ['yarn', 'add', packFileName], { cwd: fixtureRootURL, encoding: 'utf-8', shell: true }); - - const proc = spawnSync( - 'corepack', - ['yarn', 'astro', 'info', '--copy'], - { - cwd: fixtureRootURL, - encoding: "utf-8", - shell: true - } - ); + + spawnSync('corepack', ['use', 'yarn@4.9.4'], { + cwd: fixtureRootURL, + encoding: 'utf-8', + shell: true, + }); + spawnSync('corepack', ['yarn', 'add', packFileName], { + cwd: fixtureRootURL, + encoding: 'utf-8', + shell: true, + }); + + const proc = spawnSync('corepack', ['yarn', 'astro', 'info', '--copy'], { + cwd: fixtureRootURL, + encoding: 'utf-8', + shell: true, + }); // Reset changes to package.json delete packageJSON.packageManager; - packageJSON.dependencies.astro = "workspace:*"; - await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: "utf-8" }); + packageJSON.dependencies.astro = 'workspace:*'; + await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: 'utf-8' }); await fs.rm(yarnLockUrl, { force: true }); await fs.rm(packDestinationURL, { force: true }); - + spawnSync('pnpm', ['install'], { cwd: fixtureRootURL, shell: true }); - + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); From a6c750c07b321decb2ebd4ed0fc48fcdad9e0ecb Mon Sep 17 00:00:00 2001 From: Roman Date: Sun, 14 Sep 2025 07:46:37 +0100 Subject: [PATCH 13/50] bump devalue (#14346) * bump devalue https://github.com/withastro/astro/pull/14272 * should work now --- packages/astro/package.json | 2 +- packages/integrations/cloudflare/package.json | 2 +- packages/integrations/markdoc/package.json | 2 +- packages/integrations/netlify/package.json | 2 +- packages/integrations/node/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index 85ec3394f125..c13ef9506e13 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -133,7 +133,7 @@ "cssesc": "^3.0.0", "debug": "^4.4.1", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.1.1", + "devalue": "^5.3.2", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", diff --git a/packages/integrations/cloudflare/package.json b/packages/integrations/cloudflare/package.json index c23055607967..56d54a73a039 100644 --- a/packages/integrations/cloudflare/package.json +++ b/packages/integrations/cloudflare/package.json @@ -50,7 +50,7 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.1.2", - "devalue": "^5.1.1", + "devalue": "^5.3.2", "execa": "^8.0.1", "rollup": "^4.50.0" }, diff --git a/packages/integrations/markdoc/package.json b/packages/integrations/markdoc/package.json index d58b100c63ea..ebaedd0eca30 100644 --- a/packages/integrations/markdoc/package.json +++ b/packages/integrations/markdoc/package.json @@ -77,7 +77,7 @@ "@types/markdown-it": "^14.1.2", "astro": "workspace:*", "astro-scripts": "workspace:*", - "devalue": "^5.1.1", + "devalue": "^5.3.2", "linkedom": "^0.18.12", "vite": "^6.3.6" }, diff --git a/packages/integrations/netlify/package.json b/packages/integrations/netlify/package.json index 1704e90de4b6..8a87fcd60167 100644 --- a/packages/integrations/netlify/package.json +++ b/packages/integrations/netlify/package.json @@ -57,7 +57,7 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.1.2", - "devalue": "^5.1.1", + "devalue": "^5.3.2", "typescript": "^5.9.2" }, "astro": { diff --git a/packages/integrations/node/package.json b/packages/integrations/node/package.json index 0cd962b62fb4..1284e837c38e 100644 --- a/packages/integrations/node/package.json +++ b/packages/integrations/node/package.json @@ -47,7 +47,7 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.1.2", - "devalue": "^5.1.1", + "devalue": "^5.3.2", "express": "^4.21.2", "node-mocks-http": "^1.17.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fbfb2fdb6c6..d49068a07a56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -525,7 +525,7 @@ importers: specifier: ^2.0.2 version: 2.0.2 devalue: - specifier: ^5.1.1 + specifier: ^5.3.2 version: 5.3.2 diff: specifier: ^5.2.0 @@ -4792,7 +4792,7 @@ importers: specifier: 1.1.2 version: 1.1.2 devalue: - specifier: ^5.1.1 + specifier: ^5.3.2 version: 5.3.2 execa: specifier: ^8.0.1 @@ -4991,7 +4991,7 @@ importers: specifier: workspace:* version: link:../../../scripts devalue: - specifier: ^5.1.1 + specifier: ^5.3.2 version: 5.3.2 linkedom: specifier: ^0.18.12 @@ -5455,7 +5455,7 @@ importers: specifier: 1.1.2 version: 1.1.2 devalue: - specifier: ^5.1.1 + specifier: ^5.3.2 version: 5.3.2 typescript: specifier: ^5.9.2 @@ -5565,7 +5565,7 @@ importers: specifier: 1.1.2 version: 1.1.2 devalue: - specifier: ^5.1.1 + specifier: ^5.3.2 version: 5.3.2 express: specifier: ^4.21.2 From 9e4ca3356921efa3e67b6b1acb4b9c240a1528f8 Mon Sep 17 00:00:00 2001 From: Louis Escher <66965600+louisescher@users.noreply.github.com> Date: Sun, 14 Sep 2025 09:10:44 +0200 Subject: [PATCH 14/50] fix: Read in package versions for CLI tests (#14354) * fix: Read in package versions for CLI tests instead of hard-coding them * fix: Lockfile --- packages/astro/test/cli.test.js | 38 ++++++++++++------- .../fixtures/astro-info-versions/package.json | 2 +- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/packages/astro/test/cli.test.js b/packages/astro/test/cli.test.js index 770ea842893d..36f04bed5fa6 100644 --- a/packages/astro/test/cli.test.js +++ b/packages/astro/test/cli.test.js @@ -108,9 +108,13 @@ describe('astro cli', () => { const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - const version = await fs + const packageJSON = await fs .readFile(fileURLToPath(projectPackageJSONUrl)) - .then((json) => JSON.parse(json).dependencies.vite); + .then((json) => JSON.parse(json)); + + const viteVersion = packageJSON.dependencies.vite; + const adapterVersion = packageJSON.dependencies["@astrojs/node"]; + const integrationVersion = packageJSON.dependencies["@astrojs/react"]; const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { cwd: projectRootURL, @@ -118,18 +122,22 @@ describe('astro cli', () => { shell: true, }); - assert.equal(proc.stdout.includes(`v${version}`), true); - assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); - assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); + assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); + assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); }); it('astro info shows correct Vite and integration versions when using npm', async () => { const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - - const version = await fs + + const packageJSON = await fs .readFile(fileURLToPath(projectPackageJSONUrl)) - .then((json) => JSON.parse(json).dependencies.vite); + .then((json) => JSON.parse(json)); + + const viteVersion = packageJSON.dependencies.vite; + const adapterVersion = packageJSON.dependencies["@astrojs/node"]; + const integrationVersion = packageJSON.dependencies["@astrojs/react"]; const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { cwd: projectRootURL, @@ -137,9 +145,9 @@ describe('astro cli', () => { shell: true, }); - assert.equal(proc.stdout.includes(`v${version}`), true); - assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); - assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); + assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); + assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); }); it('astro info shows correct Vite and integration versions when using yarn', async () => { @@ -165,6 +173,8 @@ describe('astro cli', () => { packageJSON.packageManager = 'yarn@4.9.4'; const viteVersion = packageJSON.dependencies.vite; + const adapterVersion = packageJSON.dependencies["@astrojs/node"]; + const integrationVersion = packageJSON.dependencies["@astrojs/react"]; await fs.writeFile(fileURLToPath(packageJSONUrl), JSON.stringify(packageJSON), { encoding: 'utf-8', @@ -179,6 +189,7 @@ describe('astro cli', () => { encoding: 'utf-8', shell: true, }); + spawnSync('corepack', ['yarn', 'add', packFileName], { cwd: fixtureRootURL, encoding: 'utf-8', @@ -194,6 +205,7 @@ describe('astro cli', () => { // Reset changes to package.json delete packageJSON.packageManager; packageJSON.dependencies.astro = 'workspace:*'; + await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: 'utf-8' }); await fs.rm(yarnLockUrl, { force: true }); await fs.rm(packDestinationURL, { force: true }); @@ -201,8 +213,8 @@ describe('astro cli', () => { spawnSync('pnpm', ['install'], { cwd: fixtureRootURL, shell: true }); assert.equal(proc.stdout.includes(`v${viteVersion}`), true); - assert.equal(proc.stdout.includes('@astrojs/node (v9.4.0)'), true); - assert.equal(proc.stdout.includes('@astrojs/react (v4.3.0)'), true); + assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); + assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); }); it( diff --git a/packages/astro/test/fixtures/astro-info-versions/package.json b/packages/astro/test/fixtures/astro-info-versions/package.json index 5533ee673390..a11f4229d580 100644 --- a/packages/astro/test/fixtures/astro-info-versions/package.json +++ b/packages/astro/test/fixtures/astro-info-versions/package.json @@ -15,4 +15,4 @@ "scripts": { "astro": "astro" } -} \ No newline at end of file +} From f1ad06663f5f5c983f1ccdf03a706495508ff136 Mon Sep 17 00:00:00 2001 From: Louis Escher Date: Sun, 14 Sep 2025 07:11:22 +0000 Subject: [PATCH 15/50] [ci] format --- packages/astro/test/cli.test.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/astro/test/cli.test.js b/packages/astro/test/cli.test.js index 36f04bed5fa6..fca1d5368357 100644 --- a/packages/astro/test/cli.test.js +++ b/packages/astro/test/cli.test.js @@ -111,10 +111,10 @@ describe('astro cli', () => { const packageJSON = await fs .readFile(fileURLToPath(projectPackageJSONUrl)) .then((json) => JSON.parse(json)); - + const viteVersion = packageJSON.dependencies.vite; - const adapterVersion = packageJSON.dependencies["@astrojs/node"]; - const integrationVersion = packageJSON.dependencies["@astrojs/react"]; + const adapterVersion = packageJSON.dependencies['@astrojs/node']; + const integrationVersion = packageJSON.dependencies['@astrojs/react']; const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { cwd: projectRootURL, @@ -130,14 +130,14 @@ describe('astro cli', () => { it('astro info shows correct Vite and integration versions when using npm', async () => { const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - + const packageJSON = await fs .readFile(fileURLToPath(projectPackageJSONUrl)) .then((json) => JSON.parse(json)); - + const viteVersion = packageJSON.dependencies.vite; - const adapterVersion = packageJSON.dependencies["@astrojs/node"]; - const integrationVersion = packageJSON.dependencies["@astrojs/react"]; + const adapterVersion = packageJSON.dependencies['@astrojs/node']; + const integrationVersion = packageJSON.dependencies['@astrojs/react']; const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { cwd: projectRootURL, @@ -173,8 +173,8 @@ describe('astro cli', () => { packageJSON.packageManager = 'yarn@4.9.4'; const viteVersion = packageJSON.dependencies.vite; - const adapterVersion = packageJSON.dependencies["@astrojs/node"]; - const integrationVersion = packageJSON.dependencies["@astrojs/react"]; + const adapterVersion = packageJSON.dependencies['@astrojs/node']; + const integrationVersion = packageJSON.dependencies['@astrojs/react']; await fs.writeFile(fileURLToPath(packageJSONUrl), JSON.stringify(packageJSON), { encoding: 'utf-8', @@ -189,7 +189,7 @@ describe('astro cli', () => { encoding: 'utf-8', shell: true, }); - + spawnSync('corepack', ['yarn', 'add', packFileName], { cwd: fixtureRootURL, encoding: 'utf-8', @@ -205,7 +205,7 @@ describe('astro cli', () => { // Reset changes to package.json delete packageJSON.packageManager; packageJSON.dependencies.astro = 'workspace:*'; - + await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: 'utf-8' }); await fs.rm(yarnLockUrl, { force: true }); await fs.rm(packDestinationURL, { force: true }); From 46f6ab587878f22dff5d376a4507e64a26672165 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 10:00:32 +0200 Subject: [PATCH 16/50] fix(deps): update all non-major dependencies (#14355) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/framework-alpine/package.json | 2 +- examples/framework-multiple/package.json | 4 +- examples/framework-preact/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/ssr/package.json | 2 +- examples/starlog/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 4 +- package.json | 8 +- packages/db/package.json | 2 +- .../test/fixtures/basics/package.json | 2 +- .../test/fixtures/directive/package.json | 2 +- .../plugin-script-import/package.json | 2 +- .../render-with-components/package.json | 2 +- packages/telemetry/package.json | 2 +- packages/upgrade/package.json | 2 +- pnpm-lock.yaml | 339 +++++++++--------- scripts/package.json | 2 +- 19 files changed, 193 insertions(+), 192 deletions(-) diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index 68b3cd525040..f3e4c587ac32 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/alpinejs": "^0.4.9", "@types/alpinejs": "^3.13.11", - "alpinejs": "^3.14.9", + "alpinejs": "^3.15.0", "astro": "^5.13.7" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index a25f3db2fce9..643ea15f4ff5 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -18,11 +18,11 @@ "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", "astro": "^5.13.7", - "preact": "^10.27.1", + "preact": "^10.27.2", "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.9", - "svelte": "^5.38.6", + "svelte": "^5.38.10", "vue": "^3.5.21" } } diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 32e74418c591..f39df669af2d 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,6 +13,6 @@ "@astrojs/preact": "^4.1.1", "@preact/signals": "^2.3.1", "astro": "^5.13.7", - "preact": "^10.27.1" + "preact": "^10.27.2" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index dc77a661a988..71c41058f061 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,6 +12,6 @@ "dependencies": { "@astrojs/svelte": "^7.1.1", "astro": "^5.13.7", - "svelte": "^5.38.6" + "svelte": "^5.38.10" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 527664db804f..bf2fdbd8203a 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,6 +14,6 @@ "@astrojs/node": "^9.4.3", "@astrojs/svelte": "^7.1.1", "astro": "^5.13.7", - "svelte": "^5.38.6" + "svelte": "^5.38.10" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index 98a2bbbf2ffa..b3b3c202027e 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "astro": "^5.13.7", - "sass": "^1.92.0", + "sass": "^1.92.1", "sharp": "^0.34.3" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index d8dc9d28cf58..b99d3d2bcf96 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -13,6 +13,6 @@ "@astrojs/mdx": "^4.3.5", "@astrojs/preact": "^4.1.1", "astro": "^5.13.7", - "preact": "^10.27.1" + "preact": "^10.27.2" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 5eafaa91c9da..4664d35c0b99 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -14,6 +14,6 @@ "@nanostores/preact": "^0.5.2", "astro": "^5.13.7", "nanostores": "^0.11.4", - "preact": "^10.27.1" + "preact": "^10.27.2" } } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index dea8ffceb759..3cdf747c45f6 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -11,10 +11,10 @@ }, "dependencies": { "@astrojs/mdx": "^4.3.5", - "@tailwindcss/vite": "^4.1.12", + "@tailwindcss/vite": "^4.1.13", "@types/canvas-confetti": "^1.9.0", "astro": "^5.13.7", "canvas-confetti": "^1.9.3", - "tailwindcss": "^4.1.12" + "tailwindcss": "^4.1.13" } } diff --git a/package.json b/package.json index 69dd56259d44..a12e472bd121 100644 --- a/package.json +++ b/package.json @@ -60,20 +60,20 @@ "@astrojs/check": "^0.9.4", "@biomejs/biome": "2.2.4", "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.6", + "@changesets/cli": "^2.29.7", "@types/node": "^18.19.115", "esbuild": "0.25.5", - "eslint": "^9.34.0", + "eslint": "^9.35.0", "eslint-plugin-regexp": "^2.10.0", "knip": "5.61.3", "only-allow": "^1.2.1", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", "publint": "^0.3.12", - "tinyglobby": "^0.2.14", + "tinyglobby": "^0.2.15", "turbo": "^2.5.6", "typescript": "~5.9.2", - "typescript-eslint": "^8.42.0" + "typescript-eslint": "^8.43.0" }, "pnpm": { "peerDependencyRules": { diff --git a/packages/db/package.json b/packages/db/package.json index 42a888265b9f..f5a3a6c5069d 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -72,7 +72,7 @@ "test:types": "tsc --project test/types/tsconfig.json" }, "dependencies": { - "@libsql/client": "^0.15.14", + "@libsql/client": "^0.15.15", "deep-diff": "^1.0.2", "drizzle-orm": "^0.42.0", "kleur": "^4.1.5", diff --git a/packages/integrations/alpinejs/test/fixtures/basics/package.json b/packages/integrations/alpinejs/test/fixtures/basics/package.json index 6723712feea1..d664505d5379 100644 --- a/packages/integrations/alpinejs/test/fixtures/basics/package.json +++ b/packages/integrations/alpinejs/test/fixtures/basics/package.json @@ -5,7 +5,7 @@ "dependencies": { "@astrojs/alpinejs": "workspace:*", "@types/alpinejs": "^3.13.11", - "alpinejs": "^3.14.9", + "alpinejs": "^3.15.0", "astro": "workspace:*" } } diff --git a/packages/integrations/alpinejs/test/fixtures/directive/package.json b/packages/integrations/alpinejs/test/fixtures/directive/package.json index 8b4404f33b84..fcf0aa11dc9c 100644 --- a/packages/integrations/alpinejs/test/fixtures/directive/package.json +++ b/packages/integrations/alpinejs/test/fixtures/directive/package.json @@ -5,7 +5,7 @@ "dependencies": { "@astrojs/alpinejs": "workspace:*", "@types/alpinejs": "^3.13.11", - "alpinejs": "^3.14.9", + "alpinejs": "^3.15.0", "astro": "workspace:*" } } diff --git a/packages/integrations/alpinejs/test/fixtures/plugin-script-import/package.json b/packages/integrations/alpinejs/test/fixtures/plugin-script-import/package.json index 2fe4f6eeeef3..ab21673fdc00 100644 --- a/packages/integrations/alpinejs/test/fixtures/plugin-script-import/package.json +++ b/packages/integrations/alpinejs/test/fixtures/plugin-script-import/package.json @@ -5,7 +5,7 @@ "dependencies": { "@astrojs/alpinejs": "workspace:*", "@types/alpinejs": "^3.13.11", - "alpinejs": "^3.14.9", + "alpinejs": "^3.15.0", "astro": "workspace:*" } } 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 650c4e3e29f6..523cb5742b1b 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.27.1" + "preact": "^10.27.2" } } diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 0e75667b6400..4c4ebc6acd73 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -30,7 +30,7 @@ ], "dependencies": { "ci-info": "^4.3.0", - "debug": "^4.4.1", + "debug": "^4.4.3", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", diff --git a/packages/upgrade/package.json b/packages/upgrade/package.json index 8bddebccbc6b..a42727f0c895 100644 --- a/packages/upgrade/package.json +++ b/packages/upgrade/package.json @@ -35,7 +35,7 @@ "terminal-link": "^4.0.0" }, "devDependencies": { - "@types/semver": "^7.7.0", + "@types/semver": "^7.7.1", "arg": "^5.0.2", "astro-scripts": "workspace:*" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d49068a07a56..0932c2775ceb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,7 +26,7 @@ importers: specifier: ^0.5.1 version: 0.5.1 '@changesets/cli': - specifier: ^2.29.6 + specifier: ^2.29.7 version: 2.29.7(@types/node@18.19.124) '@types/node': specifier: ^18.19.115 @@ -35,7 +35,7 @@ importers: specifier: 0.25.5 version: 0.25.5 eslint: - specifier: ^9.34.0 + specifier: ^9.35.0 version: 9.35.0(jiti@2.5.1) eslint-plugin-regexp: specifier: ^2.10.0 @@ -56,7 +56,7 @@ importers: specifier: ^0.3.12 version: 0.3.12 tinyglobby: - specifier: ^0.2.14 + specifier: ^0.2.15 version: 0.2.15 turbo: specifier: ^2.5.6 @@ -65,7 +65,7 @@ importers: specifier: ~5.9.2 version: 5.9.2 typescript-eslint: - specifier: ^8.42.0 + specifier: ^8.43.0 version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) benchmark: @@ -210,7 +210,7 @@ importers: specifier: ^3.13.11 version: 3.13.11 alpinejs: - specifier: ^3.14.9 + specifier: ^3.15.0 version: 3.15.0 astro: specifier: ^5.13.7 @@ -243,8 +243,8 @@ importers: specifier: ^5.13.7 version: link:../../packages/astro preact: - specifier: ^10.27.1 - version: 10.27.1 + specifier: ^10.27.2 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -255,8 +255,8 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 - version: 5.38.7 + specifier: ^5.38.10 + version: 5.38.10 vue: specifier: ^3.5.21 version: 3.5.21(typescript@5.9.2) @@ -268,13 +268,13 @@ importers: version: link:../../packages/integrations/preact '@preact/signals': specifier: ^2.3.1 - version: 2.3.1(preact@10.27.1) + version: 2.3.1(preact@10.27.2) astro: specifier: ^5.13.7 version: link:../../packages/astro preact: - specifier: ^10.27.1 - version: 10.27.1 + specifier: ^10.27.2 + version: 10.27.2 examples/framework-react: dependencies: @@ -318,8 +318,8 @@ importers: specifier: ^5.13.7 version: link:../../packages/astro svelte: - specifier: ^5.38.6 - version: 5.38.7 + specifier: ^5.38.10 + version: 5.38.10 examples/framework-vue: dependencies: @@ -372,8 +372,8 @@ importers: specifier: ^5.13.7 version: link:../../packages/astro svelte: - specifier: ^5.38.6 - version: 5.38.7 + specifier: ^5.38.10 + version: 5.38.10 examples/starlog: dependencies: @@ -381,7 +381,7 @@ importers: specifier: ^5.13.7 version: link:../../packages/astro sass: - specifier: ^1.92.0 + specifier: ^1.92.1 version: 1.92.1 sharp: specifier: ^0.34.3 @@ -417,8 +417,8 @@ importers: specifier: ^5.13.7 version: link:../../packages/astro preact: - specifier: ^10.27.1 - version: 10.27.1 + specifier: ^10.27.2 + version: 10.27.2 examples/with-nanostores: dependencies: @@ -427,7 +427,7 @@ importers: version: link:../../packages/integrations/preact '@nanostores/preact': specifier: ^0.5.2 - version: 0.5.2(nanostores@0.11.4)(preact@10.27.1) + version: 0.5.2(nanostores@0.11.4)(preact@10.27.2) astro: specifier: ^5.13.7 version: link:../../packages/astro @@ -435,8 +435,8 @@ importers: specifier: ^0.11.4 version: 0.11.4 preact: - specifier: ^10.27.1 - version: 10.27.1 + specifier: ^10.27.2 + version: 10.27.2 examples/with-tailwindcss: dependencies: @@ -444,7 +444,7 @@ importers: specifier: ^4.3.5 version: link:../../packages/integrations/mdx '@tailwindcss/vite': - specifier: ^4.1.12 + specifier: ^4.1.13 version: 4.1.13(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@types/canvas-confetti': specifier: ^1.9.0 @@ -456,7 +456,7 @@ importers: specifier: ^1.9.3 version: 1.9.3 tailwindcss: - specifier: ^4.1.12 + specifier: ^4.1.13 version: 4.1.13 examples/with-vitest: @@ -520,7 +520,7 @@ importers: version: 3.0.0 debug: specifier: ^4.4.1 - version: 4.4.1 + version: 4.4.3 deterministic-object-hash: specifier: ^2.0.2 version: 2.0.2 @@ -890,7 +890,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/astro-envs: dependencies: @@ -924,7 +924,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -936,7 +936,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1021,7 +1021,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/error-cyclic: dependencies: @@ -1033,7 +1033,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/error-sass: dependencies: @@ -1066,7 +1066,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1081,7 +1081,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1105,7 +1105,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/i18n: dependencies: @@ -1126,7 +1126,7 @@ importers: version: 3.3.1 preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1138,7 +1138,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1166,7 +1166,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -1182,7 +1182,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1194,7 +1194,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1222,7 +1222,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1234,7 +1234,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1262,7 +1262,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1274,7 +1274,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1302,7 +1302,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1314,7 +1314,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1342,7 +1342,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1354,7 +1354,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1382,7 +1382,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -1394,7 +1394,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1450,7 +1450,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/preact-component: dependencies: @@ -1465,7 +1465,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/preact-lazy-component: dependencies: @@ -1480,7 +1480,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/e2e/fixtures/prefetch: dependencies: @@ -1590,7 +1590,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1650,7 +1650,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1794,7 +1794,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1815,7 +1815,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1830,7 +1830,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1842,7 +1842,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: dependencies: @@ -1934,7 +1934,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/astro-check-errors: dependencies: @@ -1970,10 +1970,10 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2006,7 +2006,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2098,7 +2098,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/astro-env: dependencies: @@ -2152,7 +2152,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/astro-external-files: dependencies: @@ -2170,7 +2170,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/astro-generator: dependencies: @@ -2431,7 +2431,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/astro-slots: dependencies: @@ -2461,7 +2461,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -2473,7 +2473,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2488,7 +2488,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/build-assets: dependencies: @@ -2500,7 +2500,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/build-concurrency: dependencies: @@ -2554,7 +2554,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -2563,13 +2563,13 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/component-library-shared: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -2750,7 +2750,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/content-layer-remark-plugins: dependencies: @@ -2923,7 +2923,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/css-import-as-inline: dependencies: @@ -3160,7 +3160,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/error-bad-js: dependencies: @@ -3208,10 +3208,10 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3304,7 +3304,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/i18n-double-prefix: dependencies: @@ -3442,7 +3442,7 @@ importers: dependencies: preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -3454,7 +3454,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3672,7 +3672,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3694,7 +3694,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/preact-compat-component/packages/react-lib: dependencies: @@ -3709,13 +3709,13 @@ importers: version: link:../../../../integrations/preact '@preact/signals': specifier: 2.3.1 - version: 2.3.1(preact@10.27.1) + version: 2.3.1(preact@10.27.2) astro: specifier: workspace:* version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/public-base-404: dependencies: @@ -3782,7 +3782,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/remote-css: dependencies: @@ -3896,7 +3896,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/server-islands/ssr: dependencies: @@ -3911,7 +3911,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/sessions: dependencies: @@ -3938,7 +3938,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/slots-react: dependencies: @@ -3986,7 +3986,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/slots-vue: dependencies: @@ -4097,7 +4097,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/ssr-error: dependencies: @@ -4216,7 +4216,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/ssr-split-manifest: dependencies: @@ -4246,7 +4246,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/astro/test/fixtures/static-build-code-component: dependencies: @@ -4273,7 +4273,7 @@ importers: version: link:../../.. preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -4332,7 +4332,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/astro/test/fixtures/svg-deduplication: dependencies: @@ -4455,7 +4455,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -4508,7 +4508,7 @@ importers: packages/db: dependencies: '@libsql/client': - specifier: ^0.15.14 + specifier: ^0.15.15 version: 0.15.15 deep-diff: specifier: ^1.0.2 @@ -4725,7 +4725,7 @@ importers: specifier: ^3.13.11 version: 3.13.11 alpinejs: - specifier: ^3.14.9 + specifier: ^3.15.0 version: 3.15.0 astro: specifier: workspace:* @@ -4740,7 +4740,7 @@ importers: specifier: ^3.13.11 version: 3.13.11 alpinejs: - specifier: ^3.14.9 + specifier: ^3.15.0 version: 3.15.0 astro: specifier: workspace:* @@ -4755,7 +4755,7 @@ importers: specifier: ^3.13.11 version: 3.13.11 alpinejs: - specifier: ^3.14.9 + specifier: ^3.15.0 version: 3.15.0 astro: specifier: workspace:* @@ -4931,7 +4931,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.38.6 - version: 5.38.7 + version: 5.38.10 packages/integrations/cloudflare/test/fixtures/with-vue: dependencies: @@ -5120,8 +5120,8 @@ importers: specifier: workspace:* version: link:../../../../../astro preact: - specifier: ^10.27.1 - version: 10.27.1 + specifier: ^10.27.2 + version: 10.27.2 packages/integrations/markdoc/test/fixtures/render-with-config: dependencies: @@ -5323,7 +5323,7 @@ importers: version: link:../../../../../astro preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/integrations/mdx/test/fixtures/mdx-namespace: dependencies: @@ -5747,13 +5747,13 @@ importers: dependencies: '@preact/preset-vite': specifier: ^2.10.2 - version: 2.10.2(@babel/core@7.28.4)(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@preact/signals': specifier: ^2.3.1 - version: 2.3.1(preact@10.27.1) + version: 2.3.1(preact@10.27.2) preact-render-to-string: specifier: ^6.6.1 - version: 6.6.1(preact@10.27.1) + version: 6.6.1(preact@10.27.2) vite: specifier: ^6.3.6 version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) @@ -5766,7 +5766,7 @@ importers: version: link:../../../scripts preact: specifier: ^10.27.1 - version: 10.27.1 + version: 10.27.2 packages/integrations/react: dependencies: @@ -5907,10 +5907,10 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 - version: 5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + version: 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) svelte2tsx: specifier: ^0.7.42 - version: 0.7.42(svelte@5.38.7)(typescript@5.9.2) + version: 0.7.42(svelte@5.38.10)(typescript@5.9.2) vite: specifier: ^6.3.6 version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) @@ -5923,7 +5923,7 @@ importers: version: link:../../../scripts svelte: specifier: ^5.38.7 - version: 5.38.7 + version: 5.38.10 packages/integrations/vercel: dependencies: @@ -5932,7 +5932,7 @@ importers: version: link:../../internal-helpers '@vercel/analytics': specifier: ^1.5.0 - version: 1.5.0(react@19.1.1)(svelte@5.38.7)(vue@3.5.21(typescript@5.9.2)) + version: 1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2)) '@vercel/functions': specifier: ^2.2.13 version: 2.2.13 @@ -6360,8 +6360,8 @@ importers: specifier: ^4.3.0 version: 4.3.0 debug: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 dlv: specifier: ^1.1.3 version: 1.1.3 @@ -6419,7 +6419,7 @@ importers: version: 4.0.0 devDependencies: '@types/semver': - specifier: ^7.7.0 + specifier: ^7.7.1 version: 7.7.1 arg: specifier: ^5.0.2 @@ -6440,7 +6440,7 @@ importers: specifier: ^6.2.0 version: 6.2.0 tinyglobby: - specifier: ^0.2.14 + specifier: ^0.2.15 version: 0.2.15 tsconfck: specifier: ^3.1.6 @@ -10048,8 +10048,8 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -11354,6 +11354,7 @@ packages: libsql@0.5.22: resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} + cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] lightningcss-darwin-arm64@1.30.1: @@ -12486,8 +12487,8 @@ packages: peerDependencies: preact: '>=10 || >= 11.0.0-0' - preact@10.27.1: - resolution: {integrity: sha512-V79raXEWch/rbqoNc7nT9E4ep7lu+mI3+sBmfRD4i1M73R3WLYcCtdI0ibxGVf4eQL8ZIz2nFacqEC+rmnOORQ==} + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} precinct@12.2.0: resolution: {integrity: sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w==} @@ -13207,8 +13208,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.38.7: - resolution: {integrity: sha512-1ld9TPZSdUS3EtYGQzisU2nhwXoIzNQcZ71IOU9fEmltaUofQnVfW5CQuhgM/zFsZ43arZXS1BRKi0MYgUV91w==} + svelte@5.38.10: + resolution: {integrity: sha512-UY+OhrWK7WI22bCZ00P/M3HtyWgwJPi9IxSRkoAE2MeAy6kl7ZlZWJZ8RaB+X4KD/G+wjis+cGVnVYaoqbzBqg==} engines: {node: '>=18'} svgo@3.3.2: @@ -14297,7 +14298,7 @@ snapshots: '@babel/types': 7.28.4 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -14492,7 +14493,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -15423,7 +15424,7 @@ snapshots: '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -15437,7 +15438,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -15823,10 +15824,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@nanostores/preact@0.5.2(nanostores@0.11.4)(preact@10.27.1)': + '@nanostores/preact@0.5.2(nanostores@0.11.4)(preact@10.27.2)': dependencies: nanostores: 0.11.4 - preact: 10.27.1 + preact: 10.27.2 '@napi-rs/wasm-runtime@1.0.3': dependencies: @@ -16278,15 +16279,15 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) - '@prefresh/vite': 2.4.10(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@prefresh/vite': 2.4.10(preact@10.27.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.4) - debug: 4.4.1 + debug: 4.4.3 picocolors: 1.1.1 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vite-prerender-plugin: 0.5.12(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) @@ -16296,27 +16297,27 @@ snapshots: '@preact/signals-core@1.12.1': {} - '@preact/signals@2.3.1(preact@10.27.1)': + '@preact/signals@2.3.1(preact@10.27.2)': dependencies: '@preact/signals-core': 1.12.1 - preact: 10.27.1 + preact: 10.27.2 '@prefresh/babel-plugin@0.5.2': {} - '@prefresh/core@1.5.7(preact@10.27.1)': + '@prefresh/core@1.5.7(preact@10.27.2)': dependencies: - preact: 10.27.1 + preact: 10.27.2 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.10(preact@10.27.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@prefresh/vite@2.4.10(preact@10.27.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@prefresh/babel-plugin': 0.5.2 - '@prefresh/core': 1.5.7(preact@10.27.1) + '@prefresh/core': 1.5.7(preact@10.27.2) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.27.1 + preact: 10.27.2 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -16452,23 +16453,23 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) - debug: 4.4.1 - svelte: 5.38.7 + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + debug: 4.4.3 + svelte: 5.38.10 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.7)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) - debug: 4.4.1 + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.19 - svelte: 5.38.7 + svelte: 5.38.10 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: @@ -16770,7 +16771,7 @@ snapshots: '@typescript-eslint/types': 8.43.0 '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.43.0 - debug: 4.4.1 + debug: 4.4.3 eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: @@ -16780,7 +16781,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) '@typescript-eslint/types': 8.43.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -16799,7 +16800,7 @@ snapshots: '@typescript-eslint/types': 8.43.0 '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.35.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -16814,7 +16815,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) '@typescript-eslint/types': 8.43.0 '@typescript-eslint/visitor-keys': 8.43.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -16843,29 +16844,29 @@ snapshots: '@typescript/twoslash@3.1.0': dependencies: '@typescript/vfs': 1.3.5 - debug: 4.4.1 + debug: 4.4.3 lz-string: 1.5.0 transitivePeerDependencies: - supports-color '@typescript/vfs@1.3.4': dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color '@typescript/vfs@1.3.5': dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color '@ungap/structured-clone@1.3.0': {} - '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.38.7)(vue@3.5.21(typescript@5.9.2))': + '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))': optionalDependencies: react: 19.1.1 - svelte: 5.38.7 + svelte: 5.38.10 vue: 3.5.21(typescript@5.9.2) '@vercel/functions@2.2.13': @@ -17865,7 +17866,7 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -18297,7 +18298,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -18467,7 +18468,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -18992,7 +18993,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -20013,7 +20014,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -20759,11 +20760,11 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact-render-to-string@6.6.1(preact@10.27.1): + preact-render-to-string@6.6.1(preact@10.27.2): dependencies: - preact: 10.27.1 + preact: 10.27.2 - preact@10.27.1: {} + preact@10.27.2: {} precinct@12.2.0: dependencies: @@ -21312,7 +21313,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -21697,14 +21698,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.42(svelte@5.38.7)(typescript@5.9.2): + svelte2tsx@0.7.42(svelte@5.38.10)(typescript@5.9.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.38.7 + svelte: 5.38.10 typescript: 5.9.2 - svelte@5.38.7: + svelte@5.38.10: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -22120,7 +22121,7 @@ snapshots: vite-node@3.2.4(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) @@ -22142,7 +22143,7 @@ snapshots: dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.3.0(rollup@4.50.1) - debug: 4.4.1 + debug: 4.4.3 error-stack-parser-es: 0.1.5 fs-extra: 11.3.1 open: 10.2.0 @@ -22244,7 +22245,7 @@ snapshots: '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 - debug: 4.4.1 + debug: 4.4.3 expect-type: 1.2.2 magic-string: 0.30.19 pathe: 2.0.3 diff --git a/scripts/package.json b/scripts/package.json index e17d4fa39b09..c4d181010d81 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -11,7 +11,7 @@ "esbuild": "^0.25.0", "kleur": "^4.1.5", "p-limit": "^6.2.0", - "tinyglobby": "^0.2.14", + "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6" } } From f59581f2d4566c684c587af816e22763440ded19 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 15 Sep 2025 09:12:03 +0100 Subject: [PATCH 17/50] fix: log errors for invalid content config (#14350) * fix: log errors for invalid content config * Changeset changes --- .changeset/kind-snakes-grow.md | 5 +++++ packages/astro/src/content/utils.ts | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .changeset/kind-snakes-grow.md diff --git a/.changeset/kind-snakes-grow.md b/.changeset/kind-snakes-grow.md new file mode 100644 index 000000000000..101928a83552 --- /dev/null +++ b/.changeset/kind-snakes-grow.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Improves error reporting for content collections by adding logging for configuration errors that had previously been silently ignored. Also adds a new error that is thrown if a live collection is used in `content.config.ts` rather than `live.config.ts`. diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 786c0377b4ab..851907d4c3f4 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -3,7 +3,7 @@ import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { parseFrontmatter } from '@astrojs/markdown-remark'; import { slug as githubSlug } from 'github-slugger'; -import { green } from 'kleur/colors'; +import { green, red } from 'kleur/colors'; import type { PluginContext } from 'rollup'; import type { ViteDevServer } from 'vite'; import xxhash from 'xxhash-wasm'; @@ -536,6 +536,26 @@ async function loadContentConfig({ const digest = await hasher.h64ToString(await fs.promises.readFile(configPathname, 'utf-8')); return { ...config.data, digest }; } else { + const message = config.error.issues + .map((issue) => ` → ${green(issue.path.join('.'))}: ${red(issue.message)}`) + .join('\n'); + console.error( + `${green('[content]')} There was a problem with your content config:\n\n${message}\n`, + ); + if (settings.config.experimental.liveContentCollections) { + const liveCollections = Object.entries(unparsedConfig.collections ?? {}).filter( + ([, collection]: [string, any]) => collection?.type === LIVE_CONTENT_TYPE, + ); + if (liveCollections.length > 0) { + throw new AstroError({ + ...AstroErrorData.LiveContentConfigError, + message: AstroErrorData.LiveContentConfigError.message( + 'Live collections must be defined in a `src/live.config.ts` file.', + path.relative(fileURLToPath(settings.config.root), configPathname), + ), + }); + } + } return undefined; } } From 76c397ed723202d371cc603f67a730ff87ef5ac7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 10:56:04 +0200 Subject: [PATCH 18/50] fix(deps): update dependency @astrojs/node to v9.4.1 [security] (#14351) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../test/fixtures/astro-info-versions/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/astro/test/fixtures/astro-info-versions/package.json b/packages/astro/test/fixtures/astro-info-versions/package.json index a11f4229d580..27a3fc99efa2 100644 --- a/packages/astro/test/fixtures/astro-info-versions/package.json +++ b/packages/astro/test/fixtures/astro-info-versions/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "dependencies": { - "@astrojs/node": "9.4.0", + "@astrojs/node": "9.4.1", "@astrojs/react": "4.3.0", "@types/react": "19.1.1", "@types/react-dom": "19.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0932c2775ceb..78233bc9a85b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2199,8 +2199,8 @@ importers: packages/astro/test/fixtures/astro-info-versions: dependencies: '@astrojs/node': - specifier: 9.4.0 - version: 9.4.0(astro@packages+astro) + specifier: 9.4.1 + version: 9.4.1(astro@packages+astro) '@astrojs/react': specifier: 4.3.0 version: 4.3.0(@types/node@22.18.1)(@types/react-dom@19.1.1(@types/react@19.1.1))(@types/react@19.1.1)(jiti@2.5.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1)(yaml@2.8.1) @@ -6513,8 +6513,8 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/node@9.4.0': - resolution: {integrity: sha512-Gxs0iVUvOmQmK+H1DBoabcgvdSDg277SwbujRv2cUBlnpcOTJQDFRhRvyJ7G+Zkd06/jhRphsTTmmrBY0PqI4g==} + '@astrojs/node@9.4.1': + resolution: {integrity: sha512-lpSAQFS4IiCFGQHL/q/1CcX+AmFbma4NOoV5j7Z7Ml2wevyDe/2kAjScKIKk2DA7k/MrXSZ5ZN+IxJgpPbnAOQ==} peerDependencies: astro: ^5.3.0 @@ -14241,7 +14241,7 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/node@9.4.0(astro@packages+astro)': + '@astrojs/node@9.4.1(astro@packages+astro)': dependencies: '@astrojs/internal-helpers': 0.7.1 astro: link:packages/astro From a791684e7a0fb35d71baf3df9dcb087ed721f35a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 11:46:52 +0200 Subject: [PATCH 19/50] fix(deps): update astro adapters (#14356) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/integrations/cloudflare/package.json | 8 +- .../fixtures/astro-dev-platform/package.json | 2 +- .../test/fixtures/astro-env/package.json | 2 +- .../test/fixtures/sessions/package.json | 2 +- .../test/fixtures/with-solid-js/package.json | 2 +- .../test/fixtures/with-svelte/package.json | 4 +- .../test/fixtures/with-vue/package.json | 2 +- packages/integrations/netlify/package.json | 4 +- packages/integrations/vercel/package.json | 2 +- pnpm-lock.yaml | 274 +++++++++--------- 10 files changed, 151 insertions(+), 151 deletions(-) diff --git a/packages/integrations/cloudflare/package.json b/packages/integrations/cloudflare/package.json index 56d54a73a039..a1b19ec9fd69 100644 --- a/packages/integrations/cloudflare/package.json +++ b/packages/integrations/cloudflare/package.json @@ -38,10 +38,10 @@ "dependencies": { "@astrojs/internal-helpers": "workspace:*", "@astrojs/underscore-redirects": "workspace:*", - "@cloudflare/workers-types": "^4.20250903.0", - "tinyglobby": "^0.2.14", + "@cloudflare/workers-types": "^4.20250913.0", + "tinyglobby": "^0.2.15", "vite": "^6.3.6", - "wrangler": "4.33.2" + "wrangler": "4.37.0" }, "peerDependencies": { "astro": "^5.7.0" @@ -52,7 +52,7 @@ "cheerio": "1.1.2", "devalue": "^5.3.2", "execa": "^8.0.1", - "rollup": "^4.50.0" + "rollup": "^4.50.2" }, "publishConfig": { "provenance": true 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 af9efeb838fe..ee9d39773630 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.33.2" + "wrangler": "4.37.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/astro-env/package.json b/packages/integrations/cloudflare/test/fixtures/astro-env/package.json index 6ad7fec641dc..57c578e0eaba 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.33.2" + "wrangler": "4.37.0" } } diff --git a/packages/integrations/cloudflare/test/fixtures/sessions/package.json b/packages/integrations/cloudflare/test/fixtures/sessions/package.json index 4c299f0e0034..28e604e7e58b 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.33.2" + "wrangler": "4.37.0" }, "scripts": { "build": "astro build", diff --git a/packages/integrations/cloudflare/test/fixtures/with-solid-js/package.json b/packages/integrations/cloudflare/test/fixtures/with-solid-js/package.json index 70eeb8b2ce4f..bf33839b0419 100644 --- a/packages/integrations/cloudflare/test/fixtures/with-solid-js/package.json +++ b/packages/integrations/cloudflare/test/fixtures/with-solid-js/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@astrojs/cloudflare": "workspace:*", - "@astrojs/solid-js": "^5.1.0", + "@astrojs/solid-js": "^5.1.1", "astro": "workspace:*", "solid-js": "^1.9.9" } diff --git a/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json b/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json index bed8567df0c1..522ebf63a274 100644 --- a/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json +++ b/packages/integrations/cloudflare/test/fixtures/with-svelte/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "@astrojs/cloudflare": "workspace:*", - "@astrojs/svelte": "^7.1.0", + "@astrojs/svelte": "^7.1.1", "astro": "workspace:*", - "svelte": "^5.38.6" + "svelte": "^5.38.10" } } diff --git a/packages/integrations/cloudflare/test/fixtures/with-vue/package.json b/packages/integrations/cloudflare/test/fixtures/with-vue/package.json index 35e2aad0bd10..a4d8da9abf98 100644 --- a/packages/integrations/cloudflare/test/fixtures/with-vue/package.json +++ b/packages/integrations/cloudflare/test/fixtures/with-vue/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@astrojs/cloudflare": "workspace:*", - "@astrojs/vue": "^5.1.0", + "@astrojs/vue": "^5.1.1", "astro": "workspace:*", "vue": "^3.5.21" } diff --git a/packages/integrations/netlify/package.json b/packages/integrations/netlify/package.json index 8a87fcd60167..0e9eac8c40d1 100644 --- a/packages/integrations/netlify/package.json +++ b/packages/integrations/netlify/package.json @@ -43,10 +43,10 @@ "@astrojs/underscore-redirects": "workspace:*", "@netlify/blobs": "^10.0.10", "@netlify/functions": "^4.2.5", - "@netlify/vite-plugin": "^2.5.8", + "@netlify/vite-plugin": "^2.5.9", "@vercel/nft": "^0.30.1", "esbuild": "^0.25.0", - "tinyglobby": "^0.2.14", + "tinyglobby": "^0.2.15", "vite": "^6.3.6" }, "peerDependencies": { diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index af1addd58e8b..4c8d18ac7c61 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -54,7 +54,7 @@ "@vercel/nft": "^0.30.1", "@vercel/routing-utils": "^5.1.1", "esbuild": "^0.25.0", - "tinyglobby": "^0.2.14" + "tinyglobby": "^0.2.15" }, "peerDependencies": { "astro": "^5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78233bc9a85b..f12c99f211bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -490,7 +490,7 @@ importers: version: 1.1.0 '@rollup/pluginutils': specifier: ^5.2.0 - version: 5.3.0(rollup@4.50.1) + version: 5.3.0(rollup@4.50.2) acorn: specifier: ^8.15.0 version: 8.15.0 @@ -749,7 +749,7 @@ importers: version: 0.1.2 rollup: specifier: ^4.50.0 - version: 4.50.1 + version: 4.50.2 sass: specifier: ^1.91.0 version: 1.92.1 @@ -4515,7 +4515,7 @@ importers: version: 1.0.2 drizzle-orm: specifier: ^0.42.0 - version: 0.42.0(@cloudflare/workers-types@4.20250909.0)(@libsql/client@0.15.15) + version: 0.42.0(@cloudflare/workers-types@4.20250913.0)(@libsql/client@0.15.15) kleur: specifier: ^4.1.5 version: 4.1.5 @@ -4770,17 +4770,17 @@ importers: specifier: workspace:* version: link:../../underscore-redirects '@cloudflare/workers-types': - specifier: ^4.20250903.0 - version: 4.20250909.0 + specifier: ^4.20250913.0 + version: 4.20250913.0 tinyglobby: - specifier: ^0.2.14 + specifier: ^0.2.15 version: 0.2.15 vite: specifier: ^6.3.6 version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250909.0) + version: 4.14.1(@cloudflare/workers-types@4.20250913.0) devDependencies: astro: specifier: workspace:* @@ -4798,8 +4798,8 @@ importers: specifier: ^8.0.1 version: 8.0.1 rollup: - specifier: ^4.50.0 - version: 4.50.1 + specifier: ^4.50.2 + version: 4.50.2 packages/integrations/cloudflare/test/fixtures/astro-dev-platform: dependencies: @@ -4812,7 +4812,7 @@ importers: devDependencies: wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250909.0) + version: 4.14.1(@cloudflare/workers-types@4.20250913.0) packages/integrations/cloudflare/test/fixtures/astro-env: dependencies: @@ -4825,7 +4825,7 @@ importers: devDependencies: wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250909.0) + version: 4.14.1(@cloudflare/workers-types@4.20250913.0) packages/integrations/cloudflare/test/fixtures/compile-image-service: dependencies: @@ -4892,7 +4892,7 @@ importers: version: link:../../../../../astro wrangler: specifier: 4.14.1 - version: 4.14.1(@cloudflare/workers-types@4.20250909.0) + version: 4.14.1(@cloudflare/workers-types@4.20250913.0) packages/integrations/cloudflare/test/fixtures/with-base: dependencies: @@ -4909,7 +4909,7 @@ importers: specifier: workspace:* version: link:../../.. '@astrojs/solid-js': - specifier: ^5.1.0 + specifier: ^5.1.1 version: link:../../../../solid astro: specifier: workspace:* @@ -4924,13 +4924,13 @@ importers: specifier: workspace:* version: link:../../.. '@astrojs/svelte': - specifier: ^7.1.0 + specifier: ^7.1.1 version: link:../../../../svelte astro: specifier: workspace:* version: link:../../../../../astro svelte: - specifier: ^5.38.6 + specifier: ^5.38.10 version: 5.38.10 packages/integrations/cloudflare/test/fixtures/with-vue: @@ -4939,7 +4939,7 @@ importers: specifier: workspace:* version: link:../../.. '@astrojs/vue': - specifier: ^5.1.0 + specifier: ^5.1.1 version: link:../../../../vue astro: specifier: workspace:* @@ -5425,18 +5425,18 @@ importers: version: 10.0.10 '@netlify/functions': specifier: ^4.2.5 - version: 4.2.5(rollup@4.50.1) + version: 4.2.5(rollup@4.50.2) '@netlify/vite-plugin': - specifier: ^2.5.8 - version: 2.5.9(@vercel/functions@2.2.13)(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + specifier: ^2.5.9 + version: 2.5.9(@vercel/functions@2.2.13)(rollup@4.50.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) '@vercel/nft': specifier: ^0.30.1 - version: 0.30.1(rollup@4.50.1) + version: 0.30.1(rollup@4.50.2) esbuild: specifier: ^0.25.0 version: 0.25.5 tinyglobby: - specifier: ^0.2.14 + specifier: ^0.2.15 version: 0.2.15 vite: specifier: ^6.3.6 @@ -5938,7 +5938,7 @@ importers: version: 2.2.13 '@vercel/nft': specifier: ^0.30.1 - version: 0.30.1(rollup@4.50.1) + version: 0.30.1(rollup@4.50.2) '@vercel/routing-utils': specifier: ^5.1.1 version: 5.1.1 @@ -5946,7 +5946,7 @@ importers: specifier: ^0.25.0 version: 0.25.5 tinyglobby: - specifier: ^0.2.14 + specifier: ^0.2.15 version: 0.2.15 devDependencies: astro: @@ -6158,7 +6158,7 @@ importers: version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vite-plugin-vue-devtools: specifier: ^7.7.7 - version: 7.7.7(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + version: 7.7.7(rollup@4.50.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) devDependencies: astro: specifier: workspace:* @@ -6878,8 +6878,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20250909.0': - resolution: {integrity: sha512-3WvDDOvFGOAlBUZpWe2N+9BxB1kRt9eHo3AhIKg1fihNdqrGxyh9cJe1MpYs5BI8gXSRxjkDvzPVebRED8iwOQ==} + '@cloudflare/workers-types@4.20250913.0': + resolution: {integrity: sha512-JjrYEvRn7cyALxwoFTw3XChaQneHSJOXqz2t5iKEpNzAnC2iPQU75rtTK/gw03Jjy4SHY5aEBh/uqQePtonZlA==} '@codspeed/core@4.0.1': resolution: {integrity: sha512-fJ53arfgtzCDZa8DuGJhpTZ3Ll9A1uW5nQ2jSJnfO4Hl5MRD2cP8P4vPvIUAGbdbjwCxR1jat6cW8OloMJkJXw==} @@ -8640,108 +8640,108 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.50.1': - resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} + '@rollup/rollup-android-arm-eabi@4.50.2': + resolution: {integrity: sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.50.1': - resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} + '@rollup/rollup-android-arm64@4.50.2': + resolution: {integrity: sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.50.1': - resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} + '@rollup/rollup-darwin-arm64@4.50.2': + resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.50.1': - resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} + '@rollup/rollup-darwin-x64@4.50.2': + resolution: {integrity: sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.50.1': - resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} + '@rollup/rollup-freebsd-arm64@4.50.2': + resolution: {integrity: sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.50.1': - resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} + '@rollup/rollup-freebsd-x64@4.50.2': + resolution: {integrity: sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.50.1': - resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} + '@rollup/rollup-linux-arm-gnueabihf@4.50.2': + resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.50.1': - resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} + '@rollup/rollup-linux-arm-musleabihf@4.50.2': + resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.50.1': - resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} + '@rollup/rollup-linux-arm64-gnu@4.50.2': + resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.50.1': - resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} + '@rollup/rollup-linux-arm64-musl@4.50.2': + resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.50.1': - resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} + '@rollup/rollup-linux-loong64-gnu@4.50.2': + resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.50.1': - resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} + '@rollup/rollup-linux-ppc64-gnu@4.50.2': + resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.50.1': - resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} + '@rollup/rollup-linux-riscv64-gnu@4.50.2': + resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.50.1': - resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} + '@rollup/rollup-linux-riscv64-musl@4.50.2': + resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.50.1': - resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} + '@rollup/rollup-linux-s390x-gnu@4.50.2': + resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.50.1': - resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} + '@rollup/rollup-linux-x64-gnu@4.50.2': + resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.50.1': - resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} + '@rollup/rollup-linux-x64-musl@4.50.2': + resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.50.1': - resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} + '@rollup/rollup-openharmony-arm64@4.50.2': + resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.50.1': - resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} + '@rollup/rollup-win32-arm64-msvc@4.50.2': + resolution: {integrity: sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.50.1': - resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} + '@rollup/rollup-win32-ia32-msvc@4.50.2': + resolution: {integrity: sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.50.1': - resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} + '@rollup/rollup-win32-x64-msvc@4.50.2': + resolution: {integrity: sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==} cpu: [x64] os: [win32] @@ -12831,8 +12831,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.50.1: - resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} + rollup@4.50.2: + resolution: {integrity: sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -14749,7 +14749,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250428.0': optional: true - '@cloudflare/workers-types@4.20250909.0': {} + '@cloudflare/workers-types@4.20250913.0': {} '@codspeed/core@4.0.1': dependencies: @@ -15901,13 +15901,13 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.5.9(@vercel/functions@2.2.13)(rollup@4.50.1)': + '@netlify/dev@4.5.9(@vercel/functions@2.2.13)(rollup@4.50.2)': dependencies: '@netlify/blobs': 10.0.10 '@netlify/config': 23.2.0 '@netlify/dev-utils': 4.1.3 '@netlify/edge-functions': 2.17.4 - '@netlify/functions': 4.2.5(rollup@4.50.1) + '@netlify/functions': 4.2.5(rollup@4.50.2) '@netlify/headers': 2.0.11 '@netlify/images': 1.2.7(@netlify/blobs@10.0.10)(@vercel/functions@2.2.13) '@netlify/redirects': 3.0.12 @@ -15971,12 +15971,12 @@ snapshots: '@netlify/types': 2.0.3 get-port: 7.1.0 - '@netlify/functions@4.2.5(rollup@4.50.1)': + '@netlify/functions@4.2.5(rollup@4.50.2)': dependencies: '@netlify/blobs': 10.0.10 '@netlify/dev-utils': 4.1.3 '@netlify/types': 2.0.3 - '@netlify/zip-it-and-ship-it': 14.1.7(rollup@4.50.1) + '@netlify/zip-it-and-ship-it': 14.1.7(rollup@4.50.2) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -16061,9 +16061,9 @@ snapshots: '@netlify/types@2.0.3': {} - '@netlify/vite-plugin@2.5.9(@vercel/functions@2.2.13)(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@netlify/vite-plugin@2.5.9(@vercel/functions@2.2.13)(rollup@4.50.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@netlify/dev': 4.5.9(@vercel/functions@2.2.13)(rollup@4.50.1) + '@netlify/dev': 4.5.9(@vercel/functions@2.2.13)(rollup@4.50.2) '@netlify/dev-utils': 4.1.3 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: @@ -16089,13 +16089,13 @@ snapshots: - supports-color - uploadthing - '@netlify/zip-it-and-ship-it@14.1.7(rollup@4.50.1)': + '@netlify/zip-it-and-ship-it@14.1.7(rollup@4.50.2)': dependencies: '@babel/parser': 7.28.4 '@babel/types': 7.28.1 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.5.0 - '@vercel/nft': 0.29.4(rollup@4.50.1) + '@vercel/nft': 0.29.4(rollup@4.50.2) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.1.0 @@ -16337,75 +16337,75 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.3.0(rollup@4.50.1)': + '@rollup/pluginutils@5.3.0(rollup@4.50.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.50.1 + rollup: 4.50.2 - '@rollup/rollup-android-arm-eabi@4.50.1': + '@rollup/rollup-android-arm-eabi@4.50.2': optional: true - '@rollup/rollup-android-arm64@4.50.1': + '@rollup/rollup-android-arm64@4.50.2': optional: true - '@rollup/rollup-darwin-arm64@4.50.1': + '@rollup/rollup-darwin-arm64@4.50.2': optional: true - '@rollup/rollup-darwin-x64@4.50.1': + '@rollup/rollup-darwin-x64@4.50.2': optional: true - '@rollup/rollup-freebsd-arm64@4.50.1': + '@rollup/rollup-freebsd-arm64@4.50.2': optional: true - '@rollup/rollup-freebsd-x64@4.50.1': + '@rollup/rollup-freebsd-x64@4.50.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + '@rollup/rollup-linux-arm-gnueabihf@4.50.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.50.1': + '@rollup/rollup-linux-arm-musleabihf@4.50.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.50.1': + '@rollup/rollup-linux-arm64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.50.1': + '@rollup/rollup-linux-arm64-musl@4.50.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + '@rollup/rollup-linux-loong64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.50.1': + '@rollup/rollup-linux-ppc64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.50.1': + '@rollup/rollup-linux-riscv64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.50.1': + '@rollup/rollup-linux-riscv64-musl@4.50.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.50.1': + '@rollup/rollup-linux-s390x-gnu@4.50.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.50.1': + '@rollup/rollup-linux-x64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-x64-musl@4.50.1': + '@rollup/rollup-linux-x64-musl@4.50.2': optional: true - '@rollup/rollup-openharmony-arm64@4.50.1': + '@rollup/rollup-openharmony-arm64@4.50.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.50.1': + '@rollup/rollup-win32-arm64-msvc@4.50.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.50.1': + '@rollup/rollup-win32-ia32-msvc@4.50.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.50.1': + '@rollup/rollup-win32-x64-msvc@4.50.2': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -16873,10 +16873,10 @@ snapshots: dependencies: '@vercel/oidc': 2.0.2 - '@vercel/nft@0.29.4(rollup@4.50.1)': + '@vercel/nft@0.29.4(rollup@4.50.2)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.3.0(rollup@4.50.1) + '@rollup/pluginutils': 5.3.0(rollup@4.50.2) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -16892,10 +16892,10 @@ snapshots: - rollup - supports-color - '@vercel/nft@0.30.1(rollup@4.50.1)': + '@vercel/nft@0.30.1(rollup@4.50.2)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.3.0(rollup@4.50.1) + '@rollup/pluginutils': 5.3.0(rollup@4.50.2) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -18027,9 +18027,9 @@ snapshots: dotenv@8.6.0: {} - drizzle-orm@0.42.0(@cloudflare/workers-types@4.20250909.0)(@libsql/client@0.15.15): + drizzle-orm@0.42.0(@cloudflare/workers-types@4.20250913.0)(@libsql/client@0.15.15): optionalDependencies: - '@cloudflare/workers-types': 4.20250909.0 + '@cloudflare/workers-types': 4.20250913.0 '@libsql/client': 0.15.15 dset@3.1.4: {} @@ -21216,31 +21216,31 @@ snapshots: rfdc@1.4.1: {} - rollup@4.50.1: + rollup@4.50.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.1 - '@rollup/rollup-android-arm64': 4.50.1 - '@rollup/rollup-darwin-arm64': 4.50.1 - '@rollup/rollup-darwin-x64': 4.50.1 - '@rollup/rollup-freebsd-arm64': 4.50.1 - '@rollup/rollup-freebsd-x64': 4.50.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 - '@rollup/rollup-linux-arm-musleabihf': 4.50.1 - '@rollup/rollup-linux-arm64-gnu': 4.50.1 - '@rollup/rollup-linux-arm64-musl': 4.50.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 - '@rollup/rollup-linux-ppc64-gnu': 4.50.1 - '@rollup/rollup-linux-riscv64-gnu': 4.50.1 - '@rollup/rollup-linux-riscv64-musl': 4.50.1 - '@rollup/rollup-linux-s390x-gnu': 4.50.1 - '@rollup/rollup-linux-x64-gnu': 4.50.1 - '@rollup/rollup-linux-x64-musl': 4.50.1 - '@rollup/rollup-openharmony-arm64': 4.50.1 - '@rollup/rollup-win32-arm64-msvc': 4.50.1 - '@rollup/rollup-win32-ia32-msvc': 4.50.1 - '@rollup/rollup-win32-x64-msvc': 4.50.1 + '@rollup/rollup-android-arm-eabi': 4.50.2 + '@rollup/rollup-android-arm64': 4.50.2 + '@rollup/rollup-darwin-arm64': 4.50.2 + '@rollup/rollup-darwin-x64': 4.50.2 + '@rollup/rollup-freebsd-arm64': 4.50.2 + '@rollup/rollup-freebsd-x64': 4.50.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.2 + '@rollup/rollup-linux-arm-musleabihf': 4.50.2 + '@rollup/rollup-linux-arm64-gnu': 4.50.2 + '@rollup/rollup-linux-arm64-musl': 4.50.2 + '@rollup/rollup-linux-loong64-gnu': 4.50.2 + '@rollup/rollup-linux-ppc64-gnu': 4.50.2 + '@rollup/rollup-linux-riscv64-gnu': 4.50.2 + '@rollup/rollup-linux-riscv64-musl': 4.50.2 + '@rollup/rollup-linux-s390x-gnu': 4.50.2 + '@rollup/rollup-linux-x64-gnu': 4.50.2 + '@rollup/rollup-linux-x64-musl': 4.50.2 + '@rollup/rollup-openharmony-arm64': 4.50.2 + '@rollup/rollup-win32-arm64-msvc': 4.50.2 + '@rollup/rollup-win32-ia32-msvc': 4.50.2 + '@rollup/rollup-win32-x64-msvc': 4.50.2 fsevents: 2.3.3 run-applescript@7.1.0: {} @@ -22139,10 +22139,10 @@ snapshots: - tsx - yaml - vite-plugin-inspect@0.8.9(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): + vite-plugin-inspect@0.8.9(rollup@4.50.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.3.0(rollup@4.50.1) + '@rollup/pluginutils': 5.3.0(rollup@4.50.2) debug: 4.4.3 error-stack-parser-es: 0.1.5 fs-extra: 11.3.1 @@ -22168,7 +22168,7 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.7.7(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)): + vite-plugin-vue-devtools@7.7.7(rollup@4.50.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)): dependencies: '@vue/devtools-core': 7.7.7(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) '@vue/devtools-kit': 7.7.7 @@ -22176,7 +22176,7 @@ snapshots: execa: 9.6.0 sirv: 3.0.2 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) - vite-plugin-inspect: 0.8.9(rollup@4.50.1)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + vite-plugin-inspect: 0.8.9(rollup@4.50.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) vite-plugin-vue-inspector: 5.3.2(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: - '@nuxt/kit' @@ -22220,7 +22220,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.50.1 + rollup: 4.50.2 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.18.1 @@ -22468,7 +22468,7 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20250428.0 '@cloudflare/workerd-windows-64': 1.20250428.0 - wrangler@4.14.1(@cloudflare/workers-types@4.20250909.0): + wrangler@4.14.1(@cloudflare/workers-types@4.20250913.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250428.0) @@ -22479,7 +22479,7 @@ snapshots: unenv: 2.0.0-rc.15 workerd: 1.20250428.0 optionalDependencies: - '@cloudflare/workers-types': 4.20250909.0 + '@cloudflare/workers-types': 4.20250913.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: From 1d1b84a986483556b9c97fba2fd5088338eb8e3a Mon Sep 17 00:00:00 2001 From: Louis Escher <66965600+louisescher@users.noreply.github.com> Date: Tue, 16 Sep 2025 07:40:28 +0200 Subject: [PATCH 20/50] fix: Skip `astro info` version tests in ecosystem CI due to manual version override (#14385) --- packages/astro/test/cli.test.js | 206 +++++++++--------- .../fixtures/astro-info-versions/package.json | 2 +- pnpm-lock.yaml | 1 - 3 files changed, 110 insertions(+), 99 deletions(-) diff --git a/packages/astro/test/cli.test.js b/packages/astro/test/cli.test.js index fca1d5368357..8c94680c4c3e 100644 --- a/packages/astro/test/cli.test.js +++ b/packages/astro/test/cli.test.js @@ -104,118 +104,130 @@ describe('astro cli', () => { } }); - it('astro info shows correct Vite and integration versions when using pnpm', async () => { - const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); - const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - - const packageJSON = await fs - .readFile(fileURLToPath(projectPackageJSONUrl)) - .then((json) => JSON.parse(json)); - - const viteVersion = packageJSON.dependencies.vite; - const adapterVersion = packageJSON.dependencies['@astrojs/node']; - const integrationVersion = packageJSON.dependencies['@astrojs/react']; - - const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { - cwd: projectRootURL, - encoding: 'utf-8', - shell: true, - }); + it( + 'astro info shows correct Vite and integration versions when using pnpm', + { skip: process.env.ECOSYSTEM_CI }, + async () => { + const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); + const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - assert.equal(proc.stdout.includes(`v${viteVersion}`), true); - assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); - assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); - }); + const packageJSON = await fs + .readFile(fileURLToPath(projectPackageJSONUrl)) + .then((json) => JSON.parse(json)); - it('astro info shows correct Vite and integration versions when using npm', async () => { - const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); - const projectPackageJSONUrl = new URL('./package.json', projectRootURL); + const viteVersion = packageJSON.dependencies.vite; + const adapterVersion = packageJSON.dependencies['@astrojs/node']; + const integrationVersion = packageJSON.dependencies['@astrojs/react']; - const packageJSON = await fs - .readFile(fileURLToPath(projectPackageJSONUrl)) - .then((json) => JSON.parse(json)); + const proc = spawnSync('pnpm', ['astro', 'info', '--copy'], { + cwd: projectRootURL, + encoding: 'utf-8', + shell: true, + }); - const viteVersion = packageJSON.dependencies.vite; - const adapterVersion = packageJSON.dependencies['@astrojs/node']; - const integrationVersion = packageJSON.dependencies['@astrojs/react']; + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); + assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); + assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); + } + ); - const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { - cwd: projectRootURL, - encoding: 'utf-8', - shell: true, - }); + it( + 'astro info shows correct Vite and integration versions when using npm', + { skip: process.env.ECOSYSTEM_CI }, + async () => { + const projectRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); + const projectPackageJSONUrl = new URL('./package.json', projectRootURL); - assert.equal(proc.stdout.includes(`v${viteVersion}`), true); - assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); - assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); - }); + const packageJSON = await fs + .readFile(fileURLToPath(projectPackageJSONUrl)) + .then((json) => JSON.parse(json)); - it('astro info shows correct Vite and integration versions when using yarn', async () => { - const fixtureRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); - const testsRootURL = new URL('../', import.meta.url); - const astroPackageJSONUrl = new URL('./package.json', testsRootURL); - const packageJSONUrl = new URL('./package.json', fixtureRootURL); - const yarnLockUrl = new URL('./yarn.lock', fixtureRootURL); - - const astroVersion = await fs - .readFile(fileURLToPath(astroPackageJSONUrl)) - .then((text) => JSON.parse(text).version); - const packFileName = `./astro-${astroVersion}.tgz`; - const packURL = new URL(packFileName, testsRootURL); - const packDestinationURL = new URL(packFileName, fixtureRootURL); - - // Add a packageManager field to the fixture's package.json file, otherwise - // corepack won't allow us to use yarn because a parent directory has a different - // package.json file with a packageManager field - let packageJSON = await fs - .readFile(fileURLToPath(packageJSONUrl), { encoding: 'utf-8' }) - .then((text) => JSON.parse(text)); - packageJSON.packageManager = 'yarn@4.9.4'; - - const viteVersion = packageJSON.dependencies.vite; - const adapterVersion = packageJSON.dependencies['@astrojs/node']; - const integrationVersion = packageJSON.dependencies['@astrojs/react']; - - await fs.writeFile(fileURLToPath(packageJSONUrl), JSON.stringify(packageJSON), { - encoding: 'utf-8', - }); - await fs.writeFile(yarnLockUrl, '', { encoding: 'utf-8' }); + const viteVersion = packageJSON.dependencies.vite; + const adapterVersion = packageJSON.dependencies['@astrojs/node']; + const integrationVersion = packageJSON.dependencies['@astrojs/react']; - spawnSync('pnpm', ['pack'], { cwd: testsRootURL, encoding: 'utf-8', shell: true }); - await fs.rename(packURL, packDestinationURL); + const proc = spawnSync('npm', ['run', 'astro', 'info', '--copy'], { + cwd: projectRootURL, + encoding: 'utf-8', + shell: true, + }); - spawnSync('corepack', ['use', 'yarn@4.9.4'], { - cwd: fixtureRootURL, - encoding: 'utf-8', - shell: true, - }); + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); + assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); + assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); + } + ); - spawnSync('corepack', ['yarn', 'add', packFileName], { - cwd: fixtureRootURL, - encoding: 'utf-8', - shell: true, - }); + it( + 'astro info shows correct Vite and integration versions when using yarn', + { skip: process.env.ECOSYSTEM_CI }, + async () => { + const fixtureRootURL = new URL('./fixtures/astro-info-versions/', import.meta.url); + const testsRootURL = new URL('../', import.meta.url); + const astroPackageJSONUrl = new URL('./package.json', testsRootURL); + const packageJSONUrl = new URL('./package.json', fixtureRootURL); + const yarnLockUrl = new URL('./yarn.lock', fixtureRootURL); + + const astroVersion = await fs + .readFile(fileURLToPath(astroPackageJSONUrl)) + .then((text) => JSON.parse(text).version); + const packFileName = `./astro-${astroVersion}.tgz`; + const packURL = new URL(packFileName, testsRootURL); + const packDestinationURL = new URL(packFileName, fixtureRootURL); + + // Add a packageManager field to the fixture's package.json file, otherwise + // corepack won't allow us to use yarn because a parent directory has a different + // package.json file with a packageManager field + let packageJSON = await fs + .readFile(fileURLToPath(packageJSONUrl), { encoding: 'utf-8' }) + .then((text) => JSON.parse(text)); + packageJSON.packageManager = 'yarn@4.9.4'; + + const viteVersion = packageJSON.dependencies.vite; + const adapterVersion = packageJSON.dependencies['@astrojs/node']; + const integrationVersion = packageJSON.dependencies['@astrojs/react']; + + await fs.writeFile(fileURLToPath(packageJSONUrl), JSON.stringify(packageJSON), { + encoding: 'utf-8', + }); + await fs.writeFile(yarnLockUrl, '', { encoding: 'utf-8' }); - const proc = spawnSync('corepack', ['yarn', 'astro', 'info', '--copy'], { - cwd: fixtureRootURL, - encoding: 'utf-8', - shell: true, - }); + spawnSync('pnpm', ['pack'], { cwd: testsRootURL, encoding: 'utf-8', shell: true }); + await fs.rename(packURL, packDestinationURL); - // Reset changes to package.json - delete packageJSON.packageManager; - packageJSON.dependencies.astro = 'workspace:*'; + spawnSync('corepack', ['use', 'yarn@4.9.4'], { + cwd: fixtureRootURL, + encoding: 'utf-8', + shell: true, + }); - await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: 'utf-8' }); - await fs.rm(yarnLockUrl, { force: true }); - await fs.rm(packDestinationURL, { force: true }); + spawnSync('corepack', ['yarn', 'add', packFileName], { + cwd: fixtureRootURL, + encoding: 'utf-8', + shell: true, + }); - spawnSync('pnpm', ['install'], { cwd: fixtureRootURL, shell: true }); + const proc = spawnSync('corepack', ['yarn', 'astro', 'info', '--copy'], { + cwd: fixtureRootURL, + encoding: 'utf-8', + shell: true, + }); - assert.equal(proc.stdout.includes(`v${viteVersion}`), true); - assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); - assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); - }); + // Reset changes to package.json + delete packageJSON.packageManager; + packageJSON.dependencies.astro = 'workspace:*'; + + await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: 'utf-8' }); + await fs.rm(yarnLockUrl, { force: true }); + await fs.rm(packDestinationURL, { force: true }); + + spawnSync('pnpm', ['install'], { cwd: fixtureRootURL, shell: true }); + + assert.equal(proc.stdout.includes(`v${viteVersion}`), true); + assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); + assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); + } + ); it( 'astro check no errors', diff --git a/packages/astro/test/fixtures/astro-info-versions/package.json b/packages/astro/test/fixtures/astro-info-versions/package.json index 27a3fc99efa2..69ac118b5de0 100644 --- a/packages/astro/test/fixtures/astro-info-versions/package.json +++ b/packages/astro/test/fixtures/astro-info-versions/package.json @@ -15,4 +15,4 @@ "scripts": { "astro": "astro" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f12c99f211bc..8321dd15ac75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11354,7 +11354,6 @@ packages: libsql@0.5.22: resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} - cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] lightningcss-darwin-arm64@1.30.1: From 8790cacff72e1be9f9922a1dd57d2bd188b1bf0a Mon Sep 17 00:00:00 2001 From: Louis Escher Date: Tue, 16 Sep 2025 05:41:05 +0000 Subject: [PATCH 21/50] [ci] format --- packages/astro/test/cli.test.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/astro/test/cli.test.js b/packages/astro/test/cli.test.js index 8c94680c4c3e..78b730ad66e0 100644 --- a/packages/astro/test/cli.test.js +++ b/packages/astro/test/cli.test.js @@ -128,7 +128,7 @@ describe('astro cli', () => { assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); - } + }, ); it( @@ -155,7 +155,7 @@ describe('astro cli', () => { assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); - } + }, ); it( @@ -217,7 +217,9 @@ describe('astro cli', () => { delete packageJSON.packageManager; packageJSON.dependencies.astro = 'workspace:*'; - await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { encoding: 'utf-8' }); + await fs.writeFile(packageJSONUrl, JSON.stringify(packageJSON, null, 2), { + encoding: 'utf-8', + }); await fs.rm(yarnLockUrl, { force: true }); await fs.rm(packDestinationURL, { force: true }); @@ -226,7 +228,7 @@ describe('astro cli', () => { assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); - } + }, ); it( From a89fb9fdd6f84f9ec0b888aedef0658b347fb2d4 Mon Sep 17 00:00:00 2001 From: Louis Escher <66965600+louisescher@users.noreply.github.com> Date: Tue, 16 Sep 2025 14:17:10 +0200 Subject: [PATCH 22/50] fix: Add minimumReleaseAge to pnpm workspace and renovate (#14388) * fix: Add minimumReleaseAge setting to pnpm-workspace.yaml and renovate.json5 * fix: Update lockfile --- .github/renovate.json5 | 1 + pnpm-workspace.yaml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index e86954622428..14c89c172417 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -84,4 +84,5 @@ "postcss-load-config", "esbuild", ], + "minimumReleaseAge": "3 days" } diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 25468b5a703b..42557f8621aa 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,3 +15,5 @@ overrides: 'undici': '^6.21.3' # A later wrangler minor dropeed support for node 18 'wrangler': '4.14.1' +# Wait until three days after release to install new versions of packages +minimumReleaseAge: 4320 From bedc31ba7318dd89545503eaeeac4e0615843834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Colombo?= <93980872+jdcolombo@users.noreply.github.com> Date: Wed, 17 Sep 2025 10:11:26 +0200 Subject: [PATCH 23/50] feat(sitemap): add namespaces configuration option (#14285) Co-authored-by: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> Co-authored-by: Florian Lefebvre --- .changeset/rich-insects-scream.md | 41 ++++++++++ .../sitemap/src/config-defaults.ts | 6 ++ packages/integrations/sitemap/src/index.ts | 9 +++ packages/integrations/sitemap/src/schema.ts | 10 +++ .../integrations/sitemap/src/write-sitemap.ts | 14 ++++ .../sitemap/test/namespaces.test.js | 79 +++++++++++++++++++ 6 files changed, 159 insertions(+) create mode 100644 .changeset/rich-insects-scream.md create mode 100644 packages/integrations/sitemap/test/namespaces.test.js diff --git a/.changeset/rich-insects-scream.md b/.changeset/rich-insects-scream.md new file mode 100644 index 000000000000..143b9e7601fd --- /dev/null +++ b/.changeset/rich-insects-scream.md @@ -0,0 +1,41 @@ +--- +'@astrojs/sitemap': minor +--- + +Adds a new configuration option `namespaces` for more control over XML namespaces used in sitemap generation + +Excluding unused namespaces can help create cleaner, more focused sitemaps that are faster for search engines to parse and use less bandwidth. If your site doesn't have news content, videos, or multiple languages, you can exclude those namespaces to reduce XML bloat. + +The `namespaces` option allows you to configure `news`, `xhtml`, `image`, and `video` namespaces independently. All namespaces are enabled by default for backward compatibility and no change to existing projects is necessary. But now, you can choose to streamline your XML and avoid unnecessary code. + +For example, to exclude the video namespace from your sitemap, set `video: false` in your configuration: + +``` +// astro.config.mjs +import { sitemap } from '@astrojs/sitemap'; + +export default { + integrations: [ + sitemap({ + namespaces: { + video: false, + // other namespaces remain enabled by default + } + }) + ] +}; +``` + +The generated XML will not include the `xmlns:video` namespace: + +``` + + + + +``` diff --git a/packages/integrations/sitemap/src/config-defaults.ts b/packages/integrations/sitemap/src/config-defaults.ts index 8d854c7a98e0..2513d87080f1 100644 --- a/packages/integrations/sitemap/src/config-defaults.ts +++ b/packages/integrations/sitemap/src/config-defaults.ts @@ -3,4 +3,10 @@ import type { SitemapOptions } from './index.js'; export const SITEMAP_CONFIG_DEFAULTS = { filenameBase: 'sitemap', entryLimit: 45000, + namespaces: { + news: true, + xhtml: true, + image: true, + video: true, + }, } satisfies SitemapOptions; diff --git a/packages/integrations/sitemap/src/index.ts b/packages/integrations/sitemap/src/index.ts index 61c8f21ca088..7d25101bb9d3 100644 --- a/packages/integrations/sitemap/src/index.ts +++ b/packages/integrations/sitemap/src/index.ts @@ -39,6 +39,14 @@ export type SitemapOptions = serialize?(item: SitemapItem): SitemapItem | Promise | undefined; xslURL?: string; + + // namespace configuration + namespaces?: { + news?: boolean; + xhtml?: boolean; + image?: boolean; + video?: boolean; + }; } | undefined; @@ -180,6 +188,7 @@ const createPlugin = (options?: SitemapOptions): AstroIntegration => { customSitemaps, xslURL: xslURL, lastmod, + namespaces: opts.namespaces, }, config, ); diff --git a/packages/integrations/sitemap/src/schema.ts b/packages/integrations/sitemap/src/schema.ts index f8a2d0db3b69..fc5d8cb9742d 100644 --- a/packages/integrations/sitemap/src/schema.ts +++ b/packages/integrations/sitemap/src/schema.ts @@ -37,6 +37,16 @@ export const SitemapOptionsSchema = z changefreq: z.nativeEnum(ChangeFreq).optional(), lastmod: z.date().optional(), priority: z.number().min(0).max(1).optional(), + + namespaces: z + .object({ + news: z.boolean().optional(), + xhtml: z.boolean().optional(), + image: z.boolean().optional(), + video: z.boolean().optional(), + }) + .optional() + .default(SITEMAP_CONFIG_DEFAULTS.namespaces), }) .strict() .default(SITEMAP_CONFIG_DEFAULTS); diff --git a/packages/integrations/sitemap/src/write-sitemap.ts b/packages/integrations/sitemap/src/write-sitemap.ts index dfaed7ceba7d..00ed48eac28f 100644 --- a/packages/integrations/sitemap/src/write-sitemap.ts +++ b/packages/integrations/sitemap/src/write-sitemap.ts @@ -19,6 +19,12 @@ type WriteSitemapConfig = { limit?: number; xslURL?: string; lastmod?: string; + namespaces?: { + news?: boolean; + xhtml?: boolean; + image?: boolean; + video?: boolean; + }; }; // adapted from sitemap.js/sitemap-simple @@ -34,6 +40,7 @@ export async function writeSitemap( publicBasePath = './', xslURL: xslUrl, lastmod, + namespaces = { news: true, xhtml: true, image: true, video: true }, }: WriteSitemapConfig, astroConfig: AstroConfig, ) { @@ -46,6 +53,13 @@ export async function writeSitemap( const sitemapStream = new SitemapStream({ hostname, xslUrl, + // Custom namespace handling + xmlns: { + news: namespaces?.news !== false, + xhtml: namespaces?.xhtml !== false, + image: namespaces?.image !== false, + video: namespaces?.video !== false, + }, }); const path = `./${filenameBase}-${i}.xml`; const writePath = resolve(destinationDir, path); diff --git a/packages/integrations/sitemap/test/namespaces.test.js b/packages/integrations/sitemap/test/namespaces.test.js new file mode 100644 index 000000000000..4e1b78c6df8b --- /dev/null +++ b/packages/integrations/sitemap/test/namespaces.test.js @@ -0,0 +1,79 @@ +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; +import { sitemap } from './fixtures/static/deps.mjs'; +import { loadFixture } from './test-utils.js'; + +describe('Namespaces Configuration', () => { + let fixture; + + describe('Default namespaces', () => { + before(async () => { + fixture = await loadFixture({ + root: './fixtures/static/', + integrations: [sitemap()], + }); + await fixture.build(); + }); + + it('includes all default namespaces', async () => { + const xml = await fixture.readFile('/sitemap-0.xml'); + assert.ok(xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); + assert.ok(xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); + assert.ok(xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); + assert.ok(xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); + }); + }); + + describe('Excluding news namespace', () => { + before(async () => { + fixture = await loadFixture({ + root: './fixtures/static/', + integrations: [ + sitemap({ + namespaces: { + news: false, + }, + }), + ], + }); + await fixture.build(); + }); + + it('excludes news namespace but includes others', async () => { + const xml = await fixture.readFile('/sitemap-0.xml'); + assert.ok(!xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); + assert.ok(xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); + assert.ok(xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); + assert.ok(xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); + }); + }); + + describe('Minimal namespaces', () => { + before(async () => { + fixture = await loadFixture({ + root: './fixtures/static/', + integrations: [ + sitemap({ + namespaces: { + news: false, + xhtml: false, + image: false, + video: false, + }, + }), + ], + }); + await fixture.build(); + }); + + it('excludes all optional namespaces', async () => { + const xml = await fixture.readFile('/sitemap-0.xml'); + assert.ok(!xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); + assert.ok(!xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); + assert.ok(!xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); + assert.ok(!xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); + // Still includes the main sitemap namespace + assert.ok(xml.includes('xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"')); + }); + }); +}); \ No newline at end of file From ccf0c14c37f238b4523c6dd7263f66abf765ea2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Colombo?= Date: Wed, 17 Sep 2025 08:12:01 +0000 Subject: [PATCH 24/50] [ci] format --- .../sitemap/src/config-defaults.ts | 2 +- packages/integrations/sitemap/src/index.ts | 4 +- packages/integrations/sitemap/src/schema.ts | 8 +- .../sitemap/test/namespaces.test.js | 134 +++++++++--------- 4 files changed, 74 insertions(+), 74 deletions(-) diff --git a/packages/integrations/sitemap/src/config-defaults.ts b/packages/integrations/sitemap/src/config-defaults.ts index 2513d87080f1..cc6f49a01798 100644 --- a/packages/integrations/sitemap/src/config-defaults.ts +++ b/packages/integrations/sitemap/src/config-defaults.ts @@ -5,7 +5,7 @@ export const SITEMAP_CONFIG_DEFAULTS = { entryLimit: 45000, namespaces: { news: true, - xhtml: true, + xhtml: true, image: true, video: true, }, diff --git a/packages/integrations/sitemap/src/index.ts b/packages/integrations/sitemap/src/index.ts index 7d25101bb9d3..e7b87ddc9b97 100644 --- a/packages/integrations/sitemap/src/index.ts +++ b/packages/integrations/sitemap/src/index.ts @@ -39,8 +39,8 @@ export type SitemapOptions = serialize?(item: SitemapItem): SitemapItem | Promise | undefined; xslURL?: string; - - // namespace configuration + + // namespace configuration namespaces?: { news?: boolean; xhtml?: boolean; diff --git a/packages/integrations/sitemap/src/schema.ts b/packages/integrations/sitemap/src/schema.ts index fc5d8cb9742d..1df90f125a0e 100644 --- a/packages/integrations/sitemap/src/schema.ts +++ b/packages/integrations/sitemap/src/schema.ts @@ -40,10 +40,10 @@ export const SitemapOptionsSchema = z namespaces: z .object({ - news: z.boolean().optional(), - xhtml: z.boolean().optional(), - image: z.boolean().optional(), - video: z.boolean().optional(), + news: z.boolean().optional(), + xhtml: z.boolean().optional(), + image: z.boolean().optional(), + video: z.boolean().optional(), }) .optional() .default(SITEMAP_CONFIG_DEFAULTS.namespaces), diff --git a/packages/integrations/sitemap/test/namespaces.test.js b/packages/integrations/sitemap/test/namespaces.test.js index 4e1b78c6df8b..79c0c44d4022 100644 --- a/packages/integrations/sitemap/test/namespaces.test.js +++ b/packages/integrations/sitemap/test/namespaces.test.js @@ -4,76 +4,76 @@ import { sitemap } from './fixtures/static/deps.mjs'; import { loadFixture } from './test-utils.js'; describe('Namespaces Configuration', () => { - let fixture; + let fixture; - describe('Default namespaces', () => { - before(async () => { - fixture = await loadFixture({ - root: './fixtures/static/', - integrations: [sitemap()], - }); - await fixture.build(); - }); + describe('Default namespaces', () => { + before(async () => { + fixture = await loadFixture({ + root: './fixtures/static/', + integrations: [sitemap()], + }); + await fixture.build(); + }); - it('includes all default namespaces', async () => { - const xml = await fixture.readFile('/sitemap-0.xml'); - assert.ok(xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); - assert.ok(xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); - assert.ok(xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); - assert.ok(xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); - }); - }); + it('includes all default namespaces', async () => { + const xml = await fixture.readFile('/sitemap-0.xml'); + assert.ok(xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); + assert.ok(xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); + assert.ok(xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); + assert.ok(xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); + }); + }); - describe('Excluding news namespace', () => { - before(async () => { - fixture = await loadFixture({ - root: './fixtures/static/', - integrations: [ - sitemap({ - namespaces: { - news: false, - }, - }), - ], - }); - await fixture.build(); - }); + describe('Excluding news namespace', () => { + before(async () => { + fixture = await loadFixture({ + root: './fixtures/static/', + integrations: [ + sitemap({ + namespaces: { + news: false, + }, + }), + ], + }); + await fixture.build(); + }); - it('excludes news namespace but includes others', async () => { - const xml = await fixture.readFile('/sitemap-0.xml'); - assert.ok(!xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); - assert.ok(xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); - assert.ok(xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); - assert.ok(xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); - }); - }); + it('excludes news namespace but includes others', async () => { + const xml = await fixture.readFile('/sitemap-0.xml'); + assert.ok(!xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); + assert.ok(xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); + assert.ok(xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); + assert.ok(xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); + }); + }); - describe('Minimal namespaces', () => { - before(async () => { - fixture = await loadFixture({ - root: './fixtures/static/', - integrations: [ - sitemap({ - namespaces: { - news: false, - xhtml: false, - image: false, - video: false, - }, - }), - ], - }); - await fixture.build(); - }); + describe('Minimal namespaces', () => { + before(async () => { + fixture = await loadFixture({ + root: './fixtures/static/', + integrations: [ + sitemap({ + namespaces: { + news: false, + xhtml: false, + image: false, + video: false, + }, + }), + ], + }); + await fixture.build(); + }); - it('excludes all optional namespaces', async () => { - const xml = await fixture.readFile('/sitemap-0.xml'); - assert.ok(!xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); - assert.ok(!xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); - assert.ok(!xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); - assert.ok(!xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); - // Still includes the main sitemap namespace - assert.ok(xml.includes('xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"')); - }); - }); -}); \ No newline at end of file + it('excludes all optional namespaces', async () => { + const xml = await fixture.readFile('/sitemap-0.xml'); + assert.ok(!xml.includes('xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"')); + assert.ok(!xml.includes('xmlns:xhtml="http://www.w3.org/1999/xhtml"')); + assert.ok(!xml.includes('xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"')); + assert.ok(!xml.includes('xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"')); + // Still includes the main sitemap namespace + assert.ok(xml.includes('xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"')); + }); + }); +}); From 3c14936b4046062227925ec26c46689418cc3a22 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Wed, 17 Sep 2025 01:14:22 -0700 Subject: [PATCH 25/50] [ci] release (#14342) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/eleven-geckos-ring.md | 5 --- .changeset/few-parrots-cover.md | 5 --- .changeset/full-dingos-repeat.md | 21 --------- .changeset/kind-snakes-grow.md | 5 --- .changeset/many-symbols-arrive.md | 5 --- .changeset/rich-insects-scream.md | 41 ------------------ examples/basics/package.json | 2 +- examples/blog/package.json | 4 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-multiple/package.json | 2 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 2 +- examples/integration/package.json | 2 +- examples/minimal/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 2 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/with-markdoc/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 12 ++++++ packages/astro/package.json | 2 +- packages/db/CHANGELOG.md | 22 ++++++++++ packages/db/package.json | 2 +- packages/integrations/sitemap/CHANGELOG.md | 42 ++++++++++++++++++ packages/integrations/sitemap/package.json | 2 +- pnpm-lock.yaml | 48 ++++++++++----------- 36 files changed, 127 insertions(+), 133 deletions(-) delete mode 100644 .changeset/eleven-geckos-ring.md delete mode 100644 .changeset/few-parrots-cover.md delete mode 100644 .changeset/full-dingos-repeat.md delete mode 100644 .changeset/kind-snakes-grow.md delete mode 100644 .changeset/many-symbols-arrive.md delete mode 100644 .changeset/rich-insects-scream.md diff --git a/.changeset/eleven-geckos-ring.md b/.changeset/eleven-geckos-ring.md deleted file mode 100644 index 138116d839fb..000000000000 --- a/.changeset/eleven-geckos-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Adds Vite version & integration versions to output of `astro info` diff --git a/.changeset/few-parrots-cover.md b/.changeset/few-parrots-cover.md deleted file mode 100644 index bf447282b6d4..000000000000 --- a/.changeset/few-parrots-cover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes support for declarative Shadow DOM when using the `` component diff --git a/.changeset/full-dingos-repeat.md b/.changeset/full-dingos-repeat.md deleted file mode 100644 index 54e7490080a6..000000000000 --- a/.changeset/full-dingos-repeat.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@astrojs/db': minor ---- - -Adds a new libSQL web driver to support environments that require a non-Node.js libSQL client such as Cloudflare or Deno. Also adds a new `mode` configuration option to allow you to set your client connection type: `node` (default) or `web`. - -The default db `node` driver mode is identical to the previous AstroDB functionality. No changes have been made to how AstroDB works in Node.js environments, and this is still the integration's default behavior. If you are currently using AstroDB, no changes to your project code are required and setting a `mode` is not required. - -However, if you have previously been unable to use AstroDB because you required a non-Node.js libSQL client, you can now install and configure the libSQL web driver by setting `mode: 'web'` in your `db` configuration: - -```ts -import db from '@astrojs/db'; -import { defineConfig } from 'astro/config'; - -// https://astro.build/config -export default defineConfig({ - integrations: [db({ mode: 'web' })], -}); -``` - -For more information, see the [`@astrojs/db` documentation](https://docs.astro.build/en/guides/integrations-guide/db/#mode). \ No newline at end of file diff --git a/.changeset/kind-snakes-grow.md b/.changeset/kind-snakes-grow.md deleted file mode 100644 index 101928a83552..000000000000 --- a/.changeset/kind-snakes-grow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Improves error reporting for content collections by adding logging for configuration errors that had previously been silently ignored. Also adds a new error that is thrown if a live collection is used in `content.config.ts` rather than `live.config.ts`. diff --git a/.changeset/many-symbols-arrive.md b/.changeset/many-symbols-arrive.md deleted file mode 100644 index dbd81fed9886..000000000000 --- a/.changeset/many-symbols-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes a regression in non node runtimes diff --git a/.changeset/rich-insects-scream.md b/.changeset/rich-insects-scream.md deleted file mode 100644 index 143b9e7601fd..000000000000 --- a/.changeset/rich-insects-scream.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -'@astrojs/sitemap': minor ---- - -Adds a new configuration option `namespaces` for more control over XML namespaces used in sitemap generation - -Excluding unused namespaces can help create cleaner, more focused sitemaps that are faster for search engines to parse and use less bandwidth. If your site doesn't have news content, videos, or multiple languages, you can exclude those namespaces to reduce XML bloat. - -The `namespaces` option allows you to configure `news`, `xhtml`, `image`, and `video` namespaces independently. All namespaces are enabled by default for backward compatibility and no change to existing projects is necessary. But now, you can choose to streamline your XML and avoid unnecessary code. - -For example, to exclude the video namespace from your sitemap, set `video: false` in your configuration: - -``` -// astro.config.mjs -import { sitemap } from '@astrojs/sitemap'; - -export default { - integrations: [ - sitemap({ - namespaces: { - video: false, - // other namespaces remain enabled by default - } - }) - ] -}; -``` - -The generated XML will not include the `xmlns:video` namespace: - -``` - - - - -``` diff --git a/examples/basics/package.json b/examples/basics/package.json index 70dd48fb8bd4..c859a85358bd 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index e205cf2e0c03..487616d47996 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -12,8 +12,8 @@ "dependencies": { "@astrojs/mdx": "^4.3.5", "@astrojs/rss": "^4.0.12", - "@astrojs/sitemap": "^3.5.1", - "astro": "^5.13.7", + "@astrojs/sitemap": "^3.6.0", + "astro": "^5.13.8", "sharp": "^0.34.3" } } diff --git a/examples/component/package.json b/examples/component/package.json index 0d5283dc4895..4d49f5f2ced8 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^5.13.7" + "astro": "^5.13.8" }, "peerDependencies": { "astro": "^4.0.0 || ^5.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index 4898f998a0a8..8d60f06fa118 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/react": "^4.3.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "^3.2.4" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index f3e4c587ac32..907ac8d3e52d 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -13,6 +13,6 @@ "@astrojs/alpinejs": "^0.4.9", "@types/alpinejs": "^3.13.11", "alpinejs": "^3.15.0", - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 643ea15f4ff5..3eddb62e37b8 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -17,7 +17,7 @@ "@astrojs/vue": "^5.1.1", "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", - "astro": "^5.13.7", + "astro": "^5.13.8", "preact": "^10.27.2", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index f39df669af2d..b24b0dfb4667 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/preact": "^4.1.1", "@preact/signals": "^2.3.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "preact": "^10.27.2" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index bf144e30f937..4b2b4b2a9b52 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -13,7 +13,7 @@ "@astrojs/react": "^4.3.1", "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", - "astro": "^5.13.7", + "astro": "^5.13.8", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index 7c3df72976bf..b2b8ad8ce951 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/solid-js": "^5.1.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "solid-js": "^1.9.9" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index 71c41058f061..c7dcb468ef9d 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/svelte": "^7.1.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "svelte": "^5.38.10" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 8e266683bc65..d67d3ea6443e 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/vue": "^5.1.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "vue": "^3.5.21" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index bccbf2fabf14..1d541cc00b43 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -11,6 +11,6 @@ }, "dependencies": { "@astrojs/node": "^9.4.3", - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index c97d794d1661..4cb44daa6329 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^5.13.7" + "astro": "^5.13.8" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index 2987ad3c419d..0840a4e5fd3c 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index c868395c6ccd..ed24ca5bde69 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index bf2fdbd8203a..4032340ffa1c 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/node": "^9.4.3", "@astrojs/svelte": "^7.1.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "svelte": "^5.38.10" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index b3b3c202027e..a924ec0a3de8 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -9,7 +9,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.7", + "astro": "^5.13.8", "sass": "^1.92.1", "sharp": "^0.34.3" } diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index c7adca14be97..a9be41a4ee50 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -16,6 +16,6 @@ }, "devDependencies": { "@types/node": "^18.17.8", - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 353de132bd9c..bf56be67086b 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -11,6 +11,6 @@ }, "dependencies": { "@astrojs/markdoc": "^0.15.6", - "astro": "^5.13.7" + "astro": "^5.13.8" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index b99d3d2bcf96..7cd7faa5709f 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/mdx": "^4.3.5", "@astrojs/preact": "^4.1.1", - "astro": "^5.13.7", + "astro": "^5.13.8", "preact": "^10.27.2" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 4664d35c0b99..f1449cb860c1 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/preact": "^4.1.1", "@nanostores/preact": "^0.5.2", - "astro": "^5.13.7", + "astro": "^5.13.8", "nanostores": "^0.11.4", "preact": "^10.27.2" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 3cdf747c45f6..ff9e068b6b68 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -13,7 +13,7 @@ "@astrojs/mdx": "^4.3.5", "@tailwindcss/vite": "^4.1.13", "@types/canvas-confetti": "^1.9.0", - "astro": "^5.13.7", + "astro": "^5.13.8", "canvas-confetti": "^1.9.3", "tailwindcss": "^4.1.13" } diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index b3a7e05e063f..6db7bb4b8f48 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -11,7 +11,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^5.13.7", + "astro": "^5.13.8", "vitest": "^3.2.4" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index 1f02aef90cce..000ae942136c 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,17 @@ # astro +## 5.13.8 + +### Patch Changes + +- [#14300](https://github.com/withastro/astro/pull/14300) [`bd4a70b`](https://github.com/withastro/astro/commit/bd4a70bde3c8e0c04e2754cf26d222aa36d3c3c8) Thanks [@louisescher](https://github.com/louisescher)! - Adds Vite version & integration versions to output of `astro info` + +- [#14341](https://github.com/withastro/astro/pull/14341) [`f75fd99`](https://github.com/withastro/astro/commit/f75fd9977f0f3f8afd1128cc3616205edec0a11c) Thanks [@delucis](https://github.com/delucis)! - Fixes support for declarative Shadow DOM when using the `` component + +- [#14350](https://github.com/withastro/astro/pull/14350) [`f59581f`](https://github.com/withastro/astro/commit/f59581f2d4566c684c587af816e22763440ded19) Thanks [@ascorbic](https://github.com/ascorbic)! - Improves error reporting for content collections by adding logging for configuration errors that had previously been silently ignored. Also adds a new error that is thrown if a live collection is used in `content.config.ts` rather than `live.config.ts`. + +- [#14343](https://github.com/withastro/astro/pull/14343) [`13f7d36`](https://github.com/withastro/astro/commit/13f7d36688042cdb5644786d795fc921841da76a) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a regression in non node runtimes + ## 5.13.7 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index c13ef9506e13..acdbef454002 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "5.13.7", + "version": "5.13.8", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/packages/db/CHANGELOG.md b/packages/db/CHANGELOG.md index f31c53ada55e..079bcd458886 100644 --- a/packages/db/CHANGELOG.md +++ b/packages/db/CHANGELOG.md @@ -1,5 +1,27 @@ # @astrojs/db +## 0.18.0 + +### Minor Changes + +- [#14204](https://github.com/withastro/astro/pull/14204) [`d71448e`](https://github.com/withastro/astro/commit/d71448efd8b6693ef5d2b071ef4dea20a289699c) Thanks [@Adammatthiesen](https://github.com/Adammatthiesen)! - Adds a new libSQL web driver to support environments that require a non-Node.js libSQL client such as Cloudflare or Deno. Also adds a new `mode` configuration option to allow you to set your client connection type: `node` (default) or `web`. + + The default db `node` driver mode is identical to the previous AstroDB functionality. No changes have been made to how AstroDB works in Node.js environments, and this is still the integration's default behavior. If you are currently using AstroDB, no changes to your project code are required and setting a `mode` is not required. + + However, if you have previously been unable to use AstroDB because you required a non-Node.js libSQL client, you can now install and configure the libSQL web driver by setting `mode: 'web'` in your `db` configuration: + + ```ts + import db from '@astrojs/db'; + import { defineConfig } from 'astro/config'; + + // https://astro.build/config + export default defineConfig({ + integrations: [db({ mode: 'web' })], + }); + ``` + + For more information, see the [`@astrojs/db` documentation](https://docs.astro.build/en/guides/integrations-guide/db/#mode). + ## 0.17.2 ### Patch Changes diff --git a/packages/db/package.json b/packages/db/package.json index f5a3a6c5069d..20df36a2df8b 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/db", - "version": "0.17.2", + "version": "0.18.0", "description": "Add libSQL support to your Astro site", "license": "MIT", "repository": { diff --git a/packages/integrations/sitemap/CHANGELOG.md b/packages/integrations/sitemap/CHANGELOG.md index ca58788afd55..b7c57c175ba3 100644 --- a/packages/integrations/sitemap/CHANGELOG.md +++ b/packages/integrations/sitemap/CHANGELOG.md @@ -1,5 +1,47 @@ # @astrojs/sitemap +## 3.6.0 + +### Minor Changes + +- [#14285](https://github.com/withastro/astro/pull/14285) [`bedc31b`](https://github.com/withastro/astro/commit/bedc31ba7318dd89545503eaeeac4e0615843834) Thanks [@jdcolombo](https://github.com/jdcolombo)! - Adds a new configuration option `namespaces` for more control over XML namespaces used in sitemap generation + + Excluding unused namespaces can help create cleaner, more focused sitemaps that are faster for search engines to parse and use less bandwidth. If your site doesn't have news content, videos, or multiple languages, you can exclude those namespaces to reduce XML bloat. + + The `namespaces` option allows you to configure `news`, `xhtml`, `image`, and `video` namespaces independently. All namespaces are enabled by default for backward compatibility and no change to existing projects is necessary. But now, you can choose to streamline your XML and avoid unnecessary code. + + For example, to exclude the video namespace from your sitemap, set `video: false` in your configuration: + + ``` + // astro.config.mjs + import { sitemap } from '@astrojs/sitemap'; + + export default { + integrations: [ + sitemap({ + namespaces: { + video: false, + // other namespaces remain enabled by default + } + }) + ] + }; + ``` + + The generated XML will not include the `xmlns:video` namespace: + + ``` + + + + + ``` + ## 3.5.1 ### Patch Changes diff --git a/packages/integrations/sitemap/package.json b/packages/integrations/sitemap/package.json index 7bd4e38a5309..0c767d5d31c1 100644 --- a/packages/integrations/sitemap/package.json +++ b/packages/integrations/sitemap/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/sitemap", "description": "Generate a sitemap for your Astro site", - "version": "3.5.1", + "version": "3.6.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8321dd15ac75..76dbe7806fb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,7 +149,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/blog: @@ -161,10 +161,10 @@ importers: specifier: ^4.0.12 version: link:../../packages/astro-rss '@astrojs/sitemap': - specifier: ^3.5.1 + specifier: ^3.6.0 version: link:../../packages/integrations/sitemap astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro sharp: specifier: ^0.34.3 @@ -173,7 +173,7 @@ importers: examples/component: devDependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/container-with-vitest: @@ -182,7 +182,7 @@ importers: specifier: ^4.3.1 version: link:../../packages/integrations/react astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -213,7 +213,7 @@ importers: specifier: ^3.15.0 version: 3.15.0 astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/framework-multiple: @@ -240,7 +240,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.24) astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro preact: specifier: ^10.27.2 @@ -270,7 +270,7 @@ importers: specifier: ^2.3.1 version: 2.3.1(preact@10.27.2) astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro preact: specifier: ^10.27.2 @@ -288,7 +288,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.24) astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -303,7 +303,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/solid astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro solid-js: specifier: ^1.9.9 @@ -315,7 +315,7 @@ importers: specifier: ^7.1.1 version: link:../../packages/integrations/svelte astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro svelte: specifier: ^5.38.10 @@ -327,7 +327,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/vue astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro vue: specifier: ^3.5.21 @@ -339,25 +339,25 @@ importers: specifier: ^9.4.3 version: link:../../packages/integrations/node astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/minimal: dependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/ssr: @@ -369,7 +369,7 @@ importers: specifier: ^7.1.1 version: link:../../packages/integrations/svelte astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro svelte: specifier: ^5.38.10 @@ -378,7 +378,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro sass: specifier: ^1.92.1 @@ -393,7 +393,7 @@ importers: specifier: ^18.17.8 version: 18.19.124 astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/with-markdoc: @@ -402,7 +402,7 @@ importers: specifier: ^0.15.6 version: link:../../packages/integrations/markdoc astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro examples/with-mdx: @@ -414,7 +414,7 @@ importers: specifier: ^4.1.1 version: link:../../packages/integrations/preact astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro preact: specifier: ^10.27.2 @@ -429,7 +429,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.4)(preact@10.27.2) astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro nanostores: specifier: ^0.11.4 @@ -450,7 +450,7 @@ importers: specifier: ^1.9.0 version: 1.9.0 astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro canvas-confetti: specifier: ^1.9.3 @@ -462,7 +462,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^5.13.7 + specifier: ^5.13.8 version: link:../../packages/astro vitest: specifier: ^3.2.4 From 16bb9f082bb88b6c001a3c60b5a5deb781a229ef Mon Sep 17 00:00:00 2001 From: Louis Escher <66965600+louisescher@users.noreply.github.com> Date: Thu, 18 Sep 2025 13:01:50 +0200 Subject: [PATCH 26/50] chore: Bump pnpm version to 10.17.0 to avoid issues with the (#14397) `minimumReleaseAge` not being used --- package.json | 2 +- pnpm-lock.yaml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a12e472bd121..6337568adf56 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "engines": { "node": "^18.20.8 || ^20.3.0 || >=22.0.0" }, - "packageManager": "pnpm@10.5.1", + "packageManager": "pnpm@10.17.0", "dependencies": { "astro-benchmark": "workspace:*" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76dbe7806fb1..fa3bfff03d23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6728,24 +6728,28 @@ packages: engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [musl] '@biomejs/cli-linux-arm64@2.2.4': resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [glibc] '@biomejs/cli-linux-x64-musl@2.2.4': resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [musl] '@biomejs/cli-linux-x64@2.2.4': resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [glibc] '@biomejs/cli-win32-arm64@2.2.4': resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==} @@ -7940,144 +7944,170 @@ packages: resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm64@1.2.0': resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.0': resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.0': resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.0': resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.0': resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-arm64@1.2.0': resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.0': resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm64@0.34.3': resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.34.3': resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-ppc64@0.34.3': resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.34.3': resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.34.3': resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-arm64@0.34.3': resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.34.3': resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} @@ -8420,41 +8450,49 @@ packages: resolution: {integrity: sha512-ukHZp9Vm07AlxqdOLFf8Bj4inzpt+ISbbODvwwHxX32GfcMLWYYJGAYWc13IGhWoElvWnI7D1M9ifDGyTNRGzg==} cpu: [arm64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-arm64-musl@11.7.1': resolution: {integrity: sha512-atkZ1OIt6t90kjQz1iqq6cN3OpfPG5zUJlO64Vd1ieYeqHRkOFeRgnWEobTePUHi34NlYr7mNZqIaAg7gjPUFg==} cpu: [arm64] os: [linux] + libc: [musl] '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': resolution: {integrity: sha512-HGgV4z3JwVF4Qvg2a1GhDnqn8mKLihy5Gp4rMfqNIAlERPSyIxo8oPQIL1XQKLYyyrkEEO99uwM+4cQGwhtbpQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': resolution: {integrity: sha512-+vCO7iOR1s6VGefV02R2a702IASNWhSNm/MrR8RcWjKChmU0G+d1iC0oToUrGC4ovAEfstx2/O8EkROnfcLgrA==} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': resolution: {integrity: sha512-3folNmS5gYNFy/9HYzLcdeThqAGvDJU0gQKrhHn7RPWQa58yZ0ZPpBMk6KRSSO61+wkchkL+0sdcLsoe5wZW8g==} cpu: [riscv64] os: [linux] + libc: [musl] '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': resolution: {integrity: sha512-Ceo4z6g8vqPUKADROFL0b7MoyXlUdOBYCxTDu/fhd/5I3Ydk2S6bxkjJdzpBdlu+h2Z+eS9lTHFvkwkaORMPzw==} cpu: [s390x] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-x64-gnu@11.7.1': resolution: {integrity: sha512-QyFW5e43imQLxiBpCImhOiP4hY9coWGjroEm8elDqGNNaA7vXooaMQS2N3avMQawSaKhsb/3RemxaZ852XG38Q==} cpu: [x64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-x64-musl@11.7.1': resolution: {integrity: sha512-JhuCqCqktqQyQVc37V+eDiP3buCIuyCLpb92tUEyAP8nY3dy2b/ojMrH1ZNnJUlfY/67AqoZPL6nQGAB2WA3Sg==} cpu: [x64] os: [linux] + libc: [musl] '@oxc-resolver/binding-wasm32-wasi@11.7.1': resolution: {integrity: sha512-sMXm5Z2rfBwkCUespZBJCPhCVbgh/fpYQ23BQs0PmnvWoXrGQHWvnvg1p/GYmleN+nwe8strBjfutirZFiC5lA==} @@ -8505,36 +8543,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-wasm@2.5.1': resolution: {integrity: sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw==} @@ -8674,56 +8718,67 @@ packages: resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.50.2': resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.50.2': resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.50.2': resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.50.2': resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.50.2': resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.50.2': resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.50.2': resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.50.2': resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.50.2': resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.50.2': resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openharmony-arm64@4.50.2': resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==} @@ -8839,24 +8894,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.1.13': resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.1.13': resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.1.13': resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.1.13': resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} @@ -11354,6 +11413,7 @@ packages: libsql@0.5.22: resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} + cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] lightningcss-darwin-arm64@1.30.1: @@ -11385,24 +11445,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.30.1: resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.30.1: resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.30.1: resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.30.1: resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} From 54dcd04350b83cbf368dfb8d72f7d2ddf209a91e Mon Sep 17 00:00:00 2001 From: "Fred K. Schott" <622227+FredKSchott@users.noreply.github.com> Date: Thu, 18 Sep 2025 22:44:40 -0700 Subject: [PATCH 27/50] Remove warning for bun, causing unexpected console spam (#14402) * Remove warning for unsupported package manager 'bun' * add changeset * [skip ci] Update changeset --------- Co-authored-by: Matt Kane --- .changeset/rare-avocados-sin.md | 5 +++++ packages/astro/src/cli/info/index.ts | 6 ------ 2 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 .changeset/rare-avocados-sin.md diff --git a/.changeset/rare-avocados-sin.md b/.changeset/rare-avocados-sin.md new file mode 100644 index 000000000000..ab2f72e7e594 --- /dev/null +++ b/.changeset/rare-avocados-sin.md @@ -0,0 +1,5 @@ +--- +"astro": patch +--- + +Removes warning that caused unexpected console spam when using Bun diff --git a/packages/astro/src/cli/info/index.ts b/packages/astro/src/cli/info/index.ts index 3bae95edae1a..4a00ad9c0c49 100644 --- a/packages/astro/src/cli/info/index.ts +++ b/packages/astro/src/cli/info/index.ts @@ -76,12 +76,6 @@ export async function getInfoOutput({ output += printRow(label, value, print); } - if (packageManager === 'bun') { - console.warn( - 'Bun is not officially supported by Astro. Unable to retreive certain version information.', - ); - } - return output.trim(); } From 995e0bd15ef65f6fe93276d077b28f343f5d5c78 Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Fri, 19 Sep 2025 10:20:01 +0200 Subject: [PATCH 28/50] chore(astro): split v4 changelog (#14403) --- packages/astro/CHANGELOG-v4.md | 4481 +++++++++++++++++++++++++++++++ packages/astro/CHANGELOG.md | 4482 -------------------------------- 2 files changed, 4481 insertions(+), 4482 deletions(-) create mode 100644 packages/astro/CHANGELOG-v4.md diff --git a/packages/astro/CHANGELOG-v4.md b/packages/astro/CHANGELOG-v4.md new file mode 100644 index 000000000000..447c8b3d0ed5 --- /dev/null +++ b/packages/astro/CHANGELOG-v4.md @@ -0,0 +1,4481 @@ +## 4.16.16 + +### Patch Changes + +- [#12542](https://github.com/withastro/astro/pull/12542) [`65e50eb`](https://github.com/withastro/astro/commit/65e50eb7b6d7b10a193bba7d292804ac0e55be18) Thanks [@kadykov](https://github.com/kadykov)! - Fix JPEG image size determination + +- [#12525](https://github.com/withastro/astro/pull/12525) [`cf0d8b0`](https://github.com/withastro/astro/commit/cf0d8b08a0f16bba7310d1a92c82b5a276682e8c) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where with `i18n` enabled, Astro couldn't render the `404.astro` component for non-existent routes. + +## 4.16.15 + +### Patch Changes + +- [#12498](https://github.com/withastro/astro/pull/12498) [`b140a3f`](https://github.com/withastro/astro/commit/b140a3f6d821127f927b7cb938294549e41c5168) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression where Astro was trying to access `Request.headers` + +## 4.16.14 + +### Patch Changes + +- [#12480](https://github.com/withastro/astro/pull/12480) [`c3b7e7c`](https://github.com/withastro/astro/commit/c3b7e7cfa13603c08eb923703f31a92d514e82db) Thanks [@matthewp](https://github.com/matthewp)! - Removes the default throw behavior in `astro:env` + +- [#12444](https://github.com/withastro/astro/pull/12444) [`28dd3ce`](https://github.com/withastro/astro/commit/28dd3ce5222a667fe113238254edf59318b3fa14) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where a server island hydration script might fail case the island ID misses from the DOM. + +- [#12476](https://github.com/withastro/astro/pull/12476) [`80a9a52`](https://github.com/withastro/astro/commit/80a9a5299a9d51f2b09900d3200976d687feae8f) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where the Content Layer `glob()` loader would not update when renaming or deleting an entry + +- [#12418](https://github.com/withastro/astro/pull/12418) [`25baa4e`](https://github.com/withastro/astro/commit/25baa4ed0c5f55fa85c2c7e2c15848937ed1dc9b) Thanks [@oliverlynch](https://github.com/oliverlynch)! - Fix cached image redownloading if it is the first asset + +- [#12477](https://github.com/withastro/astro/pull/12477) [`46f6b38`](https://github.com/withastro/astro/commit/46f6b386b3db6332f286d79958ef10261958cceb) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the SSR build was emitting the `dist/server/entry.mjs` file with an incorrect import at the top of the file/ + +- [#12365](https://github.com/withastro/astro/pull/12365) [`a23985b`](https://github.com/withastro/astro/commit/a23985b02165c2ddce56d511b3f97b6815c452c9) Thanks [@apatel369](https://github.com/apatel369)! - Fixes an issue where `Astro.currentLocale` was not correctly returning the locale for 404 and 500 pages. + +## 4.16.13 + +### Patch Changes + +- [#12436](https://github.com/withastro/astro/pull/12436) [`453ec6b`](https://github.com/withastro/astro/commit/453ec6b12f8c021e0bd0fd0ea9f71c8fc280f4b1) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a potential null access in the clientside router + +- [#12392](https://github.com/withastro/astro/pull/12392) [`0462219`](https://github.com/withastro/astro/commit/0462219612183b65867aaaef9fa538d89f201999) Thanks [@apatel369](https://github.com/apatel369)! - Fixes an issue where scripts were not correctly injected during the build. The issue was triggered when there were injected routes with the same `entrypoint` and different `pattern` + +## 4.16.12 + +### Patch Changes + +- [#12420](https://github.com/withastro/astro/pull/12420) [`acac0af`](https://github.com/withastro/astro/commit/acac0af53466f8a381ccdac29ed2ad735d7b4e79) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the dev server returns a 404 status code when a user middleware returns a valid `Response`. + +## 4.16.11 + +### Patch Changes + +- [#12305](https://github.com/withastro/astro/pull/12305) [`f5f7109`](https://github.com/withastro/astro/commit/f5f71094ec74961b4cca2ee451798abd830c617a) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where the error overlay would not escape the message + +- [#12402](https://github.com/withastro/astro/pull/12402) [`823e73b`](https://github.com/withastro/astro/commit/823e73b164eab4115af31b1de8e978f2b4e0a95d) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where Astro allowed to call an action without using `Astro.callAction`. This is now invalid, and Astro will show a proper error. + + ```diff + --- + import { actions } from "astro:actions"; + + -const result = actions.getUser({ userId: 123 }); + +const result = Astro.callAction(actions.getUser, { userId: 123 }); + --- + ``` + +- [#12401](https://github.com/withastro/astro/pull/12401) [`9cca108`](https://github.com/withastro/astro/commit/9cca10843912698e13d35f1bc3c493e2c96a06ee) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected 200 status in dev server logs for action errors and redirects. + +## 4.16.10 + +### Patch Changes + +- [#12311](https://github.com/withastro/astro/pull/12311) [`bf2723e`](https://github.com/withastro/astro/commit/bf2723e83140099914b29c6d51eb147a065be460) Thanks [@dinesh-58](https://github.com/dinesh-58)! - Adds `checked` to the list of boolean attributes. + +- [#12363](https://github.com/withastro/astro/pull/12363) [`222f718`](https://github.com/withastro/astro/commit/222f71894cc7118319ce83b3b29fa61a9dbebb75) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes code generated by `astro add` command when adding a version of an integration other than the default `latest`. + +- [#12368](https://github.com/withastro/astro/pull/12368) [`493fe43`](https://github.com/withastro/astro/commit/493fe43cd3ef94b087b8958031ecc964ae73463b) Thanks [@bluwy](https://github.com/bluwy)! - Improves error logs when executing commands + +- [#12355](https://github.com/withastro/astro/pull/12355) [`c4726d7`](https://github.com/withastro/astro/commit/c4726d7ba8cc93157390ce64d5c8b718ed5cac29) Thanks [@apatel369](https://github.com/apatel369)! - Improves error reporting for invalid frontmatter in MDX files during the `astro build` command. The error message now includes the file path where the frontmatter parsing failed. + +## 4.16.9 + +### Patch Changes + +- [#12333](https://github.com/withastro/astro/pull/12333) [`836cd91`](https://github.com/withastro/astro/commit/836cd91c37cea8ae58dd04a326435fcb2c88f358) Thanks [@imattacus](https://github.com/imattacus)! - Destroy the server response stream if async error is thrown + +- [#12358](https://github.com/withastro/astro/pull/12358) [`7680349`](https://github.com/withastro/astro/commit/76803498738f9e86e7948ce81e01e63607e03549) Thanks [@spacedawwwg](https://github.com/spacedawwwg)! - Honors `inlineAstroConfig` parameter in `getViteConfig` when creating a logger + +- [#12353](https://github.com/withastro/astro/pull/12353) [`35795a1`](https://github.com/withastro/astro/commit/35795a1a54b2bfaf331c58ca91b47e5672e08c4e) Thanks [@hippotastic](https://github.com/hippotastic)! - Fixes an issue in dev server watch file handling that could cause multiple restarts for a single file change. + +- [#12351](https://github.com/withastro/astro/pull/12351) [`5751488`](https://github.com/withastro/astro/commit/57514881655b62a0bc39ace1e1ed4b89b96f74ca) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Reverts a change made in `4.16.6` that prevented usage of `astro:env` secrets inside middleware in SSR + +- [#12346](https://github.com/withastro/astro/pull/12346) [`20e5a84`](https://github.com/withastro/astro/commit/20e5a843c86e9328814615edf3e8a6fb5e4696cc) Thanks [@bluwy](https://github.com/bluwy)! - Fixes sourcemap generation when prefetch is enabled + +- [#12349](https://github.com/withastro/astro/pull/12349) [`1fc83d3`](https://github.com/withastro/astro/commit/1fc83d3ba8315c31b2a3aadc77b20b1615d261a0) Thanks [@norskeld](https://github.com/norskeld)! - Fixes the `getImage` options type so it properly extends `ImageTransform` + +## 4.16.8 + +### Patch Changes + +- [#12338](https://github.com/withastro/astro/pull/12338) [`9ca89b3`](https://github.com/withastro/astro/commit/9ca89b3e13d47e146989cfabb916d6599d140f03) Thanks [@situ2001](https://github.com/situ2001)! - Resets `NODE_ENV` to ensure install command run in dev mode + +- [#12286](https://github.com/withastro/astro/pull/12286) [`9d6bcdb`](https://github.com/withastro/astro/commit/9d6bcdb88fcb9df0c5c70e2b591bcf962ce55f63) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where a warning for experimental `astro:env` support would be shown when using an adapter but not actually using `astro:env` + +- [#12342](https://github.com/withastro/astro/pull/12342) [`ffc836b`](https://github.com/withastro/astro/commit/ffc836bac0cdea684ea91f958ac8298d4ee4b07d) Thanks [@liruifengv](https://github.com/liruifengv)! - Fixes a typo in the command name of the CLI + +- [#12301](https://github.com/withastro/astro/pull/12301) [`0cfc69d`](https://github.com/withastro/astro/commit/0cfc69d499815d4e1f1dc37cf32653195586087a) Thanks [@apatel369](https://github.com/apatel369)! - Fixes an issue with action handler context by passing the correct context (`ActionAPIContext`). + +- [#12312](https://github.com/withastro/astro/pull/12312) [`5642ef9`](https://github.com/withastro/astro/commit/5642ef9029890fc29793c160321f78f62cdaafcb) Thanks [@koyopro](https://github.com/koyopro)! - Fixes an issue where using `getViteConfig()` returns incorrect and duplicate configuration + +- [#12245](https://github.com/withastro/astro/pull/12245) [`1d4f6a4`](https://github.com/withastro/astro/commit/1d4f6a4989bc1cfd7109b1bff41503f115660e02) Thanks [@bmenant](https://github.com/bmenant)! - Add `components` property to MDXInstance type definition (RenderResult and module import) + +- [#12340](https://github.com/withastro/astro/pull/12340) [`94eaeea`](https://github.com/withastro/astro/commit/94eaeea1c437402ffc44103126b355adab4b8a01) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where Astro actions didn't work when `base` was different from `/` + +## 4.16.7 + +### Patch Changes + +- [#12263](https://github.com/withastro/astro/pull/12263) [`e9e8080`](https://github.com/withastro/astro/commit/e9e8080a8139f898dcfa3c030f5ddaa98413c160) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes conflict between server islands and on-demand dynamic routes in the form of `/[...rest]` or `/[paramA]/[paramB]`. + +- [#12279](https://github.com/withastro/astro/pull/12279) [`b781f88`](https://github.com/withastro/astro/commit/b781f8860c7d11e51fb60a0d6528bc88913ffc35) Thanks [@jsparkdev](https://github.com/jsparkdev)! - Update wrong error message + +- [#12273](https://github.com/withastro/astro/pull/12273) [`c2ee963`](https://github.com/withastro/astro/commit/c2ee963cb6c0a65481be505848a7272d800f2f7b) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes an issue with some package managers where sites would not build if TypeScript was not installed. + +- [#12235](https://github.com/withastro/astro/pull/12235) [`a75bc5e`](https://github.com/withastro/astro/commit/a75bc5e3068ed80366a03efbec78b3b0f8837516) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where Astro Actions couldn't redirect to the correct pathname when there was a rewrite involved. + +- [#11839](https://github.com/withastro/astro/pull/11839) [`ff522b9`](https://github.com/withastro/astro/commit/ff522b96a01391a29b44f820dfcc2a2176d871e7) Thanks [@icaliman](https://github.com/icaliman)! - Fixes error when returning a top-level `null` from an Astro file frontmatter + +- [#12272](https://github.com/withastro/astro/pull/12272) [`388d237`](https://github.com/withastro/astro/commit/388d2375b6900e6401e1c711087ee0b2176418dd) Thanks [@ascorbic](https://github.com/ascorbic)! - Correctly handles local images when using a base path in SSR + +## 4.16.6 + +### Patch Changes + +- [#11823](https://github.com/withastro/astro/pull/11823) [`a3d30a6`](https://github.com/withastro/astro/commit/a3d30a602aaa1755197c73f0b51cace61f9088b3) Thanks [@DerTimonius](https://github.com/DerTimonius)! - fix: improve error message when inferSize is used in local images with the Image component + +- [#12227](https://github.com/withastro/astro/pull/12227) [`8b1a641`](https://github.com/withastro/astro/commit/8b1a641be9de4baa9ae48dd0d045915fbbeffa8c) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where environment variables would not be refreshed when using `astro:env` + +- [#12239](https://github.com/withastro/astro/pull/12239) [`2b6daa5`](https://github.com/withastro/astro/commit/2b6daa5840c18729c41f6cd8b4571b88d0cba119) Thanks [@ematipico](https://github.com/ematipico)! - **BREAKING CHANGE to the experimental Container API only** + + Changes the default page rendering behavior of Astro components in containers, and adds a new option `partial: false` to render full Astro pages as before. + + Previously, the Container API was rendering all Astro components as if they were full Astro pages containing `` by default. This was not intended, and now by default, all components will render as [page partials](https://docs.astro.build/en/basics/astro-pages/#page-partials): only the contents of the components without a page shell. + + To render the component as a full-fledged Astro page, pass a new option called `partial: false` to `renderToString()` and `renderToResponse()`: + + ```js + import { experimental_AstroContainer as AstroContainer } from 'astro/container'; + import Card from '../src/components/Card.astro'; + + const container = AstroContainer.create(); + + await container.renderToString(Card); // the string will not contain `` + await container.renderToString(Card, { partial: false }); // the string will contain `` + ``` + +## 4.16.5 + +### Patch Changes + +- [#12232](https://github.com/withastro/astro/pull/12232) [`ff68ba5`](https://github.com/withastro/astro/commit/ff68ba5e1ca00f06d1afd5fbf89acea3092bb660) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with cssesc in dev mode when setting `vite.ssr.noExternal: true` + +## 4.16.4 + +### Patch Changes + +- [#12223](https://github.com/withastro/astro/pull/12223) [`79ffa5d`](https://github.com/withastro/astro/commit/79ffa5d9f75c16465134aa4ed4a3d1d59908ba8b) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes a false positive reported by the dev toolbar Audit app where a label was considered missing when associated with a button + + The `button` element can be [used with a label](https://www.w3.org/TR/2011/WD-html5-author-20110809/forms.html#category-label) (e.g. to create a switch) and should not be reported as an accessibility issue when used as a child of a `label`. + +- [#12199](https://github.com/withastro/astro/pull/12199) [`c351352`](https://github.com/withastro/astro/commit/c3513523608f319b43c050e391be08e68b801329) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression in the computation of `Astro.currentLocale` + +- [#12222](https://github.com/withastro/astro/pull/12222) [`fb55695`](https://github.com/withastro/astro/commit/fb5569583b11ef585cd0a79e97e7e9dc653f6afa) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the edge middleware couldn't correctly compute the client IP address when calling `ctx.clientAddress()` + +## 4.16.3 + +### Patch Changes + +- [#12220](https://github.com/withastro/astro/pull/12220) [`b049359`](https://github.com/withastro/astro/commit/b0493596dc338377198d0a39efc813dad515b624) Thanks [@bluwy](https://github.com/bluwy)! - Fixes accidental internal `setOnSetGetEnv` parameter rename that caused runtime errors + +- [#12197](https://github.com/withastro/astro/pull/12197) [`2aa2dfd`](https://github.com/withastro/astro/commit/2aa2dfd05dc7b7e6ad13451e6cc2afa9b1c92a32) Thanks [@ematipico](https://github.com/ematipico)! - Fix a regression where a port was incorrectly added to the `Astro.url` + +## 4.16.2 + +### Patch Changes + +- [#12206](https://github.com/withastro/astro/pull/12206) [`12b0022`](https://github.com/withastro/astro/commit/12b00225067445629e5ae451d763d03f70065f88) Thanks [@bluwy](https://github.com/bluwy)! - Reverts https://github.com/withastro/astro/pull/12173 which caused `Can't modify immutable headers` warnings and 500 errors on Cloudflare Pages + +## 4.16.1 + +### Patch Changes + +- [#12177](https://github.com/withastro/astro/pull/12177) [`a4ffbfa`](https://github.com/withastro/astro/commit/a4ffbfaa5cb460c12bd486fd75e36147f51d3e5e) Thanks [@matthewp](https://github.com/matthewp)! - Ensure we target scripts for execution in the router + + Using `document.scripts` is unsafe because if the application has a `name="scripts"` this will shadow the built-in `document.scripts`. Fix is to use `getElementsByTagName` to ensure we're only grabbing real scripts. + +- [#12173](https://github.com/withastro/astro/pull/12173) [`2d10de5`](https://github.com/withastro/astro/commit/2d10de5f212323e6e19c7ea379826dcc18fe739c) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where Astro Actions couldn't redirect to the correct pathname when there was a rewrite involved. + +## 4.16.0 + +### Minor Changes + +- [#12039](https://github.com/withastro/astro/pull/12039) [`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b) Thanks [@ematipico](https://github.com/ematipico)! - Adds a `markdown.shikiConfig.langAlias` option that allows [aliasing a non-supported code language to a known language](https://shiki.style/guide/load-lang#custom-language-aliases). This is useful when the language of your code samples is not [a built-in Shiki language](https://shiki.style/languages), but you want your Markdown source to contain an accurate language while also displaying syntax highlighting. + + The following example configures Shiki to highlight `cjs` code blocks using the `javascript` syntax highlighter: + + ```js + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + markdown: { + shikiConfig: { + langAlias: { + cjs: 'javascript', + }, + }, + }, + }); + ``` + + Then in your Markdown, you can use the alias as the language for a code block for syntax highlighting: + + ````md + ```cjs + 'use strict'; + + function commonJs() { + return 'I am a commonjs file'; + } + ``` + ```` + +- [#11984](https://github.com/withastro/astro/pull/11984) [`3ac2263`](https://github.com/withastro/astro/commit/3ac2263ff6070136bec9cffb863c38bcc31ccdfe) Thanks [@chaegumi](https://github.com/chaegumi)! - Adds a new `build.concurrency` configuration option to specify the number of pages to build in parallel + + **In most cases, you should not change the default value of `1`.** + + Use this option only when other attempts to reduce the overall rendering time (e.g. batch or cache long running tasks like fetch calls or data access) are not possible or are insufficient. + + Use this option only if the refactors are not possible. If the number is set too high, the page rendering may slow down due to insufficient memory resources and because JS is single-threaded. + + > [!WARNING] + > This feature is stable and is not considered experimental. However, this feature is only intended to address difficult performance issues, and breaking changes may occur in a [minor release](https://docs.astro.build/en/upgrade-astro/#semantic-versioning) to keep this option as performant as possible. + + ```js + // astro.config.mjs + import { defineConfig } from 'astro'; + + export default defineConfig({ + build: { + concurrency: 2, + }, + }); + ``` + +### Patch Changes + +- [#12160](https://github.com/withastro/astro/pull/12160) [`c6fd1df`](https://github.com/withastro/astro/commit/c6fd1df695d0f2a24bb49e6954064f92664ccf67) Thanks [@louisescher](https://github.com/louisescher)! - Fixes a bug where `astro.config.mts` and `astro.config.cts` weren't reloading the dev server upon modifications. + +- [#12130](https://github.com/withastro/astro/pull/12130) [`e96bcae`](https://github.com/withastro/astro/commit/e96bcae535ef2f0661f539c1d49690c531df2d4e) Thanks [@thehansys](https://github.com/thehansys)! - Fixes a bug in the parsing of `x-forwarded-\*` `Request` headers, where multiple values assigned to those headers were not correctly parsed. + + Now, headers like `x-forwarded-proto: https,http` are correctly parsed. + +- [#12147](https://github.com/withastro/astro/pull/12147) [`9db755a`](https://github.com/withastro/astro/commit/9db755ab7cfe658ec426387e297bdcd32c4bc8de) Thanks [@ascorbic](https://github.com/ascorbic)! - Skips setting statusMessage header for HTTP/2 response + + HTTP/2 doesn't support status message, so setting this was logging a warning. + +- [#12151](https://github.com/withastro/astro/pull/12151) [`bb6d37f`](https://github.com/withastro/astro/commit/bb6d37f94a283433994f9243189cb4386df0e11a) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where `Astro.currentLocale` wasn't incorrectly computed when the `defaultLocale` belonged to a custom locale path. + +- Updated dependencies [[`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b)]: + - @astrojs/markdown-remark@5.3.0 + +## 4.15.12 + +### Patch Changes + +- [#12121](https://github.com/withastro/astro/pull/12121) [`2490ceb`](https://github.com/withastro/astro/commit/2490cebdb93f13ee552cffa72b2e274d64e6b4a7) Thanks [@ascorbic](https://github.com/ascorbic)! - Support passing the values `Infinity` and `-Infinity` as island props. + +- [#12118](https://github.com/withastro/astro/pull/12118) [`f47b347`](https://github.com/withastro/astro/commit/f47b347da899c6e1dcd0b2e7887f7fce6ec8e270) Thanks [@Namchee](https://github.com/Namchee)! - Removes the `strip-ansi` dependency in favor of the native Node API + +- [#12126](https://github.com/withastro/astro/pull/12126) [`6e1dfeb`](https://github.com/withastro/astro/commit/6e1dfeb76bec09d24928bab798c6ad3280f42e84) Thanks [@ascorbic](https://github.com/ascorbic)! - Clear content layer cache when astro version changes + +- [#12117](https://github.com/withastro/astro/pull/12117) [`a46839a`](https://github.com/withastro/astro/commit/a46839a5c818b7de63c36d0c7e27f1a8f3b773dc) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Updates Vite links to use their new domain + +- [#12124](https://github.com/withastro/astro/pull/12124) [`499fbc9`](https://github.com/withastro/astro/commit/499fbc91a6bdad8c86ff13a8caf1fa09433796b9) Thanks [@ascorbic](https://github.com/ascorbic)! - Allows special characters in Action names + +- [#12123](https://github.com/withastro/astro/pull/12123) [`b8673df`](https://github.com/withastro/astro/commit/b8673df51c6cc4ce6a288f8eb609b7a438a07d82) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes missing `body` property on CollectionEntry types for content layer entries + +- [#12132](https://github.com/withastro/astro/pull/12132) [`de35daa`](https://github.com/withastro/astro/commit/de35daa8517555c1b9c72bc7fe9cc955c4997a83) Thanks [@jcayzac](https://github.com/jcayzac)! - Updates the [`cookie`](https://npmjs.com/package/cookie) dependency to avoid the [CVE 2024-47764](https://nvd.nist.gov/vuln/detail/CVE-2024-47764) vulnerability. + +- [#12113](https://github.com/withastro/astro/pull/12113) [`a54e520`](https://github.com/withastro/astro/commit/a54e520d3c139fa123e7029c5933951b5c7f5a39) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds a helpful error when attempting to render an undefined collection entry + +## 4.15.11 + +### Patch Changes + +- [#12097](https://github.com/withastro/astro/pull/12097) [`11d447f`](https://github.com/withastro/astro/commit/11d447f66b1a0f39489c2600139ebfb565336ce7) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes error where references in content layer schemas sometimes incorrectly report as missing + +- [#12108](https://github.com/withastro/astro/pull/12108) [`918953b`](https://github.com/withastro/astro/commit/918953bd09f057131dfe029e810019c0909345cf) Thanks [@lameuler](https://github.com/lameuler)! - Fixes a bug where [data URL images](https://developer.mozilla.org/en-US/docs/Web/URI/Schemes/data) were not correctly handled. The bug resulted in an `ENAMETOOLONG` error. + +- [#12105](https://github.com/withastro/astro/pull/12105) [`42037f3`](https://github.com/withastro/astro/commit/42037f33e644d5a2bfba71377697fc7336ecb15b) Thanks [@ascorbic](https://github.com/ascorbic)! - Returns custom statusText that has been set in a Response + +- [#12109](https://github.com/withastro/astro/pull/12109) [`ea22558`](https://github.com/withastro/astro/commit/ea225585fd12d27006434266163512ca66ad572b) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression that was introduced by an internal refactor of how the middleware is loaded by the Astro application. The regression was introduced by [#11550](https://github.com/withastro/astro/pull/11550). + + When the edge middleware feature is opted in, Astro removes the middleware function from the SSR manifest, and this wasn't taken into account during the refactor. + +- [#12106](https://github.com/withastro/astro/pull/12106) [`d3a74da`](https://github.com/withastro/astro/commit/d3a74da19644477ffc81acf2a3efb26ad3335a5e) Thanks [@ascorbic](https://github.com/ascorbic)! - Handles case where an immutable Response object is returned from an endpoint + +- [#12090](https://github.com/withastro/astro/pull/12090) [`d49a537`](https://github.com/withastro/astro/commit/d49a537f2aaccd132154a15f1da4db471272ee90) Thanks [@markjaquith](https://github.com/markjaquith)! - Server islands: changes the server island HTML placeholder comment so that it is much less likely to get removed by HTML minifiers. + +## 4.15.10 + +### Patch Changes + +- [#12084](https://github.com/withastro/astro/pull/12084) [`12dae50`](https://github.com/withastro/astro/commit/12dae50c776474748a80cb65c8bf1c67f0825cb0) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds missing filePath property on content layer entries + +- [#12046](https://github.com/withastro/astro/pull/12046) [`d7779df`](https://github.com/withastro/astro/commit/d7779dfae7bc00ff94b1e4596ff5b4897f65aabe) Thanks [@martrapp](https://github.com/martrapp)! - View transitions: Fixes Astro's fade animation to prevent flashing during morph transitions. + +- [#12043](https://github.com/withastro/astro/pull/12043) [`1720c5b`](https://github.com/withastro/astro/commit/1720c5b1d2bfd106ad065833823aed622bee09bc) Thanks [@bluwy](https://github.com/bluwy)! - Fixes injected endpoint `prerender` option detection + +- [#12095](https://github.com/withastro/astro/pull/12095) [`76c5fbd`](https://github.com/withastro/astro/commit/76c5fbd6f3a8d41367f1d7033278d133d518213b) Thanks [@TheOtterlord](https://github.com/TheOtterlord)! - Fix installing non-stable versions of integrations with `astro add` + +## 4.15.9 + +### Patch Changes + +- [#12034](https://github.com/withastro/astro/pull/12034) [`5b3ddfa`](https://github.com/withastro/astro/commit/5b3ddfadcb2d09b6cbd9cd42641f30ca565d0f58) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the middleware wasn't called when a project uses `404.astro`. + +- [#12042](https://github.com/withastro/astro/pull/12042) [`243ecb6`](https://github.com/withastro/astro/commit/243ecb6d6146dc483b4726d0e76142fb25e56243) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a problem in the Container API, where a polyfill wasn't correctly applied. This caused an issue in some environments where `crypto` isn't supported. + +- [#12038](https://github.com/withastro/astro/pull/12038) [`26ea5e8`](https://github.com/withastro/astro/commit/26ea5e814ab8c973e683fff62389fda28c180940) Thanks [@ascorbic](https://github.com/ascorbic)! - Resolves image paths in content layer with initial slash as project-relative + + When using the `image()` schema helper, previously paths with an initial slash were treated as public URLs. This was to match the behavior of markdown images. However this is a change from before, where paths with an initial slash were treated as project-relative. This change restores the previous behavior, so that paths with an initial slash are treated as project-relative. + +## 4.15.8 + +### Patch Changes + +- [#12014](https://github.com/withastro/astro/pull/12014) [`53cb41e`](https://github.com/withastro/astro/commit/53cb41e30ea5768bf33d9f6be608fb57d31b7b9e) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes an issue where component styles were not correctly included in rendered MDX + +- [#12031](https://github.com/withastro/astro/pull/12031) [`8c0cae6`](https://github.com/withastro/astro/commit/8c0cae6d1bd70b332286d83d0f01cfce5272fbbe) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where the rewrite via `next(/*..*/)` inside a middleware didn't compute the new `APIContext.params` + +- [#12026](https://github.com/withastro/astro/pull/12026) [`40e7a1b`](https://github.com/withastro/astro/commit/40e7a1b05d9e5ea3fcda176c9663bbcff86edb63) Thanks [@bluwy](https://github.com/bluwy)! - Initializes the Markdown processor only when there's `.md` files + +- [#12028](https://github.com/withastro/astro/pull/12028) [`d3bd673`](https://github.com/withastro/astro/commit/d3bd673392e63720e241d6a002a131a3564c169c) Thanks [@bluwy](https://github.com/bluwy)! - Handles route collision detection only if it matches `getStaticPaths` + +- [#12027](https://github.com/withastro/astro/pull/12027) [`dd3b753`](https://github.com/withastro/astro/commit/dd3b753aba6400558671d85214e27b8e4fb1654b) Thanks [@fviolette](https://github.com/fviolette)! - Add `selected` to the list of boolean attributes + +- [#12001](https://github.com/withastro/astro/pull/12001) [`9be3e1b`](https://github.com/withastro/astro/commit/9be3e1bba789af96d8b21d9c8eca8542cfb4ff77) Thanks [@uwej711](https://github.com/uwej711)! - Remove dependency on path-to-regexp + +## 4.15.7 + +### Patch Changes + +- [#12000](https://github.com/withastro/astro/pull/12000) [`a2f8c5d`](https://github.com/withastro/astro/commit/a2f8c5d85ff15803f5cedf9148cd70ffc138ddef) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes an outdated link used to document Content Layer API + +- [#11915](https://github.com/withastro/astro/pull/11915) [`0b59fe7`](https://github.com/withastro/astro/commit/0b59fe74d5922c572007572ddca8d11482e2fb5c) Thanks [@azhirov](https://github.com/azhirov)! - Fix: prevent island from re-rendering when using transition:persist (#11854) + +## 4.15.6 + +### Patch Changes + +- [#11993](https://github.com/withastro/astro/pull/11993) [`ffba5d7`](https://github.com/withastro/astro/commit/ffba5d716edcdfc42899afaa4188b7a4cd0c91eb) Thanks [@matthewp](https://github.com/matthewp)! - Fix getStaticPaths regression + + This reverts a previous change meant to remove a dependency, to fix a regression with multiple nested spread routes. + +- [#11964](https://github.com/withastro/astro/pull/11964) [`06eff60`](https://github.com/withastro/astro/commit/06eff60cabb55d91fe4075421b1693b1ab33225c) Thanks [@TheOtterlord](https://github.com/TheOtterlord)! - Add wayland (wl-copy) support to `astro info` + +## 4.15.5 + +### Patch Changes + +- [#11939](https://github.com/withastro/astro/pull/11939) [`7b09c62`](https://github.com/withastro/astro/commit/7b09c62b565cd7b50c35fb68d390729f936a43fb) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds support for Zod discriminated unions on Action form inputs. This allows forms with different inputs to be submitted to the same action, using a given input to decide which object should be used for validation. + + This example accepts either a `create` or `update` form submission, and uses the `type` field to determine which object to validate against. + + ```ts + import { defineAction } from 'astro:actions'; + import { z } from 'astro:schema'; + + export const server = { + changeUser: defineAction({ + accept: 'form', + input: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('create'), + name: z.string(), + email: z.string().email(), + }), + z.object({ + type: z.literal('update'), + id: z.number(), + name: z.string(), + email: z.string().email(), + }), + ]), + async handler(input) { + if (input.type === 'create') { + // input is { type: 'create', name: string, email: string } + } else { + // input is { type: 'update', id: number, name: string, email: string } + } + }, + }), + }; + ``` + + The corresponding `create` and `update` forms may look like this: + + ```astro + --- + import { actions } from 'astro:actions'; + --- + + +
+ + + + +
+ + +
+ + + + + +
+ ``` + +- [#11968](https://github.com/withastro/astro/pull/11968) [`86ad1fd`](https://github.com/withastro/astro/commit/86ad1fd223e2d2c448372caa159090efbee69237) Thanks [@NikolaRHristov](https://github.com/NikolaRHristov)! - Fixes a typo in the server island JSDoc + +- [#11983](https://github.com/withastro/astro/pull/11983) [`633eeaa`](https://github.com/withastro/astro/commit/633eeaa9d8a8a35bba638fde06fd8f52cc1c2ce3) Thanks [@uwej711](https://github.com/uwej711)! - Remove dependency on path-to-regexp + +## 4.15.4 + +### Patch Changes + +- [#11879](https://github.com/withastro/astro/pull/11879) [`bd1d4aa`](https://github.com/withastro/astro/commit/bd1d4aaf8262187b4f132d7fe0365902131ddf1a) Thanks [@matthewp](https://github.com/matthewp)! - Allow passing a cryptography key via ASTRO_KEY + + For Server islands Astro creates a cryptography key in order to hash props for the islands, preventing accidental leakage of secrets. + + If you deploy to an environment with rolling updates then there could be multiple instances of your app with different keys, causing potential key mismatches. + + To fix this you can now pass the `ASTRO_KEY` environment variable to your build in order to reuse the same key. + + To generate a key use: + + ``` + astro create-key + ``` + + This will print out an environment variable to set like: + + ``` + ASTRO_KEY=PIAuyPNn2aKU/bviapEuc/nVzdzZPizKNo3OqF/5PmQ= + ``` + +- [#11935](https://github.com/withastro/astro/pull/11935) [`c58193a`](https://github.com/withastro/astro/commit/c58193a691775af5c568e461c63040a42e2471f7) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `astro add` not using the proper export point when adding certain adapters + +## 4.15.3 + +### Patch Changes + +- [#11902](https://github.com/withastro/astro/pull/11902) [`d63bc50`](https://github.com/withastro/astro/commit/d63bc50d9940c1107e0fee7687e5c332549a0eff) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes case where content layer did not update during clean dev builds on Linux and Windows + +- [#11886](https://github.com/withastro/astro/pull/11886) [`7ff7134`](https://github.com/withastro/astro/commit/7ff7134b8038a3b798293b2218bbf6dd02d2ac32) Thanks [@matthewp](https://github.com/matthewp)! - Fixes a missing error message when actions throws during `astro sync` + +- [#11904](https://github.com/withastro/astro/pull/11904) [`ca54e3f`](https://github.com/withastro/astro/commit/ca54e3f819fad009ac3c3c8b57a26014a2652a73) Thanks [@wtchnm](https://github.com/wtchnm)! - perf(assets): avoid downloading original image when using cache + +## 4.15.2 + +### Patch Changes + +- [#11870](https://github.com/withastro/astro/pull/11870) [`8e5257a`](https://github.com/withastro/astro/commit/8e5257addaeff809ed6f0c47ac0ed4ded755320e) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes typo in documenting the `fallbackType` property in i18n routing + +- [#11884](https://github.com/withastro/astro/pull/11884) [`e450704`](https://github.com/withastro/astro/commit/e45070459f18976400fc8939812e172781eba351) Thanks [@ascorbic](https://github.com/ascorbic)! - Correctly handles content layer data where the transformed value does not match the input schema + +- [#11900](https://github.com/withastro/astro/pull/11900) [`80b4a18`](https://github.com/withastro/astro/commit/80b4a181a077266c44065a737e61cc7cff6bc6d7) Thanks [@delucis](https://github.com/delucis)! - Fixes the user-facing type of the new `i18n.routing.fallbackType` option to be optional + +## 4.15.1 + +### Patch Changes + +- [#11872](https://github.com/withastro/astro/pull/11872) [`9327d56`](https://github.com/withastro/astro/commit/9327d56755404b481993b058bbfc4aa7880b2304) Thanks [@bluwy](https://github.com/bluwy)! - Fixes `astro add` importing adapters and integrations + +- [#11767](https://github.com/withastro/astro/pull/11767) [`d1bd1a1`](https://github.com/withastro/astro/commit/d1bd1a11f7aca4d2141d1c4665f2db0440393d03) Thanks [@ascorbic](https://github.com/ascorbic)! - Refactors content layer sync to use a queue + +## 4.15.0 + +### Minor Changes + +- [#11729](https://github.com/withastro/astro/pull/11729) [`1c54e63`](https://github.com/withastro/astro/commit/1c54e633274ad47f6c83c9a16f375f0caa983fbe) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new variant `sync` for the `astro:config:setup` hook's `command` property. This value is set when calling the command `astro sync`. + + If your integration previously relied on knowing how many variants existed for the `command` property, you must update your logic to account for this new option. + +- [#11743](https://github.com/withastro/astro/pull/11743) [`cce0894`](https://github.com/withastro/astro/commit/cce08945340312776a0480fc9ffe43929257639a) Thanks [@ph1p](https://github.com/ph1p)! - Adds a new, optional property `timeout` for the `client:idle` directive. + + This value allows you to specify a maximum time to wait, in milliseconds, before hydrating a UI framework component, even if the page is not yet done with its initial load. This means you can delay hydration for lower-priority UI elements with more control to ensure your element is interactive within a specified time frame. + + ```astro + + ``` + +- [#11677](https://github.com/withastro/astro/pull/11677) [`cb356a5`](https://github.com/withastro/astro/commit/cb356a5db6b1ec2799790a603f931a961883ab31) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new option `fallbackType` to `i18n.routing` configuration that allows you to control how fallback pages are handled. + + When `i18n.fallback` is configured, this new routing option controls whether to [redirect](https://docs.astro.build/en/guides/routing/#redirects) to the fallback page, or to [rewrite](https://docs.astro.build/en/guides/routing/#rewrites) the fallback page's content in place. + + The `"redirect"` option is the default value and matches the current behavior of the existing fallback system. + + The option `"rewrite"` uses the new [rewriting system](https://docs.astro.build/en/guides/routing/#rewrites) to create fallback pages that render content on the original, requested URL without a browser refresh. + + For example, the following configuration will generate a page `/fr/index.html` that will contain the same HTML rendered by the page `/en/index.html` when `src/pages/fr/index.astro` does not exist. + + ```js + // astro.config.mjs + export default defineConfig({ + i18n: { + locals: ['en', 'fr'], + defaultLocale: 'en', + routing: { + prefixDefaultLocale: true, + fallbackType: 'rewrite', + }, + fallback: { + fr: 'en', + }, + }, + }); + ``` + +- [#11708](https://github.com/withastro/astro/pull/11708) [`62b0d20`](https://github.com/withastro/astro/commit/62b0d20b974dc932769221d210b751627fb4bbc6) Thanks [@martrapp](https://github.com/martrapp)! - Adds a new object `swapFunctions` to expose the necessary utility functions on `astro:transitions/client` that allow you to build custom swap functions to be used with view transitions. + + The example below uses these functions to replace Astro's built-in default `swap` function with one that only swaps the `
` part of the page: + + ```html + + ``` + + See the [view transitions guide](https://docs.astro.build/en/guides/view-transitions/#astrobefore-swap) for more information about hooking into the `astro:before-swap` lifecycle event and adding a custom swap implementation. + +- [#11843](https://github.com/withastro/astro/pull/11843) [`5b4070e`](https://github.com/withastro/astro/commit/5b4070efef877a77247bb05a4806b75f22e557c8) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Exposes `z` from the new `astro:schema` module. This is the new recommended import source for all Zod utilities when using Astro Actions. + + ## Migration for Astro Actions users + + `z` will no longer be exposed from `astro:actions`. To use `z` in your actions, import it from `astro:schema` instead: + + ```diff + import { + defineAction, + - z, + } from 'astro:actions'; + + import { z } from 'astro:schema'; + ``` + +- [#11843](https://github.com/withastro/astro/pull/11843) [`5b4070e`](https://github.com/withastro/astro/commit/5b4070efef877a77247bb05a4806b75f22e557c8) Thanks [@bholmesdev](https://github.com/bholmesdev)! - The Astro Actions API introduced behind a flag in [v4.8.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#480) is no longer experimental and is available for general use. + + Astro Actions allow you to define and call backend functions with type-safety, performing data fetching, JSON parsing, and input validation for you. + + Actions can be called from client-side components and HTML forms. This gives you to flexibility to build apps using any technology: React, Svelte, HTMX, or just plain Astro components. This example calls a newsletter action and renders the result using an Astro component: + + ```astro + --- + // src/pages/newsletter.astro + import { actions } from 'astro:actions'; + const result = Astro.getActionResult(actions.newsletter); + --- + + {result && !result.error &&

Thanks for signing up!

} +
+ + +
+ ``` + + If you were previously using this feature, please remove the experimental flag from your Astro config: + + ```diff + import { defineConfig } from 'astro' + + export default defineConfig({ + - experimental: { + - actions: true, + - } + }) + ``` + + If you have been waiting for stabilization before using Actions, you can now do so. + + For more information and usage examples, see our [brand new Actions guide](https://docs.astro.build/en/guides/actions). + +### Patch Changes + +- [#11677](https://github.com/withastro/astro/pull/11677) [`cb356a5`](https://github.com/withastro/astro/commit/cb356a5db6b1ec2799790a603f931a961883ab31) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in the logic of `Astro.rewrite()` which led to the value for `base`, if configured, being automatically prepended to the rewrite URL passed. This was unintended behavior and has been corrected, and Astro now processes the URLs exactly as passed. + + If you use the `rewrite()` function on a project that has `base` configured, you must now prepend the base to your existing rewrite URL: + + ```js + // astro.config.mjs + export default defineConfig({ + base: '/blog', + }); + ``` + + ```diff + // src/middleware.js + export function onRequest(ctx, next) { + - return ctx.rewrite("/about") + + return ctx.rewrite("/blog/about") + } + ``` + +- [#11862](https://github.com/withastro/astro/pull/11862) [`0e35afe`](https://github.com/withastro/astro/commit/0e35afe44f5a3c9f87b41dc89d5128b02e448895) Thanks [@ascorbic](https://github.com/ascorbic)! - **BREAKING CHANGE to experimental content layer loaders only!** + + Passes `AstroConfig` instead of `AstroSettings` object to content layer loaders. + + This will not affect you unless you have created a loader that uses the `settings` object. If you have, you will need to update your loader to use the `config` object instead. + + ```diff + export default function myLoader() { + return { + name: 'my-loader' + - async load({ settings }) { + - const base = settings.config.base; + + async load({ config }) { + + const base = config.base; + // ... + } + } + } + + ``` + + Other properties of the settings object are private internals, and should not be accessed directly. If you think you need access to other properties, please open an issue to discuss your use case. + +- [#11772](https://github.com/withastro/astro/pull/11772) [`6272e6c`](https://github.com/withastro/astro/commit/6272e6cec07778e81f853754bffaac40e658c700) Thanks [@bluwy](https://github.com/bluwy)! - Uses `magicast` to update the config for `astro add` + +- [#11845](https://github.com/withastro/astro/pull/11845) [`440a4be`](https://github.com/withastro/astro/commit/440a4be0a6ca135e47b0d37124c1be03735ba7ff) Thanks [@bluwy](https://github.com/bluwy)! - Replaces `execa` with `tinyexec` internally + +- [#11858](https://github.com/withastro/astro/pull/11858) [`8bab233`](https://github.com/withastro/astro/commit/8bab2339374763d19dbc4cc2c7ce4ad8a2a49694) Thanks [@ascorbic](https://github.com/ascorbic)! - Correctly resolves content layer images when filePath is not set + +## 4.14.6 + +### Patch Changes + +- [#11847](https://github.com/withastro/astro/pull/11847) [`45b599c`](https://github.com/withastro/astro/commit/45b599c4d40ded6a3e03881181b441ae494cbfcf) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a case where Vite would be imported by the SSR runtime, causing bundling errors and bloat. + +- [#11822](https://github.com/withastro/astro/pull/11822) [`6fcaab8`](https://github.com/withastro/astro/commit/6fcaab84de1044ff4d186b2dfa5831964460062d) Thanks [@bluwy](https://github.com/bluwy)! - Marks internal `vite-plugin-fileurl` plugin with `enforce: 'pre'` + +- [#11713](https://github.com/withastro/astro/pull/11713) [`497324c`](https://github.com/withastro/astro/commit/497324c4e87538dc1dc13aea3ced9bd3642d9ba6) Thanks [@voidfill](https://github.com/voidfill)! - Prevents prefetching of the same urls with different hashes. + +- [#11814](https://github.com/withastro/astro/pull/11814) [`2bb72c6`](https://github.com/withastro/astro/commit/2bb72c63969f8f21dd279fa927c32f192ff79a3f) Thanks [@eduardocereto](https://github.com/eduardocereto)! - Updates the documentation for experimental Content Layer API with a corrected code example + +- [#11842](https://github.com/withastro/astro/pull/11842) [`1ffaae0`](https://github.com/withastro/astro/commit/1ffaae04cf790390f730bf900b9722b99642adc1) Thanks [@stephan281094](https://github.com/stephan281094)! - Fixes a typo in the `MissingImageDimension` error message + +- [#11828](https://github.com/withastro/astro/pull/11828) [`20d47aa`](https://github.com/withastro/astro/commit/20d47aa85a3a0d7ac3390f749715d92de830cf3e) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Improves error message when invalid data is returned by an Action. + +## 4.14.5 + +### Patch Changes + +- [#11809](https://github.com/withastro/astro/pull/11809) [`62e97a2`](https://github.com/withastro/astro/commit/62e97a20f72bacb017c633ddcb776abc89167660) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes usage of `.transform()`, `.refine()`, `.passthrough()`, and other effects on Action form inputs. + +- [#11812](https://github.com/withastro/astro/pull/11812) [`260c4be`](https://github.com/withastro/astro/commit/260c4be050f91353bc5ba6af073e7bc17429d552) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Exposes `ActionAPIContext` type from the `astro:actions` module. + +- [#11813](https://github.com/withastro/astro/pull/11813) [`3f7630a`](https://github.com/withastro/astro/commit/3f7630afd697809b1d4fbac6edd18153983c70ac) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected `undefined` value when calling an action from the client without a return value. + +## 4.14.4 + +### Patch Changes + +- [#11794](https://github.com/withastro/astro/pull/11794) [`3691a62`](https://github.com/withastro/astro/commit/3691a626fb67d617e5f8bd057443cd2ff6caa054) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected warning log when using Actions on "hybrid" rendered projects. + +- [#11801](https://github.com/withastro/astro/pull/11801) [`9f943c1`](https://github.com/withastro/astro/commit/9f943c1344671b569a0d1ddba683b3cca0068adc) Thanks [@delucis](https://github.com/delucis)! - Fixes a bug where the `filePath` property was not available on content collection entries when using the content layer `file()` loader with a JSON file that contained an object instead of an array. This was breaking use of the `image()` schema utility among other things. + +## 4.14.3 + +### Patch Changes + +- [#11780](https://github.com/withastro/astro/pull/11780) [`c6622ad`](https://github.com/withastro/astro/commit/c6622adaeb405e961b12c91f0e5d02c7333d01cf) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Deprecates the Squoosh image service, to be removed in Astro 5.0. We recommend migrating to the default Sharp service. + +- [#11790](https://github.com/withastro/astro/pull/11790) [`41c3fcb`](https://github.com/withastro/astro/commit/41c3fcb6189709450a67ea8f726071d5f3cdc80e) Thanks [@sarah11918](https://github.com/sarah11918)! - Updates the documentation for experimental `astro:env` with a corrected link to the RFC proposal + +- [#11773](https://github.com/withastro/astro/pull/11773) [`86a3391`](https://github.com/withastro/astro/commit/86a33915ff41b23ff6b35bcfb1805fefc0760ca7) Thanks [@ematipico](https://github.com/ematipico)! - Changes messages logged when using unsupported, deprecated, or experimental adapter features for clarity + +- [#11745](https://github.com/withastro/astro/pull/11745) [`89bab1e`](https://github.com/withastro/astro/commit/89bab1e70786123fbe933a9d7a1b80c9334dcc5f) Thanks [@bluwy](https://github.com/bluwy)! - Prints prerender dynamic value usage warning only if it's used + +- [#11774](https://github.com/withastro/astro/pull/11774) [`c6400ab`](https://github.com/withastro/astro/commit/c6400ab99c5e5f4477bc6ef7e801b7869b0aa9ab) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes the path returned by `injectTypes` + +- [#11730](https://github.com/withastro/astro/pull/11730) [`2df49a6`](https://github.com/withastro/astro/commit/2df49a6fb4f6d92fe45f7429430abe63defeacd6) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Simplifies path operations of `astro sync` + +- [#11771](https://github.com/withastro/astro/pull/11771) [`49650a4`](https://github.com/withastro/astro/commit/49650a45550af46c70c6cf3f848b7b529103a649) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes an error thrown by `astro sync` when an `astro:env` virtual module is imported inside the Content Collections config + +- [#11744](https://github.com/withastro/astro/pull/11744) [`b677429`](https://github.com/withastro/astro/commit/b67742961a384c10e5cd04cf5b02d0f014ea7362) Thanks [@bluwy](https://github.com/bluwy)! - Disables the WebSocket server when creating a Vite server for loading config files + +## 4.14.2 + +### Patch Changes + +- [#11733](https://github.com/withastro/astro/pull/11733) [`391324d`](https://github.com/withastro/astro/commit/391324df969db71d1c7ca25c2ed14c9eb6eea5ee) Thanks [@bluwy](https://github.com/bluwy)! - Reverts back to `yargs-parser` package for CLI argument parsing + +## 4.14.1 + +### Patch Changes + +- [#11725](https://github.com/withastro/astro/pull/11725) [`6c1560f`](https://github.com/withastro/astro/commit/6c1560fb0d19ce659bc9f9090f8050254d5c03f3) Thanks [@ascorbic](https://github.com/ascorbic)! - Prevents content layer importing node builtins in runtime + +- [#11692](https://github.com/withastro/astro/pull/11692) [`35af73a`](https://github.com/withastro/astro/commit/35af73aace97a7cc898b9aa5040db8bc2ac62687) Thanks [@matthewp](https://github.com/matthewp)! - Prevent errant HTML from crashing server islands + + When an HTML minifier strips away the server island comment, the script can't correctly know where the end of the fallback content is. This makes it so that it simply doesn't remove any DOM in that scenario. This means the fallback isn't removed, but it also doesn't crash the browser. + +- [#11727](https://github.com/withastro/astro/pull/11727) [`3c2f93b`](https://github.com/withastro/astro/commit/3c2f93b66c6b8e9d2ab58e2cbe941c14ffab89b5) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a type issue when using the Content Layer in dev + +## 4.14.0 + +### Minor Changes + +- [#11657](https://github.com/withastro/astro/pull/11657) [`a23c69d`](https://github.com/withastro/astro/commit/a23c69d0d0bed229bee52a32e61f135f9ebf9122) Thanks [@bluwy](https://github.com/bluwy)! - Deprecates the option for route-generating files to export a dynamic value for `prerender`. Only static values are now supported (e.g. `export const prerender = true` or `= false`). This allows for better treeshaking and bundling configuration in the future. + + Adds a new [`"astro:route:setup"` hook](https://docs.astro.build/en/reference/integrations-reference/#astroroutesetup) to the Integrations API to allow you to dynamically set options for a route at build or request time through an integration, such as enabling [on-demand server rendering](https://docs.astro.build/en/guides/server-side-rendering/#opting-in-to-pre-rendering-in-server-mode). + + To migrate from a dynamic export to the new hook, update or remove any dynamic `prerender` exports from individual routing files: + + ```diff + // src/pages/blog/[slug].astro + - export const prerender = import.meta.env.PRERENDER + ``` + + Instead, create an integration with the `"astro:route:setup"` hook and update the route's `prerender` option: + + ```js + // astro.config.mjs + import { defineConfig } from 'astro/config'; + import { loadEnv } from 'vite'; + + export default defineConfig({ + integrations: [setPrerender()], + }); + + function setPrerender() { + const { PRERENDER } = loadEnv(process.env.NODE_ENV, process.cwd(), ''); + + return { + name: 'set-prerender', + hooks: { + 'astro:route:setup': ({ route }) => { + if (route.component.endsWith('/blog/[slug].astro')) { + route.prerender = PRERENDER; + } + }, + }, + }; + } + ``` + +- [#11360](https://github.com/withastro/astro/pull/11360) [`a79a8b0`](https://github.com/withastro/astro/commit/a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds a new [`injectTypes()` utility](https://docs.astro.build/en/reference/integrations-reference/#injecttypes-options) to the Integration API and refactors how type generation works + + Use `injectTypes()` in the `astro:config:done` hook to inject types into your user's project by adding a new a `*.d.ts` file. + + The `filename` property will be used to generate a file at `/.astro/integrations//.d.ts` and must end with `".d.ts"`. + + The `content` property will create the body of the file, and must be valid TypeScript. + + Additionally, `injectTypes()` returns a URL to the normalized path so you can overwrite its content later on, or manipulate it in any way you want. + + ```js + // my-integration/index.js + export default { + name: 'my-integration', + 'astro:config:done': ({ injectTypes }) => { + injectTypes({ + filename: 'types.d.ts', + content: "declare module 'virtual:my-integration' {}", + }); + }, + }; + ``` + + Codegen has been refactored. Although `src/env.d.ts` will continue to work as is, we recommend you update it: + + ```diff + - /// + + /// + - /// + - /// + ``` + +- [#11605](https://github.com/withastro/astro/pull/11605) [`d3d99fb`](https://github.com/withastro/astro/commit/d3d99fba269da9e812e748539a11dfed785ef8a4) Thanks [@jcayzac](https://github.com/jcayzac)! - Adds a new property `meta` to Astro's [built-in `` component](https://docs.astro.build/en/reference/api-reference/#code-). + + This allows you to provide a value for [Shiki's `meta` attribute](https://shiki.style/guide/transformers#meta) to pass options to transformers. + + The following example passes an option to highlight lines 1 and 3 to Shiki's `transformerMetaHighlight`: + + ```astro + --- + // src/components/Card.astro + import { Code } from 'astro:components'; + import { transformerMetaHighlight } from '@shikijs/transformers'; + --- + + + ``` + +- [#11360](https://github.com/withastro/astro/pull/11360) [`a79a8b0`](https://github.com/withastro/astro/commit/a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds support for Intellisense features (e.g. code completion, quick hints) for your content collection entries in compatible editors under the `experimental.contentIntellisense` flag. + + ```js + import { defineConfig } from 'astro'; + + export default defineConfig({ + experimental: { + contentIntellisense: true, + }, + }); + ``` + + When enabled, this feature will generate and add JSON schemas to the `.astro` directory in your project. These files can be used by the Astro language server to provide Intellisense inside content files (`.md`, `.mdx`, `.mdoc`). + + Note that at this time, this also require enabling the `astro.content-intellisense` option in your editor, or passing the `contentIntellisense: true` initialization parameter to the Astro language server for editors using it directly. + + See the [experimental content Intellisense docs](https://docs.astro.build/en/reference/configuration-reference/#experimentalcontentintellisense) for more information updates as this feature develops. + +- [#11360](https://github.com/withastro/astro/pull/11360) [`a79a8b0`](https://github.com/withastro/astro/commit/a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds experimental support for the Content Layer API. + + The new Content Layer API builds upon content collections, taking them beyond local files in `src/content/` and allowing you to fetch content from anywhere, including remote APIs. These new collections work alongside your existing content collections, and you can migrate them to the new API at your own pace. There are significant improvements to performance with large collections of local files. + + ### Getting started + + To try out the new Content Layer API, enable it in your Astro config: + + ```js + import { defineConfig } from 'astro'; + + export default defineConfig({ + experimental: { + contentLayer: true, + }, + }); + ``` + + You can then create collections in your `src/content/config.ts` using the Content Layer API. + + ### Loading your content + + The core of the new Content Layer API is the loader, a function that fetches content from a source and caches it in a local data store. Astro 4.14 ships with built-in `glob()` and `file()` loaders to handle your local Markdown, MDX, Markdoc, and JSON files: + + ```ts {3,7} + // src/content/config.ts + import { defineCollection, z } from 'astro:content'; + import { glob } from 'astro/loaders'; + + const blog = defineCollection({ + // The ID is a slug generated from the path of the file relative to `base` + loader: glob({ pattern: '**/*.md', base: './src/data/blog' }), + schema: z.object({ + title: z.string(), + description: z.string(), + publishDate: z.coerce.date(), + }), + }); + + export const collections = { blog }; + ``` + + You can then query using the existing content collections functions, and enjoy a simplified `render()` function to display your content: + + ```astro + --- + import { getEntry, render } from 'astro:content'; + + const post = await getEntry('blog', Astro.params.slug); + + const { Content } = await render(entry); + --- + + + ``` + + ### Creating a loader + + You're not restricted to the built-in loaders – we hope you'll try building your own. You can fetch content from anywhere and return an array of entries: + + ```ts + // src/content/config.ts + const countries = defineCollection({ + loader: async () => { + const response = await fetch('https://restcountries.com/v3.1/all'); + const data = await response.json(); + // Must return an array of entries with an id property, + // or an object with IDs as keys and entries as values + return data.map((country) => ({ + id: country.cca3, + ...country, + })); + }, + // optionally add a schema to validate the data and make it type-safe for users + // schema: z.object... + }); + + export const collections = { countries }; + ``` + + For more advanced loading logic, you can define an object loader. This allows incremental updates and conditional loading, and gives full access to the data store. It also allows a loader to define its own schema, including generating it dynamically based on the source API. See the [the Content Layer API RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md#loaders) for more details. + + ### Sharing your loaders + + Loaders are better when they're shared. You can create a package that exports a loader and publish it to npm, and then anyone can use it on their site. We're excited to see what the community comes up with! To get started, [take a look at some examples](https://github.com/ascorbic/astro-loaders/). Here's how to load content using an RSS/Atom feed loader: + + ```ts + // src/content/config.ts + import { defineCollection } from 'astro:content'; + import { feedLoader } from '@ascorbic/feed-loader'; + + const podcasts = defineCollection({ + loader: feedLoader({ + url: 'https://feeds.99percentinvisible.org/99percentinvisible', + }), + }); + + export const collections = { podcasts }; + ``` + + ### Learn more + + To find out more about using the Content Layer API, check out [the Content Layer RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md) and [share your feedback](https://github.com/withastro/roadmap/pull/982). + +### Patch Changes + +- [#11716](https://github.com/withastro/astro/pull/11716) [`f4057c1`](https://github.com/withastro/astro/commit/f4057c18c91f969e3e508545fb988aff94c3ff08) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes content types sync in dev + +- [#11645](https://github.com/withastro/astro/pull/11645) [`849e4c6`](https://github.com/withastro/astro/commit/849e4c6c23e61f7fa59f583419048b998bef2475) Thanks [@bluwy](https://github.com/bluwy)! - Refactors internally to use `node:util` `parseArgs` instead of `yargs-parser` + +- [#11712](https://github.com/withastro/astro/pull/11712) [`791d809`](https://github.com/withastro/astro/commit/791d809cbc22ed30dda1195ca026daa46a54b551) Thanks [@matthewp](https://github.com/matthewp)! - Fix mixed use of base + trailingSlash in Server Islands + +- [#11709](https://github.com/withastro/astro/pull/11709) [`3d8ae76`](https://github.com/withastro/astro/commit/3d8ae767fd4952af7332542b58fe98886eb2e99e) Thanks [@matthewp](https://github.com/matthewp)! - Fix adapter causing Netlify to break + +## 4.13.4 + +### Patch Changes + +- [#11678](https://github.com/withastro/astro/pull/11678) [`34da907`](https://github.com/withastro/astro/commit/34da907f3b4fb411024e6d28fdb291fa78116950) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where omitting a semicolon and line ending with carriage return - CRLF - in the `prerender` option could throw an error. + +- [#11535](https://github.com/withastro/astro/pull/11535) [`932bd2e`](https://github.com/withastro/astro/commit/932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b) Thanks [@matthewp](https://github.com/matthewp)! - Encrypt server island props + + Server island props are now encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. + + See the RFC for an explanation: https://github.com/withastro/roadmap/blob/server-islands/proposals/server-islands.md#props-serialization + +- [#11655](https://github.com/withastro/astro/pull/11655) [`dc0a297`](https://github.com/withastro/astro/commit/dc0a297e2a4bea3db8310cc98c51b2f94ede5fde) Thanks [@billy-le](https://github.com/billy-le)! - Fixes Astro Actions `input` validation when using `default` values with a form input. + +- [#11689](https://github.com/withastro/astro/pull/11689) [`c7bda4c`](https://github.com/withastro/astro/commit/c7bda4cd672864babc3cebd19a2dd2e1af85c087) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in the Astro actions, where the size of the generated cookie was exceeding the size permitted by the `Set-Cookie` header. + +## 4.13.3 + +### Patch Changes + +- [#11653](https://github.com/withastro/astro/pull/11653) [`32be549`](https://github.com/withastro/astro/commit/32be5494f6d33dbe32208704405162c95a64f0bc) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Updates `astro:env` docs to reflect current developments and usage guidance + +- [#11658](https://github.com/withastro/astro/pull/11658) [`13b912a`](https://github.com/withastro/astro/commit/13b912a8702afb96e2d0bc20dcc1b4135ae58147) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes `orThrow()` type when calling an Action without an `input` validator. + +- [#11603](https://github.com/withastro/astro/pull/11603) [`f31d466`](https://github.com/withastro/astro/commit/f31d4665c1cbb0918b9e00ba1431fb6f264025f7) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Improves user experience when render an Action result from a form POST request: + - Removes "Confirm post resubmission?" dialog when refreshing a result. + - Removes the `?_astroAction=NAME` flag when a result is rendered. + + Also improves the DX of directing to a new route on success. Actions will now redirect to the route specified in your `action` string on success, and redirect back to the previous page on error. This follows the routing convention of established backend frameworks like Laravel. + + For example, say you want to redirect to a `/success` route when `actions.signup` succeeds. You can add `/success` to your `action` string like so: + + ```astro +
+ ``` + + - On success, Astro will redirect to `/success`. + - On error, Astro will redirect back to the current page. + + You can retrieve the action result from either page using the `Astro.getActionResult()` function. + + ### Note on security + + This uses a temporary cookie to forward the action result to the next page. The cookie will be deleted when that page is rendered. + + ⚠ **The action result is not encrypted.** In general, we recommend returning minimal data from an action handler to a) avoid leaking sensitive information, and b) avoid unexpected render issues once the temporary cookie is deleted. For example, a `login` function may return a user's session id to retrieve from your Astro frontmatter, rather than the entire user object. + +## 4.13.2 + +### Patch Changes + +- [#11648](https://github.com/withastro/astro/pull/11648) [`589d351`](https://github.com/withastro/astro/commit/589d35158da1a2136387d0ad76609f5c8535c03a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected error when refreshing a POST request from a form using Actions. + +- [#11600](https://github.com/withastro/astro/pull/11600) [`09ec2ca`](https://github.com/withastro/astro/commit/09ec2cadce01a9a1f9c54ac433f137348907aa56) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Deprecates `getEntryBySlug` and `getDataEntryById` functions exported by `astro:content` in favor of `getEntry`. + +- [#11593](https://github.com/withastro/astro/pull/11593) [`81d7150`](https://github.com/withastro/astro/commit/81d7150e02472430eab555dfc4f053738bf99bb6) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds support for `Date()`, `Map()`, and `Set()` from action results. See [devalue](https://github.com/Rich-Harris/devalue) for a complete list of supported values. + + Also fixes serialization exceptions when deploying Actions with edge middleware on Netlify and Vercel. + +- [#11617](https://github.com/withastro/astro/pull/11617) [`196092a`](https://github.com/withastro/astro/commit/196092ae69eb1249206846ddfc162049b03f42b4) Thanks [@abubakriz](https://github.com/abubakriz)! - Fix toolbar audit incorrectly flagging images as above the fold. + +- [#11634](https://github.com/withastro/astro/pull/11634) [`2716f52`](https://github.com/withastro/astro/commit/2716f52aae7194439ebb2336849ddd9e8226658a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes internal server error when calling an Astro Action without arguments on Vercel. + +- [#11628](https://github.com/withastro/astro/pull/11628) [`9aaf58c`](https://github.com/withastro/astro/commit/9aaf58c1339b54f2c1394e718a0f6f609f0b6342) Thanks [@madbook](https://github.com/madbook)! - Ensures consistent CSS chunk hashes across different environments + +## 4.13.1 + +### Patch Changes + +- [#11584](https://github.com/withastro/astro/pull/11584) [`a65ffe3`](https://github.com/withastro/astro/commit/a65ffe314b112213421def26c7cc5b7e7b93558c) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Removes async local storage dependency from Astro Actions. This allows Actions to run in Cloudflare and Stackblitz without opt-in flags or other configuration. + + This also introduces a new convention for calling actions from server code. Instead of calling actions directly, you must wrap function calls with the new `Astro.callAction()` utility. + + > `callAction()` is meant to _trigger_ an action from server code. `getActionResult()` usage with form submissions remains unchanged. + + ```astro + --- + import { actions } from 'astro:actions'; + + const result = await Astro.callAction(actions.searchPosts, { + searchTerm: Astro.url.searchParams.get('search'), + }); + --- + + { + result.data && + { + /* render the results */ + } + } + ``` + + ## Migration + + If you call actions directly from server code, update function calls to use the `Astro.callAction()` wrapper for pages and `context.callAction()` for endpoints: + + ```diff + --- + import { actions } from 'astro:actions'; + + - const result = await actions.searchPosts({ searchTerm: 'test' }); + + const result = await Astro.callAction(actions.searchPosts, { searchTerm: 'test' }); + --- + ``` + + If you deploy with Cloudflare and added [the `nodejs_compat` or `nodejs_als` flags](https://developers.cloudflare.com/workers/runtime-apis/nodejs) for Actions, we recommend removing these: + + ```diff + compatibility_flags = [ + - "nodejs_compat", + - "nodejs_als" + ] + ``` + + You can also remove `node:async_hooks` from the `vite.ssr.external` option in your `astro.config` file: + + ```diff + // astro.config.mjs + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + - vite: { + - ssr: { + - external: ["node:async_hooks"] + - } + - } + }) + ``` + +## 4.13.0 + +### Minor Changes + +- [#11507](https://github.com/withastro/astro/pull/11507) [`a62345f`](https://github.com/withastro/astro/commit/a62345fd182ae4886d586c8406ed8f3e5f942730) Thanks [@ematipico](https://github.com/ematipico)! - Adds color-coding to the console output during the build to highlight slow pages. + + Pages that take more than 500 milliseconds to render will have their build time logged in red. This change can help you discover pages of your site that are not performant and may need attention. + +- [#11379](https://github.com/withastro/astro/pull/11379) [`e5e2d3e`](https://github.com/withastro/astro/commit/e5e2d3ed3076f10b4645f011b13888d5fa16e92e) Thanks [@alexanderniebuhr](https://github.com/alexanderniebuhr)! - The `experimental.contentCollectionJsonSchema` feature introduced behind a flag in [v4.5.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#450) is no longer experimental and is available for general use. + + If you are working with collections of type `data`, Astro will now auto-generate JSON schema files for your editor to get IntelliSense and type-checking. A separate file will be created for each data collection in your project based on your collections defined in `src/content/config.ts` using a library called [`zod-to-json-schema`](https://github.com/StefanTerdell/zod-to-json-schema). + + This feature requires you to manually set your schema's file path as the value for `$schema` in each data entry file of the collection: + + ```json title="src/content/authors/armand.json" ins={2} + { + "$schema": "../../../.astro/collections/authors.schema.json", + "name": "Armand", + "skills": ["Astro", "Starlight"] + } + ``` + + Alternatively, you can set this value in your editor settings. For example, to set this value in [VSCode's `json.schemas` setting](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings), provide the path of files to match and the location of your JSON schema: + + ```json + { + "json.schemas": [ + { + "fileMatch": ["/src/content/authors/**"], + "url": "./.astro/collections/authors.schema.json" + } + ] + } + ``` + + If you were previously using this feature, please remove the experimental flag from your Astro config: + + ```diff + import { defineConfig } from 'astro' + + export default defineConfig({ + - experimental: { + - contentCollectionJsonSchema: true + - } + }) + ``` + + If you have been waiting for stabilization before using JSON Schema generation for content collections, you can now do so. + + Please see [the content collections guide](https://docs.astro.build/en/guides/content-collections/#enabling-json-schema-generation) for more about this feature. + +- [#11542](https://github.com/withastro/astro/pull/11542) [`45ad326`](https://github.com/withastro/astro/commit/45ad326932971b44630a32d9092c9505f24f42f8) Thanks [@ematipico](https://github.com/ematipico)! - The `experimental.rewriting` feature introduced behind a flag in [v4.8.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#480) is no longer experimental and is available for general use. + + `Astro.rewrite()` and `context.rewrite()` allow you to render a different page without changing the URL in the browser. Unlike using a redirect, your visitor is kept on the original page they visited. + + Rewrites can be useful for showing the same content at multiple paths (e.g. /products/shoes/men/ and /products/men/shoes/) without needing to maintain two identical source files. + + Rewrites are supported in Astro pages, endpoints, and middleware. + + Return `Astro.rewrite()` in the frontmatter of a `.astro` page component to display a different page's content, such as fallback localized content: + + ```astro + --- + // src/pages/es-cu/articles/introduction.astro + return Astro.rewrite('/es/articles/introduction'); + --- + ``` + + Use `context.rewrite()` in endpoints, for example to reroute to a different page: + + ```js + // src/pages/api.js + export function GET(context) { + if (!context.locals.allowed) { + return context.rewrite('/'); + } + } + ``` + + The middleware `next()` function now accepts a parameter with the same type as the `rewrite()` function. For example, with `next("/")`, you can call the next middleware function with a new `Request`. + + ```js + // src/middleware.js + export function onRequest(context, next) { + if (!context.cookies.get('allowed')) { + return next('/'); // new signature + } + return next(); + } + ``` + + If you were previously using this feature, please remove the experimental flag from your Astro config: + + ```diff + // astro.config.mjs + export default defineConfig({ + - experimental: { + - rewriting: true + - } + }) + ``` + + If you have been waiting for stabilization before using rewrites in Astro, you can now do so. + + Please see [the routing guide in docs](https://docs.astro.build/en/guides/routing/#rewrites) for more about using this feature. + +## 4.12.3 + +### Patch Changes + +- [#11509](https://github.com/withastro/astro/pull/11509) [`dfbca06`](https://github.com/withastro/astro/commit/dfbca06dda674c64c7010db2f4de951496a1e631) Thanks [@bluwy](https://github.com/bluwy)! - Excludes hoisted scripts and styles from Astro components imported with `?url` or `?raw` + +- [#11561](https://github.com/withastro/astro/pull/11561) [`904f1e5`](https://github.com/withastro/astro/commit/904f1e535aeb7a14ba7ce07c3130e25f3e708266) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Uses the correct pageSize default in `page.size` JSDoc comment + +- [#11571](https://github.com/withastro/astro/pull/11571) [`1c3265a`](https://github.com/withastro/astro/commit/1c3265a8c9c0b1b1bd597f756b63463146bacc3a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - **BREAKING CHANGE to the experimental Actions API only.** Install the latest `@astrojs/react` integration as well if you're using React 19 features. + + Make `.safe()` the default return value for actions. This means `{ data, error }` will be returned when calling an action directly. If you prefer to get the data while allowing errors to throw, chain the `.orThrow()` modifier. + + ```ts + import { actions } from 'astro:actions'; + + // Before + const { data, error } = await actions.like.safe(); + // After + const { data, error } = await actions.like(); + + // Before + const newLikes = await actions.like(); + // After + const newLikes = await actions.like.orThrow(); + ``` + + ## Migration + + To migrate your existing action calls: + - Remove `.safe` from existing _safe_ action calls + - Add `.orThrow` to existing _unsafe_ action calls + +- [#11546](https://github.com/withastro/astro/pull/11546) [`7f26de9`](https://github.com/withastro/astro/commit/7f26de906e87f1e8973a1f84399f23e36e506bb3) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Remove "SSR Only" mention in `Astro.redirect` inline documentation and update reference link. + +- [#11525](https://github.com/withastro/astro/pull/11525) [`8068131`](https://github.com/withastro/astro/commit/80681318c6cb0f612fcb5188933fdd20a8f474a3) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where the build was failing when `experimental.actions` was enabled, an adapter was in use, and there were not actions inside the user code base. + +- [#11574](https://github.com/withastro/astro/pull/11574) [`e3f29d4`](https://github.com/withastro/astro/commit/e3f29d416a2e0a0b5328ae1075b12575260dddfd) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes line with the error not being properly highlighted in the error overlay + +- [#11570](https://github.com/withastro/astro/pull/11570) [`84189b6`](https://github.com/withastro/astro/commit/84189b6511dc2a14bcfe608696f56a64c2046f39) Thanks [@bholmesdev](https://github.com/bholmesdev)! - **BREAKING CHANGE to the experimental Actions API only.** Install the latest `@astrojs/react` integration as well if you're using React 19 features. + + Updates the Astro Actions fallback to support `action={actions.name}` instead of using `getActionProps().` This will submit a form to the server in zero-JS scenarios using a search parameter: + + ```astro + --- + import { actions } from 'astro:actions'; + --- + +
+ + +
+ ``` + + You may also construct form action URLs using string concatenation, or by using the `URL()` constructor, with the an action's `.queryString` property: + + ```astro + --- + import { actions } from 'astro:actions'; + + const confirmationUrl = new URL('/confirmation', Astro.url); + confirmationUrl.search = actions.queryString; + --- + +
+ +
+ ``` + + ## Migration + + `getActionProps()` is now deprecated. To use the new fallback pattern, remove the `getActionProps()` input from your form and pass your action function to the form `action` attribute: + + ```diff + --- + import { + actions, + - getActionProps, + } from 'astro:actions'; + --- + + +
+ - + - + +
+ ``` + +- [#11559](https://github.com/withastro/astro/pull/11559) [`1953dbb`](https://github.com/withastro/astro/commit/1953dbbd41d2d7803837601a9e192654f02275ef) Thanks [@bryanwood](https://github.com/bryanwood)! - Allows actions to return falsy values without an error + +- [#11553](https://github.com/withastro/astro/pull/11553) [`02c85b5`](https://github.com/withastro/astro/commit/02c85b541241a07db45bf9e15717e111104898e5) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in content collection caching, where two documents with the same contents were generating an error during the build. + +- [#11548](https://github.com/withastro/astro/pull/11548) [`602c5bf`](https://github.com/withastro/astro/commit/602c5bf05de4fe5ec1ea97f8e10455485aceb05f) Thanks [@TheOtterlord](https://github.com/TheOtterlord)! - Fixes `astro add` for packages with only prerelease versions + +- [#11566](https://github.com/withastro/astro/pull/11566) [`0dcef3a`](https://github.com/withastro/astro/commit/0dcef3ab171bd7f81c2f99e9366db3724aa7091b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes DomException errors not being handled properly + +- [#11529](https://github.com/withastro/astro/pull/11529) [`504c383`](https://github.com/withastro/astro/commit/504c383e20dfb5d8eb0825a70935f221b43577b2) Thanks [@matthewp](https://github.com/matthewp)! - Fix server islands with trailingSlash: always + +## 4.12.2 + +### Patch Changes + +- [#11505](https://github.com/withastro/astro/pull/11505) [`8ff7658`](https://github.com/withastro/astro/commit/8ff7658001c2c7bedf6adcddf7a9341196f2d376) Thanks [@ematipico](https://github.com/ematipico)! - Enhances the dev server logging when rewrites occur during the lifecycle or rendering. + + The dev server will log the status code **before** and **after** a rewrite: + + ```shell + 08:16:48 [404] (rewrite) /foo/about 200ms + 08:22:13 [200] (rewrite) /about 23ms + ``` + +- [#11506](https://github.com/withastro/astro/pull/11506) [`026e8ba`](https://github.com/withastro/astro/commit/026e8baf3323e99f96530999fd32a0a9b305854d) Thanks [@sarah11918](https://github.com/sarah11918)! - Fixes typo in documenting the `slot="fallback"` attribute for Server Islands experimental feature. + +- [#11508](https://github.com/withastro/astro/pull/11508) [`ca335e1`](https://github.com/withastro/astro/commit/ca335e1dc09bc83d3f8f5b9dd54f116bcb4881e4) Thanks [@cramforce](https://github.com/cramforce)! - Escapes HTML in serialized props + +- [#11501](https://github.com/withastro/astro/pull/11501) [`4db78ae`](https://github.com/withastro/astro/commit/4db78ae046a39628dfe8d68e776706559d4f8ba7) Thanks [@martrapp](https://github.com/martrapp)! - Adds the missing export for accessing the `getFallback()` function of the client site router. + +## 4.12.1 + +### Patch Changes + +- [#11486](https://github.com/withastro/astro/pull/11486) [`9c0c849`](https://github.com/withastro/astro/commit/9c0c8492d987cd9214ed53e71fb29599c206966a) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new function called `addClientRenderer` to the Container API. + + This function should be used when rendering components using the `client:*` directives. The `addClientRenderer` API must be used + _after_ the use of the `addServerRenderer`: + + ```js + const container = await experimental_AstroContainer.create(); + container.addServerRenderer({ renderer }); + container.addClientRenderer({ name: '@astrojs/react', entrypoint: '@astrojs/react/client.js' }); + const response = await container.renderToResponse(Component); + ``` + +- [#11500](https://github.com/withastro/astro/pull/11500) [`4e142d3`](https://github.com/withastro/astro/commit/4e142d38cbaf0938be7077c88e32b38a6b60eaed) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes inferRemoteSize type not working + +- [#11496](https://github.com/withastro/astro/pull/11496) [`53ccd20`](https://github.com/withastro/astro/commit/53ccd206f9bfe5f6a0d888d199776b4043f63f58) Thanks [@alfawal](https://github.com/alfawal)! - Hide the dev toolbar on `window.print()` (CTRL + P) + +## 4.12.0 + +### Minor Changes + +- [#11341](https://github.com/withastro/astro/pull/11341) [`49b5145`](https://github.com/withastro/astro/commit/49b5145158a603b9bb951bf914a6a9780c218704) Thanks [@madcampos](https://github.com/madcampos)! - Adds support for [Shiki's `defaultColor` option](https://shiki.style/guide/dual-themes#without-default-color). + + This option allows you to override the values of a theme's inline style, adding only CSS variables to give you more flexibility in applying multiple color themes. + + Configure `defaultColor: false` in your Shiki config to apply throughout your site, or pass to Astro's built-in `` component to style an individual code block. + + ```js title="astro.config.mjs" + import { defineConfig } from 'astro/config'; + export default defineConfig({ + markdown: { + shikiConfig: { + themes: { + light: 'github-light', + dark: 'github-dark', + }, + defaultColor: false, + }, + }, + }); + ``` + + ```astro + --- + import { Code } from 'astro:components'; + --- + + + ``` + +- [#11304](https://github.com/withastro/astro/pull/11304) [`2e70741`](https://github.com/withastro/astro/commit/2e70741362afc1e7d03c8b2a9d8edb8466dfe9c3) Thanks [@Fryuni](https://github.com/Fryuni)! - Refactors the type for integration hooks so that integration authors writing custom integration hooks can now allow runtime interactions between their integration and other integrations. + + This internal change should not break existing code for integration authors. + + To declare your own hooks for your integration, extend the `Astro.IntegrationHooks` interface: + + ```ts + // your-integration/types.ts + declare global { + namespace Astro { + interface IntegrationHooks { + 'myLib:eventHappened': (your: string, parameters: number) => Promise; + } + } + } + ``` + + Call your hooks on all other integrations installed in a project at the appropriate time. For example, you can call your hook on initialization before either the Vite or Astro config have resolved: + + ```ts + // your-integration/index.ts + import './types.ts'; + + export default (): AstroIntegration => { + return { + name: 'your-integration', + hooks: { + 'astro:config:setup': async ({ config }) => { + for (const integration of config.integrations) { + await integration.hooks['myLib:eventHappened'].?('your values', 123); + } + }, + } + } + } + ``` + + Other integrations can also now declare your hooks: + + ```ts + // other-integration/index.ts + import 'your-integration/types.ts'; + + export default (): AstroIntegration => { + return { + name: 'other-integration', + hooks: { + 'myLib:eventHappened': async (your, values) => { + // ... + }, + }, + }; + }; + ``` + +- [#11305](https://github.com/withastro/astro/pull/11305) [`d495df5`](https://github.com/withastro/astro/commit/d495df5361e16ebdf83dea6e2de004f438e698c4) Thanks [@matthewp](https://github.com/matthewp)! - Experimental Server Islands + + Server Islands allow you to specify components that should run on the server, allowing the rest of the page to be more aggressively cached, or even generated statically. Turn any `.astro` component into a server island by adding the `server:defer` directive and optionally, fallback placeholder content: + + ```astro + --- + import Avatar from '../components/Avatar.astro'; + import GenericUser from '../components/GenericUser.astro'; + --- + +
+

Page Title

+
+ + + +
+
+ ``` + + The `server:defer` directive can be used on any Astro component in a project using `hybrid` or `server` mode with an adapter. There are no special APIs needed inside of the island. + + Enable server islands by adding the experimental flag to your Astro config with an appropriate `output` mode and adapter: + + ```js + import { defineConfig } from 'astro/config'; + import netlify from '@astrojs/netlify'; + + export default defineConfig({ + output: 'hybrid', + adapter: netlify(), + experimental: { + serverIslands: true, + }, + }); + ``` + + For more information, see the [server islands documentation](https://docs.astro.build/en/reference/configuration-reference/#experimentalserverislands). + +- [#11482](https://github.com/withastro/astro/pull/11482) [`7c9ed71`](https://github.com/withastro/astro/commit/7c9ed71bf1e13a0c825ba67946b6307d06f77233) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a `--noSync` parameter to the `astro check` command to skip the type-gen step. This can be useful when running `astro check` inside packages that have Astro components, but are not Astro projects + +- [#11098](https://github.com/withastro/astro/pull/11098) [`36e30a3`](https://github.com/withastro/astro/commit/36e30a33092c32c2de1deac316f49660247902b0) Thanks [@itsmatteomanf](https://github.com/itsmatteomanf)! - Adds a new `inferRemoteSize()` function that can be used to infer the dimensions of a remote image. + + Previously, the ability to infer these values was only available by adding the [`inferSize`] attribute to the `` and `` components or `getImage()`. Now, you can also access this data outside of these components. + + This is useful for when you need to know the dimensions of an image for styling purposes or to calculate different densities for responsive images. + + ```astro + --- + import { inferRemoteSize, Image } from 'astro:assets'; + + const imageUrl = 'https://...'; + const { width, height } = await inferRemoteSize(imageUrl); + --- + + + ``` + +- [#11391](https://github.com/withastro/astro/pull/11391) [`6f9b527`](https://github.com/withastro/astro/commit/6f9b52710567f3bec7939a98eb8c76f5ea0b2f91) Thanks [@ARipeAppleByYoursTruly](https://github.com/ARipeAppleByYoursTruly)! - Adds Shiki's [`defaultColor`](https://shiki.style/guide/dual-themes#without-default-color) option to the `` component, giving you more control in applying multiple themes + +- [#11176](https://github.com/withastro/astro/pull/11176) [`a751458`](https://github.com/withastro/astro/commit/a75145871b7bb9277584066e1f625df2aaabebce) Thanks [@tsawada](https://github.com/tsawada)! - Adds two new values to the [pagination `page` prop](https://docs.astro.build/en/reference/api-reference/#the-pagination-page-prop): `page.first` and `page.last` for accessing the URLs of the first and last pages. + +### Patch Changes + +- [#11477](https://github.com/withastro/astro/pull/11477) [`7e9c4a1`](https://github.com/withastro/astro/commit/7e9c4a134c6ea7c8b92ea00038c0845b58c02bc5) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the development server was emitting a 404 status code when the user uses a rewrite that emits a 200 status code. + +- [#11479](https://github.com/withastro/astro/pull/11479) [`ca969d5`](https://github.com/withastro/astro/commit/ca969d538a6a8d64573f426b8a87ebd7e434bd71) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where invalid `astro:env` variables at runtime would not throw correctly + +- [#11489](https://github.com/withastro/astro/pull/11489) [`061f1f4`](https://github.com/withastro/astro/commit/061f1f4d0cb306efd0c768645439111aec765c76) Thanks [@ematipico](https://github.com/ematipico)! - Move root inside the manifest and make serialisable + +- [#11415](https://github.com/withastro/astro/pull/11415) [`e9334d0`](https://github.com/withastro/astro/commit/e9334d05ca88ed6df1becc1512c673e20414bf47) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Refactors how `sync` works and when it's called. Fixes an issue with `astro:env` types in dev not being generated + +- [#11478](https://github.com/withastro/astro/pull/11478) [`3161b67`](https://github.com/withastro/astro/commit/3161b6789c57a3bb740ed117205dc55997eb74ea) Thanks [@bluwy](https://github.com/bluwy)! - Supports importing Astro components with Vite queries, like `?url`, `?raw`, and `?direct` + +- [#11491](https://github.com/withastro/astro/pull/11491) [`fe3afeb`](https://github.com/withastro/astro/commit/fe3afebd652289ec1b65eed983e804dbb37ed092) Thanks [@matthewp](https://github.com/matthewp)! - Fix for Server Islands in Vercel adapter + + Vercel, and probably other adapters only allow pre-defined routes. This makes it so that the `astro:build:done` hook includes the `_server-islands/` route as part of the route data, which is used to configure available routes. + +- [#11483](https://github.com/withastro/astro/pull/11483) [`34f9c25`](https://github.com/withastro/astro/commit/34f9c25740f8eaae0d5e2a2b685b83556d23e63e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes Astro not working on low versions of Node 18 and 20 + +- Updated dependencies [[`49b5145`](https://github.com/withastro/astro/commit/49b5145158a603b9bb951bf914a6a9780c218704)]: + - @astrojs/markdown-remark@5.2.0 + +## 4.11.6 + +### Patch Changes + +- [#11459](https://github.com/withastro/astro/pull/11459) [`bc2e74d`](https://github.com/withastro/astro/commit/bc2e74de384776caa252fd47dbeda895c0488c11) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes false positive audit warnings on elements with the role "tabpanel". + +- [#11472](https://github.com/withastro/astro/pull/11472) [`cb4e6d0`](https://github.com/withastro/astro/commit/cb4e6d09deb7507058115a3fd2a567019a501e4d) Thanks [@delucis](https://github.com/delucis)! - Avoids targeting all files in the `src/` directory for eager optimization by Vite. After this change, only JSX, Vue, Svelte, and Astro components get scanned for early optimization. + +- [#11387](https://github.com/withastro/astro/pull/11387) [`b498461`](https://github.com/withastro/astro/commit/b498461e277bffb0abe21b59a94b1e56a8c69d47) Thanks [@bluwy](https://github.com/bluwy)! - Fixes prerendering not removing unused dynamic imported chunks + +- [#11437](https://github.com/withastro/astro/pull/11437) [`6ccb30e`](https://github.com/withastro/astro/commit/6ccb30e610eed34c2cc2c275485a8ac45c9b6b9e) Thanks [@NuroDev](https://github.com/NuroDev)! - Fixes a case where Astro's config `experimental.env.schema` keys did not allow numbers. Numbers are still not allowed as the first character to be able to generate valid JavaScript identifiers + +- [#11439](https://github.com/withastro/astro/pull/11439) [`08baf56`](https://github.com/withastro/astro/commit/08baf56f328ce4b6814a7f90089c0b3398d8bbfe) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Expands the `isInputError()` utility from `astro:actions` to accept errors of any type. This should now allow type narrowing from a try / catch block. + + ```ts + // example.ts + import { actions, isInputError } from 'astro:actions'; + + try { + await actions.like(new FormData()); + } catch (error) { + if (isInputError(error)) { + console.log(error.fields); + } + } + ``` + +- [#11452](https://github.com/withastro/astro/pull/11452) [`0e66849`](https://github.com/withastro/astro/commit/0e6684983b9b24660a8fef83fe401ec1d567378a) Thanks [@FugiTech](https://github.com/FugiTech)! - Fixes an issue where using .nullish() in a formdata Astro action would always parse as a string + +- [#11438](https://github.com/withastro/astro/pull/11438) [`619f07d`](https://github.com/withastro/astro/commit/619f07db701ebab2d2f2598dd2dcf93ba1e5719c) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Exposes utility types from `astro:actions` for the `defineAction` handler (`ActionHandler`) and the `ActionError` code (`ActionErrorCode`). + +- [#11456](https://github.com/withastro/astro/pull/11456) [`17e048d`](https://github.com/withastro/astro/commit/17e048de0e79d76b933d128676be2388954b419e) Thanks [@RickyC0626](https://github.com/RickyC0626)! - Fixes `astro dev --open` unexpected behavior that spawns a new tab every time a config file is saved + +- [#11337](https://github.com/withastro/astro/pull/11337) [`0a4b31f`](https://github.com/withastro/astro/commit/0a4b31ffeb41ad1dfb3141384e22787763fcae3d) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds a new property `experimental.env.validateSecrets` to allow validating private variables on the server. + + By default, this is set to `false` and only public variables are checked on start. If enabled, secrets will also be checked on start (dev/build modes). This is useful for example in some CIs to make sure all your secrets are correctly set before deploying. + + ```js + // astro.config.mjs + import { defineConfig, envField } from 'astro/config'; + + export default defineConfig({ + experimental: { + env: { + schema: { + // ... + }, + validateSecrets: true, + }, + }, + }); + ``` + +- [#11443](https://github.com/withastro/astro/pull/11443) [`ea4bc04`](https://github.com/withastro/astro/commit/ea4bc04e9489c456e2b4b5dbd67d5e4cf3f89f97) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Expose new `ActionReturnType` utility from `astro:actions`. This infers the return type of an action by passing `typeof actions.name` as a type argument. This example defines a `like` action that returns `likes` as an object: + + ```ts + // actions/index.ts + import { defineAction } from 'astro:actions'; + + export const server = { + like: defineAction({ + handler: () => { + /* ... */ + return { likes: 42 }; + }, + }), + }; + ``` + + In your client code, you can infer this handler return value with `ActionReturnType`: + + ```ts + // client.ts + import { actions, ActionReturnType } from 'astro:actions'; + + type LikesResult = ActionReturnType; + // -> { likes: number } + ``` + +- [#11436](https://github.com/withastro/astro/pull/11436) [`7dca68f`](https://github.com/withastro/astro/commit/7dca68ff2e0f089a3fd090650ee05b1942792fed) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes `astro:actions` autocompletion for the `defineAction` `accept` property + +- [#11455](https://github.com/withastro/astro/pull/11455) [`645e128`](https://github.com/withastro/astro/commit/645e128537f1f20da6703afc115d06371d7da5dd) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Improves `astro:env` invalid variables errors + +## 4.11.5 + +### Patch Changes + +- [#11408](https://github.com/withastro/astro/pull/11408) [`b9e906f`](https://github.com/withastro/astro/commit/b9e906f8e75444739aa259b62489d9f5749260b9) Thanks [@matthewp](https://github.com/matthewp)! - Revert change to how boolean attributes work + +## 4.11.4 + +### Patch Changes + +- [#11362](https://github.com/withastro/astro/pull/11362) [`93993b7`](https://github.com/withastro/astro/commit/93993b77cf4915b4c0d245df9ecbf2265f5893e7) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where creating manually the i18n middleware could break the logic of the functions of the virtual module `astro:i18n` + +- [#11349](https://github.com/withastro/astro/pull/11349) [`98d9ce4`](https://github.com/withastro/astro/commit/98d9ce41f20c8bf024c937e8bde80d3c3dbbed99) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where Astro didn't throw an error when `Astro.rewrite` was used without providing the experimental flag + +- [#11352](https://github.com/withastro/astro/pull/11352) [`a55ee02`](https://github.com/withastro/astro/commit/a55ee0268e1ca22597e9b5e6d1f24b4f28ad978b) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the rewrites didn't update the status code when using manual i18n routing. + +- [#11388](https://github.com/withastro/astro/pull/11388) [`3a223b4`](https://github.com/withastro/astro/commit/3a223b4811708cc93ebb27706118c1723e1fc013) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Adjusts the color of punctuations in error overlay. + +- [#11369](https://github.com/withastro/astro/pull/11369) [`e6de11f`](https://github.com/withastro/astro/commit/e6de11f4a941e29123da3714e5b8f17d25744f0f) Thanks [@bluwy](https://github.com/bluwy)! - Fixes attribute rendering for non-boolean attributes with boolean values + +## 4.11.3 + +### Patch Changes + +- [#11347](https://github.com/withastro/astro/pull/11347) [`33bdc54`](https://github.com/withastro/astro/commit/33bdc5472929f72fa8e39624598bf929c48e60c0) Thanks [@bluwy](https://github.com/bluwy)! - Fixes installed packages detection when running `astro check` + +- [#11327](https://github.com/withastro/astro/pull/11327) [`0df8142`](https://github.com/withastro/astro/commit/0df81422a81c8f8900684d100e9b8f26365fa0b1) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue with the container APIs where a runtime error was thrown during the build, when using `pnpm` as package manager. + +## 4.11.2 + +### Patch Changes + +- [#11335](https://github.com/withastro/astro/pull/11335) [`4c4741b`](https://github.com/withastro/astro/commit/4c4741b42dc531403f7b9647bd51951d0cdb8f5b) Thanks [@ematipico](https://github.com/ematipico)! - Reverts [#11292](https://github.com/withastro/astro/pull/11292), which caused a regression to the input type + +- [#11326](https://github.com/withastro/astro/pull/11326) [`41121fb`](https://github.com/withastro/astro/commit/41121fbe00e144d4d93835811e1c4349664d9003) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where running `astro sync` when using the experimental `astro:env` feature would fail if environment variables were missing + +- [#11338](https://github.com/withastro/astro/pull/11338) [`9752a0b`](https://github.com/withastro/astro/commit/9752a0b27526270fd0066f3db7049e9ae6af1ef8) Thanks [@zaaakher](https://github.com/zaaakher)! - Fixes svg icon margin in devtool tooltip title to look coherent in `rtl` and `ltr` layouts + +- [#11331](https://github.com/withastro/astro/pull/11331) [`f1b78a4`](https://github.com/withastro/astro/commit/f1b78a496034d53b0e9dfc276a4a1b1d691772c4) Thanks [@bluwy](https://github.com/bluwy)! - Removes `resolve` package and simplify internal resolve check + +- [#11339](https://github.com/withastro/astro/pull/11339) [`8fdbf0e`](https://github.com/withastro/astro/commit/8fdbf0e45beffdae3da1e7f36797575c92f8a0ba) Thanks [@matthewp](https://github.com/matthewp)! - Remove non-fatal errors from telemetry + + Previously we tracked non-fatal errors in telemetry to get a good idea of the types of errors that occur in `astro dev`. However this has become noisy over time and results in a lot of data that isn't particularly useful. This removes those non-fatal errors from being tracked. + +## 4.11.1 + +### Patch Changes + +- [#11308](https://github.com/withastro/astro/pull/11308) [`44c61dd`](https://github.com/withastro/astro/commit/44c61ddfd85f1c23f8cec8caeaa5e25897121996) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where custom `404.astro` and `500.astro` were not returning the correct status code when rendered inside a rewriting cycle. + +- [#11302](https://github.com/withastro/astro/pull/11302) [`0622567`](https://github.com/withastro/astro/commit/06225673269201044358788f2a81dbe13912adce) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with the view transition router when redirecting to an URL with different origin. + +- Updated dependencies [[`b6afe6a`](https://github.com/withastro/astro/commit/b6afe6a782f68f4a279463a144baaf99cb96b6dc), [`41064ce`](https://github.com/withastro/astro/commit/41064cee78c1cccd428f710a24c483aeb275fd95)]: + - @astrojs/markdown-remark@5.1.1 + - @astrojs/internal-helpers@0.4.1 + +## 4.11.0 + +### Minor Changes + +- [#11197](https://github.com/withastro/astro/pull/11197) [`4b46bd9`](https://github.com/withastro/astro/commit/4b46bd9bdcbb302f294aa27b8aa07099e104fa17) Thanks [@braebo](https://github.com/braebo)! - Adds [`ShikiTransformer`](https://shiki.style/packages/transformers#shikijs-transformers) support to the [``](https://docs.astro.build/en/reference/api-reference/#code-) component with a new `transformers` prop. + + Note that `transformers` only applies classes and you must provide your own CSS rules to target the elements of your code block. + + ```astro + --- + import { transformerNotationFocus } from '@shikijs/transformers'; + import { Code } from 'astro:components'; + + const code = `const foo = 'hello' + const bar = ' world' + console.log(foo + bar) // [!code focus] + `; + --- + + + + + ``` + +- [#11134](https://github.com/withastro/astro/pull/11134) [`9042be0`](https://github.com/withastro/astro/commit/9042be049157ce859355f911565bc0c3d68f0aa1) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Improves the developer experience of the `500.astro` file by passing it a new `error` prop. + + When an error is thrown, the special `src/pages/500.astro` page now automatically receives the error as a prop. This allows you to display more specific information about the error on a custom 500 page. + + ```astro + --- + // src/pages/500.astro + interface Props { + error: unknown; + } + + const { error } = Astro.props; + --- + +
{error instanceof Error ? error.message : 'Unknown error'}
+ ``` + + If an error occurs rendering this page, your host's default 500 error page will be shown to your visitor in production, and Astro's default error overlay will be shown in development. + +### Patch Changes + +- [#11280](https://github.com/withastro/astro/pull/11280) [`fd3645f`](https://github.com/withastro/astro/commit/fd3645fe8364ec5e280b6802d1468867890d463c) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a bug that prevented cookies from being set when using experimental rewrites + +- [#11275](https://github.com/withastro/astro/pull/11275) [`bab700d`](https://github.com/withastro/astro/commit/bab700d69085b1de8f03fc1b0b31651f709cbfe3) Thanks [@syhily](https://github.com/syhily)! - Drop duplicated brackets in data collections schema generation. + +- [#11272](https://github.com/withastro/astro/pull/11272) [`ea987d7`](https://github.com/withastro/astro/commit/ea987d7da589ead9aa4b550f167f5e2f6c939d2e) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where rewriting `/` would cause an issue, when `trailingSlash` was set to `"never"`. + +- [#11272](https://github.com/withastro/astro/pull/11272) [`ea987d7`](https://github.com/withastro/astro/commit/ea987d7da589ead9aa4b550f167f5e2f6c939d2e) Thanks [@ematipico](https://github.com/ematipico)! - Reverts a logic where it wasn't possible to rewrite `/404` in static mode. It's **now possible** again + +- [#11264](https://github.com/withastro/astro/pull/11264) [`5a9c9a6`](https://github.com/withastro/astro/commit/5a9c9a60e7c32aa461b86b5bc667cb955e23d4d9) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes type generation for empty content collections + +- [#11279](https://github.com/withastro/astro/pull/11279) [`9a08d74`](https://github.com/withastro/astro/commit/9a08d74bc00ae2c3bc254f99580a22ce4df1d002) Thanks [@ascorbic](https://github.com/ascorbic)! - Improves type-checking and error handling to catch case where an image import is passed directly to `getImage()` + +- [#11292](https://github.com/withastro/astro/pull/11292) [`7f8f347`](https://github.com/withastro/astro/commit/7f8f34799528ed0b2011e1ea273bd0636f6e767d) Thanks [@jdtjenkins](https://github.com/jdtjenkins)! - Fixes a case where `defineAction` autocomplete for the `accept` prop would not show `"form"` as a possible value + +- [#11273](https://github.com/withastro/astro/pull/11273) [`cb4d078`](https://github.com/withastro/astro/commit/cb4d07819f0dbdfd94bc4f084edf7720ada01323) Thanks [@ascorbic](https://github.com/ascorbic)! - Corrects an inconsistency in dev where middleware would run for prerendered 404 routes. + Middleware is not run for prerendered 404 routes in production, so this was incorrect. + +- [#11284](https://github.com/withastro/astro/pull/11284) [`f4b029b`](https://github.com/withastro/astro/commit/f4b029b08264268c68fc81ea25b264e81f47e683) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes an issue that would break `Astro.request.url` and `Astro.request.headers` in `astro dev` if HTTP/2 was enabled. + + HTTP/2 is now enabled by default in `astro dev` if `https` is configured in the Vite config. + +## 4.10.3 + +### Patch Changes + +- [#11213](https://github.com/withastro/astro/pull/11213) [`94ac7ef`](https://github.com/withastro/astro/commit/94ac7efd70fd264b10887805a02d5d1877af8701) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Removes the `PUBLIC_` prefix constraint for `astro:env` public variables + +- [#11213](https://github.com/withastro/astro/pull/11213) [`94ac7ef`](https://github.com/withastro/astro/commit/94ac7efd70fd264b10887805a02d5d1877af8701) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental `astro:env` feature only** + + Server secrets specified in the schema must now be imported from `astro:env/server`. Using `getSecret()` is no longer required to use these environment variables in your schema: + + ```diff + - import { getSecret } from 'astro:env/server' + - const API_SECRET = getSecret("API_SECRET") + + import { API_SECRET } from 'astro:env/server' + ``` + + Note that using `getSecret()` with these keys is still possible, but no longer involves any special handling and the raw value will be returned, just like retrieving secrets not specified in your schema. + +- [#11234](https://github.com/withastro/astro/pull/11234) [`4385bf7`](https://github.com/withastro/astro/commit/4385bf7a4dc9c65bff53a30c660f7a909fcabfc9) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new function called `addServerRenderer` to the Container API. Use this function to manually store renderers inside the instance of your container. + + This new function should be preferred when using the Container API in environments like on-demand pages: + + ```ts + import type { APIRoute } from 'astro'; + import { experimental_AstroContainer } from 'astro/container'; + import reactRenderer from '@astrojs/react/server.js'; + import vueRenderer from '@astrojs/vue/server.js'; + import ReactComponent from '../components/button.jsx'; + import VueComponent from '../components/button.vue'; + + // MDX runtime is contained inside the Astro core + import mdxRenderer from 'astro/jsx/server.js'; + + // In case you need to import a custom renderer + import customRenderer from '../renderers/customRenderer.js'; + + export const GET: APIRoute = async (ctx) => { + const container = await experimental_AstroContainer.create(); + container.addServerRenderer({ renderer: reactRenderer }); + container.addServerRenderer({ renderer: vueRenderer }); + container.addServerRenderer({ renderer: customRenderer }); + // You can pass a custom name too + container.addServerRenderer({ + name: 'customRenderer', + renderer: customRenderer, + }); + const vueComponent = await container.renderToString(VueComponent); + return await container.renderToResponse(Component); + }; + ``` + +- [#11249](https://github.com/withastro/astro/pull/11249) [`de60c69`](https://github.com/withastro/astro/commit/de60c69aa06c41f76a5510cc1d0bee4c8a5326a5) Thanks [@markgaze](https://github.com/markgaze)! - Fixes a performance issue with JSON schema generation + +- [#11242](https://github.com/withastro/astro/pull/11242) [`e4fc2a0`](https://github.com/withastro/astro/commit/e4fc2a0bafb4723566552d0c5954b25447890f51) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where the virtual module `astro:container` wasn't resolved + +- [#11236](https://github.com/withastro/astro/pull/11236) [`39bc3a5`](https://github.com/withastro/astro/commit/39bc3a5e8161232d6fdc6cc52b1f246083966d8e) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a case where symlinked content collection directories were not correctly resolved + +- [#11258](https://github.com/withastro/astro/pull/11258) [`d996db6`](https://github.com/withastro/astro/commit/d996db6f0bf361ebd84b23d022db7bb10fb316e6) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds a new error `RewriteWithBodyUsed` that throws when `Astro.rewrite` is used after the request body has already been read. + +- [#11243](https://github.com/withastro/astro/pull/11243) [`ba2b14c`](https://github.com/withastro/astro/commit/ba2b14cc28bd219c241313cdf142b736e7442014) Thanks [@V3RON](https://github.com/V3RON)! - Fixes a prerendering issue for libraries in `node_modules` when a folder with an underscore is in the path. + +- [#11244](https://github.com/withastro/astro/pull/11244) [`d07d2f7`](https://github.com/withastro/astro/commit/d07d2f7ac9d87af907beaca700ba4116dc1d6f37) Thanks [@ematipico](https://github.com/ematipico)! - Improves the developer experience of the custom `500.astro` page in development mode. + + Before, in development, an error thrown during the rendering phase would display the default error overlay, even when users had the `500.astro` page. + + Now, the development server will display the `500.astro` and the original error is logged in the console. + +- [#11240](https://github.com/withastro/astro/pull/11240) [`2851b0a`](https://github.com/withastro/astro/commit/2851b0aa2e2abe80ea603b53c67770e94980a8d3) Thanks [@ascorbic](https://github.com/ascorbic)! - Ignores query strings in module identifiers when matching ".astro" file extensions in Vite plugin + +- [#11245](https://github.com/withastro/astro/pull/11245) [`e22be22`](https://github.com/withastro/astro/commit/e22be22e5729e60220726e92b52d2833c937fd1c) Thanks [@bluwy](https://github.com/bluwy)! - Refactors prerendering chunk handling to correctly remove unused code during the SSR runtime + +## 4.10.2 + +### Patch Changes + +- [#11231](https://github.com/withastro/astro/pull/11231) [`58d7dbb`](https://github.com/withastro/astro/commit/58d7dbb5e0cabea1ac7a35af5b46685fce50d723) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression for `getViteConfig`, where the inline config wasn't merged in the final config. + +- [#11228](https://github.com/withastro/astro/pull/11228) [`1e293a1`](https://github.com/withastro/astro/commit/1e293a1b819024f16bfe482f272df0678cdd7874) Thanks [@ascorbic](https://github.com/ascorbic)! - Updates `getCollection()` to always return a cloned array + +- [#11207](https://github.com/withastro/astro/pull/11207) [`7d9aac3`](https://github.com/withastro/astro/commit/7d9aac376c4b8844917901f7f566f7259d7f66c8) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in the rewriting logic where old data was not purged during the rewrite flow. This caused some false positives when checking the validity of URL path names during the rendering phase. + +- [#11189](https://github.com/withastro/astro/pull/11189) [`75a8fe7`](https://github.com/withastro/astro/commit/75a8fe7e72b95f20c36f034de2b51b6a9550e27e) Thanks [@ematipico](https://github.com/ematipico)! - Improve error message when using `getLocaleByPath` on path that doesn't contain any locales. + +- [#11195](https://github.com/withastro/astro/pull/11195) [`0a6ab6f`](https://github.com/withastro/astro/commit/0a6ab6f562651b558ca90761feed5c07f54f2633) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds support for enums to `astro:env` + + You can now call `envField.enum`: + + ```js + import { defineConfig, envField } from 'astro/config'; + + export default defineConfig({ + experimental: { + env: { + schema: { + API_VERSION: envField.enum({ + context: 'server', + access: 'secret', + values: ['v1', 'v2'], + }), + }, + }, + }, + }); + ``` + +- [#11210](https://github.com/withastro/astro/pull/11210) [`66fc028`](https://github.com/withastro/astro/commit/66fc0283d3f1d1a4f17d7db65ca3521a01fb5bec) Thanks [@matthewp](https://github.com/matthewp)! - Close the iterator only after rendering is complete + +- [#11195](https://github.com/withastro/astro/pull/11195) [`0a6ab6f`](https://github.com/withastro/astro/commit/0a6ab6f562651b558ca90761feed5c07f54f2633) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds additional validation options to `astro:env` + + `astro:env` schema datatypes `string` and `number` now have new optional validation rules: + + ```js + import { defineConfig, envField } from 'astro/config'; + + export default defineConfig({ + experimental: { + env: { + schema: { + FOO: envField.string({ + // ... + max: 32, + min: 3, + length: 12, + url: true, + includes: 'foo', + startsWith: 'bar', + endsWith: 'baz', + }), + BAR: envField.number({ + // ... + gt: 2, + min: 3, + lt: 10, + max: 9, + int: true, + }), + }, + }, + }, + }); + ``` + +- [#11211](https://github.com/withastro/astro/pull/11211) [`97724da`](https://github.com/withastro/astro/commit/97724da93ed7b1db19632c0cdb4b3aab1ff84812) Thanks [@matthewp](https://github.com/matthewp)! - Let middleware handle the original request URL + +- [#10607](https://github.com/withastro/astro/pull/10607) [`7327c6a`](https://github.com/withastro/astro/commit/7327c6acb197e1f2ea6cf94cfbc5700bc755f982) Thanks [@frankbits](https://github.com/frankbits)! - Fixes an issue where a leading slash created incorrect conflict resolution between pages generated from static routes and catch-all dynamic routes + +## 4.10.1 + +### Patch Changes + +- [#11198](https://github.com/withastro/astro/pull/11198) [`8b9a499`](https://github.com/withastro/astro/commit/8b9a499d3733e9d0fc6a0bd067ece19bd36f4726) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where `astro:env` `getSecret` would not retrieve environment variables properly in dev and build modes + +- [#11206](https://github.com/withastro/astro/pull/11206) [`734b98f`](https://github.com/withastro/astro/commit/734b98fecf0212cd76be3c935a49f84a9a7dab34) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental `astro:env` feature only** + + Updates the adapter `astro:env` entrypoint from `astro:env/setup` to `astro/env/setup` + +- [#11205](https://github.com/withastro/astro/pull/11205) [`8c45391`](https://github.com/withastro/astro/commit/8c4539145f0b6a735b65852b2f2b1a7e9f5a9c3f) Thanks [@Nin3lee](https://github.com/Nin3lee)! - Fixes a typo in the config reference + +## 4.10.0 + +### Minor Changes + +- [#10974](https://github.com/withastro/astro/pull/10974) [`2668ef9`](https://github.com/withastro/astro/commit/2668ef984104574f25f29ef75e2572a0745d1666) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds experimental support for the `astro:env` API. + + The `astro:env` API lets you configure a type-safe schema for your environment variables, and indicate whether they should be available on the server or the client. Import and use your defined variables from the appropriate `/client` or `/server` module: + + ```astro + --- + import { PUBLIC_APP_ID } from 'astro:env/client'; + import { PUBLIC_API_URL, getSecret } from 'astro:env/server'; + const API_TOKEN = getSecret('API_TOKEN'); + + const data = await fetch(`${PUBLIC_API_URL}/users`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${API_TOKEN}`, + }, + body: JSON.stringify({ appId: PUBLIC_APP_ID }), + }); + --- + ``` + + To define the data type and properties of your environment variables, declare a schema in your Astro config in `experimental.env.schema`. The `envField` helper allows you define your variable as a string, number, or boolean and pass properties in an object: + + ```js + // astro.config.mjs + import { defineConfig, envField } from 'astro/config'; + + export default defineConfig({ + experimental: { + env: { + schema: { + PUBLIC_API_URL: envField.string({ context: 'client', access: 'public', optional: true }), + PUBLIC_PORT: envField.number({ context: 'server', access: 'public', default: 4321 }), + API_SECRET: envField.string({ context: 'server', access: 'secret' }), + }, + }, + }, + }); + ``` + + There are three kinds of environment variables, determined by the combination of `context` (`client` or `server`) and `access` (`private` or `public`) settings defined in your [`env.schema`](#experimentalenvschema): + - **Public client variables**: These variables end up in both your final client and server bundles, and can be accessed from both client and server through the `astro:env/client` module: + + ```js + import { PUBLIC_API_URL } from 'astro:env/client'; + ``` + + - **Public server variables**: These variables end up in your final server bundle and can be accessed on the server through the `astro:env/server` module: + + ```js + import { PUBLIC_PORT } from 'astro:env/server'; + ``` + + - **Secret server variables**: These variables are not part of your final bundle and can be accessed on the server through the `getSecret()` helper function available from the `astro:env/server` module: + + ```js + import { getSecret } from 'astro:env/server'; + + const API_SECRET = getSecret('API_SECRET'); // typed + const SECRET_NOT_IN_SCHEMA = getSecret('SECRET_NOT_IN_SCHEMA'); // string | undefined + ``` + + **Note:** Secret client variables are not supported because there is no safe way to send this data to the client. Therefore, it is not possible to configure both `context: "client"` and `access: "secret"` in your schema. + + To learn more, check out [the documentation](https://docs.astro.build/en/reference/configuration-reference/#experimentalenv). + +### Patch Changes + +- [#11192](https://github.com/withastro/astro/pull/11192) [`58b10a0`](https://github.com/withastro/astro/commit/58b10a073192030a251cff8ad706ab5b015180c9) Thanks [@liruifengv](https://github.com/liruifengv)! - Improves DX by throwing the original `AstroUserError` when an error is thrown inside a `.mdx` file. + +- [#11136](https://github.com/withastro/astro/pull/11136) [`35ef53c`](https://github.com/withastro/astro/commit/35ef53c0897c0d360efc086a71c5f4406721d2fe) Thanks [@ematipico](https://github.com/ematipico)! - Errors that are emitted during a rewrite are now bubbled up and shown to the user. A 404 response is not returned anymore. + +- [#11144](https://github.com/withastro/astro/pull/11144) [`803dd80`](https://github.com/withastro/astro/commit/803dd8061df02138b4928442bcb76e77dcf6f5e7) Thanks [@ematipico](https://github.com/ematipico)! - The integration now exposes a function called `getContainerRenderer`, that can be used inside the Container APIs to load the relative renderer. + + ```js + import { experimental_AstroContainer as AstroContainer } from 'astro/container'; + import ReactWrapper from '../src/components/ReactWrapper.astro'; + import { loadRenderers } from 'astro:container'; + import { getContainerRenderer } from '@astrojs/react'; + + test('ReactWrapper with react renderer', async () => { + const renderers = await loadRenderers([getContainerRenderer()]); + const container = await AstroContainer.create({ + renderers, + }); + const result = await container.renderToString(ReactWrapper); + + expect(result).toContain('Counter'); + expect(result).toContain('Count: 5'); + }); + ``` + +- [#11144](https://github.com/withastro/astro/pull/11144) [`803dd80`](https://github.com/withastro/astro/commit/803dd8061df02138b4928442bcb76e77dcf6f5e7) Thanks [@ematipico](https://github.com/ematipico)! - **BREAKING CHANGE to the experimental Container API only** + + Changes the **type** of the `renderers` option of the `AstroContainer::create` function and adds a dedicated function `loadRenderers()` to load the rendering scripts from renderer integration packages (`@astrojs/react`, `@astrojs/preact`, `@astrojs/solid-js`, `@astrojs/svelte`, `@astrojs/vue`, `@astrojs/lit`, and `@astrojs/mdx`). + + You no longer need to know the individual, direct file paths to the client and server rendering scripts for each renderer integration package. Now, there is a dedicated function to load the renderer from each package, which is available from `getContainerRenderer()`: + + ```diff + import { experimental_AstroContainer as AstroContainer } from 'astro/container'; + import ReactWrapper from '../src/components/ReactWrapper.astro'; + import { loadRenderers } from "astro:container"; + import { getContainerRenderer } from "@astrojs/react"; + + test('ReactWrapper with react renderer', async () => { + + const renderers = await loadRenderers([getContainerRenderer()]) + - const renderers = [ + - { + - name: '@astrojs/react', + - clientEntrypoint: '@astrojs/react/client.js', + - serverEntrypoint: '@astrojs/react/server.js', + - }, + - ]; + const container = await AstroContainer.create({ + renderers, + }); + const result = await container.renderToString(ReactWrapper); + + expect(result).toContain('Counter'); + expect(result).toContain('Count: 5'); + }); + ``` + + The new `loadRenderers()` helper function is available from `astro:container`, a virtual module that can be used when running the Astro container inside `vite`. + +- [#11136](https://github.com/withastro/astro/pull/11136) [`35ef53c`](https://github.com/withastro/astro/commit/35ef53c0897c0d360efc086a71c5f4406721d2fe) Thanks [@ematipico](https://github.com/ematipico)! - It's not possible anymore to use `Astro.rewrite("/404")` inside static pages. This isn't counterproductive because Astro will end-up emitting a page that contains the HTML of 404 error page. + + It's still possible to use `Astro.rewrite("/404")` inside on-demand pages, or pages that opt-out from prerendering. + +- [#11191](https://github.com/withastro/astro/pull/11191) [`6e29a17`](https://github.com/withastro/astro/commit/6e29a172f153d15fac07320488fae01dece71748) Thanks [@matthewp](https://github.com/matthewp)! - Fixes a case where `Astro.url` would be incorrect when having `build.format` set to `'preserve'` in the Astro config + +- [#11182](https://github.com/withastro/astro/pull/11182) [`40b0b4d`](https://github.com/withastro/astro/commit/40b0b4d1e4ef1aa95d5e9011652444b855ab0b9c) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where `Astro.rewrite` wasn't carrying over the body of a `Request` in on-demand pages. + +- [#11194](https://github.com/withastro/astro/pull/11194) [`97fbe93`](https://github.com/withastro/astro/commit/97fbe938a9b07d52d61011da4bd5a8b5ad85a700) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the function `getViteConfig` wasn't returning the correct merged Astro configuration + +## 4.9.3 + +### Patch Changes + +- [#11171](https://github.com/withastro/astro/pull/11171) [`ff8004f`](https://github.com/withastro/astro/commit/ff8004f6a7b2aab4c6ac367f13744a341c3c5462) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Guard globalThis.astroAsset usage in proxy code to avoid errors in wonky situations + +- [#11178](https://github.com/withastro/astro/pull/11178) [`1734c49`](https://github.com/withastro/astro/commit/1734c49f516ff7d778d6724a0db6d39649921b4b) Thanks [@theoephraim](https://github.com/theoephraim)! - Improves `isPromise` utility to check the presence of `then` on an object before trying to access it - which can cause undesired side-effects on Proxy objects + +- [#11183](https://github.com/withastro/astro/pull/11183) [`3cfa2ac`](https://github.com/withastro/astro/commit/3cfa2ac7e51d7bea96980403c393f9bcda1e9375) Thanks [@66Leo66](https://github.com/66Leo66)! - Suggest `pnpm dlx` instead of `pnpx` in update check. + +- [#11147](https://github.com/withastro/astro/pull/11147) [`2d93902`](https://github.com/withastro/astro/commit/2d93902f4c51dcc62b077b0546ead688e6f32c63) Thanks [@kitschpatrol](https://github.com/kitschpatrol)! - Fixes invalid MIME types in Picture source elements for jpg and svg extensions, which was preventing otherwise valid source variations from being shown by the browser + +- [#11141](https://github.com/withastro/astro/pull/11141) [`19df89f`](https://github.com/withastro/astro/commit/19df89f87c74205ebc76aeac43ca20b00694acec) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an internal error that prevented the `AstroContainer` to render the `Content` component. + + You can now write code similar to the following to render content collections: + + ```js + const entry = await getEntry(collection, slug); + const { Content } = await entry.render(); + const content = await container.renderToString(Content); + ``` + +- [#11170](https://github.com/withastro/astro/pull/11170) [`ba20c71`](https://github.com/withastro/astro/commit/ba20c718a4ccd1009bdf81f8265956bff1d19d05) Thanks [@matthewp](https://github.com/matthewp)! - Retain client scripts in content cache + +## 4.9.2 + +### Patch Changes + +- [#11138](https://github.com/withastro/astro/pull/11138) [`98e0372`](https://github.com/withastro/astro/commit/98e0372cfd47a3e025be2ac68d1e9ebf06cf548b) Thanks [@ematipico](https://github.com/ematipico)! - You can now pass `props` when rendering a component using the Container APIs: + + ```js + import { experimental_AstroContainer as AstroContainer } from 'astro/container'; + import Card from '../src/components/Card.astro'; + + const container = await AstroContainer.create(); + const result = await container.renderToString(Card, { + props: { + someState: true, + }, + }); + ``` + +## 4.9.1 + +### Patch Changes + +- [#11129](https://github.com/withastro/astro/pull/11129) [`4bb9269`](https://github.com/withastro/astro/commit/4bb926908d9a7ee134701c3e5a1b5e6ea688f843) Thanks [@matthewp](https://github.com/matthewp)! - Prevent errors from adapters when i18n domains is not used + +## 4.9.0 + +### Minor Changes + +- [#11051](https://github.com/withastro/astro/pull/11051) [`12a1bcc`](https://github.com/withastro/astro/commit/12a1bccc818af292cdd2a8ed0f3e3c042b9819b4) Thanks [@ematipico](https://github.com/ematipico)! - Introduces an experimental Container API to render `.astro` components in isolation. + + This API introduces three new functions to allow you to create a new container and render an Astro component returning either a string or a Response: + - `create()`: creates a new instance of the container. + - `renderToString()`: renders a component and return a string. + - `renderToResponse()`: renders a component and returns the `Response` emitted by the rendering phase. + + The first supported use of this new API is to enable unit testing. For example, with `vitest`, you can create a container to render your component with test data and check the result: + + ```js + import { experimental_AstroContainer as AstroContainer } from 'astro/container'; + import { expect, test } from 'vitest'; + import Card from '../src/components/Card.astro'; + + test('Card with slots', async () => { + const container = await AstroContainer.create(); + const result = await container.renderToString(Card, { + slots: { + default: 'Card content', + }, + }); + + expect(result).toContain('This is a card'); + expect(result).toContain('Card content'); + }); + ``` + + For a complete reference, see the [Container API docs](https://docs.astro.build/en/reference/container-reference/). + + For a feature overview, and to give feedback on this experimental API, see the [Container API roadmap discussion](https://github.com/withastro/roadmap/pull/916). + +- [#11021](https://github.com/withastro/astro/pull/11021) [`2d4c8fa`](https://github.com/withastro/astro/commit/2d4c8faa56a64d963fe7847b5be2d7a59e12ed5b) Thanks [@ematipico](https://github.com/ematipico)! - The CSRF protection feature that was introduced behind a flag in [v4.6.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#460) is no longer experimental and is available for general use. + + To enable the stable version, add the new top-level `security` option in `astro.config.mjs`. If you were previously using the experimental version of this feature, also delete the experimental flag: + + ```diff + export default defineConfig({ + - experimental: { + - security: { + - csrfProtection: { + - origin: true + - } + - } + - }, + + security: { + + checkOrigin: true + + } + }) + ``` + + Enabling this setting performs a check that the `"origin"` header, automatically passed by all modern browsers, matches the URL sent by each Request. + + This check is executed only for pages rendered on demand, and only for the requests `POST`, `PATCH`, `DELETE` and `PUT` with one of the following `"content-type"` headers: `'application/x-www-form-urlencoded'`, `'multipart/form-data'`, `'text/plain'`. + + If the `"origin"` header doesn't match the pathname of the request, Astro will return a 403 status code and won't render the page. + + For more information, see the [`security` configuration docs](https://docs.astro.build/en/reference/configuration-reference/#security). + +- [#11022](https://github.com/withastro/astro/pull/11022) [`be68ab4`](https://github.com/withastro/astro/commit/be68ab47e236476ba980cbf74daf85f27cd866f4) Thanks [@ematipico](https://github.com/ematipico)! - The `i18nDomains` routing feature introduced behind a flag in [v3.4.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#430) is no longer experimental and is available for general use. + + This routing option allows you to configure different domains for individual locales in entirely server-rendered projects using the [@astrojs/node](https://docs.astro.build/en/guides/integrations-guide/node/) or [@astrojs/vercel](https://docs.astro.build/en/guides/integrations-guide/vercel/) adapter with a `site` configured. + + If you were using this feature, please remove the experimental flag from your Astro config: + + ```diff + import { defineConfig } from 'astro' + + export default defineConfig({ + - experimental: { + - i18nDomains: true, + - } + }) + ``` + + If you have been waiting for stabilization before using this routing option, you can now do so. + + Please see [the internationalization docs](https://docs.astro.build/en/guides/internationalization/#domains) for more about this feature. + +- [#11071](https://github.com/withastro/astro/pull/11071) [`8ca7c73`](https://github.com/withastro/astro/commit/8ca7c731dea894e77f84b314ebe3a141d5daa918) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds two new functions `experimental_getActionState()` and `experimental_withState()` to support [the React 19 `useActionState()` hook](https://react.dev/reference/react/useActionState) when using Astro Actions. This introduces progressive enhancement when calling an Action with the `withState()` utility. + + This example calls a `like` action that accepts a `postId` and returns the number of likes. Pass this action to the `experimental_withState()` function to apply progressive enhancement info, and apply to `useActionState()` to track the result: + + ```tsx + import { actions } from 'astro:actions'; + import { experimental_withState } from '@astrojs/react/actions'; + + export function Like({ postId }: { postId: string }) { + const [state, action, pending] = useActionState( + experimental_withState(actions.like), + 0, // initial likes + ); + + return ( +
+ + +
+ ); + } + ``` + + You can also access the state stored by `useActionState()` from your action `handler`. Call `experimental_getActionState()` with the API context, and optionally apply a type to the result: + + ```ts + import { defineAction, z } from 'astro:actions'; + import { experimental_getActionState } from '@astrojs/react/actions'; + + export const server = { + like: defineAction({ + input: z.object({ + postId: z.string(), + }), + handler: async ({ postId }, ctx) => { + const currentLikes = experimental_getActionState(ctx); + // write to database + return currentLikes + 1; + }, + }), + }; + ``` + +- [#11101](https://github.com/withastro/astro/pull/11101) [`a6916e4`](https://github.com/withastro/astro/commit/a6916e4402bf5b7d74bab784a54eba63fd1d1179) Thanks [@linguofeng](https://github.com/linguofeng)! - Updates Astro's code for adapters to use the header `x-forwarded-for` to initialize the `clientAddress`. + + To take advantage of the new change, integration authors must upgrade the version of Astro in their adapter `peerDependencies` to `4.9.0`. + +- [#11071](https://github.com/withastro/astro/pull/11071) [`8ca7c73`](https://github.com/withastro/astro/commit/8ca7c731dea894e77f84b314ebe3a141d5daa918) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds compatibility for Astro Actions in the React 19 beta. Actions can be passed to a `form action` prop directly, and Astro will automatically add metadata for progressive enhancement. + + ```tsx + import { actions } from 'astro:actions'; + + function Like() { + return ( +
+ {/* auto-inserts hidden input for progressive enhancement */} + +
+ ); + } + ``` + +### Patch Changes + +- [#11088](https://github.com/withastro/astro/pull/11088) [`9566fa0`](https://github.com/withastro/astro/commit/9566fa08608be766df355be17d72a39ea7b99ed0) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Allow actions to be called on the server. This allows you to call actions as utility functions in your Astro frontmatter, endpoints, and server-side UI components. + + Import and call directly from `astro:actions` as you would for client actions: + + ```astro + --- + // src/pages/blog/[postId].astro + import { actions } from 'astro:actions'; + + await actions.like({ postId: Astro.params.postId }); + --- + ``` + +- [#11112](https://github.com/withastro/astro/pull/11112) [`29a8650`](https://github.com/withastro/astro/commit/29a8650375053cd5690a32bed4140f0fef11c705) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Deprecate the `getApiContext()` function. API Context can now be accessed from the second parameter to your Action `handler()`: + + ```diff + // src/actions/index.ts + import { + defineAction, + z, + - getApiContext, + } from 'astro:actions'; + + export const server = { + login: defineAction({ + input: z.object({ id: z.string }), + + handler(input, context) { + const user = context.locals.auth(input.id); + return user; + } + }), + } + ``` + +## 4.8.7 + +### Patch Changes + +- [#11073](https://github.com/withastro/astro/pull/11073) [`f5c8fee`](https://github.com/withastro/astro/commit/f5c8fee76c5e688ef23c18be79705b18f1750415) Thanks [@matthewp](https://github.com/matthewp)! - Prevent cache content from being left in dist folder + + When `contentCollectionsCache` is enabled temporary cached content is copied into the `outDir` for processing. This fixes it so that this content is cleaned out, along with the rest of the temporary build JS. + +- [#11054](https://github.com/withastro/astro/pull/11054) [`f6b171e`](https://github.com/withastro/astro/commit/f6b171ed50eed253b8ac005bd5e9d1841a8003dd) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Respect error status when handling Actions with a progressive fallback. + +- [#11092](https://github.com/withastro/astro/pull/11092) [`bfe9c73`](https://github.com/withastro/astro/commit/bfe9c73536f0794e4f5ede5040adabbe0e705984) Thanks [@duckycoding-dev](https://github.com/duckycoding-dev)! - Change `slot` attribute of `IntrinsicAttributes` to match the definition of `HTMLAttributes`'s own `slot` attribute of type `string | undefined | null` + +- [#10875](https://github.com/withastro/astro/pull/10875) [`b5f95b2`](https://github.com/withastro/astro/commit/b5f95b2fb156152fabf2a22e150037a8255006f9) Thanks [@W1M0R](https://github.com/W1M0R)! - Fixes a typo in a JSDoc annotation + +- [#11111](https://github.com/withastro/astro/pull/11111) [`a5d79dd`](https://github.com/withastro/astro/commit/a5d79ddeb2d592de9eb2468471fdcf3eea5ef730) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fix unexpected `headers` warning on prerendered routes when using Astro Actions. + +- [#11081](https://github.com/withastro/astro/pull/11081) [`af42e05`](https://github.com/withastro/astro/commit/af42e0552054b3b4ac784ed78c60f80bfc38d8ca) Thanks [@V3RON](https://github.com/V3RON)! - Correctly position inspection tooltip in RTL mode + + When RTL mode is turned on, the inspection tooltip tend to overflow the window on the left side. + Additional check has been added to prevent that. + +## 4.8.6 + +### Patch Changes + +- [#11084](https://github.com/withastro/astro/pull/11084) [`9637014`](https://github.com/withastro/astro/commit/9637014b1495a5a41cb384c7de4de410348f4cc0) Thanks [@bluwy](https://github.com/bluwy)! - Fixes regression when handling hoisted scripts from content collections + +## 4.8.5 + +### Patch Changes + +- [#11065](https://github.com/withastro/astro/pull/11065) [`1f988ed`](https://github.com/withastro/astro/commit/1f988ed10f4737b5333c9978115ee531786eb539) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in the Astro rewrite logic, where rewriting the index with parameters - `next("/?foo=bar")` - didn't work as expected. + +- [#10924](https://github.com/withastro/astro/pull/10924) [`3a0c02a`](https://github.com/withastro/astro/commit/3a0c02ae0357c267881b30454b5320075378894b) Thanks [@Its-Just-Nans](https://github.com/Its-Just-Nans)! - Handle image-size errors by displaying a clearer message + +- [#11058](https://github.com/withastro/astro/pull/11058) [`749a7ac`](https://github.com/withastro/astro/commit/749a7ac967146952450a4173dcb6a5494755460c) Thanks [@matthewp](https://github.com/matthewp)! - Fix streaming in Node.js fast path + +- [#11052](https://github.com/withastro/astro/pull/11052) [`a05ca38`](https://github.com/withastro/astro/commit/a05ca38c2cf327ae9130ee1c139a0e510b9da50a) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where rewriting would conflict with the actions internal middleware + +- [#11062](https://github.com/withastro/astro/pull/11062) [`16f12e4`](https://github.com/withastro/astro/commit/16f12e426e5869721313bb771e2ec5b821c5452e) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where `astro build` didn't create custom `404.html` and `500.html` when a certain combination of i18n options was applied + +- [#10965](https://github.com/withastro/astro/pull/10965) [`a8f0372`](https://github.com/withastro/astro/commit/a8f0372ea71479ef80c58e74201dea6a5a2b2ae4) Thanks [@Elias-Chairi](https://github.com/Elias-Chairi)! - Update generator.ts to allow %23 (#) in dynamic urls + +- [#11069](https://github.com/withastro/astro/pull/11069) [`240a70a`](https://github.com/withastro/astro/commit/240a70a29f8e11d161da021845c208f982d64e5c) Thanks [@ematipico](https://github.com/ematipico)! - Improves debug logging for on-demand pages + +## 4.8.4 + +### Patch Changes + +- [#11026](https://github.com/withastro/astro/pull/11026) [`8dfb1a2`](https://github.com/withastro/astro/commit/8dfb1a23cc5996c410f7e33211d132dac36c9f77) Thanks [@bluwy](https://github.com/bluwy)! - Skips rendering script tags if it's inlined and empty when `experimental.directRenderScript` is enabled + +- [#11043](https://github.com/withastro/astro/pull/11043) [`d0d1710`](https://github.com/withastro/astro/commit/d0d1710439ec281518b17d03126b5d9cd008a102) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes minor type issues in actions component example + +- [#10999](https://github.com/withastro/astro/pull/10999) [`5f353e3`](https://github.com/withastro/astro/commit/5f353e39b2b9fb15e6c9d193b5b5101457fef002) Thanks [@bluwy](https://github.com/bluwy)! - The prefetch feature is updated to better support different browsers and different cache headers setup, including: + 1. All prefetch strategies will now always try to use `` if supported, or will fall back to `fetch()`. + 2. The `prefetch()` programmatic API's `with` option is deprecated in favour of an automatic approach that will also try to use `` element in the `` component so scoped styling can be applied to the `` element + +## 4.8.0 + +### Minor Changes + +- [#10935](https://github.com/withastro/astro/pull/10935) [`ddd8e49`](https://github.com/withastro/astro/commit/ddd8e49d1a179bec82310fb471f822a1567a6610) Thanks [@bluwy](https://github.com/bluwy)! - Exports `astro/jsx/rehype.js` with utilities to generate an Astro metadata object + +- [#10625](https://github.com/withastro/astro/pull/10625) [`698c2d9`](https://github.com/withastro/astro/commit/698c2d9bb51e20b38de405b6076fd6488ddb5c2b) Thanks [@goulvenclech](https://github.com/goulvenclech)! - Adds the ability for multiple pages to use the same component as an `entrypoint` when building an Astro integration. This change is purely internal, and aligns the build process with the behaviour in the development server. + +- [#10906](https://github.com/withastro/astro/pull/10906) [`7bbd664`](https://github.com/withastro/astro/commit/7bbd66459dd29a338ac1dfae0e4c984cb08f73b3) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new radio checkbox component to the dev toolbar UI library (`astro-dev-toolbar-radio-checkbox`) + +- [#10963](https://github.com/withastro/astro/pull/10963) [`61f47a6`](https://github.com/withastro/astro/commit/61f47a684235a049cbfc4f2cbb5edff3befeced7) Thanks [@delucis](https://github.com/delucis)! - Adds support for passing an inline Astro configuration object to `getViteConfig()` + + If you are using `getViteConfig()` to configure the Vitest test runner, you can now pass a second argument to control how Astro is configured. This makes it possible to configure unit tests with different Astro options when using [Vitest’s workspaces](https://vitest.dev/guide/workspace.html) feature. + + ```js + // vitest.config.ts + import { getViteConfig } from 'astro/config'; + + export default getViteConfig( + /* Vite configuration */ + { test: {} }, + /* Astro configuration */ + { + site: 'https://example.com', + trailingSlash: 'never', + }, + ); + ``` + +- [#10867](https://github.com/withastro/astro/pull/10867) [`47877a7`](https://github.com/withastro/astro/commit/47877a75404ccc8786bbea2171015fb088dc01a1) Thanks [@ematipico](https://github.com/ematipico)! - Adds experimental rewriting in Astro with a new `rewrite()` function and the middleware `next()` function. + + The feature is available via an experimental flag in `astro.config.mjs`: + + ```js + export default defineConfig({ + experimental: { + rewriting: true, + }, + }); + ``` + + When enabled, you can use `rewrite()` to **render** another page without changing the URL of the browser in Astro pages and endpoints. + + ```astro + --- + // src/pages/dashboard.astro + if (!Astro.props.allowed) { + return Astro.rewrite('/'); + } + --- + ``` + + ```js + // src/pages/api.js + export function GET(ctx) { + if (!ctx.locals.allowed) { + return ctx.rewrite('/'); + } + } + ``` + + The middleware `next()` function now accepts a parameter with the same type as the `rewrite()` function. For example, with `next("/")`, you can call the next middleware function with a new `Request`. + + ```js + // src/middleware.js + export function onRequest(ctx, next) { + if (!ctx.cookies.get('allowed')) { + return next('/'); // new signature + } + return next(); + } + ``` + + > **NOTE**: please [read the RFC](https://github.com/withastro/roadmap/blob/feat/reroute/proposals/0047-rerouting.md) to understand the current expectations of the new APIs. + +- [#10858](https://github.com/withastro/astro/pull/10858) [`c0c509b`](https://github.com/withastro/astro/commit/c0c509b6bf3f55562d22297fdcc2b3e57969734d) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds experimental support for the Actions API. Actions let you define type-safe endpoints you can query from client components with progressive enhancement built in. + + Actions help you write type-safe backend functions you can call from anywhere. Enable server rendering [using the `output` property](https://docs.astro.build/en/basics/rendering-modes/#on-demand-rendered) and add the `actions` flag to the `experimental` object: + + ```js + { + output: 'hybrid', // or 'server' + experimental: { + actions: true, + }, + } + ``` + + Declare all your actions in `src/actions/index.ts`. This file is the global actions handler. + + Define an action using the `defineAction()` utility from the `astro:actions` module. These accept the `handler` property to define your server-side request handler. If your action accepts arguments, apply the `input` property to validate parameters with Zod. + + This example defines two actions: `like` and `comment`. The `like` action accepts a JSON object with a `postId` string, while the `comment` action accepts [FormData](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) with `postId`, `author`, and `body` strings. Each `handler` updates your database and return a type-safe response. + + ```ts + // src/actions/index.ts + import { defineAction, z } from 'astro:actions'; + + export const server = { + like: defineAction({ + input: z.object({ postId: z.string() }), + handler: async ({ postId }) => { + // update likes in db + + return likes; + }, + }), + comment: defineAction({ + accept: 'form', + input: z.object({ + postId: z.string(), + + body: z.string(), + }), + handler: async ({ postId }) => { + // insert comments in db + + return comment; + }, + }), + }; + ``` + + Then, call an action from your client components using the `actions` object from `astro:actions`. You can pass a type-safe object when using JSON, or a [FormData](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) object when using `accept: 'form'` in your action definition: + + ```tsx "actions" + // src/components/blog.tsx + import { actions } from 'astro:actions'; + import { useState } from 'preact/hooks'; + + export function Like({ postId }: { postId: string }) { + const [likes, setLikes] = useState(0); + return ( + + ); + } + + export function Comment({ postId }: { postId: string }) { + return ( +
{ + e.preventDefault(); + const formData = new FormData(e.target); + const result = await actions.blog.comment(formData); + // handle result + }} + > + + + + + +
+ ); + } + ``` + + For a complete overview, and to give feedback on this experimental API, see the [Actions RFC](https://github.com/withastro/roadmap/blob/actions/proposals/0046-actions.md). + +- [#10906](https://github.com/withastro/astro/pull/10906) [`7bbd664`](https://github.com/withastro/astro/commit/7bbd66459dd29a338ac1dfae0e4c984cb08f73b3) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `buttonBorderRadius` property to the `astro-dev-toolbar-button` component for the dev toolbar component library. This property can be useful to make a fully rounded button with an icon in the center. + +### Patch Changes + +- [#10977](https://github.com/withastro/astro/pull/10977) [`59571e8`](https://github.com/withastro/astro/commit/59571e8812ec637f5ea61be6c6adc0f45212d176) Thanks [@BryceRussell](https://github.com/BryceRussell)! - Improve error message when accessing `clientAddress` on prerendered routes + +- [#10935](https://github.com/withastro/astro/pull/10935) [`ddd8e49`](https://github.com/withastro/astro/commit/ddd8e49d1a179bec82310fb471f822a1567a6610) Thanks [@bluwy](https://github.com/bluwy)! - Improves the error message when failed to render MDX components + +- [#10917](https://github.com/withastro/astro/pull/10917) [`3412535`](https://github.com/withastro/astro/commit/3412535be4a0ec94cea18c5d186b7ffbd6f8209c) Thanks [@jakobhellermann](https://github.com/jakobhellermann)! - Fixes a case where the local server would crash when the host also contained the port, eg. with `X-Forwarded-Host: hostname:8080` and `X-Forwarded-Port: 8080` headers + +- [#10959](https://github.com/withastro/astro/pull/10959) [`685fc22`](https://github.com/withastro/astro/commit/685fc22bc6247be69a34c3f6945dec058c19fd71) Thanks [@bluwy](https://github.com/bluwy)! - Refactors internal handling of styles and scripts for content collections to improve build performance + +- [#10889](https://github.com/withastro/astro/pull/10889) [`4d905cc`](https://github.com/withastro/astro/commit/4d905ccef663f728fc981181f5bb9f1d157184ff) Thanks [@matthewp](https://github.com/matthewp)! - Preserve content modules properly in cache + +- [#10955](https://github.com/withastro/astro/pull/10955) [`2978287`](https://github.com/withastro/astro/commit/2978287f92dbd135f5c3efc6a037ea1756064d35) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Handles `AstroUserError`s thrown while syncing content collections and exports `BaseSchema` and `CollectionConfig` types + +## 4.7.1 + +### Patch Changes + +- [#10911](https://github.com/withastro/astro/pull/10911) [`a86dc9d`](https://github.com/withastro/astro/commit/a86dc9d269fc4409c458cfa05dcfaeee12bade2f) Thanks [@bluwy](https://github.com/bluwy)! - Skips adding CSS dependencies of CSS Vite modules as style tags in the HTML + +- [#10900](https://github.com/withastro/astro/pull/10900) [`36bb3b6`](https://github.com/withastro/astro/commit/36bb3b6025eb51f6e027a76a514cc7ebb29deb10) Thanks [@martrapp](https://github.com/martrapp)! - Detects overlapping navigation and view transitions and automatically aborts all but the most recent one. + +- [#10933](https://github.com/withastro/astro/pull/10933) [`007d17f`](https://github.com/withastro/astro/commit/007d17fee072955d4acb846a06d9eb666e908ef6) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `app.toggleState` not working correctly + +- [#10931](https://github.com/withastro/astro/pull/10931) [`4ce5ced`](https://github.com/withastro/astro/commit/4ce5ced44d490f4c6df771995aef14e11910ec57) Thanks [@ktym4a](https://github.com/ktym4a)! - Fixes `toggleNotification()`'s parameter type for the notification level not using the proper levels + +## 4.7.0 + +### Minor Changes + +- [#10665](https://github.com/withastro/astro/pull/10665) [`7b4f284`](https://github.com/withastro/astro/commit/7b4f2840203fe220758934f1366485f788727f0d) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds new utilities to ease the creation of toolbar apps including `defineToolbarApp` to make it easier to define your toolbar app and `app` and `server` helpers for easier communication between the toolbar and the server. These new utilities abstract away some of the boilerplate code that is common in toolbar apps, and lower the barrier of entry for app authors. + + For example, instead of creating an event listener for the `app-toggled` event and manually typing the value in the callback, you can now use the `onAppToggled` method. Additionally, communicating with the server does not require knowing any of the Vite APIs anymore, as a new `server` object is passed to the `init` function that contains easy to use methods for communicating with the server. + + ```diff + import { defineToolbarApp } from "astro/toolbar"; + + export default defineToolbarApp({ + init(canvas, app, server) { + + - app.addEventListener("app-toggled", (e) => { + - console.log(`App is now ${state ? "enabled" : "disabled"}`);. + - }); + + + app.onToggled(({ state }) => { + + console.log(`App is now ${state ? "enabled" : "disabled"}`); + + }); + + - if (import.meta.hot) { + - import.meta.hot.send("my-app:my-client-event", { message: "world" }); + - } + + + server.send("my-app:my-client-event", { message: "world" }) + + - if (import.meta.hot) { + - import.meta.hot.on("my-server-event", (data: {message: string}) => { + - console.log(data.message); + - }); + - } + + + server.on<{ message: string }>("my-server-event", (data) => { + + console.log(data.message); // data is typed using the type parameter + + }); + }, + }) + ``` + + Server helpers are also available on the server side, for use in your integrations, through the new `toolbar` object: + + ```ts + "astro:server:setup": ({ toolbar }) => { + toolbar.on<{ message: string }>("my-app:my-client-event", (data) => { + console.log(data.message); + toolbar.send("my-server-event", { message: "hello" }); + }); + } + ``` + + This is a backwards compatible change and your your existing dev toolbar apps will continue to function. However, we encourage you to build your apps with the new helpers, following the [updated Dev Toolbar API documentation](https://docs.astro.build/en/reference/dev-toolbar-app-reference/). + +- [#10734](https://github.com/withastro/astro/pull/10734) [`6fc4c0e`](https://github.com/withastro/astro/commit/6fc4c0e420da7629b4cfc28ee7efce1d614447be) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Astro will now automatically check for updates when you run the dev server. If a new version is available, a message will appear in the terminal with instructions on how to update. Updates will be checked once per 10 days, and the message will only appear if the project is multiple versions behind the latest release. + + This behavior can be disabled by running `astro preferences disable checkUpdates` or setting the `ASTRO_DISABLE_UPDATE_CHECK` environment variable to `false`. + +- [#10762](https://github.com/withastro/astro/pull/10762) [`43ead8f`](https://github.com/withastro/astro/commit/43ead8fbd5112823118060175c7a4a22522cc325) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Enables type checking for JavaScript files when using the `strictest` TS config. This ensures consistency with Astro's other TS configs, and fixes type checking for integrations like Astro DB when using an `astro.config.mjs`. + + If you are currently using the `strictest` preset and would like to still disable `.js` files, set `allowJS: false` in your `tsconfig.json`. + +### Patch Changes + +- [#10861](https://github.com/withastro/astro/pull/10861) [`b673bc8`](https://github.com/withastro/astro/commit/b673bc850593d5af25793d0358c00797477fa373) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where `astro build` writes type declaration files to `outDir` when it's outside of root directory. + +- [#10684](https://github.com/withastro/astro/pull/10684) [`8b59d5d`](https://github.com/withastro/astro/commit/8b59d5d078ff40576b8cbee432279c6ad044a1a9) Thanks [@PeterDraex](https://github.com/PeterDraex)! - Update sharp to 0.33 to fix issue with Alpine Linux + +## 4.6.4 + +### Patch Changes + +- [#10846](https://github.com/withastro/astro/pull/10846) [`3294f7a`](https://github.com/withastro/astro/commit/3294f7a343e036d2ad9ac8d5f792ad0d4f43a399) Thanks [@matthewp](https://github.com/matthewp)! - Prevent getCollection breaking in vitest + +- [#10856](https://github.com/withastro/astro/pull/10856) [`30cf82a`](https://github.com/withastro/astro/commit/30cf82ac3e970a6a3c0f07db1340dd7152d1c35d) Thanks [@robertvanhoesel](https://github.com/robertvanhoesel)! - Prevents inputs with a name attribute of action or method to break ViewTransitions' form submission + +- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. + +- [#10801](https://github.com/withastro/astro/pull/10801) [`204b782`](https://github.com/withastro/astro/commit/204b7820e6de22d97fa2a7b988180c42155c8387) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - Fixes an issue where images in MD required a relative specifier (e.g. `./`) + + Now, you can use the standard `![](relative/img.png)` syntax in MD files for images colocated in the same folder: no relative specifier required! + + There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these MD images as they are no longer necessary: + + ```diff + - ![A cute dog](./dog.jpg) + + ![A cute dog](dog.jpg) + + ``` + +- [#10841](https://github.com/withastro/astro/pull/10841) [`a2df344`](https://github.com/withastro/astro/commit/a2df344bff15647c2bfb3f49e3f7b66aa069d6f4) Thanks [@martrapp](https://github.com/martrapp)! - Due to regression on mobile WebKit browsers, reverts a change made for JavaScript animations during view transitions. + +## 4.6.3 + +### Patch Changes + +- [#10799](https://github.com/withastro/astro/pull/10799) [`dc74afca9f5eebc2d61331298d6ef187d92051e0`](https://github.com/withastro/astro/commit/dc74afca9f5eebc2d61331298d6ef187d92051e0) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with persisted non-text input fields that have the focus during view transition navigation. + +- [#10773](https://github.com/withastro/astro/pull/10773) [`35e43ecdaae7adc4b9a0b974192a033568cfb3f0`](https://github.com/withastro/astro/commit/35e43ecdaae7adc4b9a0b974192a033568cfb3f0) Thanks [@lilnasy](https://github.com/lilnasy)! - Improves performance for frequent use of small components. + +- [#10763](https://github.com/withastro/astro/pull/10763) [`63132771373ce1510be3e8814897accc0bf62ef8`](https://github.com/withastro/astro/commit/63132771373ce1510be3e8814897accc0bf62ef8) Thanks [@matthewp](https://github.com/matthewp)! - Invalidate CC cache manifest when lockfile or config changes + +- [#10811](https://github.com/withastro/astro/pull/10811) [`77822a822b04b5113726f713df104e8667333c59`](https://github.com/withastro/astro/commit/77822a822b04b5113726f713df104e8667333c59) Thanks [@AvinashReddy3108](https://github.com/AvinashReddy3108)! - Update list of available integrations in the `astro add` CLI help. + +## 4.6.2 + +### Patch Changes + +- [#10732](https://github.com/withastro/astro/pull/10732) [`a92e263beb6e0166f1f13c97803d1861793e2a99`](https://github.com/withastro/astro/commit/a92e263beb6e0166f1f13c97803d1861793e2a99) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - Correctly sets `build.assets` directory during `vite` config setup + +- [#10776](https://github.com/withastro/astro/pull/10776) [`1607face67051b16d4648555f1001b2a9308e377`](https://github.com/withastro/astro/commit/1607face67051b16d4648555f1001b2a9308e377) Thanks [@fshafiee](https://github.com/fshafiee)! - Fixes cookies type inference + +- [#10796](https://github.com/withastro/astro/pull/10796) [`90669472df3a05b33f0de46fd2d039e3eba7f7dd`](https://github.com/withastro/astro/commit/90669472df3a05b33f0de46fd2d039e3eba7f7dd) Thanks [@bluwy](https://github.com/bluwy)! - Disables streaming when rendering site with `output: "static"` + +- [#10782](https://github.com/withastro/astro/pull/10782) [`b0589d05538fcc77dd3c38198bf93f3548362cd8`](https://github.com/withastro/astro/commit/b0589d05538fcc77dd3c38198bf93f3548362cd8) Thanks [@nektro](https://github.com/nektro)! - Handles possible null value when calling `which-pm` during dynamic package installation + +- [#10774](https://github.com/withastro/astro/pull/10774) [`308b5d8c122f44e7724bb2f3ad3aa5c43a83e584`](https://github.com/withastro/astro/commit/308b5d8c122f44e7724bb2f3ad3aa5c43a83e584) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `astro add` sometimes modifying `baseUrl` unintentionally + +- [#10783](https://github.com/withastro/astro/pull/10783) [`4dbd545304d1a8af903c8c97f237eb55c988c40b`](https://github.com/withastro/astro/commit/4dbd545304d1a8af903c8c97f237eb55c988c40b) Thanks [@jurajkapsz](https://github.com/jurajkapsz)! - Fixes Picture component specialFormatsFallback fallback check + +- [#10775](https://github.com/withastro/astro/pull/10775) [`06843121450899ecf0390ca4efaff6c9a6fe0f75`](https://github.com/withastro/astro/commit/06843121450899ecf0390ca4efaff6c9a6fe0f75) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes assets endpoint in serverless returning 404 in certain situations where the website might be under a protected route + +- [#10787](https://github.com/withastro/astro/pull/10787) [`699f4559a279b374bddb3e5e48c72afe2709e8e7`](https://github.com/withastro/astro/commit/699f4559a279b374bddb3e5e48c72afe2709e8e7) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a timing issue in the view transition simulation. + +## 4.6.1 + +### Patch Changes + +- [#10708](https://github.com/withastro/astro/pull/10708) [`742866c5669a2be4f8b5a4c861cadb933c381415`](https://github.com/withastro/astro/commit/742866c5669a2be4f8b5a4c861cadb933c381415) Thanks [@horo-fox](https://github.com/horo-fox)! - Limits parallel imports within `getCollection()` to prevent EMFILE errors when accessing files + +- [#10755](https://github.com/withastro/astro/pull/10755) [`c6d59b6fb7db20af957a8706c8159c50619235ef`](https://github.com/withastro/astro/commit/c6d59b6fb7db20af957a8706c8159c50619235ef) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where the i18n fallback failed to correctly redirect to the index page with SSR enabled + +## 4.6.0 + +### Minor Changes + +- [#10591](https://github.com/withastro/astro/pull/10591) [`39988ef8e2c4c4888543c973e06d9b9939e4ac95`](https://github.com/withastro/astro/commit/39988ef8e2c4c4888543c973e06d9b9939e4ac95) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Adds a new dev toolbar settings option to change the horizontal placement of the dev toolbar on your screen: bottom left, bottom center, or bottom right. + +- [#10689](https://github.com/withastro/astro/pull/10689) [`683d51a5eecafbbfbfed3910a3f1fbf0b3531b99`](https://github.com/withastro/astro/commit/683d51a5eecafbbfbfed3910a3f1fbf0b3531b99) Thanks [@ematipico](https://github.com/ematipico)! - Deprecate support for versions of Node.js older than `v18.17.1` for Node.js 18, older than `v20.0.3` for Node.js 20, and the complete Node.js v19 release line. + + This change is in line with Astro's [Node.js support policy](https://docs.astro.build/en/upgrade-astro/#support). + +- [#10678](https://github.com/withastro/astro/pull/10678) [`2e53b5fff6d292b7acdf8c30a6ecf5e5696846a1`](https://github.com/withastro/astro/commit/2e53b5fff6d292b7acdf8c30a6ecf5e5696846a1) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new experimental security option to prevent [Cross-Site Request Forgery (CSRF) attacks](https://owasp.org/www-community/attacks/csrf). This feature is available only for pages rendered on demand: + + ```js + import { defineConfig } from 'astro/config'; + export default defineConfig({ + experimental: { + security: { + csrfProtection: { + origin: true, + }, + }, + }, + }); + ``` + + Enabling this setting performs a check that the "origin" header, automatically passed by all modern browsers, matches the URL sent by each `Request`. + + This experimental "origin" check is executed only for pages rendered on demand, and only for the requests `POST, `PATCH`, `DELETE`and`PUT`with one of the following`content-type` headers: 'application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'. + + It the "origin" header doesn't match the pathname of the request, Astro will return a 403 status code and won't render the page. + +- [#10193](https://github.com/withastro/astro/pull/10193) [`440681e7b74511a17b152af0fd6e0e4dc4014025`](https://github.com/withastro/astro/commit/440681e7b74511a17b152af0fd6e0e4dc4014025) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new i18n routing option `manual` to allow you to write your own i18n middleware: + + ```js + import { defineConfig } from 'astro/config'; + // astro.config.mjs + export default defineConfig({ + i18n: { + locales: ['en', 'fr'], + defaultLocale: 'fr', + routing: 'manual', + }, + }); + ``` + + Adding `routing: "manual"` to your i18n config disables Astro's own i18n middleware and provides you with helper functions to write your own: `redirectToDefaultLocale`, `notFound`, and `redirectToFallback`: + + ```js + // middleware.js + import { redirectToDefaultLocale } from 'astro:i18n'; + export const onRequest = defineMiddleware(async (context, next) => { + if (context.url.startsWith('/about')) { + return next(); + } else { + return redirectToDefaultLocale(context, 302); + } + }); + ``` + + Also adds a `middleware` function that manually creates Astro's i18n middleware. This allows you to extend Astro's i18n routing instead of completely replacing it. Run `middleware` in combination with your own middleware, using the `sequence` utility to determine the order: + + ```js title="src/middleware.js" + import { defineMiddleware, sequence } from 'astro:middleware'; + import { middleware } from 'astro:i18n'; // Astro's own i18n routing config + + export const userMiddleware = defineMiddleware(); + + export const onRequest = sequence( + userMiddleware, + middleware({ + redirectToDefaultLocale: false, + prefixDefaultLocale: true, + }), + ); + ``` + +- [#10671](https://github.com/withastro/astro/pull/10671) [`9e14a78cb05667af9821948c630786f74680090d`](https://github.com/withastro/astro/commit/9e14a78cb05667af9821948c630786f74680090d) Thanks [@fshafiee](https://github.com/fshafiee)! - Adds the `httpOnly`, `sameSite`, and `secure` options when deleting a cookie + +### Patch Changes + +- [#10747](https://github.com/withastro/astro/pull/10747) [`994337c99f84304df1147a14504659439a9a7326`](https://github.com/withastro/astro/commit/994337c99f84304df1147a14504659439a9a7326) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where functions could not be used as named slots. + +- [#10750](https://github.com/withastro/astro/pull/10750) [`7e825604ddf90c989537e07939a39dc249343897`](https://github.com/withastro/astro/commit/7e825604ddf90c989537e07939a39dc249343897) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Fixes a false positive for "Invalid `tabindex` on non-interactive element" rule for roleless elements ( `div` and `span` ). + +- [#10745](https://github.com/withastro/astro/pull/10745) [`d51951ce6278d4b59deed938d65e1cb72b5102df`](https://github.com/withastro/astro/commit/d51951ce6278d4b59deed938d65e1cb72b5102df) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where CLI commands could not report the reason for failure before exiting. + +- [#10661](https://github.com/withastro/astro/pull/10661) [`e2cd7f4291912dadd4a654bc7917856c58a72a97`](https://github.com/withastro/astro/commit/e2cd7f4291912dadd4a654bc7917856c58a72a97) Thanks [@liruifengv](https://github.com/liruifengv)! - Fixed errorOverlay theme toggle bug. + +- Updated dependencies [[`ccafa8d230f65c9302421a0ce0a0adc5824bfd55`](https://github.com/withastro/astro/commit/ccafa8d230f65c9302421a0ce0a0adc5824bfd55), [`683d51a5eecafbbfbfed3910a3f1fbf0b3531b99`](https://github.com/withastro/astro/commit/683d51a5eecafbbfbfed3910a3f1fbf0b3531b99)]: + - @astrojs/markdown-remark@5.1.0 + - @astrojs/telemetry@3.1.0 + +## 4.5.18 + +### Patch Changes + +- [#10728](https://github.com/withastro/astro/pull/10728) [`f508c4b7d54316e737f454a3777204b23636d4a0`](https://github.com/withastro/astro/commit/f508c4b7d54316e737f454a3777204b23636d4a0) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression where some very **specific** code rendered using `expressive-code` was not escaped properly. + +- [#10737](https://github.com/withastro/astro/pull/10737) [`8a30f257b1f3618b01212a591b82ad7a63c82fbb`](https://github.com/withastro/astro/commit/8a30f257b1f3618b01212a591b82ad7a63c82fbb) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where constructing and returning 404 responses from a middleware resulted in the dev server getting stuck in a loop. + +- [#10719](https://github.com/withastro/astro/pull/10719) [`b21b3ba307235510707ee9f5bd49f71473a07004`](https://github.com/withastro/astro/commit/b21b3ba307235510707ee9f5bd49f71473a07004) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a false positive for `div` and `span` elements when running the Dev Toolbar accessibility audits. + + Those are special elements that don't have an interaction assigned by default. Instead, it is assigned through the `role` attribute. This means that cases like the following are now deemed correct: + + ```html +
+ + ``` + +## 4.5.17 + +### Patch Changes + +- [#10688](https://github.com/withastro/astro/pull/10688) [`799f6f3f29a3ef4f76347870a209ffa89651adfa`](https://github.com/withastro/astro/commit/799f6f3f29a3ef4f76347870a209ffa89651adfa) Thanks [@bluwy](https://github.com/bluwy)! - Marks renderer `jsxImportSource` and `jsxTransformOptions` options as deprecated as they are no longer used since Astro 3.0 + +- [#10657](https://github.com/withastro/astro/pull/10657) [`93d353528fa1a85b67e3f1e9514ed2a1b42dfd94`](https://github.com/withastro/astro/commit/93d353528fa1a85b67e3f1e9514ed2a1b42dfd94) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improves the color contrast for notification badges on dev toolbar apps + +- [#10693](https://github.com/withastro/astro/pull/10693) [`1d26e9c7f7d8f47e33bc68d3b30bbffce25c7b63`](https://github.com/withastro/astro/commit/1d26e9c7f7d8f47e33bc68d3b30bbffce25c7b63) Thanks [@apetta](https://github.com/apetta)! - Adds the `disableremoteplayback` attribute to MediaHTMLAttributes interface + +- [#10695](https://github.com/withastro/astro/pull/10695) [`a15975e41cb5eaf6ed8eb3ebaee676a17e433052`](https://github.com/withastro/astro/commit/a15975e41cb5eaf6ed8eb3ebaee676a17e433052) Thanks [@bluwy](https://github.com/bluwy)! - Skips prerender chunk if building with static output + +- [#10707](https://github.com/withastro/astro/pull/10707) [`5e044a5eafaa206d2ef8b62c37d1bcd37f0a4078`](https://github.com/withastro/astro/commit/5e044a5eafaa206d2ef8b62c37d1bcd37f0a4078) Thanks [@horo-fox](https://github.com/horo-fox)! - Logs an error when a page's `getStaticPaths` fails + +- [#10686](https://github.com/withastro/astro/pull/10686) [`fa0f593890502faf5709ab881fe0e45519d2f7af`](https://github.com/withastro/astro/commit/fa0f593890502faf5709ab881fe0e45519d2f7af) Thanks [@bluwy](https://github.com/bluwy)! - Prevents inlining scripts if used by other chunks when using the `experimental.directRenderScript` option + +## 4.5.16 + +### Patch Changes + +- [#10679](https://github.com/withastro/astro/pull/10679) [`ca6bb1f31ef041e6ccf8ef974856fa945ff5bb31`](https://github.com/withastro/astro/commit/ca6bb1f31ef041e6ccf8ef974856fa945ff5bb31) Thanks [@martrapp](https://github.com/martrapp)! - Generates missing popstate events for Firefox when navigating to hash targets on the same page. + +- [#10669](https://github.com/withastro/astro/pull/10669) [`0464563e527f821e53d78028d9bbf3c4e1050f5b`](https://github.com/withastro/astro/commit/0464563e527f821e53d78028d9bbf3c4e1050f5b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes Astro waiting infinitely in CI when a required package was not installed + +## 4.5.15 + +### Patch Changes + +- [#10666](https://github.com/withastro/astro/pull/10666) [`55ddb2ba4889480f776a8d29b9dcd531b9f5ab3e`](https://github.com/withastro/astro/commit/55ddb2ba4889480f776a8d29b9dcd531b9f5ab3e) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where forwarded requests did not include hostname on node-based adapters. This also makes error pages more reliable. + +- [#10642](https://github.com/withastro/astro/pull/10642) [`4f5dc14f315eba7ea6ec5cc8e5dacb0cb81288dd`](https://github.com/withastro/astro/commit/4f5dc14f315eba7ea6ec5cc8e5dacb0cb81288dd) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Fixes typing issues when using `format` and `quality` options with remote images + +- [#10616](https://github.com/withastro/astro/pull/10616) [`317d18ef8c9cf4fd13647518e3fd352774a86481`](https://github.com/withastro/astro/commit/317d18ef8c9cf4fd13647518e3fd352774a86481) Thanks [@NikolaRHristov](https://github.com/NikolaRHristov)! - This change disables the `sharp` `libvips` image cache as it errors when the + file is too small and operations are happening too fast (runs into a race + condition) + +## 4.5.14 + +### Patch Changes + +- [#10470](https://github.com/withastro/astro/pull/10470) [`320c309ca9fbe51c40e6ba846d04a0cb49aced5f`](https://github.com/withastro/astro/commit/320c309ca9fbe51c40e6ba846d04a0cb49aced5f) Thanks [@liruifengv](https://github.com/liruifengv)! - improves `client:only` error message + +- [#10496](https://github.com/withastro/astro/pull/10496) [`ce985631129e49f7ea90e6ea690ef9f9cf0e6987`](https://github.com/withastro/astro/commit/ce985631129e49f7ea90e6ea690ef9f9cf0e6987) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Makes the warning less scary when adding 3rd-party integrations using `astro add` + +## 4.5.13 + +### Patch Changes + +- [#10495](https://github.com/withastro/astro/pull/10495) [`046d69d517118ab5c0e71604b321729d66ddffff`](https://github.com/withastro/astro/commit/046d69d517118ab5c0e71604b321729d66ddffff) Thanks [@satyarohith](https://github.com/satyarohith)! - This patch allows astro to run in node-compat mode in Deno. Deno doesn't support + construction of response from async iterables in node-compat mode so we need to + use ReadableStream. + +- [#10605](https://github.com/withastro/astro/pull/10605) [`a16a829f4e25ad5c9a1b4557ec089fc8ab53320f`](https://github.com/withastro/astro/commit/a16a829f4e25ad5c9a1b4557ec089fc8ab53320f) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with outdated page titles in browser history when using text fragments in view transition navigation. + +- [#10584](https://github.com/withastro/astro/pull/10584) [`e648c5575a8774af739231cfa9fc27a32086aa5f`](https://github.com/withastro/astro/commit/e648c5575a8774af739231cfa9fc27a32086aa5f) Thanks [@duanwilliam](https://github.com/duanwilliam)! - Fixes a bug where JSX runtime would error on components with nullish prop values in certain conditions. + +- [#10608](https://github.com/withastro/astro/pull/10608) [`e31bea0704890ff92ce4f9b0ce536c1c90715f2c`](https://github.com/withastro/astro/commit/e31bea0704890ff92ce4f9b0ce536c1c90715f2c) Thanks [@matthewp](https://github.com/matthewp)! - Fixes bug with head content being pushed into body + +- Updated dependencies [[`2cf116f80cb5e421ab5cc5eb4a654e7b78c1b8de`](https://github.com/withastro/astro/commit/2cf116f80cb5e421ab5cc5eb4a654e7b78c1b8de), [`374efcdff9625ca43309d89e3b9cfc9174351512`](https://github.com/withastro/astro/commit/374efcdff9625ca43309d89e3b9cfc9174351512)]: + - @astrojs/markdown-remark@5.0.0 + +## 4.5.12 + +### Patch Changes + +- [#10596](https://github.com/withastro/astro/pull/10596) [`20463a6c1e1271d8dc3cb0ab3419ee5c72abd218`](https://github.com/withastro/astro/commit/20463a6c1e1271d8dc3cb0ab3419ee5c72abd218) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Add `removeBase` function + +- Updated dependencies [[`20463a6c1e1271d8dc3cb0ab3419ee5c72abd218`](https://github.com/withastro/astro/commit/20463a6c1e1271d8dc3cb0ab3419ee5c72abd218)]: + - @astrojs/internal-helpers@0.4.0 + +## 4.5.11 + +### Patch Changes + +- [#10567](https://github.com/withastro/astro/pull/10567) [`fbdc10f90f7baa5c49f2f53e3e4ce8f453814c01`](https://github.com/withastro/astro/commit/fbdc10f90f7baa5c49f2f53e3e4ce8f453814c01) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `astro:assets` not working when using complex config with `vite.build.rollupOptions.output.assetFileNames` + +- [#10593](https://github.com/withastro/astro/pull/10593) [`61e283e5a0d95b6ef5d3c4c985d6ee78f74bbd8e`](https://github.com/withastro/astro/commit/61e283e5a0d95b6ef5d3c4c985d6ee78f74bbd8e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes Polymorphic type helper causing TypeScript errors in certain cases after the previous update + +- [#10543](https://github.com/withastro/astro/pull/10543) [`0fd36bdb383297b32cc523b57d2442132da41595`](https://github.com/withastro/astro/commit/0fd36bdb383297b32cc523b57d2442132da41595) Thanks [@matthewp](https://github.com/matthewp)! - Fixes inline stylesheets with content collections cache + +- [#10582](https://github.com/withastro/astro/pull/10582) [`a05953538fcf524786385830b99c0c5a015173e8`](https://github.com/withastro/astro/commit/a05953538fcf524786385830b99c0c5a015173e8) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where the dev server got stuck in a loop while routing responses with a 404 status code to the 404 route. + +## 4.5.10 + +### Patch Changes + +- [#10549](https://github.com/withastro/astro/pull/10549) [`54c2f9707f5d038630143f769e3075c698474654`](https://github.com/withastro/astro/commit/54c2f9707f5d038630143f769e3075c698474654) Thanks [@admirsaheta](https://github.com/admirsaheta)! - Updates the `HTMLAttributes` type exported from `astro` to allow data attributes + +- [#10562](https://github.com/withastro/astro/pull/10562) [`348c1ca1323d0516c2dcf8e963343cd12cb5407f`](https://github.com/withastro/astro/commit/348c1ca1323d0516c2dcf8e963343cd12cb5407f) Thanks [@apetta](https://github.com/apetta)! - Fixes minor type issues inside the built-in components of Astro + +- [#10550](https://github.com/withastro/astro/pull/10550) [`34fa8e131b85531e6629390307108ffc4adb7ed1`](https://github.com/withastro/astro/commit/34fa8e131b85531e6629390307108ffc4adb7ed1) Thanks [@Skn0tt](https://github.com/Skn0tt)! - Fixes bug where server builds would include unneeded assets in SSR Function, potentially leading to upload errors on Vercel, Netlify because of size limits + +- Updated dependencies [[`c585528f446ccca3d4c643f4af5d550b93c18902`](https://github.com/withastro/astro/commit/c585528f446ccca3d4c643f4af5d550b93c18902)]: + - @astrojs/markdown-remark@4.3.2 + +## 4.5.9 + +### Patch Changes + +- [#10532](https://github.com/withastro/astro/pull/10532) [`8306ce1ff7b71a2a0d7908336c9be462a54d395a`](https://github.com/withastro/astro/commit/8306ce1ff7b71a2a0d7908336c9be462a54d395a) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a style issue of `client:only` components in DEV mode during view transitions. + +- [#10473](https://github.com/withastro/astro/pull/10473) [`627e47d67af4846cea2acf26a96b4124001b26fc`](https://github.com/withastro/astro/commit/627e47d67af4846cea2acf26a96b4124001b26fc) Thanks [@bluwy](https://github.com/bluwy)! - Fixes and improves performance when rendering Astro JSX + +## 4.5.8 + +### Patch Changes + +- [#10504](https://github.com/withastro/astro/pull/10504) [`8e4e554cc211e59c329c0a5d110c839c886ff120`](https://github.com/withastro/astro/commit/8e4e554cc211e59c329c0a5d110c839c886ff120) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Update Babel version to fix regression in Babel's `7.24.2`. + +- Updated dependencies [[`19e42c368184013fc30d1e46753b9e9383bb2bdf`](https://github.com/withastro/astro/commit/19e42c368184013fc30d1e46753b9e9383bb2bdf)]: + - @astrojs/markdown-remark@4.3.1 + +## 4.5.7 + +### Patch Changes + +- [#10493](https://github.com/withastro/astro/pull/10493) [`e4a6462751725878bfe47632eeafa6854cad5bf2`](https://github.com/withastro/astro/commit/e4a6462751725878bfe47632eeafa6854cad5bf2) Thanks [@firefoxic](https://github.com/firefoxic)! - `` tags created by astro for optimized stylesheets now do not include the closing forward slash. This slash is optional for void elements such as link, but made some html validation fail. + +## 4.5.6 + +### Patch Changes + +- [#10455](https://github.com/withastro/astro/pull/10455) [`c12666166db724915e42e37a048483c99f88e6d9`](https://github.com/withastro/astro/commit/c12666166db724915e42e37a048483c99f88e6d9) Thanks [@lilnasy](https://github.com/lilnasy)! - Adds a helpful error message that will be shown when an endpoint does not return a `Response`. + +- [#10426](https://github.com/withastro/astro/pull/10426) [`6a9a35ee15069541c3144012385366a3c689240a`](https://github.com/withastro/astro/commit/6a9a35ee15069541c3144012385366a3c689240a) Thanks [@markgaze](https://github.com/markgaze)! - Fixes an issue with generating JSON schemas when the schema is a function + +- [#10448](https://github.com/withastro/astro/pull/10448) [`fcece3658697248ab58f77b3d4a8b14d362f3c47`](https://github.com/withastro/astro/commit/fcece3658697248ab58f77b3d4a8b14d362f3c47) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where multiple rendering errors resulted in a crash of the SSR app server. + +## 4.5.5 + +### Patch Changes + +- [#10379](https://github.com/withastro/astro/pull/10379) [`3776ecf0aa9e08a992d3ae76e90682fd04093721`](https://github.com/withastro/astro/commit/3776ecf0aa9e08a992d3ae76e90682fd04093721) Thanks [@1574242600](https://github.com/1574242600)! - Fixes a routing issue with partially truncated dynamic segments. + +- [#10442](https://github.com/withastro/astro/pull/10442) [`f8e0ad3c52a37b8a2175fe2f5ff2bd0cd738f499`](https://github.com/withastro/astro/commit/f8e0ad3c52a37b8a2175fe2f5ff2bd0cd738f499) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes small rendering issues with the dev toolbar in certain contexts + +- [#10438](https://github.com/withastro/astro/pull/10438) [`5b48cc0fc8383b0659a595afd3a6ee28b28779c3`](https://github.com/withastro/astro/commit/5b48cc0fc8383b0659a595afd3a6ee28b28779c3) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Generate Astro DB types when running `astro sync`. + +- [#10456](https://github.com/withastro/astro/pull/10456) [`1900a8f9bc337f3a882178d1770e10ab67fab0ce`](https://github.com/withastro/astro/commit/1900a8f9bc337f3a882178d1770e10ab67fab0ce) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an error when using `astro:transtions/client` without `` + +## 4.5.4 + +### Patch Changes + +- [#10427](https://github.com/withastro/astro/pull/10427) [`128c7a36397d99608dea918885b68bd302d00e7f`](https://github.com/withastro/astro/commit/128c7a36397d99608dea918885b68bd302d00e7f) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where error pages did not have access to the `Astro.locals` fields provided by the adapter. + +## 4.5.3 + +### Patch Changes + +- [#10410](https://github.com/withastro/astro/pull/10410) [`055fe293c6702dd27bcd6c4f59297c6d4385abb1`](https://github.com/withastro/astro/commit/055fe293c6702dd27bcd6c4f59297c6d4385abb1) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where configured redirects could not include certain characters in the target path. + +- [#9820](https://github.com/withastro/astro/pull/9820) [`8edc42aa7c209b12d98ecf20cdecccddf7314af0`](https://github.com/withastro/astro/commit/8edc42aa7c209b12d98ecf20cdecccddf7314af0) Thanks [@alexnguyennz](https://github.com/alexnguyennz)! - Prevents fully formed URLs in attributes from being escaped + +## 4.5.2 + +### Patch Changes + +- [#10400](https://github.com/withastro/astro/pull/10400) [`629c9d7c4d96ae5711d95601e738b3d31d268116`](https://github.com/withastro/astro/commit/629c9d7c4d96ae5711d95601e738b3d31d268116) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where dev toolbar x-ray didn't escape props content. + +## 4.5.1 + +### Patch Changes + +- [#10392](https://github.com/withastro/astro/pull/10392) [`02aeb01cb8b62b9cc4dfe6069857219404343b73`](https://github.com/withastro/astro/commit/02aeb01cb8b62b9cc4dfe6069857219404343b73) Thanks [@martrapp](https://github.com/martrapp)! - Fixes broken types for some functions of `astro:transitions/client`. + +- [#10390](https://github.com/withastro/astro/pull/10390) [`236cdbb611587692d3c781850cb949604677ef82`](https://github.com/withastro/astro/commit/236cdbb611587692d3c781850cb949604677ef82) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds `--help` reference for new db and studio CLI commands + +## 4.5.0 + +### Minor Changes + +- [#10206](https://github.com/withastro/astro/pull/10206) [`dc87214141e7f8406c0fdf6a7f425dad6dea6d3e`](https://github.com/withastro/astro/commit/dc87214141e7f8406c0fdf6a7f425dad6dea6d3e) Thanks [@lilnasy](https://github.com/lilnasy)! - Allows middleware to run when a matching page or endpoint is not found. Previously, a `pages/404.astro` or `pages/[...catch-all].astro` route had to match to allow middleware. This is now not necessary. + + When a route does not match in SSR deployments, your adapter may show a platform-specific 404 page instead of running Astro's SSR code. In these cases, you may still need to add a `404.astro` or fallback route with spread params, or use a routing configuration option if your adapter provides one. + +- [#9960](https://github.com/withastro/astro/pull/9960) [`c081adf998d30419fed97d8fccc11340cdc512e0`](https://github.com/withastro/astro/commit/c081adf998d30419fed97d8fccc11340cdc512e0) Thanks [@StandardGage](https://github.com/StandardGage)! - Allows passing any props to the `` component + +- [#10102](https://github.com/withastro/astro/pull/10102) [`e3f02f5fb1cf0dae3c54beb3a4af3dbf3b06abb7`](https://github.com/withastro/astro/commit/e3f02f5fb1cf0dae3c54beb3a4af3dbf3b06abb7) Thanks [@bluwy](https://github.com/bluwy)! - Adds a new `experimental.directRenderScript` configuration option which provides a more reliable strategy to prevent scripts from being executed in pages where they are not used. + + This replaces the `experimental.optimizeHoistedScript` flag introduced in v2.10.4 to prevent unused components' scripts from being included in a page unexpectedly. That experimental option no longer exists and must be removed from your configuration, whether or not you enable `directRenderScript`: + + ```diff + // astro.config.mjs + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + experimental: { + - optimizeHoistedScript: true, + + directRenderScript: true + } + }); + ``` + + With `experimental.directRenderScript` configured, scripts are now directly rendered as declared in Astro files (including existing features like TypeScript, importing `node_modules`, and deduplicating scripts). You can also now conditionally render scripts in your Astro file. + + However, this means scripts are no longer hoisted to the `` and multiple scripts on a page are no longer bundled together. If you enable this option, you should check that all your ` + ``` + +- [#10145](https://github.com/withastro/astro/pull/10145) [`65692fa7b5f4440c644c8cf3dd9bc50103d2c33b`](https://github.com/withastro/astro/commit/65692fa7b5f4440c644c8cf3dd9bc50103d2c33b) Thanks [@alexanderniebuhr](https://github.com/alexanderniebuhr)! - Adds experimental JSON Schema support for content collections. + + This feature will auto-generate a JSON Schema for content collections of `type: 'data'` which can be used as the `$schema` value for TypeScript-style autocompletion/hints in tools like VSCode. + + To enable this feature, add the experimental flag: + + ```diff + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + experimental: { + + contentCollectionJsonSchema: true + } + }); + ``` + + This experimental implementation requires you to manually reference the schema in each data entry file of the collection: + + ```diff + // src/content/test/entry.json + { + + "$schema": "../../../.astro/collections/test.schema.json", + "test": "test" + } + ``` + + Alternatively, you can set this in your [VSCode `json.schemas` settings](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings): + + ```diff + "json.schemas": [ + { + "fileMatch": [ + "/src/content/test/**" + ], + "url": "../../../.astro/collections/test.schema.json" + } + ] + ``` + + Note that this initial implementation uses a library with [known issues for advanced Zod schemas](https://github.com/StefanTerdell/zod-to-json-schema#known-issues), so you may wish to consult these limitations before enabling the experimental flag. + +- [#10130](https://github.com/withastro/astro/pull/10130) [`5a9528741fa98d017b269c7e4f013058028bdc5d`](https://github.com/withastro/astro/commit/5a9528741fa98d017b269c7e4f013058028bdc5d) Thanks [@bluwy](https://github.com/bluwy)! - Migrates `shikiji` to `shiki` 1.0 + +- [#10268](https://github.com/withastro/astro/pull/10268) [`2013e70bce16366781cc12e52823bb257fe460c0`](https://github.com/withastro/astro/commit/2013e70bce16366781cc12e52823bb257fe460c0) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for page mutations to the audits in the dev toolbar. Astro will now rerun the audits whenever elements are added or deleted from the page. + +- [#10217](https://github.com/withastro/astro/pull/10217) [`5c7862a9fe69954f8630538ebb7212cd04b8a810`](https://github.com/withastro/astro/commit/5c7862a9fe69954f8630538ebb7212cd04b8a810) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates the UI for dev toolbar audits with new information + +### Patch Changes + +- [#10360](https://github.com/withastro/astro/pull/10360) [`ac766647b0e6156b7c4a0bb9a11981fe168852d7`](https://github.com/withastro/astro/commit/ac766647b0e6156b7c4a0bb9a11981fe168852d7) Thanks [@nmattia](https://github.com/nmattia)! - Fixes an issue where some CLI commands attempted to directly read vite config files. + +- [#10291](https://github.com/withastro/astro/pull/10291) [`8107a2721b6abb07c3120ac90e03c39f2a44ab0c`](https://github.com/withastro/astro/commit/8107a2721b6abb07c3120ac90e03c39f2a44ab0c) Thanks [@bluwy](https://github.com/bluwy)! - Treeshakes unused Astro component scoped styles + +- [#10368](https://github.com/withastro/astro/pull/10368) [`78bafc5d661ff7dd071c241cb1303c4d8a774d21`](https://github.com/withastro/astro/commit/78bafc5d661ff7dd071c241cb1303c4d8a774d21) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates the base `tsconfig.json` preset with `jsx: 'preserve'` in order to fix errors when importing Astro files inside `.js` and `.ts` files. + +- Updated dependencies [[`c081adf998d30419fed97d8fccc11340cdc512e0`](https://github.com/withastro/astro/commit/c081adf998d30419fed97d8fccc11340cdc512e0), [`1ea0a25b94125e4f6f2ac82b42f638e22d7bdffd`](https://github.com/withastro/astro/commit/1ea0a25b94125e4f6f2ac82b42f638e22d7bdffd), [`5a9528741fa98d017b269c7e4f013058028bdc5d`](https://github.com/withastro/astro/commit/5a9528741fa98d017b269c7e4f013058028bdc5d), [`a31bbd7ff8f3ec62ee507f72d1d25140b82ffc18`](https://github.com/withastro/astro/commit/a31bbd7ff8f3ec62ee507f72d1d25140b82ffc18)]: + - @astrojs/markdown-remark@4.3.0 + - @astrojs/internal-helpers@0.3.0 + +## 4.4.15 + +### Patch Changes + +- [#10317](https://github.com/withastro/astro/pull/10317) [`33583e8b31ee8a33e26cf57f30bb422921f4745d`](https://github.com/withastro/astro/commit/33583e8b31ee8a33e26cf57f30bb422921f4745d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where elements slotted within interactive framework components disappeared after hydration. + +## 4.4.14 + +### Patch Changes + +- [#10355](https://github.com/withastro/astro/pull/10355) [`8ce9fffd44b0740621178d61fb1425bf4155c2d7`](https://github.com/withastro/astro/commit/8ce9fffd44b0740621178d61fb1425bf4155c2d7) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression where full dynamic routes were prioritized over partial dynamic routes. Now a route like `food-[name].astro` is matched **before** `[name].astro`. + +- [#10356](https://github.com/withastro/astro/pull/10356) [`d121311a3f4b5345e344e31f75d4e7164d65f729`](https://github.com/withastro/astro/commit/d121311a3f4b5345e344e31f75d4e7164d65f729) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where `getCollection` might return `undefined` when content collection is empty + +- [#10325](https://github.com/withastro/astro/pull/10325) [`f33cce8f6c3a2e17847658cdedb015bd93cc1ee3`](https://github.com/withastro/astro/commit/f33cce8f6c3a2e17847658cdedb015bd93cc1ee3) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where `ctx.site` included the configured `base` in API routes and middleware, unlike `Astro.site` in astro pages. + +- [#10343](https://github.com/withastro/astro/pull/10343) [`f973aa9110592fa9017bbe84387f22c24a6d7159`](https://github.com/withastro/astro/commit/f973aa9110592fa9017bbe84387f22c24a6d7159) Thanks [@ematipico](https://github.com/ematipico)! - Fixes some false positive in the dev toolbar a11y audits, by adding the `a` element to the list of interactive elements. + +- [#10295](https://github.com/withastro/astro/pull/10295) [`fdd5bf277e5c1cfa30c1bd2ca123f4e90e8d09d9`](https://github.com/withastro/astro/commit/fdd5bf277e5c1cfa30c1bd2ca123f4e90e8d09d9) Thanks [@rossrobino](https://github.com/rossrobino)! - Adds a prefetch fallback when using the `experimental.clientPrerender` option. If prerendering fails, which can happen if [Chrome extensions block prerendering](https://developer.chrome.com/blog/speculation-rules-improvements#chrome-limits), it will fallback to prefetching the URL. This works by adding a `prefetch` field to the `speculationrules` script, but does not create an extra request. + +## 4.4.13 + +### Patch Changes + +- [#10342](https://github.com/withastro/astro/pull/10342) [`a2e9b2b936666b2a4779feb00dcb8ff0ab82c2ec`](https://github.com/withastro/astro/commit/a2e9b2b936666b2a4779feb00dcb8ff0ab82c2ec) Thanks [@matthewp](https://github.com/matthewp)! - Fixes @astrojs/db loading TS in the fixtures + +## 4.4.12 + +### Patch Changes + +- [#10336](https://github.com/withastro/astro/pull/10336) [`f2e60a96754ed1d86001fe4d5d3a0c0ef657408d`](https://github.com/withastro/astro/commit/f2e60a96754ed1d86001fe4d5d3a0c0ef657408d) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Fixes an issue where slotting interactive components within a "client:only" component prevented all component code in the page from running. + +## 4.4.11 + +### Patch Changes + +- [#10281](https://github.com/withastro/astro/pull/10281) [`9deb919ff95b1d2ffe5a5f70ec683e32ebfafd05`](https://github.com/withastro/astro/commit/9deb919ff95b1d2ffe5a5f70ec683e32ebfafd05) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where `404.astro` was ignored with `i18n` routing enabled. + +- [#10279](https://github.com/withastro/astro/pull/10279) [`9ba3e2605daee3861e3bf6c5768f1d8bced4709d`](https://github.com/withastro/astro/commit/9ba3e2605daee3861e3bf6c5768f1d8bced4709d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where returning redirect responses resulted in missing files with certain adapters. + +- [#10319](https://github.com/withastro/astro/pull/10319) [`19ecccedaab6d8fa0ff23711c88fa7d4fa34df38`](https://github.com/withastro/astro/commit/19ecccedaab6d8fa0ff23711c88fa7d4fa34df38) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where streaming SSR responses sometimes failed with "`iterator.result` is not a function" on node-based adapters. + +- [#10302](https://github.com/withastro/astro/pull/10302) [`992537e79f1847b590a2e226aac88a47a6304f68`](https://github.com/withastro/astro/commit/992537e79f1847b590a2e226aac88a47a6304f68) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes an issue that causes static entrypoints build to fail because of the path in certain conditions. Specifically, it failed if the path had an extension (like `.astro`, `.mdx` etc) and such extension would be also within the path (like `./.astro/index.astro`). + +- [#10298](https://github.com/withastro/astro/pull/10298) [`819d20a89c0d269333c2d397c1080884f516307a`](https://github.com/withastro/astro/commit/819d20a89c0d269333c2d397c1080884f516307a) Thanks [@Fryuni](https://github.com/Fryuni)! - Fix an incorrect conflict resolution between pages generated from static routes and rest parameters + +## 4.4.10 + +### Patch Changes + +- [#10235](https://github.com/withastro/astro/pull/10235) [`4bc360cd5f25496aca3232f6efb3710424a14a34`](https://github.com/withastro/astro/commit/4bc360cd5f25496aca3232f6efb3710424a14a34) Thanks [@sanman1k98](https://github.com/sanman1k98)! - Fixes jerky scrolling on IOS when using view transitions. + +## 4.4.9 + +### Patch Changes + +- [#10278](https://github.com/withastro/astro/pull/10278) [`a548a3a99c2835c19662fc38636f92b2bda26614`](https://github.com/withastro/astro/commit/a548a3a99c2835c19662fc38636f92b2bda26614) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes original images sometimes being kept / deleted when they shouldn't in both MDX and Markdoc + +- [#10280](https://github.com/withastro/astro/pull/10280) [`3488be9b59d1cb65325b0e087c33bcd74aaa4926`](https://github.com/withastro/astro/commit/3488be9b59d1cb65325b0e087c33bcd74aaa4926) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Finalize db API to a shared db/ directory. + +## 4.4.8 + +### Patch Changes + +- [#10275](https://github.com/withastro/astro/pull/10275) [`5e3e74b61daa2ba44c761c9ab5745818661a656e`](https://github.com/withastro/astro/commit/5e3e74b61daa2ba44c761c9ab5745818661a656e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes dev toolbar warning about using the proper loading attributes on images using `data:` URIs + +## 4.4.7 + +### Patch Changes + +- [#10274](https://github.com/withastro/astro/pull/10274) [`e556151603a2f0173059d0f98fdcbec0610b48ff`](https://github.com/withastro/astro/commit/e556151603a2f0173059d0f98fdcbec0610b48ff) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression introduced in v4.4.5 where image optimization did not work in dev mode when a base was configured. + +- [#10263](https://github.com/withastro/astro/pull/10263) [`9bdbed723e0aa4243d7d6ee64d1c1df3b75b9aeb`](https://github.com/withastro/astro/commit/9bdbed723e0aa4243d7d6ee64d1c1df3b75b9aeb) Thanks [@martrapp](https://github.com/martrapp)! - Adds auto completion for `astro:` event names when adding or removing event listeners on `document`. + +- [#10284](https://github.com/withastro/astro/pull/10284) [`07f89429a1ef5173d3321e0b362a9dc71fc74fe5`](https://github.com/withastro/astro/commit/07f89429a1ef5173d3321e0b362a9dc71fc74fe5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes an issue where in Node SSR, the image endpoint could be used maliciously to reveal unintended information about the underlying system. + + Thanks to Google Security Team for reporting this issue. + +## 4.4.6 + +### Patch Changes + +- [#10247](https://github.com/withastro/astro/pull/10247) [`fb773c9161bf8faa5ebd7e115f3564c3359e56ea`](https://github.com/withastro/astro/commit/fb773c9161bf8faa5ebd7e115f3564c3359e56ea) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue where `transition:animate="none"` still allowed the browser-native morph animation. + +- [#10248](https://github.com/withastro/astro/pull/10248) [`8ae5d99534fc09d650e10e64a09b61a2807574f2`](https://github.com/withastro/astro/commit/8ae5d99534fc09d650e10e64a09b61a2807574f2) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where multiple injected routes with the same `entrypoint` but different `pattern` were incorrectly cached, causing some of them not being rendered in the dev server. + +- [#10250](https://github.com/withastro/astro/pull/10250) [`57655a99db34e20e9661c039fab253b867013318`](https://github.com/withastro/astro/commit/57655a99db34e20e9661c039fab253b867013318) Thanks [@log101](https://github.com/log101)! - Fixes the overwriting of localised index pages with redirects + +- [#10239](https://github.com/withastro/astro/pull/10239) [`9c21a9df6b03e36bd78dc553e13c55b9ef8c44cd`](https://github.com/withastro/astro/commit/9c21a9df6b03e36bd78dc553e13c55b9ef8c44cd) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Improves the message of `MiddlewareCantBeLoaded` for clarity + +- [#10222](https://github.com/withastro/astro/pull/10222) [`ade9759cae74ca262b988260250bcb202235e811`](https://github.com/withastro/astro/commit/ade9759cae74ca262b988260250bcb202235e811) Thanks [@martrapp](https://github.com/martrapp)! - Adds a warning in DEV mode when using view transitions on a device with prefer-reduced-motion enabled. + +- [#10251](https://github.com/withastro/astro/pull/10251) [`9b00de0a76b4f4b5b808e8c78e4906a2497e8ecf`](https://github.com/withastro/astro/commit/9b00de0a76b4f4b5b808e8c78e4906a2497e8ecf) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes TypeScript type definitions for `Code` component `theme` and `experimentalThemes` props + +## 4.4.5 + +### Patch Changes + +- [#10221](https://github.com/withastro/astro/pull/10221) [`4db82d9c7dce3b73fe43b86020fcfa326c1357ec`](https://github.com/withastro/astro/commit/4db82d9c7dce3b73fe43b86020fcfa326c1357ec) Thanks [@matthewp](https://github.com/matthewp)! - Prevents errors in templates from crashing the server + +- [#10219](https://github.com/withastro/astro/pull/10219) [`afcb9d331179287629b5ffce4020931258bebefa`](https://github.com/withastro/astro/commit/afcb9d331179287629b5ffce4020931258bebefa) Thanks [@matthewp](https://github.com/matthewp)! - Fix dynamic slots missing hydration scripts + +- [#10220](https://github.com/withastro/astro/pull/10220) [`1eadb1c5290f2f4baf538c34889a09d5fcfb9bd4`](https://github.com/withastro/astro/commit/1eadb1c5290f2f4baf538c34889a09d5fcfb9bd4) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes some built-in apps of the dev toolbar not closing when clicking the page + +- [#10154](https://github.com/withastro/astro/pull/10154) [`e64bd0740b44aed5cfaf67e5c37a1c56ed4442f4`](https://github.com/withastro/astro/commit/e64bd0740b44aed5cfaf67e5c37a1c56ed4442f4) Thanks [@Cherry](https://github.com/Cherry)! - Fixes an issue where `config.vite.build.assetsInlineLimit` could not be set as a function. + +- [#10196](https://github.com/withastro/astro/pull/10196) [`8fb32f390d40cfa12a82c0645928468d27218866`](https://github.com/withastro/astro/commit/8fb32f390d40cfa12a82c0645928468d27218866) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where a warning about headers being accessed in static mode is unnecessarily shown when i18n is enabled. + +- [#10199](https://github.com/withastro/astro/pull/10199) [`6aa660ae7abc6841d7a3396b29f10b9fb7910ce5`](https://github.com/withastro/astro/commit/6aa660ae7abc6841d7a3396b29f10b9fb7910ce5) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where prerendered pages had access to query params in dev mode. + +## 4.4.4 + +### Patch Changes + +- [#10195](https://github.com/withastro/astro/pull/10195) [`903eace233033998811b72e27a54c80d8e59ff37`](https://github.com/withastro/astro/commit/903eace233033998811b72e27a54c80d8e59ff37) Thanks [@1574242600](https://github.com/1574242600)! - Fix build failure caused by read-only files under /public (in the presence of client-side JS). + +- [#10205](https://github.com/withastro/astro/pull/10205) [`459f74bc71748279fe7dce0688f38bd74b51c5c1`](https://github.com/withastro/astro/commit/459f74bc71748279fe7dce0688f38bd74b51c5c1) Thanks [@martrapp](https://github.com/martrapp)! - Adds an error message for non-string transition:name values + +- [#10208](https://github.com/withastro/astro/pull/10208) [`8cd38f02456640c063552aef00b2b8a216b3935d`](https://github.com/withastro/astro/commit/8cd38f02456640c063552aef00b2b8a216b3935d) Thanks [@log101](https://github.com/log101)! - Fixes custom headers are not added to the Node standalone server responses in preview mode + +## 4.4.3 + +### Patch Changes + +- [#10143](https://github.com/withastro/astro/pull/10143) [`7c5fcd2fa817472f480bbfbbc11b9ed71a7210ab`](https://github.com/withastro/astro/commit/7c5fcd2fa817472f480bbfbbc11b9ed71a7210ab) Thanks [@bluwy](https://github.com/bluwy)! - Improves the default `optimizeDeps.entries` Vite config to avoid globbing server endpoints, and respect the `srcDir` option + +- [#10197](https://github.com/withastro/astro/pull/10197) [`c856c729404196900a7386c8426b81e79684a6a9`](https://github.com/withastro/astro/commit/c856c729404196900a7386c8426b81e79684a6a9) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes errors being logged twice in some cases + +- [#10166](https://github.com/withastro/astro/pull/10166) [`598f30c7cd6c88558e3806d9bc5a15d426d83992`](https://github.com/withastro/astro/commit/598f30c7cd6c88558e3806d9bc5a15d426d83992) Thanks [@bluwy](https://github.com/bluwy)! - Improves Astro style tag HMR when updating imported styles + +- [#10194](https://github.com/withastro/astro/pull/10194) [`3cc20109277813ccb9578ca87a8b0d680a73c35c`](https://github.com/withastro/astro/commit/3cc20109277813ccb9578ca87a8b0d680a73c35c) Thanks [@matthewp](https://github.com/matthewp)! - Fixes an issue related to content collections usage in browser context caused by `csssec` + +## 4.4.2 + +### Patch Changes + +- [#10169](https://github.com/withastro/astro/pull/10169) [`a46249173edde66b03c19441144272baa8394fb4`](https://github.com/withastro/astro/commit/a46249173edde66b03c19441144272baa8394fb4) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue with the `i18n.routing` types, where an internal transformation was causing the generation of incorrect types for integrations. + +## 4.4.1 + +### Patch Changes + +- [#9795](https://github.com/withastro/astro/pull/9795) [`5acc3135ba5309a566def466fbcbabd23f70cd68`](https://github.com/withastro/astro/commit/5acc3135ba5309a566def466fbcbabd23f70cd68) Thanks [@lilnasy](https://github.com/lilnasy)! - Refactors internals relating to middleware, endpoints, and page rendering. + +- [#10105](https://github.com/withastro/astro/pull/10105) [`1f598b372410066c6fcd41cba9915f6aaf7befa8`](https://github.com/withastro/astro/commit/1f598b372410066c6fcd41cba9915f6aaf7befa8) Thanks [@negativems](https://github.com/negativems)! - Fixes an issue where some astro commands failed if the astro config file or an integration used the global `crypto` object. + +- [#10165](https://github.com/withastro/astro/pull/10165) [`d50dddb71d87ce5b7928920f10eb4946a5339f86`](https://github.com/withastro/astro/commit/d50dddb71d87ce5b7928920f10eb4946a5339f86) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the `i18n.routing` object had all its fields defined as mandatory. Now they all are optionals and shouldn't break when using `astro.config.mts`. + +- [#10132](https://github.com/withastro/astro/pull/10132) [`1da9c5f2f3fe70b0206d1b3e0c01744fa40d511c`](https://github.com/withastro/astro/commit/1da9c5f2f3fe70b0206d1b3e0c01744fa40d511c) Thanks [@bluwy](https://github.com/bluwy)! - Simplifies internal Vite preview server teardown + +- [#10163](https://github.com/withastro/astro/pull/10163) [`b92d35f1026f3e99abb888d1a845bdda4efdc327`](https://github.com/withastro/astro/commit/b92d35f1026f3e99abb888d1a845bdda4efdc327) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where audit fails to initialize when encountered `` inside `` + +- [#10079](https://github.com/withastro/astro/pull/10079) [`80f8996514e6d0546e94bd927650cd4ab2f1fa2f`](https://github.com/withastro/astro/commit/80f8996514e6d0546e94bd927650cd4ab2f1fa2f) Thanks [@ktym4a](https://github.com/ktym4a)! - Fix integrationData fetch to always be called even if View Transition is enabled. + +- [#10139](https://github.com/withastro/astro/pull/10139) [`3c73441eb2eaba767d6dad1b30c0353195d28791`](https://github.com/withastro/astro/commit/3c73441eb2eaba767d6dad1b30c0353195d28791) Thanks [@bluwy](https://github.com/bluwy)! - Fixes style-only change detection for Astro files if both the markup and styles are updated + +## 4.4.0 + +### Minor Changes + +- [#9614](https://github.com/withastro/astro/pull/9614) [`d469bebd7b45b060dc41d82ab1cf18ee6de7e051`](https://github.com/withastro/astro/commit/d469bebd7b45b060dc41d82ab1cf18ee6de7e051) Thanks [@matthewp](https://github.com/matthewp)! - Improves Node.js streaming performance. + + This uses an `AsyncIterable` instead of a `ReadableStream` to do streaming in Node.js. This is a non-standard enhancement by Node, which is done only in that environment. + +- [#10001](https://github.com/withastro/astro/pull/10001) [`748b2e87cd44d8bcc1ab9d7e504703057e2000cd`](https://github.com/withastro/astro/commit/748b2e87cd44d8bcc1ab9d7e504703057e2000cd) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Removes content collection warning when a configured collection does not have a matching directory name. This should resolve `i18n` collection warnings for Starlight users. + + This also ensures configured collection names are always included in `getCollection()` and `getEntry()` types even when a matching directory is absent. We hope this allows users to discover typos during development by surfacing type information. + +- [#10074](https://github.com/withastro/astro/pull/10074) [`7443929381b47db0639c49a4d32aec4177bd9102`](https://github.com/withastro/astro/commit/7443929381b47db0639c49a4d32aec4177bd9102) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Add a UI showing the list of found problems when using the audit app in the dev toolbar + +- [#10099](https://github.com/withastro/astro/pull/10099) [`b340f8fe3aaa81e38c4f1aa41498b159dc733d86`](https://github.com/withastro/astro/commit/b340f8fe3aaa81e38c4f1aa41498b159dc733d86) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a regression where view transition names containing special characters such as spaces or punctuation stopped working. + + Regular use naming your transitions with `transition: name` is unaffected. + + However, this fix may result in breaking changes if your project relies on the particular character encoding strategy Astro uses to translate `transition:name` directives into values of the underlying CSS `view-transition-name` property. For example, `Welcome to Astro` is now encoded as `Welcome_20to_20Astro_2e`. + + This mainly affects spaces and punctuation marks but no Unicode characters with codes >= 128. + +- [#9976](https://github.com/withastro/astro/pull/9976) [`91f75afbc642b6e73dd4ec18a1fe2c3128c68132`](https://github.com/withastro/astro/commit/91f75afbc642b6e73dd4ec18a1fe2c3128c68132) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Adds a new optional `astro:assets` image attribute `inferSize` for use with remote images. + + Remote images can now have their dimensions inferred just like local images. Setting `inferSize` to `true` allows you to use `getImage()` and the `` and `` components without setting the `width` and `height` properties. + + ```astro + --- + import { Image, Picture, getImage } from 'astro:assets'; + const myPic = await getImage({ src: 'https://example.com/example.png', inferSize: true }); + --- + + + + ``` + + Read more about [using `inferSize` with remote images](https://docs.astro.build/en/guides/images/#infersize) in our documentation. + +- [#10015](https://github.com/withastro/astro/pull/10015) [`6884b103c8314a43e926c6acdf947cbf812a21f4`](https://github.com/withastro/astro/commit/6884b103c8314a43e926c6acdf947cbf812a21f4) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds initial support for performance audits to the dev toolbar + +### Patch Changes + +- [#10116](https://github.com/withastro/astro/pull/10116) [`4bcc249a9f34aaac59658ca626c828bd6dbb8046`](https://github.com/withastro/astro/commit/4bcc249a9f34aaac59658ca626c828bd6dbb8046) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where the dev server froze when typescript aliases were used. + +- [#10096](https://github.com/withastro/astro/pull/10096) [`227cd83a51bbd451dc223fd16f4cf1b87b8e44f8`](https://github.com/withastro/astro/commit/227cd83a51bbd451dc223fd16f4cf1b87b8e44f8) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes regression on routing priority for multi-layer index pages + + The sorting algorithm positions more specific routes before less specific routes, and considers index pages to be more specific than a dynamic route with a rest parameter inside of it. + This means that `/blog` is considered more specific than `/blog/[...slug]`. + + But this special case was being applied incorrectly to indexes, which could cause a problem in scenarios like the following: + - `/` + - `/blog` + - `/blog/[...slug]` + + The algorithm would make the following comparisons: + - `/` is more specific than `/blog` (incorrect) + - `/blog/[...slug]` is more specific than `/` (correct) + - `/blog` is more specific than `/blog/[...slug]` (correct) + + Although the incorrect first comparison is not a problem by itself, it could cause the algorithm to make the wrong decision. + Depending on the other routes in the project, the sorting could perform just the last two comparisons and by transitivity infer the inverse of the third (`/blog/[...slug` > `/` > `/blog`), which is incorrect. + + Now the algorithm doesn't have a special case for index pages and instead does the comparison soleley for rest parameter segments and their immediate parents, which is consistent with the transitivity property. + +- [#10120](https://github.com/withastro/astro/pull/10120) [`787e6f52470cf07fb50c865948b2bc8fe45a6d31`](https://github.com/withastro/astro/commit/787e6f52470cf07fb50c865948b2bc8fe45a6d31) Thanks [@bluwy](https://github.com/bluwy)! - Updates and supports Vite 5.1 + +- [#10096](https://github.com/withastro/astro/pull/10096) [`227cd83a51bbd451dc223fd16f4cf1b87b8e44f8`](https://github.com/withastro/astro/commit/227cd83a51bbd451dc223fd16f4cf1b87b8e44f8) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes edge case on i18n fallback routes + + Previously index routes deeply nested in the default locale, like `/some/nested/index.astro` could be mistaked as the root index for the default locale, resulting in an incorrect redirect on `/`. + +- [#10112](https://github.com/withastro/astro/pull/10112) [`476b79a61165d0aac5e98459a4ec90762050a14b`](https://github.com/withastro/astro/commit/476b79a61165d0aac5e98459a4ec90762050a14b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Renames the home Astro Devoolbar App to `astro:home` + +- [#10117](https://github.com/withastro/astro/pull/10117) [`51b6ff7403c1223b1c399e88373075972c82c24c`](https://github.com/withastro/astro/commit/51b6ff7403c1223b1c399e88373075972c82c24c) Thanks [@hippotastic](https://github.com/hippotastic)! - Fixes an issue where `create astro`, `astro add` and `@astrojs/upgrade` would fail due to unexpected package manager CLI output. + +## 4.3.7 + +### Patch Changes + +- [#9857](https://github.com/withastro/astro/pull/9857) [`73bd900754365b006ee730df9f379ba924e5b3fa`](https://github.com/withastro/astro/commit/73bd900754365b006ee730df9f379ba924e5b3fa) Thanks [@iamyunsin](https://github.com/iamyunsin)! - Fixes false positives in the dev overlay audit when multiple `role` values exist. + +- [#10075](https://github.com/withastro/astro/pull/10075) [`71273edbb429b5afdba6f8ee14681b66e4c09ecc`](https://github.com/withastro/astro/commit/71273edbb429b5afdba6f8ee14681b66e4c09ecc) Thanks [@lilnasy](https://github.com/lilnasy)! - Improves error messages for island hydration. + +- [#10072](https://github.com/withastro/astro/pull/10072) [`8106178043050d142bf385bed2990730518f28e2`](https://github.com/withastro/astro/commit/8106178043050d142bf385bed2990730518f28e2) Thanks [@lilnasy](https://github.com/lilnasy)! - Clarifies error messages in endpoint routing. + +- [#9971](https://github.com/withastro/astro/pull/9971) [`d9266c4467ca0faa1213c1a5995164e5655ab375`](https://github.com/withastro/astro/commit/d9266c4467ca0faa1213c1a5995164e5655ab375) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where ReadableStream wasn't canceled in dev mode + +## 4.3.6 + +### Patch Changes + +- [#10063](https://github.com/withastro/astro/pull/10063) [`dac759798c111494e76affd2c2504d63944871fe`](https://github.com/withastro/astro/commit/dac759798c111494e76affd2c2504d63944871fe) Thanks [@marwan-mohamed12](https://github.com/marwan-mohamed12)! - Moves `shikiji-core` from `devDependencies` to `dependencies` to prevent type errors + +- [#10067](https://github.com/withastro/astro/pull/10067) [`989ea63bb2a5a670021541198aa70b8dc7c4bd2f`](https://github.com/withastro/astro/commit/989ea63bb2a5a670021541198aa70b8dc7c4bd2f) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression in the `astro:i18n` module, where the functions `getAbsoluteLocaleUrl` and `getAbsoluteLocaleUrlList` returned a URL with double slash with a certain combination of options. + +- [#10060](https://github.com/withastro/astro/pull/10060) [`1810309e65c596266355c3b7bb36cdac70f3305e`](https://github.com/withastro/astro/commit/1810309e65c596266355c3b7bb36cdac70f3305e) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where custom client directives added by integrations broke builds with a custom root. + +- [#9991](https://github.com/withastro/astro/pull/9991) [`8fb67c81bb84530b39df4a1449c0862def0854af`](https://github.com/withastro/astro/commit/8fb67c81bb84530b39df4a1449c0862def0854af) Thanks [@ktym4a](https://github.com/ktym4a)! - Increases compatibility with standard browser behavior by changing where view transitions occur on browser back navigation. + +## 4.3.5 + +### Patch Changes + +- [#10022](https://github.com/withastro/astro/pull/10022) [`3fc76efb2a8faa47edf67562a1f0c84a19be1b33`](https://github.com/withastro/astro/commit/3fc76efb2a8faa47edf67562a1f0c84a19be1b33) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where types for the `astro:content` module did not include required exports, leading to typescript errors. + +- [#10016](https://github.com/withastro/astro/pull/10016) [`037e4f12dd2f460d66f72c9f2d992b95e74d2da9`](https://github.com/withastro/astro/commit/037e4f12dd2f460d66f72c9f2d992b95e74d2da9) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where routes with a name that start with the name of the `i18n.defaultLocale` were incorrectly returning a 404 response. + +## 4.3.4 + +### Patch Changes + +- [#10013](https://github.com/withastro/astro/pull/10013) [`e6b5306a7de779ce495d0ff076d302de0aa57eaf`](https://github.com/withastro/astro/commit/e6b5306a7de779ce495d0ff076d302de0aa57eaf) Thanks [@delucis](https://github.com/delucis)! - Fixes a regression in content collection types + +- [#10003](https://github.com/withastro/astro/pull/10003) [`ce4283331f18c6178654dd705e3cf02efeef004a`](https://github.com/withastro/astro/commit/ce4283331f18c6178654dd705e3cf02efeef004a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds support for `.strict()` on content collection schemas when a custom `slug` is present. + +## 4.3.3 + +### Patch Changes + +- [#9998](https://github.com/withastro/astro/pull/9998) [`18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee`](https://github.com/withastro/astro/commit/18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in `Astro.currentLocale` that wasn't returning the correct locale when a locale is configured via `path` + +- [#9998](https://github.com/withastro/astro/pull/9998) [`18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee`](https://github.com/withastro/astro/commit/18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression in `Astro.currentLocale` where it stopped working properly with dynamic routes + +- [#9956](https://github.com/withastro/astro/pull/9956) [`81acac24a3cac5a9143155c1d9f838ea84a70421`](https://github.com/withastro/astro/commit/81acac24a3cac5a9143155c1d9f838ea84a70421) Thanks [@matthewp](https://github.com/matthewp)! - Fixes HMR for MDX dependencies in Content Collections + +- [#9999](https://github.com/withastro/astro/pull/9999) [`c53a31321a935e4be04809046d7e0ba3cc41b272`](https://github.com/withastro/astro/commit/c53a31321a935e4be04809046d7e0ba3cc41b272) Thanks [@MoustaphaDev](https://github.com/MoustaphaDev)! - Rollbacks the feature which allowed to dynamically generate slots with variable slot names due to unexpected regressions. + +- [#9906](https://github.com/withastro/astro/pull/9906) [`3c0876cbed5033e6b5b42cc2b9d8b393d7e5a55e`](https://github.com/withastro/astro/commit/3c0876cbed5033e6b5b42cc2b9d8b393d7e5a55e) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Improves the types for the `astro:content` module by making low fidelity types available before running `astro sync` + +## 4.3.2 + +### Patch Changes + +- [#9932](https://github.com/withastro/astro/pull/9932) [`9f0d89fa7e9e7c08c8600b0c49c2cce7489a7582`](https://github.com/withastro/astro/commit/9f0d89fa7e9e7c08c8600b0c49c2cce7489a7582) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where a warning was logged even when the feature `i18nDomains` wasn't enabled + +- [#9907](https://github.com/withastro/astro/pull/9907) [`6c894af5ab79f290f4ff7feb68617a66e91febc1`](https://github.com/withastro/astro/commit/6c894af5ab79f290f4ff7feb68617a66e91febc1) Thanks [@ktym4a](https://github.com/ktym4a)! - Load 404.html on all non-existent paths on astro preview. + +## 4.3.1 + +### Patch Changes + +- [#9841](https://github.com/withastro/astro/pull/9841) [`27ea080e24e2c5cdc59b63b1dfe0a83a0c696597`](https://github.com/withastro/astro/commit/27ea080e24e2c5cdc59b63b1dfe0a83a0c696597) Thanks [@kristianbinau](https://github.com/kristianbinau)! - Makes the warning clearer when having a custom `base` and requesting a public URL without it + +- [#9888](https://github.com/withastro/astro/pull/9888) [`9d2fdb293d6a7323e10126cebad18ef9a2ea2800`](https://github.com/withastro/astro/commit/9d2fdb293d6a7323e10126cebad18ef9a2ea2800) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improves error handling logic for the `astro sync` command. + +- [#9918](https://github.com/withastro/astro/pull/9918) [`d52529e09450c84933dd15d6481edb32269f537b`](https://github.com/withastro/astro/commit/d52529e09450c84933dd15d6481edb32269f537b) Thanks [@LarryIVC](https://github.com/LarryIVC)! - Adds the `name` attribute to the `
` tag type + +- [#9938](https://github.com/withastro/astro/pull/9938) [`1568afb78a163db63a4cde146dec87785a83db1d`](https://github.com/withastro/astro/commit/1568afb78a163db63a4cde146dec87785a83db1d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where middleware did not run for prerendered pages and endpoints. + +- [#9931](https://github.com/withastro/astro/pull/9931) [`44674418965d658733d3602668a9354e18f8ef89`](https://github.com/withastro/astro/commit/44674418965d658733d3602668a9354e18f8ef89) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where a response created with `Response.redirect` or containing `null` as the body never completed in node-based adapters. + +## 4.3.0 + +### Minor Changes + +- [#9839](https://github.com/withastro/astro/pull/9839) [`58f9e393a188702eef5329e41deff3dcb65a3230`](https://github.com/withastro/astro/commit/58f9e393a188702eef5329e41deff3dcb65a3230) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `ComponentProps` type export from `astro/types` to get the props type of an Astro component. + + ```astro + --- + import type { ComponentProps } from 'astro/types'; + import Button from './Button.astro'; + + type myButtonProps = ComponentProps; + --- + ``` + +- [#9159](https://github.com/withastro/astro/pull/9159) [`7d937c158959e76443a02f740b10e251d14dbd8c`](https://github.com/withastro/astro/commit/7d937c158959e76443a02f740b10e251d14dbd8c) Thanks [@bluwy](https://github.com/bluwy)! - Adds CLI shortcuts as an easter egg for the dev server: + - `o + enter`: opens the site in your browser + - `q + enter`: quits the dev server + - `h + enter`: prints all available shortcuts + +- [#9764](https://github.com/withastro/astro/pull/9764) [`fad4f64aa149086feda2d1f3a0b655767034f1a8`](https://github.com/withastro/astro/commit/fad4f64aa149086feda2d1f3a0b655767034f1a8) Thanks [@matthewp](https://github.com/matthewp)! - Adds a new `build.format` configuration option: `'preserve'`. This option will preserve your source structure in the final build. + + The existing configuration options, `file` and `directory`, either build all of your HTML pages as files matching the route name (e.g. `/about.html`) or build all your files as `index.html` within a nested directory structure (e.g. `/about/index.html`), respectively. It was not previously possible to control the HTML file built on a per-file basis. + + One limitation of `build.format: 'file'` is that it cannot create `index.html` files for any individual routes (other than the base path of `/`) while otherwise building named files. Creating explicit index pages within your file structure still generates a file named for the page route (e.g. `src/pages/about/index.astro` builds `/about.html`) when using the `file` configuration option. + + Rather than make a breaking change to allow `build.format: 'file'` to be more flexible, we decided to create a new `build.format: 'preserve'`. + + The new format will preserve how the filesystem is structured and make sure that is mirrored over to production. Using this option: + - `about.astro` becomes `about.html` + - `about/index.astro` becomes `about/index.html` + + See the [`build.format` configuration options reference](https://docs.astro.build/en/reference/configuration-reference/#buildformat) for more details. + +- [#9143](https://github.com/withastro/astro/pull/9143) [`041fdd5c89920f7ccf944b095f29e451f78b0e28`](https://github.com/withastro/astro/commit/041fdd5c89920f7ccf944b095f29e451f78b0e28) Thanks [@ematipico](https://github.com/ematipico)! - Adds experimental support for a new i18n domain routing option (`"domains"`) that allows you to configure different domains for individual locales in entirely server-rendered projects. + + To enable this in your project, first configure your `server`-rendered project's i18n routing with your preferences if you have not already done so. Then, set the `experimental.i18nDomains` flag to `true` and add `i18n.domains` to map any of your supported `locales` to custom URLs: + + ```js + //astro.config.mjs" + import { defineConfig } from 'astro/config'; + export default defineConfig({ + site: 'https://example.com', + output: 'server', // required, with no prerendered pages + adapter: node({ + mode: 'standalone', + }), + i18n: { + defaultLocale: 'en', + locales: ['es', 'en', 'fr', 'ja'], + routing: { + prefixDefaultLocale: false, + }, + domains: { + fr: 'https://fr.example.com', + es: 'https://example.es', + }, + }, + experimental: { + i18nDomains: true, + }, + }); + ``` + + With `"domains"` configured, the URLs emitted by `getAbsoluteLocaleUrl()` and `getAbsoluteLocaleUrlList()` will use the options set in `i18n.domains`. + + ```js + import { getAbsoluteLocaleUrl } from 'astro:i18n'; + + getAbsoluteLocaleUrl('en', 'about'); // will return "https://example.com/about" + getAbsoluteLocaleUrl('fr', 'about'); // will return "https://fr.example.com/about" + getAbsoluteLocaleUrl('es', 'about'); // will return "https://example.es/about" + getAbsoluteLocaleUrl('ja', 'about'); // will return "https://example.com/ja/about" + ``` + + Similarly, your localized files will create routes at corresponding URLs: + - The file `/en/about.astro` will be reachable at the URL `https://example.com/about`. + - The file `/fr/about.astro` will be reachable at the URL `https://fr.example.com/about`. + - The file `/es/about.astro` will be reachable at the URL `https://example.es/about`. + - The file `/ja/about.astro` will be reachable at the URL `https://example.com/ja/about`. + + See our [Internationalization Guide](https://docs.astro.build/en/guides/internationalization/#domains-experimental) for more details and limitations on this experimental routing feature. + +- [#9755](https://github.com/withastro/astro/pull/9755) [`d4b886141bb342ac71b1c060e67d66ca2ffbb8bd`](https://github.com/withastro/astro/commit/d4b886141bb342ac71b1c060e67d66ca2ffbb8bd) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Fixes an issue where images in Markdown required a relative specifier (e.g. `./`) + + Now, you can use the standard `![](img.png)` syntax in Markdown files for images colocated in the same folder: no relative specifier required! + + There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these Markdown images as they are no longer necessary: + + ```diff + - ![A cute dog](./dog.jpg) + + ![A cute dog](dog.jpg) + + ``` + +### Patch Changes + +- [#9908](https://github.com/withastro/astro/pull/9908) [`2f6d1faa6f2d6de2d4ccd2a48adf5adadc82e593`](https://github.com/withastro/astro/commit/2f6d1faa6f2d6de2d4ccd2a48adf5adadc82e593) Thanks [@lilnasy](https://github.com/lilnasy)! - Improves http behavior relating to errors encountered while streaming a response. + +- [#9877](https://github.com/withastro/astro/pull/9877) [`7be5f94dcfc73a78d0fb301eeff51614d987a165`](https://github.com/withastro/astro/commit/7be5f94dcfc73a78d0fb301eeff51614d987a165) Thanks [@fabiankachlock](https://github.com/fabiankachlock)! - Fixes the content config type path on windows + +- [#9143](https://github.com/withastro/astro/pull/9143) [`041fdd5c89920f7ccf944b095f29e451f78b0e28`](https://github.com/withastro/astro/commit/041fdd5c89920f7ccf944b095f29e451f78b0e28) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the function `getLocaleRelativeUrlList` wasn't normalising the paths by default + +- [#9911](https://github.com/withastro/astro/pull/9911) [`aaedb848b1d6f683840035865528506a346ea659`](https://github.com/withastro/astro/commit/aaedb848b1d6f683840035865528506a346ea659) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Fixes an issue where some adapters that do not include a `start()` export would error rather than silently proceed + +## 4.2.8 + +### Patch Changes + +- [#9884](https://github.com/withastro/astro/pull/9884) [`37369550ab57ca529fd6c796e5b0e96e897ca6e5`](https://github.com/withastro/astro/commit/37369550ab57ca529fd6c796e5b0e96e897ca6e5) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where multiple cookies were sent in a single Set-Cookie header in the dev mode. + +- [#9876](https://github.com/withastro/astro/pull/9876) [`e9027f194b939ac5a4d795ee1a2c24e4a6fbefc0`](https://github.com/withastro/astro/commit/e9027f194b939ac5a4d795ee1a2c24e4a6fbefc0) Thanks [@friedemannsommer](https://github.com/friedemannsommer)! - Fixes an issue where using `Response.redirect` in an endpoint led to an error. + +- [#9882](https://github.com/withastro/astro/pull/9882) [`13c3b712c7ba45d0081f459fc06f142216a4ec59`](https://github.com/withastro/astro/commit/13c3b712c7ba45d0081f459fc06f142216a4ec59) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improves handling of YAML parsing errors + +- [#9878](https://github.com/withastro/astro/pull/9878) [`a40a0ff5883c7915dd55881dcebd052b9f94a0eb`](https://github.com/withastro/astro/commit/a40a0ff5883c7915dd55881dcebd052b9f94a0eb) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where setting trailingSlash to "never" had no effect on `Astro.url`. + +## 4.2.7 + +### Patch Changes + +- [#9840](https://github.com/withastro/astro/pull/9840) [`70fdf1a5c660057152c1ca111dcc89ceda5c8840`](https://github.com/withastro/astro/commit/70fdf1a5c660057152c1ca111dcc89ceda5c8840) Thanks [@delucis](https://github.com/delucis)! - Expose `ContentConfig` type from `astro:content` + +- [#9865](https://github.com/withastro/astro/pull/9865) [`00ba9f1947ca9016cd0ee4d8f6048027fab2ab9a`](https://github.com/withastro/astro/commit/00ba9f1947ca9016cd0ee4d8f6048027fab2ab9a) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in `Astro.currentLocale` where the value was incorrectly computed during the build. + +- [#9838](https://github.com/withastro/astro/pull/9838) [`0a06d87a1e2b94be00a954f350c184222fa0594d`](https://github.com/withastro/astro/commit/0a06d87a1e2b94be00a954f350c184222fa0594d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where `astro:i18n` could not be used in framework components. + +- Updated dependencies [[`44c957f893c6bf5f5b7c78301de7b21c5975584d`](https://github.com/withastro/astro/commit/44c957f893c6bf5f5b7c78301de7b21c5975584d)]: + - @astrojs/markdown-remark@4.2.1 + +## 4.2.6 + +### Patch Changes + +- [#9825](https://github.com/withastro/astro/pull/9825) [`e4370e9e9dd862425eced25823c82e77d9516927`](https://github.com/withastro/astro/commit/e4370e9e9dd862425eced25823c82e77d9516927) Thanks [@tugrulates](https://github.com/tugrulates)! - Fixes false positive aria role errors on interactive elements + +- [#9828](https://github.com/withastro/astro/pull/9828) [`a3df9d83ca92abb5f08f576631019c1604204bd9`](https://github.com/withastro/astro/commit/a3df9d83ca92abb5f08f576631019c1604204bd9) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where shared modules among pages and middleware were transformed to a no-op after the build. + +- [#9834](https://github.com/withastro/astro/pull/9834) [`1885cea308a62b173a50967cf5a0b174b3c3f3f1`](https://github.com/withastro/astro/commit/1885cea308a62b173a50967cf5a0b174b3c3f3f1) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes third-party dev toolbar apps not loading correctly when using absolute paths on Windows + +## 4.2.5 + +### Patch Changes + +- [#9818](https://github.com/withastro/astro/pull/9818) [`d688954c5adba75b0d676694fbf5fb0da1c0af13`](https://github.com/withastro/astro/commit/d688954c5adba75b0d676694fbf5fb0da1c0af13) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Improves the wording of a few confusing error messages + +- [#9680](https://github.com/withastro/astro/pull/9680) [`5d7db1dbb0ff06db98e08b0ca241ff09d0b8b44d`](https://github.com/withastro/astro/commit/5d7db1dbb0ff06db98e08b0ca241ff09d0b8b44d) Thanks [@loucyx](https://github.com/loucyx)! - Fixes types generation from Content Collections config file + +- [#9822](https://github.com/withastro/astro/pull/9822) [`bd880e8437ea2df16f322f604865c1148a9fd4cf`](https://github.com/withastro/astro/commit/bd880e8437ea2df16f322f604865c1148a9fd4cf) Thanks [@liruifengv](https://github.com/liruifengv)! - Applies the correct escaping to identifiers used with `transition:name`. + +- [#9830](https://github.com/withastro/astro/pull/9830) [`f3d22136e53fd902310024519fc4de83f0a58039`](https://github.com/withastro/astro/commit/f3d22136e53fd902310024519fc4de83f0a58039) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where 404 responses from endpoints were replaced with contents of 404.astro in dev mode. + +- [#9816](https://github.com/withastro/astro/pull/9816) [`2a44c8f93201958fba2d1e83046eabcaef186b7c`](https://github.com/withastro/astro/commit/2a44c8f93201958fba2d1e83046eabcaef186b7c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds telemetry for when apps are toggled in the dev toolbar. This data is completely anonymous and only the names of built-in apps are shared with us. This data will help us monitor how much the dev toolbar is used and which apps are used more. For more information on how Astro collects telemetry, visit the following page: https://astro.build/telemetry/ + +- [#9807](https://github.com/withastro/astro/pull/9807) [`b3f313138bb314e2b416c29cda507383c2a9f816`](https://github.com/withastro/astro/commit/b3f313138bb314e2b416c29cda507383c2a9f816) Thanks [@bluwy](https://github.com/bluwy)! - Fixes environment variables replacement for `export const prerender` + +- [#9790](https://github.com/withastro/astro/pull/9790) [`267c5aa2c7706f0ea3447f20a09d85aa560866ad`](https://github.com/withastro/astro/commit/267c5aa2c7706f0ea3447f20a09d85aa560866ad) Thanks [@lilnasy](https://github.com/lilnasy)! - Refactors internals of the `astro:i18n` module to be more maintainable. + +- [#9776](https://github.com/withastro/astro/pull/9776) [`dc75180aa698b298264362bab7f00391af427798`](https://github.com/withastro/astro/commit/dc75180aa698b298264362bab7f00391af427798) Thanks [@lilnasy](https://github.com/lilnasy)! - Simplifies internals that handle middleware. + +## 4.2.4 + +### Patch Changes + +- [#9792](https://github.com/withastro/astro/pull/9792) [`e22cb8b10c0ca9f6d88cab53cd2713f57875ab4b`](https://github.com/withastro/astro/commit/e22cb8b10c0ca9f6d88cab53cd2713f57875ab4b) Thanks [@tugrulates](https://github.com/tugrulates)! - Accept aria role `switch` on toolbar audit. + +- [#9606](https://github.com/withastro/astro/pull/9606) [`e6945bcf23b6ad29388bbadaf5bb3cc31dd4a114`](https://github.com/withastro/astro/commit/e6945bcf23b6ad29388bbadaf5bb3cc31dd4a114) Thanks [@eryue0220](https://github.com/eryue0220)! - Fixes escaping behavior for `.html` files and components + +- [#9786](https://github.com/withastro/astro/pull/9786) [`5b29550996a7f5459a0d611feea6e51d44e1d8ed`](https://github.com/withastro/astro/commit/5b29550996a7f5459a0d611feea6e51d44e1d8ed) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes a regression in routing priority for index pages in rest parameter folders and dynamic sibling trees. + + Considering the following tree: + + ``` + src/pages/ + ├── index.astro + ├── static.astro + ├── [dynamic_file].astro + ├── [...rest_file].astro + ├── blog/ + │ └── index.astro + ├── [dynamic_folder]/ + │ ├── index.astro + │ ├── static.astro + │ └── [...rest].astro + └── [...rest_folder]/ + ├── index.astro + └── static.astro + ``` + + The routes are sorted in this order: + + ``` + /src/pages/index.astro + /src/pages/blog/index.astro + /src/pages/static.astro + /src/pages/[dynamic_folder]/index.astro + /src/pages/[dynamic_file].astro + /src/pages/[dynamic_folder]/static.astro + /src/pages/[dynamic_folder]/[...rest].astro + /src/pages/[...rest_folder]/static.astro + /src/pages/[...rest_folder]/index.astro + /src/pages/[...rest_file]/index.astro + ``` + + This allows for index files to be used as overrides to rest parameter routes on SSR when the rest parameter matching `undefined` is not desired. + +- [#9775](https://github.com/withastro/astro/pull/9775) [`075706f26d2e11e66ef8b52288d07e3c0fa97eb1`](https://github.com/withastro/astro/commit/075706f26d2e11e66ef8b52288d07e3c0fa97eb1) Thanks [@lilnasy](https://github.com/lilnasy)! - Simplifies internals that handle endpoints. + +- [#9773](https://github.com/withastro/astro/pull/9773) [`9aa7a5368c502ae488d3a173e732d81f3d000e98`](https://github.com/withastro/astro/commit/9aa7a5368c502ae488d3a173e732d81f3d000e98) Thanks [@LunaticMuch](https://github.com/LunaticMuch)! - Raises the required vite version to address a vulnerability in `vite.server.fs.deny` that affected the dev mode. + +- [#9781](https://github.com/withastro/astro/pull/9781) [`ccc05d54014e24c492ca5fddd4862f318aac8172`](https://github.com/withastro/astro/commit/ccc05d54014e24c492ca5fddd4862f318aac8172) Thanks [@stevenbenner](https://github.com/stevenbenner)! - Fix build failure when image file name includes special characters + +## 4.2.3 + +### Patch Changes + +- [#9768](https://github.com/withastro/astro/pull/9768) [`eed0e8757c35dde549707e71c45862438a043fb0`](https://github.com/withastro/astro/commit/eed0e8757c35dde549707e71c45862438a043fb0) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fix apps being able to crash the dev toolbar in certain cases + +## 4.2.2 + +### Patch Changes + +- [#9712](https://github.com/withastro/astro/pull/9712) [`ea6cbd06a2580527786707ec735079ff9abd0ec0`](https://github.com/withastro/astro/commit/ea6cbd06a2580527786707ec735079ff9abd0ec0) Thanks [@bluwy](https://github.com/bluwy)! - Improves HMR behavior for style-only changes in `.astro` files + +- [#9739](https://github.com/withastro/astro/pull/9739) [`3ecb3ef64326a8f77aa170df1e3c89cb5c12cc93`](https://github.com/withastro/astro/commit/3ecb3ef64326a8f77aa170df1e3c89cb5c12cc93) Thanks [@ematipico](https://github.com/ematipico)! - Makes i18n redirects take the `build.format` configuration into account + +- [#9762](https://github.com/withastro/astro/pull/9762) [`1fba85681e86aa83d24336d4209cafbc76b37607`](https://github.com/withastro/astro/commit/1fba85681e86aa83d24336d4209cafbc76b37607) Thanks [@ematipico](https://github.com/ematipico)! - Adds `popovertarget" to the attribute that can be passed to the `button` element + +- [#9605](https://github.com/withastro/astro/pull/9605) [`8ce40a417c854d9e6a4fa7d5a85d50a6436b4a3c`](https://github.com/withastro/astro/commit/8ce40a417c854d9e6a4fa7d5a85d50a6436b4a3c) Thanks [@MoustaphaDev](https://github.com/MoustaphaDev)! - Adds support for dynamic slot names + +- [#9381](https://github.com/withastro/astro/pull/9381) [`9e01f9cc1efcfb938355829676d51b24818ab2bb`](https://github.com/withastro/astro/commit/9e01f9cc1efcfb938355829676d51b24818ab2bb) Thanks [@martrapp](https://github.com/martrapp)! - Improves the CLI output of `astro preferences list` to include additional relevant information + +- [#9741](https://github.com/withastro/astro/pull/9741) [`73d74402007896204ee965f6553dc83b3dec8d2f`](https://github.com/withastro/astro/commit/73d74402007896204ee965f6553dc83b3dec8d2f) Thanks [@taktran](https://github.com/taktran)! - Fixes an issue where dot files were not copied over from the public folder to the output folder, when build command was run in a folder other than the root of the project. + +- [#9730](https://github.com/withastro/astro/pull/9730) [`8d2e5db096f1e7b098511b4fe9357434a6ff0703`](https://github.com/withastro/astro/commit/8d2e5db096f1e7b098511b4fe9357434a6ff0703) Thanks [@Blede2000](https://github.com/Blede2000)! - Allow i18n routing utilities like getRelativeLocaleUrl to also get the default local path when redirectToDefaultLocale is false + +- Updated dependencies [[`53c69dcc82cdf4000aff13a6c11fffe19096cf45`](https://github.com/withastro/astro/commit/53c69dcc82cdf4000aff13a6c11fffe19096cf45), [`2f81cffa9da9db0e2802d303f94feaee8d2f54ec`](https://github.com/withastro/astro/commit/2f81cffa9da9db0e2802d303f94feaee8d2f54ec), [`a505190933365268d48139a5f197a3cfb5570870`](https://github.com/withastro/astro/commit/a505190933365268d48139a5f197a3cfb5570870)]: + - @astrojs/markdown-remark@4.2.0 + +## 4.2.1 + +### Patch Changes + +- [#9726](https://github.com/withastro/astro/pull/9726) [`a4b696def3a7eb18c1ae48b10fd3758a1874b6fe`](https://github.com/withastro/astro/commit/a4b696def3a7eb18c1ae48b10fd3758a1874b6fe) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes a regression in routing priority between `index.astro` and dynamic routes with rest parameters + +## 4.2.0 + +### Minor Changes + +- [#9566](https://github.com/withastro/astro/pull/9566) [`165cfc154be477337037185c32b308616d1ed6fa`](https://github.com/withastro/astro/commit/165cfc154be477337037185c32b308616d1ed6fa) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Allows remark plugins to pass options specifying how images in `.md` files will be optimized + +- [#9661](https://github.com/withastro/astro/pull/9661) [`d6edc7540864cf5d294d7b881eb886a3804f6d05`](https://github.com/withastro/astro/commit/d6edc7540864cf5d294d7b881eb886a3804f6d05) Thanks [@ematipico](https://github.com/ematipico)! - Adds new helper functions for adapter developers. + - `Astro.clientAddress` can now be passed directly to the `app.render()` method. + + ```ts + const response = await app.render(request, { clientAddress: '012.123.23.3' }); + ``` + + - Helper functions for converting Node.js HTTP request and response objects to web-compatible `Request` and `Response` objects are now provided as static methods on the `NodeApp` class. + + ```ts + http.createServer((nodeReq, nodeRes) => { + const request: Request = NodeApp.createRequest(nodeReq); + const response = await app.render(request); + await NodeApp.writeResponse(response, nodeRes); + }); + ``` + + - Cookies added via `Astro.cookies.set()` can now be automatically added to the `Response` object by passing the `addCookieHeader` option to `app.render()`. + + ```diff + -const response = await app.render(request) + -const setCookieHeaders: Array = Array.from(app.setCookieHeaders(webResponse)); + + -if (setCookieHeaders.length) { + - for (const setCookieHeader of setCookieHeaders) { + - headers.append('set-cookie', setCookieHeader); + - } + -} + +const response = await app.render(request, { addCookieHeader: true }) + ``` + +- [#9638](https://github.com/withastro/astro/pull/9638) [`f1a61268061b8834f39a9b38bca043ae41caed04`](https://github.com/withastro/astro/commit/f1a61268061b8834f39a9b38bca043ae41caed04) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new `i18n.routing` config option `redirectToDefaultLocale` to disable automatic redirects of the root URL (`/`) to the default locale when `prefixDefaultLocale: true` is set. + + In projects where every route, including the default locale, is prefixed with `/[locale]/` path, this property allows you to control whether or not `src/pages/index.astro` should automatically redirect your site visitors from `/` to `/[defaultLocale]`. + + You can now opt out of this automatic redirection by setting `redirectToDefaultLocale: false`: + + ```js + // astro.config.mjs + export default defineConfig({ + i18n: { + defaultLocale: 'en', + locales: ['en', 'fr'], + routing: { + prefixDefaultLocale: true, + redirectToDefaultLocale: false, + }, + }, + }); + ``` + +- [#9671](https://github.com/withastro/astro/pull/9671) [`8521ff77fbf7e867701cc30d18253856914dbd1b`](https://github.com/withastro/astro/commit/8521ff77fbf7e867701cc30d18253856914dbd1b) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Removes the requirement for non-content files and assets inside content collections to be prefixed with an underscore. For files with extensions like `.astro` or `.css`, you can now remove underscores without seeing a warning in the terminal. + + ```diff + src/content/blog/ + post.mdx + - _styles.css + - _Component.astro + + styles.css + + Component.astro + ``` + + Continue to use underscores in your content collections to exclude individual content files, such as drafts, from the build output. + +- [#9567](https://github.com/withastro/astro/pull/9567) [`3a4d5ec8001ebf95c917fdc0d186d29650533d93`](https://github.com/withastro/astro/commit/3a4d5ec8001ebf95c917fdc0d186d29650533d93) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Improves the a11y-missing-content rule and error message for audit feature of dev-overlay. This also fixes an error where this check was falsely reporting accessibility errors. + +- [#9643](https://github.com/withastro/astro/pull/9643) [`e9a72d9a91a3741566866bcaab11172cb0dc7d31`](https://github.com/withastro/astro/commit/e9a72d9a91a3741566866bcaab11172cb0dc7d31) Thanks [@blackmann](https://github.com/blackmann)! - Adds a new `markdown.shikiConfig.transformers` config option. You can use this option to transform the Shikiji hast (AST format of the generated HTML) to customize the final HTML. Also updates Shikiji to the latest stable version. + + See [Shikiji's documentation](https://shikiji.netlify.app/guide/transformers) for more details about creating your own custom transformers, and [a list of common transformers](https://shikiji.netlify.app/packages/transformers) you can add directly to your project. + +- [#9644](https://github.com/withastro/astro/pull/9644) [`a5f1682347e602330246129d4666a9227374c832`](https://github.com/withastro/astro/commit/a5f1682347e602330246129d4666a9227374c832) Thanks [@rossrobino](https://github.com/rossrobino)! - Adds an experimental flag `clientPrerender` to prerender your prefetched pages on the client with the [Speculation Rules API](https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API). + + ```js + // astro.config.mjs + { + prefetch: { + prefetchAll: true, + defaultStrategy: 'viewport', + }, + experimental: { + clientPrerender: true, + }, + } + ``` + + Enabling this feature overrides the default `prefetch` behavior globally to prerender links on the client according to your `prefetch` configuration. Instead of appending a `` tag to the head of the document or fetching the page with JavaScript, a `

Thanks for signing up!

} -
- - -
- ``` - - If you were previously using this feature, please remove the experimental flag from your Astro config: - - ```diff - import { defineConfig } from 'astro' - - export default defineConfig({ - - experimental: { - - actions: true, - - } - }) - ``` - - If you have been waiting for stabilization before using Actions, you can now do so. - - For more information and usage examples, see our [brand new Actions guide](https://docs.astro.build/en/guides/actions). - -### Patch Changes - -- [#11677](https://github.com/withastro/astro/pull/11677) [`cb356a5`](https://github.com/withastro/astro/commit/cb356a5db6b1ec2799790a603f931a961883ab31) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in the logic of `Astro.rewrite()` which led to the value for `base`, if configured, being automatically prepended to the rewrite URL passed. This was unintended behavior and has been corrected, and Astro now processes the URLs exactly as passed. - - If you use the `rewrite()` function on a project that has `base` configured, you must now prepend the base to your existing rewrite URL: - - ```js - // astro.config.mjs - export default defineConfig({ - base: '/blog', - }); - ``` - - ```diff - // src/middleware.js - export function onRequest(ctx, next) { - - return ctx.rewrite("/about") - + return ctx.rewrite("/blog/about") - } - ``` - -- [#11862](https://github.com/withastro/astro/pull/11862) [`0e35afe`](https://github.com/withastro/astro/commit/0e35afe44f5a3c9f87b41dc89d5128b02e448895) Thanks [@ascorbic](https://github.com/ascorbic)! - **BREAKING CHANGE to experimental content layer loaders only!** - - Passes `AstroConfig` instead of `AstroSettings` object to content layer loaders. - - This will not affect you unless you have created a loader that uses the `settings` object. If you have, you will need to update your loader to use the `config` object instead. - - ```diff - export default function myLoader() { - return { - name: 'my-loader' - - async load({ settings }) { - - const base = settings.config.base; - + async load({ config }) { - + const base = config.base; - // ... - } - } - } - - ``` - - Other properties of the settings object are private internals, and should not be accessed directly. If you think you need access to other properties, please open an issue to discuss your use case. - -- [#11772](https://github.com/withastro/astro/pull/11772) [`6272e6c`](https://github.com/withastro/astro/commit/6272e6cec07778e81f853754bffaac40e658c700) Thanks [@bluwy](https://github.com/bluwy)! - Uses `magicast` to update the config for `astro add` - -- [#11845](https://github.com/withastro/astro/pull/11845) [`440a4be`](https://github.com/withastro/astro/commit/440a4be0a6ca135e47b0d37124c1be03735ba7ff) Thanks [@bluwy](https://github.com/bluwy)! - Replaces `execa` with `tinyexec` internally - -- [#11858](https://github.com/withastro/astro/pull/11858) [`8bab233`](https://github.com/withastro/astro/commit/8bab2339374763d19dbc4cc2c7ce4ad8a2a49694) Thanks [@ascorbic](https://github.com/ascorbic)! - Correctly resolves content layer images when filePath is not set - -## 4.14.6 - -### Patch Changes - -- [#11847](https://github.com/withastro/astro/pull/11847) [`45b599c`](https://github.com/withastro/astro/commit/45b599c4d40ded6a3e03881181b441ae494cbfcf) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a case where Vite would be imported by the SSR runtime, causing bundling errors and bloat. - -- [#11822](https://github.com/withastro/astro/pull/11822) [`6fcaab8`](https://github.com/withastro/astro/commit/6fcaab84de1044ff4d186b2dfa5831964460062d) Thanks [@bluwy](https://github.com/bluwy)! - Marks internal `vite-plugin-fileurl` plugin with `enforce: 'pre'` - -- [#11713](https://github.com/withastro/astro/pull/11713) [`497324c`](https://github.com/withastro/astro/commit/497324c4e87538dc1dc13aea3ced9bd3642d9ba6) Thanks [@voidfill](https://github.com/voidfill)! - Prevents prefetching of the same urls with different hashes. - -- [#11814](https://github.com/withastro/astro/pull/11814) [`2bb72c6`](https://github.com/withastro/astro/commit/2bb72c63969f8f21dd279fa927c32f192ff79a3f) Thanks [@eduardocereto](https://github.com/eduardocereto)! - Updates the documentation for experimental Content Layer API with a corrected code example - -- [#11842](https://github.com/withastro/astro/pull/11842) [`1ffaae0`](https://github.com/withastro/astro/commit/1ffaae04cf790390f730bf900b9722b99642adc1) Thanks [@stephan281094](https://github.com/stephan281094)! - Fixes a typo in the `MissingImageDimension` error message - -- [#11828](https://github.com/withastro/astro/pull/11828) [`20d47aa`](https://github.com/withastro/astro/commit/20d47aa85a3a0d7ac3390f749715d92de830cf3e) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Improves error message when invalid data is returned by an Action. - -## 4.14.5 - -### Patch Changes - -- [#11809](https://github.com/withastro/astro/pull/11809) [`62e97a2`](https://github.com/withastro/astro/commit/62e97a20f72bacb017c633ddcb776abc89167660) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes usage of `.transform()`, `.refine()`, `.passthrough()`, and other effects on Action form inputs. - -- [#11812](https://github.com/withastro/astro/pull/11812) [`260c4be`](https://github.com/withastro/astro/commit/260c4be050f91353bc5ba6af073e7bc17429d552) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Exposes `ActionAPIContext` type from the `astro:actions` module. - -- [#11813](https://github.com/withastro/astro/pull/11813) [`3f7630a`](https://github.com/withastro/astro/commit/3f7630afd697809b1d4fbac6edd18153983c70ac) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected `undefined` value when calling an action from the client without a return value. - -## 4.14.4 - -### Patch Changes - -- [#11794](https://github.com/withastro/astro/pull/11794) [`3691a62`](https://github.com/withastro/astro/commit/3691a626fb67d617e5f8bd057443cd2ff6caa054) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected warning log when using Actions on "hybrid" rendered projects. - -- [#11801](https://github.com/withastro/astro/pull/11801) [`9f943c1`](https://github.com/withastro/astro/commit/9f943c1344671b569a0d1ddba683b3cca0068adc) Thanks [@delucis](https://github.com/delucis)! - Fixes a bug where the `filePath` property was not available on content collection entries when using the content layer `file()` loader with a JSON file that contained an object instead of an array. This was breaking use of the `image()` schema utility among other things. - -## 4.14.3 - -### Patch Changes - -- [#11780](https://github.com/withastro/astro/pull/11780) [`c6622ad`](https://github.com/withastro/astro/commit/c6622adaeb405e961b12c91f0e5d02c7333d01cf) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Deprecates the Squoosh image service, to be removed in Astro 5.0. We recommend migrating to the default Sharp service. - -- [#11790](https://github.com/withastro/astro/pull/11790) [`41c3fcb`](https://github.com/withastro/astro/commit/41c3fcb6189709450a67ea8f726071d5f3cdc80e) Thanks [@sarah11918](https://github.com/sarah11918)! - Updates the documentation for experimental `astro:env` with a corrected link to the RFC proposal - -- [#11773](https://github.com/withastro/astro/pull/11773) [`86a3391`](https://github.com/withastro/astro/commit/86a33915ff41b23ff6b35bcfb1805fefc0760ca7) Thanks [@ematipico](https://github.com/ematipico)! - Changes messages logged when using unsupported, deprecated, or experimental adapter features for clarity - -- [#11745](https://github.com/withastro/astro/pull/11745) [`89bab1e`](https://github.com/withastro/astro/commit/89bab1e70786123fbe933a9d7a1b80c9334dcc5f) Thanks [@bluwy](https://github.com/bluwy)! - Prints prerender dynamic value usage warning only if it's used - -- [#11774](https://github.com/withastro/astro/pull/11774) [`c6400ab`](https://github.com/withastro/astro/commit/c6400ab99c5e5f4477bc6ef7e801b7869b0aa9ab) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes the path returned by `injectTypes` - -- [#11730](https://github.com/withastro/astro/pull/11730) [`2df49a6`](https://github.com/withastro/astro/commit/2df49a6fb4f6d92fe45f7429430abe63defeacd6) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Simplifies path operations of `astro sync` - -- [#11771](https://github.com/withastro/astro/pull/11771) [`49650a4`](https://github.com/withastro/astro/commit/49650a45550af46c70c6cf3f848b7b529103a649) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes an error thrown by `astro sync` when an `astro:env` virtual module is imported inside the Content Collections config - -- [#11744](https://github.com/withastro/astro/pull/11744) [`b677429`](https://github.com/withastro/astro/commit/b67742961a384c10e5cd04cf5b02d0f014ea7362) Thanks [@bluwy](https://github.com/bluwy)! - Disables the WebSocket server when creating a Vite server for loading config files - -## 4.14.2 - -### Patch Changes - -- [#11733](https://github.com/withastro/astro/pull/11733) [`391324d`](https://github.com/withastro/astro/commit/391324df969db71d1c7ca25c2ed14c9eb6eea5ee) Thanks [@bluwy](https://github.com/bluwy)! - Reverts back to `yargs-parser` package for CLI argument parsing - -## 4.14.1 - -### Patch Changes - -- [#11725](https://github.com/withastro/astro/pull/11725) [`6c1560f`](https://github.com/withastro/astro/commit/6c1560fb0d19ce659bc9f9090f8050254d5c03f3) Thanks [@ascorbic](https://github.com/ascorbic)! - Prevents content layer importing node builtins in runtime - -- [#11692](https://github.com/withastro/astro/pull/11692) [`35af73a`](https://github.com/withastro/astro/commit/35af73aace97a7cc898b9aa5040db8bc2ac62687) Thanks [@matthewp](https://github.com/matthewp)! - Prevent errant HTML from crashing server islands - - When an HTML minifier strips away the server island comment, the script can't correctly know where the end of the fallback content is. This makes it so that it simply doesn't remove any DOM in that scenario. This means the fallback isn't removed, but it also doesn't crash the browser. - -- [#11727](https://github.com/withastro/astro/pull/11727) [`3c2f93b`](https://github.com/withastro/astro/commit/3c2f93b66c6b8e9d2ab58e2cbe941c14ffab89b5) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a type issue when using the Content Layer in dev - -## 4.14.0 - -### Minor Changes - -- [#11657](https://github.com/withastro/astro/pull/11657) [`a23c69d`](https://github.com/withastro/astro/commit/a23c69d0d0bed229bee52a32e61f135f9ebf9122) Thanks [@bluwy](https://github.com/bluwy)! - Deprecates the option for route-generating files to export a dynamic value for `prerender`. Only static values are now supported (e.g. `export const prerender = true` or `= false`). This allows for better treeshaking and bundling configuration in the future. - - Adds a new [`"astro:route:setup"` hook](https://docs.astro.build/en/reference/integrations-reference/#astroroutesetup) to the Integrations API to allow you to dynamically set options for a route at build or request time through an integration, such as enabling [on-demand server rendering](https://docs.astro.build/en/guides/server-side-rendering/#opting-in-to-pre-rendering-in-server-mode). - - To migrate from a dynamic export to the new hook, update or remove any dynamic `prerender` exports from individual routing files: - - ```diff - // src/pages/blog/[slug].astro - - export const prerender = import.meta.env.PRERENDER - ``` - - Instead, create an integration with the `"astro:route:setup"` hook and update the route's `prerender` option: - - ```js - // astro.config.mjs - import { defineConfig } from 'astro/config'; - import { loadEnv } from 'vite'; - - export default defineConfig({ - integrations: [setPrerender()], - }); - - function setPrerender() { - const { PRERENDER } = loadEnv(process.env.NODE_ENV, process.cwd(), ''); - - return { - name: 'set-prerender', - hooks: { - 'astro:route:setup': ({ route }) => { - if (route.component.endsWith('/blog/[slug].astro')) { - route.prerender = PRERENDER; - } - }, - }, - }; - } - ``` - -- [#11360](https://github.com/withastro/astro/pull/11360) [`a79a8b0`](https://github.com/withastro/astro/commit/a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds a new [`injectTypes()` utility](https://docs.astro.build/en/reference/integrations-reference/#injecttypes-options) to the Integration API and refactors how type generation works - - Use `injectTypes()` in the `astro:config:done` hook to inject types into your user's project by adding a new a `*.d.ts` file. - - The `filename` property will be used to generate a file at `/.astro/integrations//.d.ts` and must end with `".d.ts"`. - - The `content` property will create the body of the file, and must be valid TypeScript. - - Additionally, `injectTypes()` returns a URL to the normalized path so you can overwrite its content later on, or manipulate it in any way you want. - - ```js - // my-integration/index.js - export default { - name: 'my-integration', - 'astro:config:done': ({ injectTypes }) => { - injectTypes({ - filename: 'types.d.ts', - content: "declare module 'virtual:my-integration' {}", - }); - }, - }; - ``` - - Codegen has been refactored. Although `src/env.d.ts` will continue to work as is, we recommend you update it: - - ```diff - - /// - + /// - - /// - - /// - ``` - -- [#11605](https://github.com/withastro/astro/pull/11605) [`d3d99fb`](https://github.com/withastro/astro/commit/d3d99fba269da9e812e748539a11dfed785ef8a4) Thanks [@jcayzac](https://github.com/jcayzac)! - Adds a new property `meta` to Astro's [built-in `` component](https://docs.astro.build/en/reference/api-reference/#code-). - - This allows you to provide a value for [Shiki's `meta` attribute](https://shiki.style/guide/transformers#meta) to pass options to transformers. - - The following example passes an option to highlight lines 1 and 3 to Shiki's `transformerMetaHighlight`: - - ```astro - --- - // src/components/Card.astro - import { Code } from 'astro:components'; - import { transformerMetaHighlight } from '@shikijs/transformers'; - --- - - - ``` - -- [#11360](https://github.com/withastro/astro/pull/11360) [`a79a8b0`](https://github.com/withastro/astro/commit/a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds support for Intellisense features (e.g. code completion, quick hints) for your content collection entries in compatible editors under the `experimental.contentIntellisense` flag. - - ```js - import { defineConfig } from 'astro'; - - export default defineConfig({ - experimental: { - contentIntellisense: true, - }, - }); - ``` - - When enabled, this feature will generate and add JSON schemas to the `.astro` directory in your project. These files can be used by the Astro language server to provide Intellisense inside content files (`.md`, `.mdx`, `.mdoc`). - - Note that at this time, this also require enabling the `astro.content-intellisense` option in your editor, or passing the `contentIntellisense: true` initialization parameter to the Astro language server for editors using it directly. - - See the [experimental content Intellisense docs](https://docs.astro.build/en/reference/configuration-reference/#experimentalcontentintellisense) for more information updates as this feature develops. - -- [#11360](https://github.com/withastro/astro/pull/11360) [`a79a8b0`](https://github.com/withastro/astro/commit/a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds experimental support for the Content Layer API. - - The new Content Layer API builds upon content collections, taking them beyond local files in `src/content/` and allowing you to fetch content from anywhere, including remote APIs. These new collections work alongside your existing content collections, and you can migrate them to the new API at your own pace. There are significant improvements to performance with large collections of local files. - - ### Getting started - - To try out the new Content Layer API, enable it in your Astro config: - - ```js - import { defineConfig } from 'astro'; - - export default defineConfig({ - experimental: { - contentLayer: true, - }, - }); - ``` - - You can then create collections in your `src/content/config.ts` using the Content Layer API. - - ### Loading your content - - The core of the new Content Layer API is the loader, a function that fetches content from a source and caches it in a local data store. Astro 4.14 ships with built-in `glob()` and `file()` loaders to handle your local Markdown, MDX, Markdoc, and JSON files: - - ```ts {3,7} - // src/content/config.ts - import { defineCollection, z } from 'astro:content'; - import { glob } from 'astro/loaders'; - - const blog = defineCollection({ - // The ID is a slug generated from the path of the file relative to `base` - loader: glob({ pattern: '**/*.md', base: './src/data/blog' }), - schema: z.object({ - title: z.string(), - description: z.string(), - publishDate: z.coerce.date(), - }), - }); - - export const collections = { blog }; - ``` - - You can then query using the existing content collections functions, and enjoy a simplified `render()` function to display your content: - - ```astro - --- - import { getEntry, render } from 'astro:content'; - - const post = await getEntry('blog', Astro.params.slug); - - const { Content } = await render(entry); - --- - - - ``` - - ### Creating a loader - - You're not restricted to the built-in loaders – we hope you'll try building your own. You can fetch content from anywhere and return an array of entries: - - ```ts - // src/content/config.ts - const countries = defineCollection({ - loader: async () => { - const response = await fetch('https://restcountries.com/v3.1/all'); - const data = await response.json(); - // Must return an array of entries with an id property, - // or an object with IDs as keys and entries as values - return data.map((country) => ({ - id: country.cca3, - ...country, - })); - }, - // optionally add a schema to validate the data and make it type-safe for users - // schema: z.object... - }); - - export const collections = { countries }; - ``` - - For more advanced loading logic, you can define an object loader. This allows incremental updates and conditional loading, and gives full access to the data store. It also allows a loader to define its own schema, including generating it dynamically based on the source API. See the [the Content Layer API RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md#loaders) for more details. - - ### Sharing your loaders - - Loaders are better when they're shared. You can create a package that exports a loader and publish it to npm, and then anyone can use it on their site. We're excited to see what the community comes up with! To get started, [take a look at some examples](https://github.com/ascorbic/astro-loaders/). Here's how to load content using an RSS/Atom feed loader: - - ```ts - // src/content/config.ts - import { defineCollection } from 'astro:content'; - import { feedLoader } from '@ascorbic/feed-loader'; - - const podcasts = defineCollection({ - loader: feedLoader({ - url: 'https://feeds.99percentinvisible.org/99percentinvisible', - }), - }); - - export const collections = { podcasts }; - ``` - - ### Learn more - - To find out more about using the Content Layer API, check out [the Content Layer RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md) and [share your feedback](https://github.com/withastro/roadmap/pull/982). - -### Patch Changes - -- [#11716](https://github.com/withastro/astro/pull/11716) [`f4057c1`](https://github.com/withastro/astro/commit/f4057c18c91f969e3e508545fb988aff94c3ff08) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes content types sync in dev - -- [#11645](https://github.com/withastro/astro/pull/11645) [`849e4c6`](https://github.com/withastro/astro/commit/849e4c6c23e61f7fa59f583419048b998bef2475) Thanks [@bluwy](https://github.com/bluwy)! - Refactors internally to use `node:util` `parseArgs` instead of `yargs-parser` - -- [#11712](https://github.com/withastro/astro/pull/11712) [`791d809`](https://github.com/withastro/astro/commit/791d809cbc22ed30dda1195ca026daa46a54b551) Thanks [@matthewp](https://github.com/matthewp)! - Fix mixed use of base + trailingSlash in Server Islands - -- [#11709](https://github.com/withastro/astro/pull/11709) [`3d8ae76`](https://github.com/withastro/astro/commit/3d8ae767fd4952af7332542b58fe98886eb2e99e) Thanks [@matthewp](https://github.com/matthewp)! - Fix adapter causing Netlify to break - -## 4.13.4 - -### Patch Changes - -- [#11678](https://github.com/withastro/astro/pull/11678) [`34da907`](https://github.com/withastro/astro/commit/34da907f3b4fb411024e6d28fdb291fa78116950) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where omitting a semicolon and line ending with carriage return - CRLF - in the `prerender` option could throw an error. - -- [#11535](https://github.com/withastro/astro/pull/11535) [`932bd2e`](https://github.com/withastro/astro/commit/932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b) Thanks [@matthewp](https://github.com/matthewp)! - Encrypt server island props - - Server island props are now encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. - - See the RFC for an explanation: https://github.com/withastro/roadmap/blob/server-islands/proposals/server-islands.md#props-serialization - -- [#11655](https://github.com/withastro/astro/pull/11655) [`dc0a297`](https://github.com/withastro/astro/commit/dc0a297e2a4bea3db8310cc98c51b2f94ede5fde) Thanks [@billy-le](https://github.com/billy-le)! - Fixes Astro Actions `input` validation when using `default` values with a form input. - -- [#11689](https://github.com/withastro/astro/pull/11689) [`c7bda4c`](https://github.com/withastro/astro/commit/c7bda4cd672864babc3cebd19a2dd2e1af85c087) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in the Astro actions, where the size of the generated cookie was exceeding the size permitted by the `Set-Cookie` header. - -## 4.13.3 - -### Patch Changes - -- [#11653](https://github.com/withastro/astro/pull/11653) [`32be549`](https://github.com/withastro/astro/commit/32be5494f6d33dbe32208704405162c95a64f0bc) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Updates `astro:env` docs to reflect current developments and usage guidance - -- [#11658](https://github.com/withastro/astro/pull/11658) [`13b912a`](https://github.com/withastro/astro/commit/13b912a8702afb96e2d0bc20dcc1b4135ae58147) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes `orThrow()` type when calling an Action without an `input` validator. - -- [#11603](https://github.com/withastro/astro/pull/11603) [`f31d466`](https://github.com/withastro/astro/commit/f31d4665c1cbb0918b9e00ba1431fb6f264025f7) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Improves user experience when render an Action result from a form POST request: - - Removes "Confirm post resubmission?" dialog when refreshing a result. - - Removes the `?_astroAction=NAME` flag when a result is rendered. - - Also improves the DX of directing to a new route on success. Actions will now redirect to the route specified in your `action` string on success, and redirect back to the previous page on error. This follows the routing convention of established backend frameworks like Laravel. - - For example, say you want to redirect to a `/success` route when `actions.signup` succeeds. You can add `/success` to your `action` string like so: - - ```astro -
- ``` - - - On success, Astro will redirect to `/success`. - - On error, Astro will redirect back to the current page. - - You can retrieve the action result from either page using the `Astro.getActionResult()` function. - - ### Note on security - - This uses a temporary cookie to forward the action result to the next page. The cookie will be deleted when that page is rendered. - - ⚠ **The action result is not encrypted.** In general, we recommend returning minimal data from an action handler to a) avoid leaking sensitive information, and b) avoid unexpected render issues once the temporary cookie is deleted. For example, a `login` function may return a user's session id to retrieve from your Astro frontmatter, rather than the entire user object. - -## 4.13.2 - -### Patch Changes - -- [#11648](https://github.com/withastro/astro/pull/11648) [`589d351`](https://github.com/withastro/astro/commit/589d35158da1a2136387d0ad76609f5c8535c03a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes unexpected error when refreshing a POST request from a form using Actions. - -- [#11600](https://github.com/withastro/astro/pull/11600) [`09ec2ca`](https://github.com/withastro/astro/commit/09ec2cadce01a9a1f9c54ac433f137348907aa56) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Deprecates `getEntryBySlug` and `getDataEntryById` functions exported by `astro:content` in favor of `getEntry`. - -- [#11593](https://github.com/withastro/astro/pull/11593) [`81d7150`](https://github.com/withastro/astro/commit/81d7150e02472430eab555dfc4f053738bf99bb6) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds support for `Date()`, `Map()`, and `Set()` from action results. See [devalue](https://github.com/Rich-Harris/devalue) for a complete list of supported values. - - Also fixes serialization exceptions when deploying Actions with edge middleware on Netlify and Vercel. - -- [#11617](https://github.com/withastro/astro/pull/11617) [`196092a`](https://github.com/withastro/astro/commit/196092ae69eb1249206846ddfc162049b03f42b4) Thanks [@abubakriz](https://github.com/abubakriz)! - Fix toolbar audit incorrectly flagging images as above the fold. - -- [#11634](https://github.com/withastro/astro/pull/11634) [`2716f52`](https://github.com/withastro/astro/commit/2716f52aae7194439ebb2336849ddd9e8226658a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes internal server error when calling an Astro Action without arguments on Vercel. - -- [#11628](https://github.com/withastro/astro/pull/11628) [`9aaf58c`](https://github.com/withastro/astro/commit/9aaf58c1339b54f2c1394e718a0f6f609f0b6342) Thanks [@madbook](https://github.com/madbook)! - Ensures consistent CSS chunk hashes across different environments - -## 4.13.1 - -### Patch Changes - -- [#11584](https://github.com/withastro/astro/pull/11584) [`a65ffe3`](https://github.com/withastro/astro/commit/a65ffe314b112213421def26c7cc5b7e7b93558c) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Removes async local storage dependency from Astro Actions. This allows Actions to run in Cloudflare and Stackblitz without opt-in flags or other configuration. - - This also introduces a new convention for calling actions from server code. Instead of calling actions directly, you must wrap function calls with the new `Astro.callAction()` utility. - - > `callAction()` is meant to _trigger_ an action from server code. `getActionResult()` usage with form submissions remains unchanged. - - ```astro - --- - import { actions } from 'astro:actions'; - - const result = await Astro.callAction(actions.searchPosts, { - searchTerm: Astro.url.searchParams.get('search'), - }); - --- - - { - result.data && - { - /* render the results */ - } - } - ``` - - ## Migration - - If you call actions directly from server code, update function calls to use the `Astro.callAction()` wrapper for pages and `context.callAction()` for endpoints: - - ```diff - --- - import { actions } from 'astro:actions'; - - - const result = await actions.searchPosts({ searchTerm: 'test' }); - + const result = await Astro.callAction(actions.searchPosts, { searchTerm: 'test' }); - --- - ``` - - If you deploy with Cloudflare and added [the `nodejs_compat` or `nodejs_als` flags](https://developers.cloudflare.com/workers/runtime-apis/nodejs) for Actions, we recommend removing these: - - ```diff - compatibility_flags = [ - - "nodejs_compat", - - "nodejs_als" - ] - ``` - - You can also remove `node:async_hooks` from the `vite.ssr.external` option in your `astro.config` file: - - ```diff - // astro.config.mjs - import { defineConfig } from 'astro/config'; - - export default defineConfig({ - - vite: { - - ssr: { - - external: ["node:async_hooks"] - - } - - } - }) - ``` - -## 4.13.0 - -### Minor Changes - -- [#11507](https://github.com/withastro/astro/pull/11507) [`a62345f`](https://github.com/withastro/astro/commit/a62345fd182ae4886d586c8406ed8f3e5f942730) Thanks [@ematipico](https://github.com/ematipico)! - Adds color-coding to the console output during the build to highlight slow pages. - - Pages that take more than 500 milliseconds to render will have their build time logged in red. This change can help you discover pages of your site that are not performant and may need attention. - -- [#11379](https://github.com/withastro/astro/pull/11379) [`e5e2d3e`](https://github.com/withastro/astro/commit/e5e2d3ed3076f10b4645f011b13888d5fa16e92e) Thanks [@alexanderniebuhr](https://github.com/alexanderniebuhr)! - The `experimental.contentCollectionJsonSchema` feature introduced behind a flag in [v4.5.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#450) is no longer experimental and is available for general use. - - If you are working with collections of type `data`, Astro will now auto-generate JSON schema files for your editor to get IntelliSense and type-checking. A separate file will be created for each data collection in your project based on your collections defined in `src/content/config.ts` using a library called [`zod-to-json-schema`](https://github.com/StefanTerdell/zod-to-json-schema). - - This feature requires you to manually set your schema's file path as the value for `$schema` in each data entry file of the collection: - - ```json title="src/content/authors/armand.json" ins={2} - { - "$schema": "../../../.astro/collections/authors.schema.json", - "name": "Armand", - "skills": ["Astro", "Starlight"] - } - ``` - - Alternatively, you can set this value in your editor settings. For example, to set this value in [VSCode's `json.schemas` setting](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings), provide the path of files to match and the location of your JSON schema: - - ```json - { - "json.schemas": [ - { - "fileMatch": ["/src/content/authors/**"], - "url": "./.astro/collections/authors.schema.json" - } - ] - } - ``` - - If you were previously using this feature, please remove the experimental flag from your Astro config: - - ```diff - import { defineConfig } from 'astro' - - export default defineConfig({ - - experimental: { - - contentCollectionJsonSchema: true - - } - }) - ``` - - If you have been waiting for stabilization before using JSON Schema generation for content collections, you can now do so. - - Please see [the content collections guide](https://docs.astro.build/en/guides/content-collections/#enabling-json-schema-generation) for more about this feature. - -- [#11542](https://github.com/withastro/astro/pull/11542) [`45ad326`](https://github.com/withastro/astro/commit/45ad326932971b44630a32d9092c9505f24f42f8) Thanks [@ematipico](https://github.com/ematipico)! - The `experimental.rewriting` feature introduced behind a flag in [v4.8.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#480) is no longer experimental and is available for general use. - - `Astro.rewrite()` and `context.rewrite()` allow you to render a different page without changing the URL in the browser. Unlike using a redirect, your visitor is kept on the original page they visited. - - Rewrites can be useful for showing the same content at multiple paths (e.g. /products/shoes/men/ and /products/men/shoes/) without needing to maintain two identical source files. - - Rewrites are supported in Astro pages, endpoints, and middleware. - - Return `Astro.rewrite()` in the frontmatter of a `.astro` page component to display a different page's content, such as fallback localized content: - - ```astro - --- - // src/pages/es-cu/articles/introduction.astro - return Astro.rewrite('/es/articles/introduction'); - --- - ``` - - Use `context.rewrite()` in endpoints, for example to reroute to a different page: - - ```js - // src/pages/api.js - export function GET(context) { - if (!context.locals.allowed) { - return context.rewrite('/'); - } - } - ``` - - The middleware `next()` function now accepts a parameter with the same type as the `rewrite()` function. For example, with `next("/")`, you can call the next middleware function with a new `Request`. - - ```js - // src/middleware.js - export function onRequest(context, next) { - if (!context.cookies.get('allowed')) { - return next('/'); // new signature - } - return next(); - } - ``` - - If you were previously using this feature, please remove the experimental flag from your Astro config: - - ```diff - // astro.config.mjs - export default defineConfig({ - - experimental: { - - rewriting: true - - } - }) - ``` - - If you have been waiting for stabilization before using rewrites in Astro, you can now do so. - - Please see [the routing guide in docs](https://docs.astro.build/en/guides/routing/#rewrites) for more about using this feature. - -## 4.12.3 - -### Patch Changes - -- [#11509](https://github.com/withastro/astro/pull/11509) [`dfbca06`](https://github.com/withastro/astro/commit/dfbca06dda674c64c7010db2f4de951496a1e631) Thanks [@bluwy](https://github.com/bluwy)! - Excludes hoisted scripts and styles from Astro components imported with `?url` or `?raw` - -- [#11561](https://github.com/withastro/astro/pull/11561) [`904f1e5`](https://github.com/withastro/astro/commit/904f1e535aeb7a14ba7ce07c3130e25f3e708266) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Uses the correct pageSize default in `page.size` JSDoc comment - -- [#11571](https://github.com/withastro/astro/pull/11571) [`1c3265a`](https://github.com/withastro/astro/commit/1c3265a8c9c0b1b1bd597f756b63463146bacc3a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - **BREAKING CHANGE to the experimental Actions API only.** Install the latest `@astrojs/react` integration as well if you're using React 19 features. - - Make `.safe()` the default return value for actions. This means `{ data, error }` will be returned when calling an action directly. If you prefer to get the data while allowing errors to throw, chain the `.orThrow()` modifier. - - ```ts - import { actions } from 'astro:actions'; - - // Before - const { data, error } = await actions.like.safe(); - // After - const { data, error } = await actions.like(); - - // Before - const newLikes = await actions.like(); - // After - const newLikes = await actions.like.orThrow(); - ``` - - ## Migration - - To migrate your existing action calls: - - Remove `.safe` from existing _safe_ action calls - - Add `.orThrow` to existing _unsafe_ action calls - -- [#11546](https://github.com/withastro/astro/pull/11546) [`7f26de9`](https://github.com/withastro/astro/commit/7f26de906e87f1e8973a1f84399f23e36e506bb3) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Remove "SSR Only" mention in `Astro.redirect` inline documentation and update reference link. - -- [#11525](https://github.com/withastro/astro/pull/11525) [`8068131`](https://github.com/withastro/astro/commit/80681318c6cb0f612fcb5188933fdd20a8f474a3) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where the build was failing when `experimental.actions` was enabled, an adapter was in use, and there were not actions inside the user code base. - -- [#11574](https://github.com/withastro/astro/pull/11574) [`e3f29d4`](https://github.com/withastro/astro/commit/e3f29d416a2e0a0b5328ae1075b12575260dddfd) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes line with the error not being properly highlighted in the error overlay - -- [#11570](https://github.com/withastro/astro/pull/11570) [`84189b6`](https://github.com/withastro/astro/commit/84189b6511dc2a14bcfe608696f56a64c2046f39) Thanks [@bholmesdev](https://github.com/bholmesdev)! - **BREAKING CHANGE to the experimental Actions API only.** Install the latest `@astrojs/react` integration as well if you're using React 19 features. - - Updates the Astro Actions fallback to support `action={actions.name}` instead of using `getActionProps().` This will submit a form to the server in zero-JS scenarios using a search parameter: - - ```astro - --- - import { actions } from 'astro:actions'; - --- - -
- - -
- ``` - - You may also construct form action URLs using string concatenation, or by using the `URL()` constructor, with the an action's `.queryString` property: - - ```astro - --- - import { actions } from 'astro:actions'; - - const confirmationUrl = new URL('/confirmation', Astro.url); - confirmationUrl.search = actions.queryString; - --- - -
- -
- ``` - - ## Migration - - `getActionProps()` is now deprecated. To use the new fallback pattern, remove the `getActionProps()` input from your form and pass your action function to the form `action` attribute: - - ```diff - --- - import { - actions, - - getActionProps, - } from 'astro:actions'; - --- - - +
- - - - - -
- ``` - -- [#11559](https://github.com/withastro/astro/pull/11559) [`1953dbb`](https://github.com/withastro/astro/commit/1953dbbd41d2d7803837601a9e192654f02275ef) Thanks [@bryanwood](https://github.com/bryanwood)! - Allows actions to return falsy values without an error - -- [#11553](https://github.com/withastro/astro/pull/11553) [`02c85b5`](https://github.com/withastro/astro/commit/02c85b541241a07db45bf9e15717e111104898e5) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in content collection caching, where two documents with the same contents were generating an error during the build. - -- [#11548](https://github.com/withastro/astro/pull/11548) [`602c5bf`](https://github.com/withastro/astro/commit/602c5bf05de4fe5ec1ea97f8e10455485aceb05f) Thanks [@TheOtterlord](https://github.com/TheOtterlord)! - Fixes `astro add` for packages with only prerelease versions - -- [#11566](https://github.com/withastro/astro/pull/11566) [`0dcef3a`](https://github.com/withastro/astro/commit/0dcef3ab171bd7f81c2f99e9366db3724aa7091b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes DomException errors not being handled properly - -- [#11529](https://github.com/withastro/astro/pull/11529) [`504c383`](https://github.com/withastro/astro/commit/504c383e20dfb5d8eb0825a70935f221b43577b2) Thanks [@matthewp](https://github.com/matthewp)! - Fix server islands with trailingSlash: always - -## 4.12.2 - -### Patch Changes - -- [#11505](https://github.com/withastro/astro/pull/11505) [`8ff7658`](https://github.com/withastro/astro/commit/8ff7658001c2c7bedf6adcddf7a9341196f2d376) Thanks [@ematipico](https://github.com/ematipico)! - Enhances the dev server logging when rewrites occur during the lifecycle or rendering. - - The dev server will log the status code **before** and **after** a rewrite: - - ```shell - 08:16:48 [404] (rewrite) /foo/about 200ms - 08:22:13 [200] (rewrite) /about 23ms - ``` - -- [#11506](https://github.com/withastro/astro/pull/11506) [`026e8ba`](https://github.com/withastro/astro/commit/026e8baf3323e99f96530999fd32a0a9b305854d) Thanks [@sarah11918](https://github.com/sarah11918)! - Fixes typo in documenting the `slot="fallback"` attribute for Server Islands experimental feature. - -- [#11508](https://github.com/withastro/astro/pull/11508) [`ca335e1`](https://github.com/withastro/astro/commit/ca335e1dc09bc83d3f8f5b9dd54f116bcb4881e4) Thanks [@cramforce](https://github.com/cramforce)! - Escapes HTML in serialized props - -- [#11501](https://github.com/withastro/astro/pull/11501) [`4db78ae`](https://github.com/withastro/astro/commit/4db78ae046a39628dfe8d68e776706559d4f8ba7) Thanks [@martrapp](https://github.com/martrapp)! - Adds the missing export for accessing the `getFallback()` function of the client site router. - -## 4.12.1 - -### Patch Changes - -- [#11486](https://github.com/withastro/astro/pull/11486) [`9c0c849`](https://github.com/withastro/astro/commit/9c0c8492d987cd9214ed53e71fb29599c206966a) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new function called `addClientRenderer` to the Container API. - - This function should be used when rendering components using the `client:*` directives. The `addClientRenderer` API must be used - _after_ the use of the `addServerRenderer`: - - ```js - const container = await experimental_AstroContainer.create(); - container.addServerRenderer({ renderer }); - container.addClientRenderer({ name: '@astrojs/react', entrypoint: '@astrojs/react/client.js' }); - const response = await container.renderToResponse(Component); - ``` - -- [#11500](https://github.com/withastro/astro/pull/11500) [`4e142d3`](https://github.com/withastro/astro/commit/4e142d38cbaf0938be7077c88e32b38a6b60eaed) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes inferRemoteSize type not working - -- [#11496](https://github.com/withastro/astro/pull/11496) [`53ccd20`](https://github.com/withastro/astro/commit/53ccd206f9bfe5f6a0d888d199776b4043f63f58) Thanks [@alfawal](https://github.com/alfawal)! - Hide the dev toolbar on `window.print()` (CTRL + P) - -## 4.12.0 - -### Minor Changes - -- [#11341](https://github.com/withastro/astro/pull/11341) [`49b5145`](https://github.com/withastro/astro/commit/49b5145158a603b9bb951bf914a6a9780c218704) Thanks [@madcampos](https://github.com/madcampos)! - Adds support for [Shiki's `defaultColor` option](https://shiki.style/guide/dual-themes#without-default-color). - - This option allows you to override the values of a theme's inline style, adding only CSS variables to give you more flexibility in applying multiple color themes. - - Configure `defaultColor: false` in your Shiki config to apply throughout your site, or pass to Astro's built-in `` component to style an individual code block. - - ```js title="astro.config.mjs" - import { defineConfig } from 'astro/config'; - export default defineConfig({ - markdown: { - shikiConfig: { - themes: { - light: 'github-light', - dark: 'github-dark', - }, - defaultColor: false, - }, - }, - }); - ``` - - ```astro - --- - import { Code } from 'astro:components'; - --- - - - ``` - -- [#11304](https://github.com/withastro/astro/pull/11304) [`2e70741`](https://github.com/withastro/astro/commit/2e70741362afc1e7d03c8b2a9d8edb8466dfe9c3) Thanks [@Fryuni](https://github.com/Fryuni)! - Refactors the type for integration hooks so that integration authors writing custom integration hooks can now allow runtime interactions between their integration and other integrations. - - This internal change should not break existing code for integration authors. - - To declare your own hooks for your integration, extend the `Astro.IntegrationHooks` interface: - - ```ts - // your-integration/types.ts - declare global { - namespace Astro { - interface IntegrationHooks { - 'myLib:eventHappened': (your: string, parameters: number) => Promise; - } - } - } - ``` - - Call your hooks on all other integrations installed in a project at the appropriate time. For example, you can call your hook on initialization before either the Vite or Astro config have resolved: - - ```ts - // your-integration/index.ts - import './types.ts'; - - export default (): AstroIntegration => { - return { - name: 'your-integration', - hooks: { - 'astro:config:setup': async ({ config }) => { - for (const integration of config.integrations) { - await integration.hooks['myLib:eventHappened'].?('your values', 123); - } - }, - } - } - } - ``` - - Other integrations can also now declare your hooks: - - ```ts - // other-integration/index.ts - import 'your-integration/types.ts'; - - export default (): AstroIntegration => { - return { - name: 'other-integration', - hooks: { - 'myLib:eventHappened': async (your, values) => { - // ... - }, - }, - }; - }; - ``` - -- [#11305](https://github.com/withastro/astro/pull/11305) [`d495df5`](https://github.com/withastro/astro/commit/d495df5361e16ebdf83dea6e2de004f438e698c4) Thanks [@matthewp](https://github.com/matthewp)! - Experimental Server Islands - - Server Islands allow you to specify components that should run on the server, allowing the rest of the page to be more aggressively cached, or even generated statically. Turn any `.astro` component into a server island by adding the `server:defer` directive and optionally, fallback placeholder content: - - ```astro - --- - import Avatar from '../components/Avatar.astro'; - import GenericUser from '../components/GenericUser.astro'; - --- - -
-

Page Title

-
- - - -
-
- ``` - - The `server:defer` directive can be used on any Astro component in a project using `hybrid` or `server` mode with an adapter. There are no special APIs needed inside of the island. - - Enable server islands by adding the experimental flag to your Astro config with an appropriate `output` mode and adapter: - - ```js - import { defineConfig } from 'astro/config'; - import netlify from '@astrojs/netlify'; - - export default defineConfig({ - output: 'hybrid', - adapter: netlify(), - experimental: { - serverIslands: true, - }, - }); - ``` - - For more information, see the [server islands documentation](https://docs.astro.build/en/reference/configuration-reference/#experimentalserverislands). - -- [#11482](https://github.com/withastro/astro/pull/11482) [`7c9ed71`](https://github.com/withastro/astro/commit/7c9ed71bf1e13a0c825ba67946b6307d06f77233) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a `--noSync` parameter to the `astro check` command to skip the type-gen step. This can be useful when running `astro check` inside packages that have Astro components, but are not Astro projects - -- [#11098](https://github.com/withastro/astro/pull/11098) [`36e30a3`](https://github.com/withastro/astro/commit/36e30a33092c32c2de1deac316f49660247902b0) Thanks [@itsmatteomanf](https://github.com/itsmatteomanf)! - Adds a new `inferRemoteSize()` function that can be used to infer the dimensions of a remote image. - - Previously, the ability to infer these values was only available by adding the [`inferSize`] attribute to the `` and `` components or `getImage()`. Now, you can also access this data outside of these components. - - This is useful for when you need to know the dimensions of an image for styling purposes or to calculate different densities for responsive images. - - ```astro - --- - import { inferRemoteSize, Image } from 'astro:assets'; - - const imageUrl = 'https://...'; - const { width, height } = await inferRemoteSize(imageUrl); - --- - - - ``` - -- [#11391](https://github.com/withastro/astro/pull/11391) [`6f9b527`](https://github.com/withastro/astro/commit/6f9b52710567f3bec7939a98eb8c76f5ea0b2f91) Thanks [@ARipeAppleByYoursTruly](https://github.com/ARipeAppleByYoursTruly)! - Adds Shiki's [`defaultColor`](https://shiki.style/guide/dual-themes#without-default-color) option to the `` component, giving you more control in applying multiple themes - -- [#11176](https://github.com/withastro/astro/pull/11176) [`a751458`](https://github.com/withastro/astro/commit/a75145871b7bb9277584066e1f625df2aaabebce) Thanks [@tsawada](https://github.com/tsawada)! - Adds two new values to the [pagination `page` prop](https://docs.astro.build/en/reference/api-reference/#the-pagination-page-prop): `page.first` and `page.last` for accessing the URLs of the first and last pages. - -### Patch Changes - -- [#11477](https://github.com/withastro/astro/pull/11477) [`7e9c4a1`](https://github.com/withastro/astro/commit/7e9c4a134c6ea7c8b92ea00038c0845b58c02bc5) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the development server was emitting a 404 status code when the user uses a rewrite that emits a 200 status code. - -- [#11479](https://github.com/withastro/astro/pull/11479) [`ca969d5`](https://github.com/withastro/astro/commit/ca969d538a6a8d64573f426b8a87ebd7e434bd71) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where invalid `astro:env` variables at runtime would not throw correctly - -- [#11489](https://github.com/withastro/astro/pull/11489) [`061f1f4`](https://github.com/withastro/astro/commit/061f1f4d0cb306efd0c768645439111aec765c76) Thanks [@ematipico](https://github.com/ematipico)! - Move root inside the manifest and make serialisable - -- [#11415](https://github.com/withastro/astro/pull/11415) [`e9334d0`](https://github.com/withastro/astro/commit/e9334d05ca88ed6df1becc1512c673e20414bf47) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Refactors how `sync` works and when it's called. Fixes an issue with `astro:env` types in dev not being generated - -- [#11478](https://github.com/withastro/astro/pull/11478) [`3161b67`](https://github.com/withastro/astro/commit/3161b6789c57a3bb740ed117205dc55997eb74ea) Thanks [@bluwy](https://github.com/bluwy)! - Supports importing Astro components with Vite queries, like `?url`, `?raw`, and `?direct` - -- [#11491](https://github.com/withastro/astro/pull/11491) [`fe3afeb`](https://github.com/withastro/astro/commit/fe3afebd652289ec1b65eed983e804dbb37ed092) Thanks [@matthewp](https://github.com/matthewp)! - Fix for Server Islands in Vercel adapter - - Vercel, and probably other adapters only allow pre-defined routes. This makes it so that the `astro:build:done` hook includes the `_server-islands/` route as part of the route data, which is used to configure available routes. - -- [#11483](https://github.com/withastro/astro/pull/11483) [`34f9c25`](https://github.com/withastro/astro/commit/34f9c25740f8eaae0d5e2a2b685b83556d23e63e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes Astro not working on low versions of Node 18 and 20 - -- Updated dependencies [[`49b5145`](https://github.com/withastro/astro/commit/49b5145158a603b9bb951bf914a6a9780c218704)]: - - @astrojs/markdown-remark@5.2.0 - -## 4.11.6 - -### Patch Changes - -- [#11459](https://github.com/withastro/astro/pull/11459) [`bc2e74d`](https://github.com/withastro/astro/commit/bc2e74de384776caa252fd47dbeda895c0488c11) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes false positive audit warnings on elements with the role "tabpanel". - -- [#11472](https://github.com/withastro/astro/pull/11472) [`cb4e6d0`](https://github.com/withastro/astro/commit/cb4e6d09deb7507058115a3fd2a567019a501e4d) Thanks [@delucis](https://github.com/delucis)! - Avoids targeting all files in the `src/` directory for eager optimization by Vite. After this change, only JSX, Vue, Svelte, and Astro components get scanned for early optimization. - -- [#11387](https://github.com/withastro/astro/pull/11387) [`b498461`](https://github.com/withastro/astro/commit/b498461e277bffb0abe21b59a94b1e56a8c69d47) Thanks [@bluwy](https://github.com/bluwy)! - Fixes prerendering not removing unused dynamic imported chunks - -- [#11437](https://github.com/withastro/astro/pull/11437) [`6ccb30e`](https://github.com/withastro/astro/commit/6ccb30e610eed34c2cc2c275485a8ac45c9b6b9e) Thanks [@NuroDev](https://github.com/NuroDev)! - Fixes a case where Astro's config `experimental.env.schema` keys did not allow numbers. Numbers are still not allowed as the first character to be able to generate valid JavaScript identifiers - -- [#11439](https://github.com/withastro/astro/pull/11439) [`08baf56`](https://github.com/withastro/astro/commit/08baf56f328ce4b6814a7f90089c0b3398d8bbfe) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Expands the `isInputError()` utility from `astro:actions` to accept errors of any type. This should now allow type narrowing from a try / catch block. - - ```ts - // example.ts - import { actions, isInputError } from 'astro:actions'; - - try { - await actions.like(new FormData()); - } catch (error) { - if (isInputError(error)) { - console.log(error.fields); - } - } - ``` - -- [#11452](https://github.com/withastro/astro/pull/11452) [`0e66849`](https://github.com/withastro/astro/commit/0e6684983b9b24660a8fef83fe401ec1d567378a) Thanks [@FugiTech](https://github.com/FugiTech)! - Fixes an issue where using .nullish() in a formdata Astro action would always parse as a string - -- [#11438](https://github.com/withastro/astro/pull/11438) [`619f07d`](https://github.com/withastro/astro/commit/619f07db701ebab2d2f2598dd2dcf93ba1e5719c) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Exposes utility types from `astro:actions` for the `defineAction` handler (`ActionHandler`) and the `ActionError` code (`ActionErrorCode`). - -- [#11456](https://github.com/withastro/astro/pull/11456) [`17e048d`](https://github.com/withastro/astro/commit/17e048de0e79d76b933d128676be2388954b419e) Thanks [@RickyC0626](https://github.com/RickyC0626)! - Fixes `astro dev --open` unexpected behavior that spawns a new tab every time a config file is saved - -- [#11337](https://github.com/withastro/astro/pull/11337) [`0a4b31f`](https://github.com/withastro/astro/commit/0a4b31ffeb41ad1dfb3141384e22787763fcae3d) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds a new property `experimental.env.validateSecrets` to allow validating private variables on the server. - - By default, this is set to `false` and only public variables are checked on start. If enabled, secrets will also be checked on start (dev/build modes). This is useful for example in some CIs to make sure all your secrets are correctly set before deploying. - - ```js - // astro.config.mjs - import { defineConfig, envField } from 'astro/config'; - - export default defineConfig({ - experimental: { - env: { - schema: { - // ... - }, - validateSecrets: true, - }, - }, - }); - ``` - -- [#11443](https://github.com/withastro/astro/pull/11443) [`ea4bc04`](https://github.com/withastro/astro/commit/ea4bc04e9489c456e2b4b5dbd67d5e4cf3f89f97) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Expose new `ActionReturnType` utility from `astro:actions`. This infers the return type of an action by passing `typeof actions.name` as a type argument. This example defines a `like` action that returns `likes` as an object: - - ```ts - // actions/index.ts - import { defineAction } from 'astro:actions'; - - export const server = { - like: defineAction({ - handler: () => { - /* ... */ - return { likes: 42 }; - }, - }), - }; - ``` - - In your client code, you can infer this handler return value with `ActionReturnType`: - - ```ts - // client.ts - import { actions, ActionReturnType } from 'astro:actions'; - - type LikesResult = ActionReturnType; - // -> { likes: number } - ``` - -- [#11436](https://github.com/withastro/astro/pull/11436) [`7dca68f`](https://github.com/withastro/astro/commit/7dca68ff2e0f089a3fd090650ee05b1942792fed) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes `astro:actions` autocompletion for the `defineAction` `accept` property - -- [#11455](https://github.com/withastro/astro/pull/11455) [`645e128`](https://github.com/withastro/astro/commit/645e128537f1f20da6703afc115d06371d7da5dd) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Improves `astro:env` invalid variables errors - -## 4.11.5 - -### Patch Changes - -- [#11408](https://github.com/withastro/astro/pull/11408) [`b9e906f`](https://github.com/withastro/astro/commit/b9e906f8e75444739aa259b62489d9f5749260b9) Thanks [@matthewp](https://github.com/matthewp)! - Revert change to how boolean attributes work - -## 4.11.4 - -### Patch Changes - -- [#11362](https://github.com/withastro/astro/pull/11362) [`93993b7`](https://github.com/withastro/astro/commit/93993b77cf4915b4c0d245df9ecbf2265f5893e7) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where creating manually the i18n middleware could break the logic of the functions of the virtual module `astro:i18n` - -- [#11349](https://github.com/withastro/astro/pull/11349) [`98d9ce4`](https://github.com/withastro/astro/commit/98d9ce41f20c8bf024c937e8bde80d3c3dbbed99) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where Astro didn't throw an error when `Astro.rewrite` was used without providing the experimental flag - -- [#11352](https://github.com/withastro/astro/pull/11352) [`a55ee02`](https://github.com/withastro/astro/commit/a55ee0268e1ca22597e9b5e6d1f24b4f28ad978b) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the rewrites didn't update the status code when using manual i18n routing. - -- [#11388](https://github.com/withastro/astro/pull/11388) [`3a223b4`](https://github.com/withastro/astro/commit/3a223b4811708cc93ebb27706118c1723e1fc013) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Adjusts the color of punctuations in error overlay. - -- [#11369](https://github.com/withastro/astro/pull/11369) [`e6de11f`](https://github.com/withastro/astro/commit/e6de11f4a941e29123da3714e5b8f17d25744f0f) Thanks [@bluwy](https://github.com/bluwy)! - Fixes attribute rendering for non-boolean attributes with boolean values - -## 4.11.3 - -### Patch Changes - -- [#11347](https://github.com/withastro/astro/pull/11347) [`33bdc54`](https://github.com/withastro/astro/commit/33bdc5472929f72fa8e39624598bf929c48e60c0) Thanks [@bluwy](https://github.com/bluwy)! - Fixes installed packages detection when running `astro check` - -- [#11327](https://github.com/withastro/astro/pull/11327) [`0df8142`](https://github.com/withastro/astro/commit/0df81422a81c8f8900684d100e9b8f26365fa0b1) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue with the container APIs where a runtime error was thrown during the build, when using `pnpm` as package manager. - -## 4.11.2 - -### Patch Changes - -- [#11335](https://github.com/withastro/astro/pull/11335) [`4c4741b`](https://github.com/withastro/astro/commit/4c4741b42dc531403f7b9647bd51951d0cdb8f5b) Thanks [@ematipico](https://github.com/ematipico)! - Reverts [#11292](https://github.com/withastro/astro/pull/11292), which caused a regression to the input type - -- [#11326](https://github.com/withastro/astro/pull/11326) [`41121fb`](https://github.com/withastro/astro/commit/41121fbe00e144d4d93835811e1c4349664d9003) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where running `astro sync` when using the experimental `astro:env` feature would fail if environment variables were missing - -- [#11338](https://github.com/withastro/astro/pull/11338) [`9752a0b`](https://github.com/withastro/astro/commit/9752a0b27526270fd0066f3db7049e9ae6af1ef8) Thanks [@zaaakher](https://github.com/zaaakher)! - Fixes svg icon margin in devtool tooltip title to look coherent in `rtl` and `ltr` layouts - -- [#11331](https://github.com/withastro/astro/pull/11331) [`f1b78a4`](https://github.com/withastro/astro/commit/f1b78a496034d53b0e9dfc276a4a1b1d691772c4) Thanks [@bluwy](https://github.com/bluwy)! - Removes `resolve` package and simplify internal resolve check - -- [#11339](https://github.com/withastro/astro/pull/11339) [`8fdbf0e`](https://github.com/withastro/astro/commit/8fdbf0e45beffdae3da1e7f36797575c92f8a0ba) Thanks [@matthewp](https://github.com/matthewp)! - Remove non-fatal errors from telemetry - - Previously we tracked non-fatal errors in telemetry to get a good idea of the types of errors that occur in `astro dev`. However this has become noisy over time and results in a lot of data that isn't particularly useful. This removes those non-fatal errors from being tracked. - -## 4.11.1 - -### Patch Changes - -- [#11308](https://github.com/withastro/astro/pull/11308) [`44c61dd`](https://github.com/withastro/astro/commit/44c61ddfd85f1c23f8cec8caeaa5e25897121996) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where custom `404.astro` and `500.astro` were not returning the correct status code when rendered inside a rewriting cycle. - -- [#11302](https://github.com/withastro/astro/pull/11302) [`0622567`](https://github.com/withastro/astro/commit/06225673269201044358788f2a81dbe13912adce) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with the view transition router when redirecting to an URL with different origin. - -- Updated dependencies [[`b6afe6a`](https://github.com/withastro/astro/commit/b6afe6a782f68f4a279463a144baaf99cb96b6dc), [`41064ce`](https://github.com/withastro/astro/commit/41064cee78c1cccd428f710a24c483aeb275fd95)]: - - @astrojs/markdown-remark@5.1.1 - - @astrojs/internal-helpers@0.4.1 - -## 4.11.0 - -### Minor Changes - -- [#11197](https://github.com/withastro/astro/pull/11197) [`4b46bd9`](https://github.com/withastro/astro/commit/4b46bd9bdcbb302f294aa27b8aa07099e104fa17) Thanks [@braebo](https://github.com/braebo)! - Adds [`ShikiTransformer`](https://shiki.style/packages/transformers#shikijs-transformers) support to the [``](https://docs.astro.build/en/reference/api-reference/#code-) component with a new `transformers` prop. - - Note that `transformers` only applies classes and you must provide your own CSS rules to target the elements of your code block. - - ```astro - --- - import { transformerNotationFocus } from '@shikijs/transformers'; - import { Code } from 'astro:components'; - - const code = `const foo = 'hello' - const bar = ' world' - console.log(foo + bar) // [!code focus] - `; - --- - - - - - ``` - -- [#11134](https://github.com/withastro/astro/pull/11134) [`9042be0`](https://github.com/withastro/astro/commit/9042be049157ce859355f911565bc0c3d68f0aa1) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Improves the developer experience of the `500.astro` file by passing it a new `error` prop. - - When an error is thrown, the special `src/pages/500.astro` page now automatically receives the error as a prop. This allows you to display more specific information about the error on a custom 500 page. - - ```astro - --- - // src/pages/500.astro - interface Props { - error: unknown; - } - - const { error } = Astro.props; - --- - -
{error instanceof Error ? error.message : 'Unknown error'}
- ``` - - If an error occurs rendering this page, your host's default 500 error page will be shown to your visitor in production, and Astro's default error overlay will be shown in development. - -### Patch Changes - -- [#11280](https://github.com/withastro/astro/pull/11280) [`fd3645f`](https://github.com/withastro/astro/commit/fd3645fe8364ec5e280b6802d1468867890d463c) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a bug that prevented cookies from being set when using experimental rewrites - -- [#11275](https://github.com/withastro/astro/pull/11275) [`bab700d`](https://github.com/withastro/astro/commit/bab700d69085b1de8f03fc1b0b31651f709cbfe3) Thanks [@syhily](https://github.com/syhily)! - Drop duplicated brackets in data collections schema generation. - -- [#11272](https://github.com/withastro/astro/pull/11272) [`ea987d7`](https://github.com/withastro/astro/commit/ea987d7da589ead9aa4b550f167f5e2f6c939d2e) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where rewriting `/` would cause an issue, when `trailingSlash` was set to `"never"`. - -- [#11272](https://github.com/withastro/astro/pull/11272) [`ea987d7`](https://github.com/withastro/astro/commit/ea987d7da589ead9aa4b550f167f5e2f6c939d2e) Thanks [@ematipico](https://github.com/ematipico)! - Reverts a logic where it wasn't possible to rewrite `/404` in static mode. It's **now possible** again - -- [#11264](https://github.com/withastro/astro/pull/11264) [`5a9c9a6`](https://github.com/withastro/astro/commit/5a9c9a60e7c32aa461b86b5bc667cb955e23d4d9) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes type generation for empty content collections - -- [#11279](https://github.com/withastro/astro/pull/11279) [`9a08d74`](https://github.com/withastro/astro/commit/9a08d74bc00ae2c3bc254f99580a22ce4df1d002) Thanks [@ascorbic](https://github.com/ascorbic)! - Improves type-checking and error handling to catch case where an image import is passed directly to `getImage()` - -- [#11292](https://github.com/withastro/astro/pull/11292) [`7f8f347`](https://github.com/withastro/astro/commit/7f8f34799528ed0b2011e1ea273bd0636f6e767d) Thanks [@jdtjenkins](https://github.com/jdtjenkins)! - Fixes a case where `defineAction` autocomplete for the `accept` prop would not show `"form"` as a possible value - -- [#11273](https://github.com/withastro/astro/pull/11273) [`cb4d078`](https://github.com/withastro/astro/commit/cb4d07819f0dbdfd94bc4f084edf7720ada01323) Thanks [@ascorbic](https://github.com/ascorbic)! - Corrects an inconsistency in dev where middleware would run for prerendered 404 routes. - Middleware is not run for prerendered 404 routes in production, so this was incorrect. - -- [#11284](https://github.com/withastro/astro/pull/11284) [`f4b029b`](https://github.com/withastro/astro/commit/f4b029b08264268c68fc81ea25b264e81f47e683) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes an issue that would break `Astro.request.url` and `Astro.request.headers` in `astro dev` if HTTP/2 was enabled. - - HTTP/2 is now enabled by default in `astro dev` if `https` is configured in the Vite config. - -## 4.10.3 - -### Patch Changes - -- [#11213](https://github.com/withastro/astro/pull/11213) [`94ac7ef`](https://github.com/withastro/astro/commit/94ac7efd70fd264b10887805a02d5d1877af8701) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Removes the `PUBLIC_` prefix constraint for `astro:env` public variables - -- [#11213](https://github.com/withastro/astro/pull/11213) [`94ac7ef`](https://github.com/withastro/astro/commit/94ac7efd70fd264b10887805a02d5d1877af8701) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental `astro:env` feature only** - - Server secrets specified in the schema must now be imported from `astro:env/server`. Using `getSecret()` is no longer required to use these environment variables in your schema: - - ```diff - - import { getSecret } from 'astro:env/server' - - const API_SECRET = getSecret("API_SECRET") - + import { API_SECRET } from 'astro:env/server' - ``` - - Note that using `getSecret()` with these keys is still possible, but no longer involves any special handling and the raw value will be returned, just like retrieving secrets not specified in your schema. - -- [#11234](https://github.com/withastro/astro/pull/11234) [`4385bf7`](https://github.com/withastro/astro/commit/4385bf7a4dc9c65bff53a30c660f7a909fcabfc9) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new function called `addServerRenderer` to the Container API. Use this function to manually store renderers inside the instance of your container. - - This new function should be preferred when using the Container API in environments like on-demand pages: - - ```ts - import type { APIRoute } from 'astro'; - import { experimental_AstroContainer } from 'astro/container'; - import reactRenderer from '@astrojs/react/server.js'; - import vueRenderer from '@astrojs/vue/server.js'; - import ReactComponent from '../components/button.jsx'; - import VueComponent from '../components/button.vue'; - - // MDX runtime is contained inside the Astro core - import mdxRenderer from 'astro/jsx/server.js'; - - // In case you need to import a custom renderer - import customRenderer from '../renderers/customRenderer.js'; - - export const GET: APIRoute = async (ctx) => { - const container = await experimental_AstroContainer.create(); - container.addServerRenderer({ renderer: reactRenderer }); - container.addServerRenderer({ renderer: vueRenderer }); - container.addServerRenderer({ renderer: customRenderer }); - // You can pass a custom name too - container.addServerRenderer({ - name: 'customRenderer', - renderer: customRenderer, - }); - const vueComponent = await container.renderToString(VueComponent); - return await container.renderToResponse(Component); - }; - ``` - -- [#11249](https://github.com/withastro/astro/pull/11249) [`de60c69`](https://github.com/withastro/astro/commit/de60c69aa06c41f76a5510cc1d0bee4c8a5326a5) Thanks [@markgaze](https://github.com/markgaze)! - Fixes a performance issue with JSON schema generation - -- [#11242](https://github.com/withastro/astro/pull/11242) [`e4fc2a0`](https://github.com/withastro/astro/commit/e4fc2a0bafb4723566552d0c5954b25447890f51) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where the virtual module `astro:container` wasn't resolved - -- [#11236](https://github.com/withastro/astro/pull/11236) [`39bc3a5`](https://github.com/withastro/astro/commit/39bc3a5e8161232d6fdc6cc52b1f246083966d8e) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a case where symlinked content collection directories were not correctly resolved - -- [#11258](https://github.com/withastro/astro/pull/11258) [`d996db6`](https://github.com/withastro/astro/commit/d996db6f0bf361ebd84b23d022db7bb10fb316e6) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds a new error `RewriteWithBodyUsed` that throws when `Astro.rewrite` is used after the request body has already been read. - -- [#11243](https://github.com/withastro/astro/pull/11243) [`ba2b14c`](https://github.com/withastro/astro/commit/ba2b14cc28bd219c241313cdf142b736e7442014) Thanks [@V3RON](https://github.com/V3RON)! - Fixes a prerendering issue for libraries in `node_modules` when a folder with an underscore is in the path. - -- [#11244](https://github.com/withastro/astro/pull/11244) [`d07d2f7`](https://github.com/withastro/astro/commit/d07d2f7ac9d87af907beaca700ba4116dc1d6f37) Thanks [@ematipico](https://github.com/ematipico)! - Improves the developer experience of the custom `500.astro` page in development mode. - - Before, in development, an error thrown during the rendering phase would display the default error overlay, even when users had the `500.astro` page. - - Now, the development server will display the `500.astro` and the original error is logged in the console. - -- [#11240](https://github.com/withastro/astro/pull/11240) [`2851b0a`](https://github.com/withastro/astro/commit/2851b0aa2e2abe80ea603b53c67770e94980a8d3) Thanks [@ascorbic](https://github.com/ascorbic)! - Ignores query strings in module identifiers when matching ".astro" file extensions in Vite plugin - -- [#11245](https://github.com/withastro/astro/pull/11245) [`e22be22`](https://github.com/withastro/astro/commit/e22be22e5729e60220726e92b52d2833c937fd1c) Thanks [@bluwy](https://github.com/bluwy)! - Refactors prerendering chunk handling to correctly remove unused code during the SSR runtime - -## 4.10.2 - -### Patch Changes - -- [#11231](https://github.com/withastro/astro/pull/11231) [`58d7dbb`](https://github.com/withastro/astro/commit/58d7dbb5e0cabea1ac7a35af5b46685fce50d723) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression for `getViteConfig`, where the inline config wasn't merged in the final config. - -- [#11228](https://github.com/withastro/astro/pull/11228) [`1e293a1`](https://github.com/withastro/astro/commit/1e293a1b819024f16bfe482f272df0678cdd7874) Thanks [@ascorbic](https://github.com/ascorbic)! - Updates `getCollection()` to always return a cloned array - -- [#11207](https://github.com/withastro/astro/pull/11207) [`7d9aac3`](https://github.com/withastro/astro/commit/7d9aac376c4b8844917901f7f566f7259d7f66c8) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in the rewriting logic where old data was not purged during the rewrite flow. This caused some false positives when checking the validity of URL path names during the rendering phase. - -- [#11189](https://github.com/withastro/astro/pull/11189) [`75a8fe7`](https://github.com/withastro/astro/commit/75a8fe7e72b95f20c36f034de2b51b6a9550e27e) Thanks [@ematipico](https://github.com/ematipico)! - Improve error message when using `getLocaleByPath` on path that doesn't contain any locales. - -- [#11195](https://github.com/withastro/astro/pull/11195) [`0a6ab6f`](https://github.com/withastro/astro/commit/0a6ab6f562651b558ca90761feed5c07f54f2633) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds support for enums to `astro:env` - - You can now call `envField.enum`: - - ```js - import { defineConfig, envField } from 'astro/config'; - - export default defineConfig({ - experimental: { - env: { - schema: { - API_VERSION: envField.enum({ - context: 'server', - access: 'secret', - values: ['v1', 'v2'], - }), - }, - }, - }, - }); - ``` - -- [#11210](https://github.com/withastro/astro/pull/11210) [`66fc028`](https://github.com/withastro/astro/commit/66fc0283d3f1d1a4f17d7db65ca3521a01fb5bec) Thanks [@matthewp](https://github.com/matthewp)! - Close the iterator only after rendering is complete - -- [#11195](https://github.com/withastro/astro/pull/11195) [`0a6ab6f`](https://github.com/withastro/astro/commit/0a6ab6f562651b558ca90761feed5c07f54f2633) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds additional validation options to `astro:env` - - `astro:env` schema datatypes `string` and `number` now have new optional validation rules: - - ```js - import { defineConfig, envField } from 'astro/config'; - - export default defineConfig({ - experimental: { - env: { - schema: { - FOO: envField.string({ - // ... - max: 32, - min: 3, - length: 12, - url: true, - includes: 'foo', - startsWith: 'bar', - endsWith: 'baz', - }), - BAR: envField.number({ - // ... - gt: 2, - min: 3, - lt: 10, - max: 9, - int: true, - }), - }, - }, - }, - }); - ``` - -- [#11211](https://github.com/withastro/astro/pull/11211) [`97724da`](https://github.com/withastro/astro/commit/97724da93ed7b1db19632c0cdb4b3aab1ff84812) Thanks [@matthewp](https://github.com/matthewp)! - Let middleware handle the original request URL - -- [#10607](https://github.com/withastro/astro/pull/10607) [`7327c6a`](https://github.com/withastro/astro/commit/7327c6acb197e1f2ea6cf94cfbc5700bc755f982) Thanks [@frankbits](https://github.com/frankbits)! - Fixes an issue where a leading slash created incorrect conflict resolution between pages generated from static routes and catch-all dynamic routes - -## 4.10.1 - -### Patch Changes - -- [#11198](https://github.com/withastro/astro/pull/11198) [`8b9a499`](https://github.com/withastro/astro/commit/8b9a499d3733e9d0fc6a0bd067ece19bd36f4726) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where `astro:env` `getSecret` would not retrieve environment variables properly in dev and build modes - -- [#11206](https://github.com/withastro/astro/pull/11206) [`734b98f`](https://github.com/withastro/astro/commit/734b98fecf0212cd76be3c935a49f84a9a7dab34) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - **BREAKING CHANGE to the experimental `astro:env` feature only** - - Updates the adapter `astro:env` entrypoint from `astro:env/setup` to `astro/env/setup` - -- [#11205](https://github.com/withastro/astro/pull/11205) [`8c45391`](https://github.com/withastro/astro/commit/8c4539145f0b6a735b65852b2f2b1a7e9f5a9c3f) Thanks [@Nin3lee](https://github.com/Nin3lee)! - Fixes a typo in the config reference - -## 4.10.0 - -### Minor Changes - -- [#10974](https://github.com/withastro/astro/pull/10974) [`2668ef9`](https://github.com/withastro/astro/commit/2668ef984104574f25f29ef75e2572a0745d1666) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds experimental support for the `astro:env` API. - - The `astro:env` API lets you configure a type-safe schema for your environment variables, and indicate whether they should be available on the server or the client. Import and use your defined variables from the appropriate `/client` or `/server` module: - - ```astro - --- - import { PUBLIC_APP_ID } from 'astro:env/client'; - import { PUBLIC_API_URL, getSecret } from 'astro:env/server'; - const API_TOKEN = getSecret('API_TOKEN'); - - const data = await fetch(`${PUBLIC_API_URL}/users`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${API_TOKEN}`, - }, - body: JSON.stringify({ appId: PUBLIC_APP_ID }), - }); - --- - ``` - - To define the data type and properties of your environment variables, declare a schema in your Astro config in `experimental.env.schema`. The `envField` helper allows you define your variable as a string, number, or boolean and pass properties in an object: - - ```js - // astro.config.mjs - import { defineConfig, envField } from 'astro/config'; - - export default defineConfig({ - experimental: { - env: { - schema: { - PUBLIC_API_URL: envField.string({ context: 'client', access: 'public', optional: true }), - PUBLIC_PORT: envField.number({ context: 'server', access: 'public', default: 4321 }), - API_SECRET: envField.string({ context: 'server', access: 'secret' }), - }, - }, - }, - }); - ``` - - There are three kinds of environment variables, determined by the combination of `context` (`client` or `server`) and `access` (`private` or `public`) settings defined in your [`env.schema`](#experimentalenvschema): - - **Public client variables**: These variables end up in both your final client and server bundles, and can be accessed from both client and server through the `astro:env/client` module: - - ```js - import { PUBLIC_API_URL } from 'astro:env/client'; - ``` - - - **Public server variables**: These variables end up in your final server bundle and can be accessed on the server through the `astro:env/server` module: - - ```js - import { PUBLIC_PORT } from 'astro:env/server'; - ``` - - - **Secret server variables**: These variables are not part of your final bundle and can be accessed on the server through the `getSecret()` helper function available from the `astro:env/server` module: - - ```js - import { getSecret } from 'astro:env/server'; - - const API_SECRET = getSecret('API_SECRET'); // typed - const SECRET_NOT_IN_SCHEMA = getSecret('SECRET_NOT_IN_SCHEMA'); // string | undefined - ``` - - **Note:** Secret client variables are not supported because there is no safe way to send this data to the client. Therefore, it is not possible to configure both `context: "client"` and `access: "secret"` in your schema. - - To learn more, check out [the documentation](https://docs.astro.build/en/reference/configuration-reference/#experimentalenv). - -### Patch Changes - -- [#11192](https://github.com/withastro/astro/pull/11192) [`58b10a0`](https://github.com/withastro/astro/commit/58b10a073192030a251cff8ad706ab5b015180c9) Thanks [@liruifengv](https://github.com/liruifengv)! - Improves DX by throwing the original `AstroUserError` when an error is thrown inside a `.mdx` file. - -- [#11136](https://github.com/withastro/astro/pull/11136) [`35ef53c`](https://github.com/withastro/astro/commit/35ef53c0897c0d360efc086a71c5f4406721d2fe) Thanks [@ematipico](https://github.com/ematipico)! - Errors that are emitted during a rewrite are now bubbled up and shown to the user. A 404 response is not returned anymore. - -- [#11144](https://github.com/withastro/astro/pull/11144) [`803dd80`](https://github.com/withastro/astro/commit/803dd8061df02138b4928442bcb76e77dcf6f5e7) Thanks [@ematipico](https://github.com/ematipico)! - The integration now exposes a function called `getContainerRenderer`, that can be used inside the Container APIs to load the relative renderer. - - ```js - import { experimental_AstroContainer as AstroContainer } from 'astro/container'; - import ReactWrapper from '../src/components/ReactWrapper.astro'; - import { loadRenderers } from 'astro:container'; - import { getContainerRenderer } from '@astrojs/react'; - - test('ReactWrapper with react renderer', async () => { - const renderers = await loadRenderers([getContainerRenderer()]); - const container = await AstroContainer.create({ - renderers, - }); - const result = await container.renderToString(ReactWrapper); - - expect(result).toContain('Counter'); - expect(result).toContain('Count: 5'); - }); - ``` - -- [#11144](https://github.com/withastro/astro/pull/11144) [`803dd80`](https://github.com/withastro/astro/commit/803dd8061df02138b4928442bcb76e77dcf6f5e7) Thanks [@ematipico](https://github.com/ematipico)! - **BREAKING CHANGE to the experimental Container API only** - - Changes the **type** of the `renderers` option of the `AstroContainer::create` function and adds a dedicated function `loadRenderers()` to load the rendering scripts from renderer integration packages (`@astrojs/react`, `@astrojs/preact`, `@astrojs/solid-js`, `@astrojs/svelte`, `@astrojs/vue`, `@astrojs/lit`, and `@astrojs/mdx`). - - You no longer need to know the individual, direct file paths to the client and server rendering scripts for each renderer integration package. Now, there is a dedicated function to load the renderer from each package, which is available from `getContainerRenderer()`: - - ```diff - import { experimental_AstroContainer as AstroContainer } from 'astro/container'; - import ReactWrapper from '../src/components/ReactWrapper.astro'; - import { loadRenderers } from "astro:container"; - import { getContainerRenderer } from "@astrojs/react"; - - test('ReactWrapper with react renderer', async () => { - + const renderers = await loadRenderers([getContainerRenderer()]) - - const renderers = [ - - { - - name: '@astrojs/react', - - clientEntrypoint: '@astrojs/react/client.js', - - serverEntrypoint: '@astrojs/react/server.js', - - }, - - ]; - const container = await AstroContainer.create({ - renderers, - }); - const result = await container.renderToString(ReactWrapper); - - expect(result).toContain('Counter'); - expect(result).toContain('Count: 5'); - }); - ``` - - The new `loadRenderers()` helper function is available from `astro:container`, a virtual module that can be used when running the Astro container inside `vite`. - -- [#11136](https://github.com/withastro/astro/pull/11136) [`35ef53c`](https://github.com/withastro/astro/commit/35ef53c0897c0d360efc086a71c5f4406721d2fe) Thanks [@ematipico](https://github.com/ematipico)! - It's not possible anymore to use `Astro.rewrite("/404")` inside static pages. This isn't counterproductive because Astro will end-up emitting a page that contains the HTML of 404 error page. - - It's still possible to use `Astro.rewrite("/404")` inside on-demand pages, or pages that opt-out from prerendering. - -- [#11191](https://github.com/withastro/astro/pull/11191) [`6e29a17`](https://github.com/withastro/astro/commit/6e29a172f153d15fac07320488fae01dece71748) Thanks [@matthewp](https://github.com/matthewp)! - Fixes a case where `Astro.url` would be incorrect when having `build.format` set to `'preserve'` in the Astro config - -- [#11182](https://github.com/withastro/astro/pull/11182) [`40b0b4d`](https://github.com/withastro/astro/commit/40b0b4d1e4ef1aa95d5e9011652444b855ab0b9c) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where `Astro.rewrite` wasn't carrying over the body of a `Request` in on-demand pages. - -- [#11194](https://github.com/withastro/astro/pull/11194) [`97fbe93`](https://github.com/withastro/astro/commit/97fbe938a9b07d52d61011da4bd5a8b5ad85a700) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the function `getViteConfig` wasn't returning the correct merged Astro configuration - -## 4.9.3 - -### Patch Changes - -- [#11171](https://github.com/withastro/astro/pull/11171) [`ff8004f`](https://github.com/withastro/astro/commit/ff8004f6a7b2aab4c6ac367f13744a341c3c5462) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Guard globalThis.astroAsset usage in proxy code to avoid errors in wonky situations - -- [#11178](https://github.com/withastro/astro/pull/11178) [`1734c49`](https://github.com/withastro/astro/commit/1734c49f516ff7d778d6724a0db6d39649921b4b) Thanks [@theoephraim](https://github.com/theoephraim)! - Improves `isPromise` utility to check the presence of `then` on an object before trying to access it - which can cause undesired side-effects on Proxy objects - -- [#11183](https://github.com/withastro/astro/pull/11183) [`3cfa2ac`](https://github.com/withastro/astro/commit/3cfa2ac7e51d7bea96980403c393f9bcda1e9375) Thanks [@66Leo66](https://github.com/66Leo66)! - Suggest `pnpm dlx` instead of `pnpx` in update check. - -- [#11147](https://github.com/withastro/astro/pull/11147) [`2d93902`](https://github.com/withastro/astro/commit/2d93902f4c51dcc62b077b0546ead688e6f32c63) Thanks [@kitschpatrol](https://github.com/kitschpatrol)! - Fixes invalid MIME types in Picture source elements for jpg and svg extensions, which was preventing otherwise valid source variations from being shown by the browser - -- [#11141](https://github.com/withastro/astro/pull/11141) [`19df89f`](https://github.com/withastro/astro/commit/19df89f87c74205ebc76aeac43ca20b00694acec) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an internal error that prevented the `AstroContainer` to render the `Content` component. - - You can now write code similar to the following to render content collections: - - ```js - const entry = await getEntry(collection, slug); - const { Content } = await entry.render(); - const content = await container.renderToString(Content); - ``` - -- [#11170](https://github.com/withastro/astro/pull/11170) [`ba20c71`](https://github.com/withastro/astro/commit/ba20c718a4ccd1009bdf81f8265956bff1d19d05) Thanks [@matthewp](https://github.com/matthewp)! - Retain client scripts in content cache - -## 4.9.2 - -### Patch Changes - -- [#11138](https://github.com/withastro/astro/pull/11138) [`98e0372`](https://github.com/withastro/astro/commit/98e0372cfd47a3e025be2ac68d1e9ebf06cf548b) Thanks [@ematipico](https://github.com/ematipico)! - You can now pass `props` when rendering a component using the Container APIs: - - ```js - import { experimental_AstroContainer as AstroContainer } from 'astro/container'; - import Card from '../src/components/Card.astro'; - - const container = await AstroContainer.create(); - const result = await container.renderToString(Card, { - props: { - someState: true, - }, - }); - ``` - -## 4.9.1 - -### Patch Changes - -- [#11129](https://github.com/withastro/astro/pull/11129) [`4bb9269`](https://github.com/withastro/astro/commit/4bb926908d9a7ee134701c3e5a1b5e6ea688f843) Thanks [@matthewp](https://github.com/matthewp)! - Prevent errors from adapters when i18n domains is not used - -## 4.9.0 - -### Minor Changes - -- [#11051](https://github.com/withastro/astro/pull/11051) [`12a1bcc`](https://github.com/withastro/astro/commit/12a1bccc818af292cdd2a8ed0f3e3c042b9819b4) Thanks [@ematipico](https://github.com/ematipico)! - Introduces an experimental Container API to render `.astro` components in isolation. - - This API introduces three new functions to allow you to create a new container and render an Astro component returning either a string or a Response: - - `create()`: creates a new instance of the container. - - `renderToString()`: renders a component and return a string. - - `renderToResponse()`: renders a component and returns the `Response` emitted by the rendering phase. - - The first supported use of this new API is to enable unit testing. For example, with `vitest`, you can create a container to render your component with test data and check the result: - - ```js - import { experimental_AstroContainer as AstroContainer } from 'astro/container'; - import { expect, test } from 'vitest'; - import Card from '../src/components/Card.astro'; - - test('Card with slots', async () => { - const container = await AstroContainer.create(); - const result = await container.renderToString(Card, { - slots: { - default: 'Card content', - }, - }); - - expect(result).toContain('This is a card'); - expect(result).toContain('Card content'); - }); - ``` - - For a complete reference, see the [Container API docs](https://docs.astro.build/en/reference/container-reference/). - - For a feature overview, and to give feedback on this experimental API, see the [Container API roadmap discussion](https://github.com/withastro/roadmap/pull/916). - -- [#11021](https://github.com/withastro/astro/pull/11021) [`2d4c8fa`](https://github.com/withastro/astro/commit/2d4c8faa56a64d963fe7847b5be2d7a59e12ed5b) Thanks [@ematipico](https://github.com/ematipico)! - The CSRF protection feature that was introduced behind a flag in [v4.6.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#460) is no longer experimental and is available for general use. - - To enable the stable version, add the new top-level `security` option in `astro.config.mjs`. If you were previously using the experimental version of this feature, also delete the experimental flag: - - ```diff - export default defineConfig({ - - experimental: { - - security: { - - csrfProtection: { - - origin: true - - } - - } - - }, - + security: { - + checkOrigin: true - + } - }) - ``` - - Enabling this setting performs a check that the `"origin"` header, automatically passed by all modern browsers, matches the URL sent by each Request. - - This check is executed only for pages rendered on demand, and only for the requests `POST`, `PATCH`, `DELETE` and `PUT` with one of the following `"content-type"` headers: `'application/x-www-form-urlencoded'`, `'multipart/form-data'`, `'text/plain'`. - - If the `"origin"` header doesn't match the pathname of the request, Astro will return a 403 status code and won't render the page. - - For more information, see the [`security` configuration docs](https://docs.astro.build/en/reference/configuration-reference/#security). - -- [#11022](https://github.com/withastro/astro/pull/11022) [`be68ab4`](https://github.com/withastro/astro/commit/be68ab47e236476ba980cbf74daf85f27cd866f4) Thanks [@ematipico](https://github.com/ematipico)! - The `i18nDomains` routing feature introduced behind a flag in [v3.4.0](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md#430) is no longer experimental and is available for general use. - - This routing option allows you to configure different domains for individual locales in entirely server-rendered projects using the [@astrojs/node](https://docs.astro.build/en/guides/integrations-guide/node/) or [@astrojs/vercel](https://docs.astro.build/en/guides/integrations-guide/vercel/) adapter with a `site` configured. - - If you were using this feature, please remove the experimental flag from your Astro config: - - ```diff - import { defineConfig } from 'astro' - - export default defineConfig({ - - experimental: { - - i18nDomains: true, - - } - }) - ``` - - If you have been waiting for stabilization before using this routing option, you can now do so. - - Please see [the internationalization docs](https://docs.astro.build/en/guides/internationalization/#domains) for more about this feature. - -- [#11071](https://github.com/withastro/astro/pull/11071) [`8ca7c73`](https://github.com/withastro/astro/commit/8ca7c731dea894e77f84b314ebe3a141d5daa918) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds two new functions `experimental_getActionState()` and `experimental_withState()` to support [the React 19 `useActionState()` hook](https://react.dev/reference/react/useActionState) when using Astro Actions. This introduces progressive enhancement when calling an Action with the `withState()` utility. - - This example calls a `like` action that accepts a `postId` and returns the number of likes. Pass this action to the `experimental_withState()` function to apply progressive enhancement info, and apply to `useActionState()` to track the result: - - ```tsx - import { actions } from 'astro:actions'; - import { experimental_withState } from '@astrojs/react/actions'; - - export function Like({ postId }: { postId: string }) { - const [state, action, pending] = useActionState( - experimental_withState(actions.like), - 0, // initial likes - ); - - return ( -
- - -
- ); - } - ``` - - You can also access the state stored by `useActionState()` from your action `handler`. Call `experimental_getActionState()` with the API context, and optionally apply a type to the result: - - ```ts - import { defineAction, z } from 'astro:actions'; - import { experimental_getActionState } from '@astrojs/react/actions'; - - export const server = { - like: defineAction({ - input: z.object({ - postId: z.string(), - }), - handler: async ({ postId }, ctx) => { - const currentLikes = experimental_getActionState(ctx); - // write to database - return currentLikes + 1; - }, - }), - }; - ``` - -- [#11101](https://github.com/withastro/astro/pull/11101) [`a6916e4`](https://github.com/withastro/astro/commit/a6916e4402bf5b7d74bab784a54eba63fd1d1179) Thanks [@linguofeng](https://github.com/linguofeng)! - Updates Astro's code for adapters to use the header `x-forwarded-for` to initialize the `clientAddress`. - - To take advantage of the new change, integration authors must upgrade the version of Astro in their adapter `peerDependencies` to `4.9.0`. - -- [#11071](https://github.com/withastro/astro/pull/11071) [`8ca7c73`](https://github.com/withastro/astro/commit/8ca7c731dea894e77f84b314ebe3a141d5daa918) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds compatibility for Astro Actions in the React 19 beta. Actions can be passed to a `form action` prop directly, and Astro will automatically add metadata for progressive enhancement. - - ```tsx - import { actions } from 'astro:actions'; - - function Like() { - return ( -
- {/* auto-inserts hidden input for progressive enhancement */} - -
- ); - } - ``` - -### Patch Changes - -- [#11088](https://github.com/withastro/astro/pull/11088) [`9566fa0`](https://github.com/withastro/astro/commit/9566fa08608be766df355be17d72a39ea7b99ed0) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Allow actions to be called on the server. This allows you to call actions as utility functions in your Astro frontmatter, endpoints, and server-side UI components. - - Import and call directly from `astro:actions` as you would for client actions: - - ```astro - --- - // src/pages/blog/[postId].astro - import { actions } from 'astro:actions'; - - await actions.like({ postId: Astro.params.postId }); - --- - ``` - -- [#11112](https://github.com/withastro/astro/pull/11112) [`29a8650`](https://github.com/withastro/astro/commit/29a8650375053cd5690a32bed4140f0fef11c705) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Deprecate the `getApiContext()` function. API Context can now be accessed from the second parameter to your Action `handler()`: - - ```diff - // src/actions/index.ts - import { - defineAction, - z, - - getApiContext, - } from 'astro:actions'; - - export const server = { - login: defineAction({ - input: z.object({ id: z.string }), - + handler(input, context) { - const user = context.locals.auth(input.id); - return user; - } - }), - } - ``` - -## 4.8.7 - -### Patch Changes - -- [#11073](https://github.com/withastro/astro/pull/11073) [`f5c8fee`](https://github.com/withastro/astro/commit/f5c8fee76c5e688ef23c18be79705b18f1750415) Thanks [@matthewp](https://github.com/matthewp)! - Prevent cache content from being left in dist folder - - When `contentCollectionsCache` is enabled temporary cached content is copied into the `outDir` for processing. This fixes it so that this content is cleaned out, along with the rest of the temporary build JS. - -- [#11054](https://github.com/withastro/astro/pull/11054) [`f6b171e`](https://github.com/withastro/astro/commit/f6b171ed50eed253b8ac005bd5e9d1841a8003dd) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Respect error status when handling Actions with a progressive fallback. - -- [#11092](https://github.com/withastro/astro/pull/11092) [`bfe9c73`](https://github.com/withastro/astro/commit/bfe9c73536f0794e4f5ede5040adabbe0e705984) Thanks [@duckycoding-dev](https://github.com/duckycoding-dev)! - Change `slot` attribute of `IntrinsicAttributes` to match the definition of `HTMLAttributes`'s own `slot` attribute of type `string | undefined | null` - -- [#10875](https://github.com/withastro/astro/pull/10875) [`b5f95b2`](https://github.com/withastro/astro/commit/b5f95b2fb156152fabf2a22e150037a8255006f9) Thanks [@W1M0R](https://github.com/W1M0R)! - Fixes a typo in a JSDoc annotation - -- [#11111](https://github.com/withastro/astro/pull/11111) [`a5d79dd`](https://github.com/withastro/astro/commit/a5d79ddeb2d592de9eb2468471fdcf3eea5ef730) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fix unexpected `headers` warning on prerendered routes when using Astro Actions. - -- [#11081](https://github.com/withastro/astro/pull/11081) [`af42e05`](https://github.com/withastro/astro/commit/af42e0552054b3b4ac784ed78c60f80bfc38d8ca) Thanks [@V3RON](https://github.com/V3RON)! - Correctly position inspection tooltip in RTL mode - - When RTL mode is turned on, the inspection tooltip tend to overflow the window on the left side. - Additional check has been added to prevent that. - -## 4.8.6 - -### Patch Changes - -- [#11084](https://github.com/withastro/astro/pull/11084) [`9637014`](https://github.com/withastro/astro/commit/9637014b1495a5a41cb384c7de4de410348f4cc0) Thanks [@bluwy](https://github.com/bluwy)! - Fixes regression when handling hoisted scripts from content collections - -## 4.8.5 - -### Patch Changes - -- [#11065](https://github.com/withastro/astro/pull/11065) [`1f988ed`](https://github.com/withastro/astro/commit/1f988ed10f4737b5333c9978115ee531786eb539) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in the Astro rewrite logic, where rewriting the index with parameters - `next("/?foo=bar")` - didn't work as expected. - -- [#10924](https://github.com/withastro/astro/pull/10924) [`3a0c02a`](https://github.com/withastro/astro/commit/3a0c02ae0357c267881b30454b5320075378894b) Thanks [@Its-Just-Nans](https://github.com/Its-Just-Nans)! - Handle image-size errors by displaying a clearer message - -- [#11058](https://github.com/withastro/astro/pull/11058) [`749a7ac`](https://github.com/withastro/astro/commit/749a7ac967146952450a4173dcb6a5494755460c) Thanks [@matthewp](https://github.com/matthewp)! - Fix streaming in Node.js fast path - -- [#11052](https://github.com/withastro/astro/pull/11052) [`a05ca38`](https://github.com/withastro/astro/commit/a05ca38c2cf327ae9130ee1c139a0e510b9da50a) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where rewriting would conflict with the actions internal middleware - -- [#11062](https://github.com/withastro/astro/pull/11062) [`16f12e4`](https://github.com/withastro/astro/commit/16f12e426e5869721313bb771e2ec5b821c5452e) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where `astro build` didn't create custom `404.html` and `500.html` when a certain combination of i18n options was applied - -- [#10965](https://github.com/withastro/astro/pull/10965) [`a8f0372`](https://github.com/withastro/astro/commit/a8f0372ea71479ef80c58e74201dea6a5a2b2ae4) Thanks [@Elias-Chairi](https://github.com/Elias-Chairi)! - Update generator.ts to allow %23 (#) in dynamic urls - -- [#11069](https://github.com/withastro/astro/pull/11069) [`240a70a`](https://github.com/withastro/astro/commit/240a70a29f8e11d161da021845c208f982d64e5c) Thanks [@ematipico](https://github.com/ematipico)! - Improves debug logging for on-demand pages - -## 4.8.4 - -### Patch Changes - -- [#11026](https://github.com/withastro/astro/pull/11026) [`8dfb1a2`](https://github.com/withastro/astro/commit/8dfb1a23cc5996c410f7e33211d132dac36c9f77) Thanks [@bluwy](https://github.com/bluwy)! - Skips rendering script tags if it's inlined and empty when `experimental.directRenderScript` is enabled - -- [#11043](https://github.com/withastro/astro/pull/11043) [`d0d1710`](https://github.com/withastro/astro/commit/d0d1710439ec281518b17d03126b5d9cd008a102) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fixes minor type issues in actions component example - -- [#10999](https://github.com/withastro/astro/pull/10999) [`5f353e3`](https://github.com/withastro/astro/commit/5f353e39b2b9fb15e6c9d193b5b5101457fef002) Thanks [@bluwy](https://github.com/bluwy)! - The prefetch feature is updated to better support different browsers and different cache headers setup, including: - 1. All prefetch strategies will now always try to use `` if supported, or will fall back to `fetch()`. - 2. The `prefetch()` programmatic API's `with` option is deprecated in favour of an automatic approach that will also try to use `` element in the `` component so scoped styling can be applied to the `` element - -## 4.8.0 - -### Minor Changes - -- [#10935](https://github.com/withastro/astro/pull/10935) [`ddd8e49`](https://github.com/withastro/astro/commit/ddd8e49d1a179bec82310fb471f822a1567a6610) Thanks [@bluwy](https://github.com/bluwy)! - Exports `astro/jsx/rehype.js` with utilities to generate an Astro metadata object - -- [#10625](https://github.com/withastro/astro/pull/10625) [`698c2d9`](https://github.com/withastro/astro/commit/698c2d9bb51e20b38de405b6076fd6488ddb5c2b) Thanks [@goulvenclech](https://github.com/goulvenclech)! - Adds the ability for multiple pages to use the same component as an `entrypoint` when building an Astro integration. This change is purely internal, and aligns the build process with the behaviour in the development server. - -- [#10906](https://github.com/withastro/astro/pull/10906) [`7bbd664`](https://github.com/withastro/astro/commit/7bbd66459dd29a338ac1dfae0e4c984cb08f73b3) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new radio checkbox component to the dev toolbar UI library (`astro-dev-toolbar-radio-checkbox`) - -- [#10963](https://github.com/withastro/astro/pull/10963) [`61f47a6`](https://github.com/withastro/astro/commit/61f47a684235a049cbfc4f2cbb5edff3befeced7) Thanks [@delucis](https://github.com/delucis)! - Adds support for passing an inline Astro configuration object to `getViteConfig()` - - If you are using `getViteConfig()` to configure the Vitest test runner, you can now pass a second argument to control how Astro is configured. This makes it possible to configure unit tests with different Astro options when using [Vitest’s workspaces](https://vitest.dev/guide/workspace.html) feature. - - ```js - // vitest.config.ts - import { getViteConfig } from 'astro/config'; - - export default getViteConfig( - /* Vite configuration */ - { test: {} }, - /* Astro configuration */ - { - site: 'https://example.com', - trailingSlash: 'never', - }, - ); - ``` - -- [#10867](https://github.com/withastro/astro/pull/10867) [`47877a7`](https://github.com/withastro/astro/commit/47877a75404ccc8786bbea2171015fb088dc01a1) Thanks [@ematipico](https://github.com/ematipico)! - Adds experimental rewriting in Astro with a new `rewrite()` function and the middleware `next()` function. - - The feature is available via an experimental flag in `astro.config.mjs`: - - ```js - export default defineConfig({ - experimental: { - rewriting: true, - }, - }); - ``` - - When enabled, you can use `rewrite()` to **render** another page without changing the URL of the browser in Astro pages and endpoints. - - ```astro - --- - // src/pages/dashboard.astro - if (!Astro.props.allowed) { - return Astro.rewrite('/'); - } - --- - ``` - - ```js - // src/pages/api.js - export function GET(ctx) { - if (!ctx.locals.allowed) { - return ctx.rewrite('/'); - } - } - ``` - - The middleware `next()` function now accepts a parameter with the same type as the `rewrite()` function. For example, with `next("/")`, you can call the next middleware function with a new `Request`. - - ```js - // src/middleware.js - export function onRequest(ctx, next) { - if (!ctx.cookies.get('allowed')) { - return next('/'); // new signature - } - return next(); - } - ``` - - > **NOTE**: please [read the RFC](https://github.com/withastro/roadmap/blob/feat/reroute/proposals/0047-rerouting.md) to understand the current expectations of the new APIs. - -- [#10858](https://github.com/withastro/astro/pull/10858) [`c0c509b`](https://github.com/withastro/astro/commit/c0c509b6bf3f55562d22297fdcc2b3e57969734d) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds experimental support for the Actions API. Actions let you define type-safe endpoints you can query from client components with progressive enhancement built in. - - Actions help you write type-safe backend functions you can call from anywhere. Enable server rendering [using the `output` property](https://docs.astro.build/en/basics/rendering-modes/#on-demand-rendered) and add the `actions` flag to the `experimental` object: - - ```js - { - output: 'hybrid', // or 'server' - experimental: { - actions: true, - }, - } - ``` - - Declare all your actions in `src/actions/index.ts`. This file is the global actions handler. - - Define an action using the `defineAction()` utility from the `astro:actions` module. These accept the `handler` property to define your server-side request handler. If your action accepts arguments, apply the `input` property to validate parameters with Zod. - - This example defines two actions: `like` and `comment`. The `like` action accepts a JSON object with a `postId` string, while the `comment` action accepts [FormData](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) with `postId`, `author`, and `body` strings. Each `handler` updates your database and return a type-safe response. - - ```ts - // src/actions/index.ts - import { defineAction, z } from 'astro:actions'; - - export const server = { - like: defineAction({ - input: z.object({ postId: z.string() }), - handler: async ({ postId }) => { - // update likes in db - - return likes; - }, - }), - comment: defineAction({ - accept: 'form', - input: z.object({ - postId: z.string(), - - body: z.string(), - }), - handler: async ({ postId }) => { - // insert comments in db - - return comment; - }, - }), - }; - ``` - - Then, call an action from your client components using the `actions` object from `astro:actions`. You can pass a type-safe object when using JSON, or a [FormData](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) object when using `accept: 'form'` in your action definition: - - ```tsx "actions" - // src/components/blog.tsx - import { actions } from 'astro:actions'; - import { useState } from 'preact/hooks'; - - export function Like({ postId }: { postId: string }) { - const [likes, setLikes] = useState(0); - return ( - - ); - } - - export function Comment({ postId }: { postId: string }) { - return ( -
{ - e.preventDefault(); - const formData = new FormData(e.target); - const result = await actions.blog.comment(formData); - // handle result - }} - > - - - - - -
- ); - } - ``` - - For a complete overview, and to give feedback on this experimental API, see the [Actions RFC](https://github.com/withastro/roadmap/blob/actions/proposals/0046-actions.md). - -- [#10906](https://github.com/withastro/astro/pull/10906) [`7bbd664`](https://github.com/withastro/astro/commit/7bbd66459dd29a338ac1dfae0e4c984cb08f73b3) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `buttonBorderRadius` property to the `astro-dev-toolbar-button` component for the dev toolbar component library. This property can be useful to make a fully rounded button with an icon in the center. - -### Patch Changes - -- [#10977](https://github.com/withastro/astro/pull/10977) [`59571e8`](https://github.com/withastro/astro/commit/59571e8812ec637f5ea61be6c6adc0f45212d176) Thanks [@BryceRussell](https://github.com/BryceRussell)! - Improve error message when accessing `clientAddress` on prerendered routes - -- [#10935](https://github.com/withastro/astro/pull/10935) [`ddd8e49`](https://github.com/withastro/astro/commit/ddd8e49d1a179bec82310fb471f822a1567a6610) Thanks [@bluwy](https://github.com/bluwy)! - Improves the error message when failed to render MDX components - -- [#10917](https://github.com/withastro/astro/pull/10917) [`3412535`](https://github.com/withastro/astro/commit/3412535be4a0ec94cea18c5d186b7ffbd6f8209c) Thanks [@jakobhellermann](https://github.com/jakobhellermann)! - Fixes a case where the local server would crash when the host also contained the port, eg. with `X-Forwarded-Host: hostname:8080` and `X-Forwarded-Port: 8080` headers - -- [#10959](https://github.com/withastro/astro/pull/10959) [`685fc22`](https://github.com/withastro/astro/commit/685fc22bc6247be69a34c3f6945dec058c19fd71) Thanks [@bluwy](https://github.com/bluwy)! - Refactors internal handling of styles and scripts for content collections to improve build performance - -- [#10889](https://github.com/withastro/astro/pull/10889) [`4d905cc`](https://github.com/withastro/astro/commit/4d905ccef663f728fc981181f5bb9f1d157184ff) Thanks [@matthewp](https://github.com/matthewp)! - Preserve content modules properly in cache - -- [#10955](https://github.com/withastro/astro/pull/10955) [`2978287`](https://github.com/withastro/astro/commit/2978287f92dbd135f5c3efc6a037ea1756064d35) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Handles `AstroUserError`s thrown while syncing content collections and exports `BaseSchema` and `CollectionConfig` types - -## 4.7.1 - -### Patch Changes - -- [#10911](https://github.com/withastro/astro/pull/10911) [`a86dc9d`](https://github.com/withastro/astro/commit/a86dc9d269fc4409c458cfa05dcfaeee12bade2f) Thanks [@bluwy](https://github.com/bluwy)! - Skips adding CSS dependencies of CSS Vite modules as style tags in the HTML - -- [#10900](https://github.com/withastro/astro/pull/10900) [`36bb3b6`](https://github.com/withastro/astro/commit/36bb3b6025eb51f6e027a76a514cc7ebb29deb10) Thanks [@martrapp](https://github.com/martrapp)! - Detects overlapping navigation and view transitions and automatically aborts all but the most recent one. - -- [#10933](https://github.com/withastro/astro/pull/10933) [`007d17f`](https://github.com/withastro/astro/commit/007d17fee072955d4acb846a06d9eb666e908ef6) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `app.toggleState` not working correctly - -- [#10931](https://github.com/withastro/astro/pull/10931) [`4ce5ced`](https://github.com/withastro/astro/commit/4ce5ced44d490f4c6df771995aef14e11910ec57) Thanks [@ktym4a](https://github.com/ktym4a)! - Fixes `toggleNotification()`'s parameter type for the notification level not using the proper levels - -## 4.7.0 - -### Minor Changes - -- [#10665](https://github.com/withastro/astro/pull/10665) [`7b4f284`](https://github.com/withastro/astro/commit/7b4f2840203fe220758934f1366485f788727f0d) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds new utilities to ease the creation of toolbar apps including `defineToolbarApp` to make it easier to define your toolbar app and `app` and `server` helpers for easier communication between the toolbar and the server. These new utilities abstract away some of the boilerplate code that is common in toolbar apps, and lower the barrier of entry for app authors. - - For example, instead of creating an event listener for the `app-toggled` event and manually typing the value in the callback, you can now use the `onAppToggled` method. Additionally, communicating with the server does not require knowing any of the Vite APIs anymore, as a new `server` object is passed to the `init` function that contains easy to use methods for communicating with the server. - - ```diff - import { defineToolbarApp } from "astro/toolbar"; - - export default defineToolbarApp({ - init(canvas, app, server) { - - - app.addEventListener("app-toggled", (e) => { - - console.log(`App is now ${state ? "enabled" : "disabled"}`);. - - }); - - + app.onToggled(({ state }) => { - + console.log(`App is now ${state ? "enabled" : "disabled"}`); - + }); - - - if (import.meta.hot) { - - import.meta.hot.send("my-app:my-client-event", { message: "world" }); - - } - - + server.send("my-app:my-client-event", { message: "world" }) - - - if (import.meta.hot) { - - import.meta.hot.on("my-server-event", (data: {message: string}) => { - - console.log(data.message); - - }); - - } - - + server.on<{ message: string }>("my-server-event", (data) => { - + console.log(data.message); // data is typed using the type parameter - + }); - }, - }) - ``` - - Server helpers are also available on the server side, for use in your integrations, through the new `toolbar` object: - - ```ts - "astro:server:setup": ({ toolbar }) => { - toolbar.on<{ message: string }>("my-app:my-client-event", (data) => { - console.log(data.message); - toolbar.send("my-server-event", { message: "hello" }); - }); - } - ``` - - This is a backwards compatible change and your your existing dev toolbar apps will continue to function. However, we encourage you to build your apps with the new helpers, following the [updated Dev Toolbar API documentation](https://docs.astro.build/en/reference/dev-toolbar-app-reference/). - -- [#10734](https://github.com/withastro/astro/pull/10734) [`6fc4c0e`](https://github.com/withastro/astro/commit/6fc4c0e420da7629b4cfc28ee7efce1d614447be) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Astro will now automatically check for updates when you run the dev server. If a new version is available, a message will appear in the terminal with instructions on how to update. Updates will be checked once per 10 days, and the message will only appear if the project is multiple versions behind the latest release. - - This behavior can be disabled by running `astro preferences disable checkUpdates` or setting the `ASTRO_DISABLE_UPDATE_CHECK` environment variable to `false`. - -- [#10762](https://github.com/withastro/astro/pull/10762) [`43ead8f`](https://github.com/withastro/astro/commit/43ead8fbd5112823118060175c7a4a22522cc325) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Enables type checking for JavaScript files when using the `strictest` TS config. This ensures consistency with Astro's other TS configs, and fixes type checking for integrations like Astro DB when using an `astro.config.mjs`. - - If you are currently using the `strictest` preset and would like to still disable `.js` files, set `allowJS: false` in your `tsconfig.json`. - -### Patch Changes - -- [#10861](https://github.com/withastro/astro/pull/10861) [`b673bc8`](https://github.com/withastro/astro/commit/b673bc850593d5af25793d0358c00797477fa373) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where `astro build` writes type declaration files to `outDir` when it's outside of root directory. - -- [#10684](https://github.com/withastro/astro/pull/10684) [`8b59d5d`](https://github.com/withastro/astro/commit/8b59d5d078ff40576b8cbee432279c6ad044a1a9) Thanks [@PeterDraex](https://github.com/PeterDraex)! - Update sharp to 0.33 to fix issue with Alpine Linux - -## 4.6.4 - -### Patch Changes - -- [#10846](https://github.com/withastro/astro/pull/10846) [`3294f7a`](https://github.com/withastro/astro/commit/3294f7a343e036d2ad9ac8d5f792ad0d4f43a399) Thanks [@matthewp](https://github.com/matthewp)! - Prevent getCollection breaking in vitest - -- [#10856](https://github.com/withastro/astro/pull/10856) [`30cf82a`](https://github.com/withastro/astro/commit/30cf82ac3e970a6a3c0f07db1340dd7152d1c35d) Thanks [@robertvanhoesel](https://github.com/robertvanhoesel)! - Prevents inputs with a name attribute of action or method to break ViewTransitions' form submission - -- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. - -- [#10801](https://github.com/withastro/astro/pull/10801) [`204b782`](https://github.com/withastro/astro/commit/204b7820e6de22d97fa2a7b988180c42155c8387) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - Fixes an issue where images in MD required a relative specifier (e.g. `./`) - - Now, you can use the standard `![](relative/img.png)` syntax in MD files for images colocated in the same folder: no relative specifier required! - - There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these MD images as they are no longer necessary: - - ```diff - - ![A cute dog](./dog.jpg) - + ![A cute dog](dog.jpg) - - ``` - -- [#10841](https://github.com/withastro/astro/pull/10841) [`a2df344`](https://github.com/withastro/astro/commit/a2df344bff15647c2bfb3f49e3f7b66aa069d6f4) Thanks [@martrapp](https://github.com/martrapp)! - Due to regression on mobile WebKit browsers, reverts a change made for JavaScript animations during view transitions. - -## 4.6.3 - -### Patch Changes - -- [#10799](https://github.com/withastro/astro/pull/10799) [`dc74afca9f5eebc2d61331298d6ef187d92051e0`](https://github.com/withastro/astro/commit/dc74afca9f5eebc2d61331298d6ef187d92051e0) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with persisted non-text input fields that have the focus during view transition navigation. - -- [#10773](https://github.com/withastro/astro/pull/10773) [`35e43ecdaae7adc4b9a0b974192a033568cfb3f0`](https://github.com/withastro/astro/commit/35e43ecdaae7adc4b9a0b974192a033568cfb3f0) Thanks [@lilnasy](https://github.com/lilnasy)! - Improves performance for frequent use of small components. - -- [#10763](https://github.com/withastro/astro/pull/10763) [`63132771373ce1510be3e8814897accc0bf62ef8`](https://github.com/withastro/astro/commit/63132771373ce1510be3e8814897accc0bf62ef8) Thanks [@matthewp](https://github.com/matthewp)! - Invalidate CC cache manifest when lockfile or config changes - -- [#10811](https://github.com/withastro/astro/pull/10811) [`77822a822b04b5113726f713df104e8667333c59`](https://github.com/withastro/astro/commit/77822a822b04b5113726f713df104e8667333c59) Thanks [@AvinashReddy3108](https://github.com/AvinashReddy3108)! - Update list of available integrations in the `astro add` CLI help. - -## 4.6.2 - -### Patch Changes - -- [#10732](https://github.com/withastro/astro/pull/10732) [`a92e263beb6e0166f1f13c97803d1861793e2a99`](https://github.com/withastro/astro/commit/a92e263beb6e0166f1f13c97803d1861793e2a99) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - Correctly sets `build.assets` directory during `vite` config setup - -- [#10776](https://github.com/withastro/astro/pull/10776) [`1607face67051b16d4648555f1001b2a9308e377`](https://github.com/withastro/astro/commit/1607face67051b16d4648555f1001b2a9308e377) Thanks [@fshafiee](https://github.com/fshafiee)! - Fixes cookies type inference - -- [#10796](https://github.com/withastro/astro/pull/10796) [`90669472df3a05b33f0de46fd2d039e3eba7f7dd`](https://github.com/withastro/astro/commit/90669472df3a05b33f0de46fd2d039e3eba7f7dd) Thanks [@bluwy](https://github.com/bluwy)! - Disables streaming when rendering site with `output: "static"` - -- [#10782](https://github.com/withastro/astro/pull/10782) [`b0589d05538fcc77dd3c38198bf93f3548362cd8`](https://github.com/withastro/astro/commit/b0589d05538fcc77dd3c38198bf93f3548362cd8) Thanks [@nektro](https://github.com/nektro)! - Handles possible null value when calling `which-pm` during dynamic package installation - -- [#10774](https://github.com/withastro/astro/pull/10774) [`308b5d8c122f44e7724bb2f3ad3aa5c43a83e584`](https://github.com/withastro/astro/commit/308b5d8c122f44e7724bb2f3ad3aa5c43a83e584) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `astro add` sometimes modifying `baseUrl` unintentionally - -- [#10783](https://github.com/withastro/astro/pull/10783) [`4dbd545304d1a8af903c8c97f237eb55c988c40b`](https://github.com/withastro/astro/commit/4dbd545304d1a8af903c8c97f237eb55c988c40b) Thanks [@jurajkapsz](https://github.com/jurajkapsz)! - Fixes Picture component specialFormatsFallback fallback check - -- [#10775](https://github.com/withastro/astro/pull/10775) [`06843121450899ecf0390ca4efaff6c9a6fe0f75`](https://github.com/withastro/astro/commit/06843121450899ecf0390ca4efaff6c9a6fe0f75) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes assets endpoint in serverless returning 404 in certain situations where the website might be under a protected route - -- [#10787](https://github.com/withastro/astro/pull/10787) [`699f4559a279b374bddb3e5e48c72afe2709e8e7`](https://github.com/withastro/astro/commit/699f4559a279b374bddb3e5e48c72afe2709e8e7) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a timing issue in the view transition simulation. - -## 4.6.1 - -### Patch Changes - -- [#10708](https://github.com/withastro/astro/pull/10708) [`742866c5669a2be4f8b5a4c861cadb933c381415`](https://github.com/withastro/astro/commit/742866c5669a2be4f8b5a4c861cadb933c381415) Thanks [@horo-fox](https://github.com/horo-fox)! - Limits parallel imports within `getCollection()` to prevent EMFILE errors when accessing files - -- [#10755](https://github.com/withastro/astro/pull/10755) [`c6d59b6fb7db20af957a8706c8159c50619235ef`](https://github.com/withastro/astro/commit/c6d59b6fb7db20af957a8706c8159c50619235ef) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where the i18n fallback failed to correctly redirect to the index page with SSR enabled - -## 4.6.0 - -### Minor Changes - -- [#10591](https://github.com/withastro/astro/pull/10591) [`39988ef8e2c4c4888543c973e06d9b9939e4ac95`](https://github.com/withastro/astro/commit/39988ef8e2c4c4888543c973e06d9b9939e4ac95) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Adds a new dev toolbar settings option to change the horizontal placement of the dev toolbar on your screen: bottom left, bottom center, or bottom right. - -- [#10689](https://github.com/withastro/astro/pull/10689) [`683d51a5eecafbbfbfed3910a3f1fbf0b3531b99`](https://github.com/withastro/astro/commit/683d51a5eecafbbfbfed3910a3f1fbf0b3531b99) Thanks [@ematipico](https://github.com/ematipico)! - Deprecate support for versions of Node.js older than `v18.17.1` for Node.js 18, older than `v20.0.3` for Node.js 20, and the complete Node.js v19 release line. - - This change is in line with Astro's [Node.js support policy](https://docs.astro.build/en/upgrade-astro/#support). - -- [#10678](https://github.com/withastro/astro/pull/10678) [`2e53b5fff6d292b7acdf8c30a6ecf5e5696846a1`](https://github.com/withastro/astro/commit/2e53b5fff6d292b7acdf8c30a6ecf5e5696846a1) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new experimental security option to prevent [Cross-Site Request Forgery (CSRF) attacks](https://owasp.org/www-community/attacks/csrf). This feature is available only for pages rendered on demand: - - ```js - import { defineConfig } from 'astro/config'; - export default defineConfig({ - experimental: { - security: { - csrfProtection: { - origin: true, - }, - }, - }, - }); - ``` - - Enabling this setting performs a check that the "origin" header, automatically passed by all modern browsers, matches the URL sent by each `Request`. - - This experimental "origin" check is executed only for pages rendered on demand, and only for the requests `POST, `PATCH`, `DELETE`and`PUT`with one of the following`content-type` headers: 'application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'. - - It the "origin" header doesn't match the pathname of the request, Astro will return a 403 status code and won't render the page. - -- [#10193](https://github.com/withastro/astro/pull/10193) [`440681e7b74511a17b152af0fd6e0e4dc4014025`](https://github.com/withastro/astro/commit/440681e7b74511a17b152af0fd6e0e4dc4014025) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new i18n routing option `manual` to allow you to write your own i18n middleware: - - ```js - import { defineConfig } from 'astro/config'; - // astro.config.mjs - export default defineConfig({ - i18n: { - locales: ['en', 'fr'], - defaultLocale: 'fr', - routing: 'manual', - }, - }); - ``` - - Adding `routing: "manual"` to your i18n config disables Astro's own i18n middleware and provides you with helper functions to write your own: `redirectToDefaultLocale`, `notFound`, and `redirectToFallback`: - - ```js - // middleware.js - import { redirectToDefaultLocale } from 'astro:i18n'; - export const onRequest = defineMiddleware(async (context, next) => { - if (context.url.startsWith('/about')) { - return next(); - } else { - return redirectToDefaultLocale(context, 302); - } - }); - ``` - - Also adds a `middleware` function that manually creates Astro's i18n middleware. This allows you to extend Astro's i18n routing instead of completely replacing it. Run `middleware` in combination with your own middleware, using the `sequence` utility to determine the order: - - ```js title="src/middleware.js" - import { defineMiddleware, sequence } from 'astro:middleware'; - import { middleware } from 'astro:i18n'; // Astro's own i18n routing config - - export const userMiddleware = defineMiddleware(); - - export const onRequest = sequence( - userMiddleware, - middleware({ - redirectToDefaultLocale: false, - prefixDefaultLocale: true, - }), - ); - ``` - -- [#10671](https://github.com/withastro/astro/pull/10671) [`9e14a78cb05667af9821948c630786f74680090d`](https://github.com/withastro/astro/commit/9e14a78cb05667af9821948c630786f74680090d) Thanks [@fshafiee](https://github.com/fshafiee)! - Adds the `httpOnly`, `sameSite`, and `secure` options when deleting a cookie - -### Patch Changes - -- [#10747](https://github.com/withastro/astro/pull/10747) [`994337c99f84304df1147a14504659439a9a7326`](https://github.com/withastro/astro/commit/994337c99f84304df1147a14504659439a9a7326) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where functions could not be used as named slots. - -- [#10750](https://github.com/withastro/astro/pull/10750) [`7e825604ddf90c989537e07939a39dc249343897`](https://github.com/withastro/astro/commit/7e825604ddf90c989537e07939a39dc249343897) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Fixes a false positive for "Invalid `tabindex` on non-interactive element" rule for roleless elements ( `div` and `span` ). - -- [#10745](https://github.com/withastro/astro/pull/10745) [`d51951ce6278d4b59deed938d65e1cb72b5102df`](https://github.com/withastro/astro/commit/d51951ce6278d4b59deed938d65e1cb72b5102df) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where CLI commands could not report the reason for failure before exiting. - -- [#10661](https://github.com/withastro/astro/pull/10661) [`e2cd7f4291912dadd4a654bc7917856c58a72a97`](https://github.com/withastro/astro/commit/e2cd7f4291912dadd4a654bc7917856c58a72a97) Thanks [@liruifengv](https://github.com/liruifengv)! - Fixed errorOverlay theme toggle bug. - -- Updated dependencies [[`ccafa8d230f65c9302421a0ce0a0adc5824bfd55`](https://github.com/withastro/astro/commit/ccafa8d230f65c9302421a0ce0a0adc5824bfd55), [`683d51a5eecafbbfbfed3910a3f1fbf0b3531b99`](https://github.com/withastro/astro/commit/683d51a5eecafbbfbfed3910a3f1fbf0b3531b99)]: - - @astrojs/markdown-remark@5.1.0 - - @astrojs/telemetry@3.1.0 - -## 4.5.18 - -### Patch Changes - -- [#10728](https://github.com/withastro/astro/pull/10728) [`f508c4b7d54316e737f454a3777204b23636d4a0`](https://github.com/withastro/astro/commit/f508c4b7d54316e737f454a3777204b23636d4a0) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression where some very **specific** code rendered using `expressive-code` was not escaped properly. - -- [#10737](https://github.com/withastro/astro/pull/10737) [`8a30f257b1f3618b01212a591b82ad7a63c82fbb`](https://github.com/withastro/astro/commit/8a30f257b1f3618b01212a591b82ad7a63c82fbb) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where constructing and returning 404 responses from a middleware resulted in the dev server getting stuck in a loop. - -- [#10719](https://github.com/withastro/astro/pull/10719) [`b21b3ba307235510707ee9f5bd49f71473a07004`](https://github.com/withastro/astro/commit/b21b3ba307235510707ee9f5bd49f71473a07004) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a false positive for `div` and `span` elements when running the Dev Toolbar accessibility audits. - - Those are special elements that don't have an interaction assigned by default. Instead, it is assigned through the `role` attribute. This means that cases like the following are now deemed correct: - - ```html -
- - ``` - -## 4.5.17 - -### Patch Changes - -- [#10688](https://github.com/withastro/astro/pull/10688) [`799f6f3f29a3ef4f76347870a209ffa89651adfa`](https://github.com/withastro/astro/commit/799f6f3f29a3ef4f76347870a209ffa89651adfa) Thanks [@bluwy](https://github.com/bluwy)! - Marks renderer `jsxImportSource` and `jsxTransformOptions` options as deprecated as they are no longer used since Astro 3.0 - -- [#10657](https://github.com/withastro/astro/pull/10657) [`93d353528fa1a85b67e3f1e9514ed2a1b42dfd94`](https://github.com/withastro/astro/commit/93d353528fa1a85b67e3f1e9514ed2a1b42dfd94) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improves the color contrast for notification badges on dev toolbar apps - -- [#10693](https://github.com/withastro/astro/pull/10693) [`1d26e9c7f7d8f47e33bc68d3b30bbffce25c7b63`](https://github.com/withastro/astro/commit/1d26e9c7f7d8f47e33bc68d3b30bbffce25c7b63) Thanks [@apetta](https://github.com/apetta)! - Adds the `disableremoteplayback` attribute to MediaHTMLAttributes interface - -- [#10695](https://github.com/withastro/astro/pull/10695) [`a15975e41cb5eaf6ed8eb3ebaee676a17e433052`](https://github.com/withastro/astro/commit/a15975e41cb5eaf6ed8eb3ebaee676a17e433052) Thanks [@bluwy](https://github.com/bluwy)! - Skips prerender chunk if building with static output - -- [#10707](https://github.com/withastro/astro/pull/10707) [`5e044a5eafaa206d2ef8b62c37d1bcd37f0a4078`](https://github.com/withastro/astro/commit/5e044a5eafaa206d2ef8b62c37d1bcd37f0a4078) Thanks [@horo-fox](https://github.com/horo-fox)! - Logs an error when a page's `getStaticPaths` fails - -- [#10686](https://github.com/withastro/astro/pull/10686) [`fa0f593890502faf5709ab881fe0e45519d2f7af`](https://github.com/withastro/astro/commit/fa0f593890502faf5709ab881fe0e45519d2f7af) Thanks [@bluwy](https://github.com/bluwy)! - Prevents inlining scripts if used by other chunks when using the `experimental.directRenderScript` option - -## 4.5.16 - -### Patch Changes - -- [#10679](https://github.com/withastro/astro/pull/10679) [`ca6bb1f31ef041e6ccf8ef974856fa945ff5bb31`](https://github.com/withastro/astro/commit/ca6bb1f31ef041e6ccf8ef974856fa945ff5bb31) Thanks [@martrapp](https://github.com/martrapp)! - Generates missing popstate events for Firefox when navigating to hash targets on the same page. - -- [#10669](https://github.com/withastro/astro/pull/10669) [`0464563e527f821e53d78028d9bbf3c4e1050f5b`](https://github.com/withastro/astro/commit/0464563e527f821e53d78028d9bbf3c4e1050f5b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes Astro waiting infinitely in CI when a required package was not installed - -## 4.5.15 - -### Patch Changes - -- [#10666](https://github.com/withastro/astro/pull/10666) [`55ddb2ba4889480f776a8d29b9dcd531b9f5ab3e`](https://github.com/withastro/astro/commit/55ddb2ba4889480f776a8d29b9dcd531b9f5ab3e) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where forwarded requests did not include hostname on node-based adapters. This also makes error pages more reliable. - -- [#10642](https://github.com/withastro/astro/pull/10642) [`4f5dc14f315eba7ea6ec5cc8e5dacb0cb81288dd`](https://github.com/withastro/astro/commit/4f5dc14f315eba7ea6ec5cc8e5dacb0cb81288dd) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Fixes typing issues when using `format` and `quality` options with remote images - -- [#10616](https://github.com/withastro/astro/pull/10616) [`317d18ef8c9cf4fd13647518e3fd352774a86481`](https://github.com/withastro/astro/commit/317d18ef8c9cf4fd13647518e3fd352774a86481) Thanks [@NikolaRHristov](https://github.com/NikolaRHristov)! - This change disables the `sharp` `libvips` image cache as it errors when the - file is too small and operations are happening too fast (runs into a race - condition) - -## 4.5.14 - -### Patch Changes - -- [#10470](https://github.com/withastro/astro/pull/10470) [`320c309ca9fbe51c40e6ba846d04a0cb49aced5f`](https://github.com/withastro/astro/commit/320c309ca9fbe51c40e6ba846d04a0cb49aced5f) Thanks [@liruifengv](https://github.com/liruifengv)! - improves `client:only` error message - -- [#10496](https://github.com/withastro/astro/pull/10496) [`ce985631129e49f7ea90e6ea690ef9f9cf0e6987`](https://github.com/withastro/astro/commit/ce985631129e49f7ea90e6ea690ef9f9cf0e6987) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Makes the warning less scary when adding 3rd-party integrations using `astro add` - -## 4.5.13 - -### Patch Changes - -- [#10495](https://github.com/withastro/astro/pull/10495) [`046d69d517118ab5c0e71604b321729d66ddffff`](https://github.com/withastro/astro/commit/046d69d517118ab5c0e71604b321729d66ddffff) Thanks [@satyarohith](https://github.com/satyarohith)! - This patch allows astro to run in node-compat mode in Deno. Deno doesn't support - construction of response from async iterables in node-compat mode so we need to - use ReadableStream. - -- [#10605](https://github.com/withastro/astro/pull/10605) [`a16a829f4e25ad5c9a1b4557ec089fc8ab53320f`](https://github.com/withastro/astro/commit/a16a829f4e25ad5c9a1b4557ec089fc8ab53320f) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue with outdated page titles in browser history when using text fragments in view transition navigation. - -- [#10584](https://github.com/withastro/astro/pull/10584) [`e648c5575a8774af739231cfa9fc27a32086aa5f`](https://github.com/withastro/astro/commit/e648c5575a8774af739231cfa9fc27a32086aa5f) Thanks [@duanwilliam](https://github.com/duanwilliam)! - Fixes a bug where JSX runtime would error on components with nullish prop values in certain conditions. - -- [#10608](https://github.com/withastro/astro/pull/10608) [`e31bea0704890ff92ce4f9b0ce536c1c90715f2c`](https://github.com/withastro/astro/commit/e31bea0704890ff92ce4f9b0ce536c1c90715f2c) Thanks [@matthewp](https://github.com/matthewp)! - Fixes bug with head content being pushed into body - -- Updated dependencies [[`2cf116f80cb5e421ab5cc5eb4a654e7b78c1b8de`](https://github.com/withastro/astro/commit/2cf116f80cb5e421ab5cc5eb4a654e7b78c1b8de), [`374efcdff9625ca43309d89e3b9cfc9174351512`](https://github.com/withastro/astro/commit/374efcdff9625ca43309d89e3b9cfc9174351512)]: - - @astrojs/markdown-remark@5.0.0 - -## 4.5.12 - -### Patch Changes - -- [#10596](https://github.com/withastro/astro/pull/10596) [`20463a6c1e1271d8dc3cb0ab3419ee5c72abd218`](https://github.com/withastro/astro/commit/20463a6c1e1271d8dc3cb0ab3419ee5c72abd218) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Add `removeBase` function - -- Updated dependencies [[`20463a6c1e1271d8dc3cb0ab3419ee5c72abd218`](https://github.com/withastro/astro/commit/20463a6c1e1271d8dc3cb0ab3419ee5c72abd218)]: - - @astrojs/internal-helpers@0.4.0 - -## 4.5.11 - -### Patch Changes - -- [#10567](https://github.com/withastro/astro/pull/10567) [`fbdc10f90f7baa5c49f2f53e3e4ce8f453814c01`](https://github.com/withastro/astro/commit/fbdc10f90f7baa5c49f2f53e3e4ce8f453814c01) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `astro:assets` not working when using complex config with `vite.build.rollupOptions.output.assetFileNames` - -- [#10593](https://github.com/withastro/astro/pull/10593) [`61e283e5a0d95b6ef5d3c4c985d6ee78f74bbd8e`](https://github.com/withastro/astro/commit/61e283e5a0d95b6ef5d3c4c985d6ee78f74bbd8e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes Polymorphic type helper causing TypeScript errors in certain cases after the previous update - -- [#10543](https://github.com/withastro/astro/pull/10543) [`0fd36bdb383297b32cc523b57d2442132da41595`](https://github.com/withastro/astro/commit/0fd36bdb383297b32cc523b57d2442132da41595) Thanks [@matthewp](https://github.com/matthewp)! - Fixes inline stylesheets with content collections cache - -- [#10582](https://github.com/withastro/astro/pull/10582) [`a05953538fcf524786385830b99c0c5a015173e8`](https://github.com/withastro/astro/commit/a05953538fcf524786385830b99c0c5a015173e8) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where the dev server got stuck in a loop while routing responses with a 404 status code to the 404 route. - -## 4.5.10 - -### Patch Changes - -- [#10549](https://github.com/withastro/astro/pull/10549) [`54c2f9707f5d038630143f769e3075c698474654`](https://github.com/withastro/astro/commit/54c2f9707f5d038630143f769e3075c698474654) Thanks [@admirsaheta](https://github.com/admirsaheta)! - Updates the `HTMLAttributes` type exported from `astro` to allow data attributes - -- [#10562](https://github.com/withastro/astro/pull/10562) [`348c1ca1323d0516c2dcf8e963343cd12cb5407f`](https://github.com/withastro/astro/commit/348c1ca1323d0516c2dcf8e963343cd12cb5407f) Thanks [@apetta](https://github.com/apetta)! - Fixes minor type issues inside the built-in components of Astro - -- [#10550](https://github.com/withastro/astro/pull/10550) [`34fa8e131b85531e6629390307108ffc4adb7ed1`](https://github.com/withastro/astro/commit/34fa8e131b85531e6629390307108ffc4adb7ed1) Thanks [@Skn0tt](https://github.com/Skn0tt)! - Fixes bug where server builds would include unneeded assets in SSR Function, potentially leading to upload errors on Vercel, Netlify because of size limits - -- Updated dependencies [[`c585528f446ccca3d4c643f4af5d550b93c18902`](https://github.com/withastro/astro/commit/c585528f446ccca3d4c643f4af5d550b93c18902)]: - - @astrojs/markdown-remark@4.3.2 - -## 4.5.9 - -### Patch Changes - -- [#10532](https://github.com/withastro/astro/pull/10532) [`8306ce1ff7b71a2a0d7908336c9be462a54d395a`](https://github.com/withastro/astro/commit/8306ce1ff7b71a2a0d7908336c9be462a54d395a) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a style issue of `client:only` components in DEV mode during view transitions. - -- [#10473](https://github.com/withastro/astro/pull/10473) [`627e47d67af4846cea2acf26a96b4124001b26fc`](https://github.com/withastro/astro/commit/627e47d67af4846cea2acf26a96b4124001b26fc) Thanks [@bluwy](https://github.com/bluwy)! - Fixes and improves performance when rendering Astro JSX - -## 4.5.8 - -### Patch Changes - -- [#10504](https://github.com/withastro/astro/pull/10504) [`8e4e554cc211e59c329c0a5d110c839c886ff120`](https://github.com/withastro/astro/commit/8e4e554cc211e59c329c0a5d110c839c886ff120) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Update Babel version to fix regression in Babel's `7.24.2`. - -- Updated dependencies [[`19e42c368184013fc30d1e46753b9e9383bb2bdf`](https://github.com/withastro/astro/commit/19e42c368184013fc30d1e46753b9e9383bb2bdf)]: - - @astrojs/markdown-remark@4.3.1 - -## 4.5.7 - -### Patch Changes - -- [#10493](https://github.com/withastro/astro/pull/10493) [`e4a6462751725878bfe47632eeafa6854cad5bf2`](https://github.com/withastro/astro/commit/e4a6462751725878bfe47632eeafa6854cad5bf2) Thanks [@firefoxic](https://github.com/firefoxic)! - `` tags created by astro for optimized stylesheets now do not include the closing forward slash. This slash is optional for void elements such as link, but made some html validation fail. - -## 4.5.6 - -### Patch Changes - -- [#10455](https://github.com/withastro/astro/pull/10455) [`c12666166db724915e42e37a048483c99f88e6d9`](https://github.com/withastro/astro/commit/c12666166db724915e42e37a048483c99f88e6d9) Thanks [@lilnasy](https://github.com/lilnasy)! - Adds a helpful error message that will be shown when an endpoint does not return a `Response`. - -- [#10426](https://github.com/withastro/astro/pull/10426) [`6a9a35ee15069541c3144012385366a3c689240a`](https://github.com/withastro/astro/commit/6a9a35ee15069541c3144012385366a3c689240a) Thanks [@markgaze](https://github.com/markgaze)! - Fixes an issue with generating JSON schemas when the schema is a function - -- [#10448](https://github.com/withastro/astro/pull/10448) [`fcece3658697248ab58f77b3d4a8b14d362f3c47`](https://github.com/withastro/astro/commit/fcece3658697248ab58f77b3d4a8b14d362f3c47) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where multiple rendering errors resulted in a crash of the SSR app server. - -## 4.5.5 - -### Patch Changes - -- [#10379](https://github.com/withastro/astro/pull/10379) [`3776ecf0aa9e08a992d3ae76e90682fd04093721`](https://github.com/withastro/astro/commit/3776ecf0aa9e08a992d3ae76e90682fd04093721) Thanks [@1574242600](https://github.com/1574242600)! - Fixes a routing issue with partially truncated dynamic segments. - -- [#10442](https://github.com/withastro/astro/pull/10442) [`f8e0ad3c52a37b8a2175fe2f5ff2bd0cd738f499`](https://github.com/withastro/astro/commit/f8e0ad3c52a37b8a2175fe2f5ff2bd0cd738f499) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes small rendering issues with the dev toolbar in certain contexts - -- [#10438](https://github.com/withastro/astro/pull/10438) [`5b48cc0fc8383b0659a595afd3a6ee28b28779c3`](https://github.com/withastro/astro/commit/5b48cc0fc8383b0659a595afd3a6ee28b28779c3) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Generate Astro DB types when running `astro sync`. - -- [#10456](https://github.com/withastro/astro/pull/10456) [`1900a8f9bc337f3a882178d1770e10ab67fab0ce`](https://github.com/withastro/astro/commit/1900a8f9bc337f3a882178d1770e10ab67fab0ce) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an error when using `astro:transtions/client` without `` - -## 4.5.4 - -### Patch Changes - -- [#10427](https://github.com/withastro/astro/pull/10427) [`128c7a36397d99608dea918885b68bd302d00e7f`](https://github.com/withastro/astro/commit/128c7a36397d99608dea918885b68bd302d00e7f) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where error pages did not have access to the `Astro.locals` fields provided by the adapter. - -## 4.5.3 - -### Patch Changes - -- [#10410](https://github.com/withastro/astro/pull/10410) [`055fe293c6702dd27bcd6c4f59297c6d4385abb1`](https://github.com/withastro/astro/commit/055fe293c6702dd27bcd6c4f59297c6d4385abb1) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where configured redirects could not include certain characters in the target path. - -- [#9820](https://github.com/withastro/astro/pull/9820) [`8edc42aa7c209b12d98ecf20cdecccddf7314af0`](https://github.com/withastro/astro/commit/8edc42aa7c209b12d98ecf20cdecccddf7314af0) Thanks [@alexnguyennz](https://github.com/alexnguyennz)! - Prevents fully formed URLs in attributes from being escaped - -## 4.5.2 - -### Patch Changes - -- [#10400](https://github.com/withastro/astro/pull/10400) [`629c9d7c4d96ae5711d95601e738b3d31d268116`](https://github.com/withastro/astro/commit/629c9d7c4d96ae5711d95601e738b3d31d268116) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where dev toolbar x-ray didn't escape props content. - -## 4.5.1 - -### Patch Changes - -- [#10392](https://github.com/withastro/astro/pull/10392) [`02aeb01cb8b62b9cc4dfe6069857219404343b73`](https://github.com/withastro/astro/commit/02aeb01cb8b62b9cc4dfe6069857219404343b73) Thanks [@martrapp](https://github.com/martrapp)! - Fixes broken types for some functions of `astro:transitions/client`. - -- [#10390](https://github.com/withastro/astro/pull/10390) [`236cdbb611587692d3c781850cb949604677ef82`](https://github.com/withastro/astro/commit/236cdbb611587692d3c781850cb949604677ef82) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds `--help` reference for new db and studio CLI commands - -## 4.5.0 - -### Minor Changes - -- [#10206](https://github.com/withastro/astro/pull/10206) [`dc87214141e7f8406c0fdf6a7f425dad6dea6d3e`](https://github.com/withastro/astro/commit/dc87214141e7f8406c0fdf6a7f425dad6dea6d3e) Thanks [@lilnasy](https://github.com/lilnasy)! - Allows middleware to run when a matching page or endpoint is not found. Previously, a `pages/404.astro` or `pages/[...catch-all].astro` route had to match to allow middleware. This is now not necessary. - - When a route does not match in SSR deployments, your adapter may show a platform-specific 404 page instead of running Astro's SSR code. In these cases, you may still need to add a `404.astro` or fallback route with spread params, or use a routing configuration option if your adapter provides one. - -- [#9960](https://github.com/withastro/astro/pull/9960) [`c081adf998d30419fed97d8fccc11340cdc512e0`](https://github.com/withastro/astro/commit/c081adf998d30419fed97d8fccc11340cdc512e0) Thanks [@StandardGage](https://github.com/StandardGage)! - Allows passing any props to the `` component - -- [#10102](https://github.com/withastro/astro/pull/10102) [`e3f02f5fb1cf0dae3c54beb3a4af3dbf3b06abb7`](https://github.com/withastro/astro/commit/e3f02f5fb1cf0dae3c54beb3a4af3dbf3b06abb7) Thanks [@bluwy](https://github.com/bluwy)! - Adds a new `experimental.directRenderScript` configuration option which provides a more reliable strategy to prevent scripts from being executed in pages where they are not used. - - This replaces the `experimental.optimizeHoistedScript` flag introduced in v2.10.4 to prevent unused components' scripts from being included in a page unexpectedly. That experimental option no longer exists and must be removed from your configuration, whether or not you enable `directRenderScript`: - - ```diff - // astro.config.mjs - import { defineConfig } from 'astro/config'; - - export default defineConfig({ - experimental: { - - optimizeHoistedScript: true, - + directRenderScript: true - } - }); - ``` - - With `experimental.directRenderScript` configured, scripts are now directly rendered as declared in Astro files (including existing features like TypeScript, importing `node_modules`, and deduplicating scripts). You can also now conditionally render scripts in your Astro file. - - However, this means scripts are no longer hoisted to the `` and multiple scripts on a page are no longer bundled together. If you enable this option, you should check that all your ` - ``` - -- [#10145](https://github.com/withastro/astro/pull/10145) [`65692fa7b5f4440c644c8cf3dd9bc50103d2c33b`](https://github.com/withastro/astro/commit/65692fa7b5f4440c644c8cf3dd9bc50103d2c33b) Thanks [@alexanderniebuhr](https://github.com/alexanderniebuhr)! - Adds experimental JSON Schema support for content collections. - - This feature will auto-generate a JSON Schema for content collections of `type: 'data'` which can be used as the `$schema` value for TypeScript-style autocompletion/hints in tools like VSCode. - - To enable this feature, add the experimental flag: - - ```diff - import { defineConfig } from 'astro/config'; - - export default defineConfig({ - experimental: { - + contentCollectionJsonSchema: true - } - }); - ``` - - This experimental implementation requires you to manually reference the schema in each data entry file of the collection: - - ```diff - // src/content/test/entry.json - { - + "$schema": "../../../.astro/collections/test.schema.json", - "test": "test" - } - ``` - - Alternatively, you can set this in your [VSCode `json.schemas` settings](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings): - - ```diff - "json.schemas": [ - { - "fileMatch": [ - "/src/content/test/**" - ], - "url": "../../../.astro/collections/test.schema.json" - } - ] - ``` - - Note that this initial implementation uses a library with [known issues for advanced Zod schemas](https://github.com/StefanTerdell/zod-to-json-schema#known-issues), so you may wish to consult these limitations before enabling the experimental flag. - -- [#10130](https://github.com/withastro/astro/pull/10130) [`5a9528741fa98d017b269c7e4f013058028bdc5d`](https://github.com/withastro/astro/commit/5a9528741fa98d017b269c7e4f013058028bdc5d) Thanks [@bluwy](https://github.com/bluwy)! - Migrates `shikiji` to `shiki` 1.0 - -- [#10268](https://github.com/withastro/astro/pull/10268) [`2013e70bce16366781cc12e52823bb257fe460c0`](https://github.com/withastro/astro/commit/2013e70bce16366781cc12e52823bb257fe460c0) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for page mutations to the audits in the dev toolbar. Astro will now rerun the audits whenever elements are added or deleted from the page. - -- [#10217](https://github.com/withastro/astro/pull/10217) [`5c7862a9fe69954f8630538ebb7212cd04b8a810`](https://github.com/withastro/astro/commit/5c7862a9fe69954f8630538ebb7212cd04b8a810) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates the UI for dev toolbar audits with new information - -### Patch Changes - -- [#10360](https://github.com/withastro/astro/pull/10360) [`ac766647b0e6156b7c4a0bb9a11981fe168852d7`](https://github.com/withastro/astro/commit/ac766647b0e6156b7c4a0bb9a11981fe168852d7) Thanks [@nmattia](https://github.com/nmattia)! - Fixes an issue where some CLI commands attempted to directly read vite config files. - -- [#10291](https://github.com/withastro/astro/pull/10291) [`8107a2721b6abb07c3120ac90e03c39f2a44ab0c`](https://github.com/withastro/astro/commit/8107a2721b6abb07c3120ac90e03c39f2a44ab0c) Thanks [@bluwy](https://github.com/bluwy)! - Treeshakes unused Astro component scoped styles - -- [#10368](https://github.com/withastro/astro/pull/10368) [`78bafc5d661ff7dd071c241cb1303c4d8a774d21`](https://github.com/withastro/astro/commit/78bafc5d661ff7dd071c241cb1303c4d8a774d21) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates the base `tsconfig.json` preset with `jsx: 'preserve'` in order to fix errors when importing Astro files inside `.js` and `.ts` files. - -- Updated dependencies [[`c081adf998d30419fed97d8fccc11340cdc512e0`](https://github.com/withastro/astro/commit/c081adf998d30419fed97d8fccc11340cdc512e0), [`1ea0a25b94125e4f6f2ac82b42f638e22d7bdffd`](https://github.com/withastro/astro/commit/1ea0a25b94125e4f6f2ac82b42f638e22d7bdffd), [`5a9528741fa98d017b269c7e4f013058028bdc5d`](https://github.com/withastro/astro/commit/5a9528741fa98d017b269c7e4f013058028bdc5d), [`a31bbd7ff8f3ec62ee507f72d1d25140b82ffc18`](https://github.com/withastro/astro/commit/a31bbd7ff8f3ec62ee507f72d1d25140b82ffc18)]: - - @astrojs/markdown-remark@4.3.0 - - @astrojs/internal-helpers@0.3.0 - -## 4.4.15 - -### Patch Changes - -- [#10317](https://github.com/withastro/astro/pull/10317) [`33583e8b31ee8a33e26cf57f30bb422921f4745d`](https://github.com/withastro/astro/commit/33583e8b31ee8a33e26cf57f30bb422921f4745d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where elements slotted within interactive framework components disappeared after hydration. - -## 4.4.14 - -### Patch Changes - -- [#10355](https://github.com/withastro/astro/pull/10355) [`8ce9fffd44b0740621178d61fb1425bf4155c2d7`](https://github.com/withastro/astro/commit/8ce9fffd44b0740621178d61fb1425bf4155c2d7) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression where full dynamic routes were prioritized over partial dynamic routes. Now a route like `food-[name].astro` is matched **before** `[name].astro`. - -- [#10356](https://github.com/withastro/astro/pull/10356) [`d121311a3f4b5345e344e31f75d4e7164d65f729`](https://github.com/withastro/astro/commit/d121311a3f4b5345e344e31f75d4e7164d65f729) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where `getCollection` might return `undefined` when content collection is empty - -- [#10325](https://github.com/withastro/astro/pull/10325) [`f33cce8f6c3a2e17847658cdedb015bd93cc1ee3`](https://github.com/withastro/astro/commit/f33cce8f6c3a2e17847658cdedb015bd93cc1ee3) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where `ctx.site` included the configured `base` in API routes and middleware, unlike `Astro.site` in astro pages. - -- [#10343](https://github.com/withastro/astro/pull/10343) [`f973aa9110592fa9017bbe84387f22c24a6d7159`](https://github.com/withastro/astro/commit/f973aa9110592fa9017bbe84387f22c24a6d7159) Thanks [@ematipico](https://github.com/ematipico)! - Fixes some false positive in the dev toolbar a11y audits, by adding the `a` element to the list of interactive elements. - -- [#10295](https://github.com/withastro/astro/pull/10295) [`fdd5bf277e5c1cfa30c1bd2ca123f4e90e8d09d9`](https://github.com/withastro/astro/commit/fdd5bf277e5c1cfa30c1bd2ca123f4e90e8d09d9) Thanks [@rossrobino](https://github.com/rossrobino)! - Adds a prefetch fallback when using the `experimental.clientPrerender` option. If prerendering fails, which can happen if [Chrome extensions block prerendering](https://developer.chrome.com/blog/speculation-rules-improvements#chrome-limits), it will fallback to prefetching the URL. This works by adding a `prefetch` field to the `speculationrules` script, but does not create an extra request. - -## 4.4.13 - -### Patch Changes - -- [#10342](https://github.com/withastro/astro/pull/10342) [`a2e9b2b936666b2a4779feb00dcb8ff0ab82c2ec`](https://github.com/withastro/astro/commit/a2e9b2b936666b2a4779feb00dcb8ff0ab82c2ec) Thanks [@matthewp](https://github.com/matthewp)! - Fixes @astrojs/db loading TS in the fixtures - -## 4.4.12 - -### Patch Changes - -- [#10336](https://github.com/withastro/astro/pull/10336) [`f2e60a96754ed1d86001fe4d5d3a0c0ef657408d`](https://github.com/withastro/astro/commit/f2e60a96754ed1d86001fe4d5d3a0c0ef657408d) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Fixes an issue where slotting interactive components within a "client:only" component prevented all component code in the page from running. - -## 4.4.11 - -### Patch Changes - -- [#10281](https://github.com/withastro/astro/pull/10281) [`9deb919ff95b1d2ffe5a5f70ec683e32ebfafd05`](https://github.com/withastro/astro/commit/9deb919ff95b1d2ffe5a5f70ec683e32ebfafd05) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where `404.astro` was ignored with `i18n` routing enabled. - -- [#10279](https://github.com/withastro/astro/pull/10279) [`9ba3e2605daee3861e3bf6c5768f1d8bced4709d`](https://github.com/withastro/astro/commit/9ba3e2605daee3861e3bf6c5768f1d8bced4709d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where returning redirect responses resulted in missing files with certain adapters. - -- [#10319](https://github.com/withastro/astro/pull/10319) [`19ecccedaab6d8fa0ff23711c88fa7d4fa34df38`](https://github.com/withastro/astro/commit/19ecccedaab6d8fa0ff23711c88fa7d4fa34df38) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where streaming SSR responses sometimes failed with "`iterator.result` is not a function" on node-based adapters. - -- [#10302](https://github.com/withastro/astro/pull/10302) [`992537e79f1847b590a2e226aac88a47a6304f68`](https://github.com/withastro/astro/commit/992537e79f1847b590a2e226aac88a47a6304f68) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes an issue that causes static entrypoints build to fail because of the path in certain conditions. Specifically, it failed if the path had an extension (like `.astro`, `.mdx` etc) and such extension would be also within the path (like `./.astro/index.astro`). - -- [#10298](https://github.com/withastro/astro/pull/10298) [`819d20a89c0d269333c2d397c1080884f516307a`](https://github.com/withastro/astro/commit/819d20a89c0d269333c2d397c1080884f516307a) Thanks [@Fryuni](https://github.com/Fryuni)! - Fix an incorrect conflict resolution between pages generated from static routes and rest parameters - -## 4.4.10 - -### Patch Changes - -- [#10235](https://github.com/withastro/astro/pull/10235) [`4bc360cd5f25496aca3232f6efb3710424a14a34`](https://github.com/withastro/astro/commit/4bc360cd5f25496aca3232f6efb3710424a14a34) Thanks [@sanman1k98](https://github.com/sanman1k98)! - Fixes jerky scrolling on IOS when using view transitions. - -## 4.4.9 - -### Patch Changes - -- [#10278](https://github.com/withastro/astro/pull/10278) [`a548a3a99c2835c19662fc38636f92b2bda26614`](https://github.com/withastro/astro/commit/a548a3a99c2835c19662fc38636f92b2bda26614) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes original images sometimes being kept / deleted when they shouldn't in both MDX and Markdoc - -- [#10280](https://github.com/withastro/astro/pull/10280) [`3488be9b59d1cb65325b0e087c33bcd74aaa4926`](https://github.com/withastro/astro/commit/3488be9b59d1cb65325b0e087c33bcd74aaa4926) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Finalize db API to a shared db/ directory. - -## 4.4.8 - -### Patch Changes - -- [#10275](https://github.com/withastro/astro/pull/10275) [`5e3e74b61daa2ba44c761c9ab5745818661a656e`](https://github.com/withastro/astro/commit/5e3e74b61daa2ba44c761c9ab5745818661a656e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes dev toolbar warning about using the proper loading attributes on images using `data:` URIs - -## 4.4.7 - -### Patch Changes - -- [#10274](https://github.com/withastro/astro/pull/10274) [`e556151603a2f0173059d0f98fdcbec0610b48ff`](https://github.com/withastro/astro/commit/e556151603a2f0173059d0f98fdcbec0610b48ff) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression introduced in v4.4.5 where image optimization did not work in dev mode when a base was configured. - -- [#10263](https://github.com/withastro/astro/pull/10263) [`9bdbed723e0aa4243d7d6ee64d1c1df3b75b9aeb`](https://github.com/withastro/astro/commit/9bdbed723e0aa4243d7d6ee64d1c1df3b75b9aeb) Thanks [@martrapp](https://github.com/martrapp)! - Adds auto completion for `astro:` event names when adding or removing event listeners on `document`. - -- [#10284](https://github.com/withastro/astro/pull/10284) [`07f89429a1ef5173d3321e0b362a9dc71fc74fe5`](https://github.com/withastro/astro/commit/07f89429a1ef5173d3321e0b362a9dc71fc74fe5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes an issue where in Node SSR, the image endpoint could be used maliciously to reveal unintended information about the underlying system. - - Thanks to Google Security Team for reporting this issue. - -## 4.4.6 - -### Patch Changes - -- [#10247](https://github.com/withastro/astro/pull/10247) [`fb773c9161bf8faa5ebd7e115f3564c3359e56ea`](https://github.com/withastro/astro/commit/fb773c9161bf8faa5ebd7e115f3564c3359e56ea) Thanks [@martrapp](https://github.com/martrapp)! - Fixes an issue where `transition:animate="none"` still allowed the browser-native morph animation. - -- [#10248](https://github.com/withastro/astro/pull/10248) [`8ae5d99534fc09d650e10e64a09b61a2807574f2`](https://github.com/withastro/astro/commit/8ae5d99534fc09d650e10e64a09b61a2807574f2) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where multiple injected routes with the same `entrypoint` but different `pattern` were incorrectly cached, causing some of them not being rendered in the dev server. - -- [#10250](https://github.com/withastro/astro/pull/10250) [`57655a99db34e20e9661c039fab253b867013318`](https://github.com/withastro/astro/commit/57655a99db34e20e9661c039fab253b867013318) Thanks [@log101](https://github.com/log101)! - Fixes the overwriting of localised index pages with redirects - -- [#10239](https://github.com/withastro/astro/pull/10239) [`9c21a9df6b03e36bd78dc553e13c55b9ef8c44cd`](https://github.com/withastro/astro/commit/9c21a9df6b03e36bd78dc553e13c55b9ef8c44cd) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Improves the message of `MiddlewareCantBeLoaded` for clarity - -- [#10222](https://github.com/withastro/astro/pull/10222) [`ade9759cae74ca262b988260250bcb202235e811`](https://github.com/withastro/astro/commit/ade9759cae74ca262b988260250bcb202235e811) Thanks [@martrapp](https://github.com/martrapp)! - Adds a warning in DEV mode when using view transitions on a device with prefer-reduced-motion enabled. - -- [#10251](https://github.com/withastro/astro/pull/10251) [`9b00de0a76b4f4b5b808e8c78e4906a2497e8ecf`](https://github.com/withastro/astro/commit/9b00de0a76b4f4b5b808e8c78e4906a2497e8ecf) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes TypeScript type definitions for `Code` component `theme` and `experimentalThemes` props - -## 4.4.5 - -### Patch Changes - -- [#10221](https://github.com/withastro/astro/pull/10221) [`4db82d9c7dce3b73fe43b86020fcfa326c1357ec`](https://github.com/withastro/astro/commit/4db82d9c7dce3b73fe43b86020fcfa326c1357ec) Thanks [@matthewp](https://github.com/matthewp)! - Prevents errors in templates from crashing the server - -- [#10219](https://github.com/withastro/astro/pull/10219) [`afcb9d331179287629b5ffce4020931258bebefa`](https://github.com/withastro/astro/commit/afcb9d331179287629b5ffce4020931258bebefa) Thanks [@matthewp](https://github.com/matthewp)! - Fix dynamic slots missing hydration scripts - -- [#10220](https://github.com/withastro/astro/pull/10220) [`1eadb1c5290f2f4baf538c34889a09d5fcfb9bd4`](https://github.com/withastro/astro/commit/1eadb1c5290f2f4baf538c34889a09d5fcfb9bd4) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes some built-in apps of the dev toolbar not closing when clicking the page - -- [#10154](https://github.com/withastro/astro/pull/10154) [`e64bd0740b44aed5cfaf67e5c37a1c56ed4442f4`](https://github.com/withastro/astro/commit/e64bd0740b44aed5cfaf67e5c37a1c56ed4442f4) Thanks [@Cherry](https://github.com/Cherry)! - Fixes an issue where `config.vite.build.assetsInlineLimit` could not be set as a function. - -- [#10196](https://github.com/withastro/astro/pull/10196) [`8fb32f390d40cfa12a82c0645928468d27218866`](https://github.com/withastro/astro/commit/8fb32f390d40cfa12a82c0645928468d27218866) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where a warning about headers being accessed in static mode is unnecessarily shown when i18n is enabled. - -- [#10199](https://github.com/withastro/astro/pull/10199) [`6aa660ae7abc6841d7a3396b29f10b9fb7910ce5`](https://github.com/withastro/astro/commit/6aa660ae7abc6841d7a3396b29f10b9fb7910ce5) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where prerendered pages had access to query params in dev mode. - -## 4.4.4 - -### Patch Changes - -- [#10195](https://github.com/withastro/astro/pull/10195) [`903eace233033998811b72e27a54c80d8e59ff37`](https://github.com/withastro/astro/commit/903eace233033998811b72e27a54c80d8e59ff37) Thanks [@1574242600](https://github.com/1574242600)! - Fix build failure caused by read-only files under /public (in the presence of client-side JS). - -- [#10205](https://github.com/withastro/astro/pull/10205) [`459f74bc71748279fe7dce0688f38bd74b51c5c1`](https://github.com/withastro/astro/commit/459f74bc71748279fe7dce0688f38bd74b51c5c1) Thanks [@martrapp](https://github.com/martrapp)! - Adds an error message for non-string transition:name values - -- [#10208](https://github.com/withastro/astro/pull/10208) [`8cd38f02456640c063552aef00b2b8a216b3935d`](https://github.com/withastro/astro/commit/8cd38f02456640c063552aef00b2b8a216b3935d) Thanks [@log101](https://github.com/log101)! - Fixes custom headers are not added to the Node standalone server responses in preview mode - -## 4.4.3 - -### Patch Changes - -- [#10143](https://github.com/withastro/astro/pull/10143) [`7c5fcd2fa817472f480bbfbbc11b9ed71a7210ab`](https://github.com/withastro/astro/commit/7c5fcd2fa817472f480bbfbbc11b9ed71a7210ab) Thanks [@bluwy](https://github.com/bluwy)! - Improves the default `optimizeDeps.entries` Vite config to avoid globbing server endpoints, and respect the `srcDir` option - -- [#10197](https://github.com/withastro/astro/pull/10197) [`c856c729404196900a7386c8426b81e79684a6a9`](https://github.com/withastro/astro/commit/c856c729404196900a7386c8426b81e79684a6a9) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes errors being logged twice in some cases - -- [#10166](https://github.com/withastro/astro/pull/10166) [`598f30c7cd6c88558e3806d9bc5a15d426d83992`](https://github.com/withastro/astro/commit/598f30c7cd6c88558e3806d9bc5a15d426d83992) Thanks [@bluwy](https://github.com/bluwy)! - Improves Astro style tag HMR when updating imported styles - -- [#10194](https://github.com/withastro/astro/pull/10194) [`3cc20109277813ccb9578ca87a8b0d680a73c35c`](https://github.com/withastro/astro/commit/3cc20109277813ccb9578ca87a8b0d680a73c35c) Thanks [@matthewp](https://github.com/matthewp)! - Fixes an issue related to content collections usage in browser context caused by `csssec` - -## 4.4.2 - -### Patch Changes - -- [#10169](https://github.com/withastro/astro/pull/10169) [`a46249173edde66b03c19441144272baa8394fb4`](https://github.com/withastro/astro/commit/a46249173edde66b03c19441144272baa8394fb4) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue with the `i18n.routing` types, where an internal transformation was causing the generation of incorrect types for integrations. - -## 4.4.1 - -### Patch Changes - -- [#9795](https://github.com/withastro/astro/pull/9795) [`5acc3135ba5309a566def466fbcbabd23f70cd68`](https://github.com/withastro/astro/commit/5acc3135ba5309a566def466fbcbabd23f70cd68) Thanks [@lilnasy](https://github.com/lilnasy)! - Refactors internals relating to middleware, endpoints, and page rendering. - -- [#10105](https://github.com/withastro/astro/pull/10105) [`1f598b372410066c6fcd41cba9915f6aaf7befa8`](https://github.com/withastro/astro/commit/1f598b372410066c6fcd41cba9915f6aaf7befa8) Thanks [@negativems](https://github.com/negativems)! - Fixes an issue where some astro commands failed if the astro config file or an integration used the global `crypto` object. - -- [#10165](https://github.com/withastro/astro/pull/10165) [`d50dddb71d87ce5b7928920f10eb4946a5339f86`](https://github.com/withastro/astro/commit/d50dddb71d87ce5b7928920f10eb4946a5339f86) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the `i18n.routing` object had all its fields defined as mandatory. Now they all are optionals and shouldn't break when using `astro.config.mts`. - -- [#10132](https://github.com/withastro/astro/pull/10132) [`1da9c5f2f3fe70b0206d1b3e0c01744fa40d511c`](https://github.com/withastro/astro/commit/1da9c5f2f3fe70b0206d1b3e0c01744fa40d511c) Thanks [@bluwy](https://github.com/bluwy)! - Simplifies internal Vite preview server teardown - -- [#10163](https://github.com/withastro/astro/pull/10163) [`b92d35f1026f3e99abb888d1a845bdda4efdc327`](https://github.com/withastro/astro/commit/b92d35f1026f3e99abb888d1a845bdda4efdc327) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where audit fails to initialize when encountered `
` inside `` - -- [#10079](https://github.com/withastro/astro/pull/10079) [`80f8996514e6d0546e94bd927650cd4ab2f1fa2f`](https://github.com/withastro/astro/commit/80f8996514e6d0546e94bd927650cd4ab2f1fa2f) Thanks [@ktym4a](https://github.com/ktym4a)! - Fix integrationData fetch to always be called even if View Transition is enabled. - -- [#10139](https://github.com/withastro/astro/pull/10139) [`3c73441eb2eaba767d6dad1b30c0353195d28791`](https://github.com/withastro/astro/commit/3c73441eb2eaba767d6dad1b30c0353195d28791) Thanks [@bluwy](https://github.com/bluwy)! - Fixes style-only change detection for Astro files if both the markup and styles are updated - -## 4.4.0 - -### Minor Changes - -- [#9614](https://github.com/withastro/astro/pull/9614) [`d469bebd7b45b060dc41d82ab1cf18ee6de7e051`](https://github.com/withastro/astro/commit/d469bebd7b45b060dc41d82ab1cf18ee6de7e051) Thanks [@matthewp](https://github.com/matthewp)! - Improves Node.js streaming performance. - - This uses an `AsyncIterable` instead of a `ReadableStream` to do streaming in Node.js. This is a non-standard enhancement by Node, which is done only in that environment. - -- [#10001](https://github.com/withastro/astro/pull/10001) [`748b2e87cd44d8bcc1ab9d7e504703057e2000cd`](https://github.com/withastro/astro/commit/748b2e87cd44d8bcc1ab9d7e504703057e2000cd) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Removes content collection warning when a configured collection does not have a matching directory name. This should resolve `i18n` collection warnings for Starlight users. - - This also ensures configured collection names are always included in `getCollection()` and `getEntry()` types even when a matching directory is absent. We hope this allows users to discover typos during development by surfacing type information. - -- [#10074](https://github.com/withastro/astro/pull/10074) [`7443929381b47db0639c49a4d32aec4177bd9102`](https://github.com/withastro/astro/commit/7443929381b47db0639c49a4d32aec4177bd9102) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Add a UI showing the list of found problems when using the audit app in the dev toolbar - -- [#10099](https://github.com/withastro/astro/pull/10099) [`b340f8fe3aaa81e38c4f1aa41498b159dc733d86`](https://github.com/withastro/astro/commit/b340f8fe3aaa81e38c4f1aa41498b159dc733d86) Thanks [@martrapp](https://github.com/martrapp)! - Fixes a regression where view transition names containing special characters such as spaces or punctuation stopped working. - - Regular use naming your transitions with `transition: name` is unaffected. - - However, this fix may result in breaking changes if your project relies on the particular character encoding strategy Astro uses to translate `transition:name` directives into values of the underlying CSS `view-transition-name` property. For example, `Welcome to Astro` is now encoded as `Welcome_20to_20Astro_2e`. - - This mainly affects spaces and punctuation marks but no Unicode characters with codes >= 128. - -- [#9976](https://github.com/withastro/astro/pull/9976) [`91f75afbc642b6e73dd4ec18a1fe2c3128c68132`](https://github.com/withastro/astro/commit/91f75afbc642b6e73dd4ec18a1fe2c3128c68132) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Adds a new optional `astro:assets` image attribute `inferSize` for use with remote images. - - Remote images can now have their dimensions inferred just like local images. Setting `inferSize` to `true` allows you to use `getImage()` and the `` and `` components without setting the `width` and `height` properties. - - ```astro - --- - import { Image, Picture, getImage } from 'astro:assets'; - const myPic = await getImage({ src: 'https://example.com/example.png', inferSize: true }); - --- - - - - ``` - - Read more about [using `inferSize` with remote images](https://docs.astro.build/en/guides/images/#infersize) in our documentation. - -- [#10015](https://github.com/withastro/astro/pull/10015) [`6884b103c8314a43e926c6acdf947cbf812a21f4`](https://github.com/withastro/astro/commit/6884b103c8314a43e926c6acdf947cbf812a21f4) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds initial support for performance audits to the dev toolbar - -### Patch Changes - -- [#10116](https://github.com/withastro/astro/pull/10116) [`4bcc249a9f34aaac59658ca626c828bd6dbb8046`](https://github.com/withastro/astro/commit/4bcc249a9f34aaac59658ca626c828bd6dbb8046) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where the dev server froze when typescript aliases were used. - -- [#10096](https://github.com/withastro/astro/pull/10096) [`227cd83a51bbd451dc223fd16f4cf1b87b8e44f8`](https://github.com/withastro/astro/commit/227cd83a51bbd451dc223fd16f4cf1b87b8e44f8) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes regression on routing priority for multi-layer index pages - - The sorting algorithm positions more specific routes before less specific routes, and considers index pages to be more specific than a dynamic route with a rest parameter inside of it. - This means that `/blog` is considered more specific than `/blog/[...slug]`. - - But this special case was being applied incorrectly to indexes, which could cause a problem in scenarios like the following: - - `/` - - `/blog` - - `/blog/[...slug]` - - The algorithm would make the following comparisons: - - `/` is more specific than `/blog` (incorrect) - - `/blog/[...slug]` is more specific than `/` (correct) - - `/blog` is more specific than `/blog/[...slug]` (correct) - - Although the incorrect first comparison is not a problem by itself, it could cause the algorithm to make the wrong decision. - Depending on the other routes in the project, the sorting could perform just the last two comparisons and by transitivity infer the inverse of the third (`/blog/[...slug` > `/` > `/blog`), which is incorrect. - - Now the algorithm doesn't have a special case for index pages and instead does the comparison soleley for rest parameter segments and their immediate parents, which is consistent with the transitivity property. - -- [#10120](https://github.com/withastro/astro/pull/10120) [`787e6f52470cf07fb50c865948b2bc8fe45a6d31`](https://github.com/withastro/astro/commit/787e6f52470cf07fb50c865948b2bc8fe45a6d31) Thanks [@bluwy](https://github.com/bluwy)! - Updates and supports Vite 5.1 - -- [#10096](https://github.com/withastro/astro/pull/10096) [`227cd83a51bbd451dc223fd16f4cf1b87b8e44f8`](https://github.com/withastro/astro/commit/227cd83a51bbd451dc223fd16f4cf1b87b8e44f8) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes edge case on i18n fallback routes - - Previously index routes deeply nested in the default locale, like `/some/nested/index.astro` could be mistaked as the root index for the default locale, resulting in an incorrect redirect on `/`. - -- [#10112](https://github.com/withastro/astro/pull/10112) [`476b79a61165d0aac5e98459a4ec90762050a14b`](https://github.com/withastro/astro/commit/476b79a61165d0aac5e98459a4ec90762050a14b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Renames the home Astro Devoolbar App to `astro:home` - -- [#10117](https://github.com/withastro/astro/pull/10117) [`51b6ff7403c1223b1c399e88373075972c82c24c`](https://github.com/withastro/astro/commit/51b6ff7403c1223b1c399e88373075972c82c24c) Thanks [@hippotastic](https://github.com/hippotastic)! - Fixes an issue where `create astro`, `astro add` and `@astrojs/upgrade` would fail due to unexpected package manager CLI output. - -## 4.3.7 - -### Patch Changes - -- [#9857](https://github.com/withastro/astro/pull/9857) [`73bd900754365b006ee730df9f379ba924e5b3fa`](https://github.com/withastro/astro/commit/73bd900754365b006ee730df9f379ba924e5b3fa) Thanks [@iamyunsin](https://github.com/iamyunsin)! - Fixes false positives in the dev overlay audit when multiple `role` values exist. - -- [#10075](https://github.com/withastro/astro/pull/10075) [`71273edbb429b5afdba6f8ee14681b66e4c09ecc`](https://github.com/withastro/astro/commit/71273edbb429b5afdba6f8ee14681b66e4c09ecc) Thanks [@lilnasy](https://github.com/lilnasy)! - Improves error messages for island hydration. - -- [#10072](https://github.com/withastro/astro/pull/10072) [`8106178043050d142bf385bed2990730518f28e2`](https://github.com/withastro/astro/commit/8106178043050d142bf385bed2990730518f28e2) Thanks [@lilnasy](https://github.com/lilnasy)! - Clarifies error messages in endpoint routing. - -- [#9971](https://github.com/withastro/astro/pull/9971) [`d9266c4467ca0faa1213c1a5995164e5655ab375`](https://github.com/withastro/astro/commit/d9266c4467ca0faa1213c1a5995164e5655ab375) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where ReadableStream wasn't canceled in dev mode - -## 4.3.6 - -### Patch Changes - -- [#10063](https://github.com/withastro/astro/pull/10063) [`dac759798c111494e76affd2c2504d63944871fe`](https://github.com/withastro/astro/commit/dac759798c111494e76affd2c2504d63944871fe) Thanks [@marwan-mohamed12](https://github.com/marwan-mohamed12)! - Moves `shikiji-core` from `devDependencies` to `dependencies` to prevent type errors - -- [#10067](https://github.com/withastro/astro/pull/10067) [`989ea63bb2a5a670021541198aa70b8dc7c4bd2f`](https://github.com/withastro/astro/commit/989ea63bb2a5a670021541198aa70b8dc7c4bd2f) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression in the `astro:i18n` module, where the functions `getAbsoluteLocaleUrl` and `getAbsoluteLocaleUrlList` returned a URL with double slash with a certain combination of options. - -- [#10060](https://github.com/withastro/astro/pull/10060) [`1810309e65c596266355c3b7bb36cdac70f3305e`](https://github.com/withastro/astro/commit/1810309e65c596266355c3b7bb36cdac70f3305e) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where custom client directives added by integrations broke builds with a custom root. - -- [#9991](https://github.com/withastro/astro/pull/9991) [`8fb67c81bb84530b39df4a1449c0862def0854af`](https://github.com/withastro/astro/commit/8fb67c81bb84530b39df4a1449c0862def0854af) Thanks [@ktym4a](https://github.com/ktym4a)! - Increases compatibility with standard browser behavior by changing where view transitions occur on browser back navigation. - -## 4.3.5 - -### Patch Changes - -- [#10022](https://github.com/withastro/astro/pull/10022) [`3fc76efb2a8faa47edf67562a1f0c84a19be1b33`](https://github.com/withastro/astro/commit/3fc76efb2a8faa47edf67562a1f0c84a19be1b33) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where types for the `astro:content` module did not include required exports, leading to typescript errors. - -- [#10016](https://github.com/withastro/astro/pull/10016) [`037e4f12dd2f460d66f72c9f2d992b95e74d2da9`](https://github.com/withastro/astro/commit/037e4f12dd2f460d66f72c9f2d992b95e74d2da9) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug where routes with a name that start with the name of the `i18n.defaultLocale` were incorrectly returning a 404 response. - -## 4.3.4 - -### Patch Changes - -- [#10013](https://github.com/withastro/astro/pull/10013) [`e6b5306a7de779ce495d0ff076d302de0aa57eaf`](https://github.com/withastro/astro/commit/e6b5306a7de779ce495d0ff076d302de0aa57eaf) Thanks [@delucis](https://github.com/delucis)! - Fixes a regression in content collection types - -- [#10003](https://github.com/withastro/astro/pull/10003) [`ce4283331f18c6178654dd705e3cf02efeef004a`](https://github.com/withastro/astro/commit/ce4283331f18c6178654dd705e3cf02efeef004a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Adds support for `.strict()` on content collection schemas when a custom `slug` is present. - -## 4.3.3 - -### Patch Changes - -- [#9998](https://github.com/withastro/astro/pull/9998) [`18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee`](https://github.com/withastro/astro/commit/18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in `Astro.currentLocale` that wasn't returning the correct locale when a locale is configured via `path` - -- [#9998](https://github.com/withastro/astro/pull/9998) [`18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee`](https://github.com/withastro/astro/commit/18ac0940ea1b49b6b0ddd9be1f96aef416e2d7ee) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a regression in `Astro.currentLocale` where it stopped working properly with dynamic routes - -- [#9956](https://github.com/withastro/astro/pull/9956) [`81acac24a3cac5a9143155c1d9f838ea84a70421`](https://github.com/withastro/astro/commit/81acac24a3cac5a9143155c1d9f838ea84a70421) Thanks [@matthewp](https://github.com/matthewp)! - Fixes HMR for MDX dependencies in Content Collections - -- [#9999](https://github.com/withastro/astro/pull/9999) [`c53a31321a935e4be04809046d7e0ba3cc41b272`](https://github.com/withastro/astro/commit/c53a31321a935e4be04809046d7e0ba3cc41b272) Thanks [@MoustaphaDev](https://github.com/MoustaphaDev)! - Rollbacks the feature which allowed to dynamically generate slots with variable slot names due to unexpected regressions. - -- [#9906](https://github.com/withastro/astro/pull/9906) [`3c0876cbed5033e6b5b42cc2b9d8b393d7e5a55e`](https://github.com/withastro/astro/commit/3c0876cbed5033e6b5b42cc2b9d8b393d7e5a55e) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Improves the types for the `astro:content` module by making low fidelity types available before running `astro sync` - -## 4.3.2 - -### Patch Changes - -- [#9932](https://github.com/withastro/astro/pull/9932) [`9f0d89fa7e9e7c08c8600b0c49c2cce7489a7582`](https://github.com/withastro/astro/commit/9f0d89fa7e9e7c08c8600b0c49c2cce7489a7582) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where a warning was logged even when the feature `i18nDomains` wasn't enabled - -- [#9907](https://github.com/withastro/astro/pull/9907) [`6c894af5ab79f290f4ff7feb68617a66e91febc1`](https://github.com/withastro/astro/commit/6c894af5ab79f290f4ff7feb68617a66e91febc1) Thanks [@ktym4a](https://github.com/ktym4a)! - Load 404.html on all non-existent paths on astro preview. - -## 4.3.1 - -### Patch Changes - -- [#9841](https://github.com/withastro/astro/pull/9841) [`27ea080e24e2c5cdc59b63b1dfe0a83a0c696597`](https://github.com/withastro/astro/commit/27ea080e24e2c5cdc59b63b1dfe0a83a0c696597) Thanks [@kristianbinau](https://github.com/kristianbinau)! - Makes the warning clearer when having a custom `base` and requesting a public URL without it - -- [#9888](https://github.com/withastro/astro/pull/9888) [`9d2fdb293d6a7323e10126cebad18ef9a2ea2800`](https://github.com/withastro/astro/commit/9d2fdb293d6a7323e10126cebad18ef9a2ea2800) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improves error handling logic for the `astro sync` command. - -- [#9918](https://github.com/withastro/astro/pull/9918) [`d52529e09450c84933dd15d6481edb32269f537b`](https://github.com/withastro/astro/commit/d52529e09450c84933dd15d6481edb32269f537b) Thanks [@LarryIVC](https://github.com/LarryIVC)! - Adds the `name` attribute to the `
` tag type - -- [#9938](https://github.com/withastro/astro/pull/9938) [`1568afb78a163db63a4cde146dec87785a83db1d`](https://github.com/withastro/astro/commit/1568afb78a163db63a4cde146dec87785a83db1d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where middleware did not run for prerendered pages and endpoints. - -- [#9931](https://github.com/withastro/astro/pull/9931) [`44674418965d658733d3602668a9354e18f8ef89`](https://github.com/withastro/astro/commit/44674418965d658733d3602668a9354e18f8ef89) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a regression where a response created with `Response.redirect` or containing `null` as the body never completed in node-based adapters. - -## 4.3.0 - -### Minor Changes - -- [#9839](https://github.com/withastro/astro/pull/9839) [`58f9e393a188702eef5329e41deff3dcb65a3230`](https://github.com/withastro/astro/commit/58f9e393a188702eef5329e41deff3dcb65a3230) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `ComponentProps` type export from `astro/types` to get the props type of an Astro component. - - ```astro - --- - import type { ComponentProps } from 'astro/types'; - import Button from './Button.astro'; - - type myButtonProps = ComponentProps; - --- - ``` - -- [#9159](https://github.com/withastro/astro/pull/9159) [`7d937c158959e76443a02f740b10e251d14dbd8c`](https://github.com/withastro/astro/commit/7d937c158959e76443a02f740b10e251d14dbd8c) Thanks [@bluwy](https://github.com/bluwy)! - Adds CLI shortcuts as an easter egg for the dev server: - - `o + enter`: opens the site in your browser - - `q + enter`: quits the dev server - - `h + enter`: prints all available shortcuts - -- [#9764](https://github.com/withastro/astro/pull/9764) [`fad4f64aa149086feda2d1f3a0b655767034f1a8`](https://github.com/withastro/astro/commit/fad4f64aa149086feda2d1f3a0b655767034f1a8) Thanks [@matthewp](https://github.com/matthewp)! - Adds a new `build.format` configuration option: `'preserve'`. This option will preserve your source structure in the final build. - - The existing configuration options, `file` and `directory`, either build all of your HTML pages as files matching the route name (e.g. `/about.html`) or build all your files as `index.html` within a nested directory structure (e.g. `/about/index.html`), respectively. It was not previously possible to control the HTML file built on a per-file basis. - - One limitation of `build.format: 'file'` is that it cannot create `index.html` files for any individual routes (other than the base path of `/`) while otherwise building named files. Creating explicit index pages within your file structure still generates a file named for the page route (e.g. `src/pages/about/index.astro` builds `/about.html`) when using the `file` configuration option. - - Rather than make a breaking change to allow `build.format: 'file'` to be more flexible, we decided to create a new `build.format: 'preserve'`. - - The new format will preserve how the filesystem is structured and make sure that is mirrored over to production. Using this option: - - `about.astro` becomes `about.html` - - `about/index.astro` becomes `about/index.html` - - See the [`build.format` configuration options reference](https://docs.astro.build/en/reference/configuration-reference/#buildformat) for more details. - -- [#9143](https://github.com/withastro/astro/pull/9143) [`041fdd5c89920f7ccf944b095f29e451f78b0e28`](https://github.com/withastro/astro/commit/041fdd5c89920f7ccf944b095f29e451f78b0e28) Thanks [@ematipico](https://github.com/ematipico)! - Adds experimental support for a new i18n domain routing option (`"domains"`) that allows you to configure different domains for individual locales in entirely server-rendered projects. - - To enable this in your project, first configure your `server`-rendered project's i18n routing with your preferences if you have not already done so. Then, set the `experimental.i18nDomains` flag to `true` and add `i18n.domains` to map any of your supported `locales` to custom URLs: - - ```js - //astro.config.mjs" - import { defineConfig } from 'astro/config'; - export default defineConfig({ - site: 'https://example.com', - output: 'server', // required, with no prerendered pages - adapter: node({ - mode: 'standalone', - }), - i18n: { - defaultLocale: 'en', - locales: ['es', 'en', 'fr', 'ja'], - routing: { - prefixDefaultLocale: false, - }, - domains: { - fr: 'https://fr.example.com', - es: 'https://example.es', - }, - }, - experimental: { - i18nDomains: true, - }, - }); - ``` - - With `"domains"` configured, the URLs emitted by `getAbsoluteLocaleUrl()` and `getAbsoluteLocaleUrlList()` will use the options set in `i18n.domains`. - - ```js - import { getAbsoluteLocaleUrl } from 'astro:i18n'; - - getAbsoluteLocaleUrl('en', 'about'); // will return "https://example.com/about" - getAbsoluteLocaleUrl('fr', 'about'); // will return "https://fr.example.com/about" - getAbsoluteLocaleUrl('es', 'about'); // will return "https://example.es/about" - getAbsoluteLocaleUrl('ja', 'about'); // will return "https://example.com/ja/about" - ``` - - Similarly, your localized files will create routes at corresponding URLs: - - The file `/en/about.astro` will be reachable at the URL `https://example.com/about`. - - The file `/fr/about.astro` will be reachable at the URL `https://fr.example.com/about`. - - The file `/es/about.astro` will be reachable at the URL `https://example.es/about`. - - The file `/ja/about.astro` will be reachable at the URL `https://example.com/ja/about`. - - See our [Internationalization Guide](https://docs.astro.build/en/guides/internationalization/#domains-experimental) for more details and limitations on this experimental routing feature. - -- [#9755](https://github.com/withastro/astro/pull/9755) [`d4b886141bb342ac71b1c060e67d66ca2ffbb8bd`](https://github.com/withastro/astro/commit/d4b886141bb342ac71b1c060e67d66ca2ffbb8bd) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Fixes an issue where images in Markdown required a relative specifier (e.g. `./`) - - Now, you can use the standard `![](img.png)` syntax in Markdown files for images colocated in the same folder: no relative specifier required! - - There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these Markdown images as they are no longer necessary: - - ```diff - - ![A cute dog](./dog.jpg) - + ![A cute dog](dog.jpg) - - ``` - -### Patch Changes - -- [#9908](https://github.com/withastro/astro/pull/9908) [`2f6d1faa6f2d6de2d4ccd2a48adf5adadc82e593`](https://github.com/withastro/astro/commit/2f6d1faa6f2d6de2d4ccd2a48adf5adadc82e593) Thanks [@lilnasy](https://github.com/lilnasy)! - Improves http behavior relating to errors encountered while streaming a response. - -- [#9877](https://github.com/withastro/astro/pull/9877) [`7be5f94dcfc73a78d0fb301eeff51614d987a165`](https://github.com/withastro/astro/commit/7be5f94dcfc73a78d0fb301eeff51614d987a165) Thanks [@fabiankachlock](https://github.com/fabiankachlock)! - Fixes the content config type path on windows - -- [#9143](https://github.com/withastro/astro/pull/9143) [`041fdd5c89920f7ccf944b095f29e451f78b0e28`](https://github.com/withastro/astro/commit/041fdd5c89920f7ccf944b095f29e451f78b0e28) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the function `getLocaleRelativeUrlList` wasn't normalising the paths by default - -- [#9911](https://github.com/withastro/astro/pull/9911) [`aaedb848b1d6f683840035865528506a346ea659`](https://github.com/withastro/astro/commit/aaedb848b1d6f683840035865528506a346ea659) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Fixes an issue where some adapters that do not include a `start()` export would error rather than silently proceed - -## 4.2.8 - -### Patch Changes - -- [#9884](https://github.com/withastro/astro/pull/9884) [`37369550ab57ca529fd6c796e5b0e96e897ca6e5`](https://github.com/withastro/astro/commit/37369550ab57ca529fd6c796e5b0e96e897ca6e5) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where multiple cookies were sent in a single Set-Cookie header in the dev mode. - -- [#9876](https://github.com/withastro/astro/pull/9876) [`e9027f194b939ac5a4d795ee1a2c24e4a6fbefc0`](https://github.com/withastro/astro/commit/e9027f194b939ac5a4d795ee1a2c24e4a6fbefc0) Thanks [@friedemannsommer](https://github.com/friedemannsommer)! - Fixes an issue where using `Response.redirect` in an endpoint led to an error. - -- [#9882](https://github.com/withastro/astro/pull/9882) [`13c3b712c7ba45d0081f459fc06f142216a4ec59`](https://github.com/withastro/astro/commit/13c3b712c7ba45d0081f459fc06f142216a4ec59) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improves handling of YAML parsing errors - -- [#9878](https://github.com/withastro/astro/pull/9878) [`a40a0ff5883c7915dd55881dcebd052b9f94a0eb`](https://github.com/withastro/astro/commit/a40a0ff5883c7915dd55881dcebd052b9f94a0eb) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where setting trailingSlash to "never" had no effect on `Astro.url`. - -## 4.2.7 - -### Patch Changes - -- [#9840](https://github.com/withastro/astro/pull/9840) [`70fdf1a5c660057152c1ca111dcc89ceda5c8840`](https://github.com/withastro/astro/commit/70fdf1a5c660057152c1ca111dcc89ceda5c8840) Thanks [@delucis](https://github.com/delucis)! - Expose `ContentConfig` type from `astro:content` - -- [#9865](https://github.com/withastro/astro/pull/9865) [`00ba9f1947ca9016cd0ee4d8f6048027fab2ab9a`](https://github.com/withastro/astro/commit/00ba9f1947ca9016cd0ee4d8f6048027fab2ab9a) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a bug in `Astro.currentLocale` where the value was incorrectly computed during the build. - -- [#9838](https://github.com/withastro/astro/pull/9838) [`0a06d87a1e2b94be00a954f350c184222fa0594d`](https://github.com/withastro/astro/commit/0a06d87a1e2b94be00a954f350c184222fa0594d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where `astro:i18n` could not be used in framework components. - -- Updated dependencies [[`44c957f893c6bf5f5b7c78301de7b21c5975584d`](https://github.com/withastro/astro/commit/44c957f893c6bf5f5b7c78301de7b21c5975584d)]: - - @astrojs/markdown-remark@4.2.1 - -## 4.2.6 - -### Patch Changes - -- [#9825](https://github.com/withastro/astro/pull/9825) [`e4370e9e9dd862425eced25823c82e77d9516927`](https://github.com/withastro/astro/commit/e4370e9e9dd862425eced25823c82e77d9516927) Thanks [@tugrulates](https://github.com/tugrulates)! - Fixes false positive aria role errors on interactive elements - -- [#9828](https://github.com/withastro/astro/pull/9828) [`a3df9d83ca92abb5f08f576631019c1604204bd9`](https://github.com/withastro/astro/commit/a3df9d83ca92abb5f08f576631019c1604204bd9) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where shared modules among pages and middleware were transformed to a no-op after the build. - -- [#9834](https://github.com/withastro/astro/pull/9834) [`1885cea308a62b173a50967cf5a0b174b3c3f3f1`](https://github.com/withastro/astro/commit/1885cea308a62b173a50967cf5a0b174b3c3f3f1) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes third-party dev toolbar apps not loading correctly when using absolute paths on Windows - -## 4.2.5 - -### Patch Changes - -- [#9818](https://github.com/withastro/astro/pull/9818) [`d688954c5adba75b0d676694fbf5fb0da1c0af13`](https://github.com/withastro/astro/commit/d688954c5adba75b0d676694fbf5fb0da1c0af13) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Improves the wording of a few confusing error messages - -- [#9680](https://github.com/withastro/astro/pull/9680) [`5d7db1dbb0ff06db98e08b0ca241ff09d0b8b44d`](https://github.com/withastro/astro/commit/5d7db1dbb0ff06db98e08b0ca241ff09d0b8b44d) Thanks [@loucyx](https://github.com/loucyx)! - Fixes types generation from Content Collections config file - -- [#9822](https://github.com/withastro/astro/pull/9822) [`bd880e8437ea2df16f322f604865c1148a9fd4cf`](https://github.com/withastro/astro/commit/bd880e8437ea2df16f322f604865c1148a9fd4cf) Thanks [@liruifengv](https://github.com/liruifengv)! - Applies the correct escaping to identifiers used with `transition:name`. - -- [#9830](https://github.com/withastro/astro/pull/9830) [`f3d22136e53fd902310024519fc4de83f0a58039`](https://github.com/withastro/astro/commit/f3d22136e53fd902310024519fc4de83f0a58039) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where 404 responses from endpoints were replaced with contents of 404.astro in dev mode. - -- [#9816](https://github.com/withastro/astro/pull/9816) [`2a44c8f93201958fba2d1e83046eabcaef186b7c`](https://github.com/withastro/astro/commit/2a44c8f93201958fba2d1e83046eabcaef186b7c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds telemetry for when apps are toggled in the dev toolbar. This data is completely anonymous and only the names of built-in apps are shared with us. This data will help us monitor how much the dev toolbar is used and which apps are used more. For more information on how Astro collects telemetry, visit the following page: https://astro.build/telemetry/ - -- [#9807](https://github.com/withastro/astro/pull/9807) [`b3f313138bb314e2b416c29cda507383c2a9f816`](https://github.com/withastro/astro/commit/b3f313138bb314e2b416c29cda507383c2a9f816) Thanks [@bluwy](https://github.com/bluwy)! - Fixes environment variables replacement for `export const prerender` - -- [#9790](https://github.com/withastro/astro/pull/9790) [`267c5aa2c7706f0ea3447f20a09d85aa560866ad`](https://github.com/withastro/astro/commit/267c5aa2c7706f0ea3447f20a09d85aa560866ad) Thanks [@lilnasy](https://github.com/lilnasy)! - Refactors internals of the `astro:i18n` module to be more maintainable. - -- [#9776](https://github.com/withastro/astro/pull/9776) [`dc75180aa698b298264362bab7f00391af427798`](https://github.com/withastro/astro/commit/dc75180aa698b298264362bab7f00391af427798) Thanks [@lilnasy](https://github.com/lilnasy)! - Simplifies internals that handle middleware. - -## 4.2.4 - -### Patch Changes - -- [#9792](https://github.com/withastro/astro/pull/9792) [`e22cb8b10c0ca9f6d88cab53cd2713f57875ab4b`](https://github.com/withastro/astro/commit/e22cb8b10c0ca9f6d88cab53cd2713f57875ab4b) Thanks [@tugrulates](https://github.com/tugrulates)! - Accept aria role `switch` on toolbar audit. - -- [#9606](https://github.com/withastro/astro/pull/9606) [`e6945bcf23b6ad29388bbadaf5bb3cc31dd4a114`](https://github.com/withastro/astro/commit/e6945bcf23b6ad29388bbadaf5bb3cc31dd4a114) Thanks [@eryue0220](https://github.com/eryue0220)! - Fixes escaping behavior for `.html` files and components - -- [#9786](https://github.com/withastro/astro/pull/9786) [`5b29550996a7f5459a0d611feea6e51d44e1d8ed`](https://github.com/withastro/astro/commit/5b29550996a7f5459a0d611feea6e51d44e1d8ed) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes a regression in routing priority for index pages in rest parameter folders and dynamic sibling trees. - - Considering the following tree: - - ``` - src/pages/ - ├── index.astro - ├── static.astro - ├── [dynamic_file].astro - ├── [...rest_file].astro - ├── blog/ - │ └── index.astro - ├── [dynamic_folder]/ - │ ├── index.astro - │ ├── static.astro - │ └── [...rest].astro - └── [...rest_folder]/ - ├── index.astro - └── static.astro - ``` - - The routes are sorted in this order: - - ``` - /src/pages/index.astro - /src/pages/blog/index.astro - /src/pages/static.astro - /src/pages/[dynamic_folder]/index.astro - /src/pages/[dynamic_file].astro - /src/pages/[dynamic_folder]/static.astro - /src/pages/[dynamic_folder]/[...rest].astro - /src/pages/[...rest_folder]/static.astro - /src/pages/[...rest_folder]/index.astro - /src/pages/[...rest_file]/index.astro - ``` - - This allows for index files to be used as overrides to rest parameter routes on SSR when the rest parameter matching `undefined` is not desired. - -- [#9775](https://github.com/withastro/astro/pull/9775) [`075706f26d2e11e66ef8b52288d07e3c0fa97eb1`](https://github.com/withastro/astro/commit/075706f26d2e11e66ef8b52288d07e3c0fa97eb1) Thanks [@lilnasy](https://github.com/lilnasy)! - Simplifies internals that handle endpoints. - -- [#9773](https://github.com/withastro/astro/pull/9773) [`9aa7a5368c502ae488d3a173e732d81f3d000e98`](https://github.com/withastro/astro/commit/9aa7a5368c502ae488d3a173e732d81f3d000e98) Thanks [@LunaticMuch](https://github.com/LunaticMuch)! - Raises the required vite version to address a vulnerability in `vite.server.fs.deny` that affected the dev mode. - -- [#9781](https://github.com/withastro/astro/pull/9781) [`ccc05d54014e24c492ca5fddd4862f318aac8172`](https://github.com/withastro/astro/commit/ccc05d54014e24c492ca5fddd4862f318aac8172) Thanks [@stevenbenner](https://github.com/stevenbenner)! - Fix build failure when image file name includes special characters - -## 4.2.3 - -### Patch Changes - -- [#9768](https://github.com/withastro/astro/pull/9768) [`eed0e8757c35dde549707e71c45862438a043fb0`](https://github.com/withastro/astro/commit/eed0e8757c35dde549707e71c45862438a043fb0) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fix apps being able to crash the dev toolbar in certain cases - -## 4.2.2 - -### Patch Changes - -- [#9712](https://github.com/withastro/astro/pull/9712) [`ea6cbd06a2580527786707ec735079ff9abd0ec0`](https://github.com/withastro/astro/commit/ea6cbd06a2580527786707ec735079ff9abd0ec0) Thanks [@bluwy](https://github.com/bluwy)! - Improves HMR behavior for style-only changes in `.astro` files - -- [#9739](https://github.com/withastro/astro/pull/9739) [`3ecb3ef64326a8f77aa170df1e3c89cb5c12cc93`](https://github.com/withastro/astro/commit/3ecb3ef64326a8f77aa170df1e3c89cb5c12cc93) Thanks [@ematipico](https://github.com/ematipico)! - Makes i18n redirects take the `build.format` configuration into account - -- [#9762](https://github.com/withastro/astro/pull/9762) [`1fba85681e86aa83d24336d4209cafbc76b37607`](https://github.com/withastro/astro/commit/1fba85681e86aa83d24336d4209cafbc76b37607) Thanks [@ematipico](https://github.com/ematipico)! - Adds `popovertarget" to the attribute that can be passed to the `button` element - -- [#9605](https://github.com/withastro/astro/pull/9605) [`8ce40a417c854d9e6a4fa7d5a85d50a6436b4a3c`](https://github.com/withastro/astro/commit/8ce40a417c854d9e6a4fa7d5a85d50a6436b4a3c) Thanks [@MoustaphaDev](https://github.com/MoustaphaDev)! - Adds support for dynamic slot names - -- [#9381](https://github.com/withastro/astro/pull/9381) [`9e01f9cc1efcfb938355829676d51b24818ab2bb`](https://github.com/withastro/astro/commit/9e01f9cc1efcfb938355829676d51b24818ab2bb) Thanks [@martrapp](https://github.com/martrapp)! - Improves the CLI output of `astro preferences list` to include additional relevant information - -- [#9741](https://github.com/withastro/astro/pull/9741) [`73d74402007896204ee965f6553dc83b3dec8d2f`](https://github.com/withastro/astro/commit/73d74402007896204ee965f6553dc83b3dec8d2f) Thanks [@taktran](https://github.com/taktran)! - Fixes an issue where dot files were not copied over from the public folder to the output folder, when build command was run in a folder other than the root of the project. - -- [#9730](https://github.com/withastro/astro/pull/9730) [`8d2e5db096f1e7b098511b4fe9357434a6ff0703`](https://github.com/withastro/astro/commit/8d2e5db096f1e7b098511b4fe9357434a6ff0703) Thanks [@Blede2000](https://github.com/Blede2000)! - Allow i18n routing utilities like getRelativeLocaleUrl to also get the default local path when redirectToDefaultLocale is false - -- Updated dependencies [[`53c69dcc82cdf4000aff13a6c11fffe19096cf45`](https://github.com/withastro/astro/commit/53c69dcc82cdf4000aff13a6c11fffe19096cf45), [`2f81cffa9da9db0e2802d303f94feaee8d2f54ec`](https://github.com/withastro/astro/commit/2f81cffa9da9db0e2802d303f94feaee8d2f54ec), [`a505190933365268d48139a5f197a3cfb5570870`](https://github.com/withastro/astro/commit/a505190933365268d48139a5f197a3cfb5570870)]: - - @astrojs/markdown-remark@4.2.0 - -## 4.2.1 - -### Patch Changes - -- [#9726](https://github.com/withastro/astro/pull/9726) [`a4b696def3a7eb18c1ae48b10fd3758a1874b6fe`](https://github.com/withastro/astro/commit/a4b696def3a7eb18c1ae48b10fd3758a1874b6fe) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes a regression in routing priority between `index.astro` and dynamic routes with rest parameters - -## 4.2.0 - -### Minor Changes - -- [#9566](https://github.com/withastro/astro/pull/9566) [`165cfc154be477337037185c32b308616d1ed6fa`](https://github.com/withastro/astro/commit/165cfc154be477337037185c32b308616d1ed6fa) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Allows remark plugins to pass options specifying how images in `.md` files will be optimized - -- [#9661](https://github.com/withastro/astro/pull/9661) [`d6edc7540864cf5d294d7b881eb886a3804f6d05`](https://github.com/withastro/astro/commit/d6edc7540864cf5d294d7b881eb886a3804f6d05) Thanks [@ematipico](https://github.com/ematipico)! - Adds new helper functions for adapter developers. - - `Astro.clientAddress` can now be passed directly to the `app.render()` method. - - ```ts - const response = await app.render(request, { clientAddress: '012.123.23.3' }); - ``` - - - Helper functions for converting Node.js HTTP request and response objects to web-compatible `Request` and `Response` objects are now provided as static methods on the `NodeApp` class. - - ```ts - http.createServer((nodeReq, nodeRes) => { - const request: Request = NodeApp.createRequest(nodeReq); - const response = await app.render(request); - await NodeApp.writeResponse(response, nodeRes); - }); - ``` - - - Cookies added via `Astro.cookies.set()` can now be automatically added to the `Response` object by passing the `addCookieHeader` option to `app.render()`. - - ```diff - -const response = await app.render(request) - -const setCookieHeaders: Array = Array.from(app.setCookieHeaders(webResponse)); - - -if (setCookieHeaders.length) { - - for (const setCookieHeader of setCookieHeaders) { - - headers.append('set-cookie', setCookieHeader); - - } - -} - +const response = await app.render(request, { addCookieHeader: true }) - ``` - -- [#9638](https://github.com/withastro/astro/pull/9638) [`f1a61268061b8834f39a9b38bca043ae41caed04`](https://github.com/withastro/astro/commit/f1a61268061b8834f39a9b38bca043ae41caed04) Thanks [@ematipico](https://github.com/ematipico)! - Adds a new `i18n.routing` config option `redirectToDefaultLocale` to disable automatic redirects of the root URL (`/`) to the default locale when `prefixDefaultLocale: true` is set. - - In projects where every route, including the default locale, is prefixed with `/[locale]/` path, this property allows you to control whether or not `src/pages/index.astro` should automatically redirect your site visitors from `/` to `/[defaultLocale]`. - - You can now opt out of this automatic redirection by setting `redirectToDefaultLocale: false`: - - ```js - // astro.config.mjs - export default defineConfig({ - i18n: { - defaultLocale: 'en', - locales: ['en', 'fr'], - routing: { - prefixDefaultLocale: true, - redirectToDefaultLocale: false, - }, - }, - }); - ``` - -- [#9671](https://github.com/withastro/astro/pull/9671) [`8521ff77fbf7e867701cc30d18253856914dbd1b`](https://github.com/withastro/astro/commit/8521ff77fbf7e867701cc30d18253856914dbd1b) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Removes the requirement for non-content files and assets inside content collections to be prefixed with an underscore. For files with extensions like `.astro` or `.css`, you can now remove underscores without seeing a warning in the terminal. - - ```diff - src/content/blog/ - post.mdx - - _styles.css - - _Component.astro - + styles.css - + Component.astro - ``` - - Continue to use underscores in your content collections to exclude individual content files, such as drafts, from the build output. - -- [#9567](https://github.com/withastro/astro/pull/9567) [`3a4d5ec8001ebf95c917fdc0d186d29650533d93`](https://github.com/withastro/astro/commit/3a4d5ec8001ebf95c917fdc0d186d29650533d93) Thanks [@OliverSpeir](https://github.com/OliverSpeir)! - Improves the a11y-missing-content rule and error message for audit feature of dev-overlay. This also fixes an error where this check was falsely reporting accessibility errors. - -- [#9643](https://github.com/withastro/astro/pull/9643) [`e9a72d9a91a3741566866bcaab11172cb0dc7d31`](https://github.com/withastro/astro/commit/e9a72d9a91a3741566866bcaab11172cb0dc7d31) Thanks [@blackmann](https://github.com/blackmann)! - Adds a new `markdown.shikiConfig.transformers` config option. You can use this option to transform the Shikiji hast (AST format of the generated HTML) to customize the final HTML. Also updates Shikiji to the latest stable version. - - See [Shikiji's documentation](https://shikiji.netlify.app/guide/transformers) for more details about creating your own custom transformers, and [a list of common transformers](https://shikiji.netlify.app/packages/transformers) you can add directly to your project. - -- [#9644](https://github.com/withastro/astro/pull/9644) [`a5f1682347e602330246129d4666a9227374c832`](https://github.com/withastro/astro/commit/a5f1682347e602330246129d4666a9227374c832) Thanks [@rossrobino](https://github.com/rossrobino)! - Adds an experimental flag `clientPrerender` to prerender your prefetched pages on the client with the [Speculation Rules API](https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API). - - ```js - // astro.config.mjs - { - prefetch: { - prefetchAll: true, - defaultStrategy: 'viewport', - }, - experimental: { - clientPrerender: true, - }, - } - ``` - - Enabling this feature overrides the default `prefetch` behavior globally to prerender links on the client according to your `prefetch` configuration. Instead of appending a `` tag to the head of the document or fetching the page with JavaScript, a `
{ assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); + assert.equal(proc.stdout.includes(`manual-integration`), true); }, ); @@ -155,6 +156,7 @@ describe('astro cli', () => { assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); + assert.equal(proc.stdout.includes(`manual-integration`), true); }, ); @@ -228,6 +230,7 @@ describe('astro cli', () => { assert.equal(proc.stdout.includes(`v${viteVersion}`), true); assert.equal(proc.stdout.includes(`@astrojs/node (v${adapterVersion})`), true); assert.equal(proc.stdout.includes(`@astrojs/react (v${integrationVersion})`), true); + assert.equal(proc.stdout.includes(`manual-integration`), true); }, ); diff --git a/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs b/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs index faf35282657c..f1e112a7c92e 100644 --- a/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs +++ b/packages/astro/test/fixtures/astro-info-versions/astro.config.mjs @@ -4,7 +4,10 @@ import node from '@astrojs/node'; // https://astro.build/config export default defineConfig({ - integrations: [react()], + integrations: [react(), { + name: "manual-integration", + hooks: {} + }], adapter: node({ mode: "standalone" }) From a7df80d284652b500079e4476b17d5d1b7746b06 Mon Sep 17 00:00:00 2001 From: Light Date: Mon, 22 Sep 2025 21:02:50 +0900 Subject: [PATCH 35/50] fix(types): remove invalid `name: never` from AddServerRenderer (#14398) Co-authored-by: Florian Lefebvre --- .changeset/lazy-trains-switch.md | 5 +++++ packages/astro/src/container/index.ts | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .changeset/lazy-trains-switch.md diff --git a/.changeset/lazy-trains-switch.md b/.changeset/lazy-trains-switch.md new file mode 100644 index 000000000000..8a7933b42698 --- /dev/null +++ b/.changeset/lazy-trains-switch.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an unsatisfiable type definition when calling `addServerRenderer` on an experimental container instance diff --git a/packages/astro/src/container/index.ts b/packages/astro/src/container/index.ts index df400ae85ec6..39de869b87c9 100644 --- a/packages/astro/src/container/index.ts +++ b/packages/astro/src/container/index.ts @@ -112,7 +112,6 @@ export type ContainerRenderOptions = { export type AddServerRenderer = | { renderer: NamedSSRLoadedRendererValue; - name: never; } | { renderer: SSRLoadedRendererValue; @@ -345,7 +344,7 @@ export class experimental_AstroContainer { * @param options.renderer The server renderer exported by integration. */ public addServerRenderer(options: AddServerRenderer): void { - const { renderer, name } = options; + const { renderer } = options; if (!renderer.check || !renderer.renderToStaticMarkup) { throw new Error( "The renderer you passed isn't valid. A renderer is usually an object that exposes the `check` and `renderToStaticMarkup` functions.\n" + @@ -357,11 +356,15 @@ export class experimental_AstroContainer { name: renderer.name, ssr: renderer, }); - } else { + } else if ('name' in options) { this.#pipeline.manifest.renderers.push({ - name, + name: options.name, ssr: renderer, }); + } else { + throw new Error( + "The renderer name must be provided when adding a server renderer that is not a named renderer." + ); } } From 3be97465b79f39b484a1527de348663fc52e50eb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 14:03:41 +0200 Subject: [PATCH 36/50] fix(deps): update astro client runtimes (#14415) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/integrations/preact/package.json | 2 +- packages/integrations/svelte/package.json | 4 +- packages/integrations/vue/package.json | 2 +- pnpm-lock.yaml | 120 +++++++++++----------- 4 files changed, 64 insertions(+), 64 deletions(-) diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json index 4aeeeda068d0..7b0f69875d70 100644 --- a/packages/integrations/preact/package.json +++ b/packages/integrations/preact/package.json @@ -43,7 +43,7 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "preact": "^10.27.1" + "preact": "^10.27.2" }, "peerDependencies": { "preact": "^10.6.5" diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index 143334388d13..1e2f6666c1f4 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -36,13 +36,13 @@ }, "dependencies": { "@sveltejs/vite-plugin-svelte": "^5.1.1", - "svelte2tsx": "^0.7.42", + "svelte2tsx": "^0.7.43", "vite": "^6.3.6" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "svelte": "^5.38.7" + "svelte": "^5.39.2" }, "peerDependencies": { "astro": "^5.0.0", diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json index fcc003c451d0..597fcc5487e8 100644 --- a/packages/integrations/vue/package.json +++ b/packages/integrations/vue/package.json @@ -36,7 +36,7 @@ "test": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { - "@vitejs/plugin-vue": "5.2.1", + "@vitejs/plugin-vue": "5.2.4", "@vitejs/plugin-vue-jsx": "^4.2.0", "@vue/compiler-sfc": "^3.5.21", "vite": "^6.3.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 888f7177c7f5..622173e11463 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.10 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.21 version: 3.5.21(typescript@5.9.2) @@ -319,7 +319,7 @@ importers: version: link:../../packages/astro svelte: specifier: ^5.38.10 - version: 5.38.10 + version: 5.39.2 examples/framework-vue: dependencies: @@ -373,7 +373,7 @@ importers: version: link:../../packages/astro svelte: specifier: ^5.38.10 - version: 5.38.10 + version: 5.39.2 examples/starlog: dependencies: @@ -936,7 +936,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1081,7 +1081,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1138,7 +1138,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1194,7 +1194,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1234,7 +1234,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1274,7 +1274,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1314,7 +1314,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1354,7 +1354,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1394,7 +1394,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1590,7 +1590,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1650,7 +1650,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1794,7 +1794,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1815,7 +1815,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1830,7 +1830,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1842,7 +1842,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: dependencies: @@ -1973,7 +1973,7 @@ importers: version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2006,7 +2006,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2098,7 +2098,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/astro-env: dependencies: @@ -2473,7 +2473,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2563,7 +2563,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/component-library-shared: dependencies: @@ -2923,7 +2923,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/css-import-as-inline: dependencies: @@ -3211,7 +3211,7 @@ importers: version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3454,7 +3454,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3672,7 +3672,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3896,7 +3896,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/server-islands/ssr: dependencies: @@ -3911,7 +3911,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/sessions: dependencies: @@ -3986,7 +3986,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/slots-vue: dependencies: @@ -4332,7 +4332,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 packages/astro/test/fixtures/svg-deduplication: dependencies: @@ -4455,7 +4455,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.2 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -4931,7 +4931,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.38.10 - version: 5.38.10 + version: 5.39.2 packages/integrations/cloudflare/test/fixtures/with-vue: dependencies: @@ -5765,7 +5765,7 @@ importers: specifier: workspace:* version: link:../../../scripts preact: - specifier: ^10.27.1 + specifier: ^10.27.2 version: 10.27.2 packages/integrations/react: @@ -5907,10 +5907,10 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 - version: 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + version: 5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) svelte2tsx: - specifier: ^0.7.42 - version: 0.7.42(svelte@5.38.10)(typescript@5.9.2) + specifier: ^0.7.43 + version: 0.7.43(svelte@5.39.2)(typescript@5.9.2) vite: specifier: ^6.3.6 version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) @@ -5922,8 +5922,8 @@ importers: specifier: workspace:* version: link:../../../scripts svelte: - specifier: ^5.38.7 - version: 5.38.10 + specifier: ^5.39.2 + version: 5.39.2 packages/integrations/vercel: dependencies: @@ -5932,7 +5932,7 @@ importers: version: link:../../internal-helpers '@vercel/analytics': specifier: ^1.5.0 - version: 1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2)) + version: 1.5.0(react@19.1.1)(svelte@5.39.2)(vue@3.5.21(typescript@5.9.2)) '@vercel/functions': specifier: ^2.2.13 version: 2.2.13 @@ -6145,8 +6145,8 @@ importers: packages/integrations/vue: dependencies: '@vitejs/plugin-vue': - specifier: 5.2.1 - version: 5.2.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + specifier: 5.2.4 + version: 5.2.4(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) '@vitejs/plugin-vue-jsx': specifier: ^4.2.0 version: 4.2.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) @@ -9286,8 +9286,8 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.0.0 - '@vitejs/plugin-vue@5.2.1': - resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 @@ -13265,14 +13265,14 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte2tsx@0.7.42: - resolution: {integrity: sha512-PSNrKS16aVdAajoFjpF5M0t6TA7ha7GcKbBajD9RG3M+vooAuvLnWAGUSC6eJL4zEOVbOWKtcS2BuY4rxPljoA==} + svelte2tsx@0.7.43: + resolution: {integrity: sha512-TtxMuk520th4ZEvUQrhbDAyyQ1I+kc5dZCA4ChOLlbVXZfqenrY45iTH27DpLyx/u4STEz8O3hkGm5goTS8JhQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.38.10: - resolution: {integrity: sha512-UY+OhrWK7WI22bCZ00P/M3HtyWgwJPi9IxSRkoAE2MeAy6kl7ZlZWJZ8RaB+X4KD/G+wjis+cGVnVYaoqbzBqg==} + svelte@5.39.2: + resolution: {integrity: sha512-x4Me4TgiNprpLugcXyKbcGQhHdjWpITZzSeegv3jjIyA4jObVKBhNchGGDv257Eeolg3vUUSa4n2HGFMYNaPvg==} engines: {node: '>=18'} svgo@3.3.2: @@ -16516,23 +16516,23 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.3 - svelte: 5.38.10 + svelte: 5.39.2 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.19 - svelte: 5.38.10 + svelte: 5.39.2 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: @@ -16926,10 +16926,10 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))': + '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.39.2)(vue@3.5.21(typescript@5.9.2))': optionalDependencies: react: 19.1.1 - svelte: 5.38.10 + svelte: 5.39.2 vue: 3.5.21(typescript@5.9.2) '@vercel/functions@2.2.13': @@ -17009,7 +17009,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.4(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': dependencies: vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vue: 3.5.21(typescript@5.9.2) @@ -21761,14 +21761,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.42(svelte@5.38.10)(typescript@5.9.2): + svelte2tsx@0.7.43(svelte@5.39.2)(typescript@5.9.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.38.10 + svelte: 5.39.2 typescript: 5.9.2 - svelte@5.38.10: + svelte@5.39.2: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 From 691e5b8850937fadd68bd03e87c305948ef2c41f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 22 Sep 2025 12:07:57 +0000 Subject: [PATCH 37/50] [ci] format --- packages/astro/src/container/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/astro/src/container/index.ts b/packages/astro/src/container/index.ts index 39de869b87c9..1894ed530fc7 100644 --- a/packages/astro/src/container/index.ts +++ b/packages/astro/src/container/index.ts @@ -363,7 +363,7 @@ export class experimental_AstroContainer { }); } else { throw new Error( - "The renderer name must be provided when adding a server renderer that is not a named renderer." + 'The renderer name must be provided when adding a server renderer that is not a named renderer.', ); } } From ac888b79cddbeb2041dd3dac13d93c813532aca9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 14:19:20 +0200 Subject: [PATCH 38/50] fix(deps): update all non-major dependencies (#14414) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/framework-multiple/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/ssr/package.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 146 +++++++++++------------ 5 files changed, 78 insertions(+), 78 deletions(-) diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 9d43a6274df4..44b68c50e6c2 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -22,7 +22,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.9", - "svelte": "^5.38.10", + "svelte": "^5.39.2", "vue": "^3.5.21" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index 9b52a4847f5e..cb2186a0611f 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,6 +12,6 @@ "dependencies": { "@astrojs/svelte": "^7.1.1", "astro": "^5.13.10", - "svelte": "^5.38.10" + "svelte": "^5.39.2" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index fff165bbf40d..e0f6baf854b3 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,6 +14,6 @@ "@astrojs/node": "^9.4.4", "@astrojs/svelte": "^7.1.1", "astro": "^5.13.10", - "svelte": "^5.38.10" + "svelte": "^5.39.2" } } diff --git a/package.json b/package.json index 6337568adf56..f976718613d8 100644 --- a/package.json +++ b/package.json @@ -69,11 +69,11 @@ "only-allow": "^1.2.1", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", - "publint": "^0.3.12", + "publint": "^0.3.13", "tinyglobby": "^0.2.15", "turbo": "^2.5.6", "typescript": "~5.9.2", - "typescript-eslint": "^8.43.0" + "typescript-eslint": "^8.44.0" }, "pnpm": { "peerDependencyRules": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 622173e11463..42c5b273500c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,8 +53,8 @@ importers: specifier: ^0.14.1 version: 0.14.1 publint: - specifier: ^0.3.12 - version: 0.3.12 + specifier: ^0.3.13 + version: 0.3.13 tinyglobby: specifier: ^0.2.15 version: 0.2.15 @@ -65,8 +65,8 @@ importers: specifier: ~5.9.2 version: 5.9.2 typescript-eslint: - specifier: ^8.43.0 - version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.44.0 + version: 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) benchmark: dependencies: @@ -255,7 +255,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.10 + specifier: ^5.39.2 version: 5.39.2 vue: specifier: ^3.5.21 @@ -318,7 +318,7 @@ importers: specifier: ^5.13.10 version: link:../../packages/astro svelte: - specifier: ^5.38.10 + specifier: ^5.39.2 version: 5.39.2 examples/framework-vue: @@ -372,7 +372,7 @@ importers: specifier: ^5.13.10 version: link:../../packages/astro svelte: - specifier: ^5.38.10 + specifier: ^5.39.2 version: 5.39.2 examples/starlog: @@ -9150,63 +9150,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.43.0': - resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} + '@typescript-eslint/eslint-plugin@8.44.0': + resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.43.0 + '@typescript-eslint/parser': ^8.44.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.43.0': - resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} + '@typescript-eslint/parser@8.44.0': + resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.43.0': - resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} + '@typescript-eslint/project-service@8.44.0': + resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.43.0': - resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} + '@typescript-eslint/scope-manager@8.44.0': + resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.43.0': - resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} + '@typescript-eslint/tsconfig-utils@8.44.0': + resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.43.0': - resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} + '@typescript-eslint/type-utils@8.44.0': + resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.43.0': - resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} + '@typescript-eslint/types@8.44.0': + resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.43.0': - resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} + '@typescript-eslint/typescript-estree@8.44.0': + resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.43.0': - resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} + '@typescript-eslint/utils@8.44.0': + resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.43.0': - resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} + '@typescript-eslint/visitor-keys@8.44.0': + resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': @@ -12631,8 +12631,8 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - publint@0.3.12: - resolution: {integrity: sha512-1w3MMtL9iotBjm1mmXtG3Nk06wnq9UhGNRpQ2j6n1Zq7YAD6gnxMMZMIxlRPAydVjVbjSm+n0lhwqsD1m4LD5w==} + publint@0.3.13: + resolution: {integrity: sha512-NC+lph09+BRO9LJgKlIy3WQXyu6/6WDQ0dCA60KALUwdKVf3PfGuC6fY8I+oKB/5kEPh50aOSUz+6yWy1n4EfA==} engines: {node: '>=18'} hasBin: true @@ -13471,8 +13471,8 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript-eslint@8.43.0: - resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} + typescript-eslint@8.44.0: + resolution: {integrity: sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -16811,14 +16811,14 @@ snapshots: '@types/node': 18.19.124 optional: true - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/parser': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/type-utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 eslint: 9.35.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -16828,41 +16828,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.3 eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.43.0': + '@typescript-eslint/scope-manager@8.44.0': dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 - '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.3 eslint: 9.35.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) @@ -16870,14 +16870,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.43.0': {} + '@typescript-eslint/types@8.44.0': {} - '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -16888,20 +16888,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.43.0': + '@typescript-eslint/visitor-keys@8.44.0': dependencies: - '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/types': 8.44.0 eslint-visitor-keys: 4.2.1 '@typescript/twoslash@3.1.0': @@ -18020,7 +18020,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.9.2): dependencies: - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.9.2 @@ -20900,7 +20900,7 @@ snapshots: proxy-from-env@1.1.0: {} - publint@0.3.12: + publint@0.3.13: dependencies: '@publint/pack': 0.1.2 package-manager-detector: 1.3.0 @@ -21952,12 +21952,12 @@ snapshots: dependencies: semver: 7.7.2 - typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: From 181ff1ad014bb4e1482fe780dbae9476bdb6bc14 Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Mon, 22 Sep 2025 17:50:46 +0200 Subject: [PATCH 39/50] Revert "fix(deps): update all non-major dependencies (#14414)" (#14422) --- examples/framework-multiple/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/ssr/package.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 146 +++++++++++------------ 5 files changed, 78 insertions(+), 78 deletions(-) diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 44b68c50e6c2..9d43a6274df4 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -22,7 +22,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.9", - "svelte": "^5.39.2", + "svelte": "^5.38.10", "vue": "^3.5.21" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index cb2186a0611f..9b52a4847f5e 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,6 +12,6 @@ "dependencies": { "@astrojs/svelte": "^7.1.1", "astro": "^5.13.10", - "svelte": "^5.39.2" + "svelte": "^5.38.10" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index e0f6baf854b3..fff165bbf40d 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,6 +14,6 @@ "@astrojs/node": "^9.4.4", "@astrojs/svelte": "^7.1.1", "astro": "^5.13.10", - "svelte": "^5.39.2" + "svelte": "^5.38.10" } } diff --git a/package.json b/package.json index f976718613d8..6337568adf56 100644 --- a/package.json +++ b/package.json @@ -69,11 +69,11 @@ "only-allow": "^1.2.1", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", - "publint": "^0.3.13", + "publint": "^0.3.12", "tinyglobby": "^0.2.15", "turbo": "^2.5.6", "typescript": "~5.9.2", - "typescript-eslint": "^8.44.0" + "typescript-eslint": "^8.43.0" }, "pnpm": { "peerDependencyRules": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42c5b273500c..622173e11463 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,8 +53,8 @@ importers: specifier: ^0.14.1 version: 0.14.1 publint: - specifier: ^0.3.13 - version: 0.3.13 + specifier: ^0.3.12 + version: 0.3.12 tinyglobby: specifier: ^0.2.15 version: 0.2.15 @@ -65,8 +65,8 @@ importers: specifier: ~5.9.2 version: 5.9.2 typescript-eslint: - specifier: ^8.44.0 - version: 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.43.0 + version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) benchmark: dependencies: @@ -255,7 +255,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.39.2 + specifier: ^5.38.10 version: 5.39.2 vue: specifier: ^3.5.21 @@ -318,7 +318,7 @@ importers: specifier: ^5.13.10 version: link:../../packages/astro svelte: - specifier: ^5.39.2 + specifier: ^5.38.10 version: 5.39.2 examples/framework-vue: @@ -372,7 +372,7 @@ importers: specifier: ^5.13.10 version: link:../../packages/astro svelte: - specifier: ^5.39.2 + specifier: ^5.38.10 version: 5.39.2 examples/starlog: @@ -9150,63 +9150,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.44.0': - resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} + '@typescript-eslint/eslint-plugin@8.43.0': + resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.44.0 + '@typescript-eslint/parser': ^8.43.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.44.0': - resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} + '@typescript-eslint/parser@8.43.0': + resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.44.0': - resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} + '@typescript-eslint/project-service@8.43.0': + resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.44.0': - resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} + '@typescript-eslint/scope-manager@8.43.0': + resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.44.0': - resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} + '@typescript-eslint/tsconfig-utils@8.43.0': + resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.44.0': - resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} + '@typescript-eslint/type-utils@8.43.0': + resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.44.0': - resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.44.0': - resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} + '@typescript-eslint/typescript-estree@8.43.0': + resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.44.0': - resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} + '@typescript-eslint/utils@8.43.0': + resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.44.0': - resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} + '@typescript-eslint/visitor-keys@8.43.0': + resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': @@ -12631,8 +12631,8 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - publint@0.3.13: - resolution: {integrity: sha512-NC+lph09+BRO9LJgKlIy3WQXyu6/6WDQ0dCA60KALUwdKVf3PfGuC6fY8I+oKB/5kEPh50aOSUz+6yWy1n4EfA==} + publint@0.3.12: + resolution: {integrity: sha512-1w3MMtL9iotBjm1mmXtG3Nk06wnq9UhGNRpQ2j6n1Zq7YAD6gnxMMZMIxlRPAydVjVbjSm+n0lhwqsD1m4LD5w==} engines: {node: '>=18'} hasBin: true @@ -13471,8 +13471,8 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript-eslint@8.44.0: - resolution: {integrity: sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==} + typescript-eslint@8.43.0: + resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -16811,14 +16811,14 @@ snapshots: '@types/node': 18.19.124 optional: true - '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/type-utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 eslint: 9.35.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -16828,41 +16828,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.3 eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.44.0': + '@typescript-eslint/scope-manager@8.43.0': dependencies: - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.3 eslint: 9.35.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) @@ -16870,14 +16870,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.44.0': {} + '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -16888,20 +16888,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.44.0': + '@typescript-eslint/visitor-keys@8.43.0': dependencies: - '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 '@typescript/twoslash@3.1.0': @@ -18020,7 +18020,7 @@ snapshots: detective-typescript@14.0.0(typescript@5.9.2): dependencies: - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) ast-module-types: 6.0.1 node-source-walk: 7.0.1 typescript: 5.9.2 @@ -20900,7 +20900,7 @@ snapshots: proxy-from-env@1.1.0: {} - publint@0.3.13: + publint@0.3.12: dependencies: '@publint/pack': 0.1.2 package-manager-detector: 1.3.0 @@ -21952,12 +21952,12 @@ snapshots: dependencies: semver: 7.7.2 - typescript-eslint@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: From cd0fac83c74918e6d2e1aec7cda7aface895a5a1 Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Tue, 23 Sep 2025 10:21:58 +0200 Subject: [PATCH 40/50] Revert "fix(deps): update astro client runtimes (#14415)" (#14425) --- packages/integrations/preact/package.json | 2 +- packages/integrations/svelte/package.json | 4 +- packages/integrations/vue/package.json | 2 +- pnpm-lock.yaml | 120 +++++++++++----------- 4 files changed, 64 insertions(+), 64 deletions(-) diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json index 7b0f69875d70..4aeeeda068d0 100644 --- a/packages/integrations/preact/package.json +++ b/packages/integrations/preact/package.json @@ -43,7 +43,7 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "preact": "^10.27.2" + "preact": "^10.27.1" }, "peerDependencies": { "preact": "^10.6.5" diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index 1e2f6666c1f4..143334388d13 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -36,13 +36,13 @@ }, "dependencies": { "@sveltejs/vite-plugin-svelte": "^5.1.1", - "svelte2tsx": "^0.7.43", + "svelte2tsx": "^0.7.42", "vite": "^6.3.6" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "svelte": "^5.39.2" + "svelte": "^5.38.7" }, "peerDependencies": { "astro": "^5.0.0", diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json index 597fcc5487e8..fcc003c451d0 100644 --- a/packages/integrations/vue/package.json +++ b/packages/integrations/vue/package.json @@ -36,7 +36,7 @@ "test": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { - "@vitejs/plugin-vue": "5.2.4", + "@vitejs/plugin-vue": "5.2.1", "@vitejs/plugin-vue-jsx": "^4.2.0", "@vue/compiler-sfc": "^3.5.21", "vite": "^6.3.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 622173e11463..888f7177c7f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.10 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.21 version: 3.5.21(typescript@5.9.2) @@ -319,7 +319,7 @@ importers: version: link:../../packages/astro svelte: specifier: ^5.38.10 - version: 5.39.2 + version: 5.38.10 examples/framework-vue: dependencies: @@ -373,7 +373,7 @@ importers: version: link:../../packages/astro svelte: specifier: ^5.38.10 - version: 5.39.2 + version: 5.38.10 examples/starlog: dependencies: @@ -936,7 +936,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1081,7 +1081,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1138,7 +1138,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1194,7 +1194,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1234,7 +1234,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1274,7 +1274,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1314,7 +1314,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1354,7 +1354,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1394,7 +1394,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1590,7 +1590,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1650,7 +1650,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1794,7 +1794,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1815,7 +1815,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1830,7 +1830,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1842,7 +1842,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: dependencies: @@ -1973,7 +1973,7 @@ importers: version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2006,7 +2006,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2098,7 +2098,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/astro-env: dependencies: @@ -2473,7 +2473,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2563,7 +2563,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/component-library-shared: dependencies: @@ -2923,7 +2923,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/css-import-as-inline: dependencies: @@ -3211,7 +3211,7 @@ importers: version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3454,7 +3454,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3672,7 +3672,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3896,7 +3896,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/server-islands/ssr: dependencies: @@ -3911,7 +3911,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/sessions: dependencies: @@ -3986,7 +3986,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/slots-vue: dependencies: @@ -4332,7 +4332,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 packages/astro/test/fixtures/svg-deduplication: dependencies: @@ -4455,7 +4455,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.39.2 + version: 5.38.10 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -4931,7 +4931,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.38.10 - version: 5.39.2 + version: 5.38.10 packages/integrations/cloudflare/test/fixtures/with-vue: dependencies: @@ -5765,7 +5765,7 @@ importers: specifier: workspace:* version: link:../../../scripts preact: - specifier: ^10.27.2 + specifier: ^10.27.1 version: 10.27.2 packages/integrations/react: @@ -5907,10 +5907,10 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 - version: 5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + version: 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) svelte2tsx: - specifier: ^0.7.43 - version: 0.7.43(svelte@5.39.2)(typescript@5.9.2) + specifier: ^0.7.42 + version: 0.7.42(svelte@5.38.10)(typescript@5.9.2) vite: specifier: ^6.3.6 version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) @@ -5922,8 +5922,8 @@ importers: specifier: workspace:* version: link:../../../scripts svelte: - specifier: ^5.39.2 - version: 5.39.2 + specifier: ^5.38.7 + version: 5.38.10 packages/integrations/vercel: dependencies: @@ -5932,7 +5932,7 @@ importers: version: link:../../internal-helpers '@vercel/analytics': specifier: ^1.5.0 - version: 1.5.0(react@19.1.1)(svelte@5.39.2)(vue@3.5.21(typescript@5.9.2)) + version: 1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2)) '@vercel/functions': specifier: ^2.2.13 version: 2.2.13 @@ -6145,8 +6145,8 @@ importers: packages/integrations/vue: dependencies: '@vitejs/plugin-vue': - specifier: 5.2.4 - version: 5.2.4(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) + specifier: 5.2.1 + version: 5.2.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) '@vitejs/plugin-vue-jsx': specifier: ^4.2.0 version: 4.2.0(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)) @@ -9286,8 +9286,8 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.0.0 - '@vitejs/plugin-vue@5.2.4': - resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} + '@vitejs/plugin-vue@5.2.1': + resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 @@ -13265,14 +13265,14 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte2tsx@0.7.43: - resolution: {integrity: sha512-TtxMuk520th4ZEvUQrhbDAyyQ1I+kc5dZCA4ChOLlbVXZfqenrY45iTH27DpLyx/u4STEz8O3hkGm5goTS8JhQ==} + svelte2tsx@0.7.42: + resolution: {integrity: sha512-PSNrKS16aVdAajoFjpF5M0t6TA7ha7GcKbBajD9RG3M+vooAuvLnWAGUSC6eJL4zEOVbOWKtcS2BuY4rxPljoA==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.39.2: - resolution: {integrity: sha512-x4Me4TgiNprpLugcXyKbcGQhHdjWpITZzSeegv3jjIyA4jObVKBhNchGGDv257Eeolg3vUUSa4n2HGFMYNaPvg==} + svelte@5.38.10: + resolution: {integrity: sha512-UY+OhrWK7WI22bCZ00P/M3HtyWgwJPi9IxSRkoAE2MeAy6kl7ZlZWJZ8RaB+X4KD/G+wjis+cGVnVYaoqbzBqg==} engines: {node: '>=18'} svgo@3.3.2: @@ -16516,23 +16516,23 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.3 - svelte: 5.39.2 + svelte: 5.38.10 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.39.2)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.19 - svelte: 5.39.2 + svelte: 5.38.10 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: @@ -16926,10 +16926,10 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.39.2)(vue@3.5.21(typescript@5.9.2))': + '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))': optionalDependencies: react: 19.1.1 - svelte: 5.39.2 + svelte: 5.38.10 vue: 3.5.21(typescript@5.9.2) '@vercel/functions@2.2.13': @@ -17009,7 +17009,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))': dependencies: vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vue: 3.5.21(typescript@5.9.2) @@ -21761,14 +21761,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.43(svelte@5.39.2)(typescript@5.9.2): + svelte2tsx@0.7.42(svelte@5.38.10)(typescript@5.9.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.39.2 + svelte: 5.38.10 typescript: 5.9.2 - svelte@5.39.2: + svelte@5.38.10: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 From a601186fb9ac0e7c8ff20887024234ecbfdd6ff1 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 23 Sep 2025 09:25:54 +0100 Subject: [PATCH 41/50] fix: relative urls in tsdoc do not work in editors (#14411) Co-authored-by: Armand Philippot Co-authored-by: Florian Lefebvre --- .changeset/three-schools-move.md | 5 +++++ packages/astro/src/types/public/config.ts | 24 +++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 .changeset/three-schools-move.md diff --git a/.changeset/three-schools-move.md b/.changeset/three-schools-move.md new file mode 100644 index 000000000000..2f15d5cfecbd --- /dev/null +++ b/.changeset/three-schools-move.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes relative links to docs that could not be opened in the editor. diff --git a/packages/astro/src/types/public/config.ts b/packages/astro/src/types/public/config.ts index 63ead016bf70..59bfe4b1729e 100644 --- a/packages/astro/src/types/public/config.ts +++ b/packages/astro/src/types/public/config.ts @@ -278,7 +278,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * When redirects occur in production for GET requests, the redirect will be a 301 (permanent) redirect. For all other request methods, it will be a 308 (permanent, and preserve the request method) redirect. * * Trailing slashes on prerendered pages are handled by the hosting platform, and may not respect your chosen configuration. - * See your hosting platform's documentation for more information. You cannot use Astro [redirects](#redirects) for this use case at this point. + * See your hosting platform's documentation for more information. You cannot use Astro [redirects](https://docs.astro.build/en/reference/configuration-reference/#redirects) for this use case at this point. * * ```js * { @@ -372,9 +372,9 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * @see output * @description * - * Deploy to your favorite server, serverless, or edge host with build adapters. Import one of our first-party adapters ([Cloudflare](/en/guides/integrations-guide/cloudflare/), [Netlify](/en/guides/integrations-guide/netlify/), [Node.js](/en/guides/integrations-guide/node/), [Vercel](/en/guides/integrations-guide/vercel/)) or explore [community adapters](https://astro.build/integrations/2/?search=&categories%5B%5D=adapters) to enable on-demand rendering in your Astro project. + * Deploy to your favorite server, serverless, or edge host with build adapters. Import one of our first-party adapters ([Cloudflare](https://docs.astro.build/en/guides/integrations-guide/cloudflare/), [Netlify](https://docs.astro.build/en/guides/integrations-guide/netlify/), [Node.js](https://docs.astro.build/en/guides/integrations-guide/node/), [Vercel](https://docs.astro.build/en/guides/integrations-guide/vercel/)) or explore [community adapters](https://astro.build/integrations/2/?search=&categories%5B%5D=adapters) to enable on-demand rendering in your Astro project. * - * See our [on-demand rendering guide](/en/guides/on-demand-rendering/) for more on Astro's server rendering options. + * See our [on-demand rendering guide](https://docs.astro.build/en/guides/on-demand-rendering/) for more on Astro's server rendering options. * * ```js * import netlify from '@astrojs/netlify'; @@ -660,7 +660,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * * This means that when you create relative URLs using `new URL('./relative', Astro.url)`, you will get consistent behavior between dev and build. * - * To prevent inconsistencies with trailing slash behaviour in dev, you can restrict the [`trailingSlash` option](#trailingslash) to `'always'` or `'never'` depending on your build format: + * To prevent inconsistencies with trailing slash behaviour in dev, you can restrict the [`trailingSlash` option](https://docs.astro.build/en/reference/configuration-reference/#trailingslash) to `'always'` or `'never'` depending on your build format: * - `directory` - Set `trailingSlash: 'always'` * - `file` - Set `trailingSlash: 'never'` */ @@ -1002,7 +1002,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * * The Unstorage driver to use for session storage. The [Node](https://docs.astro.build/en/guides/integrations-guide/node/#sessions), * [Cloudflare](https://docs.astro.build/en/guides/integrations-guide/cloudflare/#sessions), and - * [Netlify](/en/guides/integrations-guide/netlify/#sessions) adapters automatically configure a default driver for you, + * [Netlify](https://docs.astro.build/en/guides/integrations-guide/netlify/#sessions) adapters automatically configure a default driver for you, * but you can specify your own if you would prefer or if you are using an adapter that does not provide one. * * The value is the "Driver name" from the [Unstorage driver documentation](https://unstorage.unjs.io/drivers). @@ -1145,7 +1145,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * ```html *
About * ``` - * Further customize the default prefetching behavior using the [`prefetch.defaultStrategy`](#prefetchdefaultstrategy) and [`prefetch.prefetchAll`](#prefetchprefetchall) options. + * Further customize the default prefetching behavior using the [`prefetch.defaultStrategy`](https://docs.astro.build/en/reference/configuration-reference/#prefetchdefaultstrategy) and [`prefetch.prefetchAll`](https://docs.astro.build/en/reference/configuration-reference/#prefetchprefetchall) options. * * See the [Prefetch guide](https://docs.astro.build/en/guides/prefetch/) for more information. */ @@ -1279,7 +1279,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * @description * Defines a list of permitted image source domains for remote image optimization. No other remote images will be optimized by Astro. * - * This option requires an array of individual domain names as strings. Wildcards are not permitted. Instead, use [`image.remotePatterns`](#imageremotepatterns) to define a list of allowed source URL patterns. + * This option requires an array of individual domain names as strings. Wildcards are not permitted. Instead, use [`image.remotePatterns`](https://docs.astro.build/en/reference/configuration-reference/#imageremotepatterns) to define a list of allowed source URL patterns. * * ```js * // astro.config.mjs @@ -1454,7 +1454,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * }); * ``` * - * See the [code syntax highlighting guide](/en/guides/syntax-highlighting/) for usage and examples. + * See the [code syntax highlighting guide](https://docs.astro.build/en/guides/syntax-highlighting/) for usage and examples. */ shikiConfig?: Partial; @@ -1467,7 +1467,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * Which syntax highlighter to use for Markdown code blocks (\`\`\`), if any. This determines the CSS classes that Astro will apply to your Markdown code blocks. * * - `shiki` - use the [Shiki](https://shiki.style) highlighter (`github-dark` theme configured by default) - * - `prism` - use the [Prism](https://prismjs.com/) highlighter and [provide your own Prism stylesheet](/en/guides/syntax-highlighting/#add-a-prism-stylesheet) + * - `prism` - use the [Prism](https://prismjs.com/) highlighter and [provide your own Prism stylesheet](https://docs.astro.build/en/guides/syntax-highlighting/#add-a-prism-stylesheet) * - `false` - do not apply syntax highlighting. * ```js @@ -1627,7 +1627,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * * Configures i18n routing and allows you to specify some customization options. * - * See our guide for more information on [internationalization in Astro](/en/guides/internationalization/) + * See our guide for more information on [internationalization in Astro](https://docs.astro.build/en/guides/internationalization/) */ i18n?: { /** @@ -1803,7 +1803,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * @version 4.15.0 * @description * - * When [`i18n.fallback`](#i18nfallback) is configured to avoid showing a 404 page for missing page routes, this option controls whether to [redirect](https://docs.astro.build/en/guides/routing/#redirects) to the fallback page, or to [rewrite](https://docs.astro.build/en/guides/routing/#rewrites) the fallback page's content in place. + * When [`i18n.fallback`](https://docs.astro.build/en/reference/configuration-reference/#i18nfallback) is configured to avoid showing a 404 page for missing page routes, this option controls whether to [redirect](https://docs.astro.build/en/guides/routing/#redirects) to the fallback page, or to [rewrite](https://docs.astro.build/en/guides/routing/#rewrites) the fallback page's content in place. * * By default, Astro's i18n routing creates pages that redirect your visitors to a new destination based on your fallback configuration. The browser will refresh and show the destination address in the URL bar. * @@ -1888,7 +1888,7 @@ export interface ViteUserConfig extends OriginalViteUserConfig { * * Configuration options for type-safe environment variables. * - * See our guide for more information on [environment variables in Astro](/en/guides/environment-variables/). + * See our guide for more information on [environment variables in Astro](https://docs.astro.build/en/guides/environment-variables/). */ env?: { /** From 2b4c03181a558a65e8589ec453a4d0fec857a24e Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Tue, 23 Sep 2025 16:36:13 +0200 Subject: [PATCH 42/50] feat(fonts): better dev hashes (#14279) --- .../astro/src/assets/fonts/definitions.ts | 9 +++ .../fonts/implementations/data-collector.ts | 5 +- .../url-proxy-hash-resolver.ts | 30 +++++++++ .../assets/fonts/implementations/url-proxy.ts | 18 ++---- .../astro/src/assets/fonts/orchestrate.ts | 1 + packages/astro/src/assets/fonts/types.ts | 1 + .../src/assets/fonts/vite-plugin-fonts.ts | 23 ++++++- .../assets/fonts/implementations.test.js | 62 ++++++++++++++++++- .../units/assets/fonts/orchestrate.test.js | 14 +++-- 9 files changed, 140 insertions(+), 23 deletions(-) create mode 100644 packages/astro/src/assets/fonts/implementations/url-proxy-hash-resolver.ts diff --git a/packages/astro/src/assets/fonts/definitions.ts b/packages/astro/src/assets/fonts/definitions.ts index 5e8f7f419949..95b33bd39167 100644 --- a/packages/astro/src/assets/fonts/definitions.ts +++ b/packages/astro/src/assets/fonts/definitions.ts @@ -116,3 +116,12 @@ export interface FontFileReader { style: Style; }; } + +export interface UrlProxyHashResolver { + resolve: (input: { + originalUrl: string; + type: FontType; + cssVariable: string; + data: Partial; + }) => string; +} diff --git a/packages/astro/src/assets/fonts/implementations/data-collector.ts b/packages/astro/src/assets/fonts/implementations/data-collector.ts index 43f29b14f176..76eabccadc28 100644 --- a/packages/astro/src/assets/fonts/implementations/data-collector.ts +++ b/packages/astro/src/assets/fonts/implementations/data-collector.ts @@ -6,7 +6,10 @@ export function createDataCollector({ saveUrl, savePreload, saveFontData, -}: Omit): DataCollector { +}: Pick< + CreateUrlProxyParams, + 'hasUrl' | 'saveUrl' | 'savePreload' | 'saveFontData' +>): DataCollector { return { collect({ hash, url, init, preload, data }) { if (!hasUrl(hash)) { diff --git a/packages/astro/src/assets/fonts/implementations/url-proxy-hash-resolver.ts b/packages/astro/src/assets/fonts/implementations/url-proxy-hash-resolver.ts new file mode 100644 index 000000000000..c856b8466137 --- /dev/null +++ b/packages/astro/src/assets/fonts/implementations/url-proxy-hash-resolver.ts @@ -0,0 +1,30 @@ +import type { Hasher, UrlProxyContentResolver, UrlProxyHashResolver } from '../definitions.js'; + +export function createBuildUrlProxyHashResolver({ + hasher, + contentResolver, +}: { + hasher: Hasher; + contentResolver: UrlProxyContentResolver; +}): UrlProxyHashResolver { + return { + resolve({ originalUrl, type }) { + return `${hasher.hashString(contentResolver.resolve(originalUrl))}.${type}`; + }, + }; +} + +export function createDevUrlProxyHashResolver({ + baseHashResolver, +}: { + baseHashResolver: UrlProxyHashResolver; +}): UrlProxyHashResolver { + return { + resolve(input) { + const { cssVariable, data } = input; + return [cssVariable.slice(2), data.weight, data.style, baseHashResolver.resolve(input)] + .filter(Boolean) + .join('-'); + }, + }; +} diff --git a/packages/astro/src/assets/fonts/implementations/url-proxy.ts b/packages/astro/src/assets/fonts/implementations/url-proxy.ts index d41152c6b18a..4f349a533f31 100644 --- a/packages/astro/src/assets/fonts/implementations/url-proxy.ts +++ b/packages/astro/src/assets/fonts/implementations/url-proxy.ts @@ -1,25 +1,19 @@ -import type { - DataCollector, - Hasher, - UrlProxy, - UrlProxyContentResolver, - UrlResolver, -} from '../definitions.js'; +import type { DataCollector, UrlProxy, UrlProxyHashResolver, UrlResolver } from '../definitions.js'; export function createUrlProxy({ - contentResolver, - hasher, + hashResolver, dataCollector, urlResolver, + cssVariable, }: { - contentResolver: UrlProxyContentResolver; - hasher: Hasher; + hashResolver: UrlProxyHashResolver; dataCollector: DataCollector; urlResolver: UrlResolver; + cssVariable: string; }): UrlProxy { return { proxy({ url: originalUrl, type, data, collectPreload, init }) { - const hash = `${hasher.hashString(contentResolver.resolve(originalUrl))}.${type}`; + const hash = hashResolver.resolve({ cssVariable, data, originalUrl, type }); const url = urlResolver.resolve(hash); dataCollector.collect({ diff --git a/packages/astro/src/assets/fonts/orchestrate.ts b/packages/astro/src/assets/fonts/orchestrate.ts index be04c901ddcf..6ff68c35f3a4 100644 --- a/packages/astro/src/assets/fonts/orchestrate.ts +++ b/packages/astro/src/assets/fonts/orchestrate.ts @@ -143,6 +143,7 @@ export async function orchestrate({ collectedFonts.push(collected); } }, + cssVariable: family.cssVariable, }); let fonts: Array; diff --git a/packages/astro/src/assets/fonts/types.ts b/packages/astro/src/assets/fonts/types.ts index fda2971ce5d8..622889569a1e 100644 --- a/packages/astro/src/assets/fonts/types.ts +++ b/packages/astro/src/assets/fonts/types.ts @@ -90,6 +90,7 @@ export interface CreateUrlProxyParams { saveUrl: (input: FontFileData) => void; savePreload: (preload: PreloadData) => void; saveFontData: (collected: CollectedFontForMetrics) => void; + cssVariable: string; } /** diff --git a/packages/astro/src/assets/fonts/vite-plugin-fonts.ts b/packages/astro/src/assets/fonts/vite-plugin-fonts.ts index 6678df0b72dc..2a1db88eba48 100644 --- a/packages/astro/src/assets/fonts/vite-plugin-fonts.ts +++ b/packages/astro/src/assets/fonts/vite-plugin-fonts.ts @@ -23,7 +23,10 @@ import type { CssRenderer, FontFetcher, FontTypeExtractor, + Hasher, RemoteFontProviderModResolver, + UrlProxyContentResolver, + UrlProxyHashResolver, UrlResolver, } from './definitions.js'; import { createMinifiableCssRenderer } from './implementations/css-renderer.js'; @@ -47,6 +50,10 @@ import { createLocalUrlProxyContentResolver, createRemoteUrlProxyContentResolver, } from './implementations/url-proxy-content-resolver.js'; +import { + createBuildUrlProxyHashResolver, + createDevUrlProxyHashResolver, +} from './implementations/url-proxy-hash-resolver.js'; import { createBuildUrlResolver, createDevUrlResolver } from './implementations/url-resolver.js'; import { orchestrate } from './orchestrate.js'; import type { ConsumableMap, FontFileDataMap } from './types.js'; @@ -103,11 +110,16 @@ export function fontsPlugin({ settings, sync, logger }: Options): Plugin { modResolver, cssRenderer, urlResolver, + createHashResolver, }: { cacheDir: URL; modResolver: RemoteFontProviderModResolver; cssRenderer: CssRenderer; urlResolver: UrlResolver; + createHashResolver: (dependencies: { + hasher: Hasher; + contentResolver: UrlProxyContentResolver; + }) => UrlProxyHashResolver; }) { const { root } = settings.config; // Dependencies. Once extracted to a dedicated vite plugin, those may be passed as @@ -155,16 +167,16 @@ export function fontsPlugin({ settings, sync, logger }: Options): Plugin { fontTypeExtractor, fontFileReader, logger, - createUrlProxy: ({ local, ...params }) => { + createUrlProxy: ({ local, cssVariable, ...params }) => { const dataCollector = createDataCollector(params); const contentResolver = local ? createLocalUrlProxyContentResolver({ errorHandler }) : createRemoteUrlProxyContentResolver(); return createUrlProxy({ urlResolver, - contentResolver, - hasher, + hashResolver: createHashResolver({ hasher, contentResolver }), dataCollector, + cssVariable, }); }, defaults: DEFAULTS, @@ -204,6 +216,7 @@ export function fontsPlugin({ settings, sync, logger }: Options): Plugin { base: baseUrl, assetsPrefix: settings.config.build.assetsPrefix, }), + createHashResolver: (dependencies) => createBuildUrlProxyHashResolver(dependencies), }); } }, @@ -214,6 +227,10 @@ export function fontsPlugin({ settings, sync, logger }: Options): Plugin { modResolver: createDevServerRemoteFontProviderModResolver({ server }), cssRenderer: createMinifiableCssRenderer({ minify: false }), urlResolver: createDevUrlResolver({ base: baseUrl }), + createHashResolver: (dependencies) => + createDevUrlProxyHashResolver({ + baseHashResolver: createBuildUrlProxyHashResolver(dependencies), + }), }); // The map is always defined at this point. Its values contains urls from remote providers // as well as local paths for the local provider. We filter them to only keep the filepaths diff --git a/packages/astro/test/units/assets/fonts/implementations.test.js b/packages/astro/test/units/assets/fonts/implementations.test.js index c2e24c01d141..e6f73cb27b5b 100644 --- a/packages/astro/test/units/assets/fonts/implementations.test.js +++ b/packages/astro/test/units/assets/fonts/implementations.test.js @@ -13,11 +13,15 @@ import { createAstroErrorHandler } from '../../../../dist/assets/fonts/implement import { createCachedFontFetcher } from '../../../../dist/assets/fonts/implementations/font-fetcher.js'; import { createCapsizeFontMetricsResolver } from '../../../../dist/assets/fonts/implementations/font-metrics-resolver.js'; import { createFontTypeExtractor } from '../../../../dist/assets/fonts/implementations/font-type-extractor.js'; +import { + createBuildUrlProxyHashResolver, + createDevUrlProxyHashResolver, +} from '../../../../dist/assets/fonts/implementations/url-proxy-hash-resolver.js'; import { createBuildUrlResolver, createDevUrlResolver, } from '../../../../dist/assets/fonts/implementations/url-resolver.js'; -import { createSpyStorage, simpleErrorHandler } from './utils.js'; +import { createSpyStorage, fakeHasher, simpleErrorHandler } from './utils.js'; describe('fonts implementations', () => { describe('createMinifiableCssRenderer()', () => { @@ -398,4 +402,60 @@ describe('fonts implementations', () => { ]); }); }); + + it('createBuildUrlProxyHashResolver()', () => { + const resolver = createBuildUrlProxyHashResolver({ + hasher: fakeHasher, + contentResolver: { + resolve: (url) => url, + }, + }); + assert.equal( + resolver.resolve({ + cssVariable: '--foo', + data: {}, + originalUrl: 'whatever', + type: 'woff2', + }), + 'whatever.woff2', + ); + assert.equal( + resolver.resolve({ + cssVariable: '--foo', + data: { weight: 400, style: 'italic' }, + originalUrl: 'whatever', + type: 'woff2', + }), + 'whatever.woff2', + ); + }); + + it('createDevUrlProxyHashResolver()', () => { + const resolver = createDevUrlProxyHashResolver({ + baseHashResolver: createBuildUrlProxyHashResolver({ + hasher: fakeHasher, + contentResolver: { + resolve: (url) => url, + }, + }), + }); + assert.equal( + resolver.resolve({ + cssVariable: '--foo', + data: {}, + originalUrl: 'whatever', + type: 'woff2', + }), + 'foo-whatever.woff2', + ); + assert.equal( + resolver.resolve({ + cssVariable: '--foo', + data: { weight: 400, style: 'italic' }, + originalUrl: 'whatever', + type: 'woff2', + }), + 'foo-400-italic-whatever.woff2', + ); + }); }); diff --git a/packages/astro/test/units/assets/fonts/orchestrate.test.js b/packages/astro/test/units/assets/fonts/orchestrate.test.js index eebbade554dd..6b4fceacde2e 100644 --- a/packages/astro/test/units/assets/fonts/orchestrate.test.js +++ b/packages/astro/test/units/assets/fonts/orchestrate.test.js @@ -15,6 +15,7 @@ import { createRemoteFontProviderResolver } from '../../../../dist/assets/fonts/ import { createSystemFallbacksProvider } from '../../../../dist/assets/fonts/implementations/system-fallbacks-provider.js'; import { createUrlProxy } from '../../../../dist/assets/fonts/implementations/url-proxy.js'; import { createRemoteUrlProxyContentResolver } from '../../../../dist/assets/fonts/implementations/url-proxy-content-resolver.js'; +import { createBuildUrlProxyHashResolver } from '../../../../dist/assets/fonts/implementations/url-proxy-hash-resolver.js'; import { createDevUrlResolver } from '../../../../dist/assets/fonts/implementations/url-resolver.js'; import { orchestrate } from '../../../../dist/assets/fonts/orchestrate.js'; import { defineAstroFontProvider } from '../../../../dist/assets/fonts/providers/index.js'; @@ -62,13 +63,13 @@ describe('fonts orchestrate()', () => { fontTypeExtractor, fontFileReader: createFontaceFontFileReader({ errorHandler }), logger: defaultLogger, - createUrlProxy: ({ local, ...params }) => { + createUrlProxy: ({ local, cssVariable, ...params }) => { const dataCollector = createDataCollector(params); const contentResolver = createRemoteUrlProxyContentResolver(); return createUrlProxy({ urlResolver: createDevUrlResolver({ base: 'test' }), - contentResolver, - hasher, + cssVariable, + hashResolver: createBuildUrlProxyHashResolver({ contentResolver, hasher }), dataCollector, }); }, @@ -163,15 +164,16 @@ describe('fonts orchestrate()', () => { fontTypeExtractor, fontFileReader: createFontaceFontFileReader({ errorHandler }), logger: defaultLogger, - createUrlProxy: ({ local, ...params }) => { + createUrlProxy: ({ local, cssVariable, ...params }) => { const dataCollector = createDataCollector(params); const contentResolver = createRemoteUrlProxyContentResolver(); return createUrlProxy({ urlResolver: { resolve: (hash) => hash, + getCspResources: () => [], }, - contentResolver, - hasher, + cssVariable, + hashResolver: createBuildUrlProxyHashResolver({ contentResolver, hasher }), dataCollector, }); }, From 120866f35a6b27c31bae1c04c0ea9d6bdaf09b16 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 23 Sep 2025 07:57:16 -0700 Subject: [PATCH 43/50] feat(core): passes `controller.signal` into the `new Request` (#13747) Co-authored-by: jp-knj Co-authored-by: Florian Lefebvre --- .changeset/old-worms-go.md | 7 + packages/astro/src/core/app/node.ts | 81 ++++++++++- packages/astro/src/core/constants.ts | 5 + .../fixtures/request-signal/astro.config.mjs | 7 + .../test/fixtures/request-signal/package.json | 10 ++ .../fixtures/request-signal/src/pages/sse.ts | 53 ++++++++ .../request-signal/src/pages/status.json.ts | 22 +++ .../request-signal/src/pages/stream.ts | 38 ++++++ packages/astro/test/request-signal.test.js | 126 ++++++++++++++++++ packages/astro/test/units/app/node.test.js | 68 ++++++++++ pnpm-lock.yaml | 9 ++ 11 files changed, 425 insertions(+), 1 deletion(-) create mode 100644 .changeset/old-worms-go.md create mode 100644 packages/astro/test/fixtures/request-signal/astro.config.mjs create mode 100644 packages/astro/test/fixtures/request-signal/package.json create mode 100644 packages/astro/test/fixtures/request-signal/src/pages/sse.ts create mode 100644 packages/astro/test/fixtures/request-signal/src/pages/status.json.ts create mode 100644 packages/astro/test/fixtures/request-signal/src/pages/stream.ts create mode 100644 packages/astro/test/request-signal.test.js diff --git a/.changeset/old-worms-go.md b/.changeset/old-worms-go.md new file mode 100644 index 000000000000..e5971b750c70 --- /dev/null +++ b/.changeset/old-worms-go.md @@ -0,0 +1,7 @@ +--- +'astro': patch +--- + +Adds automatic request signal abortion when the underlying socket closes in the Node.js adapter + +The Node.js adapter now automatically aborts the `request.signal` when the client connection is terminated. This enables better resource management and allows applications to properly handle client disconnections through the standard `AbortSignal` API. diff --git a/packages/astro/src/core/app/node.ts b/packages/astro/src/core/app/node.ts index 71fcd0b6eb14..e5161e9c608c 100644 --- a/packages/astro/src/core/app/node.ts +++ b/packages/astro/src/core/app/node.ts @@ -1,8 +1,9 @@ import fs from 'node:fs'; import type { IncomingMessage, ServerResponse } from 'node:http'; import { Http2ServerResponse } from 'node:http2'; +import type { Socket } from 'node:net'; import type { RouteData } from '../../types/public/internal.js'; -import { clientAddressSymbol } from '../constants.js'; +import { clientAddressSymbol, nodeRequestAbortControllerCleanupSymbol } from '../constants.js'; import { deserializeManifest } from './common.js'; import { createOutgoingHttpHeaders } from './createOutgoingHttpHeaders.js'; import type { RenderOptions } from './index.js'; @@ -66,6 +67,8 @@ export class NodeApp extends App { * ``` */ static createRequest(req: NodeRequest, { skipBody = false } = {}): Request { + const controller = new AbortController(); + const isEncrypted = 'encrypted' in req.socket && req.socket.encrypted; // Parses multiple header and returns first value if available. @@ -105,6 +108,7 @@ export class NodeApp extends App { const options: RequestInit = { method: req.method || 'GET', headers: makeRequestHeaders(req), + signal: controller.signal, }; const bodyAllowed = options.method !== 'HEAD' && options.method !== 'GET' && skipBody === false; if (bodyAllowed) { @@ -113,6 +117,46 @@ export class NodeApp extends App { const request = new Request(url, options); + const socket = getRequestSocket(req); + if (socket && typeof socket.on === 'function') { + const existingCleanup = getAbortControllerCleanup(req); + if (existingCleanup) { + existingCleanup(); + } + let cleanedUp = false; + + const removeSocketListener = () => { + if (typeof socket.off === 'function') { + socket.off('close', onSocketClose); + } else if (typeof socket.removeListener === 'function') { + socket.removeListener('close', onSocketClose); + } + }; + + const cleanup = () => { + if (cleanedUp) return; + cleanedUp = true; + removeSocketListener(); + controller.signal.removeEventListener('abort', cleanup); + Reflect.deleteProperty(req, nodeRequestAbortControllerCleanupSymbol); + }; + + const onSocketClose = () => { + cleanup(); + if (!controller.signal.aborted) { + controller.abort(); + } + }; + + socket.on('close', onSocketClose); + controller.signal.addEventListener('abort', cleanup, { once: true }); + Reflect.set(req, nodeRequestAbortControllerCleanupSymbol, cleanup); + + if (socket.destroyed) { + onSocketClose(); + } + } + // Get the IP of end client behind the proxy. // @example "1.1.1.1,8.8.8.8" => "1.1.1.1" const forwardedClientIp = getFirstForwardedValue(req.headers['x-forwarded-for']); @@ -146,6 +190,24 @@ export class NodeApp extends App { destination.statusMessage = statusText; } destination.writeHead(status, createOutgoingHttpHeaders(headers)); + + const cleanupAbortFromDestination = getAbortControllerCleanup( + (destination.req as NodeRequest | undefined) ?? undefined, + ); + if (cleanupAbortFromDestination) { + const runCleanup = () => { + cleanupAbortFromDestination(); + if (typeof destination.off === 'function') { + destination.off('finish', runCleanup); + destination.off('close', runCleanup); + } else { + destination.removeListener?.('finish', runCleanup); + destination.removeListener?.('close', runCleanup); + } + }; + destination.on('finish', runCleanup); + destination.on('close', runCleanup); + } if (!body) return destination.end(); try { const reader = body.getReader(); @@ -235,6 +297,23 @@ function asyncIterableToBodyProps(iterable: AsyncIterable): RequestInit { }; } +function getAbortControllerCleanup(req?: NodeRequest): (() => void) | undefined { + if (!req) return undefined; + const cleanup = Reflect.get(req, nodeRequestAbortControllerCleanupSymbol); + return typeof cleanup === 'function' ? cleanup : undefined; +} + +function getRequestSocket(req: NodeRequest): Socket | undefined { + if (req.socket && typeof req.socket.on === 'function') { + return req.socket; + } + const http2Socket = (req as unknown as { stream?: { session?: { socket?: Socket } } }).stream?.session?.socket; + if (http2Socket && typeof http2Socket.on === 'function') { + return http2Socket; + } + return undefined; +} + export async function loadManifest(rootFolder: URL): Promise { const manifestFile = new URL('./manifest.json', rootFolder); const rawManifest = await fs.promises.readFile(manifestFile, 'utf-8'); diff --git a/packages/astro/src/core/constants.ts b/packages/astro/src/core/constants.ts index 8b304aa12f46..fefe8a58c2a0 100644 --- a/packages/astro/src/core/constants.ts +++ b/packages/astro/src/core/constants.ts @@ -74,6 +74,11 @@ export const clientLocalsSymbol = Symbol.for('astro.locals'); */ export const originPathnameSymbol = Symbol.for('astro.originPathname'); +/** + * The symbol used as a field on the request object to store a cleanup callback associated with aborting the request when the underlying socket closes. + */ +export const nodeRequestAbortControllerCleanupSymbol = Symbol.for('astro.nodeRequestAbortControllerCleanup'); + /** * The symbol used as a field on the response object to keep track of streaming. * diff --git a/packages/astro/test/fixtures/request-signal/astro.config.mjs b/packages/astro/test/fixtures/request-signal/astro.config.mjs new file mode 100644 index 000000000000..c17389f1ddcf --- /dev/null +++ b/packages/astro/test/fixtures/request-signal/astro.config.mjs @@ -0,0 +1,7 @@ +import node from '@astrojs/node'; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + output: 'server', + adapter: node({ mode: 'middleware' }), +}); diff --git a/packages/astro/test/fixtures/request-signal/package.json b/packages/astro/test/fixtures/request-signal/package.json new file mode 100644 index 000000000000..24228fc35506 --- /dev/null +++ b/packages/astro/test/fixtures/request-signal/package.json @@ -0,0 +1,10 @@ +{ + "name": "@test/request-signal", + "version": "0.0.1", + "private": true, + "type": "module", + "dependencies": { + "@astrojs/node": "workspace:*", + "astro": "workspace:*" + } +} diff --git a/packages/astro/test/fixtures/request-signal/src/pages/sse.ts b/packages/astro/test/fixtures/request-signal/src/pages/sse.ts new file mode 100644 index 000000000000..49921dcf7c68 --- /dev/null +++ b/packages/astro/test/fixtures/request-signal/src/pages/sse.ts @@ -0,0 +1,53 @@ +import type { APIContext } from 'astro'; + +const encoder = new TextEncoder(); + +declare global { + // eslint-disable-next-line no-var + var __requestAbortState: { aborted: boolean; events: string[] } | undefined; +} + +export const GET = ({ request }: APIContext) => { + globalThis.__requestAbortState = { aborted: false, events: ['started'] }; + + let heartbeat: ReturnType | undefined; + + const stream = new ReadableStream({ + start(controller) { + const enqueue = (payload: string) => { + controller.enqueue(encoder.encode(`data: ${payload}\n\n`)); + }; + + enqueue('ready'); + + heartbeat = setInterval(() => enqueue('ping'), 1000); + + const onAbort = () => { + if (heartbeat) clearInterval(heartbeat); + globalThis.__requestAbortState = { + aborted: true, + events: [...(globalThis.__requestAbortState?.events ?? []), 'aborted'], + }; + controller.close(); + }; + + if (request.signal.aborted) { + onAbort(); + return; + } + + request.signal.addEventListener('abort', onAbort, { once: true }); + }, + cancel() { + if (heartbeat) clearInterval(heartbeat); + }, + }); + + return new Response(stream, { + headers: { + 'content-type': 'text/event-stream; charset=utf-8', + 'cache-control': 'no-cache, no-transform', + connection: 'keep-alive', + }, + }); +}; diff --git a/packages/astro/test/fixtures/request-signal/src/pages/status.json.ts b/packages/astro/test/fixtures/request-signal/src/pages/status.json.ts new file mode 100644 index 000000000000..6312147d44df --- /dev/null +++ b/packages/astro/test/fixtures/request-signal/src/pages/status.json.ts @@ -0,0 +1,22 @@ +import type { APIContext } from 'astro'; + +declare global { + // eslint-disable-next-line no-var + var __requestAbortState: { aborted: boolean; events: string[] } | undefined; +} + +export const GET = ({ request }: APIContext) => { + const url = new URL(request.url); + const shouldReset = url.searchParams.get('reset') === '1'; + const state = globalThis.__requestAbortState ?? { aborted: false, events: [] }; + + if (shouldReset) { + globalThis.__requestAbortState = { aborted: false, events: [] }; + } + + return new Response(JSON.stringify(state), { + headers: { + 'content-type': 'application/json; charset=utf-8', + }, + }); +}; diff --git a/packages/astro/test/fixtures/request-signal/src/pages/stream.ts b/packages/astro/test/fixtures/request-signal/src/pages/stream.ts new file mode 100644 index 000000000000..0c5403919571 --- /dev/null +++ b/packages/astro/test/fixtures/request-signal/src/pages/stream.ts @@ -0,0 +1,38 @@ +import type { APIContext } from 'astro'; + +const encoder = new TextEncoder(); + +declare global { + // eslint-disable-next-line no-var + var __requestAbortState: { aborted: boolean; events: string[] } | undefined; +} + +export const GET = ({ request }: APIContext) => { + globalThis.__requestAbortState = { aborted: false, events: ['started'] }; + + const stream = new ReadableStream({ + start(controller) { + const onAbort = () => { + globalThis.__requestAbortState = { + aborted: true, + events: [...(globalThis.__requestAbortState?.events ?? []), 'aborted'], + }; + controller.close(); + }; + + if (request.signal.aborted) { + onAbort(); + return; + } + + request.signal.addEventListener('abort', onAbort, { once: true }); + controller.enqueue(encoder.encode('ready')); + }, + }); + + return new Response(stream, { + headers: { + 'content-type': 'text/plain; charset=utf-8', + }, + }); +}; diff --git a/packages/astro/test/request-signal.test.js b/packages/astro/test/request-signal.test.js new file mode 100644 index 000000000000..a04ad2a7e426 --- /dev/null +++ b/packages/astro/test/request-signal.test.js @@ -0,0 +1,126 @@ +import assert from 'node:assert/strict'; +import { EventEmitter } from 'node:events'; +import { after, before, describe, it } from 'node:test'; +import { setTimeout as delay } from 'node:timers/promises'; +import { loadFixture } from './test-utils.js'; +import { createRequestAndResponse } from './units/test-utils.js'; + +const createMockSocket = () => { + const socket = new EventEmitter(); + // @ts-expect-error - emulate shape of a Node socket for the adapter + socket.encrypted = false; + // @ts-expect-error - emulate shape of a Node socket for the adapter + socket.remoteAddress = '127.0.0.1'; + // @ts-expect-error - emulate shape of a Node socket for the adapter + socket.destroyed = false; + // @ts-expect-error - emulate shape of a Node socket for the adapter + socket.writable = true; + // @ts-expect-error - emulate shape of a Node socket for the adapter + socket.destroy = () => { + socket.destroyed = true; + socket.emit('close'); + }; + return socket; +}; + +const attachSocket = (socket, req, res) => { + Object.defineProperty(req, 'socket', { + configurable: true, + value: socket, + writable: true, + }); + Object.defineProperty(res, 'socket', { + configurable: true, + value: socket, + writable: true, + }); +}; + +describe('Node request abort integration', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + /** @type {(req: import('node:http').IncomingMessage, res: import('node:http').ServerResponse) => Promise} */ + let handle; + + const resetAbortState = async () => { + const resetRequest = createRequestAndResponse({ + method: 'GET', + url: '/status.json?reset=1', + }); + handle(resetRequest.req, resetRequest.res); + await resetRequest.done; + }; + + const readAbortState = async () => { + const statusRequest = createRequestAndResponse({ + method: 'GET', + url: '/status.json', + }); + handle(statusRequest.req, statusRequest.res); + return await statusRequest.json(); + }; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/request-signal/', + }); + await fixture.build(); + handle = await fixture.loadNodeAdapterHandler(); + }); + + after(async () => { + await fixture.clean(); + }); + + it('aborts request.signal when the underlying socket closes', async () => { + await resetAbortState(); + + const streamRequest = createRequestAndResponse({ + method: 'GET', + url: '/stream', + }); + + const socket = createMockSocket(); + attachSocket(socket, streamRequest.req, streamRequest.res); + + const streamPromise = handle(streamRequest.req, streamRequest.res); + + await delay(10); + socket.destroyed = true; + socket.emit('close'); + + await streamRequest.done; + await streamPromise; + + const payload = await readAbortState(); + + assert.equal(payload.aborted, true); + assert.deepEqual(payload.events, ['started', 'aborted']); + }); + + it('aborts request.signal for SSE responses when the underlying socket closes', async () => { + await resetAbortState(); + + const sseRequest = createRequestAndResponse({ + method: 'GET', + url: '/sse', + }); + + const socket = createMockSocket(); + attachSocket(socket, sseRequest.req, sseRequest.res); + + const ssePromise = handle(sseRequest.req, sseRequest.res); + + await delay(10); + socket.destroyed = true; + socket.emit('close'); + + await sseRequest.done; + await ssePromise; + + const payload = await readAbortState(); + + assert.equal(payload.aborted, true); + assert.deepEqual(payload.events, ['started', 'aborted']); + }); +}); diff --git a/packages/astro/test/units/app/node.test.js b/packages/astro/test/units/app/node.test.js index 7338ad4ed92a..c71ccb78ef17 100644 --- a/packages/astro/test/units/app/node.test.js +++ b/packages/astro/test/units/app/node.test.js @@ -1,4 +1,5 @@ import * as assert from 'node:assert/strict'; +import { EventEmitter } from 'node:events'; import { describe, it } from 'node:test'; import { NodeApp } from '../../../dist/core/app/node.js'; @@ -182,4 +183,71 @@ describe('NodeApp', () => { }); }); }); + + describe('abort signal', () => { + it('aborts the request.signal when the underlying socket closes', () => { + const socket = new EventEmitter(); + socket.encrypted = true; + socket.remoteAddress = '2.2.2.2'; + socket.destroyed = false; + const result = NodeApp.createRequest({ + ...mockNodeRequest, + socket, + }); + assert.equal(result.signal.aborted, false); + socket.destroyed = true; + socket.emit('close'); + assert.equal(result.signal.aborted, true); + }); + + it('cleans up socket listeners after the response finishes', async () => { + const socket = new EventEmitter(); + socket.encrypted = true; + socket.remoteAddress = '2.2.2.2'; + socket.destroyed = false; + const nodeRequest = { + ...mockNodeRequest, + socket, + }; + const result = NodeApp.createRequest(nodeRequest); + assert.equal(typeof result.signal.addEventListener, 'function'); + assert.equal(socket.listenerCount('close') > 0, true); + + const response = new Response('ok'); + const destination = new MockServerResponse(nodeRequest); + await NodeApp.writeResponse(response, destination); + + assert.equal(result.signal.aborted, false); + assert.equal(socket.listenerCount('close'), 0); + }); + }); }); + +class MockServerResponse extends EventEmitter { + constructor(req) { + super(); + this.req = req; + this.statusCode = 200; + this.statusMessage = undefined; + this.headers = {}; + this.body = []; + } + + writeHead(status, headers) { + this.statusCode = status; + this.headers = headers; + } + + write(chunk) { + this.body.push(chunk); + return true; + } + + end() { + this.emit('finish'); + } + + destroy() { + this.emit('close'); + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 888f7177c7f5..f6f5b6c2f839 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3790,6 +3790,15 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/request-signal: + dependencies: + '@astrojs/node': + specifier: workspace:* + version: link:../../../../integrations/node + astro: + specifier: workspace:* + version: link:../../.. + packages/astro/test/fixtures/reroute: dependencies: astro: From 61ccdfc9879b21997a468bc925e11806730cb3d2 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 23 Sep 2025 15:00:40 +0000 Subject: [PATCH 44/50] [ci] format --- packages/astro/src/core/app/node.ts | 3 ++- packages/astro/src/core/constants.ts | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/astro/src/core/app/node.ts b/packages/astro/src/core/app/node.ts index e5161e9c608c..4939356a9883 100644 --- a/packages/astro/src/core/app/node.ts +++ b/packages/astro/src/core/app/node.ts @@ -307,7 +307,8 @@ function getRequestSocket(req: NodeRequest): Socket | undefined { if (req.socket && typeof req.socket.on === 'function') { return req.socket; } - const http2Socket = (req as unknown as { stream?: { session?: { socket?: Socket } } }).stream?.session?.socket; + const http2Socket = (req as unknown as { stream?: { session?: { socket?: Socket } } }).stream + ?.session?.socket; if (http2Socket && typeof http2Socket.on === 'function') { return http2Socket; } diff --git a/packages/astro/src/core/constants.ts b/packages/astro/src/core/constants.ts index fefe8a58c2a0..265b5a3aeef0 100644 --- a/packages/astro/src/core/constants.ts +++ b/packages/astro/src/core/constants.ts @@ -77,7 +77,9 @@ export const originPathnameSymbol = Symbol.for('astro.originPathname'); /** * The symbol used as a field on the request object to store a cleanup callback associated with aborting the request when the underlying socket closes. */ -export const nodeRequestAbortControllerCleanupSymbol = Symbol.for('astro.nodeRequestAbortControllerCleanup'); +export const nodeRequestAbortControllerCleanupSymbol = Symbol.for( + 'astro.nodeRequestAbortControllerCleanup', +); /** * The symbol used as a field on the response object to keep track of streaming. From ad26fa227be2de473b172d1abb1d2ad13b14d08b Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Tue, 23 Sep 2025 17:12:59 +0200 Subject: [PATCH 45/50] refactor(astro): export zod and index from src (#14392) --- packages/astro/index.d.ts | 2 -- packages/astro/package.json | 18 ++++-------------- packages/astro/src/index.ts | 2 ++ packages/astro/{zod.d.ts => src/zod.ts} | 2 +- packages/astro/test/error-map.test.js | 2 +- .../astro/test/types/action-return-type.ts | 2 +- packages/astro/test/types/call-action.ts | 2 +- .../astro/test/types/define-action-accept.ts | 2 +- packages/astro/test/types/is-input-error.ts | 2 +- packages/astro/zod.mjs | 3 --- 10 files changed, 12 insertions(+), 25 deletions(-) delete mode 100644 packages/astro/index.d.ts create mode 100644 packages/astro/src/index.ts rename packages/astro/{zod.d.ts => src/zod.ts} (78%) delete mode 100644 packages/astro/zod.mjs diff --git a/packages/astro/index.d.ts b/packages/astro/index.d.ts deleted file mode 100644 index 7b7a236e7970..000000000000 --- a/packages/astro/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export type * from './dist/types/public/index.js'; -export * from './dist/core/index.js'; diff --git a/packages/astro/package.json b/packages/astro/package.json index ec5bb6b6014a..8fc600fed3d0 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -12,7 +12,7 @@ }, "bugs": "https://github.com/withastro/astro/issues", "homepage": "https://astro.build", - "types": "./index.d.ts", + "types": "./dist/index.d.ts", "typesVersions": { "*": { "app": [ @@ -27,10 +27,7 @@ } }, "exports": { - ".": { - "types": "./index.d.ts", - "default": "./dist/core/index.js" - }, + ".": "./dist/index.js", "./env": "./env.d.ts", "./env/runtime": "./dist/env/runtime.js", "./env/setup": "./dist/env/setup.js", @@ -69,10 +66,7 @@ "./content/runtime-assets": "./dist/content/runtime-assets.js", "./debug": "./components/Debug.astro", "./package.json": "./package.json", - "./zod": { - "types": "./zod.d.ts", - "default": "./zod.mjs" - }, + "./zod": "./dist/zod.js", "./errors": "./dist/core/errors/userError.js", "./middleware": "./dist/core/middleware/index.js", "./virtual-modules/*": "./dist/virtual-modules/*" @@ -86,17 +80,13 @@ "dist", "types", "astro.js", - "index.d.ts", - "zod.d.ts", - "zod.mjs", "env.d.ts", "client.d.ts", "jsx-runtime.d.ts", "templates", "astro-jsx.d.ts", "types.d.ts", - "README.md", - "vendor" + "README.md" ], "scripts": { "prebuild": "astro-scripts prebuild --to-string \"src/runtime/server/astro-island.ts\" \"src/runtime/client/{idle,load,media,only,visible}.ts\"", diff --git a/packages/astro/src/index.ts b/packages/astro/src/index.ts new file mode 100644 index 000000000000..471f085b3d29 --- /dev/null +++ b/packages/astro/src/index.ts @@ -0,0 +1,2 @@ +export * from './core/index.js'; +export type * from './types/public/index.js'; diff --git a/packages/astro/zod.d.ts b/packages/astro/src/zod.ts similarity index 78% rename from packages/astro/zod.d.ts rename to packages/astro/src/zod.ts index 72b66bf6761c..f1a79152b412 100644 --- a/packages/astro/zod.d.ts +++ b/packages/astro/src/zod.ts @@ -1,5 +1,5 @@ import * as mod from 'zod'; + export * from 'zod'; export { mod as z }; export default mod; -export as namespace Zod; diff --git a/packages/astro/test/error-map.test.js b/packages/astro/test/error-map.test.js index e3f13e737190..94b90567432f 100644 --- a/packages/astro/test/error-map.test.js +++ b/packages/astro/test/error-map.test.js @@ -1,7 +1,7 @@ import * as assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { errorMap } from '../dist/core/errors/zod-error-map.js'; -import { z } from '../zod.mjs'; +import { z } from '../dist/zod.js'; import { fixLineEndings } from './test-utils.js'; describe('Content Collections - error map', () => { diff --git a/packages/astro/test/types/action-return-type.ts b/packages/astro/test/types/action-return-type.ts index 13e05a8aeeb1..7675203820e9 100644 --- a/packages/astro/test/types/action-return-type.ts +++ b/packages/astro/test/types/action-return-type.ts @@ -5,7 +5,7 @@ import { defineAction, type SafeResult, } from '../../dist/actions/runtime/virtual/server.js'; -import { z } from '../../zod.mjs'; +import { z } from '../../dist/zod.js'; describe('ActionReturnType', () => { it('Infers action return type', async () => { diff --git a/packages/astro/test/types/call-action.ts b/packages/astro/test/types/call-action.ts index 9d419b9de682..0f7f4fbdf9e4 100644 --- a/packages/astro/test/types/call-action.ts +++ b/packages/astro/test/types/call-action.ts @@ -2,7 +2,7 @@ import { describe, it } from 'node:test'; import { expectTypeOf } from 'expect-type'; import { type ActionReturnType, defineAction } from '../../dist/actions/runtime/virtual/server.js'; import type { APIContext } from '../../dist/types/public/context.js'; -import { z } from '../../zod.mjs'; +import { z } from '../../dist/zod.js'; describe('Astro.callAction', () => { it('Infers JSON action result on callAction', async () => { diff --git a/packages/astro/test/types/define-action-accept.ts b/packages/astro/test/types/define-action-accept.ts index c9a9ca315a34..7c786dfd1efc 100644 --- a/packages/astro/test/types/define-action-accept.ts +++ b/packages/astro/test/types/define-action-accept.ts @@ -1,7 +1,7 @@ import { describe, it } from 'node:test'; import { expectTypeOf } from 'expect-type'; import { defineAction } from '../../dist/actions/runtime/virtual/server.js'; -import { z } from '../../zod.mjs'; +import { z } from '../../dist/zod.js'; describe('defineAction accept', () => { it('accepts type `any` when input is omitted with accept json', async () => { diff --git a/packages/astro/test/types/is-input-error.ts b/packages/astro/test/types/is-input-error.ts index 64eaa1b12165..3a6091a49c29 100644 --- a/packages/astro/test/types/is-input-error.ts +++ b/packages/astro/test/types/is-input-error.ts @@ -1,7 +1,7 @@ import { describe, it } from 'node:test'; import { expectTypeOf } from 'expect-type'; import { defineAction, isInputError } from '../../dist/actions/runtime/virtual/server.js'; -import { z } from '../../zod.mjs'; +import { z } from '../../dist/zod.js'; const exampleAction = defineAction({ input: z.object({ diff --git a/packages/astro/zod.mjs b/packages/astro/zod.mjs deleted file mode 100644 index 0469594e42f6..000000000000 --- a/packages/astro/zod.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import * as mod from 'zod'; -export { mod as z }; -export default mod; From 32a8acba50bb15101c099fc7a14081d1a8cf0331 Mon Sep 17 00:00:00 2001 From: Matthew Conto Date: Wed, 24 Sep 2025 00:03:29 -0700 Subject: [PATCH 46/50] Force sharpService to return a Uint8Array if sharp returns a SharedArrayBuffer (#14428) --- .changeset/tender-candies-stop.md | 5 +++++ packages/astro/src/assets/services/sharp.ts | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/tender-candies-stop.md diff --git a/.changeset/tender-candies-stop.md b/.changeset/tender-candies-stop.md new file mode 100644 index 000000000000..b09518d1779a --- /dev/null +++ b/.changeset/tender-candies-stop.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Force sharpService to return a Uint8Array if Sharp returns a SharedArrayBuffer diff --git a/packages/astro/src/assets/services/sharp.ts b/packages/astro/src/assets/services/sharp.ts index 9103f8f07dc6..b75ec929f1bb 100644 --- a/packages/astro/src/assets/services/sharp.ts +++ b/packages/astro/src/assets/services/sharp.ts @@ -126,8 +126,12 @@ const sharpService: LocalImageService = { const { data, info } = await result.toBuffer({ resolveWithObject: true }); + // Sharp can sometimes return a SharedArrayBuffer when using WebAssembly. + // SharedArrayBuffers need to be copied into an ArrayBuffer in order to be manipulated. + const needsCopy = "buffer" in data && data.buffer instanceof SharedArrayBuffer; + return { - data: data, + data: needsCopy ? new Uint8Array(data) : data, format: info.format as ImageOutputFormat, }; }, From ef7fdb7939897d9c39c0c5a818ef32bf1bd8cc7b Mon Sep 17 00:00:00 2001 From: Matthew Conto Date: Wed, 24 Sep 2025 07:04:07 +0000 Subject: [PATCH 47/50] [ci] format --- packages/astro/src/assets/services/sharp.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/astro/src/assets/services/sharp.ts b/packages/astro/src/assets/services/sharp.ts index b75ec929f1bb..857d35442feb 100644 --- a/packages/astro/src/assets/services/sharp.ts +++ b/packages/astro/src/assets/services/sharp.ts @@ -128,7 +128,7 @@ const sharpService: LocalImageService = { // Sharp can sometimes return a SharedArrayBuffer when using WebAssembly. // SharedArrayBuffers need to be copied into an ArrayBuffer in order to be manipulated. - const needsCopy = "buffer" in data && data.buffer instanceof SharedArrayBuffer; + const needsCopy = 'buffer' in data && data.buffer instanceof SharedArrayBuffer; return { data: needsCopy ? new Uint8Array(data) : data, From 78011ba4ee6cce6d42d246ee7b91a48b1509a3be Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 24 Sep 2025 11:31:28 +0100 Subject: [PATCH 48/50] feat(svelte): add support for async rendering (#14430) * feat: add support for async rendering * Tidy up fixture * Format and dedupe --- .changeset/spicy-foxes-end.md | 31 +++++ examples/framework-multiple/package.json | 2 +- examples/framework-svelte/package.json | 2 +- packages/integrations/svelte/package.json | 6 +- packages/integrations/svelte/src/server.ts | 2 +- .../svelte/test/async-rendering.test.js | 47 +++++++ .../fixtures/async-rendering/astro.config.mjs | 9 ++ .../fixtures/async-rendering/package.json | 16 +++ .../src/components/Counter.svelte | 41 ++++++ .../src/components/Waiter.svelte | 9 ++ .../async-rendering/src/pages/index.astro | 22 ++++ .../fixtures/async-rendering/svelte.config.js | 7 + pnpm-lock.yaml | 121 ++++++++++-------- 13 files changed, 257 insertions(+), 58 deletions(-) create mode 100644 .changeset/spicy-foxes-end.md create mode 100644 packages/integrations/svelte/test/async-rendering.test.js create mode 100644 packages/integrations/svelte/test/fixtures/async-rendering/astro.config.mjs create mode 100644 packages/integrations/svelte/test/fixtures/async-rendering/package.json create mode 100644 packages/integrations/svelte/test/fixtures/async-rendering/src/components/Counter.svelte create mode 100644 packages/integrations/svelte/test/fixtures/async-rendering/src/components/Waiter.svelte create mode 100644 packages/integrations/svelte/test/fixtures/async-rendering/src/pages/index.astro create mode 100644 packages/integrations/svelte/test/fixtures/async-rendering/svelte.config.js diff --git a/.changeset/spicy-foxes-end.md b/.changeset/spicy-foxes-end.md new file mode 100644 index 000000000000..2aa6e5ed8fdb --- /dev/null +++ b/.changeset/spicy-foxes-end.md @@ -0,0 +1,31 @@ +--- +'@astrojs/svelte': minor +--- + +Adds support for async server rendering + +Svelte 5.36 added experimental support for async rendering. This allows you to use `await` in your components in several new places. This worked out of the box with client-rendered components, but server-rendered components needed some extra help. This update adds support for async server rendering in Svelte components used in Astro. + +To use async rendering, you must enable it in your Svelte config: + +```js +// svelte.config.js +export default { + compilerOptions: { + experimental: { + async: true + } + } +}; +``` + +Then you can use `await` in your components: + +```svelte + +

{data.title}

+``` + +See [the Svelte docs](https://svelte.dev/docs/svelte/await-expressions) for more information on using `await` in Svelte components, including inside `$derived` blocks and directly in markup. diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 9d43a6274df4..75f729e8df3e 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -22,7 +22,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "solid-js": "^1.9.9", - "svelte": "^5.38.10", + "svelte": "^5.39.3", "vue": "^3.5.21" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index 9b52a4847f5e..f13c40a99a62 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,6 +12,6 @@ "dependencies": { "@astrojs/svelte": "^7.1.1", "astro": "^5.13.10", - "svelte": "^5.38.10" + "svelte": "^5.39.3" } } diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index 143334388d13..33279cb0c0d5 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -32,7 +32,8 @@ "scripts": { "build": "astro-scripts build \"src/**/*.ts\" && astro-scripts build \"src/editor.cts\" --force-cjs --no-clean-dist && tsc", "build:ci": "astro-scripts build \"src/**/*.ts\" && astro-scripts build \"src/editor.cts\" --force-cjs --no-clean-dist", - "dev": "astro-scripts dev \"src/**/*.ts\"" + "dev": "astro-scripts dev \"src/**/*.ts\"", + "test": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { "@sveltejs/vite-plugin-svelte": "^5.1.1", @@ -42,7 +43,8 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "svelte": "^5.38.7" + "cheerio": "1.1.2", + "svelte": "^5.39.3" }, "peerDependencies": { "astro": "^5.0.0", diff --git a/packages/integrations/svelte/src/server.ts b/packages/integrations/svelte/src/server.ts index 14f8692283e3..e5a2bf4a2186 100644 --- a/packages/integrations/svelte/src/server.ts +++ b/packages/integrations/svelte/src/server.ts @@ -54,7 +54,7 @@ async function renderToStaticMarkup( })); } - const result = render(Component, { + const result = await render(Component, { props: { ...props, children, diff --git a/packages/integrations/svelte/test/async-rendering.test.js b/packages/integrations/svelte/test/async-rendering.test.js new file mode 100644 index 000000000000..be28f5cfa021 --- /dev/null +++ b/packages/integrations/svelte/test/async-rendering.test.js @@ -0,0 +1,47 @@ +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import { load as cheerioLoad } from 'cheerio'; +import { loadFixture } from '../../../astro/test/test-utils.js'; + +let fixture; + +describe('Async rendering', () => { + before(async () => { + fixture = await loadFixture({ + root: new URL('./fixtures/async-rendering/', import.meta.url), + }); + }); + + describe('build', () => { + before(async () => { + await fixture.build(); + }); + + it('Can render async components', async () => { + const html = await fixture.readFile('/index.html'); + const $ = cheerioLoad(html); + + assert.ok($('.weather').text().startsWith('The current temperature at KSC is')); + }); + }); + + describe('dev', () => { + /** @type {import('../../../astro/test/test-utils.js').Fixture} */ + let devServer; + + before(async () => { + devServer = await fixture.startDevServer(); + }); + + after(async () => { + await devServer.stop(); + }); + + it('Can render async components', async () => { + const html = await fixture.fetch('/').then((res) => res.text()); + const $ = cheerioLoad(html); + + assert.ok($('.weather').text().startsWith('The current temperature at KSC is')); + }); + }); +}); diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/astro.config.mjs b/packages/integrations/svelte/test/fixtures/async-rendering/astro.config.mjs new file mode 100644 index 000000000000..1d02b15f63f6 --- /dev/null +++ b/packages/integrations/svelte/test/fixtures/async-rendering/astro.config.mjs @@ -0,0 +1,9 @@ +// @ts-check +import { defineConfig } from 'astro/config'; + +import svelte from '@astrojs/svelte'; + +// https://astro.build/config +export default defineConfig({ + integrations: [svelte()] +}); \ No newline at end of file diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/package.json b/packages/integrations/svelte/test/fixtures/async-rendering/package.json new file mode 100644 index 000000000000..37405f998d9a --- /dev/null +++ b/packages/integrations/svelte/test/fixtures/async-rendering/package.json @@ -0,0 +1,16 @@ +{ + "name": "async-rendering", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/svelte": "^7.1.1", + "astro": "^5.13.10", + "svelte": "^5.39.3" + } +} diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Counter.svelte b/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Counter.svelte new file mode 100644 index 000000000000..a11538645e6c --- /dev/null +++ b/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Counter.svelte @@ -0,0 +1,41 @@ + + +
+ +
{count}
+ +
+
+ {@render children?.()} +
+ + diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Waiter.svelte b/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Waiter.svelte new file mode 100644 index 000000000000..192d3892fcea --- /dev/null +++ b/packages/integrations/svelte/test/fixtures/async-rendering/src/components/Waiter.svelte @@ -0,0 +1,9 @@ + + + +

The current temperature at KSC is {weather.current.temperature_2m}{weather.current_units.temperature_2m}, with a +wind speed of {weather.current.wind_speed_10m} {weather.current_units.wind_speed_10m}. 🚀 +

diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/src/pages/index.astro b/packages/integrations/svelte/test/fixtures/async-rendering/src/pages/index.astro new file mode 100644 index 000000000000..84fc4b5d980e --- /dev/null +++ b/packages/integrations/svelte/test/fixtures/async-rendering/src/pages/index.astro @@ -0,0 +1,22 @@ +--- +import Counter from '../components/Counter.svelte'; +import Waiter from '../components/Waiter.svelte'; +--- + + + + + + + Astro + + +

Astro

+
+ +

Hello, Svelte!

+
+
+ + + diff --git a/packages/integrations/svelte/test/fixtures/async-rendering/svelte.config.js b/packages/integrations/svelte/test/fixtures/async-rendering/svelte.config.js new file mode 100644 index 000000000000..4b50242ecda6 --- /dev/null +++ b/packages/integrations/svelte/test/fixtures/async-rendering/svelte.config.js @@ -0,0 +1,7 @@ +export default { + compilerOptions: { + experimental: { + async: true + } + } +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6f5b6c2f839..42faaaea1bec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -255,8 +255,8 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.10 - version: 5.38.10 + specifier: ^5.39.3 + version: 5.39.3 vue: specifier: ^3.5.21 version: 3.5.21(typescript@5.9.2) @@ -318,8 +318,8 @@ importers: specifier: ^5.13.10 version: link:../../packages/astro svelte: - specifier: ^5.38.10 - version: 5.38.10 + specifier: ^5.39.3 + version: 5.39.3 examples/framework-vue: dependencies: @@ -373,7 +373,7 @@ importers: version: link:../../packages/astro svelte: specifier: ^5.38.10 - version: 5.38.10 + version: 5.39.3 examples/starlog: dependencies: @@ -936,7 +936,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1081,7 +1081,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1138,7 +1138,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1194,7 +1194,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1234,7 +1234,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1274,7 +1274,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1314,7 +1314,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1354,7 +1354,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1394,7 +1394,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1590,7 +1590,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1650,7 +1650,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1794,7 +1794,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -1815,7 +1815,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/alias-tsconfig: dependencies: @@ -1830,7 +1830,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: dependencies: @@ -1842,7 +1842,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: dependencies: @@ -1973,7 +1973,7 @@ importers: version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2006,7 +2006,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2098,7 +2098,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/astro-env: dependencies: @@ -2473,7 +2473,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -2563,7 +2563,7 @@ importers: version: 18.3.1(react@18.3.1) svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/component-library-shared: dependencies: @@ -2923,7 +2923,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/css-import-as-inline: dependencies: @@ -3211,7 +3211,7 @@ importers: version: 10.27.2 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3454,7 +3454,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3672,7 +3672,7 @@ importers: version: 1.9.9 svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -3905,7 +3905,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/server-islands/ssr: dependencies: @@ -3920,7 +3920,7 @@ importers: version: link:../../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/sessions: dependencies: @@ -3995,7 +3995,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/slots-vue: dependencies: @@ -4341,7 +4341,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 packages/astro/test/fixtures/svg-deduplication: dependencies: @@ -4464,7 +4464,7 @@ importers: version: link:../../.. svelte: specifier: ^5.38.6 - version: 5.38.10 + version: 5.39.3 vue: specifier: ^3.5.20 version: 3.5.21(typescript@5.9.2) @@ -4940,7 +4940,7 @@ importers: version: link:../../../../../astro svelte: specifier: ^5.38.10 - version: 5.38.10 + version: 5.39.3 packages/integrations/cloudflare/test/fixtures/with-vue: dependencies: @@ -5916,10 +5916,10 @@ importers: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 - version: 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + version: 5.1.1(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) svelte2tsx: specifier: ^0.7.42 - version: 0.7.42(svelte@5.38.10)(typescript@5.9.2) + version: 0.7.42(svelte@5.39.3)(typescript@5.9.2) vite: specifier: ^6.3.6 version: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) @@ -5930,9 +5930,24 @@ importers: astro-scripts: specifier: workspace:* version: link:../../../scripts + cheerio: + specifier: 1.1.2 + version: 1.1.2 + svelte: + specifier: ^5.39.3 + version: 5.39.3 + + packages/integrations/svelte/test/fixtures/async-rendering: + dependencies: + '@astrojs/svelte': + specifier: ^7.1.1 + version: link:../../.. + astro: + specifier: ^5.13.10 + version: link:../../../../../astro svelte: - specifier: ^5.38.7 - version: 5.38.10 + specifier: ^5.39.3 + version: 5.39.3 packages/integrations/vercel: dependencies: @@ -5941,7 +5956,7 @@ importers: version: link:../../internal-helpers '@vercel/analytics': specifier: ^1.5.0 - version: 1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2)) + version: 1.5.0(react@19.1.1)(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2)) '@vercel/functions': specifier: ^2.2.13 version: 2.2.13 @@ -13280,8 +13295,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.38.10: - resolution: {integrity: sha512-UY+OhrWK7WI22bCZ00P/M3HtyWgwJPi9IxSRkoAE2MeAy6kl7ZlZWJZ8RaB+X4KD/G+wjis+cGVnVYaoqbzBqg==} + svelte@5.39.3: + resolution: {integrity: sha512-7Jwus6iXviGZAvhqbeYu3NNHA6LGyQ8EbmjdAhJUDade5rrW6g9VnBbRhUuYX4pMZLHozijsFolt88zvKPfsbQ==} engines: {node: '>=18'} svgo@3.3.2: @@ -16525,23 +16540,23 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.3 - svelte: 5.38.10 + svelte: 5.39.3 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.38.10)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)))(svelte@5.39.3)(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.19 - svelte: 5.38.10 + svelte: 5.39.3 vite: 6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1) vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(yaml@2.8.1)) transitivePeerDependencies: @@ -16935,10 +16950,10 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))': + '@vercel/analytics@1.5.0(react@19.1.1)(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2))': optionalDependencies: react: 19.1.1 - svelte: 5.38.10 + svelte: 5.39.3 vue: 3.5.21(typescript@5.9.2) '@vercel/functions@2.2.13': @@ -21770,14 +21785,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte2tsx@0.7.42(svelte@5.38.10)(typescript@5.9.2): + svelte2tsx@0.7.42(svelte@5.39.3)(typescript@5.9.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.38.10 + svelte: 5.39.3 typescript: 5.9.2 - svelte@5.38.10: + svelte@5.39.3: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 From 9cc8f21a15492a80e2edae0e38c652174a8c3ba0 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 24 Sep 2025 15:11:56 +0100 Subject: [PATCH 49/50] fix(svelte): detect Svelte components with renamed renderer prop (#14433) --- .changeset/good-bags-glow.md | 5 ++ .../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 | 4 +- .../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 +- packages/integrations/svelte/src/server.ts | 5 +- pnpm-lock.yaml | 58 +++++++++---------- 32 files changed, 67 insertions(+), 61 deletions(-) create mode 100644 .changeset/good-bags-glow.md diff --git a/.changeset/good-bags-glow.md b/.changeset/good-bags-glow.md new file mode 100644 index 000000000000..b08823783fc4 --- /dev/null +++ b/.changeset/good-bags-glow.md @@ -0,0 +1,5 @@ +--- +'@astrojs/svelte': patch +--- + +Fixes a bug that prevented Svelte 5.39.1+ components rendering when multiple frameworks were present diff --git a/packages/astro/e2e/fixtures/client-only/package.json b/packages/astro/e2e/fixtures/client-only/package.json index eabbe0e465ec..62752af304a2 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/errors/package.json b/packages/astro/e2e/fixtures/errors/package.json index 4b82ce35794e..2b7459fc2acb 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.91.0", "solid-js": "^1.9.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/multiple-frameworks/package.json b/packages/astro/e2e/fixtures/multiple-frameworks/package.json index 51ba74da7cdf..be806040e89c 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/nested-in-preact/package.json b/packages/astro/e2e/fixtures/nested-in-preact/package.json index 6b0e7d54a455..71426945b69c 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/nested-in-react/package.json b/packages/astro/e2e/fixtures/nested-in-react/package.json index 1a9f334a4c8b..2d8f6fa98523 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/nested-in-solid/package.json b/packages/astro/e2e/fixtures/nested-in-solid/package.json index 6fb7fe25b2e8..6a250aa71bdf 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/nested-in-svelte/package.json b/packages/astro/e2e/fixtures/nested-in-svelte/package.json index f4ebe1248920..c912720f675d 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/nested-in-vue/package.json b/packages/astro/e2e/fixtures/nested-in-vue/package.json index c813d9eabd2d..e0df635dac77 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/e2e/fixtures/nested-recursive/package.json b/packages/astro/e2e/fixtures/nested-recursive/package.json index a5ced5b99114..99d825681a6c 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" }, "scripts": { diff --git a/packages/astro/e2e/fixtures/svelte-component/package.json b/packages/astro/e2e/fixtures/svelte-component/package.json index 434b59380a7c..2f898e38c792 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/e2e/fixtures/view-transitions/package.json b/packages/astro/e2e/fixtures/view-transitions/package.json index 70762d047505..b594f7ca0a9a 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/test/fixtures/0-css/package.json b/packages/astro/test/fixtures/0-css/package.json index ea1362b1c23c..38d2132256cd 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.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } 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 1d226c2b09a3..f58da3b49934 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/alias-tsconfig/package.json b/packages/astro/test/fixtures/alias-tsconfig/package.json index 5b73abdb1a1a..62cf49e087c4 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/alias/package.json b/packages/astro/test/fixtures/alias/package.json index 9d9f81aac9fe..541e6d580ac2 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/astro-children/package.json b/packages/astro/test/fixtures/astro-children/package.json index 0f6cef37dc7a..944a34ff9aba 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.27.1", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/test/fixtures/astro-client-only/package.json b/packages/astro/test/fixtures/astro-client-only/package.json index 44ffaab9c7dc..a607c9477ecd 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/astro-dynamic/package.json b/packages/astro/test/fixtures/astro-dynamic/package.json index 11def2f832bf..09a1f26d502c 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/astro-slots-nested/package.json b/packages/astro/test/fixtures/astro-slots-nested/package.json index 26404ffd635f..6141f9db842a 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/test/fixtures/component-library/package.json b/packages/astro/test/fixtures/component-library/package.json index b6bb9fcf9c61..e36c832a46d6 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.27.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "svelte": "^5.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/css-dangling-references/package.json b/packages/astro/test/fixtures/css-dangling-references/package.json index fdf8d563e2e7..a5878fbe151c 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.38.6" + "svelte": "^5.39.3" } -} \ No newline at end of file +} diff --git a/packages/astro/test/fixtures/fetch/package.json b/packages/astro/test/fixtures/fetch/package.json index 656ab136f4b8..3599908ae8ae 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.27.1", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/test/fixtures/jsx/package.json b/packages/astro/test/fixtures/jsx/package.json index eef83254d339..20f9d156ea05 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.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json index e3745d1d4714..e3e079667782 100644 --- a/packages/astro/test/fixtures/postcss/package.json +++ b/packages/astro/test/fixtures/postcss/package.json @@ -10,7 +10,7 @@ "autoprefixer": "^10.4.21", "postcss": "^8.5.6", "solid-js": "^1.9.9", - "svelte": "^5.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" }, "devDependencies": { diff --git a/packages/astro/test/fixtures/server-islands/hybrid/package.json b/packages/astro/test/fixtures/server-islands/hybrid/package.json index 5321c215068a..d938260a222e 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/server-islands/ssr/package.json b/packages/astro/test/fixtures/server-islands/ssr/package.json index 53f9d8ffdf41..9ae5de73cdf9 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/slots-svelte/package.json b/packages/astro/test/fixtures/slots-svelte/package.json index 693334be86a8..07ad759aa4bd 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.38.6" + "svelte": "^5.39.3" } } diff --git a/packages/astro/test/fixtures/svelte-component/package.json b/packages/astro/test/fixtures/svelte-component/package.json index ebc43a8d8840..97a84900ff39 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.38.6" + "svelte": "^5.39.3" } } 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 06c99c06e579..d10b1db651e2 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.38.6", + "svelte": "^5.39.3", "vue": "^3.5.20" } } diff --git a/packages/integrations/svelte/src/server.ts b/packages/integrations/svelte/src/server.ts index e5a2bf4a2186..c077b38f17a6 100644 --- a/packages/integrations/svelte/src/server.ts +++ b/packages/integrations/svelte/src/server.ts @@ -6,11 +6,12 @@ import type { RendererContext } from './types.js'; function check(Component: any) { if (typeof Component !== 'function') return false; - // Svelte 5 generated components always accept a `$$payload` prop. + // Svelte 5 generated components always accept a `$$renderer` prop (previously called `$$payload`). // This assumes that the SSR build does not minify it (which Astro enforces by default). // This isn't the best check, but the only other option otherwise is to try to render the // component, which is taxing. We'll leave it as a last resort for the future for now. - return Component.toString().includes('$$payload'); + const componentString = Component.toString(); + return componentString.includes('$$payload') || componentString.includes('$$renderer'); } function needsHydration(metadata?: AstroComponentMetadata) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42faaaea1bec..f21050eda5ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -935,7 +935,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1080,7 +1080,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1137,7 +1137,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1193,7 +1193,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1233,7 +1233,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1273,7 +1273,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1313,7 +1313,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1353,7 +1353,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1393,7 +1393,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1589,7 +1589,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/e2e/fixtures/tailwindcss: @@ -1649,7 +1649,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1793,7 +1793,7 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -1814,7 +1814,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/alias-tsconfig: @@ -1829,7 +1829,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/alias-tsconfig-baseurl-only: @@ -1841,7 +1841,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/alias-tsconfig-no-baseurl: @@ -1972,7 +1972,7 @@ importers: specifier: ^10.27.1 version: 10.27.2 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -2005,7 +2005,7 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/astro-client-only/pkg: {} @@ -2097,7 +2097,7 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/astro-env: @@ -2472,7 +2472,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -2562,7 +2562,7 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/component-library-shared: @@ -2922,7 +2922,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/css-import-as-inline: @@ -3210,7 +3210,7 @@ importers: specifier: ^10.27.1 version: 10.27.2 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -3453,7 +3453,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -3671,7 +3671,7 @@ importers: specifier: ^1.9.9 version: 1.9.9 svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 @@ -3904,7 +3904,7 @@ importers: specifier: workspace:* version: link:../../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/server-islands/ssr: @@ -3919,7 +3919,7 @@ importers: specifier: workspace:* version: link:../../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/sessions: @@ -3994,7 +3994,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/slots-vue: @@ -4340,7 +4340,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 packages/astro/test/fixtures/svg-deduplication: @@ -4463,7 +4463,7 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^5.38.6 + specifier: ^5.39.3 version: 5.39.3 vue: specifier: ^3.5.20 From 784cebad973e64e6660fe1f01bd451253dc4fdd8 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Wed, 24 Sep 2025 07:43:57 -0700 Subject: [PATCH 50/50] [ci] release (#14418) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/good-bags-glow.md | 5 -- .changeset/honest-sheep-yawn.md | 5 -- .changeset/lazy-trains-switch.md | 5 -- .changeset/old-worms-go.md | 7 --- .changeset/spicy-foxes-end.md | 31 ------------ .changeset/tender-candies-stop.md | 5 -- .changeset/three-schools-move.md | 5 -- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-multiple/package.json | 4 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 4 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 2 +- examples/integration/package.json | 2 +- examples/minimal/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 4 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/with-markdoc/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 16 +++++++ packages/astro/package.json | 2 +- packages/integrations/svelte/CHANGELOG.md | 36 ++++++++++++++ packages/integrations/svelte/package.json | 2 +- pnpm-lock.yaml | 52 ++++++++++----------- 35 files changed, 106 insertions(+), 117 deletions(-) delete mode 100644 .changeset/good-bags-glow.md delete mode 100644 .changeset/honest-sheep-yawn.md delete mode 100644 .changeset/lazy-trains-switch.md delete mode 100644 .changeset/old-worms-go.md delete mode 100644 .changeset/spicy-foxes-end.md delete mode 100644 .changeset/tender-candies-stop.md delete mode 100644 .changeset/three-schools-move.md diff --git a/.changeset/good-bags-glow.md b/.changeset/good-bags-glow.md deleted file mode 100644 index b08823783fc4..000000000000 --- a/.changeset/good-bags-glow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@astrojs/svelte': patch ---- - -Fixes a bug that prevented Svelte 5.39.1+ components rendering when multiple frameworks were present diff --git a/.changeset/honest-sheep-yawn.md b/.changeset/honest-sheep-yawn.md deleted file mode 100644 index 72032b0ba907..000000000000 --- a/.changeset/honest-sheep-yawn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes an issue where `astro info` would log errors to console in certain cases. diff --git a/.changeset/lazy-trains-switch.md b/.changeset/lazy-trains-switch.md deleted file mode 100644 index 8a7933b42698..000000000000 --- a/.changeset/lazy-trains-switch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes an unsatisfiable type definition when calling `addServerRenderer` on an experimental container instance diff --git a/.changeset/old-worms-go.md b/.changeset/old-worms-go.md deleted file mode 100644 index e5971b750c70..000000000000 --- a/.changeset/old-worms-go.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'astro': patch ---- - -Adds automatic request signal abortion when the underlying socket closes in the Node.js adapter - -The Node.js adapter now automatically aborts the `request.signal` when the client connection is terminated. This enables better resource management and allows applications to properly handle client disconnections through the standard `AbortSignal` API. diff --git a/.changeset/spicy-foxes-end.md b/.changeset/spicy-foxes-end.md deleted file mode 100644 index 2aa6e5ed8fdb..000000000000 --- a/.changeset/spicy-foxes-end.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@astrojs/svelte': minor ---- - -Adds support for async server rendering - -Svelte 5.36 added experimental support for async rendering. This allows you to use `await` in your components in several new places. This worked out of the box with client-rendered components, but server-rendered components needed some extra help. This update adds support for async server rendering in Svelte components used in Astro. - -To use async rendering, you must enable it in your Svelte config: - -```js -// svelte.config.js -export default { - compilerOptions: { - experimental: { - async: true - } - } -}; -``` - -Then you can use `await` in your components: - -```svelte - -

{data.title}

-``` - -See [the Svelte docs](https://svelte.dev/docs/svelte/await-expressions) for more information on using `await` in Svelte components, including inside `$derived` blocks and directly in markup. diff --git a/.changeset/tender-candies-stop.md b/.changeset/tender-candies-stop.md deleted file mode 100644 index b09518d1779a..000000000000 --- a/.changeset/tender-candies-stop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Force sharpService to return a Uint8Array if Sharp returns a SharedArrayBuffer diff --git a/.changeset/three-schools-move.md b/.changeset/three-schools-move.md deleted file mode 100644 index 2f15d5cfecbd..000000000000 --- a/.changeset/three-schools-move.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes relative links to docs that could not be opened in the editor. diff --git a/examples/basics/package.json b/examples/basics/package.json index ab77a9510e50..70a7015f4f68 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index 315c0e0ba85a..0e8a7afb99d5 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -13,7 +13,7 @@ "@astrojs/mdx": "^4.3.6", "@astrojs/rss": "^4.0.12", "@astrojs/sitemap": "^3.6.0", - "astro": "^5.13.10", + "astro": "^5.13.11", "sharp": "^0.34.3" } } diff --git a/examples/component/package.json b/examples/component/package.json index 0b0166a4959d..f2b324808683 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^5.13.10" + "astro": "^5.13.11" }, "peerDependencies": { "astro": "^4.0.0 || ^5.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index ae717fa0418c..5733eaaa8254 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/react": "^4.3.1", - "astro": "^5.13.10", + "astro": "^5.13.11", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "^3.2.4" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index a85ca46b357b..ea3568250b58 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -13,6 +13,6 @@ "@astrojs/alpinejs": "^0.4.9", "@types/alpinejs": "^3.13.11", "alpinejs": "^3.15.0", - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 75f729e8df3e..0b23d9212b0d 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -13,11 +13,11 @@ "@astrojs/preact": "^4.1.1", "@astrojs/react": "^4.3.1", "@astrojs/solid-js": "^5.1.1", - "@astrojs/svelte": "^7.1.1", + "@astrojs/svelte": "^7.2.0", "@astrojs/vue": "^5.1.1", "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", - "astro": "^5.13.10", + "astro": "^5.13.11", "preact": "^10.27.2", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 9f7745de93c1..9cefc7e1f8f8 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/preact": "^4.1.1", "@preact/signals": "^2.3.1", - "astro": "^5.13.10", + "astro": "^5.13.11", "preact": "^10.27.2" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index 6855be4966ad..b05c623615e5 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -13,7 +13,7 @@ "@astrojs/react": "^4.3.1", "@types/react": "^18.3.24", "@types/react-dom": "^18.3.7", - "astro": "^5.13.10", + "astro": "^5.13.11", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index 5707a623bc9c..6d3b31009a57 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/solid-js": "^5.1.1", - "astro": "^5.13.10", + "astro": "^5.13.11", "solid-js": "^1.9.9" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index f13c40a99a62..ba9358076351 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -10,8 +10,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/svelte": "^7.1.1", - "astro": "^5.13.10", + "@astrojs/svelte": "^7.2.0", + "astro": "^5.13.11", "svelte": "^5.39.3" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index a41882eda152..4f4cf67bfe9b 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@astrojs/vue": "^5.1.1", - "astro": "^5.13.10", + "astro": "^5.13.11", "vue": "^3.5.21" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index a68f6067a170..a5881c14708d 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -11,6 +11,6 @@ }, "dependencies": { "@astrojs/node": "^9.4.4", - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 6e723d2d1509..5c8ad1fcbe08 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^5.13.10" + "astro": "^5.13.11" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index 9334fdab4367..e365eedb4c3a 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index d61ef58962e9..9b7984da1b5c 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -10,6 +10,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index fff165bbf40d..9b658b692142 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@astrojs/node": "^9.4.4", - "@astrojs/svelte": "^7.1.1", - "astro": "^5.13.10", + "@astrojs/svelte": "^7.2.0", + "astro": "^5.13.11", "svelte": "^5.38.10" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index b1f14ddab502..584bdc0b781a 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -9,7 +9,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.13.10", + "astro": "^5.13.11", "sass": "^1.92.1", "sharp": "^0.34.3" } diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index cde084de142d..2f91855ecd1a 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -16,6 +16,6 @@ }, "devDependencies": { "@types/node": "^18.17.8", - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 416bd4cca750..bcba6a9e8165 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -11,6 +11,6 @@ }, "dependencies": { "@astrojs/markdoc": "^0.15.7", - "astro": "^5.13.10" + "astro": "^5.13.11" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 553a094b7d92..bbf5c450d009 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/mdx": "^4.3.6", "@astrojs/preact": "^4.1.1", - "astro": "^5.13.10", + "astro": "^5.13.11", "preact": "^10.27.2" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index d6fd86423e8f..c16a2920230f 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/preact": "^4.1.1", "@nanostores/preact": "^0.5.2", - "astro": "^5.13.10", + "astro": "^5.13.11", "nanostores": "^0.11.4", "preact": "^10.27.2" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index d78361cb6c9b..5070d07f2046 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -13,7 +13,7 @@ "@astrojs/mdx": "^4.3.6", "@tailwindcss/vite": "^4.1.13", "@types/canvas-confetti": "^1.9.0", - "astro": "^5.13.10", + "astro": "^5.13.11", "canvas-confetti": "^1.9.3", "tailwindcss": "^4.1.13" } diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 9016a32ef5b5..6566eb63960b 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -11,7 +11,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^5.13.10", + "astro": "^5.13.11", "vitest": "^3.2.4" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index c0f3e80644d7..88612fa9879b 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,21 @@ # astro +## 5.13.11 + +### Patch Changes + +- [#14409](https://github.com/withastro/astro/pull/14409) [`250a595`](https://github.com/withastro/astro/commit/250a595596e9c7e1a966c5cda40f9bd5cf9d3f66) Thanks [@louisescher](https://github.com/louisescher)! - Fixes an issue where `astro info` would log errors to console in certain cases. + +- [#14398](https://github.com/withastro/astro/pull/14398) [`a7df80d`](https://github.com/withastro/astro/commit/a7df80d284652b500079e4476b17d5d1b7746b06) Thanks [@idawnlight](https://github.com/idawnlight)! - Fixes an unsatisfiable type definition when calling `addServerRenderer` on an experimental container instance + +- [#13747](https://github.com/withastro/astro/pull/13747) [`120866f`](https://github.com/withastro/astro/commit/120866f35a6b27c31bae1c04c0ea9d6bdaf09b16) Thanks [@jp-knj](https://github.com/jp-knj)! - Adds automatic request signal abortion when the underlying socket closes in the Node.js adapter + + The Node.js adapter now automatically aborts the `request.signal` when the client connection is terminated. This enables better resource management and allows applications to properly handle client disconnections through the standard `AbortSignal` API. + +- [#14428](https://github.com/withastro/astro/pull/14428) [`32a8acb`](https://github.com/withastro/astro/commit/32a8acba50bb15101c099fc7a14081d1a8cf0331) Thanks [@drfuzzyness](https://github.com/drfuzzyness)! - Force sharpService to return a Uint8Array if Sharp returns a SharedArrayBuffer + +- [#14411](https://github.com/withastro/astro/pull/14411) [`a601186`](https://github.com/withastro/astro/commit/a601186fb9ac0e7c8ff20887024234ecbfdd6ff1) Thanks [@GameRoMan](https://github.com/GameRoMan)! - Fixes relative links to docs that could not be opened in the editor. + ## 5.13.10 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index 8fc600fed3d0..e80a0ea7f7f0 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "5.13.10", + "version": "5.13.11", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/packages/integrations/svelte/CHANGELOG.md b/packages/integrations/svelte/CHANGELOG.md index d9ac6e147713..6d80b7abde42 100644 --- a/packages/integrations/svelte/CHANGELOG.md +++ b/packages/integrations/svelte/CHANGELOG.md @@ -1,5 +1,41 @@ # @astrojs/svelte +## 7.2.0 + +### Minor Changes + +- [#14430](https://github.com/withastro/astro/pull/14430) [`78011ba`](https://github.com/withastro/astro/commit/78011ba4ee6cce6d42d246ee7b91a48b1509a3be) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds support for async server rendering + + Svelte 5.36 added experimental support for async rendering. This allows you to use `await` in your components in several new places. This worked out of the box with client-rendered components, but server-rendered components needed some extra help. This update adds support for async server rendering in Svelte components used in Astro. + + To use async rendering, you must enable it in your Svelte config: + + ```js + // svelte.config.js + export default { + compilerOptions: { + experimental: { + async: true, + }, + }, + }; + ``` + + Then you can use `await` in your components: + + ```svelte + +

{data.title}

+ ``` + + See [the Svelte docs](https://svelte.dev/docs/svelte/await-expressions) for more information on using `await` in Svelte components, including inside `$derived` blocks and directly in markup. + +### Patch Changes + +- [#14433](https://github.com/withastro/astro/pull/14433) [`9cc8f21`](https://github.com/withastro/astro/commit/9cc8f21a15492a80e2edae0e38c652174a8c3ba0) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes a bug that prevented Svelte 5.39.1+ components rendering when multiple frameworks were present + ## 7.1.1 ### Patch Changes diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index 33279cb0c0d5..fbb8c7d9eb72 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/svelte", - "version": "7.1.1", + "version": "7.2.0", "description": "Use Svelte components within Astro", "type": "module", "types": "./dist/index.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f21050eda5ca..966e928a69f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,7 +149,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/blog: @@ -164,7 +164,7 @@ importers: specifier: ^3.6.0 version: link:../../packages/integrations/sitemap astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro sharp: specifier: ^0.34.3 @@ -173,7 +173,7 @@ importers: examples/component: devDependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/container-with-vitest: @@ -182,7 +182,7 @@ importers: specifier: ^4.3.1 version: link:../../packages/integrations/react astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -213,7 +213,7 @@ importers: specifier: ^3.15.0 version: 3.15.0 astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/framework-multiple: @@ -228,7 +228,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/solid '@astrojs/svelte': - specifier: ^7.1.1 + specifier: ^7.2.0 version: link:../../packages/integrations/svelte '@astrojs/vue': specifier: ^5.1.1 @@ -240,7 +240,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.24) astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro preact: specifier: ^10.27.2 @@ -270,7 +270,7 @@ importers: specifier: ^2.3.1 version: 2.3.1(preact@10.27.2) astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro preact: specifier: ^10.27.2 @@ -288,7 +288,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.24) astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -303,7 +303,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/solid astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro solid-js: specifier: ^1.9.9 @@ -312,10 +312,10 @@ importers: examples/framework-svelte: dependencies: '@astrojs/svelte': - specifier: ^7.1.1 + specifier: ^7.2.0 version: link:../../packages/integrations/svelte astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro svelte: specifier: ^5.39.3 @@ -327,7 +327,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/integrations/vue astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro vue: specifier: ^3.5.21 @@ -339,25 +339,25 @@ importers: specifier: ^9.4.4 version: link:../../packages/integrations/node astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/minimal: dependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/ssr: @@ -366,10 +366,10 @@ importers: specifier: ^9.4.4 version: link:../../packages/integrations/node '@astrojs/svelte': - specifier: ^7.1.1 + specifier: ^7.2.0 version: link:../../packages/integrations/svelte astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro svelte: specifier: ^5.38.10 @@ -378,7 +378,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro sass: specifier: ^1.92.1 @@ -393,7 +393,7 @@ importers: specifier: ^18.17.8 version: 18.19.124 astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/with-markdoc: @@ -402,7 +402,7 @@ importers: specifier: ^0.15.7 version: link:../../packages/integrations/markdoc astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro examples/with-mdx: @@ -414,7 +414,7 @@ importers: specifier: ^4.1.1 version: link:../../packages/integrations/preact astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro preact: specifier: ^10.27.2 @@ -429,7 +429,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.4)(preact@10.27.2) astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro nanostores: specifier: ^0.11.4 @@ -450,7 +450,7 @@ importers: specifier: ^1.9.0 version: 1.9.0 astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro canvas-confetti: specifier: ^1.9.3 @@ -462,7 +462,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^5.13.10 + specifier: ^5.13.11 version: link:../../packages/astro vitest: specifier: ^3.2.4