@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 +1 -1
- package/src/core/config/options.js +2 -1
- package/src/exports/public.d.ts +9 -0
- package/src/exports/vite/build/build_server.js +3 -2
- package/src/exports/vite/index.js +55 -17
- package/src/runtime/app/state/client.js +0 -36
- package/src/runtime/app/state/index.js +53 -0
- package/src/runtime/client/bundle.js +15 -0
- package/src/runtime/client/client.js +1 -9
- package/src/runtime/client/types.d.ts +19 -1
- package/src/runtime/server/page/render.js +15 -13
- package/src/types/internal.d.ts +1 -1
- package/src/utils/filesystem.js +13 -11
- package/src/version.js +1 -1
- package/types/index.d.ts +10 -1
- package/types/index.d.ts.map +2 -2
- package/src/runtime/app/state/package.json +0 -9
package/package.json
CHANGED
|
@@ -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'],
|
|
145
|
+
preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs']),
|
|
146
|
+
bundleStrategy: list(['split', 'single'])
|
|
146
147
|
}),
|
|
147
148
|
|
|
148
149
|
paths: object({
|
package/src/exports/public.d.ts
CHANGED
|
@@ -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(
|
|
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
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
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(
|
|
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 {
|
|
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 = ['
|
|
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
|
-
|
|
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(
|
|
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) {
|
package/src/types/internal.d.ts
CHANGED
package/src/utils/filesystem.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
188
|
-
}
|
|
190
|
+
if (found) return path.join(dir, found);
|
|
189
191
|
}
|
|
190
192
|
|
|
191
193
|
return null;
|
package/src/version.js
CHANGED
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
|
|
1653
|
+
app?: string;
|
|
1645
1654
|
imports: string[];
|
|
1646
1655
|
stylesheets: string[];
|
|
1647
1656
|
fonts: string[];
|
package/types/index.d.ts.map
CHANGED
|
@@ -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/
|
|
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": ";;;;;;;;;kBA2BiBA,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2BZC,cAAcA;;;;;;aAMdC,cAAcA;;;;;;;;;;;;;;;kBAeTC,aAAaA;;;;;;;;;;;;;;;;;kBAiBbC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkGPC,MAAMA;;;;;;;;;;;;;;;;;;;;;kBAqBNC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DPC,QAAQA;;;;;;;;kBAQRC,SAASA
|
|
162
|
+
"mappings": "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",
|
|
163
163
|
"ignoreList": []
|
|
164
164
|
}
|