@sveltejs/kit 2.40.0 → 2.42.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.
@@ -1,3 +1,5 @@
1
+ /** @import { RemoteFormIssue } from '@sveltejs/kit' */
2
+ /** @import { StandardSchemaV1 } from '@standard-schema/spec' */
1
3
  import { BROWSER } from 'esm-env';
2
4
 
3
5
  export const text_encoder = new TextEncoder();
@@ -63,3 +65,123 @@ export function base64_decode(encoded) {
63
65
 
64
66
  return bytes;
65
67
  }
68
+
69
+ /**
70
+ * Convert `FormData` into a POJO
71
+ * @param {FormData} data
72
+ */
73
+ export function convert_formdata(data) {
74
+ /** @type {Record<string, any>} */
75
+ const result = Object.create(null); // guard against prototype pollution
76
+
77
+ for (let key of data.keys()) {
78
+ const is_array = key.endsWith('[]');
79
+ let values = data.getAll(key);
80
+
81
+ if (is_array) key = key.slice(0, -2);
82
+
83
+ if (values.length > 1 && !is_array) {
84
+ throw new Error(`Form cannot contain duplicated keys — "${key}" has ${values.length} values`);
85
+ }
86
+
87
+ // an empty `<input type="file">` will submit a non-existent file, bizarrely
88
+ values = values.filter(
89
+ (entry) => typeof entry === 'string' || entry.name !== '' || entry.size > 0
90
+ );
91
+
92
+ deep_set(result, split_path(key), is_array ? values : values[0]);
93
+ }
94
+
95
+ return result;
96
+ }
97
+
98
+ const path_regex = /^[a-zA-Z_$]\w*(\.[a-zA-Z_$]\w*|\[\d+\])*$/;
99
+
100
+ /**
101
+ * @param {string} path
102
+ */
103
+ export function split_path(path) {
104
+ if (!path_regex.test(path)) {
105
+ throw new Error(`Invalid path ${path}`);
106
+ }
107
+
108
+ return path.split(/\.|\[|\]/).filter(Boolean);
109
+ }
110
+
111
+ /**
112
+ * @param {Record<string, any>} object
113
+ * @param {string[]} keys
114
+ * @param {any} value
115
+ */
116
+ export function deep_set(object, keys, value) {
117
+ for (let i = 0; i < keys.length - 1; i += 1) {
118
+ const key = keys[i];
119
+ const is_array = /^\d+$/.test(keys[i + 1]);
120
+
121
+ if (object[key]) {
122
+ if (is_array !== Array.isArray(object[key])) {
123
+ throw new Error(`Invalid array key ${keys[i + 1]}`);
124
+ }
125
+ } else {
126
+ object = object[key] ??= is_array ? [] : Object.create(null); // guard against prototype pollution
127
+ }
128
+ }
129
+
130
+ object[keys[keys.length - 1]] = value;
131
+ }
132
+
133
+ /**
134
+ * @param {readonly StandardSchemaV1.Issue[]} issues
135
+ */
136
+ export function flatten_issues(issues) {
137
+ /** @type {Record<string, RemoteFormIssue[]>} */
138
+ const result = {};
139
+
140
+ for (const issue of issues) {
141
+ /** @type {RemoteFormIssue} */
142
+ const normalized = { name: '', path: [], message: issue.message };
143
+
144
+ (result.$ ??= []).push(normalized);
145
+
146
+ let name = '';
147
+
148
+ if (issue.path !== undefined) {
149
+ for (const segment of issue.path) {
150
+ const key = /** @type {string | number} */ (
151
+ typeof segment === 'object' ? segment.key : segment
152
+ );
153
+
154
+ normalized.path.push(key);
155
+
156
+ if (typeof key === 'number') {
157
+ name += `[${key}]`;
158
+ } else if (typeof key === 'string') {
159
+ name += name === '' ? key : '.' + key;
160
+ }
161
+
162
+ (result[name] ??= []).push(normalized);
163
+ }
164
+
165
+ normalized.name = name;
166
+ }
167
+ }
168
+
169
+ return result;
170
+ }
171
+
172
+ /**
173
+ * We need to encode `File` objects when returning `issues` from a `form` submission,
174
+ * because some validators include the original value in the issue. It doesn't
175
+ * need to deserialize to a `File` object
176
+ * @type {import('@sveltejs/kit').Transporter}
177
+ */
178
+ export const file_transport = {
179
+ encode: (file) =>
180
+ file instanceof File && {
181
+ size: file.size,
182
+ type: file.type,
183
+ name: file.name,
184
+ lastModified: file.lastModified
185
+ },
186
+ decode: (data) => data
187
+ };
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.40.0';
4
+ export const VERSION = '2.42.0';
package/types/index.d.ts CHANGED
@@ -1786,28 +1786,105 @@ declare module '@sveltejs/kit' {
1786
1786
  restore: (snapshot: T) => void;
1787
1787
  }
