From 05a6d4fcfce430c907d40757175e95c9f40bcf7f Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Thu, 11 May 2023 21:21:57 -0600 Subject: [PATCH 1/6] feat: Add a script redirect to prerendered pages --- packages/kit/src/core/postbuild/prerender.js | 6 +++++- .../src/routes/redirect-encoded/+page.svelte | 0 .../routes/redirect-malicious/+page.svelte | 0 .../src/routes/redirect-relative/+page.js | 6 ++++++ .../src/routes/redirect-server/+page.svelte | 0 .../basics/src/routes/redirect/+page.svelte | 0 .../kit/test/prerendering/basics/test/test.js | 19 +++++++++++++++---- 7 files changed, 26 insertions(+), 5 deletions(-) delete mode 100644 packages/kit/test/prerendering/basics/src/routes/redirect-encoded/+page.svelte delete mode 100644 packages/kit/test/prerendering/basics/src/routes/redirect-malicious/+page.svelte create mode 100644 packages/kit/test/prerendering/basics/src/routes/redirect-relative/+page.js delete mode 100644 packages/kit/test/prerendering/basics/src/routes/redirect-server/+page.svelte delete mode 100644 packages/kit/test/prerendering/basics/src/routes/redirect/+page.svelte diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index f4cbb7415066..f747ad11e2ea 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -340,7 +340,11 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { writeFileSync( dest, - `` + `` ); written.add(file); diff --git a/packages/kit/test/prerendering/basics/src/routes/redirect-encoded/+page.svelte b/packages/kit/test/prerendering/basics/src/routes/redirect-encoded/+page.svelte deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/kit/test/prerendering/basics/src/routes/redirect-malicious/+page.svelte b/packages/kit/test/prerendering/basics/src/routes/redirect-malicious/+page.svelte deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/kit/test/prerendering/basics/src/routes/redirect-relative/+page.js b/packages/kit/test/prerendering/basics/src/routes/redirect-relative/+page.js new file mode 100644 index 000000000000..dc685417407a --- /dev/null +++ b/packages/kit/test/prerendering/basics/src/routes/redirect-relative/+page.js @@ -0,0 +1,6 @@ +import { redirect } from '@sveltejs/kit'; + +/** @type {import('@sveltejs/kit').Load} */ +export function load() { + throw redirect(301, '/env'); +} diff --git a/packages/kit/test/prerendering/basics/src/routes/redirect-server/+page.svelte b/packages/kit/test/prerendering/basics/src/routes/redirect-server/+page.svelte deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/kit/test/prerendering/basics/src/routes/redirect/+page.svelte b/packages/kit/test/prerendering/basics/src/routes/redirect/+page.svelte deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/kit/test/prerendering/basics/test/test.js b/packages/kit/test/prerendering/basics/test/test.js index 9604856215c9..2601825142d7 100644 --- a/packages/kit/test/prerendering/basics/test/test.js +++ b/packages/kit/test/prerendering/basics/test/test.js @@ -17,13 +17,16 @@ test('renders a redirect', () => { const content = read('redirect.html'); assert.equal( content, - '' + '' ); }); test('renders a server-side redirect', () => { const html = read('redirect-server.html'); - assert.equal(html, ''); + assert.equal( + html, + '' + ); const data = JSON.parse(read('redirect-server/__data.json')); @@ -37,7 +40,7 @@ test('does not double-encode redirect locations', () => { const content = read('redirect-encoded.html'); assert.equal( content, - '' + '' ); }); @@ -45,7 +48,15 @@ test('escapes characters in redirect', () => { const content = read('redirect-malicious.html'); assert.equal( content, - '' + '' + ); +}); + +test('renders a relative redirect', () => { + const content = read('redirect-relative.html'); + assert.equal( + content, + '' ); }); From 17145b168b175123c0a08aa3c190787403c75e32 Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Thu, 11 May 2023 21:23:01 -0600 Subject: [PATCH 2/6] changeset --- .changeset/hungry-rocks-hunt.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/hungry-rocks-hunt.md diff --git a/.changeset/hungry-rocks-hunt.md b/.changeset/hungry-rocks-hunt.md new file mode 100644 index 000000000000..1ab102cbe7e7 --- /dev/null +++ b/.changeset/hungry-rocks-hunt.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: add a speedier script for prerendered redirects From 9afccef3a16b8d4495cc3ea092dcf8d9111a9e29 Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Fri, 12 May 2023 12:06:37 -0600 Subject: [PATCH 3/6] Update .changeset/hungry-rocks-hunt.md Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/hungry-rocks-hunt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/hungry-rocks-hunt.md b/.changeset/hungry-rocks-hunt.md index 1ab102cbe7e7..ff4f90917053 100644 --- a/.changeset/hungry-rocks-hunt.md +++ b/.changeset/hungry-rocks-hunt.md @@ -1,5 +1,5 @@ --- -'@sveltejs/kit': minor +'@sveltejs/kit': patch --- -feat: add a speedier script for prerendered redirects +perf: add a script to prerendered redirects for faster redirects From bb58e11164a10dd9809b3ac74de8063fa1912bcc Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Fri, 12 May 2023 14:48:53 -0600 Subject: [PATCH 4/6] fix test --- packages/kit/test/prerendering/paths-base/test/test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/kit/test/prerendering/paths-base/test/test.js b/packages/kit/test/prerendering/paths-base/test/test.js index b12f6ee9aa64..3abc4c390ba9 100644 --- a/packages/kit/test/prerendering/paths-base/test/test.js +++ b/packages/kit/test/prerendering/paths-base/test/test.js @@ -15,7 +15,10 @@ test('prerenders /path-base', () => { test('prerenders /path-base/redirect', () => { const content = read('redirect.html'); - assert.equal(content, ''); + assert.equal( + content, + '' + ); }); test('prerenders /path-base/dynamic/foo', () => { From 673a8955e461d7a6195cc6758ea3648971abca6f Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Mon, 15 May 2023 21:31:05 -0600 Subject: [PATCH 5/6] feat: Update string escaping --- packages/kit/src/core/postbuild/prerender.js | 7 ++++--- packages/kit/test/prerendering/basics/test/test.js | 10 +++++----- packages/kit/test/prerendering/paths-base/test/test.js | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index f747ad11e2ea..fa112ca152bc 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -12,6 +12,7 @@ import { get_route_segments } from '../../utils/routing.js'; import { queue } from './queue.js'; import { crawl } from './crawl.js'; import { forked } from '../../utils/fork.js'; +import * as devalue from 'devalue'; export default forked(import.meta.url, prerender); @@ -340,9 +341,9 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { writeFileSync( dest, - `location.href=${devalue.uneval( + location + )};` ); diff --git a/packages/kit/test/prerendering/basics/test/test.js b/packages/kit/test/prerendering/basics/test/test.js index 2601825142d7..8a6a9c45e0e7 100644 --- a/packages/kit/test/prerendering/basics/test/test.js +++ b/packages/kit/test/prerendering/basics/test/test.js @@ -17,7 +17,7 @@ test('renders a redirect', () => { const content = read('redirect.html'); assert.equal( content, - '' + '' ); }); @@ -25,7 +25,7 @@ test('renders a server-side redirect', () => { const html = read('redirect-server.html'); assert.equal( html, - '' + '' ); const data = JSON.parse(read('redirect-server/__data.json')); @@ -40,7 +40,7 @@ test('does not double-encode redirect locations', () => { const content = read('redirect-encoded.html'); assert.equal( content, - '' + '' ); }); @@ -48,7 +48,7 @@ test('escapes characters in redirect', () => { const content = read('redirect-malicious.html'); assert.equal( content, - '' + '' ); }); @@ -56,7 +56,7 @@ test('renders a relative redirect', () => { const content = read('redirect-relative.html'); assert.equal( content, - '' + '' ); }); diff --git a/packages/kit/test/prerendering/paths-base/test/test.js b/packages/kit/test/prerendering/paths-base/test/test.js index 3abc4c390ba9..ee915ebc90f6 100644 --- a/packages/kit/test/prerendering/paths-base/test/test.js +++ b/packages/kit/test/prerendering/paths-base/test/test.js @@ -17,7 +17,7 @@ test('prerenders /path-base/redirect', () => { const content = read('redirect.html'); assert.equal( content, - '' + '' ); }); From b1af08e120ac7ef82819c60174b50e23bfda03fa Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Mon, 15 May 2023 22:37:29 -0600 Subject: [PATCH 6/6] Update .changeset/hungry-rocks-hunt.md Co-authored-by: Conduitry --- .changeset/hungry-rocks-hunt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/hungry-rocks-hunt.md b/.changeset/hungry-rocks-hunt.md index ff4f90917053..9e75ecb0da85 100644 --- a/.changeset/hungry-rocks-hunt.md +++ b/.changeset/hungry-rocks-hunt.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -perf: add a script to prerendered redirects for faster redirects +perf: add `