@sveltejs/kit 2.17.2 → 2.17.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 +1 -1
- package/src/exports/vite/build/build_server.js +37 -30
- package/src/exports/vite/dev/index.js +1 -0
- package/src/exports/vite/index.js +14 -4
- package/src/runtime/client/client.js +6 -3
- package/src/runtime/client/entry.js +2 -2
- package/src/runtime/client/utils.js +37 -0
- package/src/runtime/server/page/load_data.js +1 -1
- package/src/runtime/server/page/server_routing.js +30 -1
- package/src/types/internal.d.ts +6 -0
- package/src/version.js +1 -1
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -25,45 +25,52 @@ export function build_server_nodes(out, kit, manifest_data, server_manifest, cli
|
|
|
25
25
|
/** @type {Set<string>} */
|
|
26
26
|
const client_stylesheets = new Set();
|
|
27
27
|
for (const key in client_manifest) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
28
|
+
client_manifest[key].css?.forEach((filename) => {
|
|
29
|
+
client_stylesheets.add(filename);
|
|
30
|
+
});
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
/** @type {Map<number, string>} */
|
|
33
|
+
/** @type {Map<number, string[]>} */
|
|
35
34
|
const server_stylesheets = new Map();
|
|
35
|
+
manifest_data.nodes.forEach((node, i) => {
|
|
36
|
+
if (!node.component || !server_manifest[node.component]) return;
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
const { stylesheets } = find_deps(server_manifest, node.component, false);
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (node.component && server_stylesheet) {
|
|
42
|
-
server_stylesheets.set(i, server_stylesheet);
|
|
40
|
+
if (stylesheets.length) {
|
|
41
|
+
server_stylesheets.set(i, stylesheets);
|
|
43
42
|
}
|
|
44
43
|
});
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
45
|
+
for (const asset of css) {
|
|
46
|
+
// ignore dynamically imported stylesheets since we don't need to inline those
|
|
47
|
+
if (!client_stylesheets.has(asset.fileName) || asset.source.length >= kit.inlineStyleThreshold) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// We know that the names for entry points are numbers.
|
|
52
|
+
const [index] = basename(asset.fileName).split('.');
|
|
53
|
+
// There can also be other CSS files from shared components
|
|
54
|
+
// for example, which we need to ignore here.
|
|
55
|
+
if (isNaN(+index)) continue;
|
|
56
|
+
|
|
57
|
+
const file = `${out}/server/stylesheets/${index}.js`;
|
|
58
|
+
|
|
59
|
+
// we need to inline the server stylesheet instead of the client one
|
|
60
|
+
// so that asset paths are correct on document load
|
|
61
|
+
const filenames = server_stylesheets.get(+index);
|
|
62
|
+
|
|
63
|
+
if (!filenames) {
|
|
64
|
+
throw new Error('This should never happen, but if it does, it means we failed to find the server stylesheet for a node.');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const sources = filenames.map((filename) => {
|
|
68
|
+
return fs.readFileSync(`${out}/server/${filename}`, 'utf-8');
|
|
66
69
|
});
|
|
70
|
+
fs.writeFileSync(file, `// ${filenames.join(', ')}\nexport default ${s(sources.join('\n'))};`);
|
|
71
|
+
|
|
72
|
+
stylesheet_lookup.set(asset.fileName, index);
|
|
73
|
+
}
|
|
67
74
|
}
|
|
68
75
|
|
|
69
76
|
manifest_data.nodes.forEach((node, i) => {
|
|
@@ -145,6 +145,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
145
145
|
return `${svelte_config.kit.paths.base}${to_fs(svelte_config.kit.outDir)}/generated/client/nodes/${i}.js`;
|
|
146
146
|
}
|
|
147
147
|
}),
|
|
148
|
+
// `css` is not necessary in dev, as the JS file from `nodes` will reference the CSS file
|
|
148
149
|
routes:
|
|
149
150
|
svelte_config.kit.router.resolution === 'client'
|
|
150
151
|
? undefined
|
|
@@ -866,8 +866,12 @@ Tips:
|
|
|
866
866
|
/** @type {import('vite').Manifest} */
|
|
867
867
|
const client_manifest = JSON.parse(read(`${out}/client/${vite_config.build.manifest}`));
|
|
868
868
|
|
|
869
|
-
|
|
870
|
-
|
|
869
|
+
/**
|
|
870
|
+
* @param {string} entry
|
|
871
|
+
* @param {boolean} [add_dynamic_css]
|
|
872
|
+
*/
|
|
873
|
+
const deps_of = (entry, add_dynamic_css = false) =>
|
|
874
|
+
find_deps(client_manifest, posixify(path.relative('.', entry)), add_dynamic_css);
|
|
871
875
|
|
|
872
876
|
if (svelte_config.kit.output.bundleStrategy === 'split') {
|
|
873
877
|
const start = deps_of(`${runtime_directory}/client/entry.js`);
|
|
@@ -888,14 +892,20 @@ Tips:
|
|
|
888
892
|
// similar to that on the client, with as much information computed upfront so that we
|
|
889
893
|
// don't need to include any code of the actual routes in the server bundle.
|
|
890
894
|
if (svelte_config.kit.router.resolution === 'server') {
|
|
891
|
-
|
|
895
|
+
const nodes = manifest_data.nodes.map((node, i) => {
|
|
892
896
|
if (node.component || node.universal) {
|
|
893
|
-
|
|
897
|
+
const entry = `${kit.outDir}/generated/client-optimized/nodes/${i}.js`;
|
|
898
|
+
const deps = deps_of(entry, true);
|
|
899
|
+
const file = resolve_symlinks(
|
|
894
900
|
client_manifest,
|
|
895
901
|
`${kit.outDir}/generated/client-optimized/nodes/${i}.js`
|
|
896
902
|
).chunk.file;
|
|
903
|
+
|
|
904
|
+
return { file, css: deps.stylesheets };
|
|
897
905
|
}
|
|
898
906
|
});
|
|
907
|
+
build_data.client.nodes = nodes.map((node) => node?.file);
|
|
908
|
+
build_data.client.css = nodes.map((node) => node?.css);
|
|
899
909
|
|
|
900
910
|
build_data.client.routes = compact(
|
|
901
911
|
manifest_data.routes.map((route) => {
|
|
@@ -19,7 +19,8 @@ import {
|
|
|
19
19
|
origin,
|
|
20
20
|
scroll_state,
|
|
21
21
|
notifiable_store,
|
|
22
|
-
create_updated_store
|
|
22
|
+
create_updated_store,
|
|
23
|
+
load_css
|
|
23
24
|
} from './utils.js';
|
|
24
25
|
import { base } from '__sveltekit/paths';
|
|
25
26
|
import * as devalue from 'devalue';
|
|
@@ -41,6 +42,8 @@ import { writable } from 'svelte/store';
|
|
|
41
42
|
import { page, update, navigating } from './state.svelte.js';
|
|
42
43
|
import { add_data_suffix, add_resolution_suffix } from '../pathname.js';
|
|
43
44
|
|
|
45
|
+
export { load_css };
|
|
46
|
+
|
|
44
47
|
const ICON_REL_ATTRIBUTES = new Set(['icon', 'shortcut icon', 'apple-touch-icon']);
|
|
45
48
|
|
|
46
49
|
let errored = false;
|
|
@@ -1677,8 +1680,6 @@ function setup_preload() {
|
|
|
1677
1680
|
const a = find_anchor(element, container);
|
|
1678
1681
|
if (!a || a === current_a) return;
|
|
1679
1682
|
|
|
1680
|
-
current_a = a;
|
|
1681
|
-
|
|
1682
1683
|
const { url, external, download } = get_link_info(a, base, app.hash);
|
|
1683
1684
|
if (external || download) return;
|
|
1684
1685
|
|
|
@@ -1689,6 +1690,7 @@ function setup_preload() {
|
|
|
1689
1690
|
|
|
1690
1691
|
if (!options.reload && !same_url) {
|
|
1691
1692
|
if (priority <= options.preload_data) {
|
|
1693
|
+
current_a = a;
|
|
1692
1694
|
const intent = await get_navigation_intent(url, false);
|
|
1693
1695
|
if (intent) {
|
|
1694
1696
|
if (DEV) {
|
|
@@ -1707,6 +1709,7 @@ function setup_preload() {
|
|
|
1707
1709
|
}
|
|
1708
1710
|
}
|
|
1709
1711
|
} else if (priority <= options.preload_code) {
|
|
1712
|
+
current_a = a;
|
|
1710
1713
|
void _preload_code(/** @type {URL} */ (url));
|
|
1711
1714
|
}
|
|
1712
1715
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// we expose this as a separate entry point (rather than treating client.js as the entry point)
|
|
2
|
-
// so that everything other than `start` can be treeshaken
|
|
3
|
-
export { start } from './client.js';
|
|
2
|
+
// so that everything other than `start`/`load_css` can be treeshaken
|
|
3
|
+
export { start, load_css } from './client.js';
|
|
@@ -331,3 +331,40 @@ export function is_external_url(url, base, hash_routing) {
|
|
|
331
331
|
|
|
332
332
|
return false;
|
|
333
333
|
}
|
|
334
|
+
|
|
335
|
+
/** @type {Record<string, boolean>} */
|
|
336
|
+
const seen = {};
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Used for server-side resolution, to replicate Vite's CSS loading behaviour in production.
|
|
340
|
+
*
|
|
341
|
+
* Closely modelled after https://github.com/vitejs/vite/blob/3dd12f4724130fdf8ba44c6d3252ebdff407fd47/packages/vite/src/node/plugins/importAnalysisBuild.ts#L214
|
|
342
|
+
* (which ideally we could just use directly, but it's not exported)
|
|
343
|
+
* @param {string[]} deps
|
|
344
|
+
*/
|
|
345
|
+
export function load_css(deps) {
|
|
346
|
+
if (__SVELTEKIT_CLIENT_ROUTING__) return;
|
|
347
|
+
|
|
348
|
+
const csp_nonce_meta = /** @type {HTMLMetaElement} */ (
|
|
349
|
+
document.querySelector('meta[property=csp-nonce]')
|
|
350
|
+
);
|
|
351
|
+
const csp_nonce = csp_nonce_meta?.nonce || csp_nonce_meta?.getAttribute('nonce');
|
|
352
|
+
|
|
353
|
+
for (const dep of deps) {
|
|
354
|
+
if (dep in seen) continue;
|
|
355
|
+
seen[dep] = true;
|
|
356
|
+
|
|
357
|
+
if (document.querySelector(`link[href="${dep}"][rel="stylesheet"]`)) {
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const link = document.createElement('link');
|
|
362
|
+
link.rel = 'stylesheet';
|
|
363
|
+
link.crossOrigin = '';
|
|
364
|
+
link.href = dep;
|
|
365
|
+
if (csp_nonce) {
|
|
366
|
+
link.setAttribute('nonce', csp_nonce);
|
|
367
|
+
}
|
|
368
|
+
document.head.appendChild(link);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
@@ -242,7 +242,7 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts)
|
|
|
242
242
|
dependency = { response, body: null };
|
|
243
243
|
state.prerendering.dependencies.set(url.pathname, dependency);
|
|
244
244
|
}
|
|
245
|
-
} else {
|
|
245
|
+
} else if (url.protocol === 'https:' || url.protocol === 'http:') {
|
|
246
246
|
// simulate CORS errors and "no access to body in no-cors mode" server-side for consistency with client-side behaviour
|
|
247
247
|
const mode = input instanceof Request ? input.mode : (init?.mode ?? 'cors');
|
|
248
248
|
if (mode === 'no-cors') {
|
|
@@ -105,10 +105,39 @@ export function create_server_routing_response(route, params, url, manifest) {
|
|
|
105
105
|
|
|
106
106
|
if (route) {
|
|
107
107
|
const csr_route = generate_route_object(route, url, manifest);
|
|
108
|
-
const body =
|
|
108
|
+
const body = `${create_css_import(route, url, manifest)}\nexport const route = ${csr_route}; export const params = ${JSON.stringify(params)};`;
|
|
109
109
|
|
|
110
110
|
return { response: text(body, { headers }), body };
|
|
111
111
|
} else {
|
|
112
112
|
return { response: text('', { headers }), body: '' };
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* This function generates the client-side import for the CSS files that are
|
|
118
|
+
* associated with the current route. Vite takes care of that when using
|
|
119
|
+
* client-side route resolution, but for server-side resolution it does
|
|
120
|
+
* not know about the CSS files automatically.
|
|
121
|
+
*
|
|
122
|
+
* @param {import('types').SSRClientRoute} route
|
|
123
|
+
* @param {URL} url
|
|
124
|
+
* @param {import('@sveltejs/kit').SSRManifest} manifest
|
|
125
|
+
* @returns {string}
|
|
126
|
+
*/
|
|
127
|
+
function create_css_import(route, url, manifest) {
|
|
128
|
+
const { errors, layouts, leaf } = route;
|
|
129
|
+
|
|
130
|
+
let css = '';
|
|
131
|
+
|
|
132
|
+
for (const node of [...errors, ...layouts.map((l) => l?.[1]), leaf[1]]) {
|
|
133
|
+
if (typeof node !== 'number') continue;
|
|
134
|
+
const node_css = manifest._.client.css?.[node];
|
|
135
|
+
for (const css_path of node_css ?? []) {
|
|
136
|
+
css += `'${assets || base}/${css_path}',`;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (!css) return '';
|
|
141
|
+
|
|
142
|
+
return `${create_client_import(/** @type {string} */ (manifest._.client.start), url)}.then(x => x.load_css([${css}]));`;
|
|
143
|
+
}
|
package/src/types/internal.d.ts
CHANGED
|
@@ -80,6 +80,12 @@ export interface BuildData {
|
|
|
80
80
|
* Only set in case of `router.resolution === 'server'`.
|
|
81
81
|
*/
|
|
82
82
|
nodes?: (string | undefined)[];
|
|
83
|
+
/**
|
|
84
|
+
* CSS files referenced in the entry points of the layouts/pages.
|
|
85
|
+
* An entry is undefined if the layout/page has no component or universal file (i.e. only has a `.server.js` file) or if has no CSS.
|
|
86
|
+
* Only set in case of `router.resolution === 'server'`.
|
|
87
|
+
*/
|
|
88
|
+
css?: (string[] | undefined)[];
|
|
83
89
|
/**
|
|
84
90
|
* Contains the client route manifest in a form suitable for the server which is used for server side route resolution.
|
|
85
91
|
* Notably, it contains all routes, regardless of whether they are prerendered or not (those are missing in the optimized server route manifest).
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1727,6 +1727,12 @@ declare module '@sveltejs/kit' {
|
|
|
1727
1727
|
* Only set in case of `router.resolution === 'server'`.
|
|
1728
1728
|
*/
|
|
1729
1729
|
nodes?: (string | undefined)[];
|
|
1730
|
+
/**
|
|
1731
|
+
* CSS files referenced in the entry points of the layouts/pages.
|
|
1732
|
+
* An entry is undefined if the layout/page has no component or universal file (i.e. only has a `.server.js` file) or if has no CSS.
|
|
1733
|
+
* Only set in case of `router.resolution === 'server'`.
|
|
1734
|
+
*/
|
|
1735
|
+
css?: (string[] | undefined)[];
|
|
1730
1736
|
/**
|
|
1731
1737
|
* Contains the client route manifest in a form suitable for the server which is used for server side route resolution.
|
|
1732
1738
|
* Notably, it contains all routes, regardless of whether they are prerendered or not (those are missing in the optimized server route manifest).
|
package/types/index.d.ts.map
CHANGED
|
@@ -160,6 +160,6 @@
|
|
|
160
160
|
null,
|
|
161
161
|
null
|
|
162
162
|
],
|
|
163
|
-
"mappings": "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
|
|
163
|
+
"mappings": "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",
|
|
164
164
|
"ignoreList": []
|
|
165
165
|
}
|