@sveltejs/kit 3.0.0-next.2 → 3.0.0-next.20
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 +58 -36
- package/src/cli.js +14 -11
- package/src/constants.js +6 -1
- package/src/core/adapt/builder.js +54 -60
- package/src/core/adapt/index.js +2 -5
- package/src/core/config/index.js +141 -76
- package/src/core/config/options.js +260 -260
- package/src/core/config/types.d.ts +1 -1
- package/src/core/env.js +143 -13
- package/src/core/generate_manifest/index.js +18 -15
- package/src/core/postbuild/analyse.js +7 -19
- 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 +193 -69
- 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 +72 -52
- package/src/core/sync/sync.js +35 -26
- 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} +105 -56
- package/src/core/sync/write_client_manifest.js +13 -28
- package/src/core/sync/write_env.js +7 -5
- package/src/core/sync/write_server.js +25 -33
- 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 +119 -116
- 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 +194 -0
- package/src/exports/hooks/sequence.js +9 -6
- package/src/exports/index.js +53 -20
- 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} +1 -2
- 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 +219 -1118
- package/src/exports/url.js +86 -0
- package/src/exports/vite/build/build_server.js +53 -64
- 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 +199 -125
- package/src/exports/vite/index.js +1514 -833
- package/src/exports/vite/module_ids.js +2 -2
- package/src/exports/vite/preview/index.js +32 -24
- package/src/exports/vite/utils.js +83 -45
- 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 +519 -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 +75 -75
- 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 +70 -53
- package/src/runtime/server/csrf.js +65 -0
- package/src/runtime/server/data/index.js +48 -52
- package/src/runtime/server/dev.js +22 -0
- package/src/runtime/server/endpoint.js +3 -4
- package/src/runtime/server/env_module.js +0 -5
- package/src/runtime/server/errors.js +160 -0
- package/src/runtime/server/fetch.js +31 -38
- package/src/runtime/server/index.js +90 -64
- package/src/runtime/server/internal.js +71 -0
- package/src/runtime/server/page/actions.js +84 -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 +22 -23
- package/src/runtime/server/page/index.js +35 -53
- package/src/runtime/server/page/load_data.js +47 -54
- package/src/runtime/server/page/render.js +172 -238
- package/src/runtime/server/page/respond_with_error.js +16 -30
- 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 +639 -0
- package/src/runtime/server/respond.js +188 -129
- package/src/runtime/server/sourcemaps.js +183 -0
- package/src/runtime/server/state.js +53 -0
- package/src/runtime/server/utils.js +12 -154
- 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 +160 -150
- 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 +2291 -2135
- package/types/index.d.ts.map +116 -108
- 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,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component } from 'svelte';
|
|
2
2
|
import {
|
|
3
3
|
Config,
|
|
4
4
|
ServerLoad,
|
|
5
|
-
Handle,
|
|
6
|
-
HandleServerError,
|
|
7
5
|
KitConfig,
|
|
8
6
|
Load,
|
|
9
7
|
RequestHandler,
|
|
10
|
-
ResolveOptions,
|
|
11
8
|
Server,
|
|
12
9
|
ServerInitOptions,
|
|
13
|
-
HandleFetch,
|
|
14
10
|
Actions,
|
|
15
|
-
HandleClientError,
|
|
16
|
-
Reroute,
|
|
17
11
|
RequestEvent,
|
|
18
12
|
SSRManifest,
|
|
19
|
-
Emulator
|
|
20
|
-
Adapter,
|
|
21
|
-
ServerInit,
|
|
22
|
-
ClientInit,
|
|
23
|
-
Transport,
|
|
24
|
-
HandleValidationError,
|
|
25
|
-
RemoteFormIssue,
|
|
26
|
-
RemoteQuery,
|
|
27
|
-
RemoteLiveQuery
|
|
13
|
+
Emulator
|
|
28
14
|
} from '@sveltejs/kit';
|
|
15
|
+
import { RemoteFormIssue, RemoteQuery, RemoteLiveQuery } from '$app/server';
|
|
16
|
+
import {
|
|
17
|
+
ClientInit,
|
|
18
|
+
Handle,
|
|
19
|
+
HandleClientError,
|
|
20
|
+
HandleFetch,
|
|
21
|
+
HandleServerError,
|
|
22
|
+
Reroute,
|
|
23
|
+
ResolveOptions,
|
|
24
|
+
ServerInit,
|
|
25
|
+
Transport
|
|
26
|
+
} from '@sveltejs/kit/hooks';
|
|
29
27
|
import {
|
|
30
28
|
HttpMethod,
|
|
31
29
|
MaybePromise,
|
|
@@ -44,13 +42,13 @@ export interface ServerModule {
|
|
|
44
42
|
export interface ServerInternalModule {
|
|
45
43
|
set_assets(path: string): void;
|
|
46
44
|
set_building(): void;
|
|
47
|
-
set_env(environment: Record<string, string>): void;
|
|
48
45
|
set_manifest(manifest: SSRManifest): void;
|
|
49
46
|
set_prerendering(): void;
|
|
50
47
|
set_read_implementation(implementation: (path: string) => ReadableStream): void;
|
|
51
48
|
set_version(version: string): void;
|
|
52
|
-
set_fix_stack_trace(fix_stack_trace: (error:
|
|
49
|
+
set_fix_stack_trace(fix_stack_trace: (error: Error) => void): void;
|
|
53
50
|
get_hooks: () => Promise<Record<string, any>>;
|
|
51
|
+
log_response: (status: number, request: Request) => void;
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
export interface Asset {
|
|
@@ -101,6 +99,9 @@ export interface BuildData {
|
|
|
101
99
|
routes?: SSRClientRoute[];
|
|
102
100
|
stylesheets: string[];
|
|
103
101
|
fonts: string[];
|
|
102
|
+
/**
|
|
103
|
+
* Whether the client uses public dynamic env vars — `$env/dynamic/public` or `$app/env/public`.
|
|
104
|
+
*/
|
|
104
105
|
uses_env_dynamic_public: boolean;
|
|
105
106
|
/** Only set in case of `bundleStrategy === 'inline'`. */
|
|
106
107
|
inline?: {
|
|
@@ -112,7 +113,7 @@ export interface BuildData {
|
|
|
112
113
|
}
|
|
113
114
|
|
|
114
115
|
export interface CSRPageNode {
|
|
115
|
-
component:
|
|
116
|
+
component: Component;
|
|
116
117
|
universal: {
|
|
117
118
|
load?: Load;
|
|
118
119
|
trailingSlash?: TrailingSlash;
|
|
@@ -155,9 +156,8 @@ export interface ServerHooks {
|
|
|
155
156
|
handleFetch: HandleFetch;
|
|
156
157
|
handle: Handle;
|
|
157
158
|
handleError: HandleServerError;
|
|
158
|
-
handleValidationError: HandleValidationError;
|
|
159
159
|
reroute: Reroute;
|
|
160
|
-
transport
|
|
160
|
+
transport?: Transport;
|
|
161
161
|
init?: ServerInit;
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -173,28 +173,27 @@ export interface Env {
|
|
|
173
173
|
public: Record<string, string>;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
+
export interface InternalRequestOptions extends RequestOptions {
|
|
177
|
+
prerendering?: PrerenderOptions;
|
|
178
|
+
/** @internal for saving dependencies during prerendering and generating fallback pages */
|
|
179
|
+
read: (file: string) => Buffer<ArrayBuffer>;
|
|
180
|
+
/** @internal used during development to check feature availability depending on the current route */
|
|
181
|
+
before_handle?: (
|
|
182
|
+
event: RequestEvent,
|
|
183
|
+
config: any,
|
|
184
|
+
prerender: PrerenderOption,
|
|
185
|
+
handle: () => Promise<Response>
|
|
186
|
+
) => Promise<Response>;
|
|
187
|
+
emulator?: Emulator;
|
|
188
|
+
}
|
|
189
|
+
|
|
176
190
|
export class InternalServer extends Server {
|
|
177
191
|
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>;
|
|
192
|
+
respond(request: Request, options: InternalRequestOptions): Promise<Response>;
|
|
194
193
|
}
|
|
195
194
|
|
|
196
195
|
export interface ManifestData {
|
|
197
|
-
/** Static files from `
|
|
196
|
+
/** Static files from `config.files.assets`. */
|
|
198
197
|
assets: Asset[];
|
|
199
198
|
hooks: {
|
|
200
199
|
client: string | null;
|
|
@@ -203,7 +202,7 @@ export interface ManifestData {
|
|
|
203
202
|
};
|
|
204
203
|
nodes: PageNode[];
|
|
205
204
|
routes: RouteData[];
|
|
206
|
-
|
|
205
|
+
params: string | null;
|
|
207
206
|
}
|
|
208
207
|
|
|
209
208
|
export interface RemoteChunk {
|
|
@@ -232,15 +231,15 @@ export interface PrerenderDependency {
|
|
|
232
231
|
body: null | string | Uint8Array;
|
|
233
232
|
}
|
|
234
233
|
|
|
234
|
+
/** Internal context for the prerendering process */
|
|
235
235
|
export interface PrerenderOptions {
|
|
236
236
|
cache?: string; // including this here is a bit of a hack, but it makes it easy to add <meta http-equiv>
|
|
237
237
|
fallback?: boolean;
|
|
238
238
|
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
|
-
*/
|
|
239
|
+
/** Results of remote `prerender` functions, shared across the whole prerender run so that each only executes once */
|
|
243
240
|
remote_responses: Map<string, Promise<any>>;
|
|
241
|
+
/** Route IDs whose resolution module has been emitted, shared across the whole prerender run so that each only generates once */
|
|
242
|
+
resolved_route_ids: Set<string>;
|
|
244
243
|
/** True for the duration of a call to the `reroute` hook */
|
|
245
244
|
inside_reroute?: boolean;
|
|
246
245
|
}
|
|
@@ -249,7 +248,7 @@ export type RecursiveRequired<T> = {
|
|
|
249
248
|
// Recursive implementation of TypeScript's Required utility type.
|
|
250
249
|
// Will recursively continue until it reaches a primitive or Function
|
|
251
250
|
// 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
|
|
251
|
+
[K in keyof T]-?: Extract<T[K], Function | (`${string}:` & {})> extends never // If it does not have a Function type
|
|
253
252
|
? RecursiveRequired<T[K]> // recursively continue through.
|
|
254
253
|
: T[K]; // Use the exact type for everything else
|
|
255
254
|
};
|
|
@@ -296,6 +295,7 @@ export interface RouteData {
|
|
|
296
295
|
|
|
297
296
|
export type ServerRedirectNode = {
|
|
298
297
|
type: 'redirect';
|
|
298
|
+
status: number;
|
|
299
299
|
location: string;
|
|
300
300
|
};
|
|
301
301
|
|
|
@@ -307,38 +307,42 @@ export type ServerNodesResponse = {
|
|
|
307
307
|
nodes: Array<ServerDataNode | ServerDataSkippedNode | ServerErrorNode | null>;
|
|
308
308
|
};
|
|
309
309
|
|
|
310
|
+
export type RemoteFunctionDataNode = {
|
|
311
|
+
/** value */
|
|
312
|
+
v?: any;
|
|
313
|
+
/** error */
|
|
314
|
+
e?: App.Error;
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
export type RemoteFunctionData = {
|
|
318
|
+
/** The result of a command/form invocation */
|
|
319
|
+
_?: any;
|
|
320
|
+
/** `prerender` data that was accessed during the request */
|
|
321
|
+
p?: Record<string, RemoteFunctionDataNode>;
|
|
322
|
+
/** `query` or `query.batch` data that was accessed during the request */
|
|
323
|
+
q?: Record<string, RemoteFunctionDataNode>;
|
|
324
|
+
/** `query.live` data that was accessed during the request */
|
|
325
|
+
l?: Record<string, RemoteFunctionDataNode>;
|
|
326
|
+
/** `form` outputs (result/issues/input) from a non-enhanced submission, keyed by the client-side action id */
|
|
327
|
+
f?: Record<string, RemoteFunctionDataNode>;
|
|
328
|
+
/** Whether there were any refreshes/reconnects during the request */
|
|
329
|
+
r?: true;
|
|
330
|
+
/** The redirect location, if any */
|
|
331
|
+
redirect?: string;
|
|
332
|
+
};
|
|
333
|
+
|
|
310
334
|
export type RemoteFunctionResponse =
|
|
311
335
|
| (ServerRedirectNode & {
|
|
312
|
-
/**
|
|
313
|
-
|
|
314
|
-
/** devalue'd Record<string, any> */
|
|
315
|
-
reconnects?: string;
|
|
336
|
+
/** stringified RemoteFunctionData */
|
|
337
|
+
data: string;
|
|
316
338
|
})
|
|
317
339
|
| ServerErrorNode
|
|
318
340
|
| {
|
|
319
341
|
type: 'result';
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
refreshes: string | undefined;
|
|
323
|
-
/** devalue'd Record<string, any> */
|
|
324
|
-
reconnects: string | undefined;
|
|
342
|
+
/** stringified RemoteFunctionData */
|
|
343
|
+
data: string;
|
|
325
344
|
};
|
|
326
345
|
|
|
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
346
|
export type RemoteLiveQueryUserFunctionReturnType<Output> = MaybePromise<
|
|
343
347
|
| AsyncGenerator<Output>
|
|
344
348
|
| AsyncIterator<Output>
|
|
@@ -388,14 +392,10 @@ export interface ServerDataSkippedNode {
|
|
|
388
392
|
export interface ServerErrorNode {
|
|
389
393
|
type: 'error';
|
|
390
394
|
error: App.Error;
|
|
391
|
-
/**
|
|
392
|
-
* Only set for HttpErrors.
|
|
393
|
-
*/
|
|
394
|
-
status?: number;
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
export interface ServerMetadataRoute {
|
|
398
|
-
config: any
|
|
398
|
+
config: Record<string, any>;
|
|
399
399
|
api: {
|
|
400
400
|
methods: Array<HttpMethod | '*'>;
|
|
401
401
|
};
|
|
@@ -418,27 +418,7 @@ export interface ServerMetadata {
|
|
|
418
418
|
remotes: Map<string, Map<string, { type: RemoteInternals['type']; dynamic: boolean }>>;
|
|
419
419
|
}
|
|
420
420
|
|
|
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>;
|
|
421
|
+
export type SSRComponentLoader = () => Promise<Component>;
|
|
442
422
|
|
|
443
423
|
export interface UniversalNode {
|
|
444
424
|
/** Is `null` in case static analysis succeeds but the node is ssr=false */
|
|
@@ -447,7 +427,7 @@ export interface UniversalNode {
|
|
|
447
427
|
ssr?: boolean;
|
|
448
428
|
csr?: boolean;
|
|
449
429
|
trailingSlash?: TrailingSlash;
|
|
450
|
-
config?: any
|
|
430
|
+
config?: Record<string, any>;
|
|
451
431
|
entries?: PrerenderEntryGenerator;
|
|
452
432
|
}
|
|
453
433
|
|
|
@@ -458,7 +438,7 @@ export interface ServerNode {
|
|
|
458
438
|
csr?: boolean;
|
|
459
439
|
trailingSlash?: TrailingSlash;
|
|
460
440
|
actions?: Actions;
|
|
461
|
-
config?: any
|
|
441
|
+
config?: Record<string, any>;
|
|
462
442
|
entries?: PrerenderEntryGenerator;
|
|
463
443
|
}
|
|
464
444
|
|
|
@@ -477,7 +457,10 @@ export interface SSRNode {
|
|
|
477
457
|
|
|
478
458
|
/**
|
|
479
459
|
* 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
|
|
460
|
+
* But in production, this stores styles that are below the inline threshold.
|
|
461
|
+
* It returns a Promise during development because Vite needs to load the
|
|
462
|
+
* modules on demand. But in production, the contents have been precomputed
|
|
463
|
+
* during the build, so it can return synchronously.
|
|
481
464
|
*/
|
|
482
465
|
inline_styles?(): MaybePromise<
|
|
483
466
|
Record<string, string | ((assets: string, base: string) => string)>
|
|
@@ -494,7 +477,6 @@ export type SSRNodeLoader = () => Promise<SSRNode>;
|
|
|
494
477
|
|
|
495
478
|
export interface SSROptions {
|
|
496
479
|
app_template_contains_nonce: boolean;
|
|
497
|
-
async: boolean;
|
|
498
480
|
csp: ValidatedConfig['kit']['csp'];
|
|
499
481
|
csrf_check_origin: boolean;
|
|
500
482
|
csrf_trusted_origins: string[];
|
|
@@ -502,10 +484,9 @@ export interface SSROptions {
|
|
|
502
484
|
hash_routing: boolean;
|
|
503
485
|
hooks: ServerHooks;
|
|
504
486
|
link_header_preload: ValidatedConfig['kit']['output']['linkHeaderPreload'];
|
|
505
|
-
|
|
487
|
+
paths_origin: string | undefined;
|
|
506
488
|
service_worker: boolean;
|
|
507
489
|
service_worker_options: RegistrationOptions;
|
|
508
|
-
server_error_boundaries: boolean;
|
|
509
490
|
templates: {
|
|
510
491
|
app(values: {
|
|
511
492
|
head: string;
|
|
@@ -516,6 +497,7 @@ export interface SSROptions {
|
|
|
516
497
|
}): string;
|
|
517
498
|
error(values: { message: string; status: number }): string;
|
|
518
499
|
};
|
|
500
|
+
version: string;
|
|
519
501
|
version_hash: string;
|
|
520
502
|
}
|
|
521
503
|
|
|
@@ -531,7 +513,7 @@ export type RemotePrerenderInputsGenerator<Input = any> = () => MaybePromise<Inp
|
|
|
531
513
|
export type SSREndpoint = Partial<Record<HttpMethod, RequestHandler>> & {
|
|
532
514
|
prerender?: PrerenderOption;
|
|
533
515
|
trailingSlash?: TrailingSlash;
|
|
534
|
-
config?: any
|
|
516
|
+
config?: Record<string, any>;
|
|
535
517
|
entries?: PrerenderEntryGenerator;
|
|
536
518
|
fallback?: RequestHandler;
|
|
537
519
|
};
|
|
@@ -554,39 +536,6 @@ export interface SSRClientRoute {
|
|
|
554
536
|
leaf: [has_server_load: boolean, node_id: number];
|
|
555
537
|
}
|
|
556
538
|
|
|
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
539
|
export type StrictBody = string | ArrayBufferView;
|
|
591
540
|
|
|
592
541
|
export interface Uses {
|
|
@@ -598,13 +547,12 @@ export interface Uses {
|
|
|
598
547
|
search_params: Set<string>;
|
|
599
548
|
}
|
|
600
549
|
|
|
601
|
-
export type ValidatedConfig = Config & {
|
|
550
|
+
export type ValidatedConfig = Omit<Config, 'kit'> & {
|
|
602
551
|
kit: ValidatedKitConfig;
|
|
603
552
|
extensions: string[];
|
|
604
553
|
};
|
|
605
554
|
|
|
606
|
-
|
|
607
|
-
export type ValidatedKitConfig = Omit<RecursiveRequired<KitConfig>, 'adapter'>;
|
|
555
|
+
export type ValidatedKitConfig = RecursiveRequired<KitConfig>;
|
|
608
556
|
|
|
609
557
|
export type BinaryFormMeta = {
|
|
610
558
|
remote_refreshes?: string[];
|
|
@@ -663,6 +611,11 @@ export interface RemoteCommandInternals extends BaseRemoteInternals {
|
|
|
663
611
|
|
|
664
612
|
export interface RemoteFormInternals extends BaseRemoteInternals {
|
|
665
613
|
type: 'form';
|
|
614
|
+
/**
|
|
615
|
+
* For keyed (`form.for(key)`) instances: the id as the client computes it
|
|
616
|
+
* (the key is JSON-stringified but not URI-encoded, unlike `id`)
|
|
617
|
+
*/
|
|
618
|
+
key?: string;
|
|
666
619
|
fn(body: Record<string, any>, meta: BinaryFormMeta, form_data: FormData | null): Promise<any>;
|
|
667
620
|
}
|
|
668
621
|
|
|
@@ -701,22 +654,59 @@ export type RecordSpan = <T>(options: {
|
|
|
701
654
|
* used for tracking things like remote function calls
|
|
702
655
|
*/
|
|
703
656
|
export interface RequestState {
|
|
704
|
-
readonly
|
|
705
|
-
readonly
|
|
706
|
-
|
|
707
|
-
readonly
|
|
708
|
-
|
|
709
|
-
|
|
657
|
+
readonly getClientAddress: () => string;
|
|
658
|
+
readonly platform?: any;
|
|
659
|
+
/** @internal reads from the filesystem when user code tries to fetch a static asset */
|
|
660
|
+
readonly read?: (file: string) => Buffer<ArrayBuffer>;
|
|
661
|
+
/**
|
|
662
|
+
* Used to set up `__SVELTEKIT_TRACK__` which checks if a used feature is supported.
|
|
663
|
+
* E.g. if `read` from `$app/server` is used, it checks whether the route's config is compatible.
|
|
664
|
+
*/
|
|
665
|
+
readonly before_handle?: (
|
|
666
|
+
event: RequestEvent,
|
|
667
|
+
config: Record<string, any>,
|
|
668
|
+
prerender: PrerenderOption,
|
|
669
|
+
handle: () => Promise<Response>
|
|
670
|
+
) => Promise<Response>;
|
|
671
|
+
readonly emulator?: Emulator;
|
|
672
|
+
readonly prerendering?: PrerenderOptions;
|
|
673
|
+
/**
|
|
674
|
+
* When fetching data from a +server.js endpoint in `load`, the page's
|
|
675
|
+
* prerender option is inherited by the endpoint, unless overridden.
|
|
676
|
+
*/
|
|
677
|
+
prerender_default?: PrerenderOption;
|
|
678
|
+
/**
|
|
679
|
+
* True if we're currently attempting to render an error page.
|
|
680
|
+
*/
|
|
681
|
+
error: boolean;
|
|
682
|
+
/**
|
|
683
|
+
* Allows us to prevent `event.fetch` from making infinitely looping internal requests.
|
|
684
|
+
*/
|
|
685
|
+
readonly depth: number;
|
|
710
686
|
readonly remote: {
|
|
711
|
-
data
|
|
712
|
-
|
|
713
|
-
|
|
687
|
+
/** Resolved query/prerender data, populated by `await myQuery()` or `myQuery.set(...)` */
|
|
688
|
+
data: null | Map<RemoteInternals, Record<string, MaybePromise<any>>>;
|
|
689
|
+
/**
|
|
690
|
+
* Data that is implicitly included because it was awaited during render.
|
|
691
|
+
* This is serialized during SSR if the promise already resolved
|
|
692
|
+
*/
|
|
693
|
+
implicit: null | Map<RemoteInternals, Record<string, () => MaybePromise<any>>>;
|
|
694
|
+
/**
|
|
695
|
+
* Data that is explicitly included because of a `set(...)`, `refresh()` or
|
|
696
|
+
* `reconnect()`. The stored function is invoked lazily at the end of the
|
|
697
|
+
* request by `collect_remote_data`; if the query was already read (and thus
|
|
698
|
+
* cached) earlier in the request, invoking it does no additional work. This
|
|
699
|
+
* is always awaited and serialized.
|
|
700
|
+
*/
|
|
701
|
+
explicit: null | Map<
|
|
702
|
+
string,
|
|
703
|
+
{
|
|
704
|
+
internals: RemoteInternals;
|
|
705
|
+
fn: () => Promise<any>;
|
|
706
|
+
}
|
|
714
707
|
>;
|
|
715
708
|
/** Instances created via `myForm.for(...)` */
|
|
716
709
|
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
710
|
/** A map of remote function ID to payloads requested for refreshing by the client */
|
|
721
711
|
requested: null | Map<string, string[]>;
|
|
722
712
|
/** A map of query.batch ID to payloads requested for that batch within the same macrotask */
|
|
@@ -739,8 +729,10 @@ export interface RequestState {
|
|
|
739
729
|
live_iterators: null | Map<string, SharedIterator<any>>;
|
|
740
730
|
};
|
|
741
731
|
readonly is_in_remote_function: boolean;
|
|
732
|
+
readonly is_in_remote_form_or_command: boolean;
|
|
733
|
+
readonly is_in_remote_query: boolean;
|
|
734
|
+
readonly is_in_remote_prerender: boolean;
|
|
742
735
|
readonly is_in_render: boolean;
|
|
743
|
-
readonly is_in_universal_load: boolean;
|
|
744
736
|
}
|
|
745
737
|
|
|
746
738
|
export interface RequestStore {
|
|
@@ -748,5 +740,23 @@ export interface RequestStore {
|
|
|
748
740
|
state: RequestState;
|
|
749
741
|
}
|
|
750
742
|
|
|
743
|
+
/** Type of the `__sveltekit_abc123` object in the init `<script>` */
|
|
744
|
+
export interface SvelteKitPayload {
|
|
745
|
+
/** The application version */
|
|
746
|
+
version: string;
|
|
747
|
+
/** The basepath, usually relative to the current page */
|
|
748
|
+
base: string;
|
|
749
|
+
/** Path to externally-hosted assets */
|
|
750
|
+
assets?: string;
|
|
751
|
+
/** Public environment variables */
|
|
752
|
+
env?: Record<string, string>;
|
|
753
|
+
/** Serialized data from query/form/command functions */
|
|
754
|
+
data?: RemoteFunctionData;
|
|
755
|
+
/** Create a placeholder promise */
|
|
756
|
+
defer?: (id: number) => Promise<any>;
|
|
757
|
+
/** Resolve a placeholder promise */
|
|
758
|
+
resolve?: (data: { id: number; data: any; error: any }) => void;
|
|
759
|
+
}
|
|
760
|
+
|
|
751
761
|
export * from '../exports/index.js';
|
|
752
762
|
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
|
}
|