@sveltejs/kit 2.35.0 → 2.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/core/config/options.js +2 -1
- package/src/core/sync/write_non_ambient.js +12 -1
- package/src/core/sync/write_server.js +1 -0
- package/src/exports/public.d.ts +11 -0
- package/src/runtime/app/forms.js +1 -1
- package/src/runtime/client/bundle.js +2 -0
- package/src/runtime/client/client.js +4 -1
- package/src/runtime/server/page/render.js +25 -4
- package/src/runtime/server/respond.js +13 -12
- package/src/types/internal.d.ts +1 -0
- package/src/version.js +1 -1
- package/types/index.d.ts +11 -0
- package/types/index.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltejs/kit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.36.1",
|
|
4
4
|
"description": "SvelteKit is the fastest way to build Svelte apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"svelte-preprocess": "^6.0.0",
|
|
46
46
|
"typescript": "^5.3.3",
|
|
47
47
|
"vite": "^6.3.5",
|
|
48
|
-
"vitest": "^3.2.
|
|
48
|
+
"vitest": "^3.2.4"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0",
|
|
@@ -66,10 +66,21 @@ function generate_app_types(manifest_data) {
|
|
|
66
66
|
dynamic_routes.push(route_type);
|
|
67
67
|
|
|
68
68
|
const pathname = remove_group_segments(route.id);
|
|
69
|
-
|
|
69
|
+
const replaced_pathname = replace_required_params(replace_optional_params(pathname));
|
|
70
|
+
pathnames.add(`\`${replaced_pathname}\` & {}`);
|
|
71
|
+
|
|
72
|
+
if (pathname !== '/') {
|
|
73
|
+
// Support trailing slash
|
|
74
|
+
pathnames.add(`\`${replaced_pathname + '/'}\` & {}`);
|
|
75
|
+
}
|
|
70
76
|
} else {
|
|
71
77
|
const pathname = remove_group_segments(route.id);
|
|
72
78
|
pathnames.add(s(pathname));
|
|
79
|
+
|
|
80
|
+
if (pathname !== '/') {
|
|
81
|
+
// Support trailing slash
|
|
82
|
+
pathnames.add(s(pathname + '/'));
|
|
83
|
+
}
|
|
73
84
|
}
|
|
74
85
|
|
|
75
86
|
/** @type {Map<string, boolean>} */
|
|
@@ -38,6 +38,7 @@ export const options = {
|
|
|
38
38
|
app_template_contains_nonce: ${template.includes('%sveltekit.nonce%')},
|
|
39
39
|
csp: ${s(config.kit.csp)},
|
|
40
40
|
csrf_check_origin: ${s(config.kit.csrf.checkOrigin)},
|
|
41
|
+
csrf_trusted_origins: ${s(config.kit.csrf.trustedOrigins)},
|
|
41
42
|
embedded: ${config.kit.embedded},
|
|
42
43
|
env_public_prefix: '${config.kit.env.publicPrefix}',
|
|
43
44
|
env_private_prefix: '${config.kit.env.privatePrefix}',
|
package/src/exports/public.d.ts
CHANGED
|
@@ -428,6 +428,17 @@ export interface KitConfig {
|
|
|
428
428
|
* @default true
|
|
429
429
|
*/
|
|
430
430
|
checkOrigin?: boolean;
|
|
431
|
+
/**
|
|
432
|
+
* An array of origins that are allowed to make cross-origin form submissions to your app, even when `checkOrigin` is `true`.
|
|
433
|
+
*
|
|
434
|
+
* Each origin should be a complete origin including protocol (e.g., `https://payment-gateway.com`).
|
|
435
|
+
* This is useful for allowing trusted third-party services like payment gateways or authentication providers to submit forms to your app.
|
|
436
|
+
*
|
|
437
|
+
* **Warning**: Only add origins you completely trust, as this bypasses CSRF protection for those origins.
|
|
438
|
+
* @default []
|
|
439
|
+
* @example ['https://checkout.stripe.com', 'https://accounts.google.com']
|
|
440
|
+
*/
|
|
441
|
+
trustedOrigins?: string[];
|
|
431
442
|
};
|
|
432
443
|
/**
|
|
433
444
|
* Whether or not the app is embedded inside a larger app. If `true`, SvelteKit will add its event listeners related to navigation etc on the parent of `%sveltekit.body%` instead of `window`, and will pass `params` from the server rather than inferring them from `location.pathname`.
|
package/src/runtime/app/forms.js
CHANGED
|
@@ -33,7 +33,7 @@ export function deserialize(result) {
|
|
|
33
33
|
|
|
34
34
|
if (parsed.data) {
|
|
35
35
|
// the decoders should never be initialised at the top-level because `app`
|
|
36
|
-
// will not initialised yet if `kit.output.bundleStrategy` is 'single' or 'inline'
|
|
36
|
+
// will not be initialised yet if `kit.output.bundleStrategy` is 'single' or 'inline'
|
|
37
37
|
parsed.data = devalue.parse(parsed.data, BROWSER ? client_app.decoders : server_app.decoders);
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -185,7 +185,10 @@ let target;
|
|
|
185
185
|
export let app;
|
|
186
186
|
|
|
187
187
|
/** @type {Record<string, any>} */
|
|
188
|
-
|
|
188
|
+
// we have to conditionally access the properties of `__SVELTEKIT_PAYLOAD__`
|
|
189
|
+
// because it will be `undefined` when users import the exports from this module.
|
|
190
|
+
// It's only defined when the server renders a page.
|
|
191
|
+
export const remote_responses = __SVELTEKIT_PAYLOAD__?.data ?? {};
|
|
189
192
|
|
|
190
193
|
/** @type {Array<((url: URL) => boolean)>} */
|
|
191
194
|
const invalidated = [];
|
|
@@ -379,9 +379,28 @@ export async function render_response({
|
|
|
379
379
|
deferred.set(id, { fulfil, reject });
|
|
380
380
|
})`);
|
|
381
381
|
|
|
382
|
+
let app_declaration = '';
|
|
383
|
+
|
|
384
|
+
if (Object.keys(options.hooks.transport).length > 0) {
|
|
385
|
+
if (client.inline) {
|
|
386
|
+
app_declaration = `const app = __sveltekit_${options.version_hash}.app.app;`;
|
|
387
|
+
} else if (client.app) {
|
|
388
|
+
app_declaration = `const app = await import(${s(prefixed(client.app))});`;
|
|
389
|
+
} else {
|
|
390
|
+
app_declaration = `const { app } = await import(${s(prefixed(client.start))});`;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
const prelude = app_declaration
|
|
395
|
+
? `${app_declaration}
|
|
396
|
+
const [data, error] = fn(app);`
|
|
397
|
+
: `const [data, error] = fn();`;
|
|
398
|
+
|
|
382
399
|
// When resolving, the id might not yet be available due to the data
|
|
383
400
|
// be evaluated upon init of kit, so we use a timeout to retry
|
|
384
|
-
properties.push(`resolve: (
|
|
401
|
+
properties.push(`resolve: async (id, fn) => {
|
|
402
|
+
${prelude}
|
|
403
|
+
|
|
385
404
|
const try_to_resolve = () => {
|
|
386
405
|
if (!deferred.has(id)) {
|
|
387
406
|
setTimeout(try_to_resolve, 0);
|
|
@@ -665,7 +684,7 @@ function get_data(event, event_state, options, nodes, csp, global) {
|
|
|
665
684
|
|
|
666
685
|
let str;
|
|
667
686
|
try {
|
|
668
|
-
str = devalue.uneval(
|
|
687
|
+
str = devalue.uneval(error ? [, error] : [data], replacer);
|
|
669
688
|
} catch {
|
|
670
689
|
error = await handle_error_and_jsonify(
|
|
671
690
|
event,
|
|
@@ -674,11 +693,13 @@ function get_data(event, event_state, options, nodes, csp, global) {
|
|
|
674
693
|
new Error(`Failed to serialize promise while rendering ${event.route.id}`)
|
|
675
694
|
);
|
|
676
695
|
data = undefined;
|
|
677
|
-
str = devalue.uneval(
|
|
696
|
+
str = devalue.uneval([, error], replacer);
|
|
678
697
|
}
|
|
679
698
|
|
|
680
699
|
const nonce = csp.script_needs_nonce ? ` nonce="${csp.nonce}"` : '';
|
|
681
|
-
push(
|
|
700
|
+
push(
|
|
701
|
+
`<script${nonce}>${global}.resolve(${id}, ${str.includes('app.decode') ? `(app) => ${str}` : `() => ${str}`})</script>\n`
|
|
702
|
+
);
|
|
682
703
|
if (count === 0) done();
|
|
683
704
|
}
|
|
684
705
|
);
|
|
@@ -74,30 +74,31 @@ export async function internal_respond(request, options, manifest, state) {
|
|
|
74
74
|
const is_data_request = has_data_suffix(url.pathname);
|
|
75
75
|
const remote_id = get_remote_id(url);
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
const opts = { status: 403 };
|
|
79
|
-
|
|
80
|
-
if (remote_id && request.method !== 'GET') {
|
|
81
|
-
return json(
|
|
82
|
-
{
|
|
83
|
-
message: 'Cross-site remote requests are forbidden'
|
|
84
|
-
},
|
|
85
|
-
opts
|
|
86
|
-
);
|
|
87
|
-
}
|
|
77
|
+
const request_origin = request.headers.get('origin');
|
|
88
78
|
|
|
79
|
+
if (remote_id) {
|
|
80
|
+
if (request.method !== 'GET' && request_origin !== url.origin) {
|
|
81
|
+
const message = 'Cross-site remote requests are forbidden';
|
|
82
|
+
return json({ message }, { status: 403 });
|
|
83
|
+
}
|
|
84
|
+
} else if (options.csrf_check_origin) {
|
|
89
85
|
const forbidden =
|
|
90
86
|
is_form_content_type(request) &&
|
|
91
87
|
(request.method === 'POST' ||
|
|
92
88
|
request.method === 'PUT' ||
|
|
93
89
|
request.method === 'PATCH' ||
|
|
94
|
-
request.method === 'DELETE')
|
|
90
|
+
request.method === 'DELETE') &&
|
|
91
|
+
request_origin !== url.origin &&
|
|
92
|
+
(!request_origin || !options.csrf_trusted_origins.includes(request_origin));
|
|
95
93
|
|
|
96
94
|
if (forbidden) {
|
|
97
95
|
const message = `Cross-site ${request.method} form submissions are forbidden`;
|
|
96
|
+
const opts = { status: 403 };
|
|
97
|
+
|
|
98
98
|
if (request.headers.get('accept') === 'application/json') {
|
|
99
99
|
return json({ message }, opts);
|
|
100
100
|
}
|
|
101
|
+
|
|
101
102
|
return text(message, opts);
|
|
102
103
|
}
|
|
103
104
|
}
|
package/src/types/internal.d.ts
CHANGED
|
@@ -442,6 +442,7 @@ export interface SSROptions {
|
|
|
442
442
|
app_template_contains_nonce: boolean;
|
|
443
443
|
csp: ValidatedConfig['kit']['csp'];
|
|
444
444
|
csrf_check_origin: boolean;
|
|
445
|
+
csrf_trusted_origins: string[];
|
|
445
446
|
embedded: boolean;
|
|
446
447
|
env_public_prefix: string;
|
|
447
448
|
env_private_prefix: string;
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -404,6 +404,17 @@ declare module '@sveltejs/kit' {
|
|
|
404
404
|
* @default true
|
|
405
405
|
*/
|
|
406
406
|
checkOrigin?: boolean;
|
|
407
|
+
/**
|
|
408
|
+
* An array of origins that are allowed to make cross-origin form submissions to your app, even when `checkOrigin` is `true`.
|
|
409
|
+
*
|
|
410
|
+
* Each origin should be a complete origin including protocol (e.g., `https://payment-gateway.com`).
|
|
411
|
+
* This is useful for allowing trusted third-party services like payment gateways or authentication providers to submit forms to your app.
|
|
412
|
+
*
|
|
413
|
+
* **Warning**: Only add origins you completely trust, as this bypasses CSRF protection for those origins.
|
|
414
|
+
* @default []
|
|
415
|
+
* @example ['https://checkout.stripe.com', 'https://accounts.google.com']
|
|
416
|
+
*/
|
|
417
|
+
trustedOrigins?: string[];
|
|
407
418
|
};
|
|
408
419
|
/**
|
|
409
420
|
* Whether or not the app is embedded inside a larger app. If `true`, SvelteKit will add its event listeners related to navigation etc on the parent of `%sveltekit.body%` instead of `window`, and will pass `params` from the server rather than inferring them from `location.pathname`.
|
package/types/index.d.ts.map
CHANGED
|
@@ -187,6 +187,6 @@
|
|
|
187
187
|
null,
|
|
188
188
|
null
|
|
189
189
|
],
|
|
190
|
-
"mappings": ";;;;;;;;;;;kBAkCiBA,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCZC,cAAcA;;;;;;aAMdC,cAAcA;;;;;;;;MAQrBC,aAAaA;;;;;OAKJC,YAAYA;;kBAETC,aAAaA;;;;;;MAMzBC,qBAAqBA;;;;;;;;;;;kBAWTC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8IPC,MAAMA;;;;;;;;;;;kBAWNC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DPC,QAAQA;;;;;;;;kBAQRC,SAASA
|
|
190
|
+
"mappings": "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",
|
|
191
191
|
"ignoreList": []
|
|
192
192
|
}
|