@sveltejs/kit 2.15.1 → 2.15.3
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 +2 -2
- package/src/core/sync/write_types/index.js +1 -1
- package/src/exports/public.d.ts +31 -1
- package/src/exports/vite/build/build_service_worker.js +7 -3
- package/src/exports/vite/graph_analysis/index.js +1 -23
- package/src/exports/vite/index.js +14 -4
- package/src/exports/vite/module_ids.js +5 -5
- package/src/exports/vite/utils.js +50 -0
- package/src/runtime/app/state/index.js +3 -3
- package/src/runtime/client/client.js +97 -63
- package/src/runtime/server/page/index.js +4 -1
- package/src/utils/routing.js +1 -2
- package/src/version.js +1 -1
- package/types/index.d.ts +35 -5
- package/types/index.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltejs/kit",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.3",
|
|
4
4
|
"description": "SvelteKit is the fastest way to build Svelte apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"@types/cookie": "^0.6.0",
|
|
22
22
|
"cookie": "^0.6.0",
|
|
23
23
|
"devalue": "^5.1.0",
|
|
24
|
-
"esm-env": "^1.2.
|
|
24
|
+
"esm-env": "^1.2.2",
|
|
25
25
|
"import-meta-resolve": "^4.1.0",
|
|
26
26
|
"kleur": "^4.1.5",
|
|
27
27
|
"magic-string": "^0.30.5",
|
|
@@ -585,7 +585,7 @@ function replace_ext_with_js(file_path) {
|
|
|
585
585
|
function generate_params_type(params, outdir, config) {
|
|
586
586
|
/** @param {string} matcher */
|
|
587
587
|
const path_to_matcher = (matcher) =>
|
|
588
|
-
posixify(path.relative(outdir, path.join(config.kit.files.params, matcher)));
|
|
588
|
+
posixify(path.relative(outdir, path.join(config.kit.files.params, matcher + '.js')));
|
|
589
589
|
|
|
590
590
|
return `{ ${params
|
|
591
591
|
.map(
|
package/src/exports/public.d.ts
CHANGED
|
@@ -499,11 +499,41 @@ export interface KitConfig {
|
|
|
499
499
|
*/
|
|
500
500
|
preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
|
|
501
501
|
/**
|
|
502
|
+
* The bundle strategy option affects how your app's JavaScript and CSS files are loaded.
|
|
502
503
|
* - 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
504
|
* - If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
|
|
504
505
|
* - 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).
|
|
505
506
|
*
|
|
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).
|
|
507
|
+
* 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).
|
|
508
|
+
*
|
|
509
|
+
* If you want to inline your assets, you'll need to set Vite's [`build.assetsInlineLimit`](https://vite.dev/config/build-options.html#build-assetsinlinelimit) option to an appropriate size then import your assets through Vite.
|
|
510
|
+
*
|
|
511
|
+
* ```js
|
|
512
|
+
* /// file: vite.config.js
|
|
513
|
+
* import { sveltekit } from '@sveltejs/kit/vite';
|
|
514
|
+
* import { defineConfig } from 'vite';
|
|
515
|
+
*
|
|
516
|
+
* export default defineConfig({
|
|
517
|
+
* plugins: [sveltekit()],
|
|
518
|
+
* build: {
|
|
519
|
+
* // inline all imported assets
|
|
520
|
+
* assetsInlineLimit: Infinity
|
|
521
|
+
* }
|
|
522
|
+
* });
|
|
523
|
+
* ```
|
|
524
|
+
*
|
|
525
|
+
* ```svelte
|
|
526
|
+
* /// file: src/routes/+layout.svelte
|
|
527
|
+
* <script>
|
|
528
|
+
* // import the asset through Vite
|
|
529
|
+
* import favicon from './favicon.png';
|
|
530
|
+
* </script>
|
|
531
|
+
*
|
|
532
|
+
* <svelte:head>
|
|
533
|
+
* <!-- this asset will be inlined as a base64 URL -->
|
|
534
|
+
* <link rel="icon" href={favicon} />
|
|
535
|
+
* </svelte:head>
|
|
536
|
+
* ```
|
|
507
537
|
* @default 'split'
|
|
508
538
|
* @since 2.13.0
|
|
509
539
|
*/
|
|
@@ -2,7 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import * as vite from 'vite';
|
|
3
3
|
import { dedent } from '../../../core/sync/utils.js';
|
|
4
4
|
import { s } from '../../../utils/misc.js';
|
|
5
|
-
import { get_config_aliases, strip_virtual_prefix, get_env } from '../utils.js';
|
|
5
|
+
import { get_config_aliases, strip_virtual_prefix, get_env, normalize_id } from '../utils.js';
|
|
6
6
|
import { create_static_module } from '../../../core/env.js';
|
|
7
7
|
import { env_static_public, service_worker } from '../module_ids.js';
|
|
8
8
|
|
|
@@ -68,7 +68,8 @@ export async function build_service_worker(
|
|
|
68
68
|
name: 'service-worker-build-virtual-modules',
|
|
69
69
|
resolveId(id) {
|
|
70
70
|
if (id.startsWith('$env/') || id.startsWith('$app/') || id === '$service-worker') {
|
|
71
|
-
|
|
71
|
+
// ids with :$ don't work with reverse proxies like nginx
|
|
72
|
+
return `\0virtual:${id.substring(1)}`;
|
|
72
73
|
}
|
|
73
74
|
},
|
|
74
75
|
|
|
@@ -83,7 +84,10 @@ export async function build_service_worker(
|
|
|
83
84
|
return create_static_module('$env/static/public', env.public);
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
const
|
|
87
|
+
const normalized_cwd = vite.normalizePath(process.cwd());
|
|
88
|
+
const normalized_lib = vite.normalizePath(kit.files.lib);
|
|
89
|
+
const relative = normalize_id(id, normalized_lib, normalized_cwd);
|
|
90
|
+
const stripped = strip_virtual_prefix(relative);
|
|
87
91
|
throw new Error(
|
|
88
92
|
`Cannot import ${stripped} into service-worker code. Only the modules $service-worker and $env/static/public are available in service workers.`
|
|
89
93
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { posixify } from '../../../utils/filesystem.js';
|
|
3
|
-
import { strip_virtual_prefix } from '../utils.js';
|
|
3
|
+
import { normalize_id, strip_virtual_prefix } from '../utils.js';
|
|
4
4
|
import { app_server, env_dynamic_private, env_static_private } from '../module_ids.js';
|
|
5
5
|
|
|
6
6
|
const ILLEGAL_IMPORTS = new Set([env_dynamic_private, env_static_private, app_server]);
|
|
@@ -85,25 +85,3 @@ export function module_guard(context, { cwd, lib }) {
|
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Removes cwd/lib path from the start of the id
|
|
91
|
-
* @param {string} id
|
|
92
|
-
* @param {string} lib
|
|
93
|
-
* @param {string} cwd
|
|
94
|
-
*/
|
|
95
|
-
export function normalize_id(id, lib, cwd) {
|
|
96
|
-
if (id.startsWith(lib)) {
|
|
97
|
-
id = id.replace(lib, '$lib');
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (id.startsWith(cwd)) {
|
|
101
|
-
id = path.relative(cwd, id);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (id === app_server) {
|
|
105
|
-
return '$app/server';
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return posixify(id);
|
|
109
|
-
}
|
|
@@ -15,9 +15,9 @@ import { build_server_nodes } from './build/build_server.js';
|
|
|
15
15
|
import { build_service_worker } from './build/build_service_worker.js';
|
|
16
16
|
import { assets_base, find_deps } from './build/utils.js';
|
|
17
17
|
import { dev } from './dev/index.js';
|
|
18
|
-
import { is_illegal, module_guard
|
|
18
|
+
import { is_illegal, module_guard } from './graph_analysis/index.js';
|
|
19
19
|
import { preview } from './preview/index.js';
|
|
20
|
-
import { get_config_aliases, get_env, strip_virtual_prefix } from './utils.js';
|
|
20
|
+
import { get_config_aliases, get_env, normalize_id, strip_virtual_prefix } from './utils.js';
|
|
21
21
|
import { write_client_manifest } from '../../core/sync/write_client_manifest.js';
|
|
22
22
|
import prerender from '../../core/postbuild/prerender.js';
|
|
23
23
|
import analyse from '../../core/postbuild/analyse.js';
|
|
@@ -376,8 +376,14 @@ async function kit({ svelte_config }) {
|
|
|
376
376
|
parsed_importer.name === parsed_service_worker.name;
|
|
377
377
|
|
|
378
378
|
if (importer_is_service_worker && id !== '$service-worker' && id !== '$env/static/public') {
|
|
379
|
+
const normalized_cwd = vite.normalizePath(cwd);
|
|
380
|
+
const normalized_lib = vite.normalizePath(kit.files.lib);
|
|
379
381
|
throw new Error(
|
|
380
|
-
`Cannot import ${
|
|
382
|
+
`Cannot import ${normalize_id(
|
|
383
|
+
id,
|
|
384
|
+
normalized_lib,
|
|
385
|
+
normalized_cwd
|
|
386
|
+
)} into service-worker code. Only the modules $service-worker and $env/static/public are available in service workers.`
|
|
381
387
|
);
|
|
382
388
|
}
|
|
383
389
|
|
|
@@ -385,7 +391,11 @@ async function kit({ svelte_config }) {
|
|
|
385
391
|
}
|
|
386
392
|
|
|
387
393
|
// treat $env/static/[public|private] as virtual
|
|
388
|
-
if (id.startsWith('$env/') || id
|
|
394
|
+
if (id.startsWith('$env/') || id === '$service-worker') {
|
|
395
|
+
// ids with :$ don't work with reverse proxies like nginx
|
|
396
|
+
return `\0virtual:${id.substring(1)}`;
|
|
397
|
+
}
|
|
398
|
+
if (id.startsWith('__sveltekit/')) {
|
|
389
399
|
return `\0virtual:${id}`;
|
|
390
400
|
}
|
|
391
401
|
},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { fileURLToPath } from 'node:url';
|
|
2
2
|
|
|
3
|
-
export const env_static_private = '\0virtual
|
|
4
|
-
export const env_static_public = '\0virtual
|
|
5
|
-
export const env_dynamic_private = '\0virtual
|
|
6
|
-
export const env_dynamic_public = '\0virtual
|
|
3
|
+
export const env_static_private = '\0virtual:env/static/private';
|
|
4
|
+
export const env_static_public = '\0virtual:env/static/public';
|
|
5
|
+
export const env_dynamic_private = '\0virtual:env/dynamic/private';
|
|
6
|
+
export const env_dynamic_public = '\0virtual:env/dynamic/public';
|
|
7
7
|
|
|
8
|
-
export const service_worker = '\0virtual
|
|
8
|
+
export const service_worker = '\0virtual:service-worker';
|
|
9
9
|
|
|
10
10
|
export const sveltekit_environment = '\0virtual:__sveltekit/environment';
|
|
11
11
|
export const sveltekit_paths = '\0virtual:__sveltekit/paths';
|
|
@@ -4,6 +4,14 @@ import { posixify } from '../../utils/filesystem.js';
|
|
|
4
4
|
import { negotiate } from '../../utils/http.js';
|
|
5
5
|
import { filter_private_env, filter_public_env } from '../../utils/env.js';
|
|
6
6
|
import { escape_html } from '../../utils/escape.js';
|
|
7
|
+
import {
|
|
8
|
+
app_server,
|
|
9
|
+
env_dynamic_private,
|
|
10
|
+
env_dynamic_public,
|
|
11
|
+
env_static_private,
|
|
12
|
+
env_static_public,
|
|
13
|
+
service_worker
|
|
14
|
+
} from './module_ids.js';
|
|
7
15
|
|
|
8
16
|
/**
|
|
9
17
|
* Transforms kit.alias to a valid vite.resolve.alias array.
|
|
@@ -105,4 +113,46 @@ export function not_found(req, res, base) {
|
|
|
105
113
|
}
|
|
106
114
|
}
|
|
107
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Removes cwd/lib path from the start of the id
|
|
118
|
+
* @param {string} id
|
|
119
|
+
* @param {string} lib
|
|
120
|
+
* @param {string} cwd
|
|
121
|
+
*/
|
|
122
|
+
export function normalize_id(id, lib, cwd) {
|
|
123
|
+
if (id.startsWith(lib)) {
|
|
124
|
+
id = id.replace(lib, '$lib');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (id.startsWith(cwd)) {
|
|
128
|
+
id = path.relative(cwd, id);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (id === app_server) {
|
|
132
|
+
return '$app/server';
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (id === env_static_private) {
|
|
136
|
+
return '$env/static/private';
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (id === env_static_public) {
|
|
140
|
+
return '$env/static/public';
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (id === env_dynamic_private) {
|
|
144
|
+
return '$env/dynamic/private';
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (id === env_dynamic_public) {
|
|
148
|
+
return '$env/dynamic/public';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (id === service_worker) {
|
|
152
|
+
return '$service-worker';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return posixify(id);
|
|
156
|
+
}
|
|
157
|
+
|
|
108
158
|
export const strip_virtual_prefix = /** @param {string} id */ (id) => id.replace('\0virtual:', '');
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { BROWSER } from 'esm-env';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* A reactive object with information about the current page, serving several use cases:
|
|
14
|
+
* A read-only reactive object with information about the current page, serving several use cases:
|
|
15
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
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
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))
|
|
@@ -39,7 +39,7 @@ import { BROWSER } from 'esm-env';
|
|
|
39
39
|
export const page = BROWSER ? client_page : server_page;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* A read-only object representing an in-progress navigation, with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.
|
|
43
43
|
* Values are `null` when no navigation is occurring, or during server rendering.
|
|
44
44
|
* @type {import('@sveltejs/kit').Navigation | { from: null, to: null, type: null, willUnload: null, delta: null, complete: null }}
|
|
45
45
|
*/
|
|
@@ -47,7 +47,7 @@ export const page = BROWSER ? client_page : server_page;
|
|
|
47
47
|
export const navigating = BROWSER ? client_navigating : server_navigating;
|
|
48
48
|
|
|
49
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.
|
|
50
|
+
* A read-only 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
51
|
* @type {{ get current(): boolean; check(): Promise<boolean>; }}
|
|
52
52
|
*/
|
|
53
53
|
export const updated = BROWSER ? client_updated : server_updated;
|
|
@@ -191,14 +191,18 @@ const components = [];
|
|
|
191
191
|
/** @type {{id: string, token: {}, promise: Promise<import('./types.js').NavigationResult>} | null} */
|
|
192
192
|
let load_cache = null;
|
|
193
193
|
|
|
194
|
-
/**
|
|
195
|
-
|
|
194
|
+
/**
|
|
195
|
+
* Note on before_navigate_callbacks, on_navigate_callbacks and after_navigate_callbacks:
|
|
196
|
+
* do not re-assign as some closures keep references to these Sets
|
|
197
|
+
*/
|
|
198
|
+
/** @type {Set<(navigation: import('@sveltejs/kit').BeforeNavigate) => void>} */
|
|
199
|
+
const before_navigate_callbacks = new Set();
|
|
196
200
|
|
|
197
|
-
/** @type {
|
|
198
|
-
const on_navigate_callbacks =
|
|
201
|
+
/** @type {Set<(navigation: import('@sveltejs/kit').OnNavigate) => import('types').MaybePromise<(() => void) | void>>} */
|
|
202
|
+
const on_navigate_callbacks = new Set();
|
|
199
203
|
|
|
200
|
-
/** @type {
|
|
201
|
-
|
|
204
|
+
/** @type {Set<(navigation: import('@sveltejs/kit').AfterNavigate) => void>} */
|
|
205
|
+
const after_navigate_callbacks = new Set();
|
|
202
206
|
|
|
203
207
|
/** @type {import('./types.js').NavigationState} */
|
|
204
208
|
let current = {
|
|
@@ -520,7 +524,7 @@ function get_navigation_result_from_branch({ url, params, branch, status, error,
|
|
|
520
524
|
props: {
|
|
521
525
|
// @ts-ignore Somehow it's getting SvelteComponent and SvelteComponentDev mixed up
|
|
522
526
|
constructors: compact(branch).map((branch_node) => branch_node.node.component),
|
|
523
|
-
page
|
|
527
|
+
page: clone_page(page)
|
|
524
528
|
}
|
|
525
529
|
};
|
|
526
530
|
|
|
@@ -861,7 +865,10 @@ function preload_error({ error, url, route, params }) {
|
|
|
861
865
|
params,
|
|
862
866
|
branch: []
|
|
863
867
|
},
|
|
864
|
-
props: {
|
|
868
|
+
props: {
|
|
869
|
+
page: clone_page(page),
|
|
870
|
+
constructors: []
|
|
871
|
+
}
|
|
865
872
|
};
|
|
866
873
|
}
|
|
867
874
|
|
|
@@ -1146,32 +1153,41 @@ async function load_root_error_page({ status, error, url, route }) {
|
|
|
1146
1153
|
}
|
|
1147
1154
|
}
|
|
1148
1155
|
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1156
|
+
try {
|
|
1157
|
+
const root_layout = await load_node({
|
|
1158
|
+
loader: default_layout_loader,
|
|
1159
|
+
url,
|
|
1160
|
+
params,
|
|
1161
|
+
route,
|
|
1162
|
+
parent: () => Promise.resolve({}),
|
|
1163
|
+
server_data_node: create_data_node(server_data_node)
|
|
1164
|
+
});
|
|
1157
1165
|
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
+
/** @type {import('./types.js').BranchNode} */
|
|
1167
|
+
const root_error = {
|
|
1168
|
+
node: await default_error_loader(),
|
|
1169
|
+
loader: default_error_loader,
|
|
1170
|
+
universal: null,
|
|
1171
|
+
server: null,
|
|
1172
|
+
data: null
|
|
1173
|
+
};
|
|
1166
1174
|
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
+
return get_navigation_result_from_branch({
|
|
1176
|
+
url,
|
|
1177
|
+
params,
|
|
1178
|
+
branch: [root_layout, root_error],
|
|
1179
|
+
status,
|
|
1180
|
+
error,
|
|
1181
|
+
route: null
|
|
1182
|
+
});
|
|
1183
|
+
} catch (error) {
|
|
1184
|
+
if (error instanceof Redirect) {
|
|
1185
|
+
return _goto(new URL(error.location, location.href), {}, 0);
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
// TODO: this falls back to the server when a server exists, but what about SPA mode?
|
|
1189
|
+
throw error;
|
|
1190
|
+
}
|
|
1175
1191
|
}
|
|
1176
1192
|
|
|
1177
1193
|
/**
|
|
@@ -1460,7 +1476,7 @@ async function navigate({
|
|
|
1460
1476
|
|
|
1461
1477
|
const after_navigate = (
|
|
1462
1478
|
await Promise.all(
|
|
1463
|
-
|
|
1479
|
+
Array.from(on_navigate_callbacks, (fn) =>
|
|
1464
1480
|
fn(/** @type {import('@sveltejs/kit').OnNavigate} */ (nav.navigation))
|
|
1465
1481
|
)
|
|
1466
1482
|
)
|
|
@@ -1468,14 +1484,16 @@ async function navigate({
|
|
|
1468
1484
|
|
|
1469
1485
|
if (after_navigate.length > 0) {
|
|
1470
1486
|
function cleanup() {
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
);
|
|
1487
|
+
after_navigate.forEach((fn) => {
|
|
1488
|
+
after_navigate_callbacks.delete(fn);
|
|
1489
|
+
});
|
|
1475
1490
|
}
|
|
1476
1491
|
|
|
1477
1492
|
after_navigate.push(cleanup);
|
|
1478
|
-
|
|
1493
|
+
|
|
1494
|
+
after_navigate.forEach((fn) => {
|
|
1495
|
+
after_navigate_callbacks.add(fn);
|
|
1496
|
+
});
|
|
1479
1497
|
}
|
|
1480
1498
|
|
|
1481
1499
|
root.$set(navigation_result.props);
|
|
@@ -1677,7 +1695,7 @@ function setup_preload() {
|
|
|
1677
1695
|
}
|
|
1678
1696
|
}
|
|
1679
1697
|
|
|
1680
|
-
after_navigate_callbacks.
|
|
1698
|
+
after_navigate_callbacks.add(after_navigate);
|
|
1681
1699
|
after_navigate();
|
|
1682
1700
|
}
|
|
1683
1701
|
|
|
@@ -1706,22 +1724,21 @@ function handle_error(error, event) {
|
|
|
1706
1724
|
|
|
1707
1725
|
/**
|
|
1708
1726
|
* @template {Function} T
|
|
1709
|
-
* @param {T
|
|
1727
|
+
* @param {Set<T>} callbacks
|
|
1710
1728
|
* @param {T} callback
|
|
1711
1729
|
*/
|
|
1712
1730
|
function add_navigation_callback(callbacks, callback) {
|
|
1713
1731
|
onMount(() => {
|
|
1714
|
-
callbacks.
|
|
1732
|
+
callbacks.add(callback);
|
|
1715
1733
|
|
|
1716
1734
|
return () => {
|
|
1717
|
-
|
|
1718
|
-
callbacks.splice(i, 1);
|
|
1735
|
+
callbacks.delete(callback);
|
|
1719
1736
|
};
|
|
1720
1737
|
});
|
|
1721
1738
|
}
|
|
1722
1739
|
|
|
1723
1740
|
/**
|
|
1724
|
-
* A lifecycle function that runs the supplied `callback` when the current component mounts, and also whenever we navigate to a
|
|
1741
|
+
* A lifecycle function that runs the supplied `callback` when the current component mounts, and also whenever we navigate to a URL.
|
|
1725
1742
|
*
|
|
1726
1743
|
* `afterNavigate` must be called during a component initialization. It remains active as long as the component is mounted.
|
|
1727
1744
|
* @param {(navigation: import('@sveltejs/kit').AfterNavigate) => void} callback
|
|
@@ -1972,7 +1989,10 @@ export function pushState(url, state) {
|
|
|
1972
1989
|
has_navigated = true;
|
|
1973
1990
|
|
|
1974
1991
|
page.state = state;
|
|
1975
|
-
root.$set({
|
|
1992
|
+
root.$set({
|
|
1993
|
+
// we need to assign a new page object so that subscribers are correctly notified
|
|
1994
|
+
page: clone_page(page)
|
|
1995
|
+
});
|
|
1976
1996
|
|
|
1977
1997
|
clear_onward_history(current_history_index, current_navigation_index);
|
|
1978
1998
|
}
|
|
@@ -2013,7 +2033,9 @@ export function replaceState(url, state) {
|
|
|
2013
2033
|
history.replaceState(opts, '', resolve_url(url));
|
|
2014
2034
|
|
|
2015
2035
|
page.state = state;
|
|
2016
|
-
root.$set({
|
|
2036
|
+
root.$set({
|
|
2037
|
+
page: clone_page(page)
|
|
2038
|
+
});
|
|
2017
2039
|
}
|
|
2018
2040
|
|
|
2019
2041
|
/**
|
|
@@ -2064,7 +2086,7 @@ export async function applyAction(result) {
|
|
|
2064
2086
|
// this brings Svelte's view of the world in line with SvelteKit's
|
|
2065
2087
|
// after use:enhance reset the form....
|
|
2066
2088
|
form: null,
|
|
2067
|
-
page
|
|
2089
|
+
page: clone_page(page)
|
|
2068
2090
|
});
|
|
2069
2091
|
|
|
2070
2092
|
// ...so that setting the `form` prop takes effect and isn't ignored
|
|
@@ -2308,7 +2330,7 @@ function _start_router() {
|
|
|
2308
2330
|
const state = event.state[STATES_KEY] ?? {};
|
|
2309
2331
|
const url = new URL(event.state[PAGE_URL_KEY] ?? location.href);
|
|
2310
2332
|
const navigation_index = event.state[NAVIGATION_INDEX];
|
|
2311
|
-
const is_hash_change = strip_hash(location) === strip_hash(current.url);
|
|
2333
|
+
const is_hash_change = current.url ? strip_hash(location) === strip_hash(current.url) : false;
|
|
2312
2334
|
const shallow =
|
|
2313
2335
|
navigation_index === current_navigation_index && (has_navigated || is_hash_change);
|
|
2314
2336
|
|
|
@@ -2317,16 +2339,15 @@ function _start_router() {
|
|
|
2317
2339
|
// This happens with hash links and `pushState`/`replaceState`. The
|
|
2318
2340
|
// exception is if we haven't navigated yet, since we could have
|
|
2319
2341
|
// got here after a modal navigation then a reload
|
|
2342
|
+
if (state !== page.state) {
|
|
2343
|
+
page.state = state;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2320
2346
|
update_url(url);
|
|
2321
2347
|
|
|
2322
2348
|
scroll_positions[current_history_index] = scroll_state();
|
|
2323
2349
|
if (scroll) scrollTo(scroll.x, scroll.y);
|
|
2324
2350
|
|
|
2325
|
-
if (state !== page.state) {
|
|
2326
|
-
page.state = state;
|
|
2327
|
-
root.$set({ page });
|
|
2328
|
-
}
|
|
2329
|
-
|
|
2330
2351
|
current_history_index = history_index;
|
|
2331
2352
|
return;
|
|
2332
2353
|
}
|
|
@@ -2409,16 +2430,7 @@ function _start_router() {
|
|
|
2409
2430
|
*/
|
|
2410
2431
|
function update_url(url) {
|
|
2411
2432
|
current.url = page.url = url;
|
|
2412
|
-
stores.page.set(
|
|
2413
|
-
data: page.data,
|
|
2414
|
-
error: page.error,
|
|
2415
|
-
form: page.form,
|
|
2416
|
-
params: page.params,
|
|
2417
|
-
route: page.route,
|
|
2418
|
-
state: page.state,
|
|
2419
|
-
status: page.status,
|
|
2420
|
-
url
|
|
2421
|
-
});
|
|
2433
|
+
stores.page.set(clone_page(page));
|
|
2422
2434
|
stores.page.notify();
|
|
2423
2435
|
}
|
|
2424
2436
|
}
|
|
@@ -2759,6 +2771,28 @@ function create_navigation(current, intent, url, type) {
|
|
|
2759
2771
|
};
|
|
2760
2772
|
}
|
|
2761
2773
|
|
|
2774
|
+
/**
|
|
2775
|
+
* TODO: remove this in 3.0 when the page store is also removed
|
|
2776
|
+
*
|
|
2777
|
+
* We need to assign a new page object so that subscribers are correctly notified.
|
|
2778
|
+
* However, spreading `{ ...page }` returns an empty object so we manually
|
|
2779
|
+
* assign to each property instead.
|
|
2780
|
+
*
|
|
2781
|
+
* @param {import('@sveltejs/kit').Page} page
|
|
2782
|
+
*/
|
|
2783
|
+
function clone_page(page) {
|
|
2784
|
+
return {
|
|
2785
|
+
data: page.data,
|
|
2786
|
+
error: page.error,
|
|
2787
|
+
form: page.form,
|
|
2788
|
+
params: page.params,
|
|
2789
|
+
route: page.route,
|
|
2790
|
+
state: page.state,
|
|
2791
|
+
status: page.status,
|
|
2792
|
+
url: page.url
|
|
2793
|
+
};
|
|
2794
|
+
}
|
|
2795
|
+
|
|
2762
2796
|
if (DEV) {
|
|
2763
2797
|
// Nasty hack to silence harmless warnings the user can do nothing about
|
|
2764
2798
|
const console_warn = console.warn;
|
|
@@ -70,7 +70,10 @@ export async function render_page(event, page, options, manifest, state, resolve
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
const should_prerender_data = nodes.some(
|
|
73
|
+
const should_prerender_data = nodes.some(
|
|
74
|
+
// prerender in case of trailingSlash because the client retrieves that value from the server
|
|
75
|
+
(node) => node?.server?.load || node?.server?.trailingSlash !== undefined
|
|
76
|
+
);
|
|
74
77
|
const data_pathname = add_data_suffix(event.url.pathname);
|
|
75
78
|
|
|
76
79
|
// it's crucial that we do this before returning the non-SSR response, otherwise
|
package/src/utils/routing.js
CHANGED
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -481,11 +481,41 @@ declare module '@sveltejs/kit' {
|
|
|
481
481
|
*/
|
|
482
482
|
preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
|
|
483
483
|
/**
|
|
484
|
+
* The bundle strategy option affects how your app's JavaScript and CSS files are loaded.
|
|
484
485
|
* - 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
486
|
* - If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
|
|
486
487
|
* - 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).
|
|
487
488
|
*
|
|
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).
|
|
489
|
+
* 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).
|
|
490
|
+
*
|
|
491
|
+
* If you want to inline your assets, you'll need to set Vite's [`build.assetsInlineLimit`](https://vite.dev/config/build-options.html#build-assetsinlinelimit) option to an appropriate size then import your assets through Vite.
|
|
492
|
+
*
|
|
493
|
+
* ```js
|
|
494
|
+
* /// file: vite.config.js
|
|
495
|
+
* import { sveltekit } from '@sveltejs/kit/vite';
|
|
496
|
+
* import { defineConfig } from 'vite';
|
|
497
|
+
*
|
|
498
|
+
* export default defineConfig({
|
|
499
|
+
* plugins: [sveltekit()],
|
|
500
|
+
* build: {
|
|
501
|
+
* // inline all imported assets
|
|
502
|
+
* assetsInlineLimit: Infinity
|
|
503
|
+
* }
|
|
504
|
+
* });
|
|
505
|
+
* ```
|
|
506
|
+
*
|
|
507
|
+
* ```svelte
|
|
508
|
+
* /// file: src/routes/+layout.svelte
|
|
509
|
+
* <script>
|
|
510
|
+
* // import the asset through Vite
|
|
511
|
+
* import favicon from './favicon.png';
|
|
512
|
+
* </script>
|
|
513
|
+
*
|
|
514
|
+
* <svelte:head>
|
|
515
|
+
* <!-- this asset will be inlined as a base64 URL -->
|
|
516
|
+
* <link rel="icon" href={favicon} />
|
|
517
|
+
* </svelte:head>
|
|
518
|
+
* ```
|
|
489
519
|
* @default 'split'
|
|
490
520
|
* @since 2.13.0
|
|
491
521
|
*/
|
|
@@ -2123,7 +2153,7 @@ declare module '$app/forms' {
|
|
|
2123
2153
|
|
|
2124
2154
|
declare module '$app/navigation' {
|
|
2125
2155
|
/**
|
|
2126
|
-
* A lifecycle function that runs the supplied `callback` when the current component mounts, and also whenever we navigate to a
|
|
2156
|
+
* A lifecycle function that runs the supplied `callback` when the current component mounts, and also whenever we navigate to a URL.
|
|
2127
2157
|
*
|
|
2128
2158
|
* `afterNavigate` must be called during a component initialization. It remains active as long as the component is mounted.
|
|
2129
2159
|
* */
|
|
@@ -2293,7 +2323,7 @@ declare module '$app/server' {
|
|
|
2293
2323
|
|
|
2294
2324
|
declare module '$app/state' {
|
|
2295
2325
|
/**
|
|
2296
|
-
* A reactive object with information about the current page, serving several use cases:
|
|
2326
|
+
* A read-only reactive object with information about the current page, serving several use cases:
|
|
2297
2327
|
* - retrieving the combined `data` of all pages/layouts anywhere in your component tree (also see [loading data](https://svelte.dev/docs/kit/load))
|
|
2298
2328
|
* - retrieving the current value of the `form` prop anywhere in your component tree (also see [form actions](https://svelte.dev/docs/kit/form-actions))
|
|
2299
2329
|
* - 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))
|
|
@@ -2319,7 +2349,7 @@ declare module '$app/state' {
|
|
|
2319
2349
|
* */
|
|
2320
2350
|
export const page: import("@sveltejs/kit").Page;
|
|
2321
2351
|
/**
|
|
2322
|
-
*
|
|
2352
|
+
* A read-only object representing an in-progress navigation, with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.
|
|
2323
2353
|
* Values are `null` when no navigation is occurring, or during server rendering.
|
|
2324
2354
|
* */
|
|
2325
2355
|
export const navigating: import("@sveltejs/kit").Navigation | {
|
|
@@ -2331,7 +2361,7 @@ declare module '$app/state' {
|
|
|
2331
2361
|
complete: null;
|
|
2332
2362
|
};
|
|
2333
2363
|
/**
|
|
2334
|
-
* 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.
|
|
2364
|
+
* A read-only 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.
|
|
2335
2365
|
* */
|
|
2336
2366
|
export const updated: {
|
|
2337
2367
|
get current(): boolean;
|
package/types/index.d.ts.map
CHANGED
|
@@ -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
|
}
|