diff --git a/.changeset/beige-dogs-sell.md b/.changeset/beige-dogs-sell.md new file mode 100644 index 000000000000..b1c6f38e4770 --- /dev/null +++ b/.changeset/beige-dogs-sell.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: fix `RecursiveFormFields` type for recursive or unknown schemas diff --git a/.changeset/easy-plants-remain.md b/.changeset/easy-plants-remain.md deleted file mode 100644 index 10af2d624bfa..000000000000 --- a/.changeset/easy-plants-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: ensure `form` remote functions' `fields.set` triggers reactivity diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 8c0023fa9bc9..0f2062888243 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.46.5 +### Patch Changes + + +- fix: ensure `form` remote functions' `fields.set` triggers reactivity ([#14661](https://github.com/sveltejs/kit/pull/14661)) + ## 2.46.4 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index accae32dbb66..02e46dcf2a89 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.46.4", + "version": "2.46.5", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 01e4f8cf9eb9..18ed911e8302 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1917,19 +1917,31 @@ type RemoteFormFieldContainer = RemoteFormFieldMethods & { /** * Recursive type to build form fields structure with proxy access */ -type RemoteFormFields = +export type RemoteFormFields = WillRecurseIndefinitely extends true - ? RecursiveFormFields + ? RecursiveFormFields : NonNullable extends string | number | boolean | File ? RemoteFormField> : T extends string[] | File[] ? RemoteFormField & { [K in number]: RemoteFormField } : T extends Array - ? RemoteFormFieldContainer & { [K in number]: RemoteFormFields } - : RemoteFormFieldContainer & { [K in keyof T]-?: RemoteFormFields }; + ? RemoteFormFieldContainer & { + [K in number]: RemoteFormFields< + U, + U extends RemoteFormFieldValue | unknown ? true : false + >; + } + : RemoteFormFieldContainer & { + [K in keyof T]-?: RemoteFormFields< + T[K], + T[K] extends RemoteFormFieldValue | unknown ? true : false + >; + }; // By breaking this out into its own type, we avoid the TS recursion depth limit -type RecursiveFormFields = RemoteFormField & { [key: string | number]: RecursiveFormFields }; +type RecursiveFormFields = (Leaf extends true + ? RemoteFormField + : RemoteFormFieldContainer) & { [key: string | number]: RecursiveFormFields }; type MaybeArray = T | T[]; diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 5960bdbc4161..ad52027cad84 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.46.4'; +export const VERSION = '2.46.5'; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index b503853794e8..e04c0dd4d082 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1893,19 +1893,31 @@ declare module '@sveltejs/kit' { /** * Recursive type to build form fields structure with proxy access */ - type RemoteFormFields = + export type RemoteFormFields = WillRecurseIndefinitely extends true - ? RecursiveFormFields + ? RecursiveFormFields : NonNullable extends string | number | boolean | File ? RemoteFormField> : T extends string[] | File[] ? RemoteFormField & { [K in number]: RemoteFormField } : T extends Array - ? RemoteFormFieldContainer & { [K in number]: RemoteFormFields } - : RemoteFormFieldContainer & { [K in keyof T]-?: RemoteFormFields }; + ? RemoteFormFieldContainer & { + [K in number]: RemoteFormFields< + U, + U extends RemoteFormFieldValue | unknown ? true : false + >; + } + : RemoteFormFieldContainer & { + [K in keyof T]-?: RemoteFormFields< + T[K], + T[K] extends RemoteFormFieldValue | unknown ? true : false + >; + }; // By breaking this out into its own type, we avoid the TS recursion depth limit - type RecursiveFormFields = RemoteFormField & { [key: string | number]: RecursiveFormFields }; + type RecursiveFormFields = (Leaf extends true + ? RemoteFormField + : RemoteFormFieldContainer) & { [key: string | number]: RecursiveFormFields }; type MaybeArray = T | T[];