@hookform/resolvers 3.7.0 → 3.9.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 (271) hide show
  1. package/README.md +112 -0
  2. package/ajv/dist/ajv.js.map +1 -1
  3. package/ajv/dist/ajv.modern.mjs.map +1 -1
  4. package/ajv/dist/ajv.module.js.map +1 -1
  5. package/ajv/dist/ajv.umd.js.map +1 -1
  6. package/ajv/dist/types.d.ts +1 -1
  7. package/ajv/src/__tests__/ajv.ts +7 -1
  8. package/ajv/src/ajv.ts +1 -1
  9. package/ajv/src/types.ts +1 -5
  10. package/arktype/dist/arktype.js +1 -1
  11. package/arktype/dist/arktype.js.map +1 -1
  12. package/arktype/dist/arktype.mjs +1 -1
  13. package/arktype/dist/arktype.modern.mjs +1 -1
  14. package/arktype/dist/arktype.modern.mjs.map +1 -1
  15. package/arktype/dist/arktype.module.js +1 -1
  16. package/arktype/dist/arktype.module.js.map +1 -1
  17. package/arktype/dist/arktype.umd.js +1 -1
  18. package/arktype/dist/arktype.umd.js.map +1 -1
  19. package/arktype/dist/types.d.ts +1 -1
  20. package/arktype/package.json +2 -1
  21. package/arktype/src/__tests__/Form-native-validation.tsx +5 -5
  22. package/arktype/src/__tests__/Form.tsx +2 -2
  23. package/arktype/src/__tests__/__fixtures__/data.ts +1 -1
  24. package/arktype/src/__tests__/__snapshots__/arktype.ts.snap +29 -29
  25. package/arktype/src/__tests__/arktype.ts +1 -1
  26. package/arktype/src/arktype.ts +2 -2
  27. package/arktype/src/types.ts +1 -1
  28. package/class-validator/dist/class-validator.js.map +1 -1
  29. package/class-validator/dist/class-validator.modern.mjs.map +1 -1
  30. package/class-validator/dist/class-validator.module.js.map +1 -1
  31. package/class-validator/dist/class-validator.umd.js.map +1 -1
  32. package/class-validator/dist/types.d.ts +2 -2
  33. package/class-validator/src/__tests__/Form-native-validation.tsx +2 -2
  34. package/class-validator/src/__tests__/Form.tsx +2 -2
  35. package/class-validator/src/__tests__/__snapshots__/class-validator.ts.snap +2 -2
  36. package/class-validator/src/__tests__/class-validator.ts +4 -4
  37. package/class-validator/src/class-validator.ts +2 -2
  38. package/class-validator/src/types.ts +2 -2
  39. package/computed-types/dist/computed-types.js.map +1 -1
  40. package/computed-types/dist/computed-types.modern.mjs.map +1 -1
  41. package/computed-types/dist/computed-types.module.js.map +1 -1
  42. package/computed-types/dist/computed-types.umd.js.map +1 -1
  43. package/computed-types/dist/types.d.ts +1 -1
  44. package/computed-types/src/__tests__/Form-native-validation.tsx +2 -2
  45. package/computed-types/src/__tests__/Form.tsx +2 -2
  46. package/computed-types/src/__tests__/__fixtures__/data.ts +1 -1
  47. package/computed-types/src/__tests__/__snapshots__/computed-types.ts.snap +6 -6
  48. package/computed-types/src/__tests__/computed-types.ts +1 -1
  49. package/computed-types/src/computed-types.ts +2 -2
  50. package/computed-types/src/types.ts +1 -1
  51. package/dist/resolvers.js +1 -1
  52. package/dist/resolvers.js.map +1 -1
  53. package/dist/resolvers.mjs +2 -2
  54. package/dist/resolvers.mjs.map +1 -1
  55. package/dist/resolvers.module.js +1 -1
  56. package/dist/resolvers.module.js.map +1 -1
  57. package/dist/resolvers.umd.js +1 -1
  58. package/dist/resolvers.umd.js.map +1 -1
  59. package/dist/toNestErrors.d.ts +1 -6
  60. package/dist/validateFieldsNatively.d.ts +1 -1
  61. package/effect-ts/dist/effect-ts.js +1 -1
  62. package/effect-ts/dist/effect-ts.js.map +1 -1
  63. package/effect-ts/dist/effect-ts.mjs +1 -1
  64. package/effect-ts/dist/effect-ts.modern.mjs +1 -1
  65. package/effect-ts/dist/effect-ts.modern.mjs.map +1 -1
  66. package/effect-ts/dist/effect-ts.module.js +1 -1
  67. package/effect-ts/dist/effect-ts.module.js.map +1 -1
  68. package/effect-ts/dist/effect-ts.umd.js +1 -1
  69. package/effect-ts/dist/effect-ts.umd.js.map +1 -1
  70. package/effect-ts/src/__tests__/Form-native-validation.tsx +2 -2
  71. package/effect-ts/src/__tests__/Form.tsx +2 -2
  72. package/effect-ts/src/__tests__/__snapshots__/effect-ts.ts.snap +2 -2
  73. package/effect-ts/src/__tests__/effect-ts.ts +1 -1
  74. package/effect-ts/src/effect-ts.ts +1 -1
  75. package/fluentvalidation-ts/dist/fluentvalidation-ts.d.ts +4 -0
  76. package/fluentvalidation-ts/dist/fluentvalidation-ts.js +2 -0
  77. package/fluentvalidation-ts/dist/fluentvalidation-ts.js.map +1 -0
  78. package/fluentvalidation-ts/dist/fluentvalidation-ts.mjs +2 -0
  79. package/fluentvalidation-ts/dist/fluentvalidation-ts.modern.mjs +2 -0
  80. package/fluentvalidation-ts/dist/fluentvalidation-ts.modern.mjs.map +1 -0
  81. package/fluentvalidation-ts/dist/fluentvalidation-ts.module.js +2 -0
  82. package/fluentvalidation-ts/dist/fluentvalidation-ts.module.js.map +1 -0
  83. package/fluentvalidation-ts/dist/fluentvalidation-ts.umd.js +2 -0
  84. package/fluentvalidation-ts/dist/fluentvalidation-ts.umd.js.map +1 -0
  85. package/fluentvalidation-ts/dist/index.d.ts +1 -0
  86. package/fluentvalidation-ts/package.json +18 -0
  87. package/fluentvalidation-ts/src/__tests__/Form-native-validation.tsx +88 -0
  88. package/fluentvalidation-ts/src/__tests__/Form.tsx +63 -0
  89. package/fluentvalidation-ts/src/__tests__/__fixtures__/data.ts +121 -0
  90. package/fluentvalidation-ts/src/__tests__/__snapshots__/fluentvalidation-ts.ts.snap +129 -0
  91. package/fluentvalidation-ts/src/__tests__/fluentvalidation-ts.ts +113 -0
  92. package/fluentvalidation-ts/src/fluentvalidation-ts.ts +102 -0
  93. package/fluentvalidation-ts/src/index.ts +1 -0
  94. package/io-ts/dist/errorsToRecord.d.ts +0 -1
  95. package/io-ts/dist/io-ts.js +1 -1
  96. package/io-ts/dist/io-ts.js.map +1 -1
  97. package/io-ts/dist/io-ts.mjs +1 -1
  98. package/io-ts/dist/io-ts.modern.mjs +1 -1
  99. package/io-ts/dist/io-ts.modern.mjs.map +1 -1
  100. package/io-ts/dist/io-ts.module.js +1 -1
  101. package/io-ts/dist/io-ts.module.js.map +1 -1
  102. package/io-ts/dist/io-ts.umd.js +1 -1
  103. package/io-ts/dist/io-ts.umd.js.map +1 -1
  104. package/io-ts/src/__tests__/Form-native-validation.tsx +2 -2
  105. package/io-ts/src/__tests__/Form.tsx +2 -2
  106. package/io-ts/src/__tests__/__snapshots__/io-ts.ts.snap +9 -9
  107. package/io-ts/src/__tests__/errorsToRecord.ts +29 -19
  108. package/io-ts/src/__tests__/io-ts.ts +1 -1
  109. package/io-ts/src/errorsToRecord.ts +19 -10
  110. package/io-ts/src/io-ts.ts +1 -1
  111. package/joi/dist/joi.js +1 -1
  112. package/joi/dist/joi.js.map +1 -1
  113. package/joi/dist/joi.mjs +1 -1
  114. package/joi/dist/joi.modern.mjs +1 -1
  115. package/joi/dist/joi.modern.mjs.map +1 -1
  116. package/joi/dist/joi.module.js +1 -1
  117. package/joi/dist/joi.module.js.map +1 -1
  118. package/joi/dist/joi.umd.js +1 -1
  119. package/joi/dist/joi.umd.js.map +1 -1
  120. package/joi/dist/types.d.ts +1 -1
  121. package/joi/src/__tests__/Form-native-validation.tsx +2 -2
  122. package/joi/src/__tests__/Form.tsx +2 -2
  123. package/joi/src/__tests__/__snapshots__/joi.ts.snap +56 -56
  124. package/joi/src/__tests__/joi.ts +1 -1
  125. package/joi/src/joi.ts +1 -1
  126. package/joi/src/types.ts +1 -5
  127. package/nope/dist/nope.js.map +1 -1
  128. package/nope/dist/nope.modern.mjs.map +1 -1
  129. package/nope/dist/nope.module.js.map +1 -1
  130. package/nope/dist/nope.umd.js.map +1 -1
  131. package/nope/dist/types.d.ts +1 -1
  132. package/nope/src/__tests__/Form-native-validation.tsx +2 -2
  133. package/nope/src/__tests__/Form.tsx +2 -2
  134. package/nope/src/__tests__/__fixtures__/data.ts +1 -1
  135. package/nope/src/__tests__/nope.ts +1 -1
  136. package/nope/src/nope.ts +1 -1
  137. package/nope/src/types.ts +2 -2
  138. package/package.json +69 -54
  139. package/superstruct/dist/superstruct.js.map +1 -1
  140. package/superstruct/dist/superstruct.modern.mjs.map +1 -1
  141. package/superstruct/dist/superstruct.module.js.map +1 -1
  142. package/superstruct/dist/superstruct.umd.js.map +1 -1
  143. package/superstruct/dist/types.d.ts +1 -1
  144. package/superstruct/src/__tests__/Form-native-validation.tsx +2 -2
  145. package/superstruct/src/__tests__/Form.tsx +2 -2
  146. package/superstruct/src/__tests__/__fixtures__/data.ts +8 -8
  147. package/superstruct/src/__tests__/__snapshots__/superstruct.ts.snap +4 -4
  148. package/superstruct/src/__tests__/superstruct.ts +1 -1
  149. package/superstruct/src/superstruct.ts +1 -1
  150. package/superstruct/src/types.ts +1 -1
  151. package/typanion/dist/typanion.js.map +1 -1
  152. package/typanion/dist/typanion.modern.mjs.map +1 -1
  153. package/typanion/dist/typanion.module.js.map +1 -1
  154. package/typanion/dist/typanion.umd.js.map +1 -1
  155. package/typanion/dist/types.d.ts +1 -1
  156. package/typanion/src/__tests__/Form-native-validation.tsx +1 -1
  157. package/typanion/src/__tests__/Form.tsx +1 -1
  158. package/typanion/src/__tests__/__fixtures__/data.ts +12 -7
  159. package/typanion/src/__tests__/__snapshots__/typanion.ts.snap +4 -4
  160. package/typanion/src/__tests__/typanion.ts +1 -1
  161. package/typanion/src/typanion.ts +1 -1
  162. package/typanion/src/types.ts +4 -4
  163. package/typebox/dist/typebox.js +1 -1
  164. package/typebox/dist/typebox.js.map +1 -1
  165. package/typebox/dist/typebox.mjs +1 -1
  166. package/typebox/dist/typebox.modern.mjs +1 -1
  167. package/typebox/dist/typebox.modern.mjs.map +1 -1
  168. package/typebox/dist/typebox.module.js +1 -1
  169. package/typebox/dist/typebox.module.js.map +1 -1
  170. package/typebox/dist/typebox.umd.js +1 -1
  171. package/typebox/dist/typebox.umd.js.map +1 -1
  172. package/typebox/dist/types.d.ts +3 -2
  173. package/typebox/src/__tests__/Form-compiler.tsx +57 -0
  174. package/typebox/src/__tests__/Form-native-validation-compiler.tsx +86 -0
  175. package/typebox/src/__tests__/Form-native-validation.tsx +4 -4
  176. package/typebox/src/__tests__/Form.tsx +3 -3
  177. package/typebox/src/__tests__/__fixtures__/data.ts +6 -2
  178. package/typebox/src/__tests__/__snapshots__/typebox-compiler.ts.snap +188 -0
  179. package/typebox/src/__tests__/__snapshots__/typebox.ts.snap +13 -13
  180. package/typebox/src/__tests__/typebox-compiler.ts +37 -0
  181. package/typebox/src/__tests__/typebox.ts +1 -1
  182. package/typebox/src/typebox.ts +8 -3
  183. package/typebox/src/types.ts +3 -2
  184. package/typeschema/dist/index.d.ts +2 -0
  185. package/typeschema/dist/types.d.ts +9 -0
  186. package/typeschema/dist/typeschema.d.ts +2 -0
  187. package/typeschema/dist/typeschema.js +2 -0
  188. package/typeschema/dist/typeschema.js.map +1 -0
  189. package/typeschema/dist/typeschema.mjs +2 -0
  190. package/typeschema/dist/typeschema.modern.mjs +2 -0
  191. package/typeschema/dist/typeschema.modern.mjs.map +1 -0
  192. package/typeschema/dist/typeschema.module.js +2 -0
  193. package/typeschema/dist/typeschema.module.js.map +1 -0
  194. package/typeschema/dist/typeschema.umd.js +2 -0
  195. package/typeschema/dist/typeschema.umd.js.map +1 -0
  196. package/typeschema/package.json +18 -0
  197. package/typeschema/src/__tests__/Form-native-validation.tsx +82 -0
  198. package/typeschema/src/__tests__/Form.tsx +53 -0
  199. package/typeschema/src/__tests__/__fixtures__/data.ts +88 -0
  200. package/typeschema/src/__tests__/__snapshots__/typeschema.ts.snap +225 -0
  201. package/typeschema/src/__tests__/typeschema.ts +70 -0
  202. package/typeschema/src/index.ts +2 -0
  203. package/typeschema/src/types.ts +18 -0
  204. package/typeschema/src/typeschema.ts +70 -0
  205. package/valibot/dist/types.d.ts +1 -1
  206. package/valibot/dist/valibot.js +1 -1
  207. package/valibot/dist/valibot.js.map +1 -1
  208. package/valibot/dist/valibot.mjs +1 -1
  209. package/valibot/dist/valibot.modern.mjs +1 -1
  210. package/valibot/dist/valibot.modern.mjs.map +1 -1
  211. package/valibot/dist/valibot.module.js +1 -1
  212. package/valibot/dist/valibot.module.js.map +1 -1
  213. package/valibot/dist/valibot.umd.js +1 -1
  214. package/valibot/dist/valibot.umd.js.map +1 -1
  215. package/valibot/src/__tests__/Form-native-validation.tsx +2 -2
  216. package/valibot/src/__tests__/Form.tsx +1 -1
  217. package/valibot/src/__tests__/valibot.ts +4 -4
  218. package/valibot/src/types.ts +1 -1
  219. package/valibot/src/valibot.ts +12 -6
  220. package/vest/dist/types.d.ts +2 -2
  221. package/vest/dist/vest.js.map +1 -1
  222. package/vest/dist/vest.modern.mjs.map +1 -1
  223. package/vest/dist/vest.module.js.map +1 -1
  224. package/vest/dist/vest.umd.js.map +1 -1
  225. package/vest/src/__tests__/Form-native-validation.tsx +1 -1
  226. package/vest/src/__tests__/Form.tsx +1 -1
  227. package/vest/src/__tests__/__snapshots__/vest.ts.snap +0 -6
  228. package/vest/src/__tests__/vest.ts +14 -8
  229. package/vest/src/types.ts +11 -4
  230. package/vest/src/vest.ts +1 -1
  231. package/vine/dist/types.d.ts +1 -1
  232. package/vine/dist/vine.js +1 -1
  233. package/vine/dist/vine.js.map +1 -1
  234. package/vine/dist/vine.mjs +1 -1
  235. package/vine/dist/vine.modern.mjs +1 -1
  236. package/vine/dist/vine.modern.mjs.map +1 -1
  237. package/vine/dist/vine.module.js +1 -1
  238. package/vine/dist/vine.module.js.map +1 -1
  239. package/vine/dist/vine.umd.js +1 -1
  240. package/vine/dist/vine.umd.js.map +1 -1
  241. package/vine/src/__tests__/Form-native-validation.tsx +9 -5
  242. package/vine/src/__tests__/Form.tsx +9 -5
  243. package/vine/src/__tests__/__fixtures__/data.ts +4 -2
  244. package/vine/src/__tests__/vine.ts +1 -1
  245. package/vine/src/types.ts +1 -1
  246. package/vine/src/vine.ts +10 -8
  247. package/yup/dist/yup.d.ts +1 -1
  248. package/yup/dist/yup.js.map +1 -1
  249. package/yup/dist/yup.modern.mjs.map +1 -1
  250. package/yup/dist/yup.module.js.map +1 -1
  251. package/yup/dist/yup.umd.js.map +1 -1
  252. package/yup/src/__tests__/Form-native-validation.tsx +1 -1
  253. package/yup/src/__tests__/Form.tsx +1 -1
  254. package/yup/src/__tests__/__snapshots__/yup.ts.snap +13 -13
  255. package/yup/src/__tests__/yup.ts +9 -7
  256. package/yup/src/yup.ts +2 -2
  257. package/zod/dist/types.d.ts +1 -1
  258. package/zod/dist/zod.js +1 -1
  259. package/zod/dist/zod.js.map +1 -1
  260. package/zod/dist/zod.mjs +1 -1
  261. package/zod/dist/zod.modern.mjs +1 -1
  262. package/zod/dist/zod.modern.mjs.map +1 -1
  263. package/zod/dist/zod.module.js +1 -1
  264. package/zod/dist/zod.module.js.map +1 -1
  265. package/zod/dist/zod.umd.js +1 -1
  266. package/zod/dist/zod.umd.js.map +1 -1
  267. package/zod/src/__tests__/Form-native-validation.tsx +2 -2
  268. package/zod/src/__tests__/Form.tsx +1 -1
  269. package/zod/src/__tests__/zod.ts +1 -1
  270. package/zod/src/types.ts +1 -1
  271. package/zod/src/zod.ts +4 -3
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hookform/resolvers",
3
3
  "amdName": "hookformResolvers",
