@tanstack/react-form 1.23.9 → 1.26.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.
Files changed (124) hide show
  1. package/dist/cjs/createFormHook.cjs +1 -0
  2. package/dist/cjs/createFormHook.cjs.map +1 -1
  3. package/dist/cjs/index.cjs +0 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +0 -1
  6. package/dist/cjs/types.d.cts +2 -1
  7. package/dist/cjs/useField.cjs +6 -3
  8. package/dist/cjs/useField.cjs.map +1 -1
  9. package/dist/cjs/useFieldGroup.cjs +1 -0
  10. package/dist/cjs/useFieldGroup.cjs.map +1 -1
  11. package/dist/cjs/useForm.cjs +1 -0
  12. package/dist/cjs/useForm.cjs.map +1 -1
  13. package/dist/esm/createFormHook.js +1 -0
  14. package/dist/esm/createFormHook.js.map +1 -1
  15. package/dist/esm/index.d.ts +0 -1
  16. package/dist/esm/index.js +1 -3
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/types.d.ts +2 -1
  19. package/dist/esm/useField.js +7 -4
  20. package/dist/esm/useField.js.map +1 -1
  21. package/dist/esm/useFieldGroup.js +1 -0
  22. package/dist/esm/useFieldGroup.js.map +1 -1
  23. package/dist/esm/useForm.js +1 -0
  24. package/dist/esm/useForm.js.map +1 -1
  25. package/package.json +4 -38
  26. package/src/createFormHook.tsx +1 -0
  27. package/src/index.ts +0 -1
  28. package/src/types.ts +21 -0
  29. package/src/useField.tsx +15 -4
  30. package/src/useFieldGroup.tsx +2 -0
  31. package/src/useForm.tsx +2 -0
  32. package/dist/cjs/nextjs/createServerValidate.cjs +0 -51
  33. package/dist/cjs/nextjs/createServerValidate.cjs.map +0 -1
  34. package/dist/cjs/nextjs/createServerValidate.d.cts +0 -9
  35. package/dist/cjs/nextjs/error.cjs +0 -11
  36. package/dist/cjs/nextjs/error.cjs.map +0 -1
  37. package/dist/cjs/nextjs/error.d.cts +0 -10
  38. package/dist/cjs/nextjs/index.cjs +0 -15
  39. package/dist/cjs/nextjs/index.cjs.map +0 -1
  40. package/dist/cjs/nextjs/index.d.cts +0 -4
  41. package/dist/cjs/nextjs/types.d.cts +0 -2
  42. package/dist/cjs/remix/createServerValidate.cjs +0 -51
  43. package/dist/cjs/remix/createServerValidate.cjs.map +0 -1
  44. package/dist/cjs/remix/createServerValidate.d.cts +0 -9
  45. package/dist/cjs/remix/error.cjs +0 -11
  46. package/dist/cjs/remix/error.cjs.map +0 -1
  47. package/dist/cjs/remix/error.d.cts +0 -10
  48. package/dist/cjs/remix/index.cjs +0 -15
  49. package/dist/cjs/remix/index.cjs.map +0 -1
  50. package/dist/cjs/remix/index.d.cts +0 -4
  51. package/dist/cjs/remix/types.d.cts +0 -2
  52. package/dist/cjs/start/createServerValidate.cjs +0 -53
  53. package/dist/cjs/start/createServerValidate.cjs.map +0 -1
  54. package/dist/cjs/start/createServerValidate.d.cts +0 -7
  55. package/dist/cjs/start/error.cjs +0 -12
  56. package/dist/cjs/start/error.cjs.map +0 -1
  57. package/dist/cjs/start/error.d.cts +0 -12
  58. package/dist/cjs/start/getFormData.cjs +0 -18
  59. package/dist/cjs/start/getFormData.cjs.map +0 -1
  60. package/dist/cjs/start/getFormData.d.cts +0 -13
  61. package/dist/cjs/start/index.cjs +0 -10
  62. package/dist/cjs/start/index.cjs.map +0 -1
  63. package/dist/cjs/start/index.d.cts +0 -4
  64. package/dist/cjs/start/types.d.cts +0 -2
  65. package/dist/cjs/start/utils.cjs +0 -21
  66. package/dist/cjs/start/utils.cjs.map +0 -1
  67. package/dist/cjs/start/utils.d.cts +0 -3
  68. package/dist/cjs/useTransform.cjs +0 -10
  69. package/dist/cjs/useTransform.cjs.map +0 -1
  70. package/dist/cjs/useTransform.d.cts +0 -2
  71. package/dist/esm/nextjs/createServerValidate.d.ts +0 -9
  72. package/dist/esm/nextjs/createServerValidate.js +0 -51
  73. package/dist/esm/nextjs/createServerValidate.js.map +0 -1
  74. package/dist/esm/nextjs/error.d.ts +0 -10
  75. package/dist/esm/nextjs/error.js +0 -11
  76. package/dist/esm/nextjs/error.js.map +0 -1
  77. package/dist/esm/nextjs/index.d.ts +0 -4
  78. package/dist/esm/nextjs/index.js +0 -9
  79. package/dist/esm/nextjs/index.js.map +0 -1
  80. package/dist/esm/nextjs/types.d.ts +0 -2
  81. package/dist/esm/remix/createServerValidate.d.ts +0 -9
  82. package/dist/esm/remix/createServerValidate.js +0 -51
  83. package/dist/esm/remix/createServerValidate.js.map +0 -1
  84. package/dist/esm/remix/error.d.ts +0 -10
  85. package/dist/esm/remix/error.js +0 -11
  86. package/dist/esm/remix/error.js.map +0 -1
  87. package/dist/esm/remix/index.d.ts +0 -4
  88. package/dist/esm/remix/index.js +0 -9
  89. package/dist/esm/remix/index.js.map +0 -1
  90. package/dist/esm/remix/types.d.ts +0 -2
  91. package/dist/esm/start/createServerValidate.d.ts +0 -7
  92. package/dist/esm/start/createServerValidate.js +0 -53
  93. package/dist/esm/start/createServerValidate.js.map +0 -1
  94. package/dist/esm/start/error.d.ts +0 -12
  95. package/dist/esm/start/error.js +0 -12
  96. package/dist/esm/start/error.js.map +0 -1
  97. package/dist/esm/start/getFormData.d.ts +0 -13
  98. package/dist/esm/start/getFormData.js +0 -18
  99. package/dist/esm/start/getFormData.js.map +0 -1
  100. package/dist/esm/start/index.d.ts +0 -4
  101. package/dist/esm/start/index.js +0 -10
  102. package/dist/esm/start/index.js.map +0 -1
  103. package/dist/esm/start/types.d.ts +0 -2
  104. package/dist/esm/start/utils.d.ts +0 -3
  105. package/dist/esm/start/utils.js +0 -21
  106. package/dist/esm/start/utils.js.map +0 -1
  107. package/dist/esm/useTransform.d.ts +0 -2
  108. package/dist/esm/useTransform.js +0 -10
  109. package/dist/esm/useTransform.js.map +0 -1
  110. package/src/nextjs/createServerValidate.ts +0 -134
  111. package/src/nextjs/error.ts +0 -25
  112. package/src/nextjs/index.ts +0 -5
  113. package/src/nextjs/types.ts +0 -21
  114. package/src/remix/createServerValidate.ts +0 -134
  115. package/src/remix/error.ts +0 -25
  116. package/src/remix/index.ts +0 -5
  117. package/src/remix/types.ts +0 -21
  118. package/src/start/createServerValidate.tsx +0 -138
  119. package/src/start/error.ts +0 -28
  120. package/src/start/getFormData.tsx +0 -22
  121. package/src/start/index.ts +0 -4
  122. package/src/start/types.ts +0 -21
  123. package/src/start/utils.ts +0 -23
  124. package/src/useTransform.ts +0 -17
@@ -1,138 +0,0 @@
1
- import {
2
- isGlobalFormValidationError,
3
- isStandardSchemaValidator,
4
- standardSchemaValidators,
5
- } from '@tanstack/form-core'
6
- import { getHeader } from '@tanstack/react-start/server'
7
- import { decode } from 'decode-formdata'
8
- import { ServerValidateError } from './error'
9
- import { setInternalTanStackCookie } from './utils'
10
- import type { ServerFormState } from './types'
11
- import type {
12
- FormAsyncValidateOrFn,
13
- FormOptions,
14
- FormValidateAsyncFn,
15
- FormValidateOrFn,
16
- UnwrapFormAsyncValidateOrFn,
17
- } from '@tanstack/form-core'
18
-
19
- interface CreateServerValidateOptions<
20
- TFormData,
21
- TOnMount extends undefined | FormValidateOrFn<TFormData>,
22
- TOnChange extends undefined | FormValidateOrFn<TFormData>,
23
- TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
24
- TOnBlur extends undefined | FormValidateOrFn<TFormData>,
25
- TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
26
- TOnSubmit extends undefined | FormValidateOrFn<TFormData>,
27
- TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
28
- TOnDynamic extends undefined | FormValidateOrFn<TFormData>,
29
- TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
30
- TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
31
- TSubmitMeta,
32
- > extends FormOptions<
33
- TFormData,
34
- TOnMount,
35
- TOnChange,
36
- TOnChangeAsync,
37
- TOnBlur,
38
- TOnBlurAsync,
39
- TOnSubmit,
40
- TOnSubmitAsync,
41
- TOnDynamic,
42
- TOnDynamicAsync,
43
- TOnServer,
44
- TSubmitMeta
45
- > {
46
- onServerValidate: TOnServer
47
- }
48
-
49
- export const createServerValidate =
50
- <
51
- TFormData,
52
- TOnMount extends undefined | FormValidateOrFn<TFormData>,
53
- TOnChange extends undefined | FormValidateOrFn<TFormData>,
54
- TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
55
- TOnBlur extends undefined | FormValidateOrFn<TFormData>,
56
- TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
57
- TOnSubmit extends undefined | FormValidateOrFn<TFormData>,
58
- TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
59
- TOnDynamic extends undefined | FormValidateOrFn<TFormData>,
60
- TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
61
- TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
62
- TSubmitMeta,
63
- >(
64
- defaultOpts: CreateServerValidateOptions<
65
- TFormData,
66
- TOnMount,
67
- TOnChange,
68
- TOnChangeAsync,
69
- TOnBlur,
70
- TOnBlurAsync,
71
- TOnSubmit,
72
- TOnSubmitAsync,
73
- TOnDynamic,
74
- TOnDynamicAsync,
75
- TOnServer,
76
- TSubmitMeta
77
- >,
78
- ) =>
79
- async (formData: FormData, info?: Parameters<typeof decode>[1]) => {
80
- const { onServerValidate } = defaultOpts
81
-
82
- const runValidator = async ({
83
- value,
84
- validationSource,
85
- }: {
86
- value: TFormData
87
- validationSource: 'form'
88
- }) => {
89
- if (isStandardSchemaValidator(onServerValidate)) {
90
- return await standardSchemaValidators.validateAsync(
91
- { value, validationSource },
92
- onServerValidate,
93
- )
94
- }
95
- return (onServerValidate as FormValidateAsyncFn<TFormData>)({
96
- value,
97
- signal: undefined as never,
98
- formApi: undefined as never,
99
- })
100
- }
101
-
102
- const referer = getHeader('referer')!
103
-
104
- const data = decode(formData, info) as never as TFormData
105
-
106
- const onServerError = (await runValidator({
107
- value: data,
108
- validationSource: 'form',
109
- })) as UnwrapFormAsyncValidateOrFn<TOnServer> | undefined
110
-
111
- if (!onServerError) return data
112
-
113
- const onServerErrorVal = (
114
- isGlobalFormValidationError(onServerError)
115
- ? onServerError.form
116
- : onServerError
117
- ) as UnwrapFormAsyncValidateOrFn<TOnServer>
118
-
119
- const formState: ServerFormState<TFormData, TOnServer> = {
120
- errorMap: {
121
- onServer: onServerError,
122
- },
123
- values: data,
124
- errors: onServerErrorVal ? [onServerErrorVal] : [],
125
- }
126
-
127
- setInternalTanStackCookie(formState)
128
-
129
- throw new ServerValidateError({
130
- response: new Response('ok', {
131
- headers: {
132
- Location: referer,
133
- },
134
- status: 302,
135
- }),
136
- formState: formState,
137
- })
138
- }
@@ -1,28 +0,0 @@
1
- import type { ServerFormState } from './types'
2
- import type { FormAsyncValidateOrFn } from '@tanstack/form-core'
3
-
4
- interface ServerValidateErrorState<
5
- TFormData,
6
- TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
7
- > {
8
- formState: ServerFormState<TFormData, TOnServer>
9
- response: Response
10
- }
11
-
12
- export class ServerValidateError<
13
- TFormData,
14
- TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
15
- >
16
- extends Error
17
- implements ServerValidateErrorState<TFormData, TOnServer>
18
- {
19
- formState: ServerFormState<TFormData, TOnServer>
20
- response: Response
21
-
22
- constructor(options: ServerValidateErrorState<TFormData, TOnServer>) {
23
- super('Your form has errors. Please check the fields and try again.')
24
- this.name = 'ServerValidateError'
25
- this.response = options.response
26
- this.formState = options.formState
27
- }
28
- }
@@ -1,22 +0,0 @@
1
- import {
2
- deleteInternalTanStackCookie,
3
- getInternalTanStackCookie,
4
- } from './utils'
5
- import type { ServerFormState } from './types'
6
-
7
- export const initialFormState = {
8
- errorMap: {
9
- onServer: undefined,
10
- },
11
- errors: [],
12
- }
13
-
14
- export const getFormData = async () => {
15
- const data = getInternalTanStackCookie() as
16
- | undefined
17
- | ServerFormState<any, undefined>
18
- // Delete the temporary cookie from the client after reading it
19
- deleteInternalTanStackCookie()
20
- if (!data) return initialFormState
21
- return data
22
- }
@@ -1,4 +0,0 @@
1
- export * from './createServerValidate'
2
- export * from './getFormData'
3
- export * from './error'
4
- export * from './types'
@@ -1,21 +0,0 @@
1
- import type { FormAsyncValidateOrFn, FormState } from '@tanstack/form-core'
2
-
3
- export type ServerFormState<
4
- TFormData,
5
- TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
6
- > = Pick<
7
- FormState<
8
- TFormData,
9
- undefined,
10
- undefined,
11
- undefined,
12
- undefined,
13
- undefined,
14
- undefined,
15
- undefined,
16
- undefined,
17
- undefined,
18
- TOnServer
19
- >,
20
- 'values' | 'errors' | 'errorMap'
21
- >
@@ -1,23 +0,0 @@
1
- import {
2
- deleteCookie,
3
- getCookie,
4
- setCookie,
5
- } from '@tanstack/react-start/server'
6
- import { parse, stringify } from 'devalue'
7
-
8
- const _INTERNALS_COOKIE_NAME = '_tanstack_form_internals'
9
-
10
- export const setInternalTanStackCookie = (data: any) => {
11
- const cookie = stringify(data)
12
- setCookie(_INTERNALS_COOKIE_NAME, cookie)
13
- }
14
-
15
- export const getInternalTanStackCookie = () => {
16
- const cookie = getCookie(_INTERNALS_COOKIE_NAME)
17
- if (!cookie) return undefined
18
- return parse(cookie)
19
- }
20
-
21
- export const deleteInternalTanStackCookie = () => {
22
- deleteCookie(_INTERNALS_COOKIE_NAME)
23
- }
@@ -1,17 +0,0 @@
1
- import type {
2
- AnyFormApi,
3
- FormApi,
4
- FormAsyncValidateOrFn,
5
- FormTransform,
6
- FormValidateOrFn,
7
- } from '@tanstack/form-core'
8
-
9
- export function useTransform(
10
- fn: (formBase: AnyFormApi) => AnyFormApi,
11
- deps: unknown[],
12
- ): FormTransform<any, any, any, any, any, any, any, any, any, any, any, any> {
13
- return {
14
- fn,
15
- deps,
16
- }
17
- }