@sveltejs/kit 2.53.0 → 2.53.2
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 +2 -2
- package/src/constants.js +2 -0
- package/src/exports/public.d.ts +10 -5
- package/src/exports/vite/index.js +3 -1
- package/src/runtime/app/server/remote/command.js +4 -8
- package/src/runtime/app/server/remote/form.js +12 -8
- package/src/runtime/client/remote-functions/command.svelte.js +9 -6
- package/src/runtime/client/remote-functions/form.svelte.js +2 -0
- package/src/runtime/client/remote-functions/prerender.svelte.js +9 -2
- package/src/runtime/client/remote-functions/query.svelte.js +16 -5
- package/src/runtime/client/remote-functions/shared.svelte.js +19 -8
- package/src/runtime/server/endpoint.js +1 -2
- package/src/runtime/server/page/actions.js +1 -0
- package/src/runtime/server/page/render.js +1 -0
- package/src/runtime/server/respond.js +2 -0
- package/src/types/internal.d.ts +1 -1
- package/src/types/private.d.ts +8 -0
- package/src/types/synthetic/$env+dynamic+private.md +38 -5
- package/src/types/synthetic/$env+dynamic+public.md +41 -3
- package/src/types/synthetic/$env+static+private.md +23 -11
- package/src/types/synthetic/$env+static+public.md +27 -3
- package/src/version.js +1 -1
- package/types/index.d.ts +17 -5
- package/types/index.d.ts.map +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltejs/kit",
|
|
3
|
-
"version": "2.53.
|
|
3
|
+
"version": "2.53.2",
|
|
4
4
|
"description": "SvelteKit is the fastest way to build Svelte apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@types/connect": "^3.4.38",
|
|
39
39
|
"@types/node": "^18.19.119",
|
|
40
40
|
"@types/set-cookie-parser": "^2.4.7",
|
|
41
|
-
"dts-buddy": "^0.
|
|
41
|
+
"dts-buddy": "^0.7.0",
|
|
42
42
|
"rollup": "^4.14.2",
|
|
43
43
|
"svelte": "^5.51.5",
|
|
44
44
|
"svelte-preprocess": "^6.0.0",
|
package/src/constants.js
CHANGED
|
@@ -8,4 +8,6 @@ export const GENERATED_COMMENT = '// this file is generated — do not edit it\n
|
|
|
8
8
|
|
|
9
9
|
export const ENDPOINT_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD'];
|
|
10
10
|
|
|
11
|
+
export const MUTATIVE_METHODS = ['POST', 'PUT', 'PATCH', 'DELETE'];
|
|
12
|
+
|
|
11
13
|
export const PAGE_METHODS = ['GET', 'POST', 'HEAD'];
|
package/src/exports/public.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
PrerenderOption,
|
|
17
17
|
RequestOptions,
|
|
18
18
|
RouteSegment,
|
|
19
|
+
DeepPartial,
|
|
19
20
|
IsAny
|
|
20
21
|
} from '../types/private.js';
|
|
21
22
|
import { BuildData, SSRNodeLoader, SSRRoute, ValidatedConfig } from 'types';
|
|
@@ -1910,9 +1911,9 @@ type InputElementProps<T extends keyof InputTypeMap> = T extends 'checkbox' | 'r
|
|
|
1910
1911
|
|
|
1911
1912
|
type RemoteFormFieldMethods<T> = {
|
|
1912
1913
|
/** The values that will be submitted */
|
|
1913
|
-
value(): T
|
|
1914
|
+
value(): DeepPartial<T>;
|
|
1914
1915
|
/** Set the values that will be submitted */
|
|
1915
|
-
set(input: T): T
|
|
1916
|
+
set(input: DeepPartial<T>): DeepPartial<T>;
|
|
1916
1917
|
/** Validation issues, if any */
|
|
1917
1918
|
issues(): RemoteFormIssue[] | undefined;
|
|
1918
1919
|
};
|
|
@@ -2110,7 +2111,7 @@ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
|
|
|
2110
2111
|
* The return value of a remote `command` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#command) for full documentation.
|
|
2111
2112
|
*/
|
|
2112
2113
|
export type RemoteCommand<Input, Output> = {
|
|
2113
|
-
(arg: Input): Promise<Awaited<Output>> & {
|
|
2114
|
+
(arg: undefined extends Input ? Input | void : Input): Promise<Awaited<Output>> & {
|
|
2114
2115
|
updates(...queries: Array<RemoteQuery<any> | RemoteQueryOverride>): Promise<Awaited<Output>>;
|
|
2115
2116
|
};
|
|
2116
2117
|
/** The number of pending command executions */
|
|
@@ -2180,11 +2181,15 @@ export interface RemoteQueryOverride {
|
|
|
2180
2181
|
/**
|
|
2181
2182
|
* The return value of a remote `prerender` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#prerender) for full documentation.
|
|
2182
2183
|
*/
|
|
2183
|
-
export type RemotePrerenderFunction<Input, Output> = (
|
|
2184
|
+
export type RemotePrerenderFunction<Input, Output> = (
|
|
2185
|
+
arg: undefined extends Input ? Input | void : Input
|
|
2186
|
+
) => RemoteResource<Output>;
|
|
2184
2187
|
|
|
2185
2188
|
/**
|
|
2186
2189
|
* The return value of a remote `query` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#query) for full documentation.
|
|
2187
2190
|
*/
|
|
2188
|
-
export type RemoteQueryFunction<Input, Output> = (
|
|
2191
|
+
export type RemoteQueryFunction<Input, Output> = (
|
|
2192
|
+
arg: undefined extends Input ? Input | void : Input
|
|
2193
|
+
) => RemoteQuery<Output>;
|
|
2189
2194
|
|
|
2190
2195
|
export * from './index.js';
|
|
@@ -932,7 +932,9 @@ async function kit({ svelte_config }) {
|
|
|
932
932
|
assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
|
|
933
933
|
hoistTransitiveImports: false,
|
|
934
934
|
sourcemapIgnoreList,
|
|
935
|
-
inlineDynamicImports: !split
|
|
935
|
+
inlineDynamicImports: is_rolldown ? undefined : !split,
|
|
936
|
+
// @ts-ignore: only available in Vite 8
|
|
937
|
+
codeSplitting: is_rolldown ? split : undefined
|
|
936
938
|
},
|
|
937
939
|
preserveEntrySignatures: 'strict',
|
|
938
940
|
onwarn(warning, handler) {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
/** @import { StandardSchemaV1 } from '@standard-schema/spec' */
|
|
4
4
|
import { get_request_store } from '@sveltejs/kit/internal/server';
|
|
5
5
|
import { create_validator, run_remote_function } from './shared.js';
|
|
6
|
+
import { MUTATIVE_METHODS } from '../../../../constants.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Creates a remote command. When called from the browser, the function will be invoked on the server via a `fetch` call.
|
|
@@ -64,15 +65,10 @@ export function command(validate_or_fn, maybe_fn) {
|
|
|
64
65
|
const wrapper = (arg) => {
|
|
65
66
|
const { event, state } = get_request_store();
|
|
66
67
|
|
|
67
|
-
if (state.
|
|
68
|
-
|
|
69
|
-
throw new Error(
|
|
70
|
-
`Cannot call a command (\`${__.name}(${maybe_fn ? '...' : ''})\`) from a ${event.request.method} handler`
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
} else if (!event.isRemoteRequest) {
|
|
68
|
+
if (!state.allows_commands) {
|
|
69
|
+
const disallowed_method = !MUTATIVE_METHODS.includes(event.request.method);
|
|
74
70
|
throw new Error(
|
|
75
|
-
`Cannot call a command (\`${__.name}(${maybe_fn ? '...' : ''})\`) during server-side rendering`
|
|
71
|
+
`Cannot call a command (\`${__.name}(${maybe_fn ? '...' : ''})\`) ${disallowed_method ? `from a ${event.request.method} handler or ` : ''}during server-side rendering`
|
|
76
72
|
);
|
|
77
73
|
}
|
|
78
74
|
|
|
@@ -176,24 +176,28 @@ export function form(validate_or_fn, maybe_fn) {
|
|
|
176
176
|
|
|
177
177
|
Object.defineProperty(instance, 'fields', {
|
|
178
178
|
get() {
|
|
179
|
-
const data = get_cache(__)?.[''];
|
|
180
|
-
const issues = flatten_issues(data?.issues ?? []);
|
|
181
|
-
|
|
182
179
|
return create_field_proxy(
|
|
183
180
|
{},
|
|
184
|
-
() =>
|
|
181
|
+
() => get_cache(__)?.['']?.input ?? {},
|
|
185
182
|
(path, value) => {
|
|
183
|
+
const cache = get_cache(__);
|
|
184
|
+
const data = cache[''];
|
|
185
|
+
|
|
186
186
|
if (data?.submission) {
|
|
187
187
|
// don't override a submission
|
|
188
188
|
return;
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
if (path.length === 0) {
|
|
192
|
+
(cache[''] ??= {}).input = value;
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
193
195
|
|
|
194
|
-
|
|
196
|
+
const input = data?.input ?? {};
|
|
197
|
+
deep_set(input, path.map(String), value);
|
|
198
|
+
(cache[''] ??= {}).input = input;
|
|
195
199
|
},
|
|
196
|
-
() => issues
|
|
200
|
+
() => flatten_issues(get_cache(__)?.['']?.issues ?? [])
|
|
197
201
|
);
|
|
198
202
|
}
|
|
199
203
|
});
|
|
@@ -6,7 +6,7 @@ import * as devalue from 'devalue';
|
|
|
6
6
|
import { HttpError } from '@sveltejs/kit/internal';
|
|
7
7
|
import { app } from '../client.js';
|
|
8
8
|
import { stringify_remote_arg } from '../../shared.js';
|
|
9
|
-
import { refresh_queries, release_overrides } from './shared.svelte.js';
|
|
9
|
+
import { get_remote_request_headers, refresh_queries, release_overrides } from './shared.svelte.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Client-version of the `command` function from `$app/server`.
|
|
@@ -27,6 +27,13 @@ export function command(id) {
|
|
|
27
27
|
// Increment pending count when command starts
|
|
28
28
|
pending_count++;
|
|
29
29
|
|
|
30
|
+
// Noone should call commands during rendering but belts and braces.
|
|
31
|
+
// Do this here, after await Svelte' reactivity context is gone.
|
|
32
|
+
const headers = {
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
...get_remote_request_headers()
|
|
35
|
+
};
|
|
36
|
+
|
|
30
37
|
/** @type {Promise<any> & { updates: (...args: any[]) => any }} */
|
|
31
38
|
const promise = (async () => {
|
|
32
39
|
try {
|
|
@@ -39,11 +46,7 @@ export function command(id) {
|
|
|
39
46
|
payload: stringify_remote_arg(arg, app.hooks.transport),
|
|
40
47
|
refreshes: updates.map((u) => u._key)
|
|
41
48
|
}),
|
|
42
|
-
headers
|
|
43
|
-
'Content-Type': 'application/json',
|
|
44
|
-
'x-sveltekit-pathname': location.pathname,
|
|
45
|
-
'x-sveltekit-search': location.search
|
|
46
|
-
}
|
|
49
|
+
headers
|
|
47
50
|
});
|
|
48
51
|
|
|
49
52
|
if (!response.ok) {
|
|
@@ -201,6 +201,7 @@ export function form(id) {
|
|
|
201
201
|
method: 'POST',
|
|
202
202
|
headers: {
|
|
203
203
|
'Content-Type': BINARY_FORM_CONTENT_TYPE,
|
|
204
|
+
// Forms cannot be called during rendering, so it's save to use location here
|
|
204
205
|
'x-sveltekit-pathname': location.pathname,
|
|
205
206
|
'x-sveltekit-search': location.search
|
|
206
207
|
},
|
|
@@ -524,6 +525,7 @@ export function form(id) {
|
|
|
524
525
|
method: 'POST',
|
|
525
526
|
headers: {
|
|
526
527
|
'Content-Type': BINARY_FORM_CONTENT_TYPE,
|
|
528
|
+
// Validation should not be and will not be called during rendering, so it's save to use location here
|
|
527
529
|
'x-sveltekit-pathname': location.pathname,
|
|
528
530
|
'x-sveltekit-search': location.search
|
|
529
531
|
},
|
|
@@ -3,7 +3,11 @@ import { version } from '__sveltekit/environment';
|
|
|
3
3
|
import * as devalue from 'devalue';
|
|
4
4
|
import { DEV } from 'esm-env';
|
|
5
5
|
import { app, remote_responses } from '../client.js';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
create_remote_function,
|
|
8
|
+
get_remote_request_headers,
|
|
9
|
+
remote_request
|
|
10
|
+
} from './shared.svelte.js';
|
|
7
11
|
|
|
8
12
|
// Initialize Cache API for prerender functions
|
|
9
13
|
const CACHE_NAME = DEV ? `sveltekit:${Date.now()}` : `sveltekit:${version}`;
|
|
@@ -150,6 +154,9 @@ export function prerender(id) {
|
|
|
150
154
|
return data;
|
|
151
155
|
}
|
|
152
156
|
|
|
157
|
+
// Do this here, after await Svelte' reactivity context is gone.
|
|
158
|
+
const headers = get_remote_request_headers();
|
|
159
|
+
|
|
153
160
|
// Check the Cache API first
|
|
154
161
|
if (prerender_cache) {
|
|
155
162
|
try {
|
|
@@ -164,7 +171,7 @@ export function prerender(id) {
|
|
|
164
171
|
}
|
|
165
172
|
}
|
|
166
173
|
|
|
167
|
-
const encoded = await remote_request(url);
|
|
174
|
+
const encoded = await remote_request(url, headers);
|
|
168
175
|
|
|
169
176
|
// For successful prerender requests, save to cache
|
|
170
177
|
if (prerender_cache) {
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
import { app_dir, base } from '$app/paths/internal/client';
|
|
4
4
|
import { app, goto, query_map, remote_responses } from '../client.js';
|
|
5
5
|
import { tick } from 'svelte';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
create_remote_function,
|
|
8
|
+
get_remote_request_headers,
|
|
9
|
+
remote_request
|
|
10
|
+
} from './shared.svelte.js';
|
|
7
11
|
import * as devalue from 'devalue';
|
|
8
12
|
import { HttpError, Redirect } from '@sveltejs/kit/internal';
|
|
9
13
|
import { DEV } from 'esm-env';
|
|
@@ -31,7 +35,7 @@ export function query(id) {
|
|
|
31
35
|
|
|
32
36
|
const url = `${base}/${app_dir}/remote/${id}${payload ? `?payload=${payload}` : ''}`;
|
|
33
37
|
|
|
34
|
-
const result = await remote_request(url);
|
|
38
|
+
const result = await remote_request(url, get_remote_request_headers());
|
|
35
39
|
return devalue.parse(result, app.decoders);
|
|
36
40
|
});
|
|
37
41
|
});
|
|
@@ -63,6 +67,15 @@ export function query_batch(id) {
|
|
|
63
67
|
|
|
64
68
|
if (batching.size > 1) return;
|
|
65
69
|
|
|
70
|
+
// Do this here, after await Svelte' reactivity context is gone.
|
|
71
|
+
// TODO is it possible to have batches of the same key
|
|
72
|
+
// but in different forks/async contexts and in the same macrotask?
|
|
73
|
+
// If so this would potentially be buggy
|
|
74
|
+
const headers = {
|
|
75
|
+
'Content-Type': 'application/json',
|
|
76
|
+
...get_remote_request_headers()
|
|
77
|
+
};
|
|
78
|
+
|
|
66
79
|
// Wait for the next macrotask - don't use microtask as Svelte runtime uses these to collect changes and flush them,
|
|
67
80
|
// and flushes could reveal more queries that should be batched.
|
|
68
81
|
setTimeout(async () => {
|
|
@@ -76,9 +89,7 @@ export function query_batch(id) {
|
|
|
76
89
|
body: JSON.stringify({
|
|
77
90
|
payloads: Array.from(batched.keys())
|
|
78
91
|
}),
|
|
79
|
-
headers
|
|
80
|
-
'Content-Type': 'application/json'
|
|
81
|
-
}
|
|
92
|
+
headers
|
|
82
93
|
});
|
|
83
94
|
|
|
84
95
|
if (!response.ok) {
|
|
@@ -4,21 +4,32 @@
|
|
|
4
4
|
import * as devalue from 'devalue';
|
|
5
5
|
import { app, goto, query_map, remote_responses } from '../client.js';
|
|
6
6
|
import { HttpError, Redirect } from '@sveltejs/kit/internal';
|
|
7
|
-
import { tick } from 'svelte';
|
|
7
|
+
import { tick, untrack } from 'svelte';
|
|
8
8
|
import { create_remote_key, stringify_remote_arg } from '../../shared.js';
|
|
9
|
+
import { page } from '../state.svelte.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @returns {{ 'x-sveltekit-pathname': string, 'x-sveltekit-search': string }}
|
|
13
|
+
*/
|
|
14
|
+
export function get_remote_request_headers() {
|
|
15
|
+
// This will be the correct value of the current or soon-current url,
|
|
16
|
+
// even in forks because it's state-based - therefore not using window.location.
|
|
17
|
+
// Use untrack(...) to Avoid accidental reactive dependency on pathname/search
|
|
18
|
+
return untrack(() => ({
|
|
19
|
+
'x-sveltekit-pathname': page.url.pathname,
|
|
20
|
+
'x-sveltekit-search': page.url.search
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
9
23
|
|
|
10
24
|
/**
|
|
11
|
-
*
|
|
12
25
|
* @param {string} url
|
|
26
|
+
* @param {HeadersInit} headers
|
|
13
27
|
*/
|
|
14
|
-
export async function remote_request(url) {
|
|
28
|
+
export async function remote_request(url, headers) {
|
|
15
29
|
const response = await fetch(url, {
|
|
16
30
|
headers: {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// `location.pathname` is updated
|
|
20
|
-
'x-sveltekit-pathname': location.pathname,
|
|
21
|
-
'x-sveltekit-search': location.search
|
|
31
|
+
'Content-Type': 'application/json',
|
|
32
|
+
...headers
|
|
22
33
|
}
|
|
23
34
|
});
|
|
24
35
|
|
|
@@ -41,9 +41,8 @@ export async function render_endpoint(event, event_state, mod, state) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
event_state.is_endpoint_request = true;
|
|
45
|
-
|
|
46
44
|
try {
|
|
45
|
+
event_state.allows_commands = true;
|
|
47
46
|
const response = await with_request_store({ event, state: event_state }, () =>
|
|
48
47
|
handler(/** @type {import('@sveltejs/kit').RequestEvent<Record<string, any>>} */ (event))
|
|
49
48
|
);
|
|
@@ -266,6 +266,7 @@ async function call_action(event, event_state, actions) {
|
|
|
266
266
|
},
|
|
267
267
|
fn: async (current) => {
|
|
268
268
|
const traced_event = merge_tracing(event, current);
|
|
269
|
+
event_state.allows_commands = true;
|
|
269
270
|
const result = await with_request_store({ event: traced_event, state: event_state }, () =>
|
|
270
271
|
action(traced_event)
|
|
271
272
|
);
|
|
@@ -200,6 +200,7 @@ export async function render_response({
|
|
|
200
200
|
};
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
+
event_state.allows_commands = false;
|
|
203
204
|
rendered = await with_request_store({ event, state: event_state }, async () => {
|
|
204
205
|
// use relative paths during rendering, so that the resulting HTML is as
|
|
205
206
|
// portable as possible, but reset afterwards
|
|
@@ -39,6 +39,7 @@ import { server_data_serializer } from './page/data_serializer.js';
|
|
|
39
39
|
import { get_remote_id, handle_remote_call } from './remote.js';
|
|
40
40
|
import { record_span } from '../telemetry/record_span.js';
|
|
41
41
|
import { otel } from '../telemetry/otel.js';
|
|
42
|
+
import { MUTATIVE_METHODS } from '../../constants.js';
|
|
42
43
|
|
|
43
44
|
/* global __SVELTEKIT_ADAPTER_NAME__ */
|
|
44
45
|
|
|
@@ -419,6 +420,7 @@ export async function internal_respond(request, options, manifest, state) {
|
|
|
419
420
|
current: root_span
|
|
420
421
|
}
|
|
421
422
|
};
|
|
423
|
+
event_state.allows_commands = MUTATIVE_METHODS.includes(request.method);
|
|
422
424
|
return await with_request_store({ event: traced_event, state: event_state }, () =>
|
|
423
425
|
options.hooks.handle({
|
|
424
426
|
event: traced_event,
|
package/src/types/internal.d.ts
CHANGED
|
@@ -630,7 +630,7 @@ export interface RequestState {
|
|
|
630
630
|
form_instances?: Map<any, any>;
|
|
631
631
|
remote_data?: Map<RemoteInfo, Record<string, MaybePromise<any>>>;
|
|
632
632
|
refreshes?: Record<string, Promise<any>>;
|
|
633
|
-
|
|
633
|
+
allows_commands?: boolean;
|
|
634
634
|
}
|
|
635
635
|
|
|
636
636
|
export interface RequestStore {
|
package/src/types/private.d.ts
CHANGED
|
@@ -243,4 +243,12 @@ export interface RouteSegment {
|
|
|
243
243
|
/** @default 'never' */
|
|
244
244
|
export type TrailingSlash = 'never' | 'always' | 'ignore';
|
|
245
245
|
|
|
246
|
+
export type DeepPartial<T> = T extends Record<PropertyKey, unknown> | unknown[]
|
|
247
|
+
? {
|
|
248
|
+
[K in keyof T]?: T[K] extends Record<PropertyKey, unknown> | unknown[]
|
|
249
|
+
? DeepPartial<T[K]>
|
|
250
|
+
: T[K];
|
|
251
|
+
}
|
|
252
|
+
: T | undefined;
|
|
253
|
+
|
|
246
254
|
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
@@ -1,10 +1,43 @@
|
|
|
1
|
-
This module provides access to
|
|
1
|
+
This module provides access to environment variables set _dynamically_ at runtime and that are limited to _private_ access.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
| | Runtime | Build time |
|
|
4
|
+
| ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
5
|
+
| Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) |
|
|
6
|
+
| Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) |
|
|
7
|
+
|
|
8
|
+
Dynamic environment variables are defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://svelte.dev/docs/kit/cli)), this is equivalent to `process.env`.
|
|
9
|
+
|
|
10
|
+
**_Private_ access:**
|
|
11
|
+
|
|
12
|
+
- This module cannot be imported into client-side code
|
|
13
|
+
- This module includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured)
|
|
14
|
+
|
|
15
|
+
> [!NOTE] In `dev`, `$env/dynamic` includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter.
|
|
16
|
+
|
|
17
|
+
> [!NOTE] To get correct types, environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed:
|
|
18
|
+
>
|
|
19
|
+
> ```env
|
|
20
|
+
> MY_FEATURE_FLAG=
|
|
21
|
+
> ```
|
|
22
|
+
>
|
|
23
|
+
> You can override `.env` values from the command line like so:
|
|
24
|
+
>
|
|
25
|
+
> ```sh
|
|
26
|
+
> MY_FEATURE_FLAG="enabled" npm run dev
|
|
27
|
+
> ```
|
|
28
|
+
|
|
29
|
+
For example, given the following runtime environment:
|
|
30
|
+
|
|
31
|
+
```env
|
|
32
|
+
ENVIRONMENT=production
|
|
33
|
+
PUBLIC_BASE_URL=http://site.com
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
With the default `publicPrefix` and `privatePrefix`:
|
|
4
37
|
|
|
5
38
|
```ts
|
|
6
39
|
import { env } from '$env/dynamic/private';
|
|
7
|
-
console.log(env.DEPLOYMENT_SPECIFIC_VARIABLE);
|
|
8
|
-
```
|
|
9
40
|
|
|
10
|
-
|
|
41
|
+
console.log(env.ENVIRONMENT); // => "production"
|
|
42
|
+
console.log(env.PUBLIC_BASE_URL); // => undefined
|
|
43
|
+
```
|
|
@@ -1,8 +1,46 @@
|
|
|
1
|
-
|
|
1
|
+
This module provides access to environment variables set _dynamically_ at runtime and that are _publicly_ accessible.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
| | Runtime | Build time |
|
|
4
|
+
| ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
5
|
+
| Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) |
|
|
6
|
+
| Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) |
|
|
7
|
+
|
|
8
|
+
Dynamic environment variables are defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://svelte.dev/docs/kit/cli)), this is equivalent to `process.env`.
|
|
9
|
+
|
|
10
|
+
**_Public_ access:**
|
|
11
|
+
|
|
12
|
+
- This module _can_ be imported into client-side code
|
|
13
|
+
- **Only** variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`) are included
|
|
14
|
+
|
|
15
|
+
> [!NOTE] In `dev`, `$env/dynamic` includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter.
|
|
16
|
+
|
|
17
|
+
> [!NOTE] To get correct types, environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed:
|
|
18
|
+
>
|
|
19
|
+
> ```env
|
|
20
|
+
> MY_FEATURE_FLAG=
|
|
21
|
+
> ```
|
|
22
|
+
>
|
|
23
|
+
> You can override `.env` values from the command line like so:
|
|
24
|
+
>
|
|
25
|
+
> ```sh
|
|
26
|
+
> MY_FEATURE_FLAG="enabled" npm run dev
|
|
27
|
+
> ```
|
|
28
|
+
|
|
29
|
+
For example, given the following runtime environment:
|
|
30
|
+
|
|
31
|
+
```env
|
|
32
|
+
ENVIRONMENT=production
|
|
33
|
+
PUBLIC_BASE_URL=http://example.com
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
With the default `publicPrefix` and `privatePrefix`:
|
|
4
37
|
|
|
5
38
|
```ts
|
|
6
39
|
import { env } from '$env/dynamic/public';
|
|
7
|
-
console.log(env.
|
|
40
|
+
console.log(env.ENVIRONMENT); // => undefined, not public
|
|
41
|
+
console.log(env.PUBLIC_BASE_URL); // => "http://example.com"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
|
|
8
46
|
```
|
|
@@ -1,19 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
This module provides access to environment variables that are injected _statically_ into your bundle at build time and are limited to _private_ access.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
| | Runtime | Build time |
|
|
4
|
+
| ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
5
|
+
| Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) |
|
|
6
|
+
| Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) |
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
import { API_KEY } from '$env/static/private';
|
|
7
|
-
```
|
|
8
|
+
Static environment variables are [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env` at build time and then statically injected into your bundle at build time, enabling optimisations like dead code elimination.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
**_Private_ access:**
|
|
10
11
|
|
|
12
|
+
- This module cannot be imported into client-side code
|
|
13
|
+
- This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured)
|
|
14
|
+
|
|
15
|
+
For example, given the following build time environment:
|
|
16
|
+
|
|
17
|
+
```env
|
|
18
|
+
ENVIRONMENT=production
|
|
19
|
+
PUBLIC_BASE_URL=http://site.com
|
|
11
20
|
```
|
|
12
|
-
MY_FEATURE_FLAG=""
|
|
13
|
-
```
|
|
14
21
|
|
|
15
|
-
|
|
22
|
+
With the default `publicPrefix` and `privatePrefix`:
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { ENVIRONMENT, PUBLIC_BASE_URL } from '$env/static/private';
|
|
16
26
|
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
console.log(ENVIRONMENT); // => "production"
|
|
28
|
+
console.log(PUBLIC_BASE_URL); // => throws error during build
|
|
19
29
|
```
|
|
30
|
+
|
|
31
|
+
The above values will be the same _even if_ different values for `ENVIRONMENT` or `PUBLIC_BASE_URL` are set at runtime, as they are statically replaced in your code with their build time values.
|
|
@@ -1,7 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
This module provides access to environment variables that are injected _statically_ into your bundle at build time and are _publicly_ accessible.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
| | Runtime | Build time |
|
|
4
|
+
| ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
5
|
+
| Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) |
|
|
6
|
+
| Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) |
|
|
7
|
+
|
|
8
|
+
Static environment variables are [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env` at build time and then statically injected into your bundle at build time, enabling optimisations like dead code elimination.
|
|
9
|
+
|
|
10
|
+
**_Public_ access:**
|
|
11
|
+
|
|
12
|
+
- This module _can_ be imported into client-side code
|
|
13
|
+
- **Only** variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`) are included
|
|
14
|
+
|
|
15
|
+
For example, given the following build time environment:
|
|
16
|
+
|
|
17
|
+
```env
|
|
18
|
+
ENVIRONMENT=production
|
|
19
|
+
PUBLIC_BASE_URL=http://site.com
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
With the default `publicPrefix` and `privatePrefix`:
|
|
4
23
|
|
|
5
24
|
```ts
|
|
6
|
-
import { PUBLIC_BASE_URL } from '$env/static/public';
|
|
25
|
+
import { ENVIRONMENT, PUBLIC_BASE_URL } from '$env/static/public';
|
|
26
|
+
|
|
27
|
+
console.log(ENVIRONMENT); // => throws error during build
|
|
28
|
+
console.log(PUBLIC_BASE_URL); // => "http://site.com"
|
|
7
29
|
```
|
|
30
|
+
|
|
31
|
+
The above values will be the same _even if_ different values for `ENVIRONMENT` or `PUBLIC_BASE_URL` are set at runtime, as they are statically replaced in your code with their build time values.
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1885,9 +1885,9 @@ declare module '@sveltejs/kit' {
|
|
|
1885
1885
|
|
|
1886
1886
|
type RemoteFormFieldMethods<T> = {
|
|
1887
1887
|
/** The values that will be submitted */
|
|
1888
|
-
value(): T
|
|
1888
|
+
value(): DeepPartial<T>;
|
|
1889
1889
|
/** Set the values that will be submitted */
|
|
1890
|
-
set(input: T): T
|
|
1890
|
+
set(input: DeepPartial<T>): DeepPartial<T>;
|
|
1891
1891
|
/** Validation issues, if any */
|
|
1892
1892
|
issues(): RemoteFormIssue[] | undefined;
|
|
1893
1893
|
};
|
|
@@ -2085,7 +2085,7 @@ declare module '@sveltejs/kit' {
|
|
|
2085
2085
|
* The return value of a remote `command` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#command) for full documentation.
|
|
2086
2086
|
*/
|
|
2087
2087
|
export type RemoteCommand<Input, Output> = {
|
|
2088
|
-
(arg: Input): Promise<Awaited<Output>> & {
|
|
2088
|
+
(arg: undefined extends Input ? Input | void : Input): Promise<Awaited<Output>> & {
|
|
2089
2089
|
updates(...queries: Array<RemoteQuery<any> | RemoteQueryOverride>): Promise<Awaited<Output>>;
|
|
2090
2090
|
};
|
|
2091
2091
|
/** The number of pending command executions */
|
|
@@ -2155,12 +2155,16 @@ declare module '@sveltejs/kit' {
|
|
|
2155
2155
|
/**
|
|
2156
2156
|
* The return value of a remote `prerender` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#prerender) for full documentation.
|
|
2157
2157
|
*/
|
|
2158
|
-
export type RemotePrerenderFunction<Input, Output> = (
|
|
2158
|
+
export type RemotePrerenderFunction<Input, Output> = (
|
|
2159
|
+
arg: undefined extends Input ? Input | void : Input
|
|
2160
|
+
) => RemoteResource<Output>;
|
|
2159
2161
|
|
|
2160
2162
|
/**
|
|
2161
2163
|
* The return value of a remote `query` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#query) for full documentation.
|
|
2162
2164
|
*/
|
|
2163
|
-
export type RemoteQueryFunction<Input, Output> = (
|
|
2165
|
+
export type RemoteQueryFunction<Input, Output> = (
|
|
2166
|
+
arg: undefined extends Input ? Input | void : Input
|
|
2167
|
+
) => RemoteQuery<Output>;
|
|
2164
2168
|
interface AdapterEntry {
|
|
2165
2169
|
/**
|
|
2166
2170
|
* A string that uniquely identifies an HTTP service (e.g. serverless function) and is used for deduplication.
|
|
@@ -2398,6 +2402,14 @@ declare module '@sveltejs/kit' {
|
|
|
2398
2402
|
/** @default 'never' */
|
|
2399
2403
|
type TrailingSlash = 'never' | 'always' | 'ignore';
|
|
2400
2404
|
|
|
2405
|
+
type DeepPartial<T> = T extends Record<PropertyKey, unknown> | unknown[]
|
|
2406
|
+
? {
|
|
2407
|
+
[K in keyof T]?: T[K] extends Record<PropertyKey, unknown> | unknown[]
|
|
2408
|
+
? DeepPartial<T[K]>
|
|
2409
|
+
: T[K];
|
|
2410
|
+
}
|
|
2411
|
+
: T | undefined;
|
|
2412
|
+
|
|
2401
2413
|
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
2402
2414
|
interface Asset {
|
|
2403
2415
|
file: string;
|
package/types/index.d.ts.map
CHANGED
|
@@ -103,6 +103,7 @@
|
|
|
103
103
|
"RequestOptions",
|
|
104
104
|
"RouteSegment",
|
|
105
105
|
"TrailingSlash",
|
|
106
|
+
"DeepPartial",
|
|
106
107
|
"IsAny",
|
|
107
108
|
"Asset",
|
|
108
109
|
"BuildData",
|
|
@@ -223,6 +224,6 @@
|
|
|
223
224
|
null,
|
|
224
225
|
null
|
|
225
226
|
],
|
|
226
|
-
"mappings": ";;;;;;;;
|
|
227
|
+
"mappings": "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",
|
|
227
228
|
"ignoreList": []
|
|
228
229
|
}
|