From 4b00bd4b9f8a7554c5e7c33dcf1587c828572618 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 11:26:40 +0800 Subject: [PATCH 1/8] decode uri --- packages/kit/src/exports/vite/preview/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 2b4214e843f2..2972b9c566c1 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -128,9 +128,9 @@ export async function preview(vite, vite_config, svelte_config) { const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy'); - let filename = normalizePath( + let filename = decodeURI(normalizePath( join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname) - ); + )); let prerendered = is_file(filename); if (!prerendered) { From 6d8946693933e094c292752386bf7c2fd7d26d6a Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 11:27:42 +0800 Subject: [PATCH 2/8] changeset --- .changeset/eleven-turkeys-jump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/eleven-turkeys-jump.md diff --git a/.changeset/eleven-turkeys-jump.md b/.changeset/eleven-turkeys-jump.md new file mode 100644 index 000000000000..b50200cf69f0 --- /dev/null +++ b/.changeset/eleven-turkeys-jump.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: decode non-latin characters when previewing prerendered pages From 6bd9c03e06a776ae60adfb46f4d53c91bd9c0dbd Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 11:41:06 +0800 Subject: [PATCH 3/8] add test --- .../prerendering/\344\270\255\346\226\207/+page.svelte" | 0 .../routes/prerendering/\344\270\255\346\226\207/+page.ts" | 1 + packages/kit/test/apps/basics/test/server.test.js | 5 +++++ 3 files changed, 6 insertions(+) create mode 100644 "packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.svelte" create mode 100644 "packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" diff --git "a/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.svelte" "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.svelte" new file mode 100644 index 000000000000..e69de29bb2d1 diff --git "a/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" new file mode 100644 index 000000000000..c8cacf089534 --- /dev/null +++ "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" @@ -0,0 +1 @@ +export const prerender = true; \ No newline at end of file diff --git a/packages/kit/test/apps/basics/test/server.test.js b/packages/kit/test/apps/basics/test/server.test.js index 6590346e21b1..f929f0ed745b 100644 --- a/packages/kit/test/apps/basics/test/server.test.js +++ b/packages/kit/test/apps/basics/test/server.test.js @@ -630,6 +630,11 @@ test.describe('Miscellaneous', () => { expect(response.status()).toBe(200); expect(await response.text()).toBe('foo'); }); + + test('serves prerendered non-latin pages', async ({ request }) => { + const response = await request.get('/prerendering/中文'); + expect(response.status()).toBe(200); + }) }); test.describe('reroute', () => { From 7d059afc136192a2abfb19047eb6016711df699e Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 11:41:40 +0800 Subject: [PATCH 4/8] prettier --- packages/kit/src/exports/vite/preview/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 2972b9c566c1..2e5d91382e52 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -128,9 +128,9 @@ export async function preview(vite, vite_config, svelte_config) { const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy'); - let filename = decodeURI(normalizePath( - join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname) - )); + let filename = decodeURI( + normalizePath(join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname)) + ); let prerendered = is_file(filename); if (!prerendered) { From 295ea21e47897e2573a8608edefe904719e9df97 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 11:41:59 +0800 Subject: [PATCH 5/8] prettier 2 --- .../src/routes/prerendering/\344\270\255\346\226\207/+page.ts" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" index c8cacf089534..189f71e2e1b3 100644 --- "a/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" +++ "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" @@ -1 +1 @@ -export const prerender = true; \ No newline at end of file +export const prerender = true; From 026e9f17aa39e76ffae456de8e174e24d1802a0f Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 11:42:10 +0800 Subject: [PATCH 6/8] prettier 3 --- packages/kit/test/apps/basics/test/server.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/test/apps/basics/test/server.test.js b/packages/kit/test/apps/basics/test/server.test.js index f929f0ed745b..ff77c55f0204 100644 --- a/packages/kit/test/apps/basics/test/server.test.js +++ b/packages/kit/test/apps/basics/test/server.test.js @@ -634,7 +634,7 @@ test.describe('Miscellaneous', () => { test('serves prerendered non-latin pages', async ({ request }) => { const response = await request.get('/prerendering/中文'); expect(response.status()).toBe(200); - }) + }); }); test.describe('reroute', () => { From 1e2f67bd5f78ba75930b22aafc832a12e374c092 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 12:40:31 +0800 Subject: [PATCH 7/8] try this --- packages/kit/src/exports/vite/preview/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 2e5d91382e52..1ba5967c6464 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -128,9 +128,14 @@ export async function preview(vite, vite_config, svelte_config) { const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy'); - let filename = decodeURI( - normalizePath(join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname)) - ); + let filename = normalizePath(join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname)); + + try { + filename = decodeURI(filename) + } catch { + // malformed URI + } + let prerendered = is_file(filename); if (!prerendered) { From b22617ecd453695897edc8c050bc1eb4f5b3d6c2 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Fri, 25 Oct 2024 13:01:43 +0800 Subject: [PATCH 8/8] prettier --- packages/kit/src/exports/vite/preview/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 1ba5967c6464..37e04f72f602 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -128,10 +128,12 @@ export async function preview(vite, vite_config, svelte_config) { const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy'); - let filename = normalizePath(join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname)); + let filename = normalizePath( + join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname) + ); try { - filename = decodeURI(filename) + filename = decodeURI(filename); } catch { // malformed URI }