diff --git a/.changeset/chilly-cars-battle.md b/.changeset/chilly-cars-battle.md new file mode 100644 index 000000000000..bec7be306066 --- /dev/null +++ b/.changeset/chilly-cars-battle.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-cloudflare-workers': patch +--- + +- Support esbuild options for @sveltejs/adapter-cloudflare-workers +- Fix an issue related to prerendered pages incorrectly resolving in @sveltejs/adapter-cloudflare-workers diff --git a/packages/adapter-cloudflare-workers/ambient.d.ts b/packages/adapter-cloudflare-workers/ambient.d.ts index a1381f25f04d..78ceb0e62887 100644 --- a/packages/adapter-cloudflare-workers/ambient.d.ts +++ b/packages/adapter-cloudflare-workers/ambient.d.ts @@ -6,7 +6,7 @@ declare module 'MANIFEST' { import { SSRManifest } from '@sveltejs/kit'; export const manifest: SSRManifest; - export const prerendered: Set; + export const prerendered: Map; } declare module '__STATIC_CONTENT_MANIFEST' { diff --git a/packages/adapter-cloudflare-workers/files/entry.js b/packages/adapter-cloudflare-workers/files/entry.js index ab6d9b602d41..ba7d75d1ac0f 100644 --- a/packages/adapter-cloudflare-workers/files/entry.js +++ b/packages/adapter-cloudflare-workers/files/entry.js @@ -1,6 +1,6 @@ import { Server } from 'SERVER'; import { manifest, prerendered } from 'MANIFEST'; -import { getAssetFromKV } from '@cloudflare/kv-asset-handler'; +import { getAssetFromKV, mapRequestToAsset } from '@cloudflare/kv-asset-handler'; import static_asset_manifest_json from '__STATIC_CONTENT_MANIFEST'; const static_asset_manifest = JSON.parse(static_asset_manifest_json); @@ -83,8 +83,15 @@ async function get_asset_from_kv(req, env, context) { }, { ASSET_NAMESPACE: env.__STATIC_CONTENT, - ASSET_MANIFEST: static_asset_manifest - } + ASSET_MANIFEST: static_asset_manifest, + mapRequestToAsset(request, options) { + if (prerendered.has(pathname || '/')) { + url.pathname = '/' + prerendered.get(pathname || '/').file; + return new Request(url.toString(), request); + } + return mapRequestToAsset(request, options); + } + } ); } catch (e) { const status = is_error(e.status) ? e.status : 500; diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index 94732b553f06..045eef0b8b20 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -49,7 +49,9 @@ export default function (options = {}) { `${tmp}/manifest.js`, `export const manifest = ${builder.generateManifest({ relativePath - })};\n\nexport const prerendered = new Set(${JSON.stringify(builder.prerendered.paths)});\n` + })};\n\nexport const prerendered = new Map(${JSON.stringify( + Array.from(builder.prerendered.pages.entries()) + )});\n` ); await esbuild.build({