@sveltejs/kit 2.47.0 → 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.0",
3
+ "version": "2.47.2",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -56,7 +56,7 @@ async function analyse({
56
56
  // essential we do this before analysing the code
57
57
  internal.set_building();
58
58
 
59
- // set env, in case it's used in initialisation
59
+ // set env, `read`, and `manifest`, in case they're used in initialisation
60
60
  const { publicPrefix: public_prefix, privatePrefix: private_prefix } = config.env;
61
61
  const private_env = filter_env(env, private_prefix, public_prefix);
62
62
  const public_env = filter_env(env, public_prefix, private_prefix);
@@ -485,14 +485,16 @@ async function prerender({ hash, out, manifest_path, metadata, verbose, env }) {
485
485
  }
486
486
  }
487
487
 
488
- // the user's remote function modules may reference environment variables at
489
- // the top-level so we need to set `env` before evaluating those modules
490
- // to avoid potential runtime errors
488
+ // the user's remote function modules may reference environment variables,
489
+ // `read` or the `manifest` at the top-level so we need to set them before
490
+ // evaluating those modules to avoid potential runtime errors
491
491
  const { publicPrefix: public_prefix, privatePrefix: private_prefix } = config.env;
492
492
  const private_env = filter_env(env, private_prefix, public_prefix);
493
493
  const public_env = filter_env(env, public_prefix, private_prefix);
494
494
  internal.set_private_env(private_env);
495
495
  internal.set_public_env(public_env);
496
+ internal.set_manifest(manifest);
497
+ internal.set_read_implementation((file) => createReadableStream(`${out}/server/${file}`));
496
498
 
497
499
  /** @type {Array<import('types').RemoteInfo & { type: 'prerender'}>} */
498
500
  const prerender_functions = [];
@@ -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>;
@@ -41,7 +41,6 @@ import {
41
41
  import { import_peer } from '../../utils/import.js';
42
42
  import { compact } from '../../utils/array.js';
43
43
  import { should_ignore } from './static_analysis/utils.js';
44
- import { rollupVersion } from 'vite';
45
44
 
46
45
  const cwd = process.cwd();
47
46
 
@@ -636,102 +635,30 @@ async function kit({ svelte_config }) {
636
635
  /** @type {Array<{ hash: string, file: string }>} */
637
636
  const remotes = [];
638
637
 
639
- /**
640
- * A set of modules that imported by `.remote.ts` modules. By forcing these modules
641
- * into their own chunks, we ensure that each chunk created for a `.remote.ts`
642
- * module _only_ contains that module, hopefully avoiding any circular
643
- * dependency woes that arise from treating chunks as entries
644
- */
645
- const imported_by_remotes = new Set();
646
- let uid = 1;
638
+ /** @type {Map<string, string>} Maps remote hash -> original module id */
639
+ const remote_original_by_hash = new Map();
640
+
641
+ /** @type {Set<string>} Track which remote hashes have already been emitted */
642
+ const emitted_remote_hashes = new Set();
647
643
 
648
644
  /** @type {import('vite').Plugin} */
649
645
  const plugin_remote = {
650
646
  name: 'vite-plugin-sveltekit-remote',
651
647
 
652
- moduleParsed(info) {
653
- if (svelte_config.kit.moduleExtensions.some((ext) => info.id.endsWith(`.remote${ext}`))) {
654
- for (const id of info.importedIds) {
655
- imported_by_remotes.add(id);
656
- }
657
- }
648
+ resolveId(id) {
649
+ if (id.startsWith('\0sveltekit-remote:')) return id;
658
650
  },
659
651
 
660
- config(config) {
661
- if (!config.build?.ssr) {
662
- // only set manualChunks for the SSR build
663
- return;
664
- }
665
-
666
- // Ensure build.rollupOptions.output exists
667
- config.build ??= {};
668
- config.build.rollupOptions ??= {};
669
- config.build.rollupOptions.output ??= {};
670
-
671
- if (Array.isArray(config.build.rollupOptions.output)) {
672
- // TODO I have no idea how this could occur
673
- throw new Error('rollupOptions.output cannot be an array');
674
- }
675
-
676
- // Set up manualChunks to isolate *.remote.ts files
677
- const { manualChunks } = config.build.rollupOptions.output;
678
-
679
- const [major, minor] = rollupVersion.split('.').map(Number);
680
- const is_outdated_rollup = major === 4 && minor < 52;
681
- if (is_outdated_rollup) {
682
- console.warn(
683
- 'Rollup >=4.52.0 is recommended when using SvelteKit remote functions as it fixes some bugs related to code-splitting. Current version: ' +
684
- rollupVersion
685
- );
686
- }
687
-
688
- config.build.rollupOptions.output = {
689
- ...config.build.rollupOptions.output,
690
- manualChunks(id, meta) {
691
- // Check if this is a *.remote.ts file
692
- if (svelte_config.kit.moduleExtensions.some((ext) => id.endsWith(`.remote${ext}`))) {
693
- const relative = posixify(path.relative(cwd, id));
694
-
695
- return `remote-${hash(relative)}`;
696
- }
697
-
698
- // With onlyExplicitManualChunks Rollup will keep any manual chunk's dependencies out of that chunk.
699
- // This option only exists on more recent Rollup versions; use this as a fallback for older versions.
700
- if (is_outdated_rollup) {
701
- // Prevent core runtime and env from ending up in a remote chunk, which could break because of initialization order
702
- if (id === `${runtime_directory}/app/server/index.js`) {
703
- return 'app-server';
704
- }
705
- if (id === `${runtime_directory}/shared-server.js`) {
706
- return 'app-shared-server';
707
- }
708
- if (imported_by_remotes.has(id)) {
709
- return `chunk-${uid++}`;
710
- }
711
- }
712
-
713
- // If there was an existing manualChunks function, call it
714
- if (typeof manualChunks === 'function') {
715
- return manualChunks(id, meta);
716
- }
717
-
718
- // If manualChunks is an object, check if this module matches any patterns
719
- if (manualChunks) {
720
- for (const name in manualChunks) {
721
- const patterns = manualChunks[name];
722
-
723
- // TODO is `id.includes(pattern)` correct?
724
- if (patterns.some((pattern) => id.includes(pattern))) {
725
- return name;
726
- }
727
- }
728
- }
729
- }
730
- };
731
-
732
- if (!is_outdated_rollup) {
733
- // @ts-expect-error only exists in more recent Rollup versions https://rollupjs.org/configuration-options/#output-onlyexplicitmanualchunks
734
- config.build.rollupOptions.output.onlyExplicitManualChunks = true;
652
+ load(id) {
653
+ // On-the-fly generated entry point for remote file just forwards the original module
654
+ // We're not using manualChunks because it can cause problems with circular dependencies
655
+ // (e.g. https://github.com/sveltejs/kit/issues/14679) and module ordering in general
656
+ // (e.g. https://github.com/sveltejs/kit/issues/14590).
657
+ if (id.startsWith('\0sveltekit-remote:')) {
658
+ const hash_id = id.slice('\0sveltekit-remote:'.length);
659
+ const original = remote_original_by_hash.get(hash_id);
660
+ if (!original) throw new Error(`Expected to find metadata for remote file ${id}`);
661
+ return `import * as m from ${s(original)};\nexport default m;`;
735
662
  }
736
663
  },
737
664
 
@@ -746,7 +673,6 @@ async function kit({ svelte_config }) {
746
673
  }
747
674
 
748
675
  const file = posixify(path.relative(cwd, id));
749
-
750
676
  const remote = {
751
677
  hash: hash(file),
752
678
  file
@@ -770,10 +696,17 @@ async function kit({ svelte_config }) {
770
696
  }
771
697
  `;
772
698
 
699
+ // Emit a dedicated entry chunk for this remote in SSR builds (prod only)
773
700
  if (!dev_server) {
774
- // in prod, prevent the functions from being treeshaken. This will
775
- // be replaced with an `export default` in the `writeBundle` hook
776
- code += `$$_export_$$($$_self_$$);`;
701
+ remote_original_by_hash.set(remote.hash, id);
702
+ if (!emitted_remote_hashes.has(remote.hash)) {
703
+ this.emitFile({
704
+ type: 'chunk',
705
+ id: `\0sveltekit-remote:${remote.hash}`,
706
+ name: `remote-${remote.hash}`
707
+ });
708
+ emitted_remote_hashes.add(remote.hash);
709
+ }
777
710
  }
778
711
 
779
712
  return code;
@@ -826,19 +759,6 @@ async function kit({ svelte_config }) {
826
759
  return {
827
760
  code: result
828
761
  };
829
- },
830
-
831
- writeBundle() {
832
- for (const remote of remotes) {
833
- const file = `${out}/server/chunks/remote-${remote.hash}.js`;
834
- const code = fs.readFileSync(file, 'utf-8');
835
-
836
- fs.writeFileSync(
837
- file,
838
- // build process might have minified/adjusted the $$_self_$$ variable, but not the fake global $$_export_$$ function
839
- code.replace(/\$\$_export_\$\$\((.+?)\)/, (_, name) => `export default ${name};`)
840
- );
841
- }
842
762
  }
843
763
  };
844
764
 
@@ -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.0';
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
  }