@sveltejs/kit 2.8.0 → 2.8.2
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/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/client/client.js +3 -1
- package/src/runtime/server/cookie.js +2 -4
- package/src/runtime/server/page/csp.js +67 -63
- package/src/version.js +1 -1
- package/types/index.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -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}`,
|
|
@@ -669,7 +669,9 @@ async function load_node({ loader, parent, url, params, route, server_data_node
|
|
|
669
669
|
: await resource.blob(),
|
|
670
670
|
cache: resource.cache,
|
|
671
671
|
credentials: resource.credentials,
|
|
672
|
-
headers
|
|
672
|
+
// the headers are undefined on the server if the Headers object is empty
|
|
673
|
+
// so we need to make sure they are also undefined here if there are no headers
|
|
674
|
+
headers: [...resource.headers].length ? resource.headers : undefined,
|
|
673
675
|
integrity: resource.integrity,
|
|
674
676
|
keepalive: resource.keepalive,
|
|
675
677
|
method: resource.method,
|
|
@@ -67,8 +67,7 @@ export function get_cookies(request, url, trailing_slash) {
|
|
|
67
67
|
return c.value;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
const
|
|
71
|
-
const req_cookies = parse(header, { decode: decoder });
|
|
70
|
+
const req_cookies = parse(header, { decode: opts?.decode });
|
|
72
71
|
const cookie = req_cookies[name]; // the decoded string or undefined
|
|
73
72
|
|
|
74
73
|
// in development, if the cookie was set during this session with `cookies.set`,
|
|
@@ -95,8 +94,7 @@ export function get_cookies(request, url, trailing_slash) {
|
|
|
95
94
|
* @param {import('cookie').CookieParseOptions} opts
|
|
96
95
|
*/
|
|
97
96
|
getAll(opts) {
|
|
98
|
-
const
|
|
99
|
-
const cookies = parse(header, { decode: decoder });
|
|
97
|
+
const cookies = parse(header, { decode: opts?.decode });
|
|
100
98
|
|
|
101
99
|
for (const c of Object.values(new_cookies)) {
|
|
102
100
|
if (
|
|
@@ -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.map
CHANGED
|
@@ -155,6 +155,6 @@
|
|
|
155
155
|
null,
|
|
156
156
|
null
|
|
157
157
|
],
|
|
158
|
-
"mappings": "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
|
|
158
|
+
"mappings": ";;;;;;;;;kBA2BiBA,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2BZC,cAAcA;;;;;;aAMdC,cAAcA;;;;;;;;;;;;;;;kBAeTC,aAAaA;;;;;;;;;;;;;;;;kBAgBbC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkGPC,MAAMA;;;;;;;;;;;;;;;;;;;;;kBAqBNC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DPC,QAAQA;;;;;;;;kBAQRC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAuZdC,MAAMA;;;;;;;;;;;aAWNC,iBAAiBA;;;;;;;;;;;;;aAajBC,iBAAiBA;;;;;;;;;;aAUjBC,WAAWA;;;;;;;;;;aAUXC,OAAOA;;;;;;aAMPC,IAAIA;;;;;;;;;;;;kBAYCC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4GTC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0BfC,gBAAgBA;;;;;;;;;;;;;;;;;;;;;;;;aAwBrBC,cAAcA;;kBAETC,UAAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoCVC,cAAcA;;;;;;;;;;kBAUdC,UAAUA;;;;;;;;;;;;;;;;;;kBAkBVC,aAAaA;;;;;;;;;;;;;;;;;;;kBAmBbC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CTC,YAAYA;;kBAEPC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA4FjBC,cAAcA;;;;;kBAKTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;kBAuBdC,eAAeA;;;;;;;;;;;;;;;cAenBC,MAAMA;;;;;;kBAMFC,iBAAiBA;;;;;;;kBAOjBC,WAAWA;;;;;;;;;;;;;;;;;;;;;aAqBhBC,UAAUA;;;;;;;kBAOLC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAqEpBC,MAAMA;;;;;;;;;;aAUNC,OAAOA;;;;;;;;;;;;;;;;aAgBPC,YAAYA;;;;;;;;;;;;kBC7xCXC,SAASA;;;;;;;;;;kBAqBTC,QAAQA;;;;;;;aDqyCTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6BTC,QAAQA;;;;WEj1CRC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkDZC,GAAGA;;;;;;;;;;;;;;;;;;;;;WAqBHC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmElBC,UAAUA;;WAELC,MAAMA;;;;;;;;;MASXC,YAAYA;;WAEPC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmCXC,yBAAyBA;;;;;;;;;;WAUzBC,yBAAyBA;;;;WAIzBC,sCAAsCA;;;;MAI3CC,8BAA8BA;MAC9BC,8BAA8BA;MAC9BC,2CAA2CA;;;;;;aAM3CC,eAAeA;;WAIVC,cAAcA;;;;;WAKdC,YAAYA;;;;;;MAMjBC,aAAaA;WC3LRC,KAAKA;;;;;;WAcLC,SAASA;;;;;;;;;;;;;;;;;WA6ETC,YAAYA;;;;;;;;;;;;WAYZC,QAAQA;;;;;;;;;;;;;;MAyBbC,iBAAiBA;;;;;;;;WAUZC,UAAUA;;;;;;;;;;;;;WAaVC,SAASA;;;;;;;;;;;;;;;;;;;;;;;WAsGTC,YAAYA;;;;;;;;;;;;;MAajBC,kBAAkBA;;WAEbC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsCZC,aAAaA;;WA2BRC,eAAeA;;;;;;MAMpBC,uBAAuBA;;MAEvBC,WAAWA;;;;;;;;WAQNC,QAAQA;;;;;;;;;MA2CbC,eAAeA;;;;;MAKfC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC7WdC,WAAWA;;;;;;;;;;;iBAcXC,QAAQA;;;;;iBAiBRC,UAAUA;;;;;;iBASVC,IAAIA;;;;;;iBA8BJC,IAAIA;;;;;;;;;;;;;;;;iBAkDJC,eAAeA;aA7LkCC,QAAQA;aAMVC,YAAYA;cCZ9DC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCoEJC,QAAQA;;;;;;iBCoCFC,UAAUA;;;;;;iBAkCVC,WAAWA;;;;;iBAgFjBC,oBAAoBA;;;;;;;;;;;iBC3MpBC,gBAAgBA;;;;;;;;;iBC+GVC,SAASA;;;;;;;;;cC9HlBC,OAAOA;;;;;cAKPC,GAAGA;;;;;cAKHC,QAAQA;;;;;cAKRC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;iBCWJC,WAAWA;;;;;;;;;;;;;;;;;;;;;iBAyCXC,OAAOA;;;;;;;iBC81DDC,WAAWA;;;;;;;;;;;iBArSjBC,aAAaA;;;;;;;;;;;;iBAiBbC,cAAcA;;;;;;;;;;iBAedC,UAAUA;;;;;iBASVC,qBAAqBA;;;;;;;;iBA2BrBC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;iBAsCJC,UAAUA;;;;iBAmBVC,aAAaA;;;;;;;;;;;;iBAqBPC,WAAWA;;;;;;;;;;;;;;;;;;iBAoCjBC,WAAWA;;;;;iBA2BXC,SAASA;;;;;iBA4CTC,YAAYA;MVjuDhB7D,YAAYA;;;;;;;;;;;YWtJb8D,IAAIA;;;;;;;YAOJC,MAAMA;;;;;;;;;;;;;;;;;iBAiBDC,YAAYA;;;;;;;;;;;;;;;;;;iBCVZC,IAAIA;;;;;;iBCXPC,SAASA;;;;;;;;;;;;;;cAwBTC,IAAIA;;;;;;;;cAeJC,UAAUA;;;;;;cAaVC,OAAOA",
|
|
159
159
|
"ignoreList": []
|
|
160
160
|
}
|