@sveltejs/kit 2.4.3 → 2.5.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 +3 -3
- package/src/core/adapt/index.js +2 -1
- package/src/core/postbuild/prerender.js +4 -1
- package/src/exports/public.d.ts +16 -0
- package/src/exports/vite/dev/index.js +8 -6
- package/src/exports/vite/index.js +0 -1
- package/src/exports/vite/preview/index.js +4 -1
- package/src/runtime/server/respond.js +9 -3
- package/src/types/internal.d.ts +12 -3
- package/src/utils/filesystem.js +13 -0
- package/src/utils/route_config.js +1 -0
- package/src/version.js +1 -1
- package/types/index.d.ts +24 -1
- package/types/index.d.ts.map +3 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltejs/kit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "The fastest way to build Svelte apps",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
"@types/set-cookie-parser": "^2.4.7",
|
|
34
34
|
"dts-buddy": "^0.4.3",
|
|
35
35
|
"rollup": "^4.9.5",
|
|
36
|
-
"svelte": "^4.2.
|
|
36
|
+
"svelte": "^4.2.9",
|
|
37
37
|
"svelte-preprocess": "^5.1.3",
|
|
38
38
|
"typescript": "^5.3.3",
|
|
39
|
-
"vite": "^5.0.
|
|
39
|
+
"vite": "^5.0.12",
|
|
40
40
|
"vitest": "^1.2.0"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
package/src/core/adapt/index.js
CHANGED
|
@@ -19,7 +19,8 @@ export async function adapt(
|
|
|
19
19
|
log,
|
|
20
20
|
vite_config
|
|
21
21
|
) {
|
|
22
|
-
|
|
22
|
+
// This is only called when adapter is truthy, so the cast is safe
|
|
23
|
+
const { name, adapt } = /** @type {import('@sveltejs/kit').Adapter} */ (config.kit.adapter);
|
|
23
24
|
|
|
24
25
|
console.log(colors.bold().cyan(`\n> Using ${name}`));
|
|
25
26
|
|
|
@@ -92,6 +92,8 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) {
|
|
|
92
92
|
/** @type {import('types').ValidatedKitConfig} */
|
|
93
93
|
const config = (await load_config()).kit;
|
|
94
94
|
|
|
95
|
+
const emulator = await config.adapter?.emulate?.();
|
|
96
|
+
|
|
95
97
|
/** @type {import('types').Logger} */
|
|
96
98
|
const log = logger({ verbose });
|
|
97
99
|
|
|
@@ -211,7 +213,8 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) {
|
|
|
211
213
|
|
|
212
214
|
// stuff in `static`
|
|
213
215
|
return readFileSync(join(config.files.assets, file));
|
|
214
|
-
}
|
|
216
|
+
},
|
|
217
|
+
emulator
|
|
215
218
|
});
|
|
216
219
|
|
|
217
220
|
const encoded_id = response.headers.get('x-sveltekit-routeid');
|
package/src/exports/public.d.ts
CHANGED
|
@@ -45,6 +45,11 @@ export interface Adapter {
|
|
|
45
45
|
*/
|
|
46
46
|
read?: (details: { config: any; route: { id: string } }) => boolean;
|
|
47
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Creates an `Emulator`, which allows the adapter to influence the environment
|
|
50
|
+
* during dev, build and prerendering
|
|
51
|
+
*/
|
|
52
|
+
emulate?(): MaybePromise<Emulator>;
|
|
48
53
|
}
|
|
49
54
|
|
|
50
55
|
export type LoadProperties<input extends Record<string, any> | void> = input extends void
|
|
@@ -260,6 +265,17 @@ export interface Cookies {
|
|
|
260
265
|
): string;
|
|
261
266
|
}
|
|
262
267
|
|
|
268
|
+
/**
|
|
269
|
+
* A collection of functions that influence the environment during dev, build and prerendering
|
|
270
|
+
*/
|
|
271
|
+
export interface Emulator {
|
|
272
|
+
/**
|
|
273
|
+
* A function that is called with the current route `config` and `prerender` option
|
|
274
|
+
* and returns an `App.Platform` object
|
|
275
|
+
*/
|
|
276
|
+
platform?(details: { config: any; prerender: PrerenderOption }): MaybePromise<App.Platform>;
|
|
277
|
+
}
|
|
278
|
+
|
|
263
279
|
export interface KitConfig {
|
|
264
280
|
/**
|
|
265
281
|
* Your [adapter](https://kit.svelte.dev/docs/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms.
|
|
@@ -8,7 +8,7 @@ import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite';
|
|
|
8
8
|
import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js';
|
|
9
9
|
import { installPolyfills } from '../../../exports/node/polyfills.js';
|
|
10
10
|
import { coalesce_to_error } from '../../../utils/error.js';
|
|
11
|
-
import { posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js';
|
|
11
|
+
import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js';
|
|
12
12
|
import { load_error_page } from '../../../core/config/index.js';
|
|
13
13
|
import { SVELTE_KIT_ASSETS } from '../../../constants.js';
|
|
14
14
|
import * as sync from '../../../core/sync/sync.js';
|
|
@@ -87,7 +87,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
87
87
|
|
|
88
88
|
/** @param {string} id */
|
|
89
89
|
async function resolve(id) {
|
|
90
|
-
const url = id.startsWith('..') ?
|
|
90
|
+
const url = id.startsWith('..') ? to_fs(path.posix.resolve(id)) : `/${id}`;
|
|
91
91
|
|
|
92
92
|
const module = await loud_ssr_load_module(url);
|
|
93
93
|
|
|
@@ -137,8 +137,8 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
137
137
|
server_assets: new Proxy(
|
|
138
138
|
{},
|
|
139
139
|
{
|
|
140
|
-
has: (_, /** @type {string} */ file) => fs.existsSync(file
|
|
141
|
-
get: (_, /** @type {string} */ file) => fs.statSync(file
|
|
140
|
+
has: (_, /** @type {string} */ file) => fs.existsSync(from_fs(file)),
|
|
141
|
+
get: (_, /** @type {string} */ file) => fs.statSync(from_fs(file)).size
|
|
142
142
|
}
|
|
143
143
|
),
|
|
144
144
|
nodes: manifest_data.nodes.map((node, index) => {
|
|
@@ -419,6 +419,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
419
419
|
});
|
|
420
420
|
|
|
421
421
|
const env = loadEnv(vite_config.mode, svelte_config.kit.env.dir, '');
|
|
422
|
+
const emulator = await svelte_config.kit.adapter?.emulate?.();
|
|
422
423
|
|
|
423
424
|
return () => {
|
|
424
425
|
const serve_static_middleware = vite.middlewares.stack.find(
|
|
@@ -490,7 +491,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
490
491
|
|
|
491
492
|
await server.init({
|
|
492
493
|
env,
|
|
493
|
-
read: (file) => createReadableStream(file
|
|
494
|
+
read: (file) => createReadableStream(from_fs(file))
|
|
494
495
|
});
|
|
495
496
|
|
|
496
497
|
const request = await getRequest({
|
|
@@ -529,7 +530,8 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
529
530
|
read: (file) => fs.readFileSync(path.join(svelte_config.kit.files.assets, file)),
|
|
530
531
|
before_handle: (event, config, prerender) => {
|
|
531
532
|
async_local_storage.enterWith({ event, config, prerender });
|
|
532
|
-
}
|
|
533
|
+
},
|
|
534
|
+
emulator
|
|
533
535
|
});
|
|
534
536
|
|
|
535
537
|
if (rendered.status === 404) {
|
|
@@ -164,7 +164,6 @@ export async function sveltekit() {
|
|
|
164
164
|
preprocess,
|
|
165
165
|
onwarn: svelte_config.onwarn,
|
|
166
166
|
compilerOptions: {
|
|
167
|
-
// @ts-expect-error SvelteKit requires hydratable true by default
|
|
168
167
|
hydratable: isSvelte5Plus() ? undefined : true,
|
|
169
168
|
...svelte_config.compilerOptions
|
|
170
169
|
},
|
|
@@ -51,6 +51,8 @@ export async function preview(vite, vite_config, svelte_config) {
|
|
|
51
51
|
read: (file) => createReadableStream(`${dir}/${file}`)
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
+
const emulator = await svelte_config.kit.adapter?.emulate?.();
|
|
55
|
+
|
|
54
56
|
return () => {
|
|
55
57
|
// Remove the base middleware. It screws with the URL.
|
|
56
58
|
// It also only lets through requests beginning with the base path, so that requests beginning
|
|
@@ -191,7 +193,8 @@ export async function preview(vite, vite_config, svelte_config) {
|
|
|
191
193
|
if (remoteAddress) return remoteAddress;
|
|
192
194
|
throw new Error('Could not determine clientAddress');
|
|
193
195
|
},
|
|
194
|
-
read: (file) => fs.readFileSync(join(svelte_config.kit.files.assets, file))
|
|
196
|
+
read: (file) => fs.readFileSync(join(svelte_config.kit.files.assets, file)),
|
|
197
|
+
emulator
|
|
195
198
|
})
|
|
196
199
|
);
|
|
197
200
|
});
|
|
@@ -271,7 +271,7 @@ export async function respond(request, options, manifest, state) {
|
|
|
271
271
|
}
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
if (
|
|
274
|
+
if (state.before_handle || state.emulator?.platform) {
|
|
275
275
|
let config = {};
|
|
276
276
|
|
|
277
277
|
/** @type {import('types').PrerenderOption} */
|
|
@@ -283,11 +283,17 @@ export async function respond(request, options, manifest, state) {
|
|
|
283
283
|
prerender = node.prerender ?? prerender;
|
|
284
284
|
} else if (route.page) {
|
|
285
285
|
const nodes = await load_page_nodes(route.page, manifest);
|
|
286
|
-
config = get_page_config(nodes);
|
|
286
|
+
config = get_page_config(nodes) ?? config;
|
|
287
287
|
prerender = get_option(nodes, 'prerender') ?? false;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
state.before_handle
|
|
290
|
+
if (state.before_handle) {
|
|
291
|
+
state.before_handle(event, config, prerender);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (state.emulator?.platform) {
|
|
295
|
+
event.platform = await state.emulator.platform({ config, prerender });
|
|
296
|
+
}
|
|
291
297
|
}
|
|
292
298
|
}
|
|
293
299
|
|
package/src/types/internal.d.ts
CHANGED
|
@@ -15,7 +15,9 @@ import {
|
|
|
15
15
|
HandleClientError,
|
|
16
16
|
Reroute,
|
|
17
17
|
RequestEvent,
|
|
18
|
-
SSRManifest
|
|
18
|
+
SSRManifest,
|
|
19
|
+
Emulator,
|
|
20
|
+
Adapter
|
|
19
21
|
} from '@sveltejs/kit';
|
|
20
22
|
import {
|
|
21
23
|
HttpMethod,
|
|
@@ -128,6 +130,7 @@ export class InternalServer extends Server {
|
|
|
128
130
|
read: (file: string) => Buffer;
|
|
129
131
|
/** A hook called before `handle` during dev, so that `AsyncLocalStorage` can be populated */
|
|
130
132
|
before_handle?: (event: RequestEvent, config: any, prerender: PrerenderOption) => void;
|
|
133
|
+
emulator?: Emulator;
|
|
131
134
|
}
|
|
132
135
|
): Promise<Response>;
|
|
133
136
|
}
|
|
@@ -418,6 +421,7 @@ export interface SSRState {
|
|
|
418
421
|
prerender_default?: PrerenderOption;
|
|
419
422
|
read?: (file: string) => Buffer;
|
|
420
423
|
before_handle?: (event: RequestEvent, config: any, prerender: PrerenderOption) => void;
|
|
424
|
+
emulator?: Emulator;
|
|
421
425
|
}
|
|
422
426
|
|
|
423
427
|
export type StrictBody = string | ArrayBufferView;
|
|
@@ -431,9 +435,14 @@ export interface Uses {
|
|
|
431
435
|
search_params: Set<string>;
|
|
432
436
|
}
|
|
433
437
|
|
|
434
|
-
export type ValidatedConfig =
|
|
438
|
+
export type ValidatedConfig = Config & {
|
|
439
|
+
kit: ValidatedKitConfig;
|
|
440
|
+
extensions: string[];
|
|
441
|
+
};
|
|
435
442
|
|
|
436
|
-
export type ValidatedKitConfig = RecursiveRequired<KitConfig
|
|
443
|
+
export type ValidatedKitConfig = Omit<RecursiveRequired<KitConfig>, 'adapter'> & {
|
|
444
|
+
adapter?: Adapter;
|
|
445
|
+
};
|
|
437
446
|
|
|
438
447
|
export * from '../exports/index.js';
|
|
439
448
|
export * from './private.js';
|
package/src/utils/filesystem.js
CHANGED
|
@@ -148,6 +148,19 @@ export function to_fs(str) {
|
|
|
148
148
|
}${str}`;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Removes `/@fs` prefix from given path and posixifies it
|
|
153
|
+
* @param {string} str
|
|
154
|
+
*/
|
|
155
|
+
export function from_fs(str) {
|
|
156
|
+
str = posixify(str);
|
|
157
|
+
if (!str.startsWith('/@fs')) return str;
|
|
158
|
+
|
|
159
|
+
str = str.slice(4);
|
|
160
|
+
// Windows/Linux separation - Windows starts with a drive letter, we need to strip the additional / here
|
|
161
|
+
return str[2] === ':' && /[A-Z]/.test(str[1]) ? str.slice(1) : str;
|
|
162
|
+
}
|
|
163
|
+
|
|
151
164
|
/**
|
|
152
165
|
* Given an entry point like [cwd]/src/hooks, returns a filename like [cwd]/src/hooks.js or [cwd]/src/hooks/index.js
|
|
153
166
|
* @param {string} entry
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -27,6 +27,11 @@ declare module '@sveltejs/kit' {
|
|
|
27
27
|
*/
|
|
28
28
|
read?: (details: { config: any; route: { id: string } }) => boolean;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates an `Emulator`, which allows the adapter to influence the environment
|
|
32
|
+
* during dev, build and prerendering
|
|
33
|
+
*/
|
|
34
|
+
emulate?(): MaybePromise<Emulator>;
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
export type LoadProperties<input extends Record<string, any> | void> = input extends void
|
|
@@ -242,6 +247,17 @@ declare module '@sveltejs/kit' {
|
|
|
242
247
|
): string;
|
|
243
248
|
}
|
|
244
249
|
|
|
250
|
+
/**
|
|
251
|
+
* A collection of functions that influence the environment during dev, build and prerendering
|
|
252
|
+
*/
|
|
253
|
+
export interface Emulator {
|
|
254
|
+
/**
|
|
255
|
+
* A function that is called with the current route `config` and `prerender` option
|
|
256
|
+
* and returns an `App.Platform` object
|
|
257
|
+
*/
|
|
258
|
+
platform?(details: { config: any; prerender: PrerenderOption }): MaybePromise<App.Platform>;
|
|
259
|
+
}
|
|
260
|
+
|
|
245
261
|
export interface KitConfig {
|
|
246
262
|
/**
|
|
247
263
|
* Your [adapter](https://kit.svelte.dev/docs/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms.
|
|
@@ -1732,7 +1748,14 @@ declare module '@sveltejs/kit' {
|
|
|
1732
1748
|
endpoint_id?: string;
|
|
1733
1749
|
}
|
|
1734
1750
|
|
|
1735
|
-
type ValidatedConfig =
|
|
1751
|
+
type ValidatedConfig = Config & {
|
|
1752
|
+
kit: ValidatedKitConfig;
|
|
1753
|
+
extensions: string[];
|
|
1754
|
+
};
|
|
1755
|
+
|
|
1756
|
+
type ValidatedKitConfig = Omit<RecursiveRequired<KitConfig>, 'adapter'> & {
|
|
1757
|
+
adapter?: Adapter;
|
|
1758
|
+
};
|
|
1736
1759
|
/**
|
|
1737
1760
|
* Throws an error with a HTTP status code and an optional message.
|
|
1738
1761
|
* When called during request handling, this will cause SvelteKit to
|
package/types/index.d.ts.map
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"Builder",
|
|
10
10
|
"Config",
|
|
11
11
|
"Cookies",
|
|
12
|
+
"Emulator",
|
|
12
13
|
"KitConfig",
|
|
13
14
|
"Handle",
|
|
14
15
|
"HandleServerError",
|
|
@@ -75,6 +76,7 @@
|
|
|
75
76
|
"SSREndpoint",
|
|
76
77
|
"SSRRoute",
|
|
77
78
|
"ValidatedConfig",
|
|
79
|
+
"ValidatedKitConfig",
|
|
78
80
|
"isHttpError",
|
|
79
81
|
"redirect",
|
|
80
82
|
"isRedirect",
|
|
@@ -152,5 +154,5 @@
|
|
|
152
154
|
null,
|
|
153
155
|
null
|
|
154
156
|
],
|
|
155
|
-
"mappings": ";;;;;;;;;kBA2BiBA,OAAOA
|
|
157
|
+
"mappings": "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"
|
|
156
158
|
}
|