4
- "version": "3.7.0",
4
+ "version": "3.9.0",
5
5
  "description": "React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types, TypeBox, arktype, Typanion, Effect-TS and VineJS",
6
6
  "main": "dist/resolvers.js",
7
7
  "module": "dist/resolvers.module.js",
@@ -99,6 +99,12 @@
99
99
  "import": "./valibot/dist/valibot.mjs",
100
100
  "require": "./valibot/dist/valibot.js"
101
101
  },
102
+ "./typeschema": {
103
+ "types": "./typeschema/dist/index.d.ts",
104
+ "umd": "./typeschema/dist/typeschema.umd.js",
105
+ "import": "./typeschema/dist/typeschema.mjs",
106
+ "require": "./typeschema/dist/typeschema.js"
107
+ },
102
108
  "./effect-ts": {
103
109
  "types": "./effect-ts/dist/index.d.ts",
104
110
  "umd": "./effect-ts/dist/effect-ts.umd.js",
@@ -111,6 +117,12 @@
111
117
  "import": "./vine/dist/vine.mjs",
112
118
  "require": "./vine/dist/vine.js"
113
119
  },
120
+ "./fluentvalidation-ts": {
121
+ "types": "./fluentvalidation-ts/dist/index.d.ts",
122
+ "umd": "./fluentvalidation-ts/dist/fluentvalidation-ts.umd.js",
123
+ "import": "./fluentvalidation-ts/dist/fluentvalidation-ts.mjs",
124
+ "require": "./fluentvalidation-ts/dist/fluentvalidation-ts.js"
125
+ },
114
126
  "./package.json": "./package.json",
