diff --git a/.changeset/fix-svelte-prerender-node.md b/.changeset/fix-svelte-prerender-node.md
new file mode 100644
index 000000000000..ad72628fe1bd
--- /dev/null
+++ b/.changeset/fix-svelte-prerender-node.md
@@ -0,0 +1,6 @@
+---
+'@astrojs/cloudflare': patch
+'@astrojs/svelte': patch
+---
+
+Fixes `.svelte` files in `node_modules` failing with `Unknown file extension ".svelte"` when using the Cloudflare adapter with `prerenderEnvironment: 'node'`
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts
index 5e7c4481f619..d5b7835841b1 100644
--- a/packages/integrations/cloudflare/src/index.ts
+++ b/packages/integrations/cloudflare/src/index.ts
@@ -306,7 +306,6 @@ export default function createIntegration({
if (conf.ssr) {
// Cloudflare does not support externalizing modules in server environments
conf.ssr.external = undefined;
- conf.ssr.noExternal = true;
}
},
},
diff --git a/packages/integrations/cloudflare/src/vite-plugin-dev-server-prerender-middleware.ts b/packages/integrations/cloudflare/src/vite-plugin-dev-server-prerender-middleware.ts
index 25fc90ba6d13..5bcd6651e998 100644
--- a/packages/integrations/cloudflare/src/vite-plugin-dev-server-prerender-middleware.ts
+++ b/packages/integrations/cloudflare/src/vite-plugin-dev-server-prerender-middleware.ts
@@ -18,14 +18,6 @@ export function createNodePrerenderPlugin(): vite.Plugin {
};
},
- // Disable dep optimization for the `prerender` environment so dependencies
- // are loaded via native import() with correct import.meta.url semantics.
- configEnvironment(environmentName) {
- if (environmentName === 'prerender') {
- return { optimizeDeps: { noDiscovery: true, include: [] } };
- }
- },
-
configureServer(server) {
(server as any)[devPrerenderMiddlewareSymbol] = true;
},
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/astro.config.mjs
index 86dbfb924824..cb8168367f51 100644
--- a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/astro.config.mjs
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/astro.config.mjs
@@ -1,3 +1,6 @@
import { defineConfig } from 'astro/config';
+import svelte from '@astrojs/svelte';
-export default defineConfig({});
+export default defineConfig({
+ integrations: [svelte()],
+});
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/package.json b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/package.json
new file mode 100644
index 000000000000..5613dd151cde
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "fake-svelte-pkg",
+ "version": "1.0.0",
+ "type": "module",
+ "exports": {
+ ".": "./src/index.js"
+ },
+ "peerDependencies": {
+ "svelte": "^5.0.0"
+ }
+}
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/src/FakeComponent.svelte b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/src/FakeComponent.svelte
new file mode 100644
index 000000000000..ec2d63936fd4
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/src/FakeComponent.svelte
@@ -0,0 +1 @@
+
Hello from fake svelte component
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/src/index.js b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/src/index.js
new file mode 100644
index 000000000000..42c5b2af5f7b
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg/src/index.js
@@ -0,0 +1 @@
+export { default as FakeComponent } from './FakeComponent.svelte';
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/package.json b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/package.json
index 19e3ed1bd820..abda43484202 100644
--- a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/package.json
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/package.json
@@ -4,6 +4,9 @@
"private": true,
"dependencies": {
"@astrojs/cloudflare": "workspace:*",
- "astro": "workspace:*"
+ "@astrojs/svelte": "workspace:*",
+ "astro": "workspace:*",
+ "svelte": "^5.0.0",
+ "fake-svelte-pkg": "file:./fake-svelte-pkg"
}
}
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/src/components/SvelteWrapper.svelte b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/src/components/SvelteWrapper.svelte
new file mode 100644
index 000000000000..7df170a7e13a
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/src/components/SvelteWrapper.svelte
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/packages/integrations/cloudflare/test/fixtures/prerender-node-env/src/pages/svelte.astro b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/src/pages/svelte.astro
new file mode 100644
index 000000000000..9ef1fc29ad91
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/prerender-node-env/src/pages/svelte.astro
@@ -0,0 +1,15 @@
+---
+export const prerender = true;
+
+import SvelteWrapper from '../components/SvelteWrapper.svelte';
+---
+
+
+
+
+ Svelte Prerender Test
+
+
+
+
+
diff --git a/packages/integrations/cloudflare/test/prerender-node-env.test.js b/packages/integrations/cloudflare/test/prerender-node-env.test.js
index aa4645ff0e05..4d26e63118d4 100644
--- a/packages/integrations/cloudflare/test/prerender-node-env.test.js
+++ b/packages/integrations/cloudflare/test/prerender-node-env.test.js
@@ -39,6 +39,20 @@ describe('prerenderEnvironment: node', () => {
);
});
+ it('renders svelte component that imports .svelte files from node_modules', async () => {
+ const res = await fixture.fetch('/svelte');
+ assert.equal(res.status, 200);
+ const html = await res.text();
+ assert.ok(
+ html.includes('id="svelte-wrapper"'),
+ 'Expected the prerendered page to contain the svelte wrapper',
+ );
+ assert.ok(
+ html.includes('Hello from fake svelte component'),
+ 'Expected the fake svelte component to be rendered',
+ );
+ });
+
it('includes styles in prerendered page', async () => {
const res = await fixture.fetch('/');
const html = await res.text();
diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json
index b4ad39589949..ae0a970ad22d 100644
--- a/packages/integrations/svelte/package.json
+++ b/packages/integrations/svelte/package.json
@@ -40,7 +40,8 @@
"dependencies": {
"@sveltejs/vite-plugin-svelte": "^6.2.4",
"svelte2tsx": "^0.7.52",
- "vite": "^7.3.1"
+ "vite": "^7.3.1",
+ "vitefu": "^1.1.2"
},
"devDependencies": {
"astro": "workspace:*",
diff --git a/packages/integrations/svelte/src/index.ts b/packages/integrations/svelte/src/index.ts
index b391cd1c90cb..9a92bd6a354b 100644
--- a/packages/integrations/svelte/src/index.ts
+++ b/packages/integrations/svelte/src/index.ts
@@ -1,7 +1,9 @@
import type { Options } from '@sveltejs/vite-plugin-svelte';
import { svelte, vitePreprocess } from '@sveltejs/vite-plugin-svelte';
import type { AstroIntegration, AstroRenderer } from 'astro';
+import { fileURLToPath } from 'node:url';
import type { Plugin } from 'vite';
+import { crawlFrameworkPkgs } from 'vitefu';
import { createSvelteOptimizeEsbuildPlugins } from './optimize-esbuild-plugins.js';
function getRenderer(): AstroRenderer {
@@ -18,11 +20,20 @@ export default function svelteIntegration(options?: Options): AstroIntegration {
return {
name: '@astrojs/svelte',
hooks: {
- 'astro:config:setup': async ({ updateConfig, addRenderer }) => {
+ 'astro:config:setup': async ({ config, updateConfig, addRenderer }) => {
addRenderer(getRenderer());
+
+ const sveltePackages = await crawlFrameworkPkgs({
+ root: fileURLToPath(config.root),
+ isBuild: false,
+ isFrameworkPkgByJson(pkgJson) {
+ return !!pkgJson.peerDependencies?.svelte;
+ },
+ });
+
updateConfig({
vite: {
- plugins: [svelte(options), configEnvironmentPlugin()],
+ plugins: [svelte(options), configEnvironmentPlugin(sveltePackages.ssr.noExternal)],
},
});
},
@@ -30,16 +41,42 @@ export default function svelteIntegration(options?: Options): AstroIntegration {
};
}
-function configEnvironmentPlugin(): Plugin {
+function configEnvironmentPlugin(svelteNoExternal: string[]): Plugin {
return {
name: '@astrojs/svelte:config-environment',
configEnvironment(environmentName, options) {
+ const isServer = environmentName !== 'client';
+
+ if (isServer && svelteNoExternal.length > 0) {
+ // Add svelte framework packages to noExternal so they go through
+ // Vite's transform pipeline (Node can't import .svelte files natively).
+ const result: any = {
+ resolve: {
+ noExternal: svelteNoExternal,
+ },
+ };
+
+ if (
+ (environmentName === 'ssr' || environmentName === 'prerender') &&
+ options.optimizeDeps?.noDiscovery === false
+ ) {
+ result.optimizeDeps = {
+ include: ['svelte/server', 'svelte/internal/server'],
+ exclude: ['@astrojs/svelte/server.js'],
+ esbuildOptions: {
+ plugins: createSvelteOptimizeEsbuildPlugins('server'),
+ },
+ };
+ }
+
+ return result;
+ }
+
if (
environmentName === 'client' ||
((environmentName === 'ssr' || environmentName === 'prerender') &&
options.optimizeDeps?.noDiscovery === false)
) {
- const isServer = environmentName !== 'client';
return {
optimizeDeps: {
include: isServer
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2e641f4f2096..22f322209512 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4972,9 +4972,20 @@ importers:
'@astrojs/cloudflare':
specifier: workspace:*
version: link:../../..
+ '@astrojs/svelte':
+ specifier: workspace:*
+ version: link:../../../../svelte
astro:
specifier: workspace:*
version: link:../../../../../astro
+ fake-svelte-pkg:
+ specifier: file:./fake-svelte-pkg
+ version: file:packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg(svelte@5.54.1)
+ svelte:
+ specifier: ^5.0.0
+ version: 5.54.1
+
+ packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg: {}
packages/integrations/cloudflare/test/fixtures/prerender-styles:
dependencies:
@@ -6313,6 +6324,9 @@ importers:
vite:
specifier: ^7.3.1
version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitefu:
+ specifier: ^1.1.2
+ version: 1.1.2(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(tsx@4.21.0)(yaml@2.8.3))
devDependencies:
astro:
specifier: workspace:*
@@ -7179,6 +7193,15 @@ importers:
specifier: ^3.1.6
version: 3.1.6(typescript@5.9.3)
+ triage/current:
+ dependencies:
+ '@astrojs/vercel':
+ specifier: ^10.0.0-beta.4
+ version: link:../../packages/integrations/vercel
+ astro:
+ specifier: 6.0.0-beta.11
+ version: 6.0.0-beta.11(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@types/node@25.2.3)(@vercel/functions@3.4.3)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.59.1)(sass@1.98.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)
+
packages:
'@antfu/utils@0.7.10':
@@ -7289,6 +7312,16 @@ packages:
'@astrojs/compiler@3.0.1':
resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==}
+ '@astrojs/internal-helpers@0.8.0-beta.1':
+ resolution: {integrity: sha512-nX39HmVNrto0AwlGnk6Vj8fQ35v4VVIuSxsbvaANGeAIK7uAjOY3ca7xz+gejWeqGbY7vkGk6vsz3i0jTClCSQ==}
+
+ '@astrojs/markdown-remark@7.0.0-beta.6':
+ resolution: {integrity: sha512-6SRUg3feMrLUyKdjPXrrzE1Gmb+x1jDKqoUmZZcbMzByipCZKAi82DmbuZmRqg7Bb49xGW+iS/F8urOPz8/L+A==}
+
+ '@astrojs/prism@4.0.0-beta.2':
+ resolution: {integrity: sha512-3snR85nTXnXvgmFJ43AacCQcylk+mpsiQ5Gmr9hcR5IrEA6+EvaYfaF9jlxZqJIZYey/9ubSRmaERtwDhV/FeA==}
+ engines: {node: ^20.19.1 || >=22.12.0}
+
'@astrojs/solid-js@5.1.3':
resolution: {integrity: sha512-KxfYt4y1d7BuSw6EsN1EaPoGYsIES7bEI6AtTbncuabRUUMZs+mOWOeOdmgnwVLj+jbNbhBjUZsqr77eUviZdw==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
@@ -7299,6 +7332,10 @@ packages:
solid-devtools:
optional: true
+ '@astrojs/telemetry@3.3.0':
+ resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==}
+ engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
+
'@astrojs/vue@5.1.4':
resolution: {integrity: sha512-srE+3tgSnGG4FVr7Bs9JAgLcUAg1mtGrbBFdwlj++Y05Awwlc967WCcmOK6rnxQ6q5PcK5+WL2x2tKoWh5SN7A==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
@@ -9877,18 +9914,30 @@ packages:
resolution: {integrity: sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==}
engines: {node: '>=20.0.0'}
+ '@shikijs/core@3.23.0':
+ resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==}
+
'@shikijs/core@4.0.2':
resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==}
engines: {node: '>=20'}
+ '@shikijs/engine-javascript@3.23.0':
+ resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==}
+
'@shikijs/engine-javascript@4.0.2':
resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==}
engines: {node: '>=20'}
+ '@shikijs/engine-oniguruma@3.23.0':
+ resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==}
+
'@shikijs/engine-oniguruma@4.0.2':
resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==}
engines: {node: '>=20'}
+ '@shikijs/langs@3.23.0':
+ resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==}
+
'@shikijs/langs@4.0.2':
resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==}
engines: {node: '>=20'}
@@ -9901,6 +9950,9 @@ packages:
resolution: {integrity: sha512-cmPlKLD8JeojasNFoY64162ScpEdEdQUMuVodPCrv1nx1z3bjmGwoKWDruQWa/ejSznImlaeB0Ty6Q3zPaVQAA==}
engines: {node: '>=20'}
+ '@shikijs/themes@3.23.0':
+ resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==}
+
'@shikijs/themes@4.0.2':
resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==}
engines: {node: '>=20'}
@@ -9911,6 +9963,9 @@ packages:
peerDependencies:
typescript: '>=5.5.0'
+ '@shikijs/types@3.23.0':
+ resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==}
+
'@shikijs/types@4.0.2':
resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==}
engines: {node: '>=20'}
@@ -10737,6 +10792,9 @@ packages:
alpinejs@3.15.8:
resolution: {integrity: sha512-zxIfCRTBGvF1CCLIOMQOxAyBuqibxSEwS6Jm1a3HGA9rgrJVcjEWlwLcQTVGAWGS8YhAsTRLVrtQ5a5QT9bSSQ==}
+ ansi-align@3.0.1:
+ resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+
ansi-colors@4.1.3:
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
engines: {node: '>=6'}
@@ -10844,6 +10902,11 @@ packages:
resolution: {integrity: sha512-jL5skNQLA0YBc1R3bVGXyHew3FqGqsT7AgLzWAVeTLzFkwVMUYvs4/lKJSmS7ygcF1GnHnoKG6++8GL9VtWwGQ==}
engines: {node: '>=18.14.1'}
+ astro@6.0.0-beta.11:
+ resolution: {integrity: sha512-kQvgIJnjgnVgkAOcSXB9/iRHvw437/40dnvi+7J1RQxPAWVahh9fhNPjbCWqcQV4bblzG3SAQLSJCf7FcKnV8g==}
+ engines: {node: ^20.19.1 || >=22.12.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
+ hasBin: true
+
async-sema@3.1.1:
resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
@@ -10926,6 +10989,9 @@ packages:
bare-abort-controller:
optional: true
+ base-64@1.0.0:
+ resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -10983,6 +11049,10 @@ packages:
boundary@2.0.0:
resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==}
+ boxen@8.0.1:
+ resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
+ engines: {node: '>=18'}
+
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
@@ -11065,6 +11135,10 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
+ camelcase@8.0.0:
+ resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
+ engines: {node: '>=16'}
+
caniuse-lite@1.0.30001774:
resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==}
@@ -11151,6 +11225,10 @@ packages:
cjs-module-lexer@1.4.3:
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
+ cli-boxes@3.0.0:
+ resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
+ engines: {node: '>=10'}
+
cli-cursor@4.0.0:
resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -11578,6 +11656,10 @@ packages:
peerDependencies:
typescript: ^5.4.4
+ deterministic-object-hash@2.0.2:
+ resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==}
+ engines: {node: '>=18'}
+
dettle@1.0.5:
resolution: {integrity: sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==}
@@ -12034,6 +12116,11 @@ packages:
engines: {node: '>= 10.17.0'}
hasBin: true
+ fake-svelte-pkg@file:packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg:
+ resolution: {directory: packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg, type: directory}
+ peerDependencies:
+ svelte: ^5.0.0
+
fast-decode-uri-component@1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
@@ -12885,6 +12972,10 @@ packages:
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+
kleur@4.1.5:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
@@ -14251,6 +14342,10 @@ packages:
promise-limit@2.7.0:
resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==}
+ prompts@2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
@@ -14700,6 +14795,9 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ shiki@3.23.0:
+ resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==}
+
shiki@4.0.2:
resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==}
engines: {node: '>=20'}
@@ -15872,6 +15970,10 @@ packages:
wicked-good-xpath@1.3.0:
resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==}
+ widest-line@5.0.0:
+ resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
+ engines: {node: '>=18'}
+
winston-transport@4.9.0:
resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==}
engines: {node: '>= 12.0.0'}
@@ -15914,6 +16016,10 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
+ wrap-ansi@9.0.2:
+ resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+ engines: {node: '>=18'}
+
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
@@ -16042,6 +16148,10 @@ packages:
resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
engines: {node: '>=12.20'}
+ yocto-spinner@1.1.0:
+ resolution: {integrity: sha512-/BY0AUXnS7IKO354uLLA2eRcWiqDifEbd6unXCsOxkFDAkhgUL3PH9X2bFoaU0YchnDXsF+iKleeTLJGckbXfA==}
+ engines: {node: '>=18.19'}
+
yoctocolors@2.1.2:
resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}
engines: {node: '>=18'}
@@ -16175,6 +16285,37 @@ snapshots:
'@astrojs/compiler@3.0.1': {}
+ '@astrojs/internal-helpers@0.8.0-beta.1': {}
+
+ '@astrojs/markdown-remark@7.0.0-beta.6':
+ dependencies:
+ '@astrojs/internal-helpers': 0.8.0-beta.1
+ '@astrojs/prism': 4.0.0-beta.2
+ github-slugger: 2.0.0
+ hast-util-from-html: 2.0.3
+ hast-util-to-text: 4.0.2
+ js-yaml: 4.1.1
+ mdast-util-definitions: 6.0.0
+ rehype-raw: 7.0.0
+ rehype-stringify: 10.0.1
+ remark-gfm: 4.0.1
+ remark-parse: 11.0.0
+ remark-rehype: 11.1.2
+ remark-smartypants: 3.0.2
+ shiki: 3.23.0
+ smol-toml: 1.6.1
+ unified: 11.0.5
+ unist-util-remove-position: 5.0.0
+ unist-util-visit: 5.1.0
+ unist-util-visit-parents: 6.0.2
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/prism@4.0.0-beta.2':
+ dependencies:
+ prismjs: 1.30.0
+
'@astrojs/solid-js@5.1.3(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(solid-js@1.9.11)(tsx@4.21.0)(yaml@2.8.3)':
dependencies:
solid-js: 1.9.11
@@ -16195,6 +16336,18 @@ snapshots:
- tsx
- yaml
+ '@astrojs/telemetry@3.3.0':
+ dependencies:
+ ci-info: 4.4.0
+ debug: 4.4.3(supports-color@8.1.1)
+ dlv: 1.1.3
+ dset: 3.1.4
+ is-docker: 3.0.0
+ is-wsl: 3.1.1
+ which-pm-runs: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
+
'@astrojs/vue@5.1.4(@types/node@25.2.3)(astro@packages+astro)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.59.1)(sass@1.98.0)(tsx@4.21.0)(vue@3.5.30(typescript@5.9.3))(yaml@2.8.3)':
dependencies:
'@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.30(typescript@5.9.3))
@@ -18777,6 +18930,13 @@ snapshots:
'@secretlint/types@10.2.2': {}
+ '@shikijs/core@3.23.0':
+ dependencies:
+ '@shikijs/types': 3.23.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
'@shikijs/core@4.0.2':
dependencies:
'@shikijs/primitive': 4.0.2
@@ -18785,17 +18945,32 @@ snapshots:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
+ '@shikijs/engine-javascript@3.23.0':
+ dependencies:
+ '@shikijs/types': 3.23.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.4
+
'@shikijs/engine-javascript@4.0.2':
dependencies:
'@shikijs/types': 4.0.2
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 4.3.4
+ '@shikijs/engine-oniguruma@3.23.0':
+ dependencies:
+ '@shikijs/types': 3.23.0
+ '@shikijs/vscode-textmate': 10.0.2
+
'@shikijs/engine-oniguruma@4.0.2':
dependencies:
'@shikijs/types': 4.0.2
'@shikijs/vscode-textmate': 10.0.2
+ '@shikijs/langs@3.23.0':
+ dependencies:
+ '@shikijs/types': 3.23.0
+
'@shikijs/langs@4.0.2':
dependencies:
'@shikijs/types': 4.0.2
@@ -18815,6 +18990,10 @@ snapshots:
unified: 11.0.5
unist-util-visit: 5.1.0
+ '@shikijs/themes@3.23.0':
+ dependencies:
+ '@shikijs/types': 3.23.0
+
'@shikijs/themes@4.0.2':
dependencies:
'@shikijs/types': 4.0.2
@@ -18828,6 +19007,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@shikijs/types@3.23.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
'@shikijs/types@4.0.2':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
@@ -19870,6 +20054,10 @@ snapshots:
dependencies:
'@vue/reactivity': 3.1.5
+ ansi-align@3.0.1:
+ dependencies:
+ string-width: 4.2.3
+
ansi-colors@4.1.3: {}
ansi-escapes@5.0.0:
@@ -19975,6 +20163,103 @@ snapshots:
marked-smartypants: 1.1.11(marked@12.0.2)
ultrahtml: 1.6.0
+ astro@6.0.0-beta.11(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@types/node@25.2.3)(@vercel/functions@3.4.3)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.59.1)(sass@1.98.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3):
+ dependencies:
+ '@astrojs/compiler': 3.0.1
+ '@astrojs/internal-helpers': 0.8.0-beta.1
+ '@astrojs/markdown-remark': 7.0.0-beta.6
+ '@astrojs/telemetry': 3.3.0
+ '@capsizecss/unpack': 4.0.0
+ '@oslojs/encoding': 1.1.0
+ '@rollup/pluginutils': 5.3.0(rollup@4.59.1)
+ aria-query: 5.3.2
+ axobject-query: 4.1.0
+ boxen: 8.0.1
+ ci-info: 4.4.0
+ clsx: 2.1.1
+ common-ancestor-path: 2.0.0
+ cookie: 1.1.1
+ cssesc: 3.0.0
+ debug: 4.4.3(supports-color@8.1.1)
+ deterministic-object-hash: 2.0.2
+ devalue: 5.6.4
+ diff: 8.0.3
+ dlv: 1.1.3
+ dset: 3.1.4
+ es-module-lexer: 2.0.0
+ esbuild: 0.25.5
+ flattie: 1.1.1
+ fontace: 0.4.1
+ github-slugger: 2.0.0
+ html-escaper: 3.0.3
+ http-cache-semantics: 4.2.0
+ js-yaml: 4.1.1
+ magic-string: 0.30.21
+ magicast: 0.5.2
+ mrmime: 2.0.1
+ neotraverse: 0.6.18
+ p-limit: 7.3.0
+ p-queue: 9.1.0
+ package-manager-detector: 1.6.0
+ piccolore: 0.1.3
+ picomatch: 4.0.4
+ prompts: 2.4.2
+ rehype: 13.0.2
+ semver: 7.7.4
+ shiki: 3.23.0
+ smol-toml: 1.6.1
+ svgo: 4.0.1
+ tinyexec: 1.0.4
+ tinyglobby: 0.2.15
+ tsconfck: 3.1.6(typescript@5.9.3)
+ ultrahtml: 1.6.0
+ unifont: 0.7.4
+ unist-util-visit: 5.1.0
+ unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.7.0)(@vercel/functions@3.4.3)
+ vfile: 6.0.3
+ vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(tsx@4.21.0)(yaml@2.8.3))
+ xxhash-wasm: 1.1.0
+ yargs-parser: 22.0.0
+ yocto-spinner: 1.1.0
+ zod: 4.3.6
+ optionalDependencies:
+ sharp: 0.34.5
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@types/node'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - db0
+ - idb-keyval
+ - ioredis
+ - jiti
+ - less
+ - lightningcss
+ - rollup
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - typescript
+ - uploadthing
+ - yaml
+
async-sema@3.1.1: {}
async@3.2.6: {}
@@ -20070,6 +20355,8 @@ snapshots:
bare-events@2.8.2: {}
+ base-64@1.0.0: {}
+
base64-js@1.5.1: {}
baseline-browser-mapping@2.9.19: {}
@@ -20134,6 +20421,17 @@ snapshots:
boundary@2.0.0: {}
+ boxen@8.0.1:
+ dependencies:
+ ansi-align: 3.0.1
+ camelcase: 8.0.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.2
+
brace-expansion@1.1.12:
dependencies:
balanced-match: 1.0.2
@@ -20217,6 +20515,8 @@ snapshots:
camelcase@6.3.0: {}
+ camelcase@8.0.0: {}
+
caniuse-lite@1.0.30001774: {}
canvas-confetti@1.9.4: {}
@@ -20310,6 +20610,8 @@ snapshots:
cjs-module-lexer@1.4.3: {}
+ cli-boxes@3.0.0: {}
+
cli-cursor@4.0.0:
dependencies:
restore-cursor: 4.0.0
@@ -20680,6 +20982,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ deterministic-object-hash@2.0.2:
+ dependencies:
+ base-64: 1.0.0
+
dettle@1.0.5: {}
devalue@5.6.4: {}
@@ -21200,6 +21506,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ fake-svelte-pkg@file:packages/integrations/cloudflare/test/fixtures/prerender-node-env/fake-svelte-pkg(svelte@5.54.1):
+ dependencies:
+ svelte: 5.54.1
+
fast-decode-uri-component@1.0.1: {}
fast-deep-equal@3.1.3: {}
@@ -22168,6 +22478,8 @@ snapshots:
dependencies:
json-buffer: 3.0.1
+ kleur@3.0.3: {}
+
kleur@4.1.5: {}
knip@5.82.1(@types/node@18.19.130)(typescript@5.9.3):
@@ -23912,6 +24224,11 @@ snapshots:
promise-limit@2.7.0: {}
+ prompts@2.4.2:
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
property-information@7.1.0: {}
proxy-addr@2.0.7:
@@ -24536,6 +24853,17 @@ snapshots:
shebang-regex@3.0.0: {}
+ shiki@3.23.0:
+ dependencies:
+ '@shikijs/core': 3.23.0
+ '@shikijs/engine-javascript': 3.23.0
+ '@shikijs/engine-oniguruma': 3.23.0
+ '@shikijs/langs': 3.23.0
+ '@shikijs/themes': 3.23.0
+ '@shikijs/types': 3.23.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
shiki@4.0.2:
dependencies:
'@shikijs/core': 4.0.2
@@ -25749,6 +26077,10 @@ snapshots:
wicked-good-xpath@1.3.0: {}
+ widest-line@5.0.0:
+ dependencies:
+ string-width: 7.2.0
+
winston-transport@4.9.0:
dependencies:
logform: 2.7.0
@@ -25816,6 +26148,12 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.2
+ wrap-ansi@9.0.2:
+ dependencies:
+ ansi-styles: 6.2.3
+ string-width: 7.2.0
+ strip-ansi: 7.1.2
+
wrappy@1.0.2: {}
write-file-atomic@5.0.1:
@@ -25937,6 +26275,10 @@ snapshots:
yocto-queue@1.2.2: {}
+ yocto-spinner@1.1.0:
+ dependencies:
+ yoctocolors: 2.1.2
+
yoctocolors@2.1.2: {}
youch-core@0.3.3: