@sveltejs/kit 3.0.0-next.2 → 3.0.0-next.21
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 +62 -36
- package/src/cli.js +15 -12
- package/src/constants.js +6 -1
- package/src/core/adapt/builder.js +66 -72
- package/src/core/adapt/index.js +17 -6
- package/src/core/config/index.js +134 -80
- package/src/core/config/options.js +295 -273
- package/src/core/config/types.d.ts +1 -1
- package/src/core/env.js +146 -16
- package/src/core/generate_manifest/index.js +18 -15
- package/src/core/postbuild/analyse.js +8 -20
- package/src/core/postbuild/crawl.js +22 -6
- package/src/core/postbuild/entities.js +8 -2
- package/src/core/postbuild/fallback.js +4 -2
- package/src/core/postbuild/prerender.js +222 -70
- package/src/core/postbuild/queue.js +2 -1
- package/src/core/sync/create_manifest_data/conflict.js +1 -1
- package/src/core/sync/create_manifest_data/index.js +82 -62
- package/src/core/sync/sync.js +40 -31
- package/src/core/sync/ts.js +1 -1
- package/src/core/sync/utils.js +22 -2
- package/src/core/sync/{write_non_ambient.js → write_app_types.js} +107 -58
- package/src/core/sync/write_client_manifest.js +14 -29
- package/src/core/sync/write_env.js +7 -5
- package/src/core/sync/write_server.js +37 -45
- package/src/core/sync/write_tsconfig/index.js +274 -0
- package/src/core/sync/write_tsconfig/test-app/package.json +7 -0
- package/src/core/sync/write_tsconfig/utils.js +77 -0
- package/src/core/sync/write_tsconfig/validate.js +128 -0
- package/src/core/sync/write_types/index.js +127 -123
- package/src/core/utils.js +30 -5
- package/src/exports/env/index.js +77 -0
- package/src/exports/env/public.d.ts +55 -0
- package/src/exports/hooks/index.js +3 -9
- package/src/exports/hooks/public.d.ts +195 -0
- package/src/exports/hooks/sequence.js +9 -6
- package/src/exports/index.js +52 -29
- package/src/exports/internal/client.js +5 -0
- package/src/exports/internal/env.js +8 -5
- package/src/exports/internal/index.js +1 -90
- package/src/exports/internal/{event.js → server/event.js} +2 -3
- package/src/exports/internal/server/index.js +37 -0
- package/src/exports/internal/server/telemetry.js +95 -0
- package/src/exports/internal/shared.js +90 -0
- package/src/exports/node/index.js +64 -22
- package/src/exports/params/index.js +70 -0
- package/src/exports/params/public.d.ts +63 -0
- package/src/exports/public.d.ts +50 -1733
- package/src/exports/remote/index.js +11 -0
- package/src/exports/remote/public.d.ts +519 -0
- package/src/exports/url.js +86 -0
- package/src/exports/vite/build/build_server.js +54 -65
- package/src/exports/vite/build/remote.js +24 -19
- package/src/exports/vite/build/utils.js +0 -8
- package/src/exports/vite/dev/index.js +218 -146
- package/src/exports/vite/index.js +1590 -858
- package/src/exports/vite/module_ids.js +2 -2
- package/src/exports/vite/preview/index.js +40 -32
- package/src/exports/vite/public.d.ts +588 -0
- package/src/exports/vite/utils.js +84 -46
- package/src/pathname.js +55 -0
- package/src/runner.js +15 -0
- package/src/runtime/app/env/internal.js +4 -4
- package/src/runtime/app/env/types.d.ts +1 -1
- package/src/runtime/app/environment/index.js +3 -3
- package/src/runtime/app/{forms.js → forms/index.js} +73 -42
- package/src/runtime/app/forms/public.d.ts +2 -0
- package/src/runtime/app/forms/types.d.ts +56 -0
- package/src/runtime/app/internal/transport.js +53 -0
- package/src/runtime/app/manifest/index.js +1 -0
- package/src/runtime/app/{navigation.js → navigation/index.js} +2 -1
- package/src/runtime/app/navigation/public.d.ts +237 -0
- package/src/runtime/app/paths/client.js +37 -37
- package/src/runtime/app/paths/index.js +1 -1
- package/src/runtime/app/paths/internal/client.js +34 -2
- package/src/runtime/app/paths/internal/server.js +6 -23
- package/src/runtime/app/paths/internal.d.ts +3 -0
- package/src/runtime/app/paths/public.d.ts +1 -29
- package/src/runtime/app/paths/server.js +36 -17
- package/src/runtime/app/paths/types.d.ts +11 -19
- package/src/runtime/app/server/index.js +2 -2
- package/src/runtime/app/server/public.d.ts +201 -0
- package/src/runtime/app/server/remote/command.js +13 -11
- package/src/runtime/app/server/remote/form.js +61 -39
- package/src/runtime/app/server/remote/prerender.js +45 -45
- package/src/runtime/app/server/remote/query.js +106 -108
- package/src/runtime/app/server/remote/requested.js +27 -19
- package/src/runtime/app/server/remote/shared.js +76 -76
- package/src/runtime/app/service-worker/index.js +24 -0
- package/src/runtime/app/state/client.js +4 -2
- package/src/runtime/app/state/index.js +7 -5
- package/src/runtime/app/state/public.d.ts +72 -0
- package/src/runtime/app/state/server.js +3 -0
- package/src/runtime/app/stores.js +15 -78
- package/src/runtime/client/bundle.js +1 -1
- package/src/runtime/client/client-entry.js +3 -0
- package/src/runtime/client/client.js +1336 -648
- package/src/runtime/client/constants.js +3 -6
- package/src/runtime/client/entry.js +24 -3
- package/src/runtime/client/fetcher.js +25 -25
- package/src/runtime/client/ndjson.js +1 -1
- package/src/runtime/client/parse.js +1 -1
- package/src/runtime/client/payload.js +17 -0
- package/src/runtime/client/remote-functions/cache.svelte.js +3 -1
- package/src/runtime/client/remote-functions/command.svelte.js +37 -61
- package/src/runtime/client/remote-functions/form.svelte.js +267 -178
- package/src/runtime/client/remote-functions/prerender.svelte.js +32 -11
- package/src/runtime/client/remote-functions/query/index.js +10 -17
- package/src/runtime/client/remote-functions/query/instance.svelte.js +64 -18
- package/src/runtime/client/remote-functions/query/proxy.js +5 -5
- package/src/runtime/client/remote-functions/query-batch.svelte.js +61 -70
- package/src/runtime/client/remote-functions/query-live/index.js +1 -1
- package/src/runtime/client/remote-functions/query-live/instance.svelte.js +63 -21
- package/src/runtime/client/remote-functions/query-live/iterator.js +15 -12
- package/src/runtime/client/remote-functions/query-live/proxy.js +2 -12
- package/src/runtime/client/remote-functions/shared.svelte.js +90 -65
- package/src/runtime/client/snapshots.js +147 -0
- package/src/runtime/client/state.svelte.js +94 -55
- package/src/runtime/client/stream.js +3 -2
- package/src/runtime/client/types.d.ts +13 -9
- package/src/runtime/client/utils.js +22 -110
- package/src/runtime/components/root.svelte +56 -0
- package/src/runtime/env/dynamic/private.js +7 -0
- package/src/runtime/env/dynamic/public.js +7 -0
- package/src/runtime/env/static/private.js +6 -0
- package/src/runtime/env/static/public.js +6 -0
- package/src/runtime/form-utils.js +172 -61
- package/src/runtime/pathname.js +20 -32
- package/src/runtime/props.svelte.js +72 -0
- package/src/runtime/server/constants.js +0 -3
- package/src/runtime/server/cookie.js +72 -55
- package/src/runtime/server/csrf.js +65 -0
- package/src/runtime/server/data/index.js +49 -53
- package/src/runtime/server/dev.js +22 -0
- package/src/runtime/server/endpoint.js +6 -7
- package/src/runtime/server/env_module.js +0 -5
- package/src/runtime/server/errors.js +160 -0
- package/src/runtime/server/fetch.js +32 -39
- package/src/runtime/server/index.js +90 -64
- package/src/runtime/server/internal.js +71 -0
- package/src/runtime/server/page/actions.js +85 -64
- package/src/runtime/server/page/crypto.js +2 -2
- package/src/runtime/server/page/csp.js +88 -104
- package/src/runtime/server/page/data_serializer.js +24 -25
- package/src/runtime/server/page/index.js +36 -53
- package/src/runtime/server/page/load_data.js +50 -57
- package/src/runtime/server/page/render.js +173 -239
- package/src/runtime/server/page/respond_with_error.js +17 -31
- package/src/runtime/server/page/serialize_data.js +2 -13
- package/src/runtime/server/page/server_routing.js +85 -26
- package/src/runtime/server/remote-functions.js +640 -0
- package/src/runtime/server/respond.js +190 -131
- package/src/runtime/server/sourcemaps.js +183 -0
- package/src/runtime/server/state.js +53 -0
- package/src/runtime/server/utils.js +13 -155
- package/src/runtime/shared.js +20 -40
- package/src/runtime/utils.js +3 -0
- package/src/types/ambient-private.d.ts +11 -1
- package/src/types/ambient.d.ts +87 -36
- package/src/types/global-private.d.ts +25 -25
- package/src/types/internal.d.ts +163 -157
- package/src/types/private.d.ts +41 -1
- package/src/utils/error.js +28 -4
- package/src/utils/escape.js +9 -25
- package/src/utils/features.js +1 -1
- package/src/utils/filesystem.js +1 -23
- package/src/utils/fork.js +7 -2
- package/src/utils/hash.js +21 -0
- package/src/utils/http.js +8 -7
- package/src/utils/import.js +9 -2
- package/src/utils/imports.js +83 -0
- package/src/utils/mime.js +9 -0
- package/src/utils/page_nodes.js +6 -7
- package/src/utils/params.js +67 -0
- package/src/utils/regex.js +9 -0
- package/src/utils/routing.js +145 -73
- package/src/utils/shared-iterator.js +5 -0
- package/src/utils/streaming.js +14 -4
- package/src/utils/url.js +33 -2
- package/src/version.js +1 -1
- package/types/index.d.ts +2616 -2433
- package/types/index.d.ts.map +120 -106
- package/src/core/sync/write_ambient.js +0 -18
- package/src/core/sync/write_root.js +0 -148
- package/src/core/sync/write_tsconfig.js +0 -250
- package/src/exports/internal/server.js +0 -22
- package/src/exports/node/polyfills.js +0 -30
- package/src/runtime/server/app.js +0 -9
- package/src/runtime/server/remote.js +0 -457
- package/src/runtime/shared-server.js +0 -7
- package/src/runtime/telemetry/otel.js +0 -21
- package/src/runtime/telemetry/record_span.js +0 -65
- package/src/types/synthetic/$lib.md +0 -5
- /package/src/exports/internal/{remote-functions.js → server/remote-functions.js} +0 -0
- /package/src/{runtime/telemetry/noop.js → telemetry.js} +0 -0
package/src/types/internal.d.ts
CHANGED
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component } from 'svelte';
|
|
2
2
|
import {
|
|
3
|
-
Config,
|
|
4
3
|
ServerLoad,
|
|
5
|
-
Handle,
|
|
6
|
-
HandleServerError,
|
|
7
|
-
KitConfig,
|
|
8
4
|
Load,
|
|
9
5
|
RequestHandler,
|
|
10
|
-
ResolveOptions,
|
|
11
6
|
Server,
|
|
12
7
|
ServerInitOptions,
|
|
13
|
-
HandleFetch,
|
|
14
8
|
Actions,
|
|
9
|
+
SSRManifest,
|
|
10
|
+
Emulator
|
|
11
|
+
} from '@sveltejs/kit';
|
|
12
|
+
import { RemoteFormIssue, RemoteQuery, RemoteLiveQuery } from '@sveltejs/kit/remote';
|
|
13
|
+
import { Config } from '@sveltejs/kit/vite';
|
|
14
|
+
import { RequestEvent } from '$app/server';
|
|
15
|
+
import {
|
|
16
|
+
ClientInit,
|
|
17
|
+
Handle,
|
|
15
18
|
HandleClientError,
|
|
19
|
+
HandleFetch,
|
|
20
|
+
HandleServerError,
|
|
16
21
|
Reroute,
|
|
17
|
-
|
|
18
|
-
SSRManifest,
|
|
19
|
-
Emulator,
|
|
20
|
-
Adapter,
|
|
22
|
+
ResolveOptions,
|
|
21
23
|
ServerInit,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
HandleValidationError,
|
|
25
|
-
RemoteFormIssue,
|
|
26
|
-
RemoteQuery,
|
|
27
|
-
RemoteLiveQuery
|
|
28
|
-
} from '@sveltejs/kit';
|
|
24
|
+
Transport
|
|
25
|
+
} from '@sveltejs/kit/hooks';
|
|
29
26
|
import {
|
|
30
27
|
HttpMethod,
|
|
31
28
|
MaybePromise,
|
|
@@ -44,13 +41,13 @@ export interface ServerModule {
|
|
|
44
41
|
export interface ServerInternalModule {
|
|
45
42
|
set_assets(path: string): void;
|
|
46
43
|
set_building(): void;
|
|
47
|
-
set_env(environment: Record<string, string>): void;
|
|
48
44
|
set_manifest(manifest: SSRManifest): void;
|
|
49
45
|
set_prerendering(): void;
|
|
50
46
|
set_read_implementation(implementation: (path: string) => ReadableStream): void;
|
|
51
47
|
set_version(version: string): void;
|
|
52
|
-
set_fix_stack_trace(fix_stack_trace: (error:
|
|
48
|
+
set_fix_stack_trace(fix_stack_trace: (error: Error) => void): void;
|
|
53
49
|
get_hooks: () => Promise<Record<string, any>>;
|
|
50
|
+
log_response: (status: number, request: Request) => void;
|
|
54
51
|
}
|
|
55
52
|
|
|
56
53
|
export interface Asset {
|
|
@@ -101,6 +98,9 @@ export interface BuildData {
|
|
|
101
98
|
routes?: SSRClientRoute[];
|
|
102
99
|
stylesheets: string[];
|
|
103
100
|
fonts: string[];
|
|
101
|
+
/**
|
|
102
|
+
* Whether the client uses public dynamic env vars — `$env/dynamic/public` or `$app/env/public`.
|
|
103
|
+
*/
|
|
104
104
|
uses_env_dynamic_public: boolean;
|
|
105
105
|
/** Only set in case of `bundleStrategy === 'inline'`. */
|
|
106
106
|
inline?: {
|
|
@@ -112,7 +112,7 @@ export interface BuildData {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
export interface CSRPageNode {
|
|
115
|
-
component:
|
|
115
|
+
component: Component;
|
|
116
116
|
universal: {
|
|
117
117
|
load?: Load;
|
|
118
118
|
trailingSlash?: TrailingSlash;
|
|
@@ -155,9 +155,8 @@ export interface ServerHooks {
|
|
|
155
155
|
handleFetch: HandleFetch;
|
|
156
156
|
handle: Handle;
|
|
157
157
|
handleError: HandleServerError;
|
|
158
|
-
handleValidationError: HandleValidationError;
|
|
159
158
|
reroute: Reroute;
|
|
160
|
-
transport
|
|
159
|
+
transport?: Transport;
|
|
161
160
|
init?: ServerInit;
|
|
162
161
|
}
|
|
163
162
|
|
|
@@ -173,28 +172,27 @@ export interface Env {
|
|
|
173
172
|
public: Record<string, string>;
|
|
174
173
|
}
|
|
175
174
|
|
|
175
|
+
export interface InternalRequestOptions extends RequestOptions {
|
|
176
|
+
prerendering?: PrerenderOptions;
|
|
177
|
+
/** @internal for saving dependencies during prerendering and generating fallback pages */
|
|
178
|
+
read: (file: string) => Buffer<ArrayBuffer>;
|
|
179
|
+
/** @internal used during development to check feature availability depending on the current route */
|
|
180
|
+
before_handle?: (
|
|
181
|
+
event: RequestEvent,
|
|
182
|
+
config: any,
|
|
183
|
+
prerender: PrerenderOption,
|
|
184
|
+
handle: () => Promise<Response>
|
|
185
|
+
) => Promise<Response>;
|
|
186
|
+
emulator?: Emulator;
|
|
187
|
+
}
|
|
188
|
+
|
|
176
189
|
export class InternalServer extends Server {
|
|
177
190
|
init(options: ServerInitOptions): Promise<void>;
|
|
178
|
-
respond(
|
|
179
|
-
request: Request,
|
|
180
|
-
options: RequestOptions & {
|
|
181
|
-
prerendering?: PrerenderOptions;
|
|
182
|
-
/** @internal for saving dependencies during prerendering and generating fallback pages */
|
|
183
|
-
read: (file: string) => Buffer<ArrayBuffer>;
|
|
184
|
-
/** @internal used during development to check feature availability depending on the current route */
|
|
185
|
-
before_handle?: (
|
|
186
|
-
event: RequestEvent,
|
|
187
|
-
config: any,
|
|
188
|
-
prerender: PrerenderOption,
|
|
189
|
-
handle: () => Promise<Response>
|
|
190
|
-
) => Promise<Response>;
|
|
191
|
-
emulator?: Emulator;
|
|
192
|
-
}
|
|
193
|
-
): Promise<Response>;
|
|
191
|
+
respond(request: Request, options: InternalRequestOptions): Promise<Response>;
|
|
194
192
|
}
|
|
195
193
|
|
|
196
194
|
export interface ManifestData {
|
|
197
|
-
/** Static files from `
|
|
195
|
+
/** Static files from `config.files.assets`. */
|
|
198
196
|
assets: Asset[];
|
|
199
197
|
hooks: {
|
|
200
198
|
client: string | null;
|
|
@@ -203,7 +201,7 @@ export interface ManifestData {
|
|
|
203
201
|
};
|
|
204
202
|
nodes: PageNode[];
|
|
205
203
|
routes: RouteData[];
|
|
206
|
-
|
|
204
|
+
params: string | null;
|
|
207
205
|
}
|
|
208
206
|
|
|
209
207
|
export interface RemoteChunk {
|
|
@@ -232,15 +230,15 @@ export interface PrerenderDependency {
|
|
|
232
230
|
body: null | string | Uint8Array;
|
|
233
231
|
}
|
|
234
232
|
|
|
233
|
+
/** Internal context for the prerendering process */
|
|
235
234
|
export interface PrerenderOptions {
|
|
236
235
|
cache?: string; // including this here is a bit of a hack, but it makes it easy to add <meta http-equiv>
|
|
237
236
|
fallback?: boolean;
|
|
238
237
|
dependencies: Map<string, PrerenderDependency>;
|
|
239
|
-
/**
|
|
240
|
-
* For each key the (possibly still pending) result of a prerendered remote function.
|
|
241
|
-
* Used to deduplicate requests to the same remote function with the same arguments.
|
|
242
|
-
*/
|
|
238
|
+
/** Results of remote `prerender` functions, shared across the whole prerender run so that each only executes once */
|
|
243
239
|
remote_responses: Map<string, Promise<any>>;
|
|
240
|
+
/** Route IDs whose resolution module has been emitted, shared across the whole prerender run so that each only generates once */
|
|
241
|
+
resolved_route_ids: Set<string>;
|
|
244
242
|
/** True for the duration of a call to the `reroute` hook */
|
|
245
243
|
inside_reroute?: boolean;
|
|
246
244
|
}
|
|
@@ -249,7 +247,7 @@ export type RecursiveRequired<T> = {
|
|
|
249
247
|
// Recursive implementation of TypeScript's Required utility type.
|
|
250
248
|
// Will recursively continue until it reaches a primitive or Function
|
|
251
249
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
252
|
-
[K in keyof T]-?: Extract<T[K], Function> extends never // If it does not have a Function type
|
|
250
|
+
[K in keyof T]-?: Extract<T[K], Function | (`${string}:` & {})> extends never // If it does not have a Function type
|
|
253
251
|
? RecursiveRequired<T[K]> // recursively continue through.
|
|
254
252
|
: T[K]; // Use the exact type for everything else
|
|
255
253
|
};
|
|
@@ -296,6 +294,7 @@ export interface RouteData {
|
|
|
296
294
|
|
|
297
295
|
export type ServerRedirectNode = {
|
|
298
296
|
type: 'redirect';
|
|
297
|
+
status: number;
|
|
299
298
|
location: string;
|
|
300
299
|
};
|
|
301
300
|
|
|
@@ -307,38 +306,42 @@ export type ServerNodesResponse = {
|
|
|
307
306
|
nodes: Array<ServerDataNode | ServerDataSkippedNode | ServerErrorNode | null>;
|
|
308
307
|
};
|
|
309
308
|
|
|
309
|
+
export type RemoteFunctionDataNode = {
|
|
310
|
+
/** value */
|
|
311
|
+
v?: any;
|
|
312
|
+
/** error */
|
|
313
|
+
e?: App.Error;
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
export type RemoteFunctionData = {
|
|
317
|
+
/** The result of a command/form invocation */
|
|
318
|
+
_?: any;
|
|
319
|
+
/** `prerender` data that was accessed during the request */
|
|
320
|
+
p?: Record<string, RemoteFunctionDataNode>;
|
|
321
|
+
/** `query` or `query.batch` data that was accessed during the request */
|
|
322
|
+
q?: Record<string, RemoteFunctionDataNode>;
|
|
323
|
+
/** `query.live` data that was accessed during the request */
|
|
324
|
+
l?: Record<string, RemoteFunctionDataNode>;
|
|
325
|
+
/** `form` outputs (result/issues/input) from a non-enhanced submission, keyed by the client-side action id */
|
|
326
|
+
f?: Record<string, RemoteFunctionDataNode>;
|
|
327
|
+
/** Whether there were any refreshes/reconnects during the request */
|
|
328
|
+
r?: true;
|
|
329
|
+
/** The redirect location, if any */
|
|
330
|
+
redirect?: string;
|
|
331
|
+
};
|
|
332
|
+
|
|
310
333
|
export type RemoteFunctionResponse =
|
|
311
334
|
| (ServerRedirectNode & {
|
|
312
|
-
/**
|
|
313
|
-
|
|
314
|
-
/** devalue'd Record<string, any> */
|
|
315
|
-
reconnects?: string;
|
|
335
|
+
/** stringified RemoteFunctionData */
|
|
336
|
+
data: string;
|
|
316
337
|
})
|
|
317
338
|
| ServerErrorNode
|
|
318
339
|
| {
|
|
319
340
|
type: 'result';
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
refreshes: string | undefined;
|
|
323
|
-
/** devalue'd Record<string, any> */
|
|
324
|
-
reconnects: string | undefined;
|
|
341
|
+
/** stringified RemoteFunctionData */
|
|
342
|
+
data: string;
|
|
325
343
|
};
|
|
326
344
|
|
|
327
|
-
export type RemoteSingleflightResult = {
|
|
328
|
-
type: 'result';
|
|
329
|
-
data: any;
|
|
330
|
-
};
|
|
331
|
-
|
|
332
|
-
export type RemoteSingleflightError = {
|
|
333
|
-
type: 'error';
|
|
334
|
-
status?: number;
|
|
335
|
-
error: App.Error;
|
|
336
|
-
};
|
|
337
|
-
|
|
338
|
-
export type RemoteSingleflightEntry = RemoteSingleflightResult | RemoteSingleflightError;
|
|
339
|
-
|
|
340
|
-
export type RemoteSingleflightMap = Record<string, RemoteSingleflightEntry>;
|
|
341
|
-
|
|
342
345
|
export type RemoteLiveQueryUserFunctionReturnType<Output> = MaybePromise<
|
|
343
346
|
| AsyncGenerator<Output>
|
|
344
347
|
| AsyncIterator<Output>
|
|
@@ -388,14 +391,10 @@ export interface ServerDataSkippedNode {
|
|
|
388
391
|
export interface ServerErrorNode {
|
|
389
392
|
type: 'error';
|
|
390
393
|
error: App.Error;
|
|
391
|
-
/**
|
|
392
|
-
* Only set for HttpErrors.
|
|
393
|
-
*/
|
|
394
|
-
status?: number;
|
|
395
394
|
}
|
|
396
395
|
|
|
397
396
|
export interface ServerMetadataRoute {
|
|
398
|
-
config: any
|
|
397
|
+
config: Record<string, any>;
|
|
399
398
|
api: {
|
|
400
399
|
methods: Array<HttpMethod | '*'>;
|
|
401
400
|
};
|
|
@@ -418,27 +417,7 @@ export interface ServerMetadata {
|
|
|
418
417
|
remotes: Map<string, Map<string, { type: RemoteInternals['type']; dynamic: boolean }>>;
|
|
419
418
|
}
|
|
420
419
|
|
|
421
|
-
export
|
|
422
|
-
default: {
|
|
423
|
-
render(
|
|
424
|
-
props: Record<string, any>,
|
|
425
|
-
opts: { context: Map<any, any>; csp?: { nonce?: string; hash?: boolean } }
|
|
426
|
-
): {
|
|
427
|
-
html: string;
|
|
428
|
-
head: string;
|
|
429
|
-
css: {
|
|
430
|
-
code: string;
|
|
431
|
-
map: any; // TODO
|
|
432
|
-
};
|
|
433
|
-
/** Until we require all Svelte versions that support hashes, this might not be defined */
|
|
434
|
-
hashes?: {
|
|
435
|
-
script: Array<`sha256-${string}`>;
|
|
436
|
-
};
|
|
437
|
-
};
|
|
438
|
-
};
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
export type SSRComponentLoader = () => Promise<SSRComponent>;
|
|
420
|
+
export type SSRComponentLoader = () => Promise<Component>;
|
|
442
421
|
|
|
443
422
|
export interface UniversalNode {
|
|
444
423
|
/** Is `null` in case static analysis succeeds but the node is ssr=false */
|
|
@@ -447,7 +426,7 @@ export interface UniversalNode {
|
|
|
447
426
|
ssr?: boolean;
|
|
448
427
|
csr?: boolean;
|
|
449
428
|
trailingSlash?: TrailingSlash;
|
|
450
|
-
config?: any
|
|
429
|
+
config?: Record<string, any>;
|
|
451
430
|
entries?: PrerenderEntryGenerator;
|
|
452
431
|
}
|
|
453
432
|
|
|
@@ -458,7 +437,7 @@ export interface ServerNode {
|
|
|
458
437
|
csr?: boolean;
|
|
459
438
|
trailingSlash?: TrailingSlash;
|
|
460
439
|
actions?: Actions;
|
|
461
|
-
config?: any
|
|
440
|
+
config?: Record<string, any>;
|
|
462
441
|
entries?: PrerenderEntryGenerator;
|
|
463
442
|
}
|
|
464
443
|
|
|
@@ -477,7 +456,10 @@ export interface SSRNode {
|
|
|
477
456
|
|
|
478
457
|
/**
|
|
479
458
|
* During development, all styles are inlined for the page to avoid FOUC.
|
|
480
|
-
* But in production, this stores styles that are below the inline threshold
|
|
459
|
+
* But in production, this stores styles that are below the inline threshold.
|
|
460
|
+
* It returns a Promise during development because Vite needs to load the
|
|
461
|
+
* modules on demand. But in production, the contents have been precomputed
|
|
462
|
+
* during the build, so it can return synchronously.
|
|
481
463
|
*/
|
|
482
464
|
inline_styles?(): MaybePromise<
|
|
483
465
|
Record<string, string | ((assets: string, base: string) => string)>
|
|
@@ -494,18 +476,16 @@ export type SSRNodeLoader = () => Promise<SSRNode>;
|
|
|
494
476
|
|
|
495
477
|
export interface SSROptions {
|
|
496
478
|
app_template_contains_nonce: boolean;
|
|
497
|
-
|
|
498
|
-
csp: ValidatedConfig['kit']['csp'];
|
|
479
|
+
csp: ValidatedConfig['csp'];
|
|
499
480
|
csrf_check_origin: boolean;
|
|
500
481
|
csrf_trusted_origins: string[];
|
|
501
482
|
embedded: boolean;
|
|
502
483
|
hash_routing: boolean;
|
|
503
484
|
hooks: ServerHooks;
|
|
504
|
-
link_header_preload: ValidatedConfig['
|
|
505
|
-
|
|
485
|
+
link_header_preload: ValidatedConfig['output']['linkHeaderPreload'];
|
|
486
|
+
paths_origin: string | undefined;
|
|
506
487
|
service_worker: boolean;
|
|
507
488
|
service_worker_options: RegistrationOptions;
|
|
508
|
-
server_error_boundaries: boolean;
|
|
509
489
|
templates: {
|
|
510
490
|
app(values: {
|
|
511
491
|
head: string;
|
|
@@ -516,6 +496,7 @@ export interface SSROptions {
|
|
|
516
496
|
}): string;
|
|
517
497
|
error(values: { message: string; status: number }): string;
|
|
518
498
|
};
|
|
499
|
+
version: string;
|
|
519
500
|
version_hash: string;
|
|
520
501
|
}
|
|
521
502
|
|
|
@@ -531,7 +512,7 @@ export type RemotePrerenderInputsGenerator<Input = any> = () => MaybePromise<Inp
|
|
|
531
512
|
export type SSREndpoint = Partial<Record<HttpMethod, RequestHandler>> & {
|
|
532
513
|
prerender?: PrerenderOption;
|
|
533
514
|
trailingSlash?: TrailingSlash;
|
|
534
|
-
config?: any
|
|
515
|
+
config?: Record<string, any>;
|
|
535
516
|
entries?: PrerenderEntryGenerator;
|
|
536
517
|
fallback?: RequestHandler;
|
|
537
518
|
};
|
|
@@ -554,39 +535,6 @@ export interface SSRClientRoute {
|
|
|
554
535
|
leaf: [has_server_load: boolean, node_id: number];
|
|
555
536
|
}
|
|
556
537
|
|
|
557
|
-
export interface SSRState {
|
|
558
|
-
fallback?: string;
|
|
559
|
-
getClientAddress(): string;
|
|
560
|
-
/**
|
|
561
|
-
* True if we're currently attempting to render an error page.
|
|
562
|
-
*/
|
|
563
|
-
error: boolean;
|
|
564
|
-
/**
|
|
565
|
-
* Allows us to prevent `event.fetch` from making infinitely looping internal requests.
|
|
566
|
-
*/
|
|
567
|
-
depth: number;
|
|
568
|
-
platform?: any;
|
|
569
|
-
prerendering?: PrerenderOptions;
|
|
570
|
-
/**
|
|
571
|
-
* When fetching data from a +server.js endpoint in `load`, the page's
|
|
572
|
-
* prerender option is inherited by the endpoint, unless overridden.
|
|
573
|
-
*/
|
|
574
|
-
prerender_default?: PrerenderOption;
|
|
575
|
-
/** @internal reads from the filesystem when user code tries to fetch a static asset */
|
|
576
|
-
read?: (file: string) => Buffer<ArrayBuffer>;
|
|
577
|
-
/**
|
|
578
|
-
* Used to set up `__SVELTEKIT_TRACK__` which checks if a used feature is supported.
|
|
579
|
-
* E.g. if `read` from `$app/server` is used, it checks whether the route's config is compatible.
|
|
580
|
-
*/
|
|
581
|
-
before_handle?: (
|
|
582
|
-
event: RequestEvent,
|
|
583
|
-
config: any,
|
|
584
|
-
prerender: PrerenderOption,
|
|
585
|
-
handle: () => Promise<Response>
|
|
586
|
-
) => Promise<Response>;
|
|
587
|
-
emulator?: Emulator;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
538
|
export type StrictBody = string | ArrayBufferView;
|
|
591
539
|
|
|
592
540
|
export interface Uses {
|
|
@@ -598,14 +546,10 @@ export interface Uses {
|
|
|
598
546
|
search_params: Set<string>;
|
|
599
547
|
}
|
|
600
548
|
|
|
601
|
-
export type ValidatedConfig = Config & {
|
|
602
|
-
|
|
603
|
-
extensions: string[];
|
|
549
|
+
export type ValidatedConfig = RecursiveRequired<Omit<Config, 'preprocess'>> & {
|
|
550
|
+
preprocess: Config['preprocess'];
|
|
604
551
|
};
|
|
605
552
|
|
|
606
|
-
// TODO: remove the omit in 4.0
|
|
607
|
-
export type ValidatedKitConfig = Omit<RecursiveRequired<KitConfig>, 'adapter'>;
|
|
608
|
-
|
|
609
553
|
export type BinaryFormMeta = {
|
|
610
554
|
remote_refreshes?: string[];
|
|
611
555
|
validate_only?: boolean;
|
|
@@ -663,6 +607,11 @@ export interface RemoteCommandInternals extends BaseRemoteInternals {
|
|
|
663
607
|
|
|
664
608
|
export interface RemoteFormInternals extends BaseRemoteInternals {
|
|
665
609
|
type: 'form';
|
|
610
|
+
/**
|
|
611
|
+
* For keyed (`form.for(key)`) instances: the id as the client computes it
|
|
612
|
+
* (the key is JSON-stringified but not URI-encoded, unlike `id`)
|
|
613
|
+
*/
|
|
614
|
+
key?: string;
|
|
666
615
|
fn(body: Record<string, any>, meta: BinaryFormMeta, form_data: FormData | null): Promise<any>;
|
|
667
616
|
}
|
|
668
617
|
|
|
@@ -701,22 +650,59 @@ export type RecordSpan = <T>(options: {
|
|
|
701
650
|
* used for tracking things like remote function calls
|
|
702
651
|
*/
|
|
703
652
|
export interface RequestState {
|
|
704
|
-
readonly
|
|
705
|
-
readonly
|
|
706
|
-
|
|
707
|
-
readonly
|
|
708
|
-
|
|
709
|
-
|
|
653
|
+
readonly getClientAddress: () => string;
|
|
654
|
+
readonly platform?: any;
|
|
655
|
+
/** @internal reads from the filesystem when user code tries to fetch a static asset */
|
|
656
|
+
readonly read?: (file: string) => Buffer<ArrayBuffer>;
|
|
657
|
+
/**
|
|
658
|
+
* Used to set up `__SVELTEKIT_TRACK__` which checks if a used feature is supported.
|
|
659
|
+
* E.g. if `read` from `$app/server` is used, it checks whether the route's config is compatible.
|
|
660
|
+
*/
|
|
661
|
+
readonly before_handle?: (
|
|
662
|
+
event: RequestEvent,
|
|
663
|
+
config: Record<string, any>,
|
|
664
|
+
prerender: PrerenderOption,
|
|
665
|
+
handle: () => Promise<Response>
|
|
666
|
+
) => Promise<Response>;
|
|
667
|
+
readonly emulator?: Emulator;
|
|
668
|
+
readonly prerendering?: PrerenderOptions;
|
|
669
|
+
/**
|
|
670
|
+
* When fetching data from a +server.js endpoint in `load`, the page's
|
|
671
|
+
* prerender option is inherited by the endpoint, unless overridden.
|
|
672
|
+
*/
|
|
673
|
+
prerender_default?: PrerenderOption;
|
|
674
|
+
/**
|
|
675
|
+
* True if we're currently attempting to render an error page.
|
|
676
|
+
*/
|
|
677
|
+
error: boolean;
|
|
678
|
+
/**
|
|
679
|
+
* Allows us to prevent `event.fetch` from making infinitely looping internal requests.
|
|
680
|
+
*/
|
|
681
|
+
readonly depth: number;
|
|
710
682
|
readonly remote: {
|
|
711
|
-
data
|
|
712
|
-
|
|
713
|
-
|
|
683
|
+
/** Resolved query/prerender data, populated by `await myQuery()` or `myQuery.set(...)` */
|
|
684
|
+
data: null | Map<RemoteInternals, Record<string, MaybePromise<any>>>;
|
|
685
|
+
/**
|
|
686
|
+
* Data that is implicitly included because it was awaited during render.
|
|
687
|
+
* This is serialized during SSR if the promise already resolved
|
|
688
|
+
*/
|
|
689
|
+
implicit: null | Map<RemoteInternals, Record<string, () => MaybePromise<any>>>;
|
|
690
|
+
/**
|
|
691
|
+
* Data that is explicitly included because of a `set(...)`, `refresh()` or
|
|
692
|
+
* `reconnect()`. The stored function is invoked lazily at the end of the
|
|
693
|
+
* request by `collect_remote_data`; if the query was already read (and thus
|
|
694
|
+
* cached) earlier in the request, invoking it does no additional work. This
|
|
695
|
+
* is always awaited and serialized.
|
|
696
|
+
*/
|
|
697
|
+
explicit: null | Map<
|
|
698
|
+
string,
|
|
699
|
+
{
|
|
700
|
+
internals: RemoteInternals;
|
|
701
|
+
fn: () => Promise<any>;
|
|
702
|
+
}
|
|
714
703
|
>;
|
|
715
704
|
/** Instances created via `myForm.for(...)` */
|
|
716
705
|
forms: null | Map<string, any>;
|
|
717
|
-
/** A map of remote function key to corresponding single-flight-mutation promise */
|
|
718
|
-
refreshes: null | Map<string, Promise<any>>;
|
|
719
|
-
reconnects: null | Map<string, Promise<void>>;
|
|
720
706
|
/** A map of remote function ID to payloads requested for refreshing by the client */
|
|
721
707
|
requested: null | Map<string, string[]>;
|
|
722
708
|
/** A map of query.batch ID to payloads requested for that batch within the same macrotask */
|
|
@@ -739,8 +725,10 @@ export interface RequestState {
|
|
|
739
725
|
live_iterators: null | Map<string, SharedIterator<any>>;
|
|
740
726
|
};
|
|
741
727
|
readonly is_in_remote_function: boolean;
|
|
728
|
+
readonly is_in_remote_form_or_command: boolean;
|
|
729
|
+
readonly is_in_remote_query: boolean;
|
|
730
|
+
readonly is_in_remote_prerender: boolean;
|
|
742
731
|
readonly is_in_render: boolean;
|
|
743
|
-
readonly is_in_universal_load: boolean;
|
|
744
732
|
}
|
|
745
733
|
|
|
746
734
|
export interface RequestStore {
|
|
@@ -748,5 +736,23 @@ export interface RequestStore {
|
|
|
748
736
|
state: RequestState;
|
|
749
737
|
}
|
|
750
738
|
|
|
739
|
+
/** Type of the `__sveltekit_abc123` object in the init `<script>` */
|
|
740
|
+
export interface SvelteKitPayload {
|
|
741
|
+
/** The application version */
|
|
742
|
+
version: string;
|
|
743
|
+
/** The basepath, usually relative to the current page */
|
|
744
|
+
base: string;
|
|
745
|
+
/** Path to externally-hosted assets */
|
|
746
|
+
assets?: string;
|
|
747
|
+
/** Public environment variables */
|
|
748
|
+
env?: Record<string, string>;
|
|
749
|
+
/** Serialized data from query/form/command functions */
|
|
750
|
+
data?: RemoteFunctionData;
|
|
751
|
+
/** Create a placeholder promise */
|
|
752
|
+
defer?: (id: number) => Promise<any>;
|
|
753
|
+
/** Resolve a placeholder promise */
|
|
754
|
+
resolve?: (data: { id: number; data: any; error: any }) => void;
|
|
755
|
+
}
|
|
756
|
+
|
|
751
757
|
export * from '../exports/index.js';
|
|
752
758
|
export * from './private.js';
|
package/src/types/private.d.ts
CHANGED
|
@@ -61,7 +61,10 @@ export namespace Csp {
|
|
|
61
61
|
| 'unsafe-eval'
|
|
62
62
|
| 'unsafe-hashes'
|
|
63
63
|
| 'unsafe-inline'
|
|
64
|
+
| 'unsafe-allow-redirects'
|
|
65
|
+
| 'unsafe-webtransport-hashes'
|
|
64
66
|
| 'wasm-unsafe-eval'
|
|
67
|
+
| 'trusted-types-eval'
|
|
65
68
|
| 'none';
|
|
66
69
|
type CryptoSource = `${'nonce' | 'sha256' | 'sha384' | 'sha512'}-${string}`;
|
|
67
70
|
type FrameSource = HostSource | SchemeSource | 'self' | 'none';
|
|
@@ -70,7 +73,16 @@ export namespace Csp {
|
|
|
70
73
|
type HostProtocolSchemes = `${string}://` | '';
|
|
71
74
|
type HttpDelineator = '/' | '?' | '#' | '\\';
|
|
72
75
|
type PortScheme = `:${number}` | '' | ':*';
|
|
73
|
-
type SchemeSource =
|
|
76
|
+
type SchemeSource =
|
|
77
|
+
| 'http:'
|
|
78
|
+
| 'https:'
|
|
79
|
+
| 'ws:'
|
|
80
|
+
| 'wss:'
|
|
81
|
+
| 'data:'
|
|
82
|
+
| 'mediastream:'
|
|
83
|
+
| 'blob:'
|
|
84
|
+
| 'filesystem:'
|
|
85
|
+
| (`${string}:` & {});
|
|
74
86
|
type Source = HostSource | SchemeSource | CryptoSource | BaseSource;
|
|
75
87
|
type Sources = Source[];
|
|
76
88
|
}
|
|
@@ -147,10 +159,18 @@ export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' |
|
|
|
147
159
|
export interface Logger {
|
|
148
160
|
(msg: string): void;
|
|
149
161
|
success(msg: string): void;
|
|
162
|
+
/** Print a bold red message to stderr */
|
|
150
163
|
error(msg: string): void;
|
|
164
|
+
/** Print a bold yellow message to stderr */
|
|
151
165
|
warn(msg: string): void;
|
|
166
|
+
/** Print faded text to stdout if `verbose === true` */
|
|
152
167
|
minor(msg: string): void;
|
|
168
|
+
/** Print to stdout if `verbose === true` */
|
|
153
169
|
info(msg: string): void;
|
|
170
|
+
/** Print to stderr without formatting */
|
|
171
|
+
err(msg: string): void;
|
|
172
|
+
/** Print a bold red message, followed by a stack trace for each error (following `.cause` chains) */
|
|
173
|
+
prettyError(error: unknown, caller?: string): void;
|
|
154
174
|
}
|
|
155
175
|
|
|
156
176
|
export type MaybePromise<T> = T | Promise<T>;
|
|
@@ -212,6 +232,10 @@ export interface PrerenderUnseenRoutesHandler {
|
|
|
212
232
|
(details: { routes: string[]; message: string }): void;
|
|
213
233
|
}
|
|
214
234
|
|
|
235
|
+
export interface PrerenderInvalidUrlHandler {
|
|
236
|
+
(details: { href: string; referrer: string | null; message: string }): void;
|
|
237
|
+
}
|
|
238
|
+
|
|
215
239
|
export type PrerenderHttpErrorHandlerValue = 'fail' | 'warn' | 'ignore' | PrerenderHttpErrorHandler;
|
|
216
240
|
export type PrerenderMissingIdHandlerValue = 'fail' | 'warn' | 'ignore' | PrerenderMissingIdHandler;
|
|
217
241
|
export type PrerenderUnseenRoutesHandlerValue =
|
|
@@ -224,6 +248,11 @@ export type PrerenderEntryGeneratorMismatchHandlerValue =
|
|
|
224
248
|
| 'warn'
|
|
225
249
|
| 'ignore'
|
|
226
250
|
| PrerenderEntryGeneratorMismatchHandler;
|
|
251
|
+
export type PrerenderInvalidUrlHandlerValue =
|
|
252
|
+
| 'fail'
|
|
253
|
+
| 'warn'
|
|
254
|
+
| 'ignore'
|
|
255
|
+
| PrerenderInvalidUrlHandler;
|
|
227
256
|
|
|
228
257
|
export type PrerenderOption = boolean | 'auto';
|
|
229
258
|
|
|
@@ -252,3 +281,14 @@ export type DeepPartial<T> = T extends Record<PropertyKey, unknown> | unknown[]
|
|
|
252
281
|
: T | undefined;
|
|
253
282
|
|
|
254
283
|
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
284
|
+
|
|
285
|
+
export type HasNonOptionalBoolean<T> =
|
|
286
|
+
IsAny<T> extends true
|
|
287
|
+
? never
|
|
288
|
+
: [T] extends [boolean]
|
|
289
|
+
? true
|
|
290
|
+
: T extends Array<infer U>
|
|
291
|
+
? HasNonOptionalBoolean<U>
|
|
292
|
+
: T extends Record<string, any>
|
|
293
|
+
? { [K in keyof T]: HasNonOptionalBoolean<T[K]> }[keyof T]
|
|
294
|
+
: never;
|
package/src/utils/error.js
CHANGED
|
@@ -30,7 +30,7 @@ export function coalesce_to_error(err) {
|
|
|
30
30
|
* @param {unknown} error
|
|
31
31
|
*/
|
|
32
32
|
export function normalize_error(error) {
|
|
33
|
-
return /** @type {import('../exports/internal/
|
|
33
|
+
return /** @type {import('../exports/internal/shared.js').Redirect | HttpError | SvelteKitError | Error} */ (
|
|
34
34
|
error
|
|
35
35
|
);
|
|
36
36
|
}
|
|
@@ -43,8 +43,32 @@ export function get_status(error) {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* Adds development-only compatibility accessors for the former top-level `status` and `message`
|
|
47
|
+
* properties of the `handleError` hook input.
|
|
48
|
+
* @template {object} T
|
|
49
|
+
* @param {T} input
|
|
50
|
+
* @param {{ status: number; message: string }} fallback
|
|
51
|
+
* @returns {T}
|
|
47
52
|
*/
|
|
48
|
-
export function
|
|
49
|
-
|
|
53
|
+
export function add_deprecated_handle_error_properties(input, fallback) {
|
|
54
|
+
Object.defineProperties(input, {
|
|
55
|
+
status: {
|
|
56
|
+
get() {
|
|
57
|
+
console.warn(
|
|
58
|
+
'The `status` property of `handleError` is deprecated. Use `error.status` for expected and framework errors, or `500` for unexpected errors.'
|
|
59
|
+
);
|
|
60
|
+
return fallback.status;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
message: {
|
|
64
|
+
get() {
|
|
65
|
+
console.warn(
|
|
66
|
+
"The `message` property of `handleError` is deprecated. Use `error.message` for expected and framework errors, or 'Internal Error' for unexpected errors."
|
|
67
|
+
);
|
|
68
|
+
return fallback.message;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
return input;
|
|
50
74
|
}
|