@sveltejs/kit 2.47.1 → 2.47.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.47.1",
3
+ "version": "2.47.2",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -2021,7 +2021,10 @@ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
2021
2021
  preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
2022
2022
  /** Validate the form contents programmatically */
2023
2023
  validate(options?: {
2024
+ /** Set this to `true` to also show validation issues of fields that haven't been touched yet. */
2024
2025
  includeUntouched?: boolean;
2026
+ /** Set this to `true` to only run the `preflight` validation. */
2027
+ preflightOnly?: boolean;
2025
2028
  /** Perform validation as if the form was submitted by the given button. */
2026
2029
  submitter?: HTMLButtonElement | HTMLInputElement;
2027
2030
  }): Promise<void>;
@@ -5,11 +5,12 @@ import { get_request_store } from '@sveltejs/kit/internal/server';
5
5
  import { DEV } from 'esm-env';
6
6
  import {
7
7
  convert_formdata,
8
- flatten_issues,
9
8
  create_field_proxy,
10
9
  set_nested_value,
11
10
  throw_on_old_property_access,
12
- deep_set
11
+ deep_set,
12
+ normalize_issue,
13
+ flatten_issues
13
14
  } from '../../../form-utils.svelte.js';
14
15
  import { get_cache, run_remote_function } from './shared.js';
15
16
 
@@ -46,7 +47,7 @@ import { get_cache, run_remote_function } from './shared.js';
46
47
  * @template Output
47
48
  * @overload
48
49
  * @param {Schema} validate
49
- * @param {(data: StandardSchemaV1.InferOutput<Schema>, invalid: import('@sveltejs/kit').Invalid<StandardSchemaV1.InferOutput<Schema>>) => MaybePromise<Output>} fn
50
+ * @param {(data: StandardSchemaV1.InferOutput<Schema>, invalid: import('@sveltejs/kit').Invalid<StandardSchemaV1.InferInput<Schema>>) => MaybePromise<Output>} fn
50
51
  * @returns {RemoteForm<StandardSchemaV1.InferInput<Schema>, Output>}
51
52
  * @since 2.27
52
53
  */
@@ -142,7 +143,7 @@ export function form(validate_or_fn, maybe_fn) {
142
143
  }
143
144
  }
144
145
 
145
- /** @type {{ submission: true, input?: Record<string, any>, issues?: Record<string, InternalRemoteFormIssue[]>, result: Output }} */
146
+ /** @type {{ submission: true, input?: Record<string, any>, issues?: InternalRemoteFormIssue[], result: Output }} */
146
147
  const output = {};
147
148
 
148
149
  // make it possible to differentiate between user submission and programmatic `field.set(...)` updates
