@sveltejs/kit 2.12.1 → 2.13.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.12.1",
3
+ "version": "2.13.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -142,7 +142,8 @@ const options = object(
142
142
  outDir: string('.svelte-kit'),
143
143
 
144
144
  output: object({
145
- preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs'], 'modulepreload')
145
+ preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs']),
146
+ bundleStrategy: list(['split', 'single'])
146
147
  }),
147
148
 
148
149
  paths: object({
@@ -498,6 +498,15 @@ export interface KitConfig {
498
498
  * @since 1.8.4
499
499
  */
500
500
  preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
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.
504
+ *
505
+ * 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
+ * @default 'split'
507
+ * @since 2.13.0
508
+ */
509
+ bundleStrategy?: 'split' | 'single';
501
510
  };
502
511
  paths?: {
503
512
  /**
@@ -11,8 +11,9 @@ import { normalizePath } from 'vite';
11
11
  * @param {import('vite').Manifest} server_manifest
12
12
  * @param {import('vite').Manifest | null} client_manifest
13
13
  * @param {import('vite').Rollup.OutputAsset[] | null} css
14
+ * @param {import('types').RecursiveRequired<import('types').ValidatedConfig['kit']['output']>} output_config
14
15
  */
15
- export function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css) {
16
+ export function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css, output_config) {
16
17
  mkdirp(`${out}/server/nodes`);
17
18
  mkdirp(`${out}/server/stylesheets`);
18
19
 
@@ -69,7 +70,7 @@ export function build_server_nodes(out, kit, manifest_data, server_manifest, cli
69
70
  exports.push(`export const server_id = ${s(node.server)};`);
70
71
  }
71
72
 
72
- if (client_manifest && (node.universal || node.component)) {
73
+ if (client_manifest && (node.universal || node.component) && output_config.bundleStrategy === 'split') {
73
74
  const entry = find_deps(
74
75
  client_manifest,
75
76
  `${normalizePath(kit.outDir)}/generated/client-optimized/nodes/${i}.js`,
@@ -361,6 +361,10 @@ async function kit({ svelte_config }) {
361
361
  name: 'vite-plugin-sveltekit-virtual-modules',
362
362
 
363
363
  resolveId(id, importer) {
364
+ if (id === '__sveltekit/manifest') {
365
+ return `${kit.outDir}/generated/client-optimized/app.js`;
366
+ }
367
+
364
368
  // If importing from a service-worker, only allow $service-worker & $env/static/public, but none of the other virtual modules.
365
369
  // This check won't catch transitive imports, but it will warn when the import comes from a service-worker directly.
366
370
  // Transitive imports will be caught during the build.
@@ -605,10 +609,11 @@ async function kit({ svelte_config }) {
605
609
  const name = posixify(path.join('entries/matchers', key));
606
610
  input[name] = path.resolve(file);
607
611
  });
612
+ } else if (svelte_config.kit.output.bundleStrategy !== 'split') {
613
+ input['bundle'] = `${runtime_directory}/client/bundle.js`;
608
614
  } else {
609
615
  input['entry/start'] = `${runtime_directory}/client/entry.js`;
610
616
  input['entry/app'] = `${kit.outDir}/generated/client-optimized/app.js`;
611
-
612
617
  manifest_data.nodes.forEach((node, i) => {
613
618
  if (node.component || node.universal) {
614
619
  input[`nodes/${i}`] = `${kit.outDir}/generated/client-optimized/nodes/${i}.js`;
@@ -643,7 +648,9 @@ async function kit({ svelte_config }) {
643
648
  chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[name].[hash].${ext}`,
644
649
  assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
645
650
  hoistTransitiveImports: false,
646
- sourcemapIgnoreList
651
+ sourcemapIgnoreList,
652
+ manualChunks:
653
+ svelte_config.kit.output.bundleStrategy === 'single' ? () => 'bundle' : undefined
647
654
  },
648
655
  preserveEntrySignatures: 'strict'
649
656
  },
@@ -775,7 +782,15 @@ async function kit({ svelte_config }) {
775
782
  // first, build server nodes without the client manifest so we can analyse it
776
783
  log.info('Analysing routes');
777
784
 
778
- build_server_nodes(out, kit, manifest_data, server_manifest, null, null);
785
+ build_server_nodes(
786
+ out,
787
+ kit,
788
+ manifest_data,
789
+ server_manifest,
790
+ null,
791
+ null,
792
+ svelte_config.output
793
+ );
779
794
 
780
795
  const metadata = await analyse({
781
796
  manifest_path,
@@ -825,19 +840,34 @@ async function kit({ svelte_config }) {
825
840
 
826
841
  const deps_of = /** @param {string} f */ (f) =>
827
842
  find_deps(client_manifest, posixify(path.relative('.', f)), false);
828
- const start = deps_of(`${runtime_directory}/client/entry.js`);
829
- const app = deps_of(`${kit.outDir}/generated/client-optimized/app.js`);
830
-
831
- build_data.client = {
832
- start: start.file,
833
- app: app.file,
834
- imports: [...start.imports, ...app.imports],
835
- stylesheets: [...start.stylesheets, ...app.stylesheets],
836
- fonts: [...start.fonts, ...app.fonts],
837
- uses_env_dynamic_public: output.some(
838
- (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
839
- )
840
- };
843
+
844
+ if (svelte_config.kit.output.bundleStrategy === 'split') {
845
+ const start = deps_of(`${runtime_directory}/client/entry.js`);
846
+ const app = deps_of(`${kit.outDir}/generated/client-optimized/app.js`);
847
+
848
+ build_data.client = {
849
+ start: start.file,
850
+ app: app.file,
851
+ imports: [...start.imports, ...app.imports],
852
+ stylesheets: [...start.stylesheets, ...app.stylesheets],
853
+ fonts: [...start.fonts, ...app.fonts],
854
+ uses_env_dynamic_public: output.some(
855
+ (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
856
+ )
857
+ };
858
+ } else {
859
+ const start = deps_of(`${runtime_directory}/client/bundle.js`);
860
+
861
+ build_data.client = {
862
+ start: start.file,
863
+ imports: start.imports,
864
+ stylesheets: start.stylesheets,
865
+ fonts: start.fonts,
866
+ uses_env_dynamic_public: output.some(
867
+ (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
868
+ )
869
+ };
870
+ }
841
871
 
842
872
  const css = output.filter(
843
873
  /** @type {(value: any) => value is import('vite').Rollup.OutputAsset} */
@@ -855,7 +885,15 @@ async function kit({ svelte_config }) {
855
885
  );
856
886
 
857
887
  // regenerate nodes with the client manifest...
858
- build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css);
888
+ build_server_nodes(
889
+ out,
890
+ kit,
891
+ manifest_data,
892
+ server_manifest,
893
+ client_manifest,
894
+ css,
895
+ svelte_config.kit.output
896
+ );
859
897
 
860
898
  // ...and prerender
861
899
  const { prerendered, prerender_map } = await prerender({
@@ -5,32 +5,6 @@ import {
5
5
  } from '../../client/state.svelte.js';
6
6
  import { stores } from '../../client/client.js';
7
7
 
8
- /**
9
- * A reactive object with information about the current page, serving several use cases:
10
- * - retrieving the combined `data` of all pages/layouts anywhere in your component tree (also see [loading data](https://svelte.dev/docs/kit/load))
11
- * - retrieving the current value of the `form` prop anywhere in your component tree (also see [form actions](https://svelte.dev/docs/kit/form-actions))
12
- * - retrieving the page state that was set through `goto`, `pushState` or `replaceState` (also see [goto](https://svelte.dev/docs/kit/$app-navigation#goto) and [shallow routing](https://svelte.dev/docs/kit/shallow-routing))
13
- * - retrieving metadata such as the URL you're on, the current route and its parameters, and whether or not there was an error
14
- *
15
- * ```svelte
16
- * <!--- file: +layout.svelte --->
17
- * <script>
18
- * import { page } from '$app/state';
19
- * </script>
20
- *
21
- * <p>Currently at {page.url.pathname}</p>
22
- *
23
- * {#if page.error}
24
- * <span class="red">Problem detected</span>
25
- * {:else}
26
- * <span class="small">All systems operational</span>
27
- * {/if}
28
- * ```
29
- *
30
- * On the server, values can only be read during rendering (in other words _not_ in e.g. `load` functions). In the browser, the values can be read at any time.
31
- *
32
- * @type {import('@sveltejs/kit').Page}
33
- */
34
8
  export const page = {
35
9
  get data() {
36
10
  return _page.data;
@@ -58,12 +32,6 @@ export const page = {
58
32
  }
59
33
  };
60
34
 
61
- /**
62
- * An object representing an in-progress navigation, with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.
63
- * Values are `null` when no navigation is occurring, or during server rendering.
64
- * @type {import('@sveltejs/kit').Navigation | { from: null, to: null, type: null, willUnload: null, delta: null, complete: null }}
65
- */
66
- // @ts-expect-error
67
35
  export const navigating = {
68
36
  get from() {
69
37
  return _navigating.current ? _navigating.current.from : null;
@@ -92,10 +60,6 @@ Object.defineProperty(navigating, 'current', {
92
60
  }
93
61
  });
94
62
 
95
- /**
96
- * A reactive value that's initially `false`. If [`version.pollInterval`](https://svelte.dev/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update `current` to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling.
97
- * @type {{ get current(): boolean; check(): Promise<boolean>; }}
98
- */
99
63
  export const updated = {
100
64
  get current() {
101
65
  return _updated.current;
@@ -0,0 +1,53 @@
1
+ import {
2
+ page as client_page,
3
+ navigating as client_navigating,
4
+ updated as client_updated
5
+ } from './client.js';
6
+ import {
7
+ page as server_page,
8
+ navigating as server_navigating,
9
+ updated as server_updated
10
+ } from './server.js';
11
+ import { BROWSER } from 'esm-env';
12
+
13
+ /**
14
+ * A reactive object with information about the current page, serving several use cases:
15
+ * - retrieving the combined `data` of all pages/layouts anywhere in your component tree (also see [loading data](https://svelte.dev/docs/kit/load))
16
+ * - retrieving the current value of the `form` prop anywhere in your component tree (also see [form actions](https://svelte.dev/docs/kit/form-actions))
17
+ * - retrieving the page state that was set through `goto`, `pushState` or `replaceState` (also see [goto](https://svelte.dev/docs/kit/$app-navigation#goto) and [shallow routing](https://svelte.dev/docs/kit/shallow-routing))
18
+ * - retrieving metadata such as the URL you're on, the current route and its parameters, and whether or not there was an error
19
+ *
20
+ * ```svelte
21
+ * <!--- file: +layout.svelte --->
22
+ * <script>
23
+ * import { page } from '$app/state';
24
+ * </script>
25
+ *
26
+ * <p>Currently at {page.url.pathname}</p>
27
+ *
28
+ * {#if page.error}
29
+ * <span class="red">Problem detected</span>
30
+ * {:else}
31
+ * <span class="small">All systems operational</span>
32
+ * {/if}
33
+ * ```
34
+ *
35
+ * On the server, values can only be read during rendering (in other words _not_ in e.g. `load` functions). In the browser, the values can be read at any time.
36
+ *
37
+ * @type {import('@sveltejs/kit').Page}
38
+ */
39
+ export const page = BROWSER ? client_page : server_page;
40
+
41
+ /**
42
+ * An object representing an in-progress navigation, with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.
43
+ * Values are `null` when no navigation is occurring, or during server rendering.
44
+ * @type {import('@sveltejs/kit').Navigation | { from: null, to: null, type: null, willUnload: null, delta: null, complete: null }}
45
+ */
46
+ // @ts-expect-error
47
+ export const navigating = BROWSER ? client_navigating : server_navigating;
48
+
49
+ /**
50
+ * A reactive value that's initially `false`. If [`version.pollInterval`](https://svelte.dev/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update `current` to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling.
51
+ * @type {{ get current(): boolean; check(): Promise<boolean>; }}
52
+ */
53
+ export const updated = BROWSER ? client_updated : server_updated;
@@ -0,0 +1,15 @@
1
+ /* if `bundleStrategy === 'single'`, this file is used as the entry point */
2
+
3
+ import * as kit from './entry.js';
4
+
5
+ // @ts-expect-error
6
+ import * as app from '__sveltekit/manifest';
7
+
8
+ /**
9
+ *
10
+ * @param {HTMLElement} element
11
+ * @param {import('./types.js').HydrateOptions} options
12
+ */
13
+ export function start(element, options) {
14
+ kit.start(app, element, options);
15
+ }
@@ -2354,15 +2354,7 @@ function _start_router() {
2354
2354
 
2355
2355
  /**
2356
2356
  * @param {HTMLElement} target
2357
- * @param {{
2358
- * status: number;
2359
- * error: App.Error | null;
2360
- * node_ids: number[];
2361
- * params: Record<string, string>;
2362
- * route: { id: string | null };
2363
- * data: Array<import('types').ServerDataNode | null>;
2364
- * form: Record<string, any> | null;
2365
- * }} opts
2357
+ * @param {import('./types.js').HydrateOptions} opts
2366
2358
  */
2367
2359
  async function _hydrate(
2368
2360
  target,
@@ -1,5 +1,13 @@
1
1
  import { SvelteComponent } from 'svelte';
2
- import { ClientHooks, CSRPageNode, CSRPageNodeLoader, CSRRoute, TrailingSlash, Uses } from 'types';
2
+ import {
3
+ ClientHooks,
4
+ CSRPageNode,
5
+ CSRPageNodeLoader,
6
+ CSRRoute,
7
+ ServerDataNode,
8
+ TrailingSlash,
9
+ Uses
10
+ } from 'types';
3
11
  import { Page, ParamMatcher } from '@sveltejs/kit';
4
12
 
5
13
  export interface SvelteKitApp {
@@ -88,3 +96,13 @@ export interface NavigationState {
88
96
  route: CSRRoute | null;
89
97
  url: URL;
90
98
  }
99
+
100
+ export interface HydrateOptions {
101
+ status: number;
102
+ error: App.Error | null;
103
+ node_ids: number[];
104
+ params: Record<string, string>;
105
+ route: { id: string | null };
106
+ data: Array<ServerDataNode | null>;
107
+ form: Record<string, any> | null;
108
+ }
@@ -354,7 +354,7 @@ export async function render_response({
354
354
  ${properties.join(',\n\t\t\t\t\t\t')}
355
355
  };`);
356
356
 
357
- const args = ['app', 'element'];
357
+ const args = ['element'];
358
358
 
359
359
  blocks.push('const element = document.currentScript.parentElement;');
360
360
 
@@ -392,24 +392,26 @@ export async function render_response({
392
392
  args.push(`{\n${indent}\t${hydrate.join(`,\n${indent}\t`)}\n${indent}}`);
393
393
  }
394
394
 
395
+ // `client.app` is a proxy for `bundleStrategy !== 'single'`
396
+ const boot = client.app
397
+ ? `Promise.all([
398
+ import(${s(prefixed(client.start))}),
399
+ import(${s(prefixed(client.app))})
400
+ ]).then(([kit, app]) => {
401
+ kit.start(app, ${args.join(', ')});
402
+ });`
403
+ : `import(${s(prefixed(client.start))}).then((app) => {
404
+ app.start(${args.join(', ')})
405
+ });`;
406
+
395
407
  if (load_env_eagerly) {
396
408
  blocks.push(`import(${s(`${base}/${options.app_dir}/env.js`)}).then(({ env }) => {
397
409
  ${global}.env = env;
398
410
 
399
- Promise.all([
400
- import(${s(prefixed(client.start))}),
401
- import(${s(prefixed(client.app))})
402
- ]).then(([kit, app]) => {
403
- kit.start(${args.join(', ')});
404
- });
411
+ ${boot.replace(/\n/g, '\n\t')}
405
412
  });`);
406
413
  } else {
407
- blocks.push(`Promise.all([
408
- import(${s(prefixed(client.start))}),
409
- import(${s(prefixed(client.app))})
410
- ]).then(([kit, app]) => {
411
- kit.start(${args.join(', ')});
412
- });`);
414
+ blocks.push(boot);
413
415
  }
414
416
 
415
417
  if (options.service_worker) {
@@ -69,7 +69,7 @@ export interface BuildData {
69
69
  service_worker: string | null;
70
70
  client: {
71
71
  start: string;
72
- app: string;
72
+ app?: string;
73
73
  imports: string[];
74
74
  stylesheets: string[];
75
75
  fonts: string[];
@@ -170,22 +170,24 @@ export function resolve_entry(entry) {
170
170
  if (fs.existsSync(entry)) {
171
171
  const stats = fs.statSync(entry);
172
172
  const index = path.join(entry, 'index');
173
- if (stats.isDirectory() && fs.existsSync(index)) {
173
+
174
+ if (stats.isFile()) {
175
+ return entry;
176
+ } else if (fs.existsSync(index)) {
174
177
  return resolve_entry(index);
175
178
  }
179
+ }
176
180
 
177
- return entry;
178
- } else {
179
- const dir = path.dirname(entry);
180
-
181
- if (fs.existsSync(dir)) {
182
- const base = path.basename(entry);
183
- const files = fs.readdirSync(dir);
181
+ const dir = path.dirname(entry);
184
182
 
185
- const found = files.find((file) => file.replace(/\.(js|ts)$/, '') === base);
183
+ if (fs.existsSync(dir)) {
184
+ const base = path.basename(entry);
185
+ const files = fs.readdirSync(dir);
186
+ const found = files.find((file) => {
187
+ return file.replace(/\.(js|ts)$/, '') === base && fs.statSync(path.join(dir, file)).isFile();
188
+ });
186
189
 
187
- if (found) return path.join(dir, found);
188
- }
190
+ if (found) return path.join(dir, found);
189
191
  }
190
192
 
191
193
  return null;
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.12.1';
4
+ export const VERSION = '2.13.0';
package/types/index.d.ts CHANGED
@@ -480,6 +480,15 @@ declare module '@sveltejs/kit' {
480
480
  * @since 1.8.4
481
481
  */
482
482
  preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
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.
486
+ *
487
+ * 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
+ * @default 'split'
489
+ * @since 2.13.0
490
+ */
491
+ bundleStrategy?: 'split' | 'single';
483
492
  };
484
493
  paths?: {
485
494
  /**
@@ -1641,7 +1650,7 @@ declare module '@sveltejs/kit' {
1641
1650
  service_worker: string | null;
1642
1651
  client: {
1643
1652
  start: string;
1644
- app: string;
1653
+ app?: string;
1645
1654
  imports: string[];
1646
1655
  stylesheets: string[];
1647
1656
  fonts: string[];
@@ -137,7 +137,7 @@
137
137
  "../src/runtime/client/client.js",
138
138
  "../src/runtime/app/paths/types.d.ts",
139
139
  "../src/runtime/app/server/index.js",
140
- "../src/runtime/app/state/client.js",
140
+ "../src/runtime/app/state/index.js",
141
141
  "../src/runtime/app/stores.js"
142
142
  ],
143
143
  "sourcesContent": [
@@ -159,6 +159,6 @@
159
159
  null,
160
160
  null
161
161
  ],
162
- "mappings": "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",
162
+ "mappings": "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",
163
163
  "ignoreList": []
164
164
  }
@@ -1,9 +0,0 @@
1
- {
2
- "type": "module",
3
- "exports": {
4
- ".": {
5
- "browser": "./client.js",
6
- "default": "./server.js"
7
- }
8
- }
9
- }