115
127
  "./*": "./*"
116
128
  },
@@ -158,18 +170,27 @@
158
170
  "valibot/package.json",
159
171
  "valibot/src",
160
172
  "valibot/dist",
173
+ "typeschema/package.json",
174
+ "typeschema/src",
175
+ "typeschema/dist",
176
+ "effect-ts/package.json",
177
+ "effect-ts/src",
178
+ "effect-ts/dist",
161
179
  "effect-ts/package.json",
162
180
  "effect-ts/src",
163
181
  "effect-ts/dist",
164
182
  "vine/package.json",
165
183
  "vine/src",
166
- "vine/dist"
184
+ "vine/dist",
185
+ "fluentvalidation-ts/package.json",
186
+ "fluentvalidation-ts/src",
187
+ "fluentvalidation-ts/dist"
167
188
  ],
168
189
  "publishConfig": {
169
190
  "access": "public"
170
191
  },
171
192
  "scripts": {
172
- "prepare": "run-s build:src build && check-export-map && husky install",
193
+ "prepare": "run-s build:src",
173
194
  "build": "cross-env npm-run-all --parallel 'build:*'",
174
195
  "build:src": "microbundle build --globals react-hook-form=ReactHookForm",
175
196
  "build:zod": "microbundle --cwd zod --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
@@ -183,13 +204,15 @@
183
204
  "build:computed-types": "microbundle --cwd computed-types --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
184
205
  "build:typanion": "microbundle --cwd typanion --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
185
206
  "build:ajv": "microbundle --cwd ajv --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
186
- "build:typebox": "microbundle --cwd typebox --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm,@sinclair/typebox/value=value",
207
+ "build:typebox": "microbundle --cwd typebox --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm,@sinclair/typebox/value=value,@sinclair/typebox/compiler=compiler",
187
208
  "build:arktype": "microbundle --cwd arktype --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
188
209
  "build:valibot": "microbundle --cwd valibot --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
189
- "build:effect-ts": "microbundle --cwd effect-ts --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm,@effect/schema=EffectSchema,@effect/schema/AST=EffectSchemaAST,@effect/schema/ArrayFormatter=EffectSchemaArrayFormatter",
210
+ "build:typeschema": "microbundle --cwd typeschema --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm,@typeschema/main=main",
211
+ "build:effect-ts": "microbundle --cwd effect-ts --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm,@effect/schema=EffectSchema,@effect/schema/AST=EffectSchemaAST,@effect/schema/ArrayFormatter=EffectSchemaArrayFormatter,@effect/schema/ParseResult=EffectSchemaArrayFormatter,effect/Effect=Effect",
190
212
  "build:vine": "microbundle --cwd vine --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm,@vinejs/vine=vine",
191
- "postbuild": "node ./config/node-13-exports.js",
192
- "lint": "eslint . --ext .ts,.js --ignore-path .gitignore",
213
+ "build:fluentvalidation-ts": "microbundle --cwd fluentvalidation-ts --globals @hookform/resolvers=hookformResolvers,react-hook-form=ReactHookForm",
214
+ "postbuild": "node ./config/node-13-exports.js && check-export-map",
215
+ "lint": "bunx @biomejs/biome check --write --vcs-use-ignore-file=true .",
193
216
  "lint:types": "tsc",
194
217
  "test": "vitest run",
195
218
  "test:watch": "vitest watch",
@@ -218,7 +241,9 @@
218
241
  "ajv",
219
242
  "TypeBox",
220
243
  "arktype",
221
- "vine"
244
+ "typeschema",
245
+ "vine",
246
+ "fluentvalidation-ts"
222
247
  ],
223
248
  "repository": {
224
249
  "type": "git",
@@ -231,66 +256,56 @@
231
256
  },
232
257
  "homepage": "https://react-hook-form.com",
233
258
  "devDependencies": {
234
- "@effect/schema": "^0.66.14",
235
- "@sinclair/typebox": "^0.31.1",
236
- "@testing-library/dom": "^9.3.1",
237
- "@testing-library/jest-dom": "^6.0.1",
238
- "@testing-library/react": "^14.0.0",
239
- "@testing-library/user-event": "^14.4.3",
240
- "@types/node": "^20.5.2",
241
- "@types/react": "^18.2.20",
242
- "@typescript-eslint/eslint-plugin": "^6.4.1",
243
- "@typescript-eslint/parser": "^6.4.1",
244
- "@vinejs/vine": "^2.0.0",
245
- "@vitejs/plugin-react": "^4.0.4",
246
- "ajv": "^8.12.0",
259
+ "@effect/schema": "^0.68.17",
260
+ "@sinclair/typebox": "^0.32.34",
261
+ "@testing-library/dom": "^10.3.1",
262
+ "@testing-library/jest-dom": "^6.4.6",
263
+ "@testing-library/react": "^16.0.0",
264
+ "@testing-library/user-event": "^14.5.2",
265
+ "@types/node": "^20.14.9",
266
+ "@types/react": "^18.3.3",
267
+ "@typeschema/core": "^0.13.2",
268
+ "@typeschema/main": "^0.13.10",
269
+ "@typeschema/zod": "^0.13.3",
270
+ "@vinejs/vine": "^2.1.0",
271
+ "@vitejs/plugin-react": "^4.3.1",
272
+ "ajv": "^8.16.0",
247
273
  "ajv-errors": "^3.0.0",
248
- "arktype": "2.0.0-dev.14",
249
- "check-export-map": "^1.3.0",
274
+ "arktype": "2.0.0-dev.26",
275
+ "check-export-map": "^1.3.1",
250
276
  "class-transformer": "^0.5.1",
251
- "class-validator": "^0.14.0",
277
+ "class-validator": "^0.14.1",
252
278
  "computed-types": "^1.11.2",
253
279
  "cross-env": "^7.0.3",
254
- "effect": "^3.1.2",
255
- "eslint": "^8.47.0",
256
- "eslint-config-prettier": "^9.0.0",
257
- "fp-ts": "^2.16.1",
258
- "husky": "^8.0.3",
259
- "io-ts": "^2.2.20",
280
+ "effect": "^3.4.7",
281
+ "fp-ts": "^2.16.7",
282
+ "io-ts": "^2.2.21",
260
283
  "io-ts-types": "^0.5.19",
261
- "joi": "^17.9.2",
262
- "jsdom": "^22.1.0",
263
- "lint-staged": "^14.0.1",
284
+ "joi": "^17.13.3",
285
+ "jsdom": "^24.1.0",
286
+ "lefthook": "^1.6.18",
264
287
  "microbundle": "^0.15.1",
265
288
  "monocle-ts": "^2.3.13",
266
289
  "newtype-ts": "^0.3.5",
267
290
  "nope-validator": "^1.0.4",
268
291
  "npm-run-all": "^4.1.5",
269
- "prettier": "^3.0.2",
270
- "react": "^18.2.0",
271
- "react-dom": "^18.2.0",
272
- "react-hook-form": "^7.45.4",
273
- "reflect-metadata": "^0.1.13",
274
- "superstruct": "^1.0.3",
292
+ "react": "^18.3.1",
293
+ "react-dom": "^18.3.1",
294
+ "react-hook-form": "^7.52.1",
295
+ "reflect-metadata": "^0.2.2",
296
+ "superstruct": "^1.0.4",
275
297
  "typanion": "^3.14.0",
276
- "typescript": "^5.1.6",
298
+ "typescript": "^5.5.3",
277
299
  "valibot": "0.35.0",
278
- "vest": "^4.6.11",
279
- "vite": "^4.4.9",
280
- "vite-tsconfig-paths": "^4.2.0",
281
- "vitest": "^0.34.2",
282
- "yup": "^1.2.0",
283
- "zod": "^3.22.3"
300
+ "vest": "^5.3.0",
301
+ "vite": "^5.3.3",
302
+ "vite-tsconfig-paths": "^4.3.2",
303
+ "vitest": "^1.6.0",
304
+ "yup": "^1.4.0",
305
+ "zod": "^3.23.8",
306
+ "fluentvalidation-ts": "^3.2.0"
284
307
  },
285
308
  "peerDependencies": {
286
309
  "react-hook-form": "^7.0.0"
287
- },
288
- "lint-staged": {
289
- "*.{js,ts}": [
290
- "pnpm lint --fix"
291
- ],
292
- "*.{md,json,yml}": [
293
- "prettier --write"
294
- ]
295
310
  }
296
311
  }
@@ -1 +1 @@
1
- {"version":3,"file":"superstruct.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"0FAiBE,SAACA,EAAQC,EAAeC,GACxB,YADwBA,IAAAA,IAAAA,EAAkB,CAAA,GAC1C,SAACC,EAAQC,EAAGC,GACV,IAbsBC,EAahBC,EAASC,EAAQA,SAACL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAE,EACVM,OAAQC,EAAAA,cAlBUJ,EAkBoBC,EAAO,GAjBnDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAAA,uBAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASI,EAAO,GAC9CE,OAAQ,CAAA,GAEZ,CAAC"}
1
+ {"version":3,"file":"superstruct.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"0FAiBE,SAACA,EAAQC,EAAeC,GACxB,YADwBA,IAAAA,IAAAA,EAAkB,CAAA,GAC1C,SAACC,EAAQC,EAAGC,GACV,IAbsBC,EAahBC,EAASC,EAAQA,SAACL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAE,EACVM,OAAQC,EAAAA,cAlBUJ,EAkBoBC,EAAO,GAjBnDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAAA,uBAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASI,EAAO,GAC9CE,OAAQ,CAAA,GAEZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"superstruct.modern.mjs","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["superstructResolver","schema","schemaOptions","resolverOptions","values","_","options","result","validate","errors","toNestErrors","error","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"sHAMA,MAUaA,EACXA,CAACC,EAAQC,EAAeC,EAAkB,CAAE,IAC5C,CAACC,EAAQC,EAAGC,KACV,MAAMC,EAASC,EAASJ,EAAQH,EAAQC,GAExC,OAAIK,EAAO,GACF,CACLH,OAAQ,CAAA,EACRK,OAAQC,GAlBUC,EAkBoBJ,EAAO,GAjBnDI,EAAMC,WAAWC,OACf,CAACC,EAAUH,KACRG,EAASH,EAAMI,KAAKC,KAAK,MAAQ,CAChCC,QAASN,EAAMM,QACfC,KAAMP,EAAMO,QACRJ,EACR,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASG,EAAO,GAC9CE,OAAQ,KA1BYE"}
1
+ {"version":3,"file":"superstruct.modern.mjs","sources":["../src/superstruct.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["superstructResolver","schema","schemaOptions","resolverOptions","values","_","options","result","validate","errors","toNestErrors","error","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"sHAMA,MAUaA,EACXA,CAACC,EAAQC,EAAeC,EAAkB,CAAE,IAC5C,CAACC,EAAQC,EAAGC,KACV,MAAMC,EAASC,EAASJ,EAAQH,EAAQC,GAExC,OAAIK,EAAO,GACF,CACLH,OAAQ,CAAA,EACRK,OAAQC,GAlBUC,EAkBoBJ,EAAO,GAjBnDI,EAAMC,WAAWC,OACf,CAACC,EAAUH,KACRG,EAASH,EAAMI,KAAKC,KAAK,MAAQ,CAChCC,QAASN,EAAMM,QACfC,KAAMP,EAAMO,QACRJ,EACR,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASG,EAAO,GAC9CE,OAAQ,KA1BYE"}
@@ -1 +1 @@
1
- {"version":3,"file":"superstruct.module.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["superstructResolver","schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"sHAMA,IAUaA,EACX,SAACC,EAAQC,EAAeC,GACxB,YADwBA,IAAAA,IAAAA,EAAkB,CAAA,GAC1C,SAACC,EAAQC,EAAGC,GACV,IAbsBC,EAahBC,EAASC,EAASL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAE,EACVM,OAAQC,GAlBUJ,EAkBoBC,EAAO,GAjBnDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASI,EAAO,GAC9CE,OAAQ,CAAA,GAEZ,CAAC"}
1
+ {"version":3,"file":"superstruct.module.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["superstructResolver","schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"sHAMA,IAUaA,EACX,SAACC,EAAQC,EAAeC,GACxB,YADwBA,IAAAA,IAAAA,EAAkB,CAAA,GAC1C,SAACC,EAAQC,EAAGC,GACV,IAbsBC,EAahBC,EAASC,EAASL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAE,EACVM,OAAQC,GAlBUJ,EAkBoBC,EAAO,GAjBnDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASI,EAAO,GAC9CE,OAAQ,CAAA,GAEZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"superstruct.umd.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { FieldError } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"4YAiBE,SAACA,EAAQC,EAAeC,GACxB,YADwBA,IAAAA,IAAAA,EAAkB,CAAA,GAC1C,SAACC,EAAQC,EAAGC,GACV,IAbsBC,EAahBC,EAASC,EAAQA,SAACL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAE,EACVM,OAAQC,EAAAA,cAlBUJ,EAkBoBC,EAAO,GAjBnDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAAA,uBAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASI,EAAO,GAC9CE,OAAQ,CAAA,GAEZ,CAAC"}
1
+ {"version":3,"file":"superstruct.umd.js","sources":["../src/superstruct.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError } from 'react-hook-form';\n\nimport { StructError, validate } from 'superstruct';\nimport { Resolver } from './types';\n\nconst parseErrorSchema = (error: StructError) =>\n error.failures().reduce<Record<string, FieldError>>(\n (previous, error) =>\n (previous[error.path.join('.')] = {\n message: error.message,\n type: error.type,\n }) && previous,\n {},\n );\n\nexport const superstructResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n (values, _, options) => {\n const result = validate(values, schema, schemaOptions);\n\n if (result[0]) {\n return {\n values: {},\n errors: toNestErrors(parseErrorSchema(result[0]), options),\n };\n }\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? values : result[1],\n errors: {},\n };\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","_","options","error","result","validate","errors","toNestErrors","failures","reduce","previous","path","join","message","type","shouldUseNativeValidation","validateFieldsNatively","raw"],"mappings":"4YAiBE,SAACA,EAAQC,EAAeC,GACxB,YADwBA,IAAAA,IAAAA,EAAkB,CAAA,GAC1C,SAACC,EAAQC,EAAGC,GACV,IAbsBC,EAahBC,EAASC,EAAQA,SAACL,EAAQH,EAAQC,GAExC,OAAIM,EAAO,GACF,CACLJ,OAAQ,CAAE,EACVM,OAAQC,EAAAA,cAlBUJ,EAkBoBC,EAAO,GAjBnDD,EAAMK,WAAWC,OACf,SAACC,EAAUP,GACT,OAACO,EAASP,EAAMQ,KAAKC,KAAK,MAAQ,CAChCC,QAASV,EAAMU,QACfC,KAAMX,EAAMW,QACRJ,CAAQ,EAChB,CAAA,IAWsDR,KAItDA,EAAQa,2BAA6BC,EAAAA,uBAAuB,CAAE,EAAEd,GAEzD,CACLF,OAAQD,EAAgBkB,IAAMjB,EAASI,EAAO,GAC9CE,OAAQ,CAAA,GAEZ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
2
- import { validate, Struct } from 'superstruct';
2
+ import { Struct, validate } from 'superstruct';
3
3
  type Options = Parameters<typeof validate>[2];
4
4
  export type Resolver = <T extends Struct<any, any>>(schema: T, options?: Options, factoryOptions?: {
5
5
  /**
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import user from '@testing-library/user-event';
3
+ import React from 'react';
4
4
  import { useForm } from 'react-hook-form';
5
- import { object, string, Infer, size } from 'superstruct';
5
+ import { Infer, object, size, string } from 'superstruct';
6
6
  import { superstructResolver } from '..';
7
7
 
8
8
  const schema = object({
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import user from '@testing-library/user-event';
3
+ import React from 'react';
4
4
  import { useForm } from 'react-hook-form';
5
- import { object, string, Infer, size } from 'superstruct';
5
+ import { Infer, object, size, string } from 'superstruct';
6
6
  import { superstructResolver } from '..';
7
7
 
8
8
  const schema = object({
@@ -1,18 +1,18 @@
1
1
  import { Field, InternalFieldName } from 'react-hook-form';
2
2
  import {
3
- object,
3
+ Infer,
4
+ array,
5
+ boolean,
6
+ define,
7
+ max,
8
+ min,
4
9
  number,
5
- string,
10
+ object,
6
11
  optional,
7
12
  pattern,
8
13
  size,
14
+ string,
9
15
  union,
10
- min,
11
- max,
12
- Infer,
13
- define,
14
- array,
15
- boolean,
16
16
  } from 'superstruct';
17
17
 
18
18
  const Password = define(
@@ -4,12 +4,12 @@ exports[`superstructResolver > should return a single error from superstructReso
4
4
  {
5
5
  "errors": {
6
6
  "birthYear": {
7
- "message": "Expected a number, but received: \\"birthYear\\"",
7
+ "message": "Expected a number, but received: "birthYear"",
8
8
  "ref": undefined,
9
9
  "type": "number",
10
10
  },
11
11
  "email": {
12
- "message": "Expected a string matching \`/^[\\\\w-\\\\.]+@([\\\\w-]+\\\\.)+[\\\\w-]{2,4}$/\` but received \\"\\"",
12
+ "message": "Expected a string matching \`/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/\` but received """,
13
13
  "ref": {
14
14
  "name": "email",
15
15
  },
@@ -23,7 +23,7 @@ exports[`superstructResolver > should return a single error from superstructReso
23
23
  "like": [
24
24
  {
25
25
  "id": {
26
- "message": "Expected a number, but received: \\"z\\"",
26
+ "message": "Expected a number, but received: "z"",
27
27
  "ref": undefined,
28
28
  "type": "number",
29
29
  },
@@ -35,7 +35,7 @@ exports[`superstructResolver > should return a single error from superstructReso
35
35
  },
36
36
  ],
37
37
  "password": {
38
- "message": "Expected a string matching \`/^[a-zA-Z0-9]{3,30}/\` but received \\"___\\"",
38
+ "message": "Expected a string matching \`/^[a-zA-Z0-9]{3,30}/\` but received "___"",
39
39
  "ref": {
40
40
  "name": "password",
41
41
  },
@@ -1,5 +1,5 @@
1
1
  import { superstructResolver } from '..';
2
- import { invalidData, schema, validData, fields } from './__fixtures__/data';
2
+ import { fields, invalidData, schema, validData } from './__fixtures__/data';
3
3
 
4
4
  const shouldUseNativeValidation = false;
5
5
 
@@ -1,5 +1,5 @@
1
- import { FieldError } from 'react-hook-form';
2
1
  import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';
2
+ import { FieldError } from 'react-hook-form';
3
3
 
4
4
  import { StructError, validate } from 'superstruct';
5
5
  import { Resolver } from './types';
@@ -1,5 +1,5 @@
1
1
  import { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
2
- import { validate, Struct } from 'superstruct';
2
+ import { Struct, validate } from 'superstruct';
3
3
 
4
4
  type Options = Parameters<typeof validate>[2];
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"typanion.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldError, FieldErrors } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"8DAoBE,SAACA,EAAWC,eAAgB,IAAhBA,IAAAA,EAAmB,CAAE,GAChCC,SAAAA,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BU,SAACD,EAAkBC,GACrC,YADqCA,IAAAA,IAAAA,EAA4B,CAAE,GAC5DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,QAAAA,GAGKN,CACT,EAAGF,EACL,CAgByBU,CAAYf,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,yBAAuBZ,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,CAAA,IAGpB,CAAEP,OAAQ,GAAIO,OAAQc,EAAYA,aAACb,EAAcN,GAC1D,CAAC"}
1
+ {"version":3,"file":"typanion.js","sources":["../src/typanion.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"8DAoBE,SAACA,EAAWC,eAAgB,IAAhBA,IAAAA,EAAmB,CAAE,GAChCC,SAAAA,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BU,SAACD,EAAkBC,GACrC,YADqCA,IAAAA,IAAAA,EAA4B,CAAE,GAC5DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,QAAAA,GAGKN,CACT,EAAGF,EACL,CAgByBU,CAAYf,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,yBAAuBZ,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,CAAA,IAGpB,CAAEP,OAAQ,GAAIO,OAAQc,EAAYA,aAACb,EAAcN,GAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"typanion.modern.mjs","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldError, FieldErrors } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["typanionResolver","validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","parseErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"+EAIA,MAeaA,EACXA,CAACC,EAAWC,EAAmB,CAAE,IACjC,CAACC,EAAQC,EAAGC,KACV,MAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BUC,EAACF,EAAkBC,EAA4B,CAAA,IAC1DD,EAAOG,OAAO,CAACC,EAAKC,KACzB,MAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,WAGKN,GACNH,GAiBoBC,CAAYN,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,EAAuBZ,EAAcN,GAEhC,CAAEF,SAAQO,OAAQ,KAGpB,CAAEP,OAAQ,CAAA,EAAIO,OAAQc,EAAab,EAAcN"}
1
+ {"version":3,"file":"typanion.modern.mjs","sources":["../src/typanion.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["typanionResolver","validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","parseErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"+EAIA,MAeaA,EACXA,CAACC,EAAWC,EAAmB,CAAE,IACjC,CAACC,EAAQC,EAAGC,KACV,MAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BUC,EAACF,EAAkBC,EAA4B,CAAA,IAC1DD,EAAOG,OAAO,CAACC,EAAKC,KACzB,MAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,WAGKN,GACNH,GAiBoBC,CAAYN,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,EAAuBZ,EAAcN,GAEhC,CAAEF,SAAQO,OAAQ,KAGpB,CAAEP,OAAQ,CAAA,EAAIO,OAAQc,EAAab,EAAcN"}
@@ -1 +1 @@
1
- {"version":3,"file":"typanion.module.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldError, FieldErrors } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["typanionResolver","validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"+EAIA,IAeaA,EACX,SAACC,EAAWC,eAAgB,IAAhBA,IAAAA,EAAmB,CAAE,GAChCC,SAAAA,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BU,SAACD,EAAkBC,GACrC,YADqCA,IAAAA,IAAAA,EAA4B,CAAE,GAC5DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,QAAAA,GAGKN,CACT,EAAGF,EACL,CAgByBU,CAAYf,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,EAAuBZ,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,CAAA,IAGpB,CAAEP,OAAQ,GAAIO,OAAQc,EAAab,EAAcN,GAC1D,CAAC"}
1
+ {"version":3,"file":"typanion.module.js","sources":["../src/typanion.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["typanionResolver","validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"+EAIA,IAeaA,EACX,SAACC,EAAWC,eAAgB,IAAhBA,IAAAA,EAAmB,CAAE,GAChCC,SAAAA,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BU,SAACD,EAAkBC,GACrC,YADqCA,IAAAA,IAAAA,EAA4B,CAAE,GAC5DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,QAAAA,GAGKN,CACT,EAAGF,EACL,CAgByBU,CAAYf,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,EAAuBZ,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,CAAA,IAGpB,CAAEP,OAAQ,GAAIO,OAAQc,EAAab,EAAcN,GAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"typanion.umd.js","sources":["../src/typanion.ts"],"sourcesContent":["import type { FieldError, FieldErrors } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"iVAoBE,SAACA,EAAWC,eAAgB,IAAhBA,IAAAA,EAAmB,CAAE,GAChCC,SAAAA,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BU,SAACD,EAAkBC,GACrC,YADqCA,IAAAA,IAAAA,EAA4B,CAAE,GAC5DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,QAAAA,GAGKN,CACT,EAAGF,EACL,CAgByBU,CAAYf,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,yBAAuBZ,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,CAAA,IAGpB,CAAEP,OAAQ,GAAIO,OAAQc,EAAYA,aAACb,EAAcN,GAC1D,CAAC"}
1
+ {"version":3,"file":"typanion.umd.js","sources":["../src/typanion.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { FieldError, FieldErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\nconst parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {\n return errors.reduce((acc, error) => {\n const fieldIndex = error.indexOf(':');\n\n const field = error.slice(1, fieldIndex);\n const message = error.slice(fieldIndex + 1).trim();\n\n acc[field] = {\n message,\n } as FieldError;\n\n return acc;\n }, parsedErrors);\n};\n\nexport const typanionResolver: Resolver =\n (validator, validatorOptions = {}) =>\n (values, _, options) => {\n const rawErrors: string[] = [];\n const isValid = validator(\n values,\n Object.assign(\n {},\n {\n errors: rawErrors,\n },\n validatorOptions,\n ),\n );\n const parsedErrors = parseErrors(rawErrors);\n\n if (isValid) {\n options.shouldUseNativeValidation &&\n validateFieldsNatively(parsedErrors, options);\n\n return { values, errors: {} };\n }\n\n return { values: {}, errors: toNestErrors(parsedErrors, options) };\n };\n"],"names":["validator","validatorOptions","values","_","options","rawErrors","isValid","Object","assign","errors","parsedErrors","reduce","acc","error","fieldIndex","indexOf","field","slice","message","trim","parseErrors","shouldUseNativeValidation","validateFieldsNatively","toNestErrors"],"mappings":"iVAoBE,SAACA,EAAWC,eAAgB,IAAhBA,IAAAA,EAAmB,CAAE,GAChCC,SAAAA,EAAQC,EAAGC,GACV,IAAMC,EAAsB,GACtBC,EAAUN,EACdE,EACAK,OAAOC,OACL,GACA,CACEC,OAAQJ,GAEVJ,IAGES,EA7BU,SAACD,EAAkBC,GACrC,YADqCA,IAAAA,IAAAA,EAA4B,CAAE,GAC5DD,EAAOE,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAaD,EAAME,QAAQ,KAE3BC,EAAQH,EAAMI,MAAM,EAAGH,GACvBI,EAAUL,EAAMI,MAAMH,EAAa,GAAGK,OAM5C,OAJAP,EAAII,GAAS,CACXE,QAAAA,GAGKN,CACT,EAAGF,EACL,CAgByBU,CAAYf,GAEjC,OAAIC,GACFF,EAAQiB,2BACNC,yBAAuBZ,EAAcN,GAEhC,CAAEF,OAAAA,EAAQO,OAAQ,CAAA,IAGpB,CAAEP,OAAQ,GAAIO,OAAQc,EAAYA,aAACb,EAAcN,GAC1D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { FieldValues, ResolverOptions, ResolverResult } from 'react-hook-form';
2
- import { ValidationState, AnyStrictValidator } from 'typanion';
2
+ import { AnyStrictValidator, ValidationState } from 'typanion';
3
3
  type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>;
4
4
  type RHFResolver = <TFieldValues extends FieldValues, TContext>(values: TFieldValues, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>;
5
5
  export type Resolver = <UnknownValidator extends AnyStrictValidator>(validator: UnknownValidator, validatorOptions?: ValidateOptions, resolverOptions?: {
@@ -1,6 +1,6 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import user from '@testing-library/user-event';
3
+ import React from 'react';
4
4
  import { useForm } from 'react-hook-form';
5
5
  import * as t from 'typanion';
6
6
  import { typanionResolver } from '..';
@@ -1,6 +1,6 @@
1
- import React from 'react';
2
1
  import { render, screen } from '@testing-library/react';
3
2
  import user from '@testing-library/user-event';
3
+ import React from 'react';
4
4
  import { useForm } from 'react-hook-form';
5
5
  import * as t from 'typanion';
6
6
  import { typanionResolver } from '..';
@@ -1,8 +1,6 @@
1
1
  import { Field, InternalFieldName } from 'react-hook-form';
2
2
  import * as t from 'typanion';
3
3
 
4
-
5
-
6
4
  export const isSchema = t.isObject({
7
5
  username: t.applyCascade(t.isString(), [
8
6
  t.matchesRegExp(/^\w+$/),
@@ -13,24 +11,31 @@ export const isSchema = t.isObject({
13
11
  t.matchesRegExp(new RegExp('.*[A-Z].*')), // one uppercase character
14
12
  t.matchesRegExp(new RegExp('.*[a-z].*')), // one lowercase character
15
13
  t.matchesRegExp(new RegExp('.*\\d.*')), // one number
16
- t.matchesRegExp(new RegExp('.*[`~<>?,./!@#$%^&*()\\-_+="\'|{}\\[\\];:\\\\].*')), // one special character
14
+ t.matchesRegExp(
15
+ new RegExp('.*[`~<>?,./!@#$%^&*()\\-_+="\'|{}\\[\\];:\\\\].*'),
16
+ ), // one special character
17
17
  t.hasMinLength(8), // Must be at least 8 characters in length
18
18
  ]),
19
19
  repeatPassword: t.applyCascade(t.isString(), [
20
20
  t.matchesRegExp(new RegExp('.*[A-Z].*')), // one uppercase character
21
21
  t.matchesRegExp(new RegExp('.*[a-z].*')), // one lowercase character
22
22
  t.matchesRegExp(new RegExp('.*\\d.*')), // one number
23
- t.matchesRegExp(new RegExp('.*[`~<>?,./!@#$%^&*()\\-_+="\'|{}\\[\\];:\\\\].*')), // one special character
23
+ t.matchesRegExp(
24
+ new RegExp('.*[`~<>?,./!@#$%^&*()\\-_+="\'|{}\\[\\];:\\\\].*'),
25
+ ), // one special character
24
26
  t.hasMinLength(8), // Must be at least 8 characters in length
25
27
  ]),
26
28
  accessToken: t.isString(),
27
- birthYear: t.applyCascade(t.isNumber(), [t.isInteger(), t.isInInclusiveRange(1900, 2013)]),
29
+ birthYear: t.applyCascade(t.isNumber(), [
30
+ t.isInteger(),
31
+ t.isInInclusiveRange(1900, 2013),
32
+ ]),
28
33
  email: t.applyCascade(t.isString(), [t.matchesRegExp(/^\S+@\S+$/)]),
29
- tags: t.isArray(t.isString()),
34
+ tags: t.isArray(t.isString()),
30
35
  enabled: t.isBoolean(),
31
36
  like: t.isObject({
32
37
  id: t.applyCascade(t.isNumber(), [t.isInteger(), t.isPositive()]),
33
- name: t.applyCascade(t.isString(), [t.hasMinLength(4)])
38
+ name: t.applyCascade(t.isString(), [t.hasMinLength(4)]),
34
39
  }),
35
40
  });
36
41
 
@@ -8,11 +8,11 @@ exports[`typanionResolver > should return a single error from typanionResolver w
8
8
  "ref": undefined,
9
9
  },
10
10
  "birthYear": {
11
- "message": "Expected a number (got \\"birthYear\\")",
11
+ "message": "Expected a number (got "birthYear")",
12
12
  "ref": undefined,
13
13
  },
14
14
  "email": {
15
- "message": "Expected to match the pattern /^\\\\S+@\\\\S+$/ (got an empty string)",
15
+ "message": "Expected to match the pattern /^\\S+@\\S+$/ (got an empty string)",
16
16
  "ref": {
17
17
  "name": "email",
18
18
  },
@@ -23,7 +23,7 @@ exports[`typanionResolver > should return a single error from typanionResolver w
23
23
  },
24
24
  "like": {
25
25
  "id": {
26
- "message": "Expected a number (got \\"z\\")",
26
+ "message": "Expected a number (got "z")",
27
27
  "ref": undefined,
28
28
  },
29
29
  "name": {
@@ -32,7 +32,7 @@ exports[`typanionResolver > should return a single error from typanionResolver w
32
32
  },
33
33
  },
34
34
  "password": {
35
- "message": "Expected to match the pattern /.*[A-Z].*/ (got \\"___\\")",
35
+ "message": "Expected to match the pattern /.*[A-Z].*/ (got "___")",
36
36
  "ref": {
37
37
  "name": "password",
38
38
  },
@@ -1,5 +1,5 @@
1
1
  import { typanionResolver } from '..';
2
- import { isSchema, validData, fields, invalidData } from './__fixtures__/data';
2
+ import { fields, invalidData, isSchema, validData } from './__fixtures__/data';
3
3
 
4
4
  const tmpObj = {
5
5
  validate: isSchema,
@@ -1,5 +1,5 @@
1
- import type { FieldError, FieldErrors } from 'react-hook-form';
2
1
  import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';
2
+ import type { FieldError, FieldErrors } from 'react-hook-form';
3
3
  import type { Resolver } from './types';
4
4
 
5
5
  const parseErrors = (errors: string[], parsedErrors: FieldErrors = {}) => {
@@ -3,9 +3,9 @@ import type {
3
3
  ResolverOptions,
4
4
  ResolverResult,
5
5
  } from 'react-hook-form';
6
- import { ValidationState, AnyStrictValidator} from 'typanion'
6
+ import { AnyStrictValidator, ValidationState } from 'typanion';
7
7
 
8
- type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>
8
+ type ValidateOptions = Pick<ValidationState, 'coercions' | 'coercion'>;
9
9
 
10
10
  type RHFResolver = <TFieldValues extends FieldValues, TContext>(
11
11
  values: TFieldValues,
@@ -16,5 +16,5 @@ type RHFResolver = <TFieldValues extends FieldValues, TContext>(
16
16
  export type Resolver = <UnknownValidator extends AnyStrictValidator>(
17
17
  validator: UnknownValidator,
18
18
  validatorOptions?: ValidateOptions,
19
- resolverOptions?: { mode?: 'async' | 'sync', rawValues?: boolean; },
20
- )=> RHFResolver
19
+ resolverOptions?: { mode?: 'async' | 'sync'; rawValues?: boolean },
20
+ ) => RHFResolver;
@@ -1,2 +1,2 @@
1
- var e=require("react-hook-form"),r=require("@hookform/resolvers"),s=require("@sinclair/typebox/value"),a=function(r,s){for(var a={};r.length;){var t=r[0],o=t.type,i=t.message,l=t.path.substring(1).replace(/\//g,".");if(a[l]||(a[l]={message:i,type:""+o}),s){var n=a[l].types,u=n&&n[""+o];a[l]=e.appendErrors(l,s,a,""+o,u?[].concat(u,t.message):t.message)}r.shift()}return a};exports.typeboxResolver=function(e){return function(t,o,i){try{var l=Array.from(s.Value.Errors(e,t));return i.shouldUseNativeValidation&&r.validateFieldsNatively({},i),Promise.resolve(l.length?{values:{},errors:r.toNestErrors(a(l,!i.shouldUseNativeValidation&&"all"===i.criteriaMode),i)}:{errors:{},values:t})}catch(e){return Promise.reject(e)}}};
1
+ var e=require("@hookform/resolvers"),r=require("@sinclair/typebox/compiler"),s=require("@sinclair/typebox/value"),o=require("react-hook-form"),a=function(e,r){for(var s={};e.length;){var a=e[0],t=a.type,i=a.message,l=a.path.substring(1).replace(/\//g,".");if(s[l]||(s[l]={message:i,type:""+t}),r){var n=s[l].types,u=n&&n[""+t];s[l]=o.appendErrors(l,r,s,""+t,u?[].concat(u,a.message):a.message)}e.shift()}return s};exports.typeboxResolver=function(o){return function(t,i,l){try{var n=Array.from(o instanceof r.TypeCheck?o.Errors(t):s.Value.Errors(o,t));return l.shouldUseNativeValidation&&e.validateFieldsNatively({},l),Promise.resolve(n.length?{values:{},errors:e.toNestErrors(a(n,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)}:{errors:{},values:t})}catch(e){return Promise.reject(e)}}};
2
2
  //# sourceMappingURL=typebox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typebox.js","sources":["../src/typebox.ts"],"sourcesContent":["import { appendErrors, FieldError, FieldErrors } from 'react-hook-form';\nimport { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport { Value, ValueError } from '@sinclair/typebox/value';\n\nconst parseErrorSchema = (\n _errors: ValueError[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; _errors.length; ) {\n const error = _errors[0];\n const { type, message, path } = error;\n const _path = path.substring(1).replace(/\\//g, '.');\n\n if (!errors[_path]) {\n errors[_path] = { message, type: '' + type };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types['' + type];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n '' + type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n _errors.shift();\n }\n\n return errors;\n};\n\nexport const typeboxResolver: Resolver =\n (schema) => async (values, _, options) => {\n const errors = Array.from(Value.Errors(schema, values));\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n if (!errors.length) {\n return {\n errors: {} as FieldErrors,\n values,\n };\n }\n\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n errors,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n };\n"],"names":["parseErrorSchema","_errors","validateAllFieldCriteria","errors","length","error","type","message","_path","path","substring","replace","types","messages","appendErrors","concat","shift","schema","values","_","options","Array","from","Value","Errors","shouldUseNativeValidation","validateFieldsNatively","Promise","resolve","toNestErrors","criteriaMode","e","reject"],"mappings":"uGAKMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,CAAE,EACtCF,EAAQG,QAAU,CACvB,IAAMC,EAAQJ,EAAQ,GACdK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,UAAU,GAAGC,QAAQ,MAAO,KAM/C,GAJKR,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASD,KAAM,GAAKA,IAGpCJ,EAA0B,CAC5B,IAAMU,EAAQT,EAAOK,GAAOI,MACtBC,EAAWD,GAASA,EAAM,GAAKN,GAErCH,EAAOK,GAASM,EAAYA,aAC1BN,EACAN,EACAC,EACA,GAAKG,EACLO,EACK,GAAgBE,OAAOF,EAAsBR,EAAME,SACpDF,EAAME,QAEb,CAEDN,EAAQe,OACT,CAED,OAAOb,CACT,0BAGE,SAACc,GAAkBC,OAAAA,SAAAA,EAAQC,EAAGC,GAAO,IACnC,IAAMjB,EAASkB,MAAMC,KAAKC,EAAAA,MAAMC,OAAOP,EAAQC,IAI/C,OAFAE,EAAQK,2BAA6BC,EAAAA,uBAAuB,CAAA,EAAIN,GAShEO,QAAAC,QAPKzB,EAAOC,OAOL,CACLc,OAAQ,CAAE,EACVf,OAAQ0B,EAAAA,aACN7B,EACEG,GACCiB,EAAQK,2BAAsD,QAAzBL,EAAQU,cAEhDV,IAbK,CACLjB,OAAQ,GACRe,OAAAA,GAcN,CAAC,MAAAa,GAAAJ,OAAAA,QAAAK,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"typebox.js","sources":["../src/typebox.ts"],"sourcesContent":["import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { TypeCheck } from '@sinclair/typebox/compiler';\nimport { Value, type ValueError } from '@sinclair/typebox/value';\nimport { FieldError, FieldErrors, appendErrors } from 'react-hook-form';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n _errors: ValueError[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; _errors.length; ) {\n const error = _errors[0];\n const { type, message, path } = error;\n const _path = path.substring(1).replace(/\\//g, '.');\n\n if (!errors[_path]) {\n errors[_path] = { message, type: '' + type };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types['' + type];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n '' + type,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n _errors.shift();\n }\n\n return errors;\n};\n\nexport const typeboxResolver: Resolver =\n (schema) => async (values, _, options) => {\n const errors = Array.from(\n schema instanceof TypeCheck\n ? schema.Errors(values)\n : Value.Errors(schema, values),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n if (!errors.length) {\n return {\n errors: {} as FieldErrors,\n values,\n };\n }\n\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n errors,\n !options.shouldUseNativeValidation && options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n };\n"],"names":["parseErrorSchema","_errors","validateAllFieldCriteria","errors","length","error","type","message","_path","path","substring","replace","types","messages","appendErrors","concat","shift","schema","values","_","options","Array","from","TypeCheck","Errors","Value","shouldUseNativeValidation","validateFieldsNatively","Promise","resolve","toNestErrors","criteriaMode","e","reject"],"mappings":"+IAMMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAQG,QAAU,CACvB,IAAMC,EAAQJ,EAAQ,GACdK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,UAAU,GAAGC,QAAQ,MAAO,KAM/C,GAJKR,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASD,KAAM,GAAKA,IAGpCJ,EAA0B,CAC5B,IAAMU,EAAQT,EAAOK,GAAOI,MACtBC,EAAWD,GAASA,EAAM,GAAKN,GAErCH,EAAOK,GAASM,EAAAA,aACdN,EACAN,EACAC,EACA,GAAKG,EACLO,EACK,GAAgBE,OAAOF,EAAsBR,EAAME,SACpDF,EAAME,QAEd,CAEAN,EAAQe,OACV,CAEA,OAAOb,CACT,0BAGE,SAACc,GAAkBC,OAAAA,SAAAA,EAAQC,EAAGC,GAAO,IACnC,IAAMjB,EAASkB,MAAMC,KACnBL,aAAkBM,EAASA,UACvBN,EAAOO,OAAON,GACdO,EAAKA,MAACD,OAAOP,EAAQC,IAK3B,OAFAE,EAAQM,2BAA6BC,EAAsBA,uBAAC,GAAIP,GAShEQ,QAAAC,QAPK1B,EAAOC,OAOL,CACLc,OAAQ,CAAA,EACRf,OAAQ2B,EAAYA,aAClB9B,EACEG,GACCiB,EAAQM,2BAAsD,QAAzBN,EAAQW,cAEhDX,IAbK,CACLjB,OAAQ,CAAA,EACRe,OAAAA,GAcN,CAAC,MAAAc,GAAA,OAAAJ,QAAAK,OAAAD,EAAA,CAAA,CAAA"}