From b56f2a059c8266dbc1aeb272913c9c2353267922 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Fri, 19 Aug 2022 17:29:01 +0200 Subject: [PATCH 1/2] [fix] Throw on invalid browser options Throw error if browser.hydrate is false and brower.router is true. The router needs at least the router component to be hydrated, and we currently can't dynamically compile Svelte components as hydratable or not on case-by-case basis Closes #4382 --- .changeset/ten-gorillas-itch.md | 5 +++++ packages/kit/src/core/config/index.spec.js | 13 +++++++++++++ packages/kit/src/core/config/options.js | 11 ++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 .changeset/ten-gorillas-itch.md diff --git a/.changeset/ten-gorillas-itch.md b/.changeset/ten-gorillas-itch.md new file mode 100644 index 000000000000..8bcfc4910587 --- /dev/null +++ b/.changeset/ten-gorillas-itch.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Throw error if browser.hydrate is false and brower.router is true diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 3cd626d4910c..e9d6e0e66c44 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -246,6 +246,19 @@ test('fails if kit.appDir ends with slash', () => { }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration$/); }); +test('fails if browser.hydrate is false and browser.router is true', () => { + assert.throws(() => { + validate_config({ + kit: { + browser: { + hydrate: false, + router: true + } + } + }); + }, /^config\.kit\.browser\.router cannot be true if config\.kit\.browser\.hydrate is false$/); +}); + test('fails if paths.base is not root-relative', () => { assert.throws(() => { validate_config({ diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index 9d89fd4ee6fe..c82f008d8253 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -107,9 +107,14 @@ const options = object( return input; }), - browser: object({ - hydrate: boolean(true), - router: boolean(true) + browser: validate({ hydrate: true, router: true }, (input, keypath) => { + const value = object({ hydrate: boolean(true), router: boolean(true) })(input, keypath); + if (!value.hydrate && value.router) { + throw new Error( + 'config.kit.browser.router cannot be true if config.kit.browser.hydrate is false' + ); + } + return value; }), csp: object({ From caf330081865eb0cd48b1695a0ff5bae8f572488 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 19 Aug 2022 17:29:53 +0200 Subject: [PATCH 2/2] typo --- .changeset/ten-gorillas-itch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/ten-gorillas-itch.md b/.changeset/ten-gorillas-itch.md index 8bcfc4910587..15790d6cbbbe 100644 --- a/.changeset/ten-gorillas-itch.md +++ b/.changeset/ten-gorillas-itch.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -Throw error if browser.hydrate is false and brower.router is true +Throw error if browser.hydrate is false and browser.router is true