@sveltejs/kit 2.31.1 → 2.33.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/config/options.js +14 -0
- package/src/core/postbuild/prerender.js +10 -5
- package/src/exports/public.d.ts +16 -0
- package/src/exports/vite/index.js +17 -5
- package/src/exports/vite/utils.js +2 -4
- package/src/runtime/app/server/remote/command.js +1 -3
- package/src/runtime/app/server/remote/form.js +1 -3
- package/src/runtime/app/server/remote/prerender.js +0 -3
- package/src/runtime/app/server/remote/query.js +1 -8
- package/src/runtime/app/server/remote/shared.js +0 -9
- package/src/runtime/server/page/load_data.js +36 -0
- package/src/runtime/telemetry/otel.js +1 -1
- package/src/types/private.d.ts +9 -0
- package/src/version.js +1 -1
- package/types/index.d.ts +24 -0
- package/types/index.d.ts.map +3 -1
package/package.json
CHANGED
|
@@ -251,6 +251,20 @@ const options = object(
|
|
|
251
251
|
}
|
|
252
252
|
),
|
|
253
253
|
|
|
254
|
+
handleUnseenRoutes: validate(
|
|
255
|
+
(/** @type {any} */ { message }) => {
|
|
256
|
+
throw new Error(
|
|
257
|
+
message +
|
|
258
|
+
'\nTo suppress or handle this error, implement `handleUnseenRoutes` in https://svelte.dev/docs/kit/configuration#prerender'
|
|
259
|
+
);
|
|
260
|
+
},
|
|
261
|
+
(input, keypath) => {
|
|
262
|
+
if (typeof input === 'function') return input;
|
|
263
|
+
if (['fail', 'warn', 'ignore'].includes(input)) return input;
|
|
264
|
+
throw new Error(`${keypath} should be "fail", "warn", "ignore" or a custom function`);
|
|
265
|
+
}
|
|
266
|
+
),
|
|
267
|
+
|
|
254
268
|
origin: validate('http://sveltekit-prerender', (input, keypath) => {
|
|
255
269
|
assert_string(input, keypath);
|
|
256
270
|
|
|
@@ -160,6 +160,15 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) {
|
|
|
160
160
|
}
|
|
161
161
|
);
|
|
162
162
|
|
|
163
|
+
const handle_not_prerendered_route = normalise_error_handler(
|
|
164
|
+
log,
|
|
165
|
+
config.prerender.handleUnseenRoutes,
|
|
166
|
+
({ routes }) => {
|
|
167
|
+
const list = routes.map((id) => ` - ${id}`).join('\n');
|
|
168
|
+
return `The following routes were marked as prerenderable, but were not prerendered because they were not found while crawling your app:\n${list}\n\nSee the \`handleUnseenRoutes\` option in https://svelte.dev/docs/kit/configuration#prerender for more info.`;
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
|
|
163
172
|
const q = queue(config.prerender.concurrency);
|
|
164
173
|
|
|
165
174
|
/**
|
|
@@ -562,11 +571,7 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) {
|
|
|
562
571
|
}
|
|
563
572
|
|
|
564
573
|
if (not_prerendered.length > 0) {
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
throw new Error(
|
|
568
|
-
`The following routes were marked as prerenderable, but were not prerendered because they were not found while crawling your app:\n${list}\n\nSee https://svelte.dev/docs/kit/page-options#prerender-troubleshooting for info on how to solve this`
|
|
569
|
-
);
|
|
574
|
+
handle_not_prerendered_route({ routes: not_prerendered });
|
|
570
575
|
}
|
|
571
576
|
|
|
572
577
|
return { prerendered, prerender_map };
|
package/src/exports/public.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
PrerenderEntryGeneratorMismatchHandlerValue,
|
|
13
13
|
PrerenderHttpErrorHandlerValue,
|
|
14
14
|
PrerenderMissingIdHandlerValue,
|
|
15
|
+
PrerenderUnseenRoutesHandlerValue,
|
|
15
16
|
PrerenderOption,
|
|
16
17
|
RequestOptions,
|
|
17
18
|
RouteSegment
|
|
@@ -740,6 +741,21 @@ export interface KitConfig {
|
|
|
740
741
|
* @since 1.16.0
|
|
741
742
|
*/
|
|
742
743
|
handleEntryGeneratorMismatch?: PrerenderEntryGeneratorMismatchHandlerValue;
|
|
744
|
+
/**
|
|
745
|
+
* How to respond when a route is marked as prerenderable but has not been prerendered.
|
|
746
|
+
*
|
|
747
|
+
* - `'fail'` — fail the build
|
|
748
|
+
* - `'ignore'` - silently ignore the failure and continue
|
|
749
|
+
* - `'warn'` — continue, but print a warning
|
|
750
|
+
* - `(details) => void` — a custom error handler that takes a `details` object with a `routes` property which contains all routes that haven't been prerendered. If you `throw` from this function, the build will fail
|
|
751
|
+
*
|
|
752
|
+
* The default behavior is to fail the build. This may be undesirable when you know that some of your routes may never be reached under certain
|
|
753
|
+
* circumstances such as a CMS not returning data for a specific area, resulting in certain routes never being reached.
|
|
754
|
+
*
|
|
755
|
+
* @default "fail"
|
|
756
|
+
* @since 2.16.0
|
|
757
|
+
*/
|
|
758
|
+
handleUnseenRoutes?: PrerenderUnseenRoutesHandlerValue;
|
|
743
759
|
/**
|
|
744
760
|
* The value of `url.origin` during prerendering; useful if it is included in rendered content.
|
|
745
761
|
* @default "http://sveltekit-prerender"
|
|
@@ -339,7 +339,7 @@ async function kit({ svelte_config }) {
|
|
|
339
339
|
__SVELTEKIT_EMBEDDED__: s(kit.embedded),
|
|
340
340
|
__SVELTEKIT_EXPERIMENTAL__REMOTE_FUNCTIONS__: s(kit.experimental.remoteFunctions),
|
|
341
341
|
__SVELTEKIT_CLIENT_ROUTING__: s(kit.router.resolution === 'client'),
|
|
342
|
-
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.
|
|
342
|
+
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.tracing.server),
|
|
343
343
|
__SVELTEKIT_PAYLOAD__: new_config.build.ssr
|
|
344
344
|
? '{}'
|
|
345
345
|
: `globalThis.__sveltekit_${version_hash}`
|
|
@@ -355,7 +355,7 @@ async function kit({ svelte_config }) {
|
|
|
355
355
|
__SVELTEKIT_EMBEDDED__: s(kit.embedded),
|
|
356
356
|
__SVELTEKIT_EXPERIMENTAL__REMOTE_FUNCTIONS__: s(kit.experimental.remoteFunctions),
|
|
357
357
|
__SVELTEKIT_CLIENT_ROUTING__: s(kit.router.resolution === 'client'),
|
|
358
|
-
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.
|
|
358
|
+
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.tracing.server),
|
|
359
359
|
__SVELTEKIT_PAYLOAD__: 'globalThis.__sveltekit_dev'
|
|
360
360
|
};
|
|
361
361
|
|
|
@@ -609,6 +609,7 @@ async function kit({ svelte_config }) {
|
|
|
609
609
|
const chain = [normalized];
|
|
610
610
|
|
|
611
611
|
let current = normalized;
|
|
612
|
+
let includes_remote_file = false;
|
|
612
613
|
|
|
613
614
|
while (true) {
|
|
614
615
|
const importers = import_map.get(current);
|
|
@@ -619,9 +620,11 @@ async function kit({ svelte_config }) {
|
|
|
619
620
|
|
|
620
621
|
chain.push((current = candidates[0]));
|
|
621
622
|
|
|
622
|
-
|
|
623
|
-
|
|
623
|
+
includes_remote_file ||= svelte_config.kit.moduleExtensions.some((ext) => {
|
|
624
|
+
return current.endsWith(`.remote${ext}`);
|
|
625
|
+
});
|
|
624
626
|
|
|
627
|
+
if (entrypoints.has(current)) {
|
|
625
628
|
const pyramid = chain
|
|
626
629
|
.reverse()
|
|
627
630
|
.map((id, i) => {
|
|
@@ -629,6 +632,15 @@ async function kit({ svelte_config }) {
|
|
|
629
632
|
})
|
|
630
633
|
.join(' imports\n');
|
|
631
634
|
|
|
635
|
+
if (includes_remote_file) {
|
|
636
|
+
error_for_missing_config(
|
|
637
|
+
'remote functions',
|
|
638
|
+
'kit.experimental.remoteFunctions',
|
|
639
|
+
'true'
|
|
640
|
+
);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
let message = `Cannot import ${normalized} into code that runs in the browser, as this could leak sensitive information.`;
|
|
632
644
|
message += `\n\n${pyramid}`;
|
|
633
645
|
message += `\n\nIf you're only using the import as a type, change it to \`import type\`.`;
|
|
634
646
|
|
|
@@ -794,7 +806,7 @@ async function kit({ svelte_config }) {
|
|
|
794
806
|
}
|
|
795
807
|
if (!kit.experimental.instrumentation.server) {
|
|
796
808
|
error_for_missing_config(
|
|
797
|
-
'instrumentation.server.js',
|
|
809
|
+
'`instrumentation.server.js`',
|
|
798
810
|
'kit.experimental.instrumentation.server',
|
|
799
811
|
'true'
|
|
800
812
|
);
|
|
@@ -206,13 +206,11 @@ export function error_for_missing_config(feature_name, path, value) {
|
|
|
206
206
|
return acc.replace(hole, `${indent}${part}: ${rhs}`);
|
|
207
207
|
}, hole);
|
|
208
208
|
|
|
209
|
-
throw
|
|
209
|
+
throw stackless(
|
|
210
210
|
dedent`\
|
|
211
|
-
To enable
|
|
211
|
+
To enable ${feature_name}, add the following to your \`svelte.config.js\`:
|
|
212
212
|
|
|
213
|
-
\`\`\`js
|
|
214
213
|
${result}
|
|
215
|
-
\`\`\`
|
|
216
214
|
`
|
|
217
215
|
);
|
|
218
216
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/** @import { RemoteInfo, MaybePromise } from 'types' */
|
|
3
3
|
/** @import { StandardSchemaV1 } from '@standard-schema/spec' */
|
|
4
4
|
import { get_request_store } from '@sveltejs/kit/internal/server';
|
|
5
|
-
import {
|
|
5
|
+
import { create_validator, run_remote_function } from './shared.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Creates a remote command. When called from the browser, the function will be invoked on the server via a `fetch` call.
|
|
@@ -51,8 +51,6 @@ import { check_experimental, create_validator, run_remote_function } from './sha
|
|
|
51
51
|
*/
|
|
52
52
|
/*@__NO_SIDE_EFFECTS__*/
|
|
53
53
|
export function command(validate_or_fn, maybe_fn) {
|
|
54
|
-
check_experimental('command');
|
|
55
|
-
|
|
56
54
|
/** @type {(arg?: Input) => Output} */
|
|
57
55
|
const fn = maybe_fn ?? validate_or_fn;
|
|
58
56
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @import { RemoteForm } from '@sveltejs/kit' */
|
|
2
2
|
/** @import { RemoteInfo, MaybePromise } from 'types' */
|
|
3
3
|
import { get_request_store } from '@sveltejs/kit/internal/server';
|
|
4
|
-
import {
|
|
4
|
+
import { run_remote_function } from './shared.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Creates a form object that can be spread onto a `<form>` element.
|
|
@@ -16,8 +16,6 @@ import { check_experimental, run_remote_function } from './shared.js';
|
|
|
16
16
|
/*@__NO_SIDE_EFFECTS__*/
|
|
17
17
|
// @ts-ignore we don't want to prefix `fn` with an underscore, as that will be user-visible
|
|
18
18
|
export function form(fn) {
|
|
19
|
-
check_experimental('form');
|
|
20
|
-
|
|
21
19
|
/**
|
|
22
20
|
* @param {string | number | boolean} [key]
|
|
23
21
|
*/
|
|
@@ -7,7 +7,6 @@ import { get_request_store } from '@sveltejs/kit/internal/server';
|
|
|
7
7
|
import { create_remote_cache_key, stringify, stringify_remote_arg } from '../../../shared.js';
|
|
8
8
|
import { app_dir, base } from '__sveltekit/paths';
|
|
9
9
|
import {
|
|
10
|
-
check_experimental,
|
|
11
10
|
create_validator,
|
|
12
11
|
get_response,
|
|
13
12
|
parse_remote_response,
|
|
@@ -65,8 +64,6 @@ import {
|
|
|
65
64
|
*/
|
|
66
65
|
/*@__NO_SIDE_EFFECTS__*/
|
|
67
66
|
export function prerender(validate_or_fn, fn_or_options, maybe_options) {
|
|
68
|
-
check_experimental('prerender');
|
|
69
|
-
|
|
70
67
|
const maybe_fn = typeof fn_or_options === 'function' ? fn_or_options : undefined;
|
|
71
68
|
|
|
72
69
|
/** @type {typeof maybe_options} */
|
|
@@ -4,12 +4,7 @@
|
|
|
4
4
|
import { get_request_store } from '@sveltejs/kit/internal/server';
|
|
5
5
|
import { create_remote_cache_key, stringify_remote_arg } from '../../../shared.js';
|
|
6
6
|
import { prerendering } from '__sveltekit/environment';
|
|
7
|
-
import {
|
|
8
|
-
check_experimental,
|
|
9
|
-
create_validator,
|
|
10
|
-
get_response,
|
|
11
|
-
run_remote_function
|
|
12
|
-
} from './shared.js';
|
|
7
|
+
import { create_validator, get_response, run_remote_function } from './shared.js';
|
|
13
8
|
|
|
14
9
|
/**
|
|
15
10
|
* Creates a remote query. When called from the browser, the function will be invoked on the server via a `fetch` call.
|
|
@@ -58,8 +53,6 @@ import {
|
|
|
58
53
|
*/
|
|
59
54
|
/*@__NO_SIDE_EFFECTS__*/
|
|
60
55
|
export function query(validate_or_fn, maybe_fn) {
|
|
61
|
-
check_experimental('query');
|
|
62
|
-
|
|
63
56
|
/** @type {(arg?: Input) => Output} */
|
|
64
57
|
const fn = maybe_fn ?? validate_or_fn;
|
|
65
58
|
|
|
@@ -74,15 +74,6 @@ export function get_response(id, arg, state, get_result) {
|
|
|
74
74
|
return ((state.remote_data ??= {})[cache_key] ??= get_result());
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
/** @param {string} feature */
|
|
78
|
-
export function check_experimental(feature) {
|
|
79
|
-
if (!__SVELTEKIT_EXPERIMENTAL__REMOTE_FUNCTIONS__) {
|
|
80
|
-
throw new Error(
|
|
81
|
-
`Cannot use \`${feature}\` from \`$app/server\` without the experimental flag set to true. Please set kit.experimental.remoteFunctions to \`true\` in your config.`
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
77
|
/**
|
|
87
78
|
* @param {any} data
|
|
88
79
|
* @param {ServerHooks['transport']} transport
|
|
@@ -311,6 +311,9 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts)
|
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
|
|
314
|
+
/** @type {ReadableStream<Uint8Array>} */
|
|
315
|
+
let teed_body;
|
|
316
|
+
|
|
314
317
|
const proxy = new Proxy(response, {
|
|
315
318
|
get(response, key, _receiver) {
|
|
316
319
|
/**
|
|
@@ -342,6 +345,39 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts)
|
|
|
342
345
|
});
|
|
343
346
|
}
|
|
344
347
|
|
|
348
|
+
if (key === 'body') {
|
|
349
|
+
if (response.body === null) {
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (teed_body) {
|
|
354
|
+
return teed_body;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const [a, b] = response.body.tee();
|
|
358
|
+
|
|
359
|
+
void (async () => {
|
|
360
|
+
let result = new Uint8Array();
|
|
361
|
+
|
|
362
|
+
for await (const chunk of a) {
|
|
363
|
+
const combined = new Uint8Array(result.length + chunk.length);
|
|
364
|
+
|
|
365
|
+
combined.set(result, 0);
|
|
366
|
+
combined.set(chunk, result.length);
|
|
367
|
+
|
|
368
|
+
result = combined;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if (dependency) {
|
|
372
|
+
dependency.body = new Uint8Array(result);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
void push_fetched(base64_encode(result), true);
|
|
376
|
+
})();
|
|
377
|
+
|
|
378
|
+
return (teed_body = b);
|
|
379
|
+
}
|
|
380
|
+
|
|
345
381
|
if (key === 'arrayBuffer') {
|
|
346
382
|
return async () => {
|
|
347
383
|
const buffer = await response.arrayBuffer();
|
|
@@ -15,7 +15,7 @@ if (__SVELTEKIT_SERVER_TRACING_ENABLED__) {
|
|
|
15
15
|
})
|
|
16
16
|
.catch(() => {
|
|
17
17
|
throw new Error(
|
|
18
|
-
'Tracing is enabled (see `config.kit.experimental.instrumentation.server` in your svelte.config.js), but `@opentelemetry/api` is not available.
|
|
18
|
+
'Tracing is enabled (see `config.kit.experimental.instrumentation.server` in your svelte.config.js), but `@opentelemetry/api` is not available. This error will likely resolve itself when you set up your tracing instrumentation in `instrumentation.server.js`. For more information, see https://svelte.dev/docs/kit/observability#opentelemetry-api'
|
|
19
19
|
);
|
|
20
20
|
});
|
|
21
21
|
}
|
package/src/types/private.d.ts
CHANGED
|
@@ -208,8 +208,17 @@ export interface PrerenderEntryGeneratorMismatchHandler {
|
|
|
208
208
|
(details: { generatedFromId: string; entry: string; matchedId: string; message: string }): void;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
+
export interface PrerenderUnseenRoutesHandler {
|
|
212
|
+
(details: { routes: string[]; message: string }): void;
|
|
213
|
+
}
|
|
214
|
+
|
|
211
215
|
export type PrerenderHttpErrorHandlerValue = 'fail' | 'warn' | 'ignore' | PrerenderHttpErrorHandler;
|
|
212
216
|
export type PrerenderMissingIdHandlerValue = 'fail' | 'warn' | 'ignore' | PrerenderMissingIdHandler;
|
|
217
|
+
export type PrerenderUnseenRoutesHandlerValue =
|
|
218
|
+
| 'fail'
|
|
219
|
+
| 'warn'
|
|
220
|
+
| 'ignore'
|
|
221
|
+
| PrerenderUnseenRoutesHandler;
|
|
213
222
|
export type PrerenderEntryGeneratorMismatchHandlerValue =
|
|
214
223
|
| 'fail'
|
|
215
224
|
| 'warn'
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -717,6 +717,21 @@ declare module '@sveltejs/kit' {
|
|
|
717
717
|
* @since 1.16.0
|
|
718
718
|
*/
|
|
719
719
|
handleEntryGeneratorMismatch?: PrerenderEntryGeneratorMismatchHandlerValue;
|
|
720
|
+
/**
|
|
721
|
+
* How to respond when a route is marked as prerenderable but has not been prerendered.
|
|
722
|
+
*
|
|
723
|
+
* - `'fail'` — fail the build
|
|
724
|
+
* - `'ignore'` - silently ignore the failure and continue
|
|
725
|
+
* - `'warn'` — continue, but print a warning
|
|
726
|
+
* - `(details) => void` — a custom error handler that takes a `details` object with a `routes` property which contains all routes that haven't been prerendered. If you `throw` from this function, the build will fail
|
|
727
|
+
*
|
|
728
|
+
* The default behavior is to fail the build. This may be undesirable when you know that some of your routes may never be reached under certain
|
|
729
|
+
* circumstances such as a CMS not returning data for a specific area, resulting in certain routes never being reached.
|
|
730
|
+
*
|
|
731
|
+
* @default "fail"
|
|
732
|
+
* @since 2.16.0
|
|
733
|
+
*/
|
|
734
|
+
handleUnseenRoutes?: PrerenderUnseenRoutesHandlerValue;
|
|
720
735
|
/**
|
|
721
736
|
* The value of `url.origin` during prerendering; useful if it is included in rendered content.
|
|
722
737
|
* @default "http://sveltekit-prerender"
|
|
@@ -1996,8 +2011,17 @@ declare module '@sveltejs/kit' {
|
|
|
1996
2011
|
(details: { generatedFromId: string; entry: string; matchedId: string; message: string }): void;
|
|
1997
2012
|
}
|
|
1998
2013
|
|
|
2014
|
+
interface PrerenderUnseenRoutesHandler {
|
|
2015
|
+
(details: { routes: string[]; message: string }): void;
|
|
2016
|
+
}
|
|
2017
|
+
|
|
1999
2018
|
type PrerenderHttpErrorHandlerValue = 'fail' | 'warn' | 'ignore' | PrerenderHttpErrorHandler;
|
|
2000
2019
|
type PrerenderMissingIdHandlerValue = 'fail' | 'warn' | 'ignore' | PrerenderMissingIdHandler;
|
|
2020
|
+
type PrerenderUnseenRoutesHandlerValue =
|
|
2021
|
+
| 'fail'
|
|
2022
|
+
| 'warn'
|
|
2023
|
+
| 'ignore'
|
|
2024
|
+
| PrerenderUnseenRoutesHandler;
|
|
2001
2025
|
type PrerenderEntryGeneratorMismatchHandlerValue =
|
|
2002
2026
|
| 'fail'
|
|
2003
2027
|
| 'warn'
|
package/types/index.d.ts.map
CHANGED
|
@@ -68,8 +68,10 @@
|
|
|
68
68
|
"PrerenderHttpErrorHandler",
|
|
69
69
|
"PrerenderMissingIdHandler",
|
|
70
70
|
"PrerenderEntryGeneratorMismatchHandler",
|
|
71
|
+
"PrerenderUnseenRoutesHandler",
|
|
71
72
|
"PrerenderHttpErrorHandlerValue",
|
|
72
73
|
"PrerenderMissingIdHandlerValue",
|
|
74
|
+
"PrerenderUnseenRoutesHandlerValue",
|
|
73
75
|
"PrerenderEntryGeneratorMismatchHandlerValue",
|
|
74
76
|
"PrerenderOption",
|
|
75
77
|
"RequestOptions",
|
|
@@ -185,6 +187,6 @@
|
|
|
185
187
|
null,
|
|
186
188
|
null
|
|
187
189
|
],
|
|
188
|
-
"mappings": ";;;;;;;;;;;
|
|
190
|
+
"mappings": "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",
|
|
189
191
|
"ignoreList": []
|
|
190
192
|
}
|