@sveltejs/kit
Advanced tools
Comparing version
{ | ||
"name": "@sveltejs/kit", | ||
"version": "2.20.1", | ||
"version": "2.20.2", | ||
"description": "SvelteKit is the fastest way to build Svelte apps", | ||
@@ -41,3 +41,3 @@ "keywords": [ | ||
"rollup": "^4.14.2", | ||
"svelte": "^5.2.9", | ||
"svelte": "^5.23.1", | ||
"svelte-preprocess": "^6.0.0", | ||
@@ -44,0 +44,0 @@ "typescript": "^5.3.3", |
@@ -32,3 +32,3 @@ import { ENDPOINT_METHODS, PAGE_METHODS } from '../../constants.js'; | ||
if (state.prerendering && !prerender) { | ||
if (state.prerendering && !state.prerendering.inside_reroute && !prerender) { | ||
if (state.depth > 0) { | ||
@@ -45,3 +45,3 @@ // if request came from a prerendered page, bail | ||
try { | ||
let response = await with_event(event, () => | ||
const response = await with_event(event, () => | ||
handler(/** @type {import('@sveltejs/kit').RequestEvent<Record<string, any>>} */ (event)) | ||
@@ -56,6 +56,7 @@ ); | ||
if (state.prerendering) { | ||
// the returned Response might have immutable Headers | ||
// so we should clone them before trying to mutate them | ||
response = new Response(response.body, { | ||
if (state.prerendering && (!state.prerendering.inside_reroute || prerender)) { | ||
// The returned Response might have immutable Headers | ||
// so we should clone them before trying to mutate them. | ||
// We also need to clone the response body since it may be read twice during prerendering | ||
const cloned = new Response(response.clone().body, { | ||
status: response.status, | ||
@@ -65,3 +66,15 @@ statusText: response.statusText, | ||
}); | ||
response.headers.set('x-sveltekit-prerender', String(prerender)); | ||
cloned.headers.set('x-sveltekit-prerender', String(prerender)); | ||
if (state.prerendering.inside_reroute && prerender) { | ||
// Without this, the route wouldn't be recorded as prerendered, | ||
// because there's nothing after reroute that would do that. | ||
cloned.headers.set( | ||
'x-sveltekit-routeid', | ||
encodeURI(/** @type {string} */ (event.route.id)) | ||
); | ||
state.prerendering.dependencies.set(event.url.pathname, { response: cloned, body: null }); | ||
} else { | ||
return cloned; | ||
} | ||
} | ||
@@ -68,0 +81,0 @@ |
@@ -186,3 +186,8 @@ import { DEV } from 'esm-env'; | ||
const prerendering_reroute_state = state.prerendering?.inside_reroute; | ||
try { | ||
// For the duration or a reroute, disable the prerendering state as reroute could call API endpoints | ||
// which would end up in the wrong logic path if not disabled. | ||
if (state.prerendering) state.prerendering.inside_reroute = true; | ||
// reroute could alter the given URL, so we pass a copy | ||
@@ -195,2 +200,4 @@ resolved_path = | ||
}); | ||
} finally { | ||
if (state.prerendering) state.prerendering.inside_reroute = prerendering_reroute_state; | ||
} | ||
@@ -354,3 +361,5 @@ | ||
if (state.prerendering && !state.prerendering.fallback) disable_search(url); | ||
if (state.prerendering && !state.prerendering.fallback && !state.prerendering.inside_reroute) { | ||
disable_search(url); | ||
} | ||
@@ -357,0 +366,0 @@ const response = await with_event(event, () => |
@@ -219,2 +219,4 @@ import { SvelteComponent } from 'svelte'; | ||
dependencies: Map<string, PrerenderDependency>; | ||
/** True for the duration of a call to the `reroute` hook */ | ||
inside_reroute?: boolean; | ||
} | ||
@@ -221,0 +223,0 @@ |
// generated during release, do not modify | ||
/** @type {string} */ | ||
export const VERSION = '2.20.1'; | ||
export const VERSION = '2.20.2'; |
Sorry, the diff of this file is not supported yet
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
821888
0.14%23524
0.09%