@@ -209,6 +210,8 @@ export function form(validate_or_fn, maybe_fn) {
209
210
  Object.defineProperty(instance, 'fields', {
210
211
  get() {
211
212
  const data = get_cache(__)?.[''];
213
+ const issues = flatten_issues(data?.issues ?? []);
214
+
212
215
  return create_field_proxy(
213
216
  {},
214
217
  () => data?.input ?? {},
@@ -224,7 +227,7 @@ export function form(validate_or_fn, maybe_fn) {
224
227
 
225
228
  (get_cache(__)[''] ??= {}).input = input;
226
229
  },
227
- () => data?.issues ?? {}
230
+ () => issues
228
231
  );
229
232
  }
230
233
  });
@@ -293,13 +296,13 @@ export function form(validate_or_fn, maybe_fn) {
293
296
  }
294
297
 
295
298
  /**
296
- * @param {{ issues?: Record<string, any>, input?: Record<string, any>, result: any }} output
299
+ * @param {{ issues?: InternalRemoteFormIssue[], input?: Record<string, any>, result: any }} output
297
300
  * @param {readonly StandardSchemaV1.Issue[]} issues
298
301
  * @param {boolean} is_remote_request
299
302
  * @param {FormData} form_data
300
303
  */
301
304
  function handle_issues(output, issues, is_remote_request, form_data) {
302
- output.issues = flatten_issues(issues);
305
+ output.issues = issues.map((issue) => normalize_issue(issue, true));
303
306
 
304
307
  // if it was a progressively-enhanced submission, we don't need
305
308
  // to return the input — it's already there
@@ -18,27 +18,29 @@ import {
18
18
  set_nested_value,
19
19
  throw_on_old_property_access,
20
20
  split_path,
21
- build_path_string
21
+ build_path_string,
22
+ normalize_issue
22
23
  } from '../../form-utils.svelte.js';
23
24
 
24
25
  /**
25
- * Merge client issues into server issues
26
- * @param {Record<string, InternalRemoteFormIssue[]>} current_issues
27
- * @param {Record<string, InternalRemoteFormIssue[]>} client_issues
28
- * @returns {Record<string, InternalRemoteFormIssue[]>}
26
+ * Merge client issues into server issues. Server issues are persisted unless
27
+ * a client-issue exists for the same path, in which case the client-issue overrides it.
28
+ * @param {FormData} form_data
29
+ * @param {InternalRemoteFormIssue[]} current_issues
30
+ * @param {InternalRemoteFormIssue[]} client_issues
31
+ * @returns {InternalRemoteFormIssue[]}
29
32
  */
30
- function merge_with_server_issues(current_issues, client_issues) {
31
- const merged_issues = Object.fromEntries(
32
- Object.entries(current_issues)
33
- .map(([key, issue_list]) => [key, issue_list.filter((issue) => issue.server)])
34
- .filter(([, issue_list]) => issue_list.length > 0)
35
- );
36
-
37
- for (const [key, new_issue_list] of Object.entries(client_issues)) {
38
- merged_issues[key] = [...(merged_issues[key] || []), ...new_issue_list];
39
- }
33
+ function merge_with_server_issues(form_data, current_issues, client_issues) {
34
+ const merged = [
35
+ ...current_issues.filter(
36
+ (issue) => issue.server && !client_issues.some((i) => i.name === issue.name)
37
+ ),
38
+ ...client_issues
39
+ ];
40
40
 
41
- return merged_issues;
41
+ const keys = Array.from(form_data.keys());
42
+
43
+ return merged.sort((a, b) => keys.indexOf(a.name) - keys.indexOf(b.name));
42
44
  }
43
45
 
44
46
  /**
@@ -77,8 +79,10 @@ export function form(id) {
77
79
  */
78
80
  const version_reads = new Set();
79
81
 
80
- /** @type {Record<string, InternalRemoteFormIssue[]>} */
81
- let issues = $state.raw({});
82
+ /** @type {InternalRemoteFormIssue[]} */
83
+ let raw_issues = $state.raw([]);
84
+
85
+ const issues = $derived(flatten_issues(raw_issues));
82
86
 
83
87
  /** @type {any} */
84
88
  let result = $state.raw(remote_responses[action_id]);
@@ -132,8 +136,11 @@ export function form(id) {
132
136
  const validated = await preflight_schema?.['~standard'].validate(data);
133
137
 
134
138
  if (validated?.issues) {
135
- const client_issues = flatten_issues(validated.issues, false);
136
- issues = merge_with_server_issues(issues, client_issues);
139
+ raw_issues = merge_with_server_issues(
140
+ form_data,
141
+ raw_issues,
142
+ validated.issues.map((issue) => normalize_issue(issue, false))
143
+ );
137
144
  return;
138
145
  }
139
146
 
@@ -223,14 +230,7 @@ export function form(id) {
223
230
  const form_result = /** @type { RemoteFunctionResponse} */ (await response.json());
224
231
 
225
232
  if (form_result.type === 'result') {
226
- ({ issues = {}, result } = devalue.parse(form_result.result, app.decoders));
227
-
228
- // Mark server issues with server: true
229
- for (const issue_list of Object.values(issues)) {
230
- for (const issue of issue_list) {
231
- issue.server = true;
232
- }
233
- }
233
+ ({ issues: raw_issues = [], result } = devalue.parse(form_result.result, app.decoders));
234
234
 
235
235
  if (issues.$) {
236
236
  release_overrides(updates);
@@ -572,7 +572,7 @@ export function form(id) {
572
572
  },
573
573
  validate: {
574
574
  /** @type {RemoteForm<any, any>['validate']} */
575
- value: async ({ includeUntouched = false, submitter } = {}) => {
575
+ value: async ({ includeUntouched = false, preflightOnly = false, submitter } = {}) => {
576
576
  if (!element) return;
577
577
 
578
578
  const id = ++validate_id;
@@ -582,7 +582,7 @@ export function form(id) {
582
582
 
583
583
  const form_data = new FormData(element, submitter);
584
584
 
585
- /** @type {readonly StandardSchemaV1.Issue[]} */
585
+ /** @type {InternalRemoteFormIssue[]} */
586
586
  let array = [];
587
587
 
588
588
  const validated = await preflight_schema?.['~standard'].validate(convert(form_data));
@@ -592,8 +592,8 @@ export function form(id) {
592
592
  }
593
593
 
594
594
  if (validated?.issues) {
595
- array = validated.issues;
596
- } else {
595
+ array = validated.issues.map((issue) => normalize_issue(issue, false));
596
+ } else if (!preflightOnly) {
597
597
  form_data.set('sveltekit:validate_only', 'true');
598
598
 
599
599
  const response = await fetch(`${base}/${app_dir}/remote/${action_id}`, {
@@ -608,36 +608,21 @@ export function form(id) {
608
608
  }
609
609
 
610
610
  if (result.type === 'result') {
611
- array = /** @type {StandardSchemaV1.Issue[]} */ (
611
+ array = /** @type {InternalRemoteFormIssue[]} */ (
612
612
  devalue.parse(result.result, app.decoders)
613
613
  );
614
614
  }
615
615
  }
616
616
 
617
617
  if (!includeUntouched && !submitted) {
618
- array = array.filter((issue) => {
619
- if (issue.path !== undefined) {
620
- let path = '';
621
-
622
- for (const segment of issue.path) {
623
- const key = typeof segment === 'object' ? segment.key : segment;
624
-
625
- if (typeof key === 'number') {
626
- path += `[${key}]`;
627
- } else if (typeof key === 'string') {
628
- path += path === '' ? key : '.' + key;
629
- }
630
- }
631
-
632
- return touched[path];
633
- }
634
- });
618
+ array = array.filter((issue) => touched[issue.name]);
635
619
  }
636
620
 
637
- const is_server_validation = !validated?.issues;
638
- const new_issues = flatten_issues(array, is_server_validation);
621
+ const is_server_validation = !validated?.issues && !preflightOnly;
639
622
 
640
- issues = is_server_validation ? new_issues : merge_with_server_issues(issues, new_issues);
623
+ raw_issues = is_server_validation
624
+ ? array
625
+ : merge_with_server_issues(form_data, raw_issues, array);
641
626
  }
642
627
  },
643
628
  enhance: {
@@ -116,39 +116,58 @@ export function deep_set(object, keys, value) {
116
116
  }
117
117
 
118
118
  /**
119
- * @param {readonly StandardSchemaV1.Issue[]} issues
120
- * @param {boolean} [server=false] - Whether these issues come from server validation
119
+ * @param {StandardSchemaV1.Issue} issue
120
+ * @param {boolean} server Whether this issue came from server validation
121
121
  */
122
- export function flatten_issues(issues, server = false) {
122
+ export function normalize_issue(issue, server = false) {
123
+ /** @type {InternalRemoteFormIssue} */
124
+ const normalized = { name: '', path: [], message: issue.message, server };
125
+
126
+ if (issue.path !== undefined) {
127
+ let name = '';
128
+
129
+ for (const segment of issue.path) {
130
+ const key = /** @type {string | number} */ (
131
+ typeof segment === 'object' ? segment.key : segment
132
+ );
133
+
134
+ normalized.path.push(key);
135
+
136
+ if (typeof key === 'number') {
137
+ name += `[${key}]`;
138
+ } else if (typeof key === 'string') {
139
+ name += name === '' ? key : '.' + key;
140
+ }
141
+ }
142
+
143
+ normalized.name = name;
144
+ }
145
+
146
+ return normalized;
147
+ }
148
+
149
+ /**
150
+ * @param {InternalRemoteFormIssue[]} issues
151
+ */
152
+ export function flatten_issues(issues) {
123
153
  /** @type {Record<string, InternalRemoteFormIssue[]>} */
124
154
  const result = {};
125
155
 
126
156
  for (const issue of issues) {
127
- /** @type {InternalRemoteFormIssue} */
128
- const normalized = { name: '', path: [], message: issue.message, server };
129
-
130
- (result.$ ??= []).push(normalized);
157
+ (result.$ ??= []).push(issue);
131
158
 
132
159
  let name = '';
133
160
 
134
161
  if (issue.path !== undefined) {
135
- for (const segment of issue.path) {
136
- const key = /** @type {string | number} */ (
137
- typeof segment === 'object' ? segment.key : segment
138
- );
139
-
140
- normalized.path.push(key);
141
-
162
+ for (const key of issue.path) {
142
163
  if (typeof key === 'number') {
143
164
  name += `[${key}]`;
144
165
  } else if (typeof key === 'string') {
145
166
  name += name === '' ? key : '.' + key;
146
167
  }
147
168
 
148
- (result[name] ??= []).push(normalized);
169
+ (result[name] ??= []).push(issue);
149
170
  }
150
-
151
- normalized.name = name;
152
171
  }
153
172
  }
154
173
 
@@ -1,18 +1,4 @@
1
- /**
2
- * @returns {import('types').Deferred & { promise: Promise<any> }}}
3
- */
4
- function defer() {
5
- let fulfil;
6
- let reject;
7
-
8
- const promise = new Promise((f, r) => {
9
- fulfil = f;
10
- reject = r;
11
- });
12
-
13
- // @ts-expect-error
14
- return { promise, fulfil, reject };
15
- }
1
+ import { with_resolvers } from './promise.js';
16
2
 
17
3
  /**
18
4
  * Create an async iterator and a function to push values into it
@@ -23,9 +9,11 @@ function defer() {
23
9
  * }}
24
10
  */
25
11
  export function create_async_iterator() {
26
- let count = 0;
12
+ let resolved = -1;
13
+ let returned = -1;
27
14
 
28
- const deferred = [defer()];
15
+ /** @type {import('./promise.js').PromiseWithResolvers<T>[]} */
16
+ const deferred = [];
29
17
 
30
18
  return {
31
19
  iterate: (transform = (x) => x) => {
@@ -33,32 +21,20 @@ export function create_async_iterator() {
33
21
  [Symbol.asyncIterator]() {
34
22
  return {
35
23
  next: async () => {
36
- const next = await deferred[0].promise;
24
+ const next = deferred[++returned];
25
+ if (!next) return { value: null, done: true };
37
26
 
38
- if (!next.done) {
39
- deferred.shift();
40
- return { value: transform(next.value), done: false };
41
- }
42
-
43
- return next;
27
+ const value = await next.promise;
28
+ return { value: transform(value), done: false };
44
29
  }
45
30
  };
46
31
  }
47
32
  };
48
33
  },
49
34
  add: (promise) => {
50
- count += 1;
51
-
35
+ deferred.push(with_resolvers());
52
36
  void promise.then((value) => {
53
- deferred[deferred.length - 1].fulfil({
54
- value,
55
- done: false
56
- });
57
- deferred.push(defer());
58
-
59
- if (--count === 0) {
60
- deferred[deferred.length - 1].fulfil({ done: true });
61
- }
37
+ deferred[++resolved].resolve(value);
62
38
  });
63
39
  }
64
40
  };
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.47.1';
4
+ export const VERSION = '2.47.2';
package/types/index.d.ts CHANGED
@@ -1997,7 +1997,10 @@ declare module '@sveltejs/kit' {
1997
1997
  preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
1998
1998
  /** Validate the form contents programmatically */
1999
1999
  validate(options?: {
2000
+ /** Set this to `true` to also show validation issues of fields that haven't been touched yet. */
2000
2001
  includeUntouched?: boolean;
2002
+ /** Set this to `true` to only run the `preflight` validation. */
2003
+ preflightOnly?: boolean;
2001
2004
  /** Perform validation as if the form was submitted by the given button. */
2002
2005
  submitter?: HTMLButtonElement | HTMLInputElement;
2003
2006
  }): Promise<void>;
@@ -3158,7 +3161,7 @@ declare module '$app/server' {
3158
3161
  *
3159
3162
  * @since 2.27
3160
3163
  */
3161
- export function form<Schema extends StandardSchemaV1<RemoteFormInput, Record<string, any>>, Output>(validate: Schema, fn: (data: StandardSchemaV1.InferOutput<Schema>, invalid: import("@sveltejs/kit").Invalid<StandardSchemaV1.InferOutput<Schema>>) => MaybePromise<Output>): RemoteForm<StandardSchemaV1.InferInput<Schema>, Output>;
3164
+ export function form<Schema extends StandardSchemaV1<RemoteFormInput, Record<string, any>>, Output>(validate: Schema, fn: (data: StandardSchemaV1.InferOutput<Schema>, invalid: import("@sveltejs/kit").Invalid<StandardSchemaV1.InferInput<Schema>>) => MaybePromise<Output>): RemoteForm<StandardSchemaV1.InferInput<Schema>, Output>;
3162
3165
  /**
3163
3166
  * Creates a remote prerender function. When called from the browser, the function will be invoked on the server via a `fetch` call.
3164
3167
  *
@@ -211,6 +211,6 @@
211
211
  null,
212
212
  null
213
213
  ],
214
- "mappings": "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",
214
+ "mappings": "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",
215
215
  "ignoreList": []
216
216
  }