@sveltejs/kit 2.0.6 → 2.0.8

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "The fastest way to build Svelte apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,6 +15,7 @@
15
15
  "cookie": "^0.6.0",
16
16
  "devalue": "^4.3.2",
17
17
  "esm-env": "^1.0.0",
18
+ "import-meta-resolve": "^4.0.0",
18
19
  "kleur": "^4.1.5",
19
20
  "magic-string": "^0.30.5",
20
21
  "mrmime": "^2.0.0",
@@ -179,14 +179,6 @@ export interface Config {
179
179
  extensions?: string[];
180
180
  /** SvelteKit options */
181
181
  kit?: KitConfig;
182
- /** [`@sveltejs/package`](/docs/packaging) options. */
183
- package?: {
184
- source?: string;
185
- dir?: string;
186
- emitTypes?: boolean;
187
- exports?(filepath: string): boolean;
188
- files?(filepath: string): boolean;
189
- };
190
182
  /** Preprocessor options, if any. Preprocessing can alternatively also be done through Vite's preprocessor capabilities. */
191
183
  preprocess?: any;
192
184
  /** `vite-plugin-svelte` plugin options. */
@@ -1,9 +1,8 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
 
4
- import { svelte } from '@sveltejs/vite-plugin-svelte';
4
+ import * as imr from 'import-meta-resolve';
5
5
  import colors from 'kleur';
6
- import * as vite from 'vite';
7
6
 
8
7
  import { copy, mkdirp, posixify, read, resolve_entry, rimraf } from '../../utils/filesystem.js';
9
8
  import { create_static_module, create_dynamic_module } from '../../core/env.js';
@@ -34,6 +33,7 @@ import {
34
33
  sveltekit_environment,
35
34
  sveltekit_paths
36
35
  } from './module_ids.js';
36
+ import { pathToFileURL } from 'node:url';
37
37
 
38
38
  const cwd = process.cwd();
39
39
 
@@ -122,6 +122,17 @@ const warning_preprocessor = {
122
122
  }
123
123
  };
124
124
 
125
+ /**
126
+ * Resolve a dependency relative to the current working directory,
127
+ * rather than relative to this package
128
+ * @param {string} dependency
129
+ */
130
+ async function resolve_peer_dependency(dependency) {
131
+ // @ts-expect-error the types are wrong
132
+ const resolved = await imr.resolve(dependency, pathToFileURL(process.cwd() + '/dummy.js'));
133
+ return import(resolved);
134
+ }
135
+
125
136
  /**
126
137
  * Returns the SvelteKit Vite plugins.
127
138
  * @returns {Promise<import('vite').Plugin[]>}
@@ -153,7 +164,9 @@ export async function sveltekit() {
153
164
  ...svelte_config.vitePlugin
154
165
  };
155
166
 
156
- return [...svelte(vite_plugin_svelte_options), ...kit({ svelte_config })];
167
+ const { svelte } = await resolve_peer_dependency('@sveltejs/vite-plugin-svelte');
168
+
169
+ return [...svelte(vite_plugin_svelte_options), ...(await kit({ svelte_config }))];
157
170
  }
158
171
 
159
172
  // These variables live outside the `kit()` function because it is re-invoked by each Vite build
@@ -174,9 +187,11 @@ let manifest_data;
174
187
  * - https://rollupjs.org/guide/en/#output-generation-hooks
175
188
  *
176
189
  * @param {{ svelte_config: import('types').ValidatedConfig }} options
177
- * @return {import('vite').Plugin[]}
190
+ * @return {Promise<import('vite').Plugin[]>}
178
191
  */
179
- function kit({ svelte_config }) {
192
+ async function kit({ svelte_config }) {
193
+ const vite = await resolve_peer_dependency('vite');
194
+
180
195
  const { kit } = svelte_config;
181
196
  const out = `${kit.outDir}/output`;
182
197
 
@@ -1611,6 +1611,7 @@ export function create_client(app, target) {
1611
1611
  }
1612
1612
  }
1613
1613
 
1614
+ update_scroll_positions(current_history_index);
1614
1615
  const opts = {
1615
1616
  [HISTORY_INDEX]: (current_history_index += 1),
1616
1617
  [NAVIGATION_INDEX]: current_navigation_index,
@@ -1810,9 +1811,19 @@ export function create_client(app, target) {
1810
1811
  // attempt to scroll to that element and avoid any history changes.
1811
1812
  // Otherwise, this can cause Firefox to incorrectly assign a null
1812
1813
  // history state value without any signal that we can detect.
1813
- if (current.url.hash === url.hash) {
1814
+ const [, current_hash] = current.url.href.split('#');
1815
+ if (current_hash === hash) {
1814
1816
  event.preventDefault();
1815
- a.ownerDocument.getElementById(hash)?.scrollIntoView();
1817
+
1818
+ // We're already on /# and click on a link that goes to /#, or we're on
1819
+ // /#top and click on a link that goes to /#top. In those cases just go to
1820
+ // the top of the page, and avoid a history change.
1821
+ if (hash === '' || (hash === 'top' && a.ownerDocument.getElementById('top') === null)) {
1822
+ window.scrollTo({ top: 0 });
1823
+ } else {
1824
+ a.ownerDocument.getElementById(hash)?.scrollIntoView();
1825
+ }
1826
+
1816
1827
  return;
1817
1828
  }
1818
1829
  // set this flag to distinguish between navigations triggered by
@@ -2161,7 +2172,7 @@ async function load_data(url, invalid) {
2161
2172
  const { done, value } = await reader.read();
2162
2173
  if (done && !text) break;
2163
2174
 
2164
- text += !value && text ? '\n' : decoder.decode(value); // no value -> final chunk -> add a new line to trigger the last parse
2175
+ text += !value && text ? '\n' : decoder.decode(value, { stream: true }); // no value -> final chunk -> add a new line to trigger the last parse
2165
2176
 
2166
2177
  while (true) {
2167
2178
  const split = text.indexOf('\n');
@@ -40,9 +40,18 @@ class BaseProvider {
40
40
  /** @type {import('types').Csp.Source[]} */
41
41
  #script_src;
42
42
 
43
+ /** @type {import('types').Csp.Source[]} */
44
+ #script_src_elem;
45
+
43
46
  /** @type {import('types').Csp.Source[]} */
44
47
  #style_src;
45
48
 
49
+ /** @type {import('types').Csp.Source[]} */
50
+ #style_src_attr;
51
+
52
+ /** @type {import('types').Csp.Source[]} */
53
+ #style_src_elem;
54
+
46
55
  /** @type {string} */
47
56
  #nonce;
48
57
 
@@ -57,6 +66,18 @@ class BaseProvider {
57
66
 
58
67
  const d = this.#directives;
59
68
 
69
+ this.#script_src = [];
70
+ this.#script_src_elem = [];
71
+ this.#style_src = [];
72
+ this.#style_src_attr = [];
73
+ this.#style_src_elem = [];
74
+
75
+ const effective_script_src = d['script-src'] || d['default-src'];
76
+ const script_src_elem = d['script-src-elem'];
77
+ const effective_style_src = d['style-src'] || d['default-src'];
78
+ const style_src_attr = d['style-src-attr'];
79
+ const style_src_elem = d['style-src-elem'];
80
+
60
81
  if (__SVELTEKIT_DEV__) {
61
82
  // remove strict-dynamic in dev...
62
83
  // TODO reinstate this if we can figure out how to make strict-dynamic work
@@ -70,28 +91,34 @@ class BaseProvider {
70
91
  // if (d['script-src'].length === 0) delete d['script-src'];
71
92
  // }
72
93
 
73
- const effective_style_src = d['style-src'] || d['default-src'];
74
-
75
94
  // ...and add unsafe-inline so we can inject <style> elements
76
95
  if (effective_style_src && !effective_style_src.includes('unsafe-inline')) {
77
96
  d['style-src'] = [...effective_style_src, 'unsafe-inline'];
78
97
  }
79
- }
80
98
 
81
- this.#script_src = [];
82
- this.#style_src = [];
99
+ if (style_src_attr && !style_src_attr.includes('unsafe-inline')) {
100
+ d['style-src-attr'] = [...style_src_attr, 'unsafe-inline'];
101
+ }
83
102
 
84
- const effective_script_src = d['script-src'] || d['default-src'];
85
- const effective_style_src = d['style-src'] || d['default-src'];
103
+ if (style_src_elem && !style_src_elem.includes('unsafe-inline')) {
104
+ d['style-src-elem'] = [...style_src_elem, 'unsafe-inline'];
105
+ }
106
+ }
86
107
 
87
108
  this.#script_needs_csp =
88
- !!effective_script_src &&
89
- effective_script_src.filter((value) => value !== 'unsafe-inline').length > 0;
109
+ (!!effective_script_src &&
110
+ effective_script_src.filter((value) => value !== 'unsafe-inline').length > 0) ||
111
+ (!!script_src_elem &&
112
+ script_src_elem.filter((value) => value !== 'unsafe-inline').length > 0);
90
113
 
91
114
  this.#style_needs_csp =
92
115
  !__SVELTEKIT_DEV__ &&
93
- !!effective_style_src &&
94
- effective_style_src.filter((value) => value !== 'unsafe-inline').length > 0;
116
+ ((!!effective_style_src &&
117
+ effective_style_src.filter((value) => value !== 'unsafe-inline').length > 0) ||
118
+ (!!style_src_attr &&
119
+ style_src_attr.filter((value) => value !== 'unsafe-inline').length > 0) ||
120
+ (!!style_src_elem &&
121
+ style_src_elem.filter((value) => value !== 'unsafe-inline').length > 0));
95
122
 
96
123
  this.script_needs_nonce = this.#script_needs_csp && !this.#use_hashes;
97
124
  this.style_needs_nonce = this.#style_needs_csp && !this.#use_hashes;
@@ -101,10 +128,23 @@ class BaseProvider {
101
128
  /** @param {string} content */
102
129
  add_script(content) {
103
130
  if (this.#script_needs_csp) {
131
+ const d = this.#directives;
132
+
104
133
  if (this.#use_hashes) {
105
- this.#script_src.push(`sha256-${sha256(content)}`);
106
- } else if (this.#script_src.length === 0) {
107
- this.#script_src.push(`nonce-${this.#nonce}`);
134
+ const hash = sha256(content);
135
+
136
+ this.#script_src.push(`sha256-${hash}`);
137
+
138
+ if (d['script-src-elem']?.length) {
139
+ this.#script_src_elem.push(`sha256-${hash}`);
140
+ }
141
+ } else {
142
+ if (this.#script_src.length === 0) {
143
+ this.#script_src.push(`nonce-${this.#nonce}`);
144
+ }
145
+ if (d['script-src-elem']?.length) {
146
+ this.#script_src_elem.push(`nonce-${this.#nonce}`);
147
+ }
108
148
  }
109
149
  }
110
150
  }
@@ -112,10 +152,29 @@ class BaseProvider {
112
152
  /** @param {string} content */
113
153
  add_style(content) {
114
154
  if (this.#style_needs_csp) {
155
+ const d = this.#directives;
156
+
115
157
  if (this.#use_hashes) {
116
- this.#style_src.push(`sha256-${sha256(content)}`);
117
- } else if (this.#style_src.length === 0) {
118
- this.#style_src.push(`nonce-${this.#nonce}`);
158
+ const hash = sha256(content);
159
+
160
+ this.#style_src.push(`sha256-${hash}`);
161
+
162
+ if (d['style-src-attr']?.length) {
163
+ this.#style_src_attr.push(`sha256-${hash}`);
164
+ }
165
+ if (d['style-src-elem']?.length) {
166
+ this.#style_src_elem.push(`sha256-${hash}`);
167
+ }
168
+ } else {
169
+ if (this.#style_src.length === 0) {
170
+ this.#style_src.push(`nonce-${this.#nonce}`);
171
+ }
172
+ if (d['style-src-attr']?.length) {
173
+ this.#style_src_attr.push(`nonce-${this.#nonce}`);
174
+ }
175
+ if (d['style-src-elem']?.length) {
176
+ this.#style_src_elem.push(`nonce-${this.#nonce}`);
177
+ }
119
178
  }
120
179
  }
121
180
  }
@@ -139,6 +198,20 @@ class BaseProvider {
139
198
  ];
140
199
  }
141
200
 
201
+ if (this.#style_src_attr.length > 0) {
202
+ directives['style-src-attr'] = [
203
+ ...(directives['style-src-attr'] || []),
204
+ ...this.#style_src_attr
205
+ ];
206
+ }
207
+
208
+ if (this.#style_src_elem.length > 0) {
209
+ directives['style-src-elem'] = [
210
+ ...(directives['style-src-elem'] || []),
211
+ ...this.#style_src_elem
212
+ ];
213
+ }
214
+
142
215
  if (this.#script_src.length > 0) {
143
216
  directives['script-src'] = [
144
217
  ...(directives['script-src'] || directives['default-src'] || []),
@@ -146,6 +219,13 @@ class BaseProvider {
146
219
  ];
147
220
  }
148
221
 
222
+ if (this.#script_src_elem.length > 0) {
223
+ directives['script-src-elem'] = [
224
+ ...(directives['script-src-elem'] || []),
225
+ ...this.#script_src_elem
226
+ ];
227
+ }
228
+
149
229
  for (const key in directives) {
150
230
  if (is_meta && (key === 'frame-ancestors' || key === 'report-uri' || key === 'sandbox')) {
151
231
  // these values cannot be used with a <meta> tag
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '2.0.6';
4
+ export const VERSION = '2.0.8';
package/types/index.d.ts CHANGED
@@ -161,14 +161,6 @@ declare module '@sveltejs/kit' {
161
161
  extensions?: string[];
162
162
  /** SvelteKit options */
163
163
  kit?: KitConfig;
164
- /** [`@sveltejs/package`](/docs/packaging) options. */
165
- package?: {
166
- source?: string;
167
- dir?: string;
168
- emitTypes?: boolean;
169
- exports?(filepath: string): boolean;
170
- files?(filepath: string): boolean;
171
- };
172
164
  /** Preprocessor options, if any. Preprocessing can alternatively also be done through Vite's preprocessor capabilities. */
173
165
  preprocess?: any;
174
166
  /** `vite-plugin-svelte` plugin options. */
@@ -143,5 +143,5 @@
143
143
  null,
144
144
  null
145
145
  ],
146
- "mappings": "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"
146
+ "mappings": "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"
147
147
  }