@sveltejs/kit 2.14.1 → 2.15.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.14.1",
3
+ "version": "2.15.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -143,7 +143,7 @@ const options = object(
143
143
 
144
144
  output: object({
145
145
  preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs']),
146
- bundleStrategy: list(['split', 'single'])
146
+ bundleStrategy: list(['split', 'single', 'inline'])
147
147
  }),
148
148
 
149
149
  paths: object({
@@ -499,14 +499,15 @@ export interface KitConfig {
499
499
  */
500
500
  preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
501
501
  /**
502
- * If `'split'`, splits the app up into multiple .js/.css files so that they are loaded lazily as the user navigates around the app. This is the default, and is recommended for most scenarios.
503
- * If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
502
+ * - If `'split'`, splits the app up into multiple .js/.css files so that they are loaded lazily as the user navigates around the app. This is the default, and is recommended for most scenarios.
503
+ * - If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
504
+ * - If `'inline'`, inlines all JavaScript and CSS of the entire app into the HTML. The result is usable without a server (i.e. you can just open the file in your browser).
504
505
  *
505
506
  * When using `'split'`, you can also adjust the bundling behaviour by setting [`output.experimentalMinChunkSize`](https://rollupjs.org/configuration-options/#output-experimentalminchunksize) and [`output.manualChunks`](https://rollupjs.org/configuration-options/#output-manualchunks)inside your Vite config's [`build.rollupOptions`](https://vite.dev/config/build-options.html#build-rollupoptions).
506
507
  * @default 'split'
507
508
  * @since 2.13.0
508
509
  */
509
- bundleStrategy?: 'split' | 'single';
510
+ bundleStrategy?: 'split' | 'single' | 'inline';
510
511
  };
511
512
  paths?: {
512
513
  /**
@@ -631,26 +631,30 @@ async function kit({ svelte_config }) {
631
631
  const client_base =
632
632
  kit.paths.relative !== false || kit.paths.assets ? './' : kit.paths.base || '/';
633
633
 
634
+ const inline = !ssr && svelte_config.kit.output.bundleStrategy === 'inline';
635
+ const split = ssr || svelte_config.kit.output.bundleStrategy === 'split';
636
+
634
637
  new_config = {
635
638
  base: ssr ? assets_base(kit) : client_base,
636
639
  build: {
637
640
  copyPublicDir: !ssr,
638
- cssCodeSplit: true,
641
+ cssCodeSplit: svelte_config.kit.output.bundleStrategy !== 'inline',
639
642
  cssMinify: initial_config.build?.minify == null ? true : !!initial_config.build.minify,
640
643
  // don't use the default name to avoid collisions with 'static/manifest.json'
641
644
  manifest: '.vite/manifest.json', // TODO: remove this after bumping peer dep to vite 5
642
645
  outDir: `${out}/${ssr ? 'server' : 'client'}`,
643
646
  rollupOptions: {
644
- input,
647
+ input: inline ? input['bundle'] : input,
645
648
  output: {
646
- format: 'esm',
649
+ format: inline ? 'iife' : 'esm',
650
+ name: `__sveltekit_${version_hash}.app`,
647
651
  entryFileNames: ssr ? '[name].js' : `${prefix}/[name].[hash].${ext}`,
648
652
  chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[name].[hash].${ext}`,
649
653
  assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
650
654
  hoistTransitiveImports: false,
651
655
  sourcemapIgnoreList,
652
- manualChunks:
653
- svelte_config.kit.output.bundleStrategy === 'single' ? () => 'bundle' : undefined
656
+ manualChunks: split ? undefined : () => 'bundle',
657
+ inlineDynamicImports: false
654
658
  },
655
659
  preserveEntrySignatures: 'strict'
656
660
  },
@@ -868,6 +872,22 @@ async function kit({ svelte_config }) {
868
872
  (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
869
873
  )
870
874
  };
875
+
876
+ if (svelte_config.kit.output.bundleStrategy === 'inline') {
877
+ const style = /** @type {import('rollup').OutputAsset} */ (
878
+ output.find(
879
+ (chunk) =>
880
+ chunk.type === 'asset' &&
881
+ chunk.names.length === 1 &&
882
+ chunk.names[0] === 'style.css'
883
+ )
884
+ );
885
+
886
+ build_data.client.inline = {
887
+ script: read(`${out}/client/${start.file}`),
888
+ style: /** @type {string | undefined} */ (style?.source)
889
+ };
890
+ }
871
891
  }
872
892
 
873
893
  const css = output.filter(
@@ -1,4 +1,4 @@
1
- /* if `bundleStrategy === 'single'`, this file is used as the entry point */
1
+ /* if `bundleStrategy` is 'single' or 'inline', this file is used as the entry point */
2
2
 
3
3
  import * as kit from './entry.js';
4
4
 
@@ -303,12 +303,25 @@ export function create_updated_store() {
303
303
  * - uses hash router and pathname is more than base
304
304
  * @param {URL} url
305
305
  * @param {string} base
306
- * @param {boolean} has_pathname_in_hash
306
+ * @param {boolean} hash_routing
307
307
  */
308
- export function is_external_url(url, base, has_pathname_in_hash) {
309
- return (
310
- url.origin !== origin ||
311
- !url.pathname.startsWith(base) ||
312
- (has_pathname_in_hash && url.pathname !== (base || '/'))
313
- );
308
+ export function is_external_url(url, base, hash_routing) {
309
+ if (url.origin !== origin || !url.pathname.startsWith(base)) {
310
+ return true;
311
+ }
312
+
313
+ if (hash_routing) {
314
+ if (url.pathname === base + '/') {
315
+ return false;
316
+ }
317
+
318
+ // be lenient if serving from filesystem
319
+ if (url.protocol === 'file:' && url.pathname.replace(/\/[^/]+\.html?$/, '') === base) {
320
+ return false;
321
+ }
322
+
323
+ return true;
324
+ }
325
+
326
+ return false;
314
327
  }
@@ -95,16 +95,21 @@ export async function render_response({
95
95
  let base_expression = s(paths.base);
96
96
 
97
97
  // if appropriate, use relative paths for greater portability
98
- if (paths.relative && !state.prerendering?.fallback) {
99
- const segments = event.url.pathname.slice(paths.base.length).split('/').slice(2);
98
+ if (paths.relative) {
99
+ if (!state.prerendering?.fallback) {
100
+ const segments = event.url.pathname.slice(paths.base.length).split('/').slice(2);
100
101
 
101
- base = segments.map(() => '..').join('/') || '.';
102
+ base = segments.map(() => '..').join('/') || '.';
102
103
 
103
- // resolve e.g. '../..' against current location, then remove trailing slash
104
- base_expression = `new URL(${s(base)}, location).pathname.slice(0, -1)`;
104
+ // resolve e.g. '../..' against current location, then remove trailing slash
105
+ base_expression = `new URL(${s(base)}, location).pathname.slice(0, -1)`;
105
106
 
106
- if (!paths.assets || (paths.assets[0] === '/' && paths.assets !== SVELTE_KIT_ASSETS)) {
107
- assets = base;
107
+ if (!paths.assets || (paths.assets[0] === '/' && paths.assets !== SVELTE_KIT_ASSETS)) {
108
+ assets = base;
109
+ }
110
+ } else if (options.hash_routing) {
111
+ // we have to assume that we're in the right place
112
+ base_expression = "new URL('.', location).pathname.slice(0, -1)";
108
113
  }
109
114
  }
110
115
 
@@ -197,7 +202,7 @@ export async function render_response({
197
202
  for (const url of node.stylesheets) stylesheets.add(url);
198
203
  for (const url of node.fonts) fonts.add(url);
199
204
 
200
- if (node.inline_styles) {
205
+ if (node.inline_styles && !client.inline) {
201
206
  Object.entries(await node.inline_styles()).forEach(([k, v]) => inline_styles.set(k, v));
202
207
  }
203
208
  }
@@ -223,6 +228,10 @@ export async function render_response({
223
228
  return `${assets}/${path}`;
224
229
  };
225
230
 
231
+ if (client.inline?.style) {
232
+ head += `\n\t<style>${client.inline.style}</style>`;
233
+ }
234
+
226
235
  if (inline_styles.size > 0) {
227
236
  const content = Array.from(inline_styles.values()).join('\n');
228
237
 
@@ -293,17 +302,19 @@ export async function render_response({
293
302
  modulepreloads.add(`${options.app_dir}/env.js`);
294
303
  }
295
304
 
296
- const included_modulepreloads = Array.from(modulepreloads, (dep) => prefixed(dep)).filter(
297
- (path) => resolve_opts.preload({ type: 'js', path })
298
- );
299
-
300
- for (const path of included_modulepreloads) {
301
- // see the kit.output.preloadStrategy option for details on why we have multiple options here
302
- link_header_preloads.add(`<${encodeURI(path)}>; rel="modulepreload"; nopush`);
303
- if (options.preload_strategy !== 'modulepreload') {
304
- head += `\n\t\t<link rel="preload" as="script" crossorigin="anonymous" href="${path}">`;
305
- } else if (state.prerendering) {
306
- head += `\n\t\t<link rel="modulepreload" href="${path}">`;
305
+ if (!client.inline) {
306
+ const included_modulepreloads = Array.from(modulepreloads, (dep) => prefixed(dep)).filter(
307
+ (path) => resolve_opts.preload({ type: 'js', path })
308
+ );
309
+
310
+ for (const path of included_modulepreloads) {
311
+ // see the kit.output.preloadStrategy option for details on why we have multiple options here
312
+ link_header_preloads.add(`<${encodeURI(path)}>; rel="modulepreload"; nopush`);
313
+ if (options.preload_strategy !== 'modulepreload') {
314
+ head += `\n\t\t<link rel="preload" as="script" crossorigin="anonymous" href="${path}">`;
315
+ } else if (state.prerendering) {
316
+ head += `\n\t\t<link rel="modulepreload" href="${path}">`;
317
+ }
307
318
  }
308
319
  }
309
320
 
@@ -392,15 +403,19 @@ export async function render_response({
392
403
  args.push(`{\n${indent}\t${hydrate.join(`,\n${indent}\t`)}\n${indent}}`);
393
404
  }
394
405
 
395
- // `client.app` is a proxy for `bundleStrategy !== 'single'`
396
- const boot = client.app
397
- ? `Promise.all([
406
+ // `client.app` is a proxy for `bundleStrategy === 'split'`
407
+ const boot = client.inline
408
+ ? `${client.inline.script}
409
+
410
+ __sveltekit_${options.version_hash}.app.start(${args.join(', ')});`
411
+ : client.app
412
+ ? `Promise.all([
398
413
  import(${s(prefixed(client.start))}),
399
414
  import(${s(prefixed(client.app))})
400
415
  ]).then(([kit, app]) => {
401
416
  kit.start(app, ${args.join(', ')});
402
417
  });`
403
- : `import(${s(prefixed(client.start))}).then((app) => {
418
+ : `import(${s(prefixed(client.start))}).then((app) => {
404
419
  app.start(${args.join(', ')})
405
420
  });`;
406
421
 
@@ -74,6 +74,10 @@ export interface BuildData {
74
74
  stylesheets: string[];
75
75
  fonts: string[];
76
76
  uses_env_dynamic_public: boolean;
77
+ inline?: {
78
+ script: string;
79
+ style: string | undefined;
80
+ };
77
81
  } | null;
78
82
  server_manifest: import('vite').Manifest;
79
83
  }
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.14.1';
4
+ export const VERSION = '2.15.0';
package/types/index.d.ts CHANGED
@@ -481,14 +481,15 @@ declare module '@sveltejs/kit' {
481
481
  */
482
482
  preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
483
483
  /**
484
- * If `'split'`, splits the app up into multiple .js/.css files so that they are loaded lazily as the user navigates around the app. This is the default, and is recommended for most scenarios.
485
- * If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
484
+ * - If `'split'`, splits the app up into multiple .js/.css files so that they are loaded lazily as the user navigates around the app. This is the default, and is recommended for most scenarios.
485
+ * - If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
486
+ * - If `'inline'`, inlines all JavaScript and CSS of the entire app into the HTML. The result is usable without a server (i.e. you can just open the file in your browser).
486
487
  *
487
488
  * When using `'split'`, you can also adjust the bundling behaviour by setting [`output.experimentalMinChunkSize`](https://rollupjs.org/configuration-options/#output-experimentalminchunksize) and [`output.manualChunks`](https://rollupjs.org/configuration-options/#output-manualchunks)inside your Vite config's [`build.rollupOptions`](https://vite.dev/config/build-options.html#build-rollupoptions).
488
489
  * @default 'split'
489
490
  * @since 2.13.0
490
491
  */
491
- bundleStrategy?: 'split' | 'single';
492
+ bundleStrategy?: 'split' | 'single' | 'inline';
492
493
  };
493
494
  paths?: {
494
495
  /**
@@ -1667,6 +1668,10 @@ declare module '@sveltejs/kit' {
1667
1668
  stylesheets: string[];
1668
1669
  fonts: string[];
1669
1670
  uses_env_dynamic_public: boolean;
1671
+ inline?: {
1672
+ script: string;
1673
+ style: string | undefined;
1674
+ };
1670
1675
  } | null;
1671
1676
  server_manifest: import('vite').Manifest;
1672
1677
  }
@@ -159,6 +159,6 @@
159
159
  null,
160
160
  null
161
161
  ],
162
- "mappings": "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",
162
+ "mappings": ";;;;;;;;;kBA2BiBA,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2BZC,cAAcA;;;;;;aAMdC,cAAcA;;;;;;;;;;;;;;;kBAeTC,aAAaA;;;;;;;;;;;;;;;;;kBAiBbC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkGPC,MAAMA;;;;;;;;;;;;;;;;;;;;;kBAqBNC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DPC,QAAQA;;;;;;;;kBAQRC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6adC,MAAMA;;;;;;;;;;;aAWNC,iBAAiBA;;;;;;;;;;;;;aAajBC,iBAAiBA;;;;;;;;;;aAUjBC,WAAWA;;;;;;;;;;aAUXC,UAAUA;;;;;;aAMVC,UAAUA;;;;;;aAMVC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;aA0BPC,SAASA;;;;;kBAKJC,WAAWA;;;;;;;;;;;;aAYhBC,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;;;;;;;;;;;;kBCr2CXC,SAASA;;;;;;;;;;kBAqBTC,QAAQA;;;;;;;aD62CTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6BTC,QAAQA;;;;WEz5CRC,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;WCxLRC,KAAKA;;;;;;WAcLC,SAASA;;;;;;;;;;;;;;;;;;;;;WAqFTC,YAAYA;;;;;;;;;;;;WAYZC,QAAQA;;;;;;;;;;;;;;MAyBbC,iBAAiBA;;;;;;;;WAUZC,UAAUA;;;;;;;;;;;;;WAaVC,SAASA;;;;;;;;;;;;;;;;;;;;;;;WAsGTC,YAAYA;;;;;;;;;;;;;;;;MAgBjBC,kBAAkBA;;WAEbC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsCZC,aAAaA;;WA4BRC,eAAeA;;;;;;MAMpBC,uBAAuBA;;MAEvBC,WAAWA;;;;;;;;WAQNC,QAAQA;;;;;;;;;MA2CbC,eAAeA;;;;;MAKfC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC5XdC,WAAWA;;;;;;;;;;;iBAcXC,QAAQA;;;;;iBAiBRC,UAAUA;;;;;;iBASVC,IAAIA;;;;;;iBA8BJC,IAAIA;;;;;;;;;;;;;;;;iBAkDJC,eAAeA;;;cCnMlBC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCoEJC,QAAQA;;;;;;iBCoCFC,UAAUA;;;;;;iBAkCVC,WAAWA;;;;;iBAgFjBC,oBAAoBA;;;;;;;;;;;iBC3MpBC,gBAAgBA;;;;;;;;;iBC+GVC,SAASA;;;;;;;;;cC9HlBC,OAAOA;;;;;cAKPC,GAAGA;;;;;cAKHC,QAAQA;;;;;cAKRC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;iBCWJC,WAAWA;;;;;;;;;;;;;;;;;;;;;iBA2CXC,OAAOA;;;;;;;iBCk6DDC,WAAWA;;;;;;;;;;;iBAzSjBC,aAAaA;;;;;;;;;;;;iBAiBbC,cAAcA;;;;;;;;;;iBAedC,UAAUA;;;;;iBASVC,qBAAqBA;;;;;;;;;;iBA6BrBC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;iBAsCJC,UAAUA;;;;iBAmBVC,aAAaA;;;;;;;;;;;;iBAqBPC,WAAWA;;;;;;;;;;;;;;;;;;iBAoCjBC,WAAWA;;;;;iBA6BXC,SAASA;;;;;iBA4CTC,YAAYA;MVvyDhB3D,YAAYA;;;;;;;;;;;YWtJb4D,IAAIA;;;;;;;YAOJC,MAAMA;;;;;;;;;;;;;;;;;iBAiBDC,YAAYA;;;;;;;;;;;;;;;;;;iBCVZC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCmBPC,IAAIA;;;;;cAQJC,UAAUA;;;;;;;;;;;cAMVC,OAAOA;;;;;;;;;iBC1CPC,SAASA;;;;;;;;;;;;;;;cAyBTH,IAAIA;;;;;;;;;;cAiBJC,UAAUA;;;;;;;;cAeVC,OAAOA",
163
163
  "ignoreList": []
164
164
  }