@sveltejs/kit 2.62.0 → 2.63.1

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.
Files changed (56) hide show
  1. package/package.json +12 -1
  2. package/src/cli.js +32 -6
  3. package/src/core/adapt/builder.js +26 -5
  4. package/src/core/adapt/index.js +5 -2
  5. package/src/core/config/index.js +7 -5
  6. package/src/core/config/options.js +1 -0
  7. package/src/core/env.js +313 -8
  8. package/src/core/postbuild/analyse.js +2 -1
  9. package/src/core/postbuild/prerender.js +2 -1
  10. package/src/core/sync/create_manifest_data/index.js +24 -1
  11. package/src/core/sync/sync.js +16 -0
  12. package/src/core/sync/write_ambient.js +12 -6
  13. package/src/core/sync/write_env.js +33 -0
  14. package/src/core/sync/write_root.js +1 -1
  15. package/src/core/sync/write_server.js +3 -2
  16. package/src/core/sync/write_tsconfig.js +1 -0
  17. package/src/exports/hooks/index.js +13 -0
  18. package/src/exports/internal/env.js +71 -0
  19. package/src/exports/internal/types.d.ts +3 -0
  20. package/src/exports/public.d.ts +40 -0
  21. package/src/exports/vite/build/build_service_worker.js +20 -4
  22. package/src/exports/vite/dev/index.js +2 -2
  23. package/src/exports/vite/index.js +129 -36
  24. package/src/exports/vite/module_ids.js +10 -1
  25. package/src/exports/vite/static_analysis/index.js +2 -4
  26. package/src/exports/vite/static_analysis/types.d.ts +14 -0
  27. package/src/exports/vite/utils.js +7 -12
  28. package/src/runtime/app/env/index.js +2 -0
  29. package/src/runtime/app/env/internal.js +11 -0
  30. package/src/runtime/app/env/private.js +1 -0
  31. package/src/runtime/app/env/public/client.js +7 -0
  32. package/src/runtime/app/env/public/index.js +1 -0
  33. package/src/runtime/app/env/public/server.js +7 -0
  34. package/src/runtime/app/env/standard-schema.d.ts +0 -0
  35. package/src/runtime/app/env/types.d.ts +19 -0
  36. package/src/runtime/app/environment/index.js +8 -2
  37. package/src/runtime/app/server/remote/query.js +1 -1
  38. package/src/runtime/client/ndjson.js +6 -33
  39. package/src/runtime/client/remote-functions/prerender.svelte.js +1 -1
  40. package/src/runtime/client/remote-functions/query-live/iterator.js +36 -55
  41. package/src/runtime/client/sse.js +32 -0
  42. package/src/runtime/client/stream.js +38 -0
  43. package/src/runtime/client/utils.js +1 -1
  44. package/src/runtime/server/env_module.js +13 -3
  45. package/src/runtime/server/index.js +2 -0
  46. package/src/runtime/server/page/render.js +14 -3
  47. package/src/runtime/server/remote.js +2 -2
  48. package/src/runtime/server/respond.js +1 -1
  49. package/src/types/ambient-private.d.ts +25 -9
  50. package/src/types/global-private.d.ts +2 -0
  51. package/src/types/internal.d.ts +2 -1
  52. package/src/utils/error.js +12 -0
  53. package/src/utils/import.js +2 -2
  54. package/src/version.js +1 -1
  55. package/types/index.d.ts +81 -3
  56. package/types/index.d.ts.map +11 -3
@@ -4,21 +4,28 @@ import { get_remote_request_headers, handle_side_channel_response } from '../sha
4
4
  import * as devalue from 'devalue';
5
5
  import { HttpError } from '@sveltejs/kit/internal';
6
6
  import { noop } from '../../../../utils/functions.js';
7
- import { read_ndjson } from '../../ndjson.js';
7
+ import { read_sse } from '../../sse.js';
8
8
 
9
9
  /**
10
- * @param {Response} response
11
- * @returns {Promise<ReadableStreamDefaultReader<Uint8Array>>}
10
+ * @template T
11
+ * @param {string} id
12
+ * @param {string} payload
13
+ * @param {AbortController} [controller]
14
+ * @param {() => void} [on_connect]
15
+ * @returns {AsyncGenerator<T>}
12
16
  */
