@sveltejs/kit 2.7.7 → 2.8.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 +1 -1
- package/src/exports/index.js +9 -0
- package/src/exports/node/index.js +15 -1
- package/src/exports/vite/index.js +0 -16
- package/src/exports/vite/preview/index.js +1 -1
- package/src/runtime/server/page/csp.js +67 -63
- package/src/version.js +1 -1
- package/types/index.d.ts +5 -0
- package/types/index.d.ts.map +2 -1
package/package.json
CHANGED
package/src/exports/index.js
CHANGED
|
@@ -190,3 +190,12 @@ export function fail(status, data) {
|
|
|
190
190
|
// @ts-expect-error unique symbol missing
|
|
191
191
|
return new ActionFailure(status, data);
|
|
192
192
|
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Checks whether this is an action failure thrown by {@link fail}.
|
|
196
|
+
* @param {unknown} e The object to check.
|
|
197
|
+
* @return {e is import('./public.js').ActionFailure}
|
|
198
|
+
*/
|
|
199
|
+
export function isActionFailure(e) {
|
|
200
|
+
return e instanceof ActionFailure;
|
|
201
|
+
}
|
|
@@ -106,11 +106,25 @@ function get_raw_body(req, body_size_limit) {
|
|
|
106
106
|
// TODO 3.0 make the signature synchronous?
|
|
107
107
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
108
108
|
export async function getRequest({ request, base, bodySizeLimit }) {
|
|
109
|
+
let headers = /** @type {Record<string, string>} */ (request.headers);
|
|
110
|
+
if (request.httpVersionMajor >= 2) {
|
|
111
|
+
// the Request constructor rejects headers with ':' in the name
|
|
112
|
+
headers = Object.assign({}, headers);
|
|
113
|
+
// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.5
|
|
114
|
+
if (headers[':authority']) {
|
|
115
|
+
headers.host = headers[':authority'];
|
|
116
|
+
}
|
|
117
|
+
delete headers[':authority'];
|
|
118
|
+
delete headers[':method'];
|
|
119
|
+
delete headers[':path'];
|
|
120
|
+
delete headers[':scheme'];
|
|
121
|
+
}
|
|
122
|
+
|
|
109
123
|
return new Request(base + request.url, {
|
|
110
124
|
// @ts-expect-error
|
|
111
125
|
duplex: 'half',
|
|
112
126
|
method: request.method,
|
|
113
|
-
headers:
|
|
127
|
+
headers: Object.entries(headers),
|
|
114
128
|
body:
|
|
115
129
|
request.method === 'GET' || request.method === 'HEAD'
|
|
116
130
|
? undefined
|
|
@@ -349,22 +349,6 @@ async function kit({ svelte_config }) {
|
|
|
349
349
|
* Stores the final config.
|
|
350
350
|
*/
|
|
351
351
|
configResolved(config) {
|
|
352
|
-
// we search for this plugin by name because we can't detect it
|
|
353
|
-
// since it doesn't directly modify the https config unlike the mkcert plugin
|
|
354
|
-
const vite_basic_ssl = config.plugins.find(({ name }) => name === 'vite:basic-ssl');
|
|
355
|
-
|
|
356
|
-
// by default, when enabling HTTPS in Vite, it also enables HTTP/2
|
|
357
|
-
// however, undici has not yet enabled HTTP/2 by default: https://github.com/nodejs/undici/issues/2750
|
|
358
|
-
// we set a no-op proxy config to force Vite to downgrade to TLS-only
|
|
359
|
-
// see https://vitejs.dev/config/#server-https
|
|
360
|
-
if ((config.server.https || vite_basic_ssl) && !config.server.proxy) {
|
|
361
|
-
config.server.proxy = {};
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
if ((config.preview.https || vite_basic_ssl) && !config.preview.proxy) {
|
|
365
|
-
config.preview.proxy = {};
|
|
366
|
-
}
|
|
367
|
-
|
|
368
352
|
vite_config = config;
|
|
369
353
|
}
|
|
370
354
|
};
|
|
@@ -185,7 +185,7 @@ export async function preview(vite, vite_config, svelte_config) {
|
|
|
185
185
|
|
|
186
186
|
// SSR
|
|
187
187
|
vite.middlewares.use(async (req, res) => {
|
|
188
|
-
const host = req.headers['
|
|
188
|
+
const host = req.headers[':authority'] || req.headers.host;
|
|
189
189
|
|
|
190
190
|
const request = await getRequest({
|
|
191
191
|
base: `${protocol}://${host}`,
|
|
@@ -31,9 +31,24 @@ class BaseProvider {
|
|
|
31
31
|
/** @type {boolean} */
|
|
32
32
|
#script_needs_csp;
|
|
33
33
|
|
|
34
|
+
/** @type {boolean} */
|
|
35
|
+
#script_src_needs_csp;
|
|
36
|
+
|
|
37
|
+
/** @type {boolean} */
|
|
38
|
+
#script_src_elem_needs_csp;
|
|
39
|
+
|
|
34
40
|
/** @type {boolean} */
|
|
35
41
|
#style_needs_csp;
|
|
36
42
|
|
|
43
|
+
/** @type {boolean} */
|
|
44
|
+
#style_src_needs_csp;
|
|
45
|
+
|
|
46
|
+
/** @type {boolean} */
|
|
47
|
+
#style_src_attr_needs_csp;
|
|
48
|
+
|
|
49
|
+
/** @type {boolean} */
|
|
50
|
+
#style_src_elem_needs_csp;
|
|
51
|
+
|
|
37
52
|
/** @type {import('types').CspDirectives} */
|
|
38
53
|
#directives;
|
|
39
54
|
|
|
@@ -121,92 +136,81 @@ class BaseProvider {
|
|
|
121
136
|
}
|
|
122
137
|
}
|
|
123
138
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
(!!script_src_elem &&
|
|
128
|
-
script_src_elem.filter((value) => value !== 'unsafe-inline').length > 0);
|
|
139
|
+
/** @param {(import('types').Csp.Source | import('types').Csp.ActionSource)[] | undefined} directive */
|
|
140
|
+
const needs_csp = (directive) =>
|
|
141
|
+
!!directive && !directive.some((value) => value === 'unsafe-inline');
|
|
129
142
|
|
|
143
|
+
this.#script_src_needs_csp = needs_csp(effective_script_src);
|
|
144
|
+
this.#script_src_elem_needs_csp = needs_csp(script_src_elem);
|
|
145
|
+
this.#style_src_needs_csp = needs_csp(effective_style_src);
|
|
146
|
+
this.#style_src_attr_needs_csp = needs_csp(style_src_attr);
|
|
147
|
+
this.#style_src_elem_needs_csp = needs_csp(style_src_elem);
|
|
148
|
+
|
|
149
|
+
this.#script_needs_csp = this.#script_src_needs_csp || this.#script_src_elem_needs_csp;
|
|
130
150
|
this.#style_needs_csp =
|
|
131
151
|
!__SVELTEKIT_DEV__ &&
|
|
132
|
-
(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
style_src_attr.filter((value) => value !== 'unsafe-inline').length > 0) ||
|
|
136
|
-
(!!style_src_elem &&
|
|
137
|
-
style_src_elem.filter((value) => value !== 'unsafe-inline').length > 0));
|
|
152
|
+
(this.#style_src_needs_csp ||
|
|
153
|
+
this.#style_src_attr_needs_csp ||
|
|
154
|
+
this.#style_src_elem_needs_csp);
|
|
138
155
|
|
|
139
156
|
this.script_needs_nonce = this.#script_needs_csp && !this.#use_hashes;
|
|
140
157
|
this.style_needs_nonce = this.#style_needs_csp && !this.#use_hashes;
|
|
158
|
+
|
|
141
159
|
this.#nonce = nonce;
|
|
142
160
|
}
|
|
143
161
|
|
|
144
162
|
/** @param {string} content */
|
|
145
163
|
add_script(content) {
|
|
146
|
-
if (this.#script_needs_csp)
|
|
147
|
-
const d = this.#directives;
|
|
164
|
+
if (!this.#script_needs_csp) return;
|
|
148
165
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (this.#script_src.length === 0) {
|
|
159
|
-
this.#script_src.push(`nonce-${this.#nonce}`);
|
|
160
|
-
}
|
|
161
|
-
if (d['script-src-elem']?.length) {
|
|
162
|
-
this.#script_src_elem.push(`nonce-${this.#nonce}`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
166
|
+
/** @type {`nonce-${string}` | `sha256-${string}`} */
|
|
167
|
+
const source = this.#use_hashes ? `sha256-${sha256(content)}` : `nonce-${this.#nonce}`;
|
|
168
|
+
|
|
169
|
+
if (this.#script_src_needs_csp) {
|
|
170
|
+
this.#script_src.push(source);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (this.#script_src_elem_needs_csp) {
|
|
174
|
+
this.#script_src_elem.push(source);
|
|
165
175
|
}
|
|
166
176
|
}
|
|
167
177
|
|
|
168
178
|
/** @param {string} content */
|
|
169
179
|
add_style(content) {
|
|
170
|
-
if (this.#style_needs_csp)
|
|
171
|
-
// this is the hash for "/* empty */"
|
|
172
|
-
// adding it so that svelte does not break csp
|
|
173
|
-
// see https://github.com/sveltejs/svelte/pull/7800
|
|
174
|
-
const empty_comment_hash = '9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=';
|
|
180
|
+
if (!this.#style_needs_csp) return;
|
|
175
181
|
|
|
176
|
-
|
|
182
|
+
/** @type {`nonce-${string}` | `sha256-${string}`} */
|
|
183
|
+
const source = this.#use_hashes ? `sha256-${sha256(content)}` : `nonce-${this.#nonce}`;
|
|
177
184
|
|
|
178
|
-
|
|
179
|
-
|
|
185
|
+
if (this.#style_src_needs_csp) {
|
|
186
|
+
this.#style_src.push(source);
|
|
187
|
+
}
|
|
180
188
|
|
|
181
|
-
|
|
189
|
+
if (this.#style_src_needs_csp) {
|
|
190
|
+
this.#style_src.push(source);
|
|
191
|
+
}
|
|
182
192
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (d['style-src-elem']?.length) {
|
|
187
|
-
if (
|
|
188
|
-
hash !== empty_comment_hash &&
|
|
189
|
-
!d['style-src-elem'].includes(`sha256-${empty_comment_hash}`)
|
|
190
|
-
) {
|
|
191
|
-
this.#style_src_elem.push(`sha256-${empty_comment_hash}`);
|
|
192
|
-
}
|
|
193
|
+
if (this.#style_src_attr_needs_csp) {
|
|
194
|
+
this.#style_src_attr.push(source);
|
|
195
|
+
}
|
|
193
196
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
197
|
+
if (this.#style_src_elem_needs_csp) {
|
|
198
|
+
// this is the sha256 hash for the string "/* empty */"
|
|
199
|
+
// adding it so that svelte does not break csp
|
|
200
|
+
// see https://github.com/sveltejs/svelte/pull/7800
|
|
201
|
+
const sha256_empty_comment_hash = 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=';
|
|
202
|
+
const d = this.#directives;
|
|
203
|
+
|
|
204
|
+
if (
|
|
205
|
+
d['style-src-elem'] &&
|
|
206
|
+
!d['style-src-elem'].includes(sha256_empty_comment_hash) &&
|
|
207
|
+
!this.#style_src_elem.includes(sha256_empty_comment_hash)
|
|
208
|
+
) {
|
|
209
|
+
this.#style_src_elem.push(sha256_empty_comment_hash);
|
|
210
|
+
}
|
|
207
211
|
|
|
208
|
-
|
|
209
|
-
|
|
212
|
+
if (source !== sha256_empty_comment_hash) {
|
|
213
|
+
this.#style_src_elem.push(source);
|
|
210
214
|
}
|
|
211
215
|
}
|
|
212
216
|
}
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1826,6 +1826,11 @@ declare module '@sveltejs/kit' {
|
|
|
1826
1826
|
* @param data Data associated with the failure (e.g. validation errors)
|
|
1827
1827
|
* */
|
|
1828
1828
|
export function fail<T extends Record<string, unknown> | undefined = undefined>(status: number, data: T): ActionFailure<T>;
|
|
1829
|
+
/**
|
|
1830
|
+
* Checks whether this is an action failure thrown by {@link fail}.
|
|
1831
|
+
* @param e The object to check.
|
|
1832
|
+
* */
|
|
1833
|
+
export function isActionFailure(e: unknown): e is ActionFailure<undefined>;
|
|
1829
1834
|
export type LessThan<TNumber extends number, TArray extends any[] = []> = TNumber extends TArray['length'] ? TArray[number] : LessThan<TNumber, [...TArray, TArray['length']]>;
|
|
1830
1835
|
export type NumericRange<TStart extends number, TEnd extends number> = Exclude<TEnd | LessThan<TEnd>, LessThan<TStart>>;
|
|
1831
1836
|
export const VERSION: string;
|
package/types/index.d.ts.map
CHANGED
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
"isRedirect",
|
|
83
83
|
"json",
|
|
84
84
|
"text",
|
|
85
|
+
"isActionFailure",
|
|
85
86
|
"LessThan",
|
|
86
87
|
"NumericRange",
|
|
87
88
|
"VERSION",
|
|
@@ -154,6 +155,6 @@
|
|
|
154
155
|
null,
|
|
155
156
|
null
|
|
156
157
|
],
|
|
157
|
-
"mappings": "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
|
|
158
|
+
"mappings": "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",
|
|
158
159
|
"ignoreList": []
|
|
159
160
|
}
|