1788
1788
 
1789
+ // If T is unknown or RemoteFormInput, the types below will recurse indefinitely and create giant unions that TS can't handle
1790
+ type WillRecurseIndefinitely<T> = unknown extends T
1791
+ ? true
1792
+ : RemoteFormInput extends T
1793
+ ? true
1794
+ : false;
1795
+
1796
+ // Helper type to convert union to intersection
1797
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void
1798
+ ? I
1799
+ : never;
1800
+
1801
+ type FlattenInput<T, Prefix extends string> =
1802
+ WillRecurseIndefinitely<T> extends true
1803
+ ? { [key: string]: string }
1804
+ : T extends Array<infer U>
1805
+ ? U extends string | File
1806
+ ? { [P in Prefix]: string[] }
1807
+ : FlattenInput<U, `${Prefix}[${number}]`>
1808
+ : T extends File
1809
+ ? { [P in Prefix]: string }
1810
+ : T extends object
1811
+ ? {
1812
+ [K in keyof T]: FlattenInput<
1813
+ T[K],
1814
+ Prefix extends '' ? K & string : `${Prefix}.${K & string}`
1815
+ >;
1816
+ }[keyof T]
1817
+ : { [P in Prefix]: string };
1818
+
1819
+ type FlattenIssues<T, Prefix extends string> =
1820
+ WillRecurseIndefinitely<T> extends true
1821
+ ? { [key: string]: RemoteFormIssue[] }
1822
+ : T extends Array<infer U>
1823
+ ? { [P in Prefix | `${Prefix}[${number}]`]: RemoteFormIssue[] } & FlattenIssues<
1824
+ U,
1825
+ `${Prefix}[${number}]`
1826
+ >
1827
+ : T extends File
1828
+ ? { [P in Prefix]: RemoteFormIssue[] }
1829
+ : T extends object
1830
+ ? {
1831
+ [K in keyof T]: FlattenIssues<
1832
+ T[K],
1833
+ Prefix extends '' ? K & string : `${Prefix}.${K & string}`
1834
+ >;
1835
+ }[keyof T]
1836
+ : { [P in Prefix]: RemoteFormIssue[] };
1837
+
1838
+ type FlattenKeys<T, Prefix extends string> =
1839
+ WillRecurseIndefinitely<T> extends true
1840
+ ? { [key: string]: string }
1841
+ : T extends Array<infer U>
1842
+ ? U extends string | File
1843
+ ? { [P in `${Prefix}[]`]: string[] }
1844
+ : FlattenKeys<U, `${Prefix}[${number}]`>
1845
+ : T extends File
1846
+ ? { [P in Prefix]: string }
1847
+ : T extends object
1848
+ ? {
1849
+ [K in keyof T]: FlattenKeys<
1850
+ T[K],
1851
+ Prefix extends '' ? K & string : `${Prefix}.${K & string}`
1852
+ >;
1853
+ }[keyof T]
1854
+ : { [P in Prefix]: string };
1855
+
1856
+ export interface RemoteFormInput {
1857
+ [key: string]: FormDataEntryValue | FormDataEntryValue[] | RemoteFormInput | RemoteFormInput[];
1858
+ }
1859
+
1860
+ export interface RemoteFormIssue {
1861
+ name: string;
1862
+ path: Array<string | number>;
1863
+ message: string;
1864
+ }
1865
+
1789
1866
  /**
1790
1867
  * The return value of a remote `form` function. See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation.
1791
1868
  */
