@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.31.1",
3
+ "version": "2.33.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -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
- const list = not_prerendered.map((id) => ` - ${id}`).join('\n');
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 };
@@ -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.instrumentation.server),
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.instrumentation.server),
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
- if (entrypoints.has(current)) {
623
- let message = `Cannot import ${normalized} into code that runs in the browser, as this could leak sensitive information.`;
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 new Error(
209
+ throw stackless(
210
210
  dedent`\
211
- To enable \`${feature_name}\`, add the following to your \`svelte.config.js\`:
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 { check_experimental, create_validator, run_remote_function } from './shared.js';
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 { check_experimental, run_remote_function } from './shared.js';
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. Have you installed it?'
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
  }
@@ -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
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '2.31.1';
4
+ export const VERSION = '2.33.0';
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'
@@ -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": "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",
190
+ "mappings": "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",
189
191
  "ignoreList": []
190
192
  }