@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.44.0",
3
+ "version": "2.45.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -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 key.
1965
- * The key is stringified and used for deduplication to potentially reuse existing instances.
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(key: string | number | boolean): Omit<RemoteForm<Input, Output>, '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 {RequestEvent} */
107
- const cleansed = {
108
- ...event,
109
- setHeaders: () => {
110
- throw new Error('setHeaders is not allowed in remote functions');
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
- delete: (name, opts) => {
126
- if (!allow_cookies) {
127
- throw new Error('Cannot delete cookies in `query` or `prerender` functions');
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({ event: cleansed, state }, () => validate(arg));
141
- return with_request_store({ event: cleansed, state }, () => fn(validated));
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 = convert_formdata(form_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, prerender_args] = id.split('/');
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
- ? prerender_args
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} */
@@ -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
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '2.44.0';
4
+ export const VERSION = '2.45.0';
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 key.
1941
- * The key is stringified and used for deduplication to potentially reuse existing instances.
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(key: string | number | boolean): Omit<RemoteForm<Input, Output>, '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 */
@@ -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
  }