1792
- export type RemoteForm<Result> = {
1869
+ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
1870
+ /** Attachment that sets up an event handler that intercepts the form submission on the client to prevent a full page reload */
1871
+ [attachment: symbol]: (node: HTMLFormElement) => void;
1793
1872
  method: 'POST';
1794
1873
  /** The URL to send the form to. */
1795
1874
  action: string;
1796
- /** Event handler that intercepts the form submission on the client to prevent a full page reload */
1797
- onsubmit: (event: SubmitEvent) => void;
1798
1875
  /** Use the `enhance` method to influence what happens when the form is submitted. */
1799
1876
  enhance(
1800
1877
  callback: (opts: {
1801
1878
  form: HTMLFormElement;
1802
- data: FormData;
1879
+ data: Input;
1803
1880
  submit: () => Promise<void> & {
1804
1881
  updates: (...queries: Array<RemoteQuery<any> | RemoteQueryOverride>) => Promise<void>;
1805
1882
  };
1806
- }) => void
1883
+ }) => void | Promise<void>
1807
1884
  ): {
1808
1885
  method: 'POST';
1809
1886
  action: string;
1810
- onsubmit: (event: SubmitEvent) => void;
1887
+ [attachment: symbol]: (node: HTMLFormElement) => void;
1811
1888
  };
1812
1889
  /**
1813
1890
  * Create an instance of the form for the given key.
@@ -1823,11 +1900,27 @@ declare module '@sveltejs/kit' {
1823
1900
  * {/each}
1824
1901
  * ```
1825
1902
  */
1826
- for(key: string | number | boolean): Omit<RemoteForm<Result>, 'for'>;
1903
+ for(key: string | number | boolean): Omit<RemoteForm<Input, Output>, 'for'>;
1904
+ /**
1905
+ * This method exists to allow you to typecheck `name` attributes. It returns its argument
1906
+ * @example
1907
+ * ```svelte
1908
+ * <input name={login.field('username')} />
1909
+ * ```
1910
+ **/
1911
+ field<Name extends keyof UnionToIntersection<FlattenKeys<Input, ''>>>(string: Name): Name;
1912
+ /** Preflight checks */
1913
+ preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
1914
+ /** Validate the form contents programmatically */
1915
+ validate(options?: { includeUntouched?: boolean }): Promise<void>;
1827
1916
  /** The result of the form submission */
1828
- get result(): Result | undefined;
1917
+ get result(): Output | undefined;
1829
1918
  /** The number of pending submissions */
1830
1919
  get pending(): number;
1920
+ /** The submitted values */
1921
+ input: null | UnionToIntersection<FlattenInput<Input, ''>>;
1922
+ /** Validation issues */
1923
+ issues: null | UnionToIntersection<FlattenIssues<Input, ''>>;
1831
1924
  /** Spread this onto a `<button>` or `<input type="submit">` */
