diff --git a/.changeset/gentle-radios-go.md b/.changeset/gentle-radios-go.md new file mode 100644 index 000000000000..33d159e8acb5 --- /dev/null +++ b/.changeset/gentle-radios-go.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': major +--- + +breaking: remove the deprecated CSRF `checkOrigin` option in favor of `trustedOrigins` diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 549538e20d18..792661521faa 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -68,7 +68,7 @@ const get_defaults = (prefix = '') => ({ reportOnly: directive_defaults }, csrf: { - checkOrigin: true, + checkOrigin: undefined, trustedOrigins: [] }, embedded: false, @@ -100,13 +100,14 @@ const get_defaults = (prefix = '') => ({ }, inlineStyleThreshold: 0, moduleExtensions: ['.js', '.ts'], - output: { bundleStrategy: 'split' }, + output: { bundleStrategy: 'split', preloadStrategy: undefined }, outDir: join(prefix, '.svelte-kit'), router: { type: 'pathname', resolution: 'client' }, serviceWorker: { + options: undefined, register: true }, typescript: {}, diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index 26cb922ff89c..27f302306f79 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -109,10 +109,8 @@ const options = object( }), csrf: object({ - checkOrigin: deprecate( - boolean(true), - (keypath) => - `\`${keypath}\` has been deprecated in favour of \`csrf.trustedOrigins\`. It will be removed in a future version` + checkOrigin: removed( + (keypath) => `\`${keypath}\` has been removed in favour of \`csrf.trustedOrigins\`` ), trustedOrigins: string_array([]) }), @@ -159,6 +157,9 @@ const options = object( outDir: string('.svelte-kit'), output: object({ + preloadStrategy: removed( + (keypath) => `\`${keypath}\` has been removed. modulepreload will always be used` + ), bundleStrategy: list(['split', 'single', 'inline']) }), @@ -335,6 +336,21 @@ function deprecate( }; } +/** + * @param {(keypath: string) => string} get_message + * @returns {Validator} + */ +function removed( + get_message = (keypath) => + `The \`${keypath}\` option has been removed. Please see the list of breaking changes for your major release` +) { + return (input, keypath) => { + if (typeof input !== 'undefined') { + throw new Error(get_message(keypath)); + } + }; +} + /** * @param {Record} children * @param {boolean} [allow_unknown] diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index 64ca62d1f0c0..5ef57288b1f6 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -39,7 +39,7 @@ export const options = { app_template_contains_nonce: ${template.includes('%sveltekit.nonce%')}, async: ${s(!!config.compilerOptions?.experimental?.async)}, csp: ${s(config.kit.csp)}, - csrf_check_origin: ${s(config.kit.csrf.checkOrigin && !config.kit.csrf.trustedOrigins.includes('*'))}, + csrf_check_origin: ${s(!config.kit.csrf.trustedOrigins.includes('*'))}, csrf_trusted_origins: ${s(config.kit.csrf.trustedOrigins)}, embedded: ${config.kit.embedded}, env_public_prefix: '${config.kit.env.publicPrefix}', diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index aa290bb669a6..3a71e65bb354 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -421,7 +421,7 @@ export interface KitConfig { * * To allow people to make `POST`, `PUT`, `PATCH`, or `DELETE` requests with a `Content-Type` of `application/x-www-form-urlencoded`, `multipart/form-data`, or `text/plain` to your app from other origins, you will need to disable this option. Be careful! * @default true - * @deprecated Use `trustedOrigins: ['*']` instead + * @deprecated removed in 3.0. Use `trustedOrigins: ['*']` instead */ checkOrigin?: boolean; /** diff --git a/packages/kit/test/apps/basics/svelte.config.js b/packages/kit/test/apps/basics/svelte.config.js index d13136edee93..8630e784a24d 100644 --- a/packages/kit/test/apps/basics/svelte.config.js +++ b/packages/kit/test/apps/basics/svelte.config.js @@ -38,7 +38,6 @@ const config = { }, csrf: { - checkOrigin: true, trustedOrigins: ['https://trusted.example.com', 'https://payment-gateway.test'] }, diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0815489c9c08..ddb3a450efba 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -395,7 +395,7 @@ declare module '@sveltejs/kit' { * * To allow people to make `POST`, `PUT`, `PATCH`, or `DELETE` requests with a `Content-Type` of `application/x-www-form-urlencoded`, `multipart/form-data`, or `text/plain` to your app from other origins, you will need to disable this option. Be careful! * @default true - * @deprecated Use `trustedOrigins: ['*']` instead + * @deprecated removed in 3.0. Use `trustedOrigins: ['*']` instead */ checkOrigin?: boolean; /**