13
- async function get_stream_reader(response) {
14
- const content_type = response.headers.get('content-type') ?? '';
17
+ export async function* create_live_iterator(
18
+ id,
19
+ payload,
20
+ controller = new AbortController(),
21
+ on_connect = noop
22
+ ) {
23
+ const url = `${base}/${app_dir}/remote/${id}${payload ? `?payload=${payload}` : ''}`;
15
24
 
16
- if (response.ok && content_type.includes('application/json')) {
17
- // we can end up here if we e.g. redirect in `handle`
18
- const result = await response.json();
19
- await handle_side_channel_response(result);
20
- throw new HttpError(500, 'Invalid query.live response');
21
- }
25
+ const response = await fetch(url, {
26
+ headers: get_remote_request_headers(),
27
+ signal: controller.signal
28
+ });
22
29
 
23
30
  if (!response.ok) {
24
31
  const result = await response.json().catch(() => ({
@@ -30,60 +37,34 @@ async function get_stream_reader(response) {
30
37
  throw new HttpError(result.status ?? response.status ?? 500, result.error);
31
38
  }
32
39
 
33
- if (!response.body) {
34
- throw new Error('Expected query.live response body to be a ReadableStream');
40
+ if (response.headers.get('content-type')?.includes('application/json')) {
41
+ // we can end up here if we e.g. redirect in `handle`
42
+ const result = await response.json();
43
+ await handle_side_channel_response(result);
44
+ throw new HttpError(500, 'Invalid query.live response');
35
45
  }
36
46
 
37
- return response.body.getReader();
38
- }
39
-
40
- /**
41
- * Yields deserialized results from a ReadableStream of newline-delimited JSON
42
- * @param {ReadableStreamDefaultReader<Uint8Array>} reader
43
- */
44
- async function* read_live_ndjson(reader) {
45
- for await (const node of read_ndjson(reader)) {
46
- if (node.type === 'result') {
47
- yield devalue.parse(node.result, app.decoders);
48
- continue;
49
- }
50
-
51
- await handle_side_channel_response(node);
52
- throw new HttpError(500, 'Invalid query.live response');
47
+ if (!response.body) {
48
+ throw new Error('Expected query.live response body to be a ReadableStream');
53
49
  }
54
- }
55
50
 
56
- /**
57
- * @template T
58
- * @param {string} id
59
- * @param {string} payload
60
- * @param {AbortController} [controller]
61
- * @param {() => void} [on_connect]
62
- * @returns {AsyncGenerator<T>}
63
- */
64
- export async function* create_live_iterator(
65
- id,
66
- payload,
67
- controller = new AbortController(),
68
- on_connect = noop
69
- ) {
70
- const url = `${base}/${app_dir}/remote/${id}${payload ? `?payload=${payload}` : ''}`;
71
- /** @type {ReadableStreamDefaultReader<Uint8Array> | null} */
72
- let reader = null;
51
+ const reader = response.body.getReader();
73
52
 
74
53
  try {
75
- const response = await fetch(url, {
76
- headers: get_remote_request_headers(),
77
- signal: controller.signal
78
- });
79
- reader = await get_stream_reader(response);
80
-
81
54
  on_connect();
82
55
 
83
- yield* read_live_ndjson(reader);
56
+ for await (const node of read_sse(reader)) {
57
+ if (node.type === 'result') {
58
+ yield devalue.parse(node.result, app.decoders);
59
+ continue;
60
+ }
61
+
62
+ await handle_side_channel_response(node);
63
+ throw new HttpError(500, 'Invalid query.live response');
64
+ }
84
65
  } finally {
85
66
  try {
86
- await reader?.cancel();
67
+ await reader.cancel();
87
68
  } catch {
88
69
  // already closed
89
70
  }
@@ -0,0 +1,32 @@
1
+ import { read_stream } from './stream.js';
2
+
3
+ /**
4
+ * @param {string} block
5
+ * @returns {string | undefined}
6
+ */
7
+ function parse_sse_event_data(block) {
8
+ const lines = block.split('\n');
9
+ let data = '';
10
+
11
+ for (const line of lines) {
12
+ if (line.startsWith('data:')) {
13
+ data += (data ? '\n' : '') + line.slice(5).trimStart();
14
+ }
15
+ }
16
+
17
+ return data || undefined;
18
+ }
19
+
20
+ /**
21
+ * Yields parsed JSON objects from a ReadableStream of Server-Sent Events.
22
+ * Each yielded value is the raw `JSON.parse`'d object from a `data:` field.
23
+ * @param {ReadableStreamDefaultReader<Uint8Array>} reader
24
+ */
25
+ export async function* read_sse(reader) {
26
+ for await (const block of read_stream(reader, '\n\n')) {
27
+ const data = parse_sse_event_data(block);
28
+ if (data) {
29
+ yield JSON.parse(data);
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Reads from a stream, decoding it as text and yielding each block of content
3
+ * separated by `delimiter`. The trailing block (if any) is yielded once the
4
+ * stream closes.
5
+ * @param {ReadableStreamDefaultReader<Uint8Array>} reader
6
+ * @param {string} delimiter
7
+ */
8
+ export async function* read_stream(reader, delimiter) {
9
+ let done = false;
10
+ let buffer = '';
11
+ const decoder = new TextDecoder();
12
+
13
+ while (true) {
14
+ let split = buffer.indexOf(delimiter);
15
+ while (split !== -1) {
16
+ yield buffer.slice(0, split);
17
+ buffer = buffer.slice(split + delimiter.length);
18
+ split = buffer.indexOf(delimiter);
19
+ }
20
+
21
+ if (done) {
22
+ if (buffer) {
23
+ yield buffer;
24
+ }
25
+ return;
26
+ }
27
+
28
+ const chunk = await reader.read();
29
+ done = chunk.done;
30
+ if (chunk.value) {
31
+ buffer += decoder.decode(chunk.value, { stream: true });
32
+ }
33
+
34
+ if (done) {
35
+ buffer += decoder.decode();
36
+ }
37
+ }
38
+ }
@@ -1,7 +1,7 @@
1
1
  import { BROWSER, DEV } from 'esm-env';
2
2
  import { writable } from 'svelte/store';
3
3
  import { assets } from '$app/paths';
4
- import { version } from '__sveltekit/environment';
4
+ import { version } from '$app/env';
5
5
  import { noop } from '../../utils/functions.js';
6
6
  import { PRELOAD_PRIORITIES } from './constants.js';
7
7
 
@@ -1,7 +1,9 @@
1
+ import * as devalue from 'devalue';
1
2
  import { public_env } from '../shared-server.js';
3
+ import { rendered_env } from '__sveltekit/env';
2
4
 
3
5
  /** @type {string} */
4
- let body;
6
+ let payload;
5
7
 
6
8
  /** @type {string} */
7
9
  let etag;
@@ -14,7 +16,11 @@ let headers;
14
16
  * @returns {Response}
15
17
  */
16
18
  export function get_public_env(request) {
17
- body ??= `export const env=${JSON.stringify(public_env)}`;
19
+ const script = request.url.endsWith('.script.js');
20
+
21
+ const env = __SVELTEKIT_EXPERIMENTAL_EXPLICIT_ENVIRONMENT_VARIABLES__ ? rendered_env : public_env;
22
+
23
+ payload ??= devalue.uneval(env);
18
24
  etag ??= `W/${Date.now()}`;
19
25
  headers ??= new Headers({
20
26
  'content-type': 'application/javascript; charset=utf-8',
@@ -25,5 +31,9 @@ export function get_public_env(request) {
25
31
  return new Response(undefined, { status: 304, headers });
26
32
  }
27
33
 
28
- return new Response(body, { headers });
34
+ if (script) {
35
+ return new Response(`globalThis.__sveltekit_sw={env:${payload}}`, { headers });
36
+ }
37
+
38
+ return new Response(`export const env=${payload}`, { headers });
29
39
  }
@@ -8,6 +8,7 @@ import { options, get_hooks } from '__SERVER__/internal.js';
8
8
  import { filter_env } from '../../utils/env.js';
9
9
  import { format_server_error } from './utils.js';
10
10
  import { set_read_implementation, set_manifest } from '__sveltekit/server';
11
+ import { set_env } from '__sveltekit/env';
11
12
  import { set_app } from './app.js';
12
13
 
13
14
  /** @type {Promise<any>} */
@@ -62,6 +63,7 @@ export class Server {
62
63
 
63
64
  set_private_env(filter_env(env, env_private_prefix, env_public_prefix));
64
65
  set_public_env(filter_env(env, env_public_prefix, env_private_prefix));
66
+ set_env(env);
65
67
 
66
68
  if (read) {
67
69
  // Wrap the read function to handle MaybePromise<ReadableStream>
@@ -23,6 +23,7 @@ import {
23
23
  } from '../utils.js';
24
24
  import { create_remote_key } from '../../shared.js';
25
25
  import { get_status } from '../../../utils/error.js';
26
+ import * as env from '__sveltekit/env';
26
27
 
27
28
  // TODO rename this function/module
28
29
 
@@ -404,7 +405,10 @@ export async function render_response({
404
405
  // import the env.js module so that it evaluates before any user code can evaluate.
405
406
  // TODO revert to using top-level await once https://bugs.webkit.org/show_bug.cgi?id=242740 is fixed
406
407
  // https://github.com/sveltejs/kit/pull/11601
407
- const load_env_eagerly = client.uses_env_dynamic_public && state.prerendering;
408
+ const load_env_eagerly =
409
+ (__SVELTEKIT_EXPERIMENTAL_EXPLICIT_ENVIRONMENT_VARIABLES__ ||
410
+ client.uses_env_dynamic_public) &&
411
+ state.prerendering;
408
412
 
409
413
  const properties = [`base: ${base_expression}`];
410
414
 
@@ -412,7 +416,9 @@ export async function render_response({
412
416
  properties.push(`assets: ${s(paths.assets)}`);
413
417
  }
414
418
 
415
- if (client.uses_env_dynamic_public) {
419
+ if (__SVELTEKIT_EXPERIMENTAL_EXPLICIT_ENVIRONMENT_VARIABLES__) {
420
+ properties.push(`env: ${load_env_eagerly ? 'null' : devalue.uneval(env.rendered_env)}`);
421
+ } else if (client.uses_env_dynamic_public) {
416
422
  properties.push(`env: ${load_env_eagerly ? 'null' : s(public_env)}`);
417
423
  }
418
424
 
@@ -628,8 +634,11 @@ export async function render_response({
628
634
  }`);
629
635
  }
630
636
 
637
+ // we need to eagerly import the Vite client module in development to ensure
638
+ // that Vite global constant replacements are initialised before our code runs
631
639
  const init_app = `
632
640
  {
641
+ ${DEV ? `import('${paths.base}/@vite/client')` : ''}
633
642
  ${blocks.join('\n\n\t\t\t\t\t')}
634
643
  }
635
644
  `;
@@ -677,7 +686,9 @@ export async function render_response({
677
686
  body,
678
687
  assets,
679
688
  nonce: /** @type {string} */ (csp.nonce),
680
- env: public_env
689
+ env: __SVELTEKIT_EXPERIMENTAL_EXPLICIT_ENVIRONMENT_VARIABLES__
690
+ ? env.explicit_public_env
691
+ : public_env
681
692
  });
682
693
 
683
694
  // TODO flush chunks as early as we can
@@ -170,7 +170,7 @@ async function handle_remote_call_internal(event, state, options, manifest, id)
170
170
  * @param {any} payload
171
171
  */
172
172
  function send(controller, payload) {
173
- controller.enqueue(encoder.encode(JSON.stringify(payload) + '\n'));
173
+ controller.enqueue(encoder.encode('data: ' + JSON.stringify(payload) + '\n\n'));
174
174
  }
175
175
 
176
176
  let closed = false;
@@ -245,7 +245,7 @@ async function handle_remote_call_internal(event, state, options, manifest, id)
245
245
  {
246
246
  headers: {
247
247
  'cache-control': 'private, no-store',
248
- 'content-type': 'application/x-ndjson'
248
+ 'content-type': 'text/event-stream'
249
249
  }
250
250
  }
251
251
  );
@@ -317,7 +317,7 @@ export async function internal_respond(request, options, manifest, state) {
317
317
  return resolve_route(resolved_path, new URL(request.url), manifest);
318
318
  }
319
319
 
320
- if (resolved_path === `/${app_dir}/env.js`) {
320
+ if (resolved_path === `/${app_dir}/env.js` || resolved_path === `/${app_dir}/env.script.js`) {
321
321
  return get_public_env(request);
322
322
  }
323
323
 
@@ -1,12 +1,3 @@
1
- /** Internal version of $app/environment */
2
- declare module '__sveltekit/environment' {
3
- export const building: boolean;
4
- export const prerendering: boolean;
5
- export const version: string;
6
- export function set_building(): void;
7
- export function set_prerendering(): void;
8
- }
9
-
10
1
  /** Internal version of $app/paths */
11
2
  declare module '__sveltekit/paths' {
12
3
  export let base: '' | `/${string}`;
@@ -27,3 +18,28 @@ declare module '__sveltekit/server' {
27
18
  export function set_manifest(manifest: SSRManifest): void;
28
19
  export function set_read_implementation(fn: (path: string) => ReadableStream): void;
29
20
  }
21
+
22
+ declare module '__sveltekit/env' {
23
+ // exported environment variables are defined in env.d.ts
24
+
25
+ /** Populate exported environment variables */
26
+ export function set_env(environment: Record<string, string>): void;
27
+
28
+ /** public env vars */
29
+ export const explicit_public_env: Record<string, any>;
30
+
31
+ /** public env vars that should be inlined when a page is rendered */
32
+ export const rendered_env: Record<string, any>;
33
+ }
34
+
35
+ declare module '__sveltekit/env/private' {
36
+ // exported environment variables are defined in env.d.ts
37
+ }
38
+
39
+ declare module '__sveltekit/env/public/client' {
40
+ // exported environment variables are defined in env.d.ts
41
+ }
42
+
43
+ declare module '__sveltekit/env/public/server' {
44
+ // exported environment variables are defined in env.d.ts
45
+ }
@@ -1,6 +1,7 @@
1
1
  declare global {
2
2
  const __SVELTEKIT_ADAPTER_NAME__: string;
3
3
  const __SVELTEKIT_APP_DIR__: string;
4
+ const __SVELTEKIT_APP_VERSION__: string;
4
5
  const __SVELTEKIT_APP_VERSION_FILE__: string;
5
6
  const __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: number;
6
7
  /**
@@ -63,6 +64,7 @@ declare global {
63
64
  */
64
65
  var __SVELTEKIT_TRACK__: (label: string) => void;
65
66
  var __SVELTEKIT_EXPERIMENTAL_USE_TRANSFORM_ERROR__: boolean;
67
+ var __SVELTEKIT_EXPERIMENTAL_EXPLICIT_ENVIRONMENT_VARIABLES__: boolean;
66
68
  var Bun: object;
67
69
  var Deno: object;
68
70
  }
@@ -34,7 +34,7 @@ import {
34
34
  TrailingSlash
35
35
  } from './private.js';
36
36
  import { Span } from '@opentelemetry/api';
37
- import type { PageOptions } from '../exports/vite/static_analysis/index.js';
37
+ import { PageOptions } from '../exports/vite/static_analysis/types.js';
38
38
  import { SharedIterator } from '../utils/shared-iterator.js';
39
39
 
40
40
  export interface ServerModule {
@@ -44,6 +44,7 @@ export interface ServerModule {
44
44
  export interface ServerInternalModule {
45
45
  set_assets(path: string): void;
46
46
  set_building(): void;
47
+ set_env(environment: Record<string, string>): void;
47
48
  set_manifest(manifest: SSRManifest): void;
48
49
  set_prerendering(): void;
49
50
  set_private_env(environment: Record<string, string>): void;
@@ -1,5 +1,17 @@
1
1
  import { HttpError, SvelteKitError } from '@sveltejs/kit/internal';
2
2
 
3
+ /**
4
+ * For times when you need to throw an error, but without
5
+ * displaying a useless stack trace (since the developer
6
+ * can't do anything useful with it)
7
+ * @param {string} message
8
+ */
9
+ export function stackless(message) {
10
+ const error = new Error(message);
11
+ error.stack = '';
12
+ return error;
13
+ }
14
+
3
15
  /**
4
16
  * @param {unknown} err
5
17
  * @return {Error}
@@ -45,8 +45,8 @@ function resolve_peer(dependency) {
45
45
  */
46
46
  export async function import_peer(dependency) {
47
47
  try {
48
- return await import(resolve_peer(dependency));
48
+ return await import(/* @vite-ignore */ resolve_peer(dependency));
49
49
  } catch {
50
- return await import(dependency);
50
+ return await import(/* @vite-ignore */ dependency);
51
51
  }
52
52
  }
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.62.0';
4
+ export const VERSION = '2.63.1';
package/types/index.d.ts CHANGED
@@ -450,6 +450,13 @@ declare module '@sveltejs/kit' {
450
450
  };
451
451
  /** Experimental features. Here be dragons. These are not subject to semantic versioning, so breaking changes or removal can happen in any release. */
452
452
  experimental?: {
453
+ /**
454
+ * Whether to enable explicit environment variables using `src/env.js` or `src/env.ts`.
455
+ * @since 2.63.0
456
+ * @default false
457
+ */
458
+ explicitEnvironmentVariables?: boolean;
459
+
453
460
  /**
454
461
  * Options for enabling server-side [OpenTelemetry](https://opentelemetry.io/) tracing for SvelteKit operations including the [`handle` hook](https://svelte.dev/docs/kit/hooks#Server-hooks-handle), [`load` functions](https://svelte.dev/docs/kit/load), [form actions](https://svelte.dev/docs/kit/form-actions), and [remote functions](https://svelte.dev/docs/kit/remote-functions).
455
462
  * @default { server: false, serverFile: false }
@@ -2287,6 +2294,39 @@ declare module '@sveltejs/kit' {
2287
2294
  export type RemoteLiveQueryFunction<Input, Output, _Validated = Input> = (
2288
2295
  arg: undefined extends Input ? Input | void : Input
2289
2296
  ) => RemoteLiveQuery<Output>;
2297
+
2298
+ /**
2299
+ * [Environment variables](https://svelte.dev/docs/kit/environment-variables) can be configured by exporting
2300
+ * a `variables` object from `src/env.ts`, using [`defineEnvVars`](https://svelte.dev/docs/kit/@sveltejs-kit-hooks#defineEnvVars).
2301
+ */
2302
+ export interface EnvVarConfig<T> {
2303
+ /**
2304
+ * Whether the environment variable can be accessed by client-side code.
2305
+ * - if `true`, it can be imported from `$app/env/public`
2306
+ * - if `false`, it can be imported from `$app/env/private`, which is a [server-only module](https://svelte.dev/docs/kit/server-only-modules)
2307
+ * @default false
2308
+ */
2309
+ public?: boolean;
2310
+ /**
2311
+ * Whether the value is determined at build time or when the app runs.
2312
+ * - if `true`, the build time value is inlined into the bundle. This enables optimisations like dead-code elimination
2313
+ * - if `false`, the value is read from the environment when the app starts
2314
+ * @default false
2315
+ */
2316
+ static?: boolean;
2317
+ /**
2318
+ * A [Standard Schema](https://standardschema.dev/) validator that is applied to the value when the app starts.
2319
+ * The validator can output any value — not necessarily a string — but public, non-static values must be
2320
+ * serializable by [devalue](https://github.com/sveltejs/devalue) so that they can be sent to the browser.
2321
+ *
2322
+ * If omitted, the value must be a non-empty string.
2323
+ */
2324
+ schema?: StandardSchemaV1<string | undefined, T>;
2325
+ /**
2326
+ * A description of the variable that will be used for inline documentation on hover.
2327
+ */
2328
+ description?: string;
2329
+ }
2290
2330
  interface AdapterEntry {
2291
2331
  /**
2292
2332
  * A string that uniquely identifies an HTTP service (e.g. serverless function) and is used for deduplication.
@@ -2908,8 +2948,16 @@ declare module '@sveltejs/kit' {
2908
2948
  export type LessThan<TNumber extends number, TArray extends any[] = []> = TNumber extends TArray["length"] ? TArray[number] : LessThan<TNumber, [...TArray, TArray["length"]]>;
2909
2949
  export type NumericRange<TStart extends number, TEnd extends number> = Exclude<TEnd | LessThan<TEnd>, LessThan<TStart>>;
2910
2950
  type ValidPageOption = (typeof valid_page_options_array)[number];
2911
- type PageOptions = Partial<Record<ValidPageOption, any>>;
2912
- const valid_page_options_array: readonly ["ssr", "prerender", "csr", "trailingSlash", "config", "entries", "load"];
2951
+
2952
+ type PageOptions = Partial<{
2953
+ [K in ValidPageOption]: K extends 'ssr' | 'csr'
2954
+ ? boolean
2955
+ : K extends 'prerender'
2956
+ ? PrerenderOption
2957
+ : K extends 'trailingSlash'
2958
+ ? TrailingSlash
2959
+ : any;
2960
+ }>;
2913
2961
  export const VERSION: string;
2914
2962
  class HttpError_1 {
2915
2963
 
@@ -2926,12 +2974,18 @@ declare module '@sveltejs/kit' {
2926
2974
  status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308;
2927
2975
  location: string;
2928
2976
  }
2977
+ const valid_page_options_array: readonly ["ssr", "prerender", "csr", "trailingSlash", "config", "entries", "load"];
2929
2978
 
2930
2979
  export {};
2931
2980
  }
2932
2981
 
2933
2982
  declare module '@sveltejs/kit/hooks' {
2934
- import type { Handle } from '@sveltejs/kit';
2983
+ import type { EnvVarConfig, Handle } from '@sveltejs/kit';
2984
+ /**
2985
+ * Utility for defining [environment variables](https://svelte.dev/docs/kit/environment-variables),
2986
+ * which are made available via `$app/env/public` and `$app/env/private`.
2987
+ * */
2988
+ export function defineEnvVars<T extends Record<string, EnvVarConfig<any>>>(variables: T): T;
2935
2989
  /**
2936
2990
  * A helper function for sequencing multiple `handle` calls in a middleware-like manner.
2937
2991
  * The behavior for the `handle` options is as follows:
@@ -3048,6 +3102,30 @@ declare module '@sveltejs/kit/vite' {
3048
3102
  export {};
3049
3103
  }
3050
3104
 
3105
+ declare module '$app/env' {
3106
+ /**
3107
+ * `true` if the app is running in the browser.
3108
+ */
3109
+ export const browser: boolean;
3110
+
3111
+ /**
3112
+ * Whether the dev server is running. This is not guaranteed to correspond to `NODE_ENV` or `MODE`.
3113
+ */
3114
+ export const dev: boolean;
3115
+
3116
+ /**
3117
+ * SvelteKit analyses your app during the `build` step by running it. During this process, `building` is `true`. This also applies during prerendering.
3118
+ */
3119
+ export const building: boolean;
3120
+
3121
+ /**
3122
+ * The value of `config.kit.version.name`.
3123
+ */
3124
+ export const version: string;
3125
+
3126
+ export {};
3127
+ }
3128
+
3051
3129
  declare module '$app/environment' {
3052
3130
  /**
3053
3131
  * `true` if the app is running in the browser.
@@ -96,6 +96,7 @@
96
96
  "RemotePrerenderFunction",
97
97
  "RemoteQueryFunction",
98
98
  "RemoteLiveQueryFunction",
99
+ "EnvVarConfig",
99
100
  "AdapterEntry",
100
101
  "Csp",
101
102
  "CspDirectives",
@@ -148,8 +149,9 @@
148
149
  "normalizeUrl",
149
150
  "ValidPageOption",
150
151
  "PageOptions",
151
- "valid_page_options_array",
152
152
  "VERSION",
153
+ "valid_page_options_array",
154
+ "defineEnvVars",
153
155
  "sequence",
154
156
  "getRequest",
155
157
  "setResponse",
@@ -198,12 +200,15 @@
198
200
  "../src/types/private.d.ts",
199
201
  "../src/types/internal.d.ts",
200
202
  "../src/exports/index.js",
201
- "../src/exports/vite/static_analysis/index.js",
203
+ "../src/exports/vite/static_analysis/types.d.ts",
202
204
  "../src/version.js",
205
+ "../src/exports/vite/static_analysis/index.js",
206
+ "../src/exports/hooks/index.js",
203
207
  "../src/exports/hooks/sequence.js",
204
208
  "../src/exports/node/index.js",
205
209
  "../src/exports/node/polyfills.js",
206
210
  "../src/exports/vite/index.js",
211
+ "../src/runtime/app/env/types.d.ts",
207
212
  "../src/runtime/app/environment/types.d.ts",
208
213
  "../src/runtime/app/forms.js",
209
214
  "../src/runtime/client/client.js",
@@ -236,8 +241,11 @@
236
241
  null,
237
242
  null,
238
243
  null,
244
+ null,
245
+ null,
246
+ null,
239
247
  null
240
248
  ],
241
- "mappings": "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",
249
+ "mappings": "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",
242
250
  "ignoreList": []
243
251
  }