1832
1925
  buttonProps: {
1833
1926
  type: 'submit';
@@ -1838,11 +1931,11 @@ declare module '@sveltejs/kit' {
1838
1931
  enhance(
1839
1932
  callback: (opts: {
1840
1933
  form: HTMLFormElement;
1841
- data: FormData;
1934
+ data: Input;
1842
1935
  submit: () => Promise<void> & {
1843
1936
  updates: (...queries: Array<RemoteQuery<any> | RemoteQueryOverride>) => Promise<void>;
1844
1937
  };
1845
- }) => void
1938
+ }) => void | Promise<void>
1846
1939
  ): {
1847
1940
  type: 'submit';
1848
1941
  formmethod: 'POST';
@@ -2910,7 +3003,7 @@ declare module '$app/paths' {
2910
3003
  }
2911
3004
 
2912
3005
  declare module '$app/server' {
2913
- import type { RequestEvent, RemoteCommand, RemoteForm, RemotePrerenderFunction, RemoteQueryFunction } from '@sveltejs/kit';
3006
+ import type { RequestEvent, RemoteCommand, RemoteForm, RemoteFormInput, RemotePrerenderFunction, RemoteQueryFunction } from '@sveltejs/kit';
2914
3007
  import type { StandardSchemaV1 } from '@standard-schema/spec';
2915
3008
  /**
2916
3009
  * Read the contents of an imported asset from the filesystem
@@ -2964,7 +3057,23 @@ declare module '$app/server' {
2964
3057
  *
2965
3058
  * @since 2.27
2966
3059
  */
2967
- export function form<T>(fn: (data: FormData) => MaybePromise<T>): RemoteForm<T>;
3060
+ export function form<Output>(fn: () => Output): RemoteForm<void, Output>;
3061
+ /**
3062
+ * Creates a form object that can be spread onto a `<form>` element.
3063
+ *
3064
+ * See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation.
3065
+ *
3066
+ * @since 2.27
3067
+ */
3068
+ export function form<Input extends RemoteFormInput, Output>(validate: "unchecked", fn: (data: Input) => MaybePromise<Output>): RemoteForm<Input, Output>;
3069
+ /**
3070
+ * Creates a form object that can be spread onto a `<form>` element.
3071
+ *
3072
+ * See [Remote functions](https://svelte.dev/docs/kit/remote-functions#form) for full documentation.
3073
+ *
3074
+ * @since 2.27
3075
+ */
3076
+ export function form<Schema extends StandardSchemaV1<RemoteFormInput, Record<string, any>>, Output>(validate: Schema, fn: (data: StandardSchemaV1.InferOutput<Schema>) => MaybePromise<Output>): RemoteForm<StandardSchemaV1.InferInput<Schema>, Output>;
2968
3077
  /**
2969
3078
  * Creates a remote prerender function. When called from the browser, the function will be invoked on the server via a `fetch` call.
2970
3079
  *
@@ -57,6 +57,13 @@
57
57
  "Redirect",
58
58
  "SubmitFunction",
59
59
  "Snapshot",
60
+ "WillRecurseIndefinitely",
61
+ "UnionToIntersection",
62
+ "FlattenInput",
63
+ "FlattenIssues",
64
+ "FlattenKeys",
65
+ "RemoteFormInput",
66
+ "RemoteFormIssue",
60
67
  "RemoteForm",
61
68
  "RemoteCommand",
62
69
  "RemoteResource",
@@ -144,7 +151,6 @@
144
151
  "resolveRoute",
145
152
  "read",
146
153
  "getRequestEvent",
147
- "form",
148
154
  "RemotePrerenderInputsGenerator",
149
155
  "page",
150
156
  "navigating",
@@ -168,7 +174,6 @@
168
174
  "../src/runtime/app/paths/types.d.ts",
169
175
  "../src/runtime/app/server/index.js",
170
176
  "../src/exports/internal/event.js",
171
- "../src/runtime/app/server/remote/form.js",
172
177
  "../src/runtime/app/state/index.js",
173
178
  "../src/runtime/app/stores.js"
174
179
  ],
@@ -190,9 +195,8 @@
190
195
  null,
191
196
  null,
192
197
  null,
193
- null,
194
198
  null
195
199
  ],
196
- "mappings": "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",
200
+ "mappings": "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",
197
201
  "ignoreList": []
198
202
  }