diff --git a/examples/react/next-server-actions/src/app/action.ts b/examples/react/next-server-actions/src/app/action.ts index 8ffa3fc020..be1bf932da 100644 --- a/examples/react/next-server-actions/src/app/action.ts +++ b/examples/react/next-server-actions/src/app/action.ts @@ -25,7 +25,7 @@ export default async function someAction(prev: unknown, formData: FormData) { // VALUES (${validatedData.name}, ${validatedData.email}, ${validatedData.password}) // ` } catch (e) { - if (e instanceof ServerValidateError) { + if (serverValidate.isFormError(e)) { return e.formState } diff --git a/packages/react-form/src/nextjs/createServerValidate.ts b/packages/react-form/src/nextjs/createServerValidate.ts index 903a6f5203..c48ac1bfcb 100644 --- a/packages/react-form/src/nextjs/createServerValidate.ts +++ b/packages/react-form/src/nextjs/createServerValidate.ts @@ -44,37 +44,39 @@ interface CreateServerValidateOptions< onServerValidate: TOnServer } -export const createServerValidate = - < +export const createServerValidate = < + TFormData, + TOnMount extends undefined | FormValidateOrFn, + TOnChange extends undefined | FormValidateOrFn, + TOnChangeAsync extends undefined | FormAsyncValidateOrFn, + TOnBlur extends undefined | FormValidateOrFn, + TOnBlurAsync extends undefined | FormAsyncValidateOrFn, + TOnSubmit extends undefined | FormValidateOrFn, + TOnSubmitAsync extends undefined | FormAsyncValidateOrFn, + TOnDynamic extends undefined | FormValidateOrFn, + TOnDynamicAsync extends undefined | FormAsyncValidateOrFn, + TOnServer extends undefined | FormAsyncValidateOrFn, + TSubmitMeta, +>( + defaultOpts: CreateServerValidateOptions< TFormData, - TOnMount extends undefined | FormValidateOrFn, - TOnChange extends undefined | FormValidateOrFn, - TOnChangeAsync extends undefined | FormAsyncValidateOrFn, - TOnBlur extends undefined | FormValidateOrFn, - TOnBlurAsync extends undefined | FormAsyncValidateOrFn, - TOnSubmit extends undefined | FormValidateOrFn, - TOnSubmitAsync extends undefined | FormAsyncValidateOrFn, - TOnDynamic extends undefined | FormValidateOrFn, - TOnDynamicAsync extends undefined | FormAsyncValidateOrFn, - TOnServer extends undefined | FormAsyncValidateOrFn, - TSubmitMeta, - >( - defaultOpts: CreateServerValidateOptions< - TFormData, - TOnMount, - TOnChange, - TOnChangeAsync, - TOnBlur, - TOnBlurAsync, - TOnSubmit, - TOnSubmitAsync, - TOnDynamic, - TOnDynamicAsync, - TOnServer, - TSubmitMeta - >, - ) => - async (formData: FormData, info?: Parameters[1]) => { + TOnMount, + TOnChange, + TOnChangeAsync, + TOnBlur, + TOnBlurAsync, + TOnSubmit, + TOnSubmitAsync, + TOnDynamic, + TOnDynamicAsync, + TOnServer, + TSubmitMeta + >, +) => { + const validateFn = async ( + formData: FormData, + info?: Parameters[1], + ) => { const { onServerValidate } = defaultOpts const runValidator = async ({ @@ -125,6 +127,17 @@ export const createServerValidate = }) } + function isFormError( + e: unknown, + ): e is ServerValidateError { + return e instanceof ServerValidateError + } + + return Object.assign(validateFn, { + isFormError, + }) +} + export const initialFormState: ServerFormState = { errorMap: { onServer: undefined,