@sveltejs/kit 1.3.0 → 1.3.1
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/adapt/builder.js +6 -14
- package/src/core/adapt/index.js +4 -2
- package/src/core/generate_manifest/index.js +2 -2
- package/src/core/postbuild/analyse.js +135 -0
- package/src/core/postbuild/prerender.js +66 -55
- package/src/core/sync/sync.js +2 -4
- package/src/core/sync/ts.js +6 -0
- package/src/core/sync/write_client_manifest.js +54 -13
- package/src/core/sync/write_server.js +5 -4
- package/src/core/sync/write_tsconfig.js +5 -1
- package/src/core/sync/write_types/index.js +1 -7
- package/src/exports/vite/build/build_server.js +32 -94
- package/src/exports/vite/build/build_service_worker.js +16 -19
- package/src/exports/vite/index.js +158 -157
- package/src/runtime/client/ambient.d.ts +1 -1
- package/src/runtime/client/client.js +4 -4
- package/src/runtime/client/parse.js +1 -1
- package/src/runtime/server/ambient.d.ts +1 -1
- package/src/runtime/server/index.js +1 -1
- package/src/utils/filesystem.js +5 -0
- package/src/utils/fork.js +76 -0
- package/types/internal.d.ts +20 -20
- package/src/core/postbuild/index.js +0 -113
- package/src/core/sync/write_matchers.js +0 -25
|
@@ -1,61 +1,33 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { mkdirp, posixify } from '../../../utils/filesystem.js';
|
|
5
|
-
import { find_deps, is_http_method, resolve_symlinks } from './utils.js';
|
|
2
|
+
import { mkdirp } from '../../../utils/filesystem.js';
|
|
3
|
+
import { find_deps, resolve_symlinks } from './utils.js';
|
|
6
4
|
import { s } from '../../../utils/misc.js';
|
|
7
5
|
|
|
8
6
|
/**
|
|
9
|
-
* @param {
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* }} options
|
|
16
|
-
* @param {{ vite_manifest: import('vite').Manifest, assets: import('rollup').OutputAsset[] }} client
|
|
7
|
+
* @param {string} out
|
|
8
|
+
* @param {import('types').ValidatedKitConfig} kit
|
|
9
|
+
* @param {import('types').ManifestData} manifest_data
|
|
10
|
+
* @param {import('vite').Manifest} server_manifest
|
|
11
|
+
* @param {import('vite').Manifest | null} client_manifest
|
|
12
|
+
* @param {import('rollup').OutputAsset[] | null} css
|
|
17
13
|
*/
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const { output } = /** @type {import('rollup').RollupOutput} */ (
|
|
22
|
-
await vite.build({
|
|
23
|
-
// CLI args
|
|
24
|
-
configFile: vite_config.configFile,
|
|
25
|
-
mode: vite_config_env.mode,
|
|
26
|
-
logLevel: config.logLevel,
|
|
27
|
-
clearScreen: config.clearScreen,
|
|
28
|
-
build: {
|
|
29
|
-
ssr: true
|
|
30
|
-
}
|
|
31
|
-
})
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
const chunks = /** @type {import('rollup').OutputChunk[]} */ (
|
|
35
|
-
output.filter((chunk) => chunk.type === 'chunk')
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
/** @type {import('vite').Manifest} */
|
|
39
|
-
const vite_manifest = JSON.parse(
|
|
40
|
-
fs.readFileSync(`${output_dir}/server/${vite_config.build.manifest}`, 'utf-8')
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
mkdirp(`${output_dir}/server/nodes`);
|
|
44
|
-
mkdirp(`${output_dir}/server/stylesheets`);
|
|
14
|
+
export function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css) {
|
|
15
|
+
mkdirp(`${out}/server/nodes`);
|
|
16
|
+
mkdirp(`${out}/server/stylesheets`);
|
|
45
17
|
|
|
46
18
|
const stylesheet_lookup = new Map();
|
|
47
19
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (asset.source.length <
|
|
20
|
+
if (css) {
|
|
21
|
+
css.forEach((asset) => {
|
|
22
|
+
if (asset.source.length < kit.inlineStyleThreshold) {
|
|
51
23
|
const index = stylesheet_lookup.size;
|
|
52
|
-
const file = `${
|
|
24
|
+
const file = `${out}/server/stylesheets/${index}.js`;
|
|
53
25
|
|
|
54
26
|
fs.writeFileSync(file, `// ${asset.fileName}\nexport default ${s(asset.source)};`);
|
|
55
27
|
stylesheet_lookup.set(asset.fileName, index);
|
|
56
28
|
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
59
31
|
|
|
60
32
|
manifest_data.nodes.forEach((node, i) => {
|
|
61
33
|
/** @type {string[]} */
|
|
@@ -75,8 +47,8 @@ export async function build_server(options, client) {
|
|
|
75
47
|
/** @type {string[]} */
|
|
76
48
|
const fonts = [];
|
|
77
49
|
|
|
78
|
-
if (node.component) {
|
|
79
|
-
const entry = find_deps(
|
|
50
|
+
if (node.component && client_manifest) {
|
|
51
|
+
const entry = find_deps(client_manifest, node.component, true);
|
|
80
52
|
|
|
81
53
|
imported.push(...entry.imports);
|
|
82
54
|
stylesheets.push(...entry.stylesheets);
|
|
@@ -84,25 +56,27 @@ export async function build_server(options, client) {
|
|
|
84
56
|
|
|
85
57
|
exports.push(
|
|
86
58
|
`export const component = async () => (await import('../${
|
|
87
|
-
resolve_symlinks(
|
|
59
|
+
resolve_symlinks(server_manifest, node.component).chunk.file
|
|
88
60
|
}')).default;`,
|
|
89
61
|
`export const file = '${entry.file}';` // TODO what is this?
|
|
90
62
|
);
|
|
91
63
|
}
|
|
92
64
|
|
|
93
65
|
if (node.universal) {
|
|
94
|
-
|
|
66
|
+
if (client_manifest) {
|
|
67
|
+
const entry = find_deps(client_manifest, node.universal, true);
|
|
95
68
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
69
|
+
imported.push(...entry.imports);
|
|
70
|
+
stylesheets.push(...entry.stylesheets);
|
|
71
|
+
fonts.push(...entry.fonts);
|
|
72
|
+
}
|
|
99
73
|
|
|
100
|
-
imports.push(`import * as universal from '../${
|
|
74
|
+
imports.push(`import * as universal from '../${server_manifest[node.universal].file}';`);
|
|
101
75
|
exports.push(`export { universal };`);
|
|
102
76
|
}
|
|
103
77
|
|
|
104
78
|
if (node.server) {
|
|
105
|
-
imports.push(`import * as server from '../${
|
|
79
|
+
imports.push(`import * as server from '../${server_manifest[node.server].file}';`);
|
|
106
80
|
exports.push(`export { server };`);
|
|
107
81
|
}
|
|
108
82
|
|
|
@@ -128,45 +102,9 @@ export async function build_server(options, client) {
|
|
|
128
102
|
exports.push(`export const inline_styles = () => ({\n${styles.join(',\n')}\n});`);
|
|
129
103
|
}
|
|
130
104
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return {
|
|
136
|
-
chunks,
|
|
137
|
-
vite_manifest,
|
|
138
|
-
methods: get_methods(chunks, manifest_data)
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* @param {import('rollup').OutputChunk[]} output
|
|
144
|
-
* @param {import('types').ManifestData} manifest_data
|
|
145
|
-
*/
|
|
146
|
-
function get_methods(output, manifest_data) {
|
|
147
|
-
/** @type {Record<string, string[]>} */
|
|
148
|
-
const lookup = {};
|
|
149
|
-
output.forEach((chunk) => {
|
|
150
|
-
if (!chunk.facadeModuleId) return;
|
|
151
|
-
const id = posixify(path.relative('.', chunk.facadeModuleId));
|
|
152
|
-
lookup[id] = chunk.exports;
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
/** @type {Record<string, import('types').HttpMethod[]>} */
|
|
156
|
-
const methods = {};
|
|
157
|
-
manifest_data.routes.forEach((route) => {
|
|
158
|
-
if (route.endpoint) {
|
|
159
|
-
if (lookup[route.endpoint.file]) {
|
|
160
|
-
methods[route.endpoint.file] = lookup[route.endpoint.file].filter(is_http_method);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (route.leaf?.server) {
|
|
165
|
-
if (lookup[route.leaf.server]) {
|
|
166
|
-
methods[route.leaf.server] = lookup[route.leaf.server].filter(is_http_method);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
105
|
+
fs.writeFileSync(
|
|
106
|
+
`${out}/server/nodes/${i}.js`,
|
|
107
|
+
`${imports.join('\n')}\n\n${exports.join('\n')}\n`
|
|
108
|
+
);
|
|
169
109
|
});
|
|
170
|
-
|
|
171
|
-
return methods;
|
|
172
110
|
}
|
|
@@ -5,19 +5,19 @@ import { get_config_aliases } from '../utils.js';
|
|
|
5
5
|
import { assets_base } from './utils.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* @param {
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* manifest_data: import('types').ManifestData;
|
|
13
|
-
* output_dir: string;
|
|
14
|
-
* }} options
|
|
8
|
+
* @param {string} out
|
|
9
|
+
* @param {import('types').ValidatedKitConfig} kit
|
|
10
|
+
* @param {import('vite').ResolvedConfig} vite_config
|
|
11
|
+
* @param {import('types').ManifestData} manifest_data
|
|
15
12
|
* @param {string} service_worker_entry_file
|
|
16
13
|
* @param {import('types').Prerendered} prerendered
|
|
17
14
|
* @param {import('vite').Manifest} client_manifest
|
|
18
15
|
*/
|
|
19
16
|
export async function build_service_worker(
|
|
20
|
-
|
|
17
|
+
out,
|
|
18
|
+
kit,
|
|
19
|
+
vite_config,
|
|
20
|
+
manifest_data,
|
|
21
21
|
service_worker_entry_file,
|
|
22
22
|
prerendered,
|
|
23
23
|
client_manifest
|
|
@@ -30,21 +30,21 @@ export async function build_service_worker(
|
|
|
30
30
|
assets.forEach((file) => build.add(file));
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
const service_worker = `${
|
|
33
|
+
const service_worker = `${kit.outDir}/generated/service-worker.js`;
|
|
34
34
|
|
|
35
35
|
fs.writeFileSync(
|
|
36
36
|
service_worker,
|
|
37
37
|
`
|
|
38
38
|
export const build = [
|
|
39
39
|
${Array.from(build)
|
|
40
|
-
.map((file) => `${s(`${
|
|
40
|
+
.map((file) => `${s(`${kit.paths.base}/${file}`)}`)
|
|
41
41
|
.join(',\n\t\t\t\t')}
|
|
42
42
|
];
|
|
43
43
|
|
|
44
44
|
export const files = [
|
|
45
45
|
${manifest_data.assets
|
|
46
|
-
.filter((asset) =>
|
|
47
|
-
.map((asset) => `${s(`${
|
|
46
|
+
.filter((asset) => kit.serviceWorker.files(asset.file))
|
|
47
|
+
.map((asset) => `${s(`${kit.paths.base}/${asset.file}`)}`)
|
|
48
48
|
.join(',\n\t\t\t\t')}
|
|
49
49
|
];
|
|
50
50
|
|
|
@@ -52,14 +52,14 @@ export async function build_service_worker(
|
|
|
52
52
|
${prerendered.paths.map((path) => s(path)).join(',\n\t\t\t\t')}
|
|
53
53
|
];
|
|
54
54
|
|
|
55
|
-
export const version = ${s(
|
|
55
|
+
export const version = ${s(kit.version.name)};
|
|
56
56
|
`
|
|
57
57
|
.replace(/^\t{3}/gm, '')
|
|
58
58
|
.trim()
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
await vite.build({
|
|
62
|
-
base: assets_base(
|
|
62
|
+
base: assets_base(kit),
|
|
63
63
|
build: {
|
|
64
64
|
lib: {
|
|
65
65
|
entry: /** @type {string} */ (service_worker_entry_file),
|
|
@@ -71,16 +71,13 @@ export async function build_service_worker(
|
|
|
71
71
|
entryFileNames: 'service-worker.js'
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
outDir: `${
|
|
74
|
+
outDir: `${out}/client`,
|
|
75
75
|
emptyOutDir: false
|
|
76
76
|
},
|
|
77
77
|
define: vite_config.define,
|
|
78
78
|
configFile: false,
|
|
79
79
|
resolve: {
|
|
80
|
-
alias: [
|
|
81
|
-
...get_config_aliases(config.kit),
|
|
82
|
-
{ find: '$service-worker', replacement: service_worker }
|
|
83
|
-
]
|
|
80
|
+
alias: [...get_config_aliases(kit), { find: '$service-worker', replacement: service_worker }]
|
|
84
81
|
}
|
|
85
82
|
});
|
|
86
83
|
}
|