@sveltejs/kit 2.44.0 → 2.45.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/exports/public.d.ts +11 -3
- package/src/runtime/app/server/remote/form.js +7 -1
- package/src/runtime/app/server/remote/shared.js +36 -30
- package/src/runtime/client/remote-functions/form.svelte.js +14 -4
- package/src/runtime/form-utils.svelte.js +4 -0
- package/src/runtime/server/page/render.js +2 -2
- package/src/runtime/server/remote.js +13 -2
- package/src/runtime/server/respond.js +2 -1
- package/src/types/internal.d.ts +1 -0
- package/src/version.js +1 -1
- package/types/index.d.ts +11 -3
- package/types/index.d.ts.map +2 -1
package/package.json
CHANGED
package/src/exports/public.d.ts
CHANGED
|
@@ -1937,6 +1937,14 @@ export interface RemoteFormIssue {
|
|
|
1937
1937
|
message: string;
|
|
1938
1938
|
}
|
|
1939
1939
|
|
|
1940
|
+
// If the schema specifies `id` as a string or number, ensure that `for(...)`
|
|
1941
|
+
// only accepts that type. Otherwise, accept `string | number`
|
|
1942
|
+
type ExtractId<Input> = Input extends { id: infer Id }
|
|
1943
|
+
? Id extends string | number
|
|
1944
|
+
? Id
|
|
1945
|
+
: string | number
|
|
1946
|
+
: string | number;
|
|
1947
|
+
|
|
1940
1948
|
/**
|
|
1941
1949
|
* The return value of a remote `form` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation.
|
|
1942
1950
|
*/
|
|
@@ -1961,8 +1969,8 @@ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
|
|
|
1961
1969
|
[attachment: symbol]: (node: HTMLFormElement) => void;
|
|
1962
1970
|
};
|
|
1963
1971
|
/**
|
|
1964
|
-
* Create an instance of the form for the given
|
|
1965
|
-
* The
|
|
1972
|
+
* Create an instance of the form for the given `id`.
|
|
1973
|
+
* The `id` is stringified and used for deduplication to potentially reuse existing instances.
|
|
1966
1974
|
* Useful when you have multiple forms that use the same remote form action, for example in a loop.
|
|
1967
1975
|
* ```svelte
|
|
1968
1976
|
* {#each todos as todo}
|
|
@@ -1974,7 +1982,7 @@ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
|
|
|
1974
1982
|
* {/each}
|
|
1975
1983
|
* ```
|
|
1976
1984
|
*/
|
|
1977
|
-
for(
|
|
1985
|
+
for(id: ExtractId<Input>): Omit<RemoteForm<Input, Output>, 'for'>;
|
|
1978
1986
|
/** Preflight checks */
|
|
1979
1987
|
preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
|
|
1980
1988
|
/** Validate the form contents programmatically */
|
|
@@ -105,10 +105,16 @@ export function form(validate_or_fn, maybe_fn) {
|
|
|
105
105
|
/** @param {FormData} form_data */
|
|
106
106
|
fn: async (form_data) => {
|
|
107
107
|
const validate_only = form_data.get('sveltekit:validate_only') === 'true';
|
|
108
|
-
form_data.delete('sveltekit:validate_only');
|
|
109
108
|
|
|
110
109
|
let data = maybe_fn ? convert_formdata(form_data) : undefined;
|
|
111
110
|
|
|
111
|
+
if (data && data.id === undefined) {
|
|
112
|
+
const id = form_data.get('sveltekit:id');
|
|
113
|
+
if (typeof id === 'string') {
|
|
114
|
+
data.id = JSON.parse(id);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
112
118
|
// TODO 3.0 remove this warning
|
|
113
119
|
if (DEV && !data) {
|
|
114
120
|
const error = () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @import { RequestEvent } from '@sveltejs/kit' */
|
|
2
|
-
/** @import { ServerHooks, MaybePromise, RequestState, RemoteInfo } from 'types' */
|
|
2
|
+
/** @import { ServerHooks, MaybePromise, RequestState, RemoteInfo, RequestStore } from 'types' */
|
|
3
3
|
import { parse } from 'devalue';
|
|
4
4
|
import { error } from '@sveltejs/kit';
|
|
5
5
|
import { with_request_store, get_request_store } from '@sveltejs/kit/internal/server';
|
|
@@ -103,42 +103,48 @@ export function parse_remote_response(data, transport) {
|
|
|
103
103
|
* @param {(arg?: any) => T} fn
|
|
104
104
|
*/
|
|
105
105
|
export async function run_remote_function(event, state, allow_cookies, arg, validate, fn) {
|
|
106
|
-
/** @type {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
cookies: {
|
|
113
|
-
...event.cookies,
|
|
114
|
-
set: (name, value, opts) => {
|
|
115
|
-
if (!allow_cookies) {
|
|
116
|
-
throw new Error('Cannot set cookies in `query` or `prerender` functions');
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (opts.path && !opts.path.startsWith('/')) {
|
|
120
|
-
throw new Error('Cookies set in remote functions must have an absolute path');
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return event.cookies.set(name, value, opts);
|
|
106
|
+
/** @type {RequestStore} */
|
|
107
|
+
const store = {
|
|
108
|
+
event: {
|
|
109
|
+
...event,
|
|
110
|
+
setHeaders: () => {
|
|
111
|
+
throw new Error('setHeaders is not allowed in remote functions');
|
|
124
112
|
},
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
113
|
+
cookies: {
|
|
114
|
+
...event.cookies,
|
|
115
|
+
set: (name, value, opts) => {
|
|
116
|
+
if (!allow_cookies) {
|
|
117
|
+
throw new Error('Cannot set cookies in `query` or `prerender` functions');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (opts.path && !opts.path.startsWith('/')) {
|
|
121
|
+
throw new Error('Cookies set in remote functions must have an absolute path');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return event.cookies.set(name, value, opts);
|
|
125
|
+
},
|
|
126
|
+
delete: (name, opts) => {
|
|
127
|
+
if (!allow_cookies) {
|
|
128
|
+
throw new Error('Cannot delete cookies in `query` or `prerender` functions');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (opts.path && !opts.path.startsWith('/')) {
|
|
132
|
+
throw new Error('Cookies deleted in remote functions must have an absolute path');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return event.cookies.delete(name, opts);
|
|
128
136
|
}
|
|
129
|
-
|
|
130
|
-
if (opts.path && !opts.path.startsWith('/')) {
|
|
131
|
-
throw new Error('Cookies deleted in remote functions must have an absolute path');
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return event.cookies.delete(name, opts);
|
|
135
137
|
}
|
|
138
|
+
},
|
|
139
|
+
state: {
|
|
140
|
+
...state,
|
|
141
|
+
is_in_remote_function: true
|
|
136
142
|
}
|
|
137
143
|
};
|
|
138
144
|
|
|
139
145
|
// In two parts, each with_event, so that runtimes without async local storage can still get the event at the start of the function
|
|
140
|
-
const validated = await with_request_store(
|
|
141
|
-
return with_request_store(
|
|
146
|
+
const validated = await with_request_store(store, () => validate(arg));
|
|
147
|
+
return with_request_store(store, () => fn(validated));
|
|
142
148
|
}
|
|
143
149
|
|
|
144
150
|
/**
|
|
@@ -82,13 +82,25 @@ export function form(id) {
|
|
|
82
82
|
|
|
83
83
|
let submitted = false;
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* @param {FormData} form_data
|
|
87
|
+
* @returns {Record<string, any>}
|
|
88
|
+
*/
|
|
89
|
+
function convert(form_data) {
|
|
90
|
+
const data = convert_formdata(form_data);
|
|
91
|
+
if (key !== undefined && !form_data.has('id')) {
|
|
92
|
+
data.id = key;
|
|
93
|
+
}
|
|
94
|
+
return data;
|
|
95
|
+
}
|
|
96
|
+
|
|
85
97
|
/**
|
|
86
98
|
* @param {HTMLFormElement} form
|
|
87
99
|
* @param {FormData} form_data
|
|
88
100
|
* @param {Parameters<RemoteForm<any, any>['enhance']>[0]} callback
|
|
89
101
|
*/
|
|
90
102
|
async function handle_submit(form, form_data, callback) {
|
|
91
|
-
const data =
|
|
103
|
+
const data = convert(form_data);
|
|
92
104
|
|
|
93
105
|
submitted = true;
|
|
94
106
|
|
|
@@ -505,9 +517,7 @@ export function form(id) {
|
|
|
505
517
|
/** @type {readonly StandardSchemaV1.Issue[]} */
|
|
506
518
|
let array = [];
|
|
507
519
|
|
|
508
|
-
const validated = await preflight_schema?.['~standard'].validate(
|
|
509
|
-
convert_formdata(form_data)
|
|
510
|
-
);
|
|
520
|
+
const validated = await preflight_schema?.['~standard'].validate(convert(form_data));
|
|
511
521
|
|
|
512
522
|
if (validated?.issues) {
|
|
513
523
|
array = validated.issues;
|
|
@@ -31,6 +31,10 @@ export function convert_formdata(data) {
|
|
|
31
31
|
let result = Object.create(null); // guard against prototype pollution
|
|
32
32
|
|
|
33
33
|
for (let key of data.keys()) {
|
|
34
|
+
if (key.startsWith('sveltekit:')) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
|
|
34
38
|
const is_array = key.endsWith('[]');
|
|
35
39
|
/** @type {any[]} */
|
|
36
40
|
let values = data.getAll(key);
|
|
@@ -13,7 +13,7 @@ import { SVELTE_KIT_ASSETS } from '../../../constants.js';
|
|
|
13
13
|
import { SCHEME } from '../../../utils/url.js';
|
|
14
14
|
import { create_server_routing_response, generate_route_object } from './server_routing.js';
|
|
15
15
|
import { add_resolution_suffix } from '../../pathname.js';
|
|
16
|
-
import { with_request_store } from '@sveltejs/kit/internal/server';
|
|
16
|
+
import { try_get_request_store, with_request_store } from '@sveltejs/kit/internal/server';
|
|
17
17
|
import { text_encoder } from '../../utils.js';
|
|
18
18
|
import { get_global_name } from '../utils.js';
|
|
19
19
|
import { create_remote_cache_key } from '../../shared.js';
|
|
@@ -190,7 +190,7 @@ export async function render_response({
|
|
|
190
190
|
throw new Error(
|
|
191
191
|
`Cannot call \`fetch\` eagerly during server-side rendering with relative URL (${info}) — put your \`fetch\` calls inside \`onMount\` or a \`load\` function instead`
|
|
192
192
|
);
|
|
193
|
-
} else if (!warned) {
|
|
193
|
+
} else if (!warned && !try_get_request_store()?.state.is_in_remote_function) {
|
|
194
194
|
console.warn(
|
|
195
195
|
'Avoid calling `fetch` eagerly during server-side rendering — put your `fetch` calls inside `onMount` or a `load` function instead'
|
|
196
196
|
);
|
|
@@ -37,7 +37,7 @@ export async function handle_remote_call(event, state, options, manifest, id) {
|
|
|
37
37
|
* @param {string} id
|
|
38
38
|
*/
|
|
39
39
|
async function handle_remote_call_internal(event, state, options, manifest, id) {
|
|
40
|
-
const [hash, name,
|
|
40
|
+
const [hash, name, additional_args] = id.split('/');
|
|
41
41
|
const remotes = manifest._.remotes;
|
|
42
42
|
|
|
43
43
|
if (!remotes[hash]) error(404);
|
|
@@ -122,6 +122,11 @@ async function handle_remote_call_internal(event, state, options, manifest, id)
|
|
|
122
122
|
);
|
|
123
123
|
form_data.delete('sveltekit:remote_refreshes');
|
|
124
124
|
|
|
125
|
+
// If this is a keyed form instance (created via form.for(key)), add the key to the form data (unless already set)
|
|
126
|
+
if (additional_args) {
|
|
127
|
+
form_data.set('sveltekit:id', decodeURIComponent(additional_args));
|
|
128
|
+
}
|
|
129
|
+
|
|
125
130
|
const fn = info.fn;
|
|
126
131
|
const data = await with_request_store({ event, state }, () => fn(form_data));
|
|
127
132
|
|
|
@@ -151,7 +156,7 @@ async function handle_remote_call_internal(event, state, options, manifest, id)
|
|
|
151
156
|
|
|
152
157
|
const payload =
|
|
153
158
|
info.type === 'prerender'
|
|
154
|
-
?
|
|
159
|
+
? additional_args
|
|
155
160
|
: /** @type {string} */ (
|
|
156
161
|
// new URL(...) necessary because we're hiding the URL from the user in the event object
|
|
157
162
|
new URL(event.request.url).searchParams.get('payload')
|
|
@@ -289,6 +294,12 @@ async function handle_remote_form_post_internal(event, state, manifest, id) {
|
|
|
289
294
|
const form_data = await event.request.formData();
|
|
290
295
|
const fn = /** @type {RemoteInfo & { type: 'form' }} */ (/** @type {any} */ (form).__).fn;
|
|
291
296
|
|
|
297
|
+
// If this is a keyed form instance (created via form.for(key)), add the key to the form data (unless already set)
|
|
298
|
+
if (action_id && !form_data.has('id')) {
|
|
299
|
+
// The action_id is URL-encoded JSON, decode and parse it
|
|
300
|
+
form_data.set('sveltekit:id', decodeURIComponent(action_id));
|
|
301
|
+
}
|
|
302
|
+
|
|
292
303
|
await with_request_store({ event, state }, () => fn(form_data));
|
|
293
304
|
|
|
294
305
|
// We don't want the data to appear on `let { form } = $props()`, which is why we're not returning it.
|
|
@@ -148,7 +148,8 @@ export async function internal_respond(request, options, manifest, state) {
|
|
|
148
148
|
handleValidationError: options.hooks.handleValidationError,
|
|
149
149
|
tracing: {
|
|
150
150
|
record_span
|
|
151
|
-
}
|
|
151
|
+
},
|
|
152
|
+
is_in_remote_function: false
|
|
152
153
|
};
|
|
153
154
|
|
|
154
155
|
/** @type {import('@sveltejs/kit').RequestEvent} */
|
package/src/types/internal.d.ts
CHANGED
|
@@ -604,6 +604,7 @@ export interface RequestState {
|
|
|
604
604
|
tracing: {
|
|
605
605
|
record_span: RecordSpan;
|
|
606
606
|
};
|
|
607
|
+
is_in_remote_function: boolean;
|
|
607
608
|
form_instances?: Map<any, any>;
|
|
608
609
|
remote_data?: Map<RemoteInfo, Record<string, MaybePromise<any>>>;
|
|
609
610
|
refreshes?: Record<string, Promise<any>>;
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1913,6 +1913,14 @@ declare module '@sveltejs/kit' {
|
|
|
1913
1913
|
message: string;
|
|
1914
1914
|
}
|
|
1915
1915
|
|
|
1916
|
+
// If the schema specifies `id` as a string or number, ensure that `for(...)`
|
|
1917
|
+
// only accepts that type. Otherwise, accept `string | number`
|
|
1918
|
+
type ExtractId<Input> = Input extends { id: infer Id }
|
|
1919
|
+
? Id extends string | number
|
|
1920
|
+
? Id
|
|
1921
|
+
: string | number
|
|
1922
|
+
: string | number;
|
|
1923
|
+
|
|
1916
1924
|
/**
|
|
1917
1925
|
* The return value of a remote `form` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation.
|
|
1918
1926
|
*/
|
|
@@ -1937,8 +1945,8 @@ declare module '@sveltejs/kit' {
|
|
|
1937
1945
|
[attachment: symbol]: (node: HTMLFormElement) => void;
|
|
1938
1946
|
};
|
|
1939
1947
|
/**
|
|
1940
|
-
* Create an instance of the form for the given
|
|
1941
|
-
* The
|
|
1948
|
+
* Create an instance of the form for the given `id`.
|
|
1949
|
+
* The `id` is stringified and used for deduplication to potentially reuse existing instances.
|
|
1942
1950
|
* Useful when you have multiple forms that use the same remote form action, for example in a loop.
|
|
1943
1951
|
* ```svelte
|
|
1944
1952
|
* {#each todos as todo}
|
|
@@ -1950,7 +1958,7 @@ declare module '@sveltejs/kit' {
|
|
|
1950
1958
|
* {/each}
|
|
1951
1959
|
* ```
|
|
1952
1960
|
*/
|
|
1953
|
-
for(
|
|
1961
|
+
for(id: ExtractId<Input>): Omit<RemoteForm<Input, Output>, 'for'>;
|
|
1954
1962
|
/** Preflight checks */
|
|
1955
1963
|
preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
|
|
1956
1964
|
/** Validate the form contents programmatically */
|
package/types/index.d.ts.map
CHANGED
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
"MaybeArray",
|
|
72
72
|
"RemoteFormInput",
|
|
73
73
|
"RemoteFormIssue",
|
|
74
|
+
"ExtractId",
|
|
74
75
|
"RemoteForm",
|
|
75
76
|
"RemoteCommand",
|
|
76
77
|
"RemoteResource",
|
|
@@ -208,6 +209,6 @@
|
|
|
208
209
|
null,
|
|
209
210
|
null
|
|
210
211
|
],
|
|
211
|
-
"mappings": "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
|
|
212
|
+
"mappings": "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",
|
|
212
213
|
"ignoreList": []
|
|
213
214
|
}
|