@sveltejs/kit 2.25.2 → 2.26.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/sync/write_tsconfig.js +4 -1
- package/src/core/sync/write_types/index.js +76 -4
- package/src/exports/public.d.ts +28 -22
- package/src/runtime/app/paths/index.js +10 -4
- package/src/runtime/app/paths/types.d.ts +52 -11
- package/src/version.js +1 -1
- package/types/index.d.ts +75 -33
- package/types/index.d.ts.map +4 -1
package/package.json
CHANGED
|
@@ -98,7 +98,10 @@ export function get_tsconfig(kit) {
|
|
|
98
98
|
const config = {
|
|
99
99
|
compilerOptions: {
|
|
100
100
|
// generated options
|
|
101
|
-
paths:
|
|
101
|
+
paths: {
|
|
102
|
+
...get_tsconfig_paths(kit),
|
|
103
|
+
'$app/types': ['./types/index.d.ts']
|
|
104
|
+
},
|
|
102
105
|
rootDirs: [config_relative('.'), './types'],
|
|
103
106
|
|
|
104
107
|
// essential options
|
|
@@ -5,6 +5,15 @@ import MagicString from 'magic-string';
|
|
|
5
5
|
import { posixify, rimraf, walk } from '../../../utils/filesystem.js';
|
|
6
6
|
import { compact } from '../../../utils/array.js';
|
|
7
7
|
import { ts } from '../ts.js';
|
|
8
|
+
import { s } from '../../../utils/misc.js';
|
|
9
|
+
|
|
10
|
+
const remove_relative_parent_traversals = (/** @type {string} */ path) =>
|
|
11
|
+
path.replace(/\.\.\//g, '');
|
|
12
|
+
const replace_optional_params = (/** @type {string} */ id) =>
|
|
13
|
+
id.replace(/\/\[\[[^\]]+\]\]/g, '${string}');
|
|
14
|
+
const replace_required_params = (/** @type {string} */ id) =>
|
|
15
|
+
id.replace(/\/\[[^\]]+\]/g, '/${string}');
|
|
16
|
+
const is_whitespace = (/** @type {string} */ char) => /\s/.test(char);
|
|
8
17
|
|
|
9
18
|
/**
|
|
10
19
|
* @typedef {{
|
|
@@ -35,7 +44,9 @@ export function write_all_types(config, manifest_data) {
|
|
|
35
44
|
const types_dir = `${config.kit.outDir}/types`;
|
|
36
45
|
|
|
37
46
|
// empty out files that no longer need to exist
|
|
38
|
-
const routes_dir =
|
|
47
|
+
const routes_dir = remove_relative_parent_traversals(
|
|
48
|
+
posixify(path.relative('.', config.kit.files.routes))
|
|
49
|
+
);
|
|
39
50
|
const expected_directories = new Set(
|
|
40
51
|
manifest_data.routes.map((route) => path.join(routes_dir, route.id))
|
|
41
52
|
);
|
|
@@ -49,6 +60,65 @@ export function write_all_types(config, manifest_data) {
|
|
|
49
60
|
}
|
|
50
61
|
}
|
|
51
62
|
|
|
63
|
+
/** @type {string[]} */
|
|
64
|
+
const pathnames = [];
|
|
65
|
+
|
|
66
|
+
/** @type {string[]} */
|
|
67
|
+
const dynamic_routes = [];
|
|
68
|
+
|
|
69
|
+
/** @type {string[]} */
|
|
70
|
+
const layouts = [];
|
|
71
|
+
|
|
72
|
+
for (const route of manifest_data.routes) {
|
|
73
|
+
if (route.params.length > 0) {
|
|
74
|
+
const params = route.params.map((p) => `${p.name}${p.optional ? '?:' : ':'} string`);
|
|
75
|
+
const route_type = `${s(route.id)}: { ${params.join('; ')} }`;
|
|
76
|
+
|
|
77
|
+
dynamic_routes.push(route_type);
|
|
78
|
+
|
|
79
|
+
pathnames.push(`\`${replace_required_params(replace_optional_params(route.id))}\` & {}`);
|
|
80
|
+
} else {
|
|
81
|
+
pathnames.push(s(route.id));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** @type {Map<string, boolean>} */
|
|
85
|
+
const child_params = new Map(route.params.map((p) => [p.name, p.optional]));
|
|
86
|
+
|
|
87
|
+
for (const child of manifest_data.routes.filter((r) => r.id.startsWith(route.id))) {
|
|
88
|
+
for (const p of child.params) {
|
|
89
|
+
if (!child_params.has(p.name)) {
|
|
90
|
+
child_params.set(p.name, true); // always optional
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const layout_params = Array.from(child_params)
|
|
96
|
+
.map(([name, optional]) => `${name}${optional ? '?:' : ':'} string`)
|
|
97
|
+
.join('; ');
|
|
98
|
+
|
|
99
|
+
const layout_type = `${s(route.id)}: ${layout_params.length > 0 ? `{ ${layout_params} }` : 'undefined'}`;
|
|
100
|
+
layouts.push(layout_type);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
fs.mkdirSync(types_dir, { recursive: true });
|
|
105
|
+
} catch {}
|
|
106
|
+
|
|
107
|
+
fs.writeFileSync(
|
|
108
|
+
`${types_dir}/index.d.ts`,
|
|
109
|
+
[
|
|
110
|
+
`type DynamicRoutes = {\n\t${dynamic_routes.join(';\n\t')}\n};`,
|
|
111
|
+
`type Layouts = {\n\t${layouts.join(';\n\t')}\n};`,
|
|
112
|
+
// we enumerate these rather than doing `keyof Routes` so that the list is visible on hover
|
|
113
|
+
`export type RouteId = ${manifest_data.routes.map((r) => s(r.id)).join(' | ')};`,
|
|
114
|
+
'export type RouteParams<T extends RouteId> = T extends keyof DynamicRoutes ? DynamicRoutes[T] : Record<string, never>;',
|
|
115
|
+
'export type LayoutParams<T extends RouteId> = Layouts[T] | Record<string, never>;',
|
|
116
|
+
`export type Pathname = ${pathnames.join(' | ')};`,
|
|
117
|
+
'export type ResolvedPathname = `${"" | `/${string}`}${Pathname}`;',
|
|
118
|
+
`export type Asset = ${manifest_data.assets.map((asset) => s('/' + asset.file)).join(' | ') || 'never'};`
|
|
119
|
+
].join('\n\n')
|
|
120
|
+
);
|
|
121
|
+
|
|
52
122
|
// Read/write meta data on each invocation, not once per node process,
|
|
53
123
|
// it could be invoked by another process in the meantime.
|
|
54
124
|
const meta_data_file = `${types_dir}/route_meta_data.json`;
|
|
@@ -174,7 +244,9 @@ function create_routes_map(manifest_data) {
|
|
|
174
244
|
* @param {Set<string>} [to_delete]
|
|
175
245
|
*/
|
|
176
246
|
function update_types(config, routes, route, to_delete = new Set()) {
|
|
177
|
-
const routes_dir =
|
|
247
|
+
const routes_dir = remove_relative_parent_traversals(
|
|
248
|
+
posixify(path.relative('.', config.kit.files.routes))
|
|
249
|
+
);
|
|
178
250
|
const outdir = path.join(config.kit.outDir, 'types', routes_dir, route.id);
|
|
179
251
|
|
|
180
252
|
// now generate new types
|
|
@@ -733,7 +805,7 @@ export function tweak_types(content, is_server) {
|
|
|
733
805
|
if (declaration.type) {
|
|
734
806
|
let a = declaration.type.pos;
|
|
735
807
|
const b = declaration.type.end;
|
|
736
|
-
while (
|
|
808
|
+
while (is_whitespace(content[a])) a += 1;
|
|
737
809
|
|
|
738
810
|
const type = content.slice(a, b);
|
|
739
811
|
code.remove(declaration.name.end, declaration.type.end);
|
|
@@ -805,7 +877,7 @@ export function tweak_types(content, is_server) {
|
|
|
805
877
|
if (declaration.type) {
|
|
806
878
|
let a = declaration.type.pos;
|
|
807
879
|
const b = declaration.type.end;
|
|
808
|
-
while (
|
|
880
|
+
while (is_whitespace(content[a])) a += 1;
|
|
809
881
|
|
|
810
882
|
const type = content.slice(a, b);
|
|
811
883
|
code.remove(declaration.name.end, declaration.type.end);
|
package/src/exports/public.d.ts
CHANGED
|
@@ -17,7 +17,13 @@ import {
|
|
|
17
17
|
RouteSegment
|
|
18
18
|
} from '../types/private.js';
|
|
19
19
|
import { BuildData, SSRNodeLoader, SSRRoute, ValidatedConfig } from 'types';
|
|
20
|
-
import type { SvelteConfig } from '@sveltejs/vite-plugin-svelte';
|
|
20
|
+
import type { SvelteConfig, PluginOptions } from '@sveltejs/vite-plugin-svelte';
|
|
21
|
+
import {
|
|
22
|
+
RouteId as AppRouteId,
|
|
23
|
+
LayoutParams as AppLayoutParams,
|
|
24
|
+
ResolvedPathname
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
} from '$app/types';
|
|
21
27
|
|
|
22
28
|
export { PrerenderOption } from '../types/private.js';
|
|
23
29
|
|
|
@@ -850,11 +856,11 @@ export interface Transporter<
|
|
|
850
856
|
* rather than using `Load` directly.
|
|
851
857
|
*/
|
|
852
858
|
export type Load<
|
|
853
|
-
Params extends
|
|
859
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
854
860
|
InputData extends Record<string, unknown> | null = Record<string, any> | null,
|
|
855
861
|
ParentData extends Record<string, unknown> = Record<string, any>,
|
|
856
862
|
OutputData extends Record<string, unknown> | void = Record<string, any> | void,
|
|
857
|
-
RouteId extends
|
|
863
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
858
864
|
> = (event: LoadEvent<Params, InputData, ParentData, RouteId>) => MaybePromise<OutputData>;
|
|
859
865
|
|
|
860
866
|
/**
|
|
@@ -862,10 +868,10 @@ export type Load<
|
|
|
862
868
|
* rather than using `LoadEvent` directly.
|
|
863
869
|
*/
|
|
864
870
|
export interface LoadEvent<
|
|
865
|
-
Params extends
|
|
871
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
866
872
|
Data extends Record<string, unknown> | null = Record<string, any> | null,
|
|
867
873
|
ParentData extends Record<string, unknown> = Record<string, any>,
|
|
868
|
-
RouteId extends
|
|
874
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
869
875
|
> extends NavigationEvent<Params, RouteId> {
|
|
870
876
|
/**
|
|
871
877
|
* `fetch` is equivalent to the [native `fetch` web API](https://developer.mozilla.org/en-US/docs/Web/API/fetch), with a few additional features:
|
|
@@ -970,8 +976,8 @@ export interface LoadEvent<
|
|
|
970
976
|
}
|
|
971
977
|
|
|
972
978
|
export interface NavigationEvent<
|
|
973
|
-
Params extends
|
|
974
|
-
RouteId extends
|
|
979
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
980
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
975
981
|
> {
|
|
976
982
|
/**
|
|
977
983
|
* The parameters of the current page - e.g. for a route like `/blog/[slug]`, a `{ slug: string }` object
|
|
@@ -1110,13 +1116,13 @@ export interface AfterNavigate extends Omit<Navigation, 'type'> {
|
|
|
1110
1116
|
* The shape of the [`page`](https://svelte.dev/docs/kit/$app-state#page) reactive object and the [`$page`](https://svelte.dev/docs/kit/$app-stores) store.
|
|
1111
1117
|
*/
|
|
1112
1118
|
export interface Page<
|
|
1113
|
-
Params extends
|
|
1114
|
-
RouteId extends
|
|
1119
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1120
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1115
1121
|
> {
|
|
1116
1122
|
/**
|
|
1117
1123
|
* The URL of the current page.
|
|
1118
1124
|
*/
|
|
1119
|
-
url: URL;
|
|
1125
|
+
url: URL & { pathname: ResolvedPathname };
|
|
1120
1126
|
/**
|
|
1121
1127
|
* The parameters of the current page - e.g. for a route like `/blog/[slug]`, a `{ slug: string }` object.
|
|
1122
1128
|
*/
|
|
@@ -1158,8 +1164,8 @@ export interface Page<
|
|
|
1158
1164
|
export type ParamMatcher = (param: string) => boolean;
|
|
1159
1165
|
|
|
1160
1166
|
export interface RequestEvent<
|
|
1161
|
-
Params extends
|
|
1162
|
-
RouteId extends
|
|
1167
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1168
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1163
1169
|
> {
|
|
1164
1170
|
/**
|
|
1165
1171
|
* Get or set cookies related to the current request
|
|
@@ -1250,8 +1256,8 @@ export interface RequestEvent<
|
|
|
1250
1256
|
* It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#Generated-types) instead.
|
|
1251
1257
|
*/
|
|
1252
1258
|
export type RequestHandler<
|
|
1253
|
-
Params extends
|
|
1254
|
-
RouteId extends
|
|
1259
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1260
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1255
1261
|
> = (event: RequestEvent<Params, RouteId>) => MaybePromise<Response>;
|
|
1256
1262
|
|
|
1257
1263
|
export interface ResolveOptions {
|
|
@@ -1329,16 +1335,16 @@ export interface SSRManifest {
|
|
|
1329
1335
|
* rather than using `ServerLoad` directly.
|
|
1330
1336
|
*/
|
|
1331
1337
|
export type ServerLoad<
|
|
1332
|
-
Params extends
|
|
1338
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1333
1339
|
ParentData extends Record<string, any> = Record<string, any>,
|
|
1334
1340
|
OutputData extends Record<string, any> | void = Record<string, any> | void,
|
|
1335
|
-
RouteId extends
|
|
1341
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1336
1342
|
> = (event: ServerLoadEvent<Params, ParentData, RouteId>) => MaybePromise<OutputData>;
|
|
1337
1343
|
|
|
1338
1344
|
export interface ServerLoadEvent<
|
|
1339
|
-
Params extends
|
|
1345
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1340
1346
|
ParentData extends Record<string, any> = Record<string, any>,
|
|
1341
|
-
RouteId extends
|
|
1347
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1342
1348
|
> extends RequestEvent<Params, RouteId> {
|
|
1343
1349
|
/**
|
|
1344
1350
|
* `await parent()` returns data from parent `+layout.server.js` `load` functions.
|
|
@@ -1405,9 +1411,9 @@ export interface ServerLoadEvent<
|
|
|
1405
1411
|
* See [form actions](https://svelte.dev/docs/kit/form-actions) for more information.
|
|
1406
1412
|
*/
|
|
1407
1413
|
export type Action<
|
|
1408
|
-
Params extends
|
|
1414
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1409
1415
|
OutputData extends Record<string, any> | void = Record<string, any> | void,
|
|
1410
|
-
RouteId extends
|
|
1416
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1411
1417
|
> = (event: RequestEvent<Params, RouteId>) => MaybePromise<OutputData>;
|
|
1412
1418
|
|
|
1413
1419
|
/**
|
|
@@ -1415,9 +1421,9 @@ export type Action<
|
|
|
1415
1421
|
* See [form actions](https://svelte.dev/docs/kit/form-actions) for more information.
|
|
1416
1422
|
*/
|
|
1417
1423
|
export type Actions<
|
|
1418
|
-
Params extends
|
|
1424
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1419
1425
|
OutputData extends Record<string, any> | void = Record<string, any> | void,
|
|
1420
|
-
RouteId extends
|
|
1426
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1421
1427
|
> = Record<string, Action<Params, OutputData, RouteId>>;
|
|
1422
1428
|
|
|
1423
1429
|
/**
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import { base } from '__sveltekit/paths';
|
|
1
|
+
import { base, assets } from '__sveltekit/paths';
|
|
3
2
|
import { resolve_route } from '../../../utils/routing.js';
|
|
4
3
|
|
|
5
|
-
/** @type {import('./types.d.ts').
|
|
6
|
-
export function
|
|
4
|
+
/** @type {import('./types.d.ts').asset} */
|
|
5
|
+
export function asset(file) {
|
|
6
|
+
return (assets || base) + file;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** @type {import('./types.d.ts').resolve} */
|
|
10
|
+
export function resolve(id, params) {
|
|
7
11
|
return base + resolve_route(id, params);
|
|
8
12
|
}
|
|
13
|
+
|
|
14
|
+
export { base, assets, resolve as resolveRoute };
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import { Asset, RouteId, RouteParams, Pathname, ResolvedPathname } from '$app/types';
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
* A string that matches [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths).
|
|
3
6
|
*
|
|
4
7
|
* Example usage: `<a href="{base}/your-page">Link</a>`
|
|
8
|
+
*
|
|
9
|
+
* @deprecated Use [`resolve(...)`](https://svelte.dev/docs/kit/$app-paths#resolve) instead
|
|
5
10
|
*/
|
|
6
11
|
export let base: '' | `/${string}`;
|
|
7
12
|
|
|
@@ -9,22 +14,58 @@ export let base: '' | `/${string}`;
|
|
|
9
14
|
* An absolute path that matches [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths).
|
|
10
15
|
*
|
|
11
16
|
* > [!NOTE] If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
|
|
17
|
+
*
|
|
18
|
+
* @deprecated Use [`asset(...)`](https://svelte.dev/docs/kit/$app-paths#asset) instead
|
|
12
19
|
*/
|
|
13
20
|
export let assets: '' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets';
|
|
14
21
|
|
|
22
|
+
type ResolveArgs<T extends RouteId | Pathname> = T extends RouteId
|
|
23
|
+
? RouteParams<T> extends Record<string, never>
|
|
24
|
+
? [route: T]
|
|
25
|
+
: [route: T, params: RouteParams<T>]
|
|
26
|
+
: [route: T];
|
|
27
|
+
|
|
15
28
|
/**
|
|
16
|
-
*
|
|
29
|
+
* Resolve a pathname by prefixing it with the base path, if any, or resolve a route ID by populating dynamic segments with parameters.
|
|
30
|
+
*
|
|
31
|
+
* During server rendering, the base path is relative and depends on the page currently being rendered.
|
|
32
|
+
*
|
|
17
33
|
* @example
|
|
18
34
|
* ```js
|
|
19
|
-
* import {
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* );
|
|
35
|
+
* import { resolve } from '$app/paths';
|
|
36
|
+
*
|
|
37
|
+
* // using a pathname
|
|
38
|
+
* const resolved = resolve(`/blog/hello-world`);
|
|
39
|
+
*
|
|
40
|
+
* // using a route ID plus parameters
|
|
41
|
+
* const resolved = resolve('/blog/[slug]', {
|
|
42
|
+
* slug: 'hello-world'
|
|
43
|
+
* });
|
|
28
44
|
* ```
|
|
45
|
+
* @since 2.26
|
|
46
|
+
*/
|
|
47
|
+
export function resolve<T extends RouteId | Pathname>(...args: ResolveArgs<T>): ResolvedPathname;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Resolve the URL of an asset in your `static` directory, by prefixing it with [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths) if configured, or otherwise by prefixing it with the base path.
|
|
51
|
+
*
|
|
52
|
+
* During server rendering, the base path is relative and depends on the page currently being rendered.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```svelte
|
|
56
|
+
* <script>
|
|
57
|
+
* import { asset } from '$app/paths';
|
|
58
|
+
* </script>
|
|
59
|
+
*
|
|
60
|
+
* <img alt="a potato" src={asset('potato.jpg')} />
|
|
61
|
+
* ```
|
|
62
|
+
* @since 2.26
|
|
63
|
+
*/
|
|
64
|
+
export function asset(file: Asset): string;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use [`resolve(...)`](https://svelte.dev/docs/kit/$app-paths#resolve) instead
|
|
29
68
|
*/
|
|
30
|
-
export function resolveRoute
|
|
69
|
+
export function resolveRoute<T extends RouteId | Pathname>(
|
|
70
|
+
...args: ResolveArgs<T>
|
|
71
|
+
): ResolvedPathname;
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
declare module '@sveltejs/kit' {
|
|
5
5
|
import type { SvelteConfig } from '@sveltejs/vite-plugin-svelte';
|
|
6
|
+
import type { RouteId as AppRouteId, LayoutParams as AppLayoutParams, ResolvedPathname } from '$app/types';
|
|
6
7
|
/**
|
|
7
8
|
* [Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing.
|
|
8
9
|
*/
|
|
@@ -832,11 +833,11 @@ declare module '@sveltejs/kit' {
|
|
|
832
833
|
* rather than using `Load` directly.
|
|
833
834
|
*/
|
|
834
835
|
export type Load<
|
|
835
|
-
Params extends
|
|
836
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
836
837
|
InputData extends Record<string, unknown> | null = Record<string, any> | null,
|
|
837
838
|
ParentData extends Record<string, unknown> = Record<string, any>,
|
|
838
839
|
OutputData extends Record<string, unknown> | void = Record<string, any> | void,
|
|
839
|
-
RouteId extends
|
|
840
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
840
841
|
> = (event: LoadEvent<Params, InputData, ParentData, RouteId>) => MaybePromise<OutputData>;
|
|
841
842
|
|
|
842
843
|
/**
|
|
@@ -844,10 +845,10 @@ declare module '@sveltejs/kit' {
|
|
|
844
845
|
* rather than using `LoadEvent` directly.
|
|
845
846
|
*/
|
|
846
847
|
export interface LoadEvent<
|
|
847
|
-
Params extends
|
|
848
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
848
849
|
Data extends Record<string, unknown> | null = Record<string, any> | null,
|
|
849
850
|
ParentData extends Record<string, unknown> = Record<string, any>,
|
|
850
|
-
RouteId extends
|
|
851
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
851
852
|
> extends NavigationEvent<Params, RouteId> {
|
|
852
853
|
/**
|
|
853
854
|
* `fetch` is equivalent to the [native `fetch` web API](https://developer.mozilla.org/en-US/docs/Web/API/fetch), with a few additional features:
|
|
@@ -952,8 +953,8 @@ declare module '@sveltejs/kit' {
|
|
|
952
953
|
}
|
|
953
954
|
|
|
954
955
|
export interface NavigationEvent<
|
|
955
|
-
Params extends
|
|
956
|
-
RouteId extends
|
|
956
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
957
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
957
958
|
> {
|
|
958
959
|
/**
|
|
959
960
|
* The parameters of the current page - e.g. for a route like `/blog/[slug]`, a `{ slug: string }` object
|
|
@@ -1092,13 +1093,13 @@ declare module '@sveltejs/kit' {
|
|
|
1092
1093
|
* The shape of the [`page`](https://svelte.dev/docs/kit/$app-state#page) reactive object and the [`$page`](https://svelte.dev/docs/kit/$app-stores) store.
|
|
1093
1094
|
*/
|
|
1094
1095
|
export interface Page<
|
|
1095
|
-
Params extends
|
|
1096
|
-
RouteId extends
|
|
1096
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1097
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1097
1098
|
> {
|
|
1098
1099
|
/**
|
|
1099
1100
|
* The URL of the current page.
|
|
1100
1101
|
*/
|
|
1101
|
-
url: URL;
|
|
1102
|
+
url: URL & { pathname: ResolvedPathname };
|
|
1102
1103
|
/**
|
|
1103
1104
|
* The parameters of the current page - e.g. for a route like `/blog/[slug]`, a `{ slug: string }` object.
|
|
1104
1105
|
*/
|
|
@@ -1140,8 +1141,8 @@ declare module '@sveltejs/kit' {
|
|
|
1140
1141
|
export type ParamMatcher = (param: string) => boolean;
|
|
1141
1142
|
|
|
1142
1143
|
export interface RequestEvent<
|
|
1143
|
-
Params extends
|
|
1144
|
-
RouteId extends
|
|
1144
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1145
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1145
1146
|
> {
|
|
1146
1147
|
/**
|
|
1147
1148
|
* Get or set cookies related to the current request
|
|
@@ -1232,8 +1233,8 @@ declare module '@sveltejs/kit' {
|
|
|
1232
1233
|
* It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#Generated-types) instead.
|
|
1233
1234
|
*/
|
|
1234
1235
|
export type RequestHandler<
|
|
1235
|
-
Params extends
|
|
1236
|
-
RouteId extends
|
|
1236
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1237
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1237
1238
|
> = (event: RequestEvent<Params, RouteId>) => MaybePromise<Response>;
|
|
1238
1239
|
|
|
1239
1240
|
export interface ResolveOptions {
|
|
@@ -1311,16 +1312,16 @@ declare module '@sveltejs/kit' {
|
|
|
1311
1312
|
* rather than using `ServerLoad` directly.
|
|
1312
1313
|
*/
|
|
1313
1314
|
export type ServerLoad<
|
|
1314
|
-
Params extends
|
|
1315
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1315
1316
|
ParentData extends Record<string, any> = Record<string, any>,
|
|
1316
1317
|
OutputData extends Record<string, any> | void = Record<string, any> | void,
|
|
1317
|
-
RouteId extends
|
|
1318
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1318
1319
|
> = (event: ServerLoadEvent<Params, ParentData, RouteId>) => MaybePromise<OutputData>;
|
|
1319
1320
|
|
|
1320
1321
|
export interface ServerLoadEvent<
|
|
1321
|
-
Params extends
|
|
1322
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1322
1323
|
ParentData extends Record<string, any> = Record<string, any>,
|
|
1323
|
-
RouteId extends
|
|
1324
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1324
1325
|
> extends RequestEvent<Params, RouteId> {
|
|
1325
1326
|
/**
|
|
1326
1327
|
* `await parent()` returns data from parent `+layout.server.js` `load` functions.
|
|
@@ -1387,9 +1388,9 @@ declare module '@sveltejs/kit' {
|
|
|
1387
1388
|
* See [form actions](https://svelte.dev/docs/kit/form-actions) for more information.
|
|
1388
1389
|
*/
|
|
1389
1390
|
export type Action<
|
|
1390
|
-
Params extends
|
|
1391
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1391
1392
|
OutputData extends Record<string, any> | void = Record<string, any> | void,
|
|
1392
|
-
RouteId extends
|
|
1393
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1393
1394
|
> = (event: RequestEvent<Params, RouteId>) => MaybePromise<OutputData>;
|
|
1394
1395
|
|
|
1395
1396
|
/**
|
|
@@ -1397,9 +1398,9 @@ declare module '@sveltejs/kit' {
|
|
|
1397
1398
|
* See [form actions](https://svelte.dev/docs/kit/form-actions) for more information.
|
|
1398
1399
|
*/
|
|
1399
1400
|
export type Actions<
|
|
1400
|
-
Params extends
|
|
1401
|
+
Params extends AppLayoutParams<'/'> = AppLayoutParams<'/'>,
|
|
1401
1402
|
OutputData extends Record<string, any> | void = Record<string, any> | void,
|
|
1402
|
-
RouteId extends
|
|
1403
|
+
RouteId extends AppRouteId | null = AppRouteId | null
|
|
1403
1404
|
> = Record<string, Action<Params, OutputData, RouteId>>;
|
|
1404
1405
|
|
|
1405
1406
|
/**
|
|
@@ -2359,10 +2360,13 @@ declare module '$app/navigation' {
|
|
|
2359
2360
|
}
|
|
2360
2361
|
|
|
2361
2362
|
declare module '$app/paths' {
|
|
2363
|
+
import type { Asset, RouteId, RouteParams, Pathname, ResolvedPathname } from '$app/types';
|
|
2362
2364
|
/**
|
|
2363
2365
|
* A string that matches [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths).
|
|
2364
2366
|
*
|
|
2365
2367
|
* Example usage: `<a href="{base}/your-page">Link</a>`
|
|
2368
|
+
*
|
|
2369
|
+
* @deprecated Use [`resolve(...)`](https://svelte.dev/docs/kit/$app-paths#resolve) instead
|
|
2366
2370
|
*/
|
|
2367
2371
|
export let base: '' | `/${string}`;
|
|
2368
2372
|
|
|
@@ -2370,30 +2374,68 @@ declare module '$app/paths' {
|
|
|
2370
2374
|
* An absolute path that matches [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths).
|
|
2371
2375
|
*
|
|
2372
2376
|
* > [!NOTE] If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL.
|
|
2377
|
+
*
|
|
2378
|
+
* @deprecated Use [`asset(...)`](https://svelte.dev/docs/kit/$app-paths#asset) instead
|
|
2373
2379
|
*/
|
|
2374
2380
|
export let assets: '' | `https://${string}` | `http://${string}` | '/_svelte_kit_assets';
|
|
2375
2381
|
|
|
2382
|
+
type ResolveArgs<T extends RouteId | Pathname> = T extends RouteId
|
|
2383
|
+
? RouteParams<T> extends Record<string, never>
|
|
2384
|
+
? [route: T]
|
|
2385
|
+
: [route: T, params: RouteParams<T>]
|
|
2386
|
+
: [route: T];
|
|
2387
|
+
|
|
2376
2388
|
/**
|
|
2377
|
-
*
|
|
2389
|
+
* Resolve a pathname by prefixing it with the base path, if any, or resolve a route ID by populating dynamic segments with parameters.
|
|
2390
|
+
*
|
|
2391
|
+
* During server rendering, the base path is relative and depends on the page currently being rendered.
|
|
2392
|
+
*
|
|
2378
2393
|
* @example
|
|
2379
2394
|
* ```js
|
|
2380
|
-
* import {
|
|
2381
|
-
*
|
|
2382
|
-
*
|
|
2383
|
-
*
|
|
2384
|
-
*
|
|
2385
|
-
*
|
|
2386
|
-
*
|
|
2387
|
-
*
|
|
2388
|
-
* );
|
|
2395
|
+
* import { resolve } from '$app/paths';
|
|
2396
|
+
*
|
|
2397
|
+
* // using a pathname
|
|
2398
|
+
* const resolved = resolve(`/blog/hello-world`);
|
|
2399
|
+
*
|
|
2400
|
+
* // using a route ID plus parameters
|
|
2401
|
+
* const resolved = resolve('/blog/[slug]', {
|
|
2402
|
+
* slug: 'hello-world'
|
|
2403
|
+
* });
|
|
2404
|
+
* ```
|
|
2405
|
+
* @since 2.26
|
|
2406
|
+
*/
|
|
2407
|
+
export function resolve<T extends RouteId | Pathname>(...args: ResolveArgs<T>): ResolvedPathname;
|
|
2408
|
+
|
|
2409
|
+
/**
|
|
2410
|
+
* Resolve the URL of an asset in your `static` directory, by prefixing it with [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths) if configured, or otherwise by prefixing it with the base path.
|
|
2411
|
+
*
|
|
2412
|
+
* During server rendering, the base path is relative and depends on the page currently being rendered.
|
|
2413
|
+
*
|
|
2414
|
+
* @example
|
|
2415
|
+
* ```svelte
|
|
2416
|
+
* <script>
|
|
2417
|
+
* import { asset } from '$app/paths';
|
|
2418
|
+
* </script>
|
|
2419
|
+
*
|
|
2420
|
+
* <img alt="a potato" src={asset('potato.jpg')} />
|
|
2389
2421
|
* ```
|
|
2422
|
+
* @since 2.26
|
|
2423
|
+
*/
|
|
2424
|
+
export function asset(file: Asset): string;
|
|
2425
|
+
|
|
2426
|
+
/**
|
|
2427
|
+
* @deprecated Use [`resolve(...)`](https://svelte.dev/docs/kit/$app-paths#resolve) instead
|
|
2390
2428
|
*/
|
|
2391
|
-
export function resolveRoute
|
|
2429
|
+
export function resolveRoute<T extends RouteId | Pathname>(
|
|
2430
|
+
...args: ResolveArgs<T>
|
|
2431
|
+
): ResolvedPathname;
|
|
2392
2432
|
|
|
2393
2433
|
export {};
|
|
2394
2434
|
}
|
|
2395
2435
|
|
|
2396
2436
|
declare module '$app/server' {
|
|
2437
|
+
// @ts-ignore
|
|
2438
|
+
import { LayoutParams as AppLayoutParams, RouteId as AppRouteId } from '$app/types'
|
|
2397
2439
|
import type { RequestEvent } from '@sveltejs/kit';
|
|
2398
2440
|
/**
|
|
2399
2441
|
* Read the contents of an imported asset from the filesystem
|
|
@@ -2414,7 +2456,7 @@ declare module '$app/server' {
|
|
|
2414
2456
|
* In environments without [`AsyncLocalStorage`](https://nodejs.org/api/async_context.html#class-asynclocalstorage), this must be called synchronously (i.e. not after an `await`).
|
|
2415
2457
|
* @since 2.20.0
|
|
2416
2458
|
*/
|
|
2417
|
-
export function getRequestEvent(): RequestEvent<
|
|
2459
|
+
export function getRequestEvent(): RequestEvent<AppLayoutParams<"/">, any>;
|
|
2418
2460
|
|
|
2419
2461
|
export {};
|
|
2420
2462
|
}
|
package/types/index.d.ts.map
CHANGED
|
@@ -121,6 +121,9 @@
|
|
|
121
121
|
"replaceState",
|
|
122
122
|
"base",
|
|
123
123
|
"assets",
|
|
124
|
+
"ResolveArgs",
|
|
125
|
+
"resolve",
|
|
126
|
+
"asset",
|
|
124
127
|
"resolveRoute",
|
|
125
128
|
"read",
|
|
126
129
|
"getRequestEvent",
|
|
@@ -169,6 +172,6 @@
|
|
|
169
172
|
null,
|
|
170
173
|
null
|
|
171
174
|
],
|
|
172
|
-
"mappings": "
|
|
175
|
+
"mappings": "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",
|
|
173
176
|
"ignoreList": []
|
|
174
177
|
}
|