MCPcopy Create free account
hub / github.com/TanStack/form / createServerValidate

Function createServerValidate

packages/react-form/src/remix/createServerValidate.ts:48–126  ·  view source on GitHub ↗
(
    defaultOpts: CreateServerValidateOptions<
      TFormData,
      TOnMount,
      TOnChange,
      TOnChangeAsync,
      TOnBlur,
      TOnBlurAsync,
      TOnSubmit,
      TOnSubmitAsync,
      TOnDynamic,
      TOnDynamicAsync,
      TOnServer,
      TSubmitMeta
    >,
  )

Source from the content-addressed store, hash-verified

46
47export const createServerValidate =
48 <
49 TFormData,
50 TOnMount extends undefined | FormValidateOrFn<TFormData>,
51 TOnChange extends undefined | FormValidateOrFn<TFormData>,
52 TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
53 TOnBlur extends undefined | FormValidateOrFn<TFormData>,
54 TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
55 TOnSubmit extends undefined | FormValidateOrFn<TFormData>,
56 TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
57 TOnDynamic extends undefined | FormValidateOrFn<TFormData>,
58 TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
59 TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
60 TSubmitMeta,
61 >(
62 defaultOpts: CreateServerValidateOptions<
63 TFormData,
64 TOnMount,
65 TOnChange,
66 TOnChangeAsync,
67 TOnBlur,
68 TOnBlurAsync,
69 TOnSubmit,
70 TOnSubmitAsync,
71 TOnDynamic,
72 TOnDynamicAsync,
73 TOnServer,
74 TSubmitMeta
75 >,
76 ) =>
77 async (formData: FormData, info?: Parameters<typeof decode>[1]) => {
78 const { onServerValidate } = defaultOpts
79
80 const runValidator = async ({
81 value,
82 validationSource,
83 }: {
84 value: TFormData
85 validationSource: 'form'
86 }) => {
87 if (isStandardSchemaValidator(onServerValidate)) {
88 return await standardSchemaValidators.validateAsync(
89 { value, validationSource },
90 onServerValidate,
91 )
92 }
93 return (onServerValidate as FormValidateAsyncFn<TFormData>)({
94 value,
95 signal: undefined as never,
96 formApi: undefined as never,
97 })
98 }
99
100 const values = decode(formData, info) as never as TFormData
101
102 const onServerError = (await runValidator({
103 value: values,
104 validationSource: 'form',
105 })) as UnwrapFormAsyncValidateOrFn<TOnServer> | undefined

Callers 1

route.tsxFile · 0.90

Calls 2

runValidatorFunction · 0.70

Tested by

no test coverage detected