From 90f514fa2b528174146a9453904cf042c65685d3 Mon Sep 17 00:00:00 2001 From: Alec Bakholdin Date: Sun, 7 Dec 2025 14:18:39 -0500 Subject: [PATCH] resolution attempt --- packages/kit/src/runtime/app/server/index.js | 3 ++- .../runtime/app/server/remote/prerender.js | 24 ++++++++----------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/packages/kit/src/runtime/app/server/index.js b/packages/kit/src/runtime/app/server/index.js index 746278ec4890..22ef71d38b9a 100644 --- a/packages/kit/src/runtime/app/server/index.js +++ b/packages/kit/src/runtime/app/server/index.js @@ -57,8 +57,9 @@ export function read(asset) { const file = decodeURIComponent( DEV && asset.startsWith('/@fs') ? asset : asset.slice(base.length + 1) ); + const fileAsRoute = file.replace(/^\/?/, '/'); - if (file in manifest._.server_assets) { + if (file in manifest._.server_assets || manifest._.prerendered_routes.has(fileAsRoute)) { const length = manifest._.server_assets[file]; const type = manifest.mimeTypes[file.slice(file.lastIndexOf('.'))]; diff --git a/packages/kit/src/runtime/app/server/remote/prerender.js b/packages/kit/src/runtime/app/server/remote/prerender.js index 8e9762463063..86010e83ddaa 100644 --- a/packages/kit/src/runtime/app/server/remote/prerender.js +++ b/packages/kit/src/runtime/app/server/remote/prerender.js @@ -13,6 +13,7 @@ import { parse_remote_response, run_remote_function } from './shared.js'; +import { read } from '$app/server'; /** * Creates a remote prerender function. When called from the browser, the function will be invoked on the server via a `fetch` call. @@ -103,23 +104,18 @@ export function prerender(validate_or_fn, fn_or_options, maybe_options) { // TODO adapters can provide prerendered data more efficiently than // fetching from the public internet - const promise = (cache[key] ??= fetch(new URL(url, event.url.origin).href).then( - async (response) => { - if (!response.ok) { - throw new Error('Prerendered response not found'); - } + const response = (cache[key] ??= read(url)); + if (!response.ok) { + throw new Error('Prerendered response not found'); + } - const prerendered = await response.json(); + const prerendered = await response.json(); - if (prerendered.type === 'error') { - error(prerendered.status, prerendered.error); - } + if (prerendered.type === 'error') { + error(prerendered.status, prerendered.error); + } - return prerendered.result; - } - )); - - return parse_remote_response(await promise, state.transport); + return parse_remote_response(prerendered.result, state.transport); }); } catch { // not available prerendered, fallback to normal function