@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.
- package/package.json +1 -1
- package/src/core/sync/write_server.js +2 -0
- package/src/exports/public.d.ts +103 -10
- package/src/runtime/app/server/remote/form.js +146 -15
- package/src/runtime/client/client.js +12 -7
- package/src/runtime/client/remote-functions/form.svelte.js +321 -79
- package/src/runtime/server/page/render.js +28 -26
- package/src/runtime/server/remote.js +4 -3
- package/src/runtime/utils.js +122 -0
- package/src/version.js +1 -1
- package/types/index.d.ts +121 -12
- package/types/index.d.ts.map +8 -4
package/src/runtime/utils.js
CHANGED
|
@@ -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
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<
|
|
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:
|
|
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
|
-
|
|
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<
|
|
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():
|
|
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:
|
|
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<
|
|
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
|
*
|
package/types/index.d.ts.map
CHANGED
|
@@ -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
|
}
|