@sveltejs/kit 2.21.4 → 2.22.0

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.21.4",
3
+ "version": "2.22.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@playwright/test": "^1.51.1",
37
- "@sveltejs/vite-plugin-svelte": "^5.0.1",
37
+ "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0",
38
38
  "@types/connect": "^3.4.38",
39
39
  "@types/node": "^18.19.48",
40
40
  "@types/set-cookie-parser": "^2.4.7",
@@ -43,13 +43,13 @@
43
43
  "svelte": "^5.23.1",
44
44
  "svelte-preprocess": "^6.0.0",
45
45
  "typescript": "^5.3.3",
46
- "vite": "^6.2.7",
47
- "vitest": "^3.1.1"
46
+ "vite": "^6.3.5",
47
+ "vitest": "^3.2.3"
48
48
  },
49
49
  "peerDependencies": {
50
- "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0",
50
+ "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0",
51
51
  "svelte": "^4.0.0 || ^5.0.0-next.0",
52
- "vite": "^5.0.3 || ^6.0.0"
52
+ "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0"
53
53
  },
54
54
  "bin": {
55
55
  "svelte-kit": "svelte-kit.js"
@@ -14,22 +14,20 @@ import { create_node_analyser } from '../static_analysis/index.js';
14
14
  * @param {import('vite').Manifest} server_manifest
15
15
  * @param {import('vite').Manifest | null} client_manifest
16
16
  * @param {import('vite').Rollup.OutputBundle | null} server_bundle
17
- * @param {import('vite').Rollup.RollupOutput['output'] | null} client_bundle
17
+ * @param {import('vite').Rollup.RollupOutput['output'] | null} client_chunks
18
18
  * @param {import('types').RecursiveRequired<import('types').ValidatedConfig['kit']['output']>} output_config
19
19
  * @param {Map<string, { page_options: Record<string, any> | null, children: string[] }>} static_exports
20
20
  */
21
- export async function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, server_bundle, client_bundle, output_config, static_exports) {
21
+ export async function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, server_bundle, client_chunks, output_config, static_exports) {
22
22
  mkdirp(`${out}/server/nodes`);
23
23
  mkdirp(`${out}/server/stylesheets`);
24
24
 
25
25
  /** @type {Map<string, string>} */
26
26
  const stylesheets_to_inline = new Map();
27
27
 
28
- if (server_bundle && client_bundle && kit.inlineStyleThreshold > 0) {
29
- const client = get_stylesheets(client_bundle);
30
-
31
- const server_chunks = Object.values(server_bundle);
32
- const server = get_stylesheets(server_chunks);
28
+ if (server_bundle && client_chunks && kit.inlineStyleThreshold > 0) {
29
+ const client = get_stylesheets(client_chunks);
30
+ const server = get_stylesheets(Object.values(server_bundle));
33
31
 
34
32
  // map server stylesheet name to the client stylesheet name
35
33
  for (const [id, client_stylesheet] of client.stylesheets_used) {
@@ -103,7 +103,8 @@ export async function build_service_worker(
103
103
  },
104
104
  output: {
105
105
  // .mjs so that esbuild doesn't incorrectly inject `export` https://github.com/vitejs/vite/issues/15379
106
- entryFileNames: 'service-worker.mjs',
106
+ // @ts-expect-error `vite.rolldownVersion` only exists in `rolldown-vite`
107
+ entryFileNames: `service-worker.${vite.rolldownVersion ? 'js' : 'mjs'}`,
107
108
  assetFileNames: `${kit.appDir}/immutable/assets/[name].[hash][extname]`,
108
109
  inlineDynamicImports: true
109
110
  }
@@ -129,5 +130,8 @@ export async function build_service_worker(
129
130
  });
130
131
 
131
132
  // rename .mjs to .js to avoid incorrect MIME types with ancient webservers
132
- fs.renameSync(`${out}/client/service-worker.mjs`, `${out}/client/service-worker.js`);
133
+ // @ts-expect-error `vite.rolldownVersion` only exists in `rolldown-vite`
134
+ if (!vite.rolldownVersion) {
135
+ fs.renameSync(`${out}/client/service-worker.mjs`, `${out}/client/service-worker.js`);
136
+ }
133
137
  }
@@ -182,6 +182,7 @@ let manifest_data;
182
182
  * @return {Promise<import('vite').Plugin[]>}
183
183
  */
184
184
  async function kit({ svelte_config }) {
185
+ /** @type {import('vite')} */
185
186
  const vite = await import_peer('vite');
186
187
 
187
188
  const { kit } = svelte_config;
@@ -694,13 +695,15 @@ Tips:
694
695
  assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
695
696
  hoistTransitiveImports: false,
696
697
  sourcemapIgnoreList,
697
- manualChunks: split ? undefined : () => 'bundle',
698
698
  inlineDynamicImports: false
699
699
  },
700
700
  preserveEntrySignatures: 'strict',
701
701
  onwarn(warning, handler) {
702
702
  if (
703
- warning.code === 'MISSING_EXPORT' &&
703
+ // @ts-expect-error `vite.rolldownVersion` only exists in `rolldown-vite`
704
+ (vite.rolldownVersion
705
+ ? warning.code === 'IMPORT_IS_UNDEFINED'
706
+ : warning.code === 'MISSING_EXPORT') &&
704
707
  warning.id === `${kit.outDir}/generated/client-optimized/app.js`
705
708
  ) {
706
709
  // ignore e.g. undefined `handleError` hook when
@@ -725,7 +728,25 @@ Tips:
725
728
  }
726
729
  }
727
730
  }
731
+ // TODO: enabling `experimental.enableNativePlugin` causes styles to not be applied
732
+ // see https://github.com/vitejs/rolldown-vite/issues/213
733
+ // experimental: {
734
+ // enableNativePlugin: true
735
+ // }
728
736
  };
737
+
738
+ if (!split && new_config.build?.rollupOptions?.output) {
739
+ const output_options = /** @type {import('vite').Rollup.OutputOptions} */ (
740
+ new_config.build.rollupOptions.output
741
+ );
742
+ // @ts-expect-error `vite.rolldownVersion` only exists in `rolldown-vite`
743
+ if (vite.rolldownVersion) {
744
+ output_options.inlineDynamicImports = true;
745
+ } else {
746
+ /** @type {import('rollup').OutputOptions} */ (output_options).manualChunks = () =>
747
+ 'bundle';
748
+ }
749
+ }
729
750
  } else {
730
751
  new_config = {
731
752
  appType: 'custom',
@@ -738,6 +759,11 @@ Tips:
738
759
  }
739
760
  },
740
761
  publicDir: kit.files.assets
762
+ // TODO: enabling `experimental.enableNativePlugin` causes styles to not be applied
763
+ // see https://github.com/vitejs/rolldown-vite/issues/213
764
+ // experimental: {
765
+ // enableNativePlugin: true
766
+ // }
741
767
  };
742
768
  }
743
769
 
@@ -779,7 +805,8 @@ Tips:
779
805
  renderChunk(code, chunk) {
780
806
  if (code.includes('__SVELTEKIT_TRACK__')) {
781
807
  return {
782
- code: code.replace(/__SVELTEKIT_TRACK__\('(.+?)'\)/g, (_, label) => {
808
+ // Rolldown changes our single quotes to double quotes so we need it in the regex too
809
+ code: code.replace(/__SVELTEKIT_TRACK__\(['"](.+?)['"]\)/g, (_, label) => {
783
810
  (tracked_features[chunk.name + '.js'] ??= []).push(label);
784
811
  // put extra whitespace at the end of the comment to preserve the source size and avoid interfering with source maps
785
812
  return `/* track ${label} */`;
@@ -960,7 +987,7 @@ Tips:
960
987
  };
961
988
 
962
989
  if (svelte_config.kit.output.bundleStrategy === 'inline') {
963
- const style = /** @type {import('rollup').OutputAsset} */ (
990
+ const style = /** @type {import('vite').Rollup.OutputAsset} */ (
964
991
  client_chunks.find(
965
992
  (chunk) =>
966
993
  chunk.type === 'asset' &&
@@ -1035,7 +1062,7 @@ Tips:
1035
1062
  ...vite_config,
1036
1063
  build: {
1037
1064
  ...vite_config.build,
1038
- minify: initial_config.build?.minify ?? 'esbuild'
1065
+ minify: initial_config.build?.minify ?? true
1039
1066
  }
1040
1067
  },
1041
1068
  manifest_data,
@@ -712,9 +712,12 @@ async function load_node({ loader, parent, url, params, route, server_data_node
712
712
  : await resource.blob(),
713
713
  cache: resource.cache,
714
714
  credentials: resource.credentials,
715
- // the headers are undefined on the server if the Headers object is empty
716
- // so we need to make sure they are also undefined here if there are no headers
717
- headers: [...resource.headers].length ? resource.headers : undefined,
715
+ // the server sets headers to `undefined` if there are no headers but
716
+ // the client defaults to an empty Headers object in the Request object.
717
+ // To keep the two values in sync, we explicitly set the headers to `undefined`.
718
+ // Also, not sure why, but sometimes 0 is evaluated as truthy so we need to
719
+ // explicitly compare the headers length to a number here
720
+ headers: [...resource.headers].length > 0 ? resource?.headers : undefined,
718
721
  integrity: resource.integrity,
719
722
  keepalive: resource.keepalive,
720
723
  method: resource.method,
@@ -1602,11 +1605,7 @@ async function navigate({
1602
1605
  const scroll = popped ? popped.scroll : noscroll ? scroll_state() : null;
1603
1606
 
1604
1607
  if (autoscroll) {
1605
- const deep_linked =
1606
- url.hash &&
1607
- document.getElementById(
1608
- decodeURIComponent(app.hash ? (url.hash.split('#')[2] ?? '') : url.hash.slice(1))
1609
- );
1608
+ const deep_linked = url.hash && document.getElementById(get_id(url));
1610
1609
  if (scroll) {
1611
1610
  scrollTo(scroll.x, scroll.y);
1612
1611
  } else if (deep_linked) {
@@ -1627,7 +1626,7 @@ async function navigate({
1627
1626
  document.activeElement !== document.body;
1628
1627
 
1629
1628
  if (!keepfocus && !changed_focus) {
1630
- reset_focus();
1629
+ reset_focus(url);
1631
1630
  }
1632
1631
 
1633
1632
  autoscroll = true;
@@ -2194,7 +2193,7 @@ export async function applyAction(result) {
2194
2193
  root.$set(navigation_result.props);
2195
2194
  update(navigation_result.props.page);
2196
2195
 
2197
- void tick().then(reset_focus);
2196
+ void tick().then(() => reset_focus(current.url));
2198
2197
  }
2199
2198
  } else if (result.type === 'redirect') {
2200
2199
  await _goto(result.location, { invalidateAll: true }, 0);
@@ -2215,7 +2214,7 @@ export async function applyAction(result) {
2215
2214
  root.$set({ form: result.data });
2216
2215
 
2217
2216
  if (result.type === 'success') {
2218
- reset_focus();
2217
+ reset_focus(page.url);
2219
2218
  }
2220
2219
  }
2221
2220
  }
@@ -2439,6 +2438,8 @@ function _start_router() {
2439
2438
  });
2440
2439
 
2441
2440
  addEventListener('popstate', async (event) => {
2441
+ if (resetting_focus) return;
2442
+
2442
2443
  if (event.state?.[HISTORY_INDEX]) {
2443
2444
  const history_index = event.state[HISTORY_INDEX];
2444
2445
  token = {};
@@ -2793,35 +2794,60 @@ function deserialize_uses(uses) {
2793
2794
  };
2794
2795
  }
2795
2796
 
2796
- function reset_focus() {
2797
+ /**
2798
+ * This flag is used to avoid client-side navigation when we're only using
2799
+ * `location.replace()` to set focus.
2800
+ */
2801
+ let resetting_focus = false;
2802
+
2803
+ /**
2804
+ * @param {URL} url
2805
+ */
2806
+ function reset_focus(url) {
2797
2807
  const autofocus = document.querySelector('[autofocus]');
2798
2808
  if (autofocus) {
2799
2809
  // @ts-ignore
2800
2810
  autofocus.focus();
2801
2811
  } else {
2802
2812
  // Reset page selection and focus
2803
- // TODO: find a fix that works with hash routing too
2804
- if (!app.hash && location.hash && document.querySelector(location.hash)) {
2813
+
2814
+ // Mimic the browsers' behaviour and set the sequential focus navigation
2815
+ // starting point to the fragment identifier.
2816
+ const id = get_id(url);
2817
+ if (id && document.getElementById(id)) {
2805
2818
  const { x, y } = scroll_state();
2806
2819
 
2820
+ // `element.focus()` doesn't work on Safari and Firefox Ubuntu so we need
2821
+ // to use this hack with `location.replace()` instead.
2807
2822
  setTimeout(() => {
2808
2823
  const history_state = history.state;
2809
- // Mimic the browsers' behaviour and set the sequential focus navigation
2810
- // starting point to the fragment identifier
2811
- location.replace(location.hash);
2812
- // but Firefox has a bug that sets the history state as null so we
2813
- // need to restore the history state
2824
+
2825
+ resetting_focus = true;
2826
+ location.replace(`#${id}`);
2827
+
2828
+ // if we're using hash routing, we need to restore the original hash after
2829
+ // setting the focus with `location.replace()`. Although we're calling
2830
+ // `location.replace()` again, the focus won't shift to the new hash
2831
+ // unless there's an element with the ID `/pathname#hash`, etc.
2832
+ if (app.hash) {
2833
+ location.replace(url.hash);
2834
+ }
2835
+
2836
+ // but Firefox has a bug that sets the history state to `null` so we
2837
+ // need to restore it after.
2814
2838
  // See https://bugzilla.mozilla.org/show_bug.cgi?id=1199924
2815
- history.replaceState(history_state, '', location.hash);
2839
+ history.replaceState(history_state, '', url.hash);
2816
2840
 
2817
2841
  // Scroll management has already happened earlier so we need to restore
2818
2842
  // the scroll position after setting the sequential focus navigation starting point
2819
2843
  scrollTo(x, y);
2844
+ resetting_focus = false;
2820
2845
  });
2821
2846
  } else {
2822
- // We try to mimic browsers' behaviour as closely as possible by targeting the
2823
- // first scrollable region, but unfortunately it's not a perfect match — e.g.
2824
- // shift-tabbing won't immediately cycle up from the end of the page on Chromium
2847
+ // If the ID doesn't exist, we try to mimic browsers' behaviour as closely
2848
+ // as possible by targeting the first scrollable region. Unfortunately, it's
2849
+ // not a perfect match — e.g. shift-tabbing won't immediately cycle up from
2850
+ // the end of the page on Chromium
2825
2851
  // See https://html.spec.whatwg.org/multipage/interaction.html#get-the-focusable-area
2826
2852
  const root = document.body;
2827
2853
  const tabindex = root.getAttribute('tabindex');
@@ -2961,6 +2987,23 @@ function decode_hash(url) {
2961
2987
  return new_url;
2962
2988
  }
2963
2989
 
2990
+ /**
2991
+ * @param {URL} url
2992
+ * @returns {string}
2993
+ */
2994
+ function get_id(url) {
2995
+ let id;
2996
+
2997
+ if (app.hash) {
2998
+ const [, , second] = url.hash.split('#', 3);
2999
+ id = second ?? '';
3000
+ } else {
3001
+ id = url.hash.slice(1);
3002
+ }
3003
+
3004
+ return decodeURIComponent(id);
3005
+ }
3006
+
2964
3007
  if (DEV) {
2965
3008
  // Nasty hack to silence harmless warnings the user can do nothing about
2966
3009
  const console_warn = console.warn;
@@ -145,10 +145,7 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade
145
145
  );
146
146
  }
147
147
 
148
- const response = await respond(request, options, manifest, {
149
- ...state,
150
- depth: state.depth + 1
151
- });
148
+ const response = await internal_fetch(request, options, manifest, state);
152
149
 
153
150
  const set_cookie = response.headers.get('set-cookie');
154
151
  if (set_cookie) {
@@ -195,3 +192,43 @@ function normalize_fetch_input(info, init, url) {
195
192
 
196
193
  return new Request(typeof info === 'string' ? new URL(info, url) : info, init);
197
194
  }
195
+
196
+ /**
197
+ * @param {Request} request
198
+ * @param {import('types').SSROptions} options
199
+ * @param {import('@sveltejs/kit').SSRManifest} manifest
200
+ * @param {import('types').SSRState} state
201
+ * @returns {Promise<Response>}
202
+ */
203
+ async function internal_fetch(request, options, manifest, state) {
204
+ if (request.signal) {
205
+ if (request.signal.aborted) {
206
+ throw new DOMException('The operation was aborted.', 'AbortError');
207
+ }
208
+
209
+ let remove_abort_listener = () => {};
210
+ /** @type {Promise<never>} */
211
+ const abort_promise = new Promise((_, reject) => {
212
+ const on_abort = () => {
213
+ reject(new DOMException('The operation was aborted.', 'AbortError'));
214
+ };
215
+ request.signal.addEventListener('abort', on_abort, { once: true });
216
+ remove_abort_listener = () => request.signal.removeEventListener('abort', on_abort);
217
+ });
218
+
219
+ const result = await Promise.race([
220
+ respond(request, options, manifest, {
221
+ ...state,
222
+ depth: state.depth + 1
223
+ }),
224
+ abort_promise
225
+ ]);
226
+ remove_abort_listener();
227
+ return result;
228
+ } else {
229
+ return await respond(request, options, manifest, {
230
+ ...state,
231
+ depth: state.depth + 1
232
+ });
233
+ }
234
+ }
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.21.4';
4
+ export const VERSION = '2.22.0';
@@ -169,6 +169,6 @@
169
169
  null,
170
170
  null
171
171
  ],
172
- "mappings": "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",
172
+ "mappings": "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",
173
173
  "ignoreList": []
174
174
  }