@hookform/resolvers 2.8.5 → 2.8.6
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.
- package/README.md +7 -4
- package/class-validator/src/__tests__/Form-native-validation.tsx +1 -1
- package/class-validator/src/__tests__/Form.tsx +1 -1
- package/dist/toNestError.d.ts +1 -1
- package/package.json +20 -20
- package/yup/dist/yup.js +1 -1
- package/yup/dist/yup.js.map +1 -1
- package/yup/dist/yup.mjs +1 -1
- package/yup/dist/yup.modern.js +1 -1
- package/yup/dist/yup.modern.js.map +1 -1
- package/yup/dist/yup.module.js +1 -1
- package/yup/dist/yup.module.js.map +1 -1
- package/yup/dist/yup.umd.js +1 -1
- package/yup/dist/yup.umd.js.map +1 -1
- package/yup/src/__tests__/__fixtures__/data.ts +8 -0
- package/yup/src/__tests__/yup.ts +19 -1
- package/yup/src/yup.ts +4 -0
- package/zod/dist/zod.d.ts +2 -0
- package/zod/dist/zod.js +1 -1
- package/zod/dist/zod.js.map +1 -1
- package/zod/dist/zod.mjs +1 -1
- package/zod/dist/zod.modern.js +1 -1
- package/zod/dist/zod.modern.js.map +1 -1
- package/zod/dist/zod.module.js +1 -1
- package/zod/dist/zod.module.js.map +1 -1
- package/zod/dist/zod.umd.js +1 -1
- package/zod/dist/zod.umd.js.map +1 -1
- package/zod/src/zod.ts +47 -2
package/README.md
CHANGED
|
@@ -47,10 +47,13 @@ import { useForm } from 'react-hook-form';
|
|
|
47
47
|
import { yupResolver } from '@hookform/resolvers/yup';
|
|
48
48
|
import * as yup from 'yup';
|
|
49
49
|
|
|
50
|
-
const schema = yup
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const schema = yup
|
|
51
|
+
.object()
|
|
52
|
+
.shape({
|
|
53
|
+
name: yup.string().required(),
|
|
54
|
+
age: yup.number().required(),
|
|
55
|
+
})
|
|
56
|
+
.required();
|
|
54
57
|
|
|
55
58
|
const App = () => {
|
|
56
59
|
const { register, handleSubmit } = useForm({
|
package/dist/toNestError.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { FieldError, FieldErrors, ResolverOptions } from 'react-hook-form';
|
|
2
|
-
export declare const toNestError: <TFieldValues>(errors: Record<string, FieldError>, options: ResolverOptions<TFieldValues>) => import("react-hook-form").DeepMap<import("react-hook-form").DeepPartial<
|
|
2
|
+
export declare const toNestError: <TFieldValues>(errors: Record<string, FieldError>, options: ResolverOptions<TFieldValues>) => import("react-hook-form").DeepMap<import("react-hook-form").DeepPartial<TFieldValues>, FieldError>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hookform/resolvers",
|
|
3
3
|
"amdName": "hookformResolvers",
|
|
4
|
-
"version": "2.8.
|
|
4
|
+
"version": "2.8.6",
|
|
5
5
|
"description": "React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types and Typanion",
|
|
6
6
|
"main": "dist/resolvers.js",
|
|
7
7
|
"module": "dist/resolvers.module.js",
|
|
@@ -164,41 +164,41 @@
|
|
|
164
164
|
},
|
|
165
165
|
"homepage": "https://react-hook-form.com",
|
|
166
166
|
"devDependencies": {
|
|
167
|
-
"@testing-library/jest-dom": "^5.
|
|
167
|
+
"@testing-library/jest-dom": "^5.16.1",
|
|
168
168
|
"@testing-library/react": "^12.1.2",
|
|
169
169
|
"@testing-library/user-event": "^13.5.0",
|
|
170
|
-
"@types/jest": "^27.0
|
|
171
|
-
"@types/react": "^17.0.
|
|
172
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
173
|
-
"@typescript-eslint/parser": "^5.
|
|
170
|
+
"@types/jest": "^27.4.0",
|
|
171
|
+
"@types/react": "^17.0.38",
|
|
172
|
+
"@typescript-eslint/eslint-plugin": "^5.10.0",
|
|
173
|
+
"@typescript-eslint/parser": "^5.10.0",
|
|
174
174
|
"check-export-map": "^1.2.0",
|
|
175
|
-
"class-transformer": "^0.
|
|
176
|
-
"class-validator": "^0.13.
|
|
175
|
+
"class-transformer": "^0.5.1",
|
|
176
|
+
"class-validator": "^0.13.2",
|
|
177
177
|
"computed-types": "^1.11.1",
|
|
178
178
|
"eslint": "^7.27.0",
|
|
179
179
|
"eslint-config-prettier": "^8.3.0",
|
|
180
|
-
"fp-ts": "^2.11.
|
|
180
|
+
"fp-ts": "^2.11.8",
|
|
181
181
|
"husky": "^7.0.4",
|
|
182
182
|
"io-ts": "^2.0.0",
|
|
183
183
|
"io-ts-types": "^0.5.16",
|
|
184
|
-
"jest": "^27.
|
|
185
|
-
"joi": "^17.
|
|
186
|
-
"lint-staged": "^
|
|
187
|
-
"microbundle": "^0.14.
|
|
188
|
-
"monocle-ts": "^2.3.
|
|
189
|
-
"newtype-ts": "^0.3.
|
|
184
|
+
"jest": "^27.4.7",
|
|
185
|
+
"joi": "^17.5.0",
|
|
186
|
+
"lint-staged": "^12.1.7",
|
|
187
|
+
"microbundle": "^0.14.2",
|
|
188
|
+
"monocle-ts": "^2.3.12",
|
|
189
|
+
"newtype-ts": "^0.3.5",
|
|
190
190
|
"nope-validator": "^1.0.0",
|
|
191
191
|
"npm-run-all": "^4.1.5",
|
|
192
|
-
"prettier": "^2.
|
|
192
|
+
"prettier": "^2.5.1",
|
|
193
193
|
"react": "^17.0.2",
|
|
194
194
|
"react-dom": "^17.0.2",
|
|
195
|
-
"react-hook-form": "7.
|
|
195
|
+
"react-hook-form": "7.24.0",
|
|
196
196
|
"reflect-metadata": "^0.1.13",
|
|
197
197
|
"superstruct": "^0.15.3",
|
|
198
|
-
"ts-jest": "^27.
|
|
198
|
+
"ts-jest": "^27.1.3",
|
|
199
199
|
"typanion": "^3.7.1",
|
|
200
|
-
"typescript": "^4.
|
|
201
|
-
"vest": "^
|
|
200
|
+
"typescript": "^4.5.4",
|
|
201
|
+
"vest": "^4.0.3",
|
|
202
202
|
"yup": "^0.32.11",
|
|
203
203
|
"zod": "^3.11.6"
|
|
204
204
|
},
|
package/yup/dist/yup.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("@hookform/resolvers"),t=require("react-hook-form");exports.yupResolver=function(r,o,n){return void 0===o&&(o={}),void 0===n&&(n={}),function(s,a,i){try{return Promise.resolve(function(t,u){try{var c=(o.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(r["sync"===n.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},o,{context:a}))).then(function(t){return i.shouldUseNativeValidation&&e.validateFieldsNatively({},i),{values:t,errors:{}}}))}catch(e){return u(e)}return c&&c.then?c.then(void 0,u):c}(0,function(r){return{values:{},errors:e.toNestError((o=r,n=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(o.inner||[]).reduce(function(e,r){if(e[r.path]||(e[r.path]={message:r.message,type:r.type}),n){var o=e[r.path].types,s=o&&o[r.type];e[r.path]=t.appendErrors(r.path,n,e,r.type,s?[].concat(s,r.message):r.message)}return e},{})),i)};var o,n}))}catch(e){return Promise.reject(e)}}};
|
|
1
|
+
var e=require("@hookform/resolvers"),t=require("react-hook-form");exports.yupResolver=function(r,o,n){return void 0===o&&(o={}),void 0===n&&(n={}),function(s,a,i){try{return Promise.resolve(function(t,u){try{var c=(o.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(r["sync"===n.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},o,{context:a}))).then(function(t){return i.shouldUseNativeValidation&&e.validateFieldsNatively({},i),{values:t,errors:{}}}))}catch(e){return u(e)}return c&&c.then?c.then(void 0,u):c}(0,function(r){if(!r.inner)throw r;return{values:{},errors:e.toNestError((o=r,n=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(o.inner||[]).reduce(function(e,r){if(e[r.path]||(e[r.path]={message:r.message,type:r.type}),n){var o=e[r.path].types,s=o&&o[r.type];e[r.path]=t.appendErrors(r.path,n,e,r.type,s?[].concat(s,r.message):r.message)}return e},{})),i)};var o,n}))}catch(e){return Promise.reject(e)}}};
|
|
2
2
|
//# sourceMappingURL=yup.js.map
|
package/yup/dist/yup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yup.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","
|
|
1
|
+
{"version":3,"file":"yup.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n if (!e.inner) {\n throw e;\n }\n\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","inner","toNestError","error","validateAllFieldCriteria","criteriaMode","reduce","previous","path","message","type","types","messages","appendErrors","concat"],"mappings":"sFAyCE,SAACA,EAAQC,EAAoBC,mBAApBD,IAAAA,EAAgB,aAAIC,IAAAA,EAAkB,aACxCC,EAAQC,EAASC,uDAEhBJ,EAAcG,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBV,EACM,SAAzBE,EAAgBS,KAAkB,eAAiB,YAEnDR,EACAS,OAAOC,OAAO,CAAEC,YAAY,GAASb,EAAe,CAAEG,QAAAA,oBAJlDW,GASN,OAFAV,EAAQW,2BAA6BC,yBAAuB,GAAIZ,GAEzD,CACLF,OAAQY,EACRG,OAAQ,4EAEHC,GACP,IAAKA,EAAEC,MACL,MAAMD,EAGR,MAAO,CACLhB,OAAQ,GACRe,OAAQG,eA7DdC,EA+DUH,EA9DVI,GA+DWlB,EAAQW,2BACkB,QAAzBX,EAAQmB,cA9DZF,EAAMF,OAAS,IAAIK,OACzB,SAACC,EAAUJ,GAKT,GAJKI,EAASJ,EAAMK,QAClBD,EAASJ,EAAMK,MAAS,CAAEC,QAASN,EAAMM,QAASC,KAAMP,EAAMO,OAG5DN,EAA0B,CAC5B,IAAMO,EAAQJ,EAASJ,EAAMK,MAAOG,MAC9BC,EAAWD,GAASA,EAAMR,EAAMO,MAEtCH,EAASJ,EAAMK,MAASK,eACtBV,EAAMK,KACNJ,EACAG,EACAJ,EAAMO,KACNE,EACK,GAAgBE,OAAOF,EAAsBT,EAAMM,SACpDN,EAAMM,SAId,OAAOF,GAET,KAyCMrB,IApEe,IACvBiB,EACAC,KA8BA"}
|
package/yup/dist/yup.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as r}from"react-hook-form";var o=function(o,n,a){return void 0===n&&(n={}),void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===a.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},{})),c)};var o,n}))}catch(e){return Promise.reject(e)}}};export{o as yupResolver};
|
|
1
|
+
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as r}from"react-hook-form";var o=function(o,n,a){return void 0===n&&(n={}),void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===a.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){if(!e.inner)throw e;return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},{})),c)};var o,n}))}catch(e){return Promise.reject(e)}}};export{o as yupResolver};
|
|
2
2
|
//# sourceMappingURL=yup.module.js.map
|
package/yup/dist/yup.modern.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as o}from"react-hook-form";const a=(a,s={},r={})=>async(n,c,i)=>{try{s.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead");const t=await a["sync"===r.mode?"validateSync":"validate"](n,Object.assign({abortEarly:!1},s,{context:c}));return i.shouldUseNativeValidation&&e({},i),{values:t,errors:{}}}catch(e){return{values:{},errors:t((p=e,l=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(p.inner||[]).reduce((e,t)=>{if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),l){const a=e[t.path].types,s=a&&a[t.type];e[t.path]=o(t.path,l,e,t.type,s?[].concat(s,t.message):t.message)}return e},{})),i)}}var p,l};export{a as yupResolver};
|
|
1
|
+
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as o}from"react-hook-form";const a=(a,s={},r={})=>async(n,c,i)=>{try{s.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead");const t=await a["sync"===r.mode?"validateSync":"validate"](n,Object.assign({abortEarly:!1},s,{context:c}));return i.shouldUseNativeValidation&&e({},i),{values:t,errors:{}}}catch(e){if(!e.inner)throw e;return{values:{},errors:t((p=e,l=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(p.inner||[]).reduce((e,t)=>{if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),l){const a=e[t.path].types,s=a&&a[t.type];e[t.path]=o(t.path,l,e,t.type,s?[].concat(s,t.message):t.message)}return e},{})),i)}}var p,l};export{a as yupResolver};
|
|
2
2
|
//# sourceMappingURL=yup.modern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yup.modern.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["yupResolver","schema","schemaOptions","resolverOptions","async","values","context","options","process","env","NODE_ENV","console","warn","result","mode","Object","assign","abortEarly","shouldUseNativeValidation","validateFieldsNatively","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","
|
|
1
|
+
{"version":3,"file":"yup.modern.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n if (!e.inner) {\n throw e;\n }\n\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["yupResolver","schema","schemaOptions","resolverOptions","async","values","context","options","process","env","NODE_ENV","console","warn","result","mode","Object","assign","abortEarly","shouldUseNativeValidation","validateFieldsNatively","errors","e","inner","toNestError","error","validateAllFieldCriteria","criteriaMode","reduce","previous","path","message","type","types","messages","appendErrors","concat"],"mappings":"6HASA,MA+BaA,EACX,CAACC,EAAQC,EAAgB,GAAIC,EAAkB,KAC/CC,MAAOC,EAAQC,EAASC,KACtB,IACML,EAAcI,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iGAIJ,MAAMC,QAAeZ,EACM,SAAzBE,EAAgBW,KAAkB,eAAiB,YAEnDT,EACAU,OAAOC,OAAO,CAAEC,YAAY,GAASf,EAAe,CAAEI,QAAAA,KAKxD,OAFAC,EAAQW,2BAA6BC,EAAuB,GAAIZ,GAEzD,CACLF,OAAQQ,EACRO,OAAQ,IAEV,MAAOC,GACP,IAAKA,EAAEC,MACL,MAAMD,EAGR,MAAO,CACLhB,OAAQ,GACRe,OAAQG,GA7DdC,EA+DUH,EA9DVI,GA+DWlB,EAAQW,2BACkB,QAAzBX,EAAQmB,cA9DZF,EAAMF,OAAS,IAAIK,OACzB,CAACC,EAAUJ,KAKT,GAJKI,EAASJ,EAAMK,QAClBD,EAASJ,EAAMK,MAAS,CAAEC,QAASN,EAAMM,QAASC,KAAMP,EAAMO,OAG5DN,EAA0B,CAC5B,MAAMO,EAAQJ,EAASJ,EAAMK,MAAOG,MAC9BC,EAAWD,GAASA,EAAMR,EAAMO,MAEtCH,EAASJ,EAAMK,MAASK,EACtBV,EAAMK,KACNJ,EACAG,EACAJ,EAAMO,KACNE,EACK,GAAgBE,OAAOF,EAAsBT,EAAMM,SACpDN,EAAMM,SAId,OAAOF,GAET,KAyCMrB,IApEe,IACvBiB,EACAC"}
|
package/yup/dist/yup.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as r}from"react-hook-form";var o=function(o,n,a){return void 0===n&&(n={}),void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===a.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},{})),c)};var o,n}))}catch(e){return Promise.reject(e)}}};export{o as yupResolver};
|
|
1
|
+
import{validateFieldsNatively as e,toNestError as t}from"@hookform/resolvers";import{appendErrors as r}from"react-hook-form";var o=function(o,n,a){return void 0===n&&(n={}),void 0===a&&(a={}),function(s,i,c){try{return Promise.resolve(function(t,r){try{var u=(n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===a.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&e({},c),{values:t,errors:{}}}))}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){if(!e.inner)throw e;return{values:{},errors:t((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,a=o&&o[t.type];e[t.path]=r(t.path,n,e,t.type,a?[].concat(a,t.message):t.message)}return e},{})),c)};var o,n}))}catch(e){return Promise.reject(e)}}};export{o as yupResolver};
|
|
2
2
|
//# sourceMappingURL=yup.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yup.module.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["yupResolver","schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","
|
|
1
|
+
{"version":3,"file":"yup.module.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n if (!e.inner) {\n throw e;\n }\n\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["yupResolver","schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","inner","toNestError","error","validateAllFieldCriteria","criteriaMode","reduce","previous","path","message","type","types","messages","appendErrors","concat"],"mappings":"6HASA,IA+BaA,EACX,SAACC,EAAQC,EAAoBC,mBAApBD,IAAAA,EAAgB,aAAIC,IAAAA,EAAkB,aACxCC,EAAQC,EAASC,uDAEhBJ,EAAcG,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBV,EACM,SAAzBE,EAAgBS,KAAkB,eAAiB,YAEnDR,EACAS,OAAOC,OAAO,CAAEC,YAAY,GAASb,EAAe,CAAEG,QAAAA,oBAJlDW,GASN,OAFAV,EAAQW,2BAA6BC,EAAuB,GAAIZ,GAEzD,CACLF,OAAQY,EACRG,OAAQ,4EAEHC,GACP,IAAKA,EAAEC,MACL,MAAMD,EAGR,MAAO,CACLhB,OAAQ,GACRe,OAAQG,GA7DdC,EA+DUH,EA9DVI,GA+DWlB,EAAQW,2BACkB,QAAzBX,EAAQmB,cA9DZF,EAAMF,OAAS,IAAIK,OACzB,SAACC,EAAUJ,GAKT,GAJKI,EAASJ,EAAMK,QAClBD,EAASJ,EAAMK,MAAS,CAAEC,QAASN,EAAMM,QAASC,KAAMP,EAAMO,OAG5DN,EAA0B,CAC5B,IAAMO,EAAQJ,EAASJ,EAAMK,MAAOG,MAC9BC,EAAWD,GAASA,EAAMR,EAAMO,MAEtCH,EAASJ,EAAMK,MAASK,EACtBV,EAAMK,KACNJ,EACAG,EACAJ,EAAMO,KACNE,EACK,GAAgBE,OAAOF,EAAsBT,EAAMM,SACpDN,EAAMM,SAId,OAAOF,GAET,KAyCMrB,IApEe,IACvBiB,EACAC,KA8BA"}
|
package/yup/dist/yup.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@hookform/resolvers"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","react-hook-form"],o):o((e||self).hookformResolversYup={},e.hookformResolvers,e.reactHookForm)}(this,function(e,o,t){e.yupResolver=function(e,r,n){return void 0===r&&(r={}),void 0===n&&(n={}),function(s,a,i){try{return Promise.resolve(function(t,u){try{var c=(r.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(e["sync"===n.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},r,{context:a}))).then(function(e){return i.shouldUseNativeValidation&&o.validateFieldsNatively({},i),{values:e,errors:{}}}))}catch(e){return u(e)}return c&&c.then?c.then(void 0,u):c}(0,function(e){return{values:{},errors:o.toNestError((r=e,n=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(r.inner||[]).reduce(function(e,o){if(e[o.path]||(e[o.path]={message:o.message,type:o.type}),n){var r=e[o.path].types,s=r&&r[o.type];e[o.path]=t.appendErrors(o.path,n,e,o.type,s?[].concat(s,o.message):o.message)}return e},{})),i)};var r,n}))}catch(e){return Promise.reject(e)}}}});
|
|
1
|
+
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@hookform/resolvers"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","react-hook-form"],o):o((e||self).hookformResolversYup={},e.hookformResolvers,e.reactHookForm)}(this,function(e,o,t){e.yupResolver=function(e,r,n){return void 0===r&&(r={}),void 0===n&&(n={}),function(s,a,i){try{return Promise.resolve(function(t,u){try{var c=(r.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(e["sync"===n.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},r,{context:a}))).then(function(e){return i.shouldUseNativeValidation&&o.validateFieldsNatively({},i),{values:e,errors:{}}}))}catch(e){return u(e)}return c&&c.then?c.then(void 0,u):c}(0,function(e){if(!e.inner)throw e;return{values:{},errors:o.toNestError((r=e,n=!i.shouldUseNativeValidation&&"all"===i.criteriaMode,(r.inner||[]).reduce(function(e,o){if(e[o.path]||(e[o.path]={message:o.message,type:o.type}),n){var r=e[o.path].types,s=r&&r[o.type];e[o.path]=t.appendErrors(o.path,n,e,o.type,s?[].concat(s,o.message):o.message)}return e},{})),i)};var r,n}))}catch(e){return Promise.reject(e)}}}});
|
|
2
2
|
//# sourceMappingURL=yup.umd.js.map
|
package/yup/dist/yup.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yup.umd.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","toNestError","error","validateAllFieldCriteria","criteriaMode","
|
|
1
|
+
{"version":3,"file":"yup.umd.js","sources":["../src/yup.ts"],"sourcesContent":["import Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: result,\n errors: {},\n };\n } catch (e: any) {\n if (!e.inner) {\n throw e;\n }\n\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["schema","schemaOptions","resolverOptions","values","context","options","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","result","shouldUseNativeValidation","validateFieldsNatively","errors","e","inner","toNestError","error","validateAllFieldCriteria","criteriaMode","reduce","previous","path","message","type","types","messages","appendErrors","concat"],"mappings":"sYAyCE,SAACA,EAAQC,EAAoBC,mBAApBD,IAAAA,EAAgB,aAAIC,IAAAA,EAAkB,aACxCC,EAAQC,EAASC,uDAEhBJ,EAAcG,SAAoC,gBAAzBE,QAAQC,IAAIC,UAEvCC,QAAQC,KACN,iHAIiBV,EACM,SAAzBE,EAAgBS,KAAkB,eAAiB,YAEnDR,EACAS,OAAOC,OAAO,CAAEC,YAAY,GAASb,EAAe,CAAEG,QAAAA,oBAJlDW,GASN,OAFAV,EAAQW,2BAA6BC,yBAAuB,GAAIZ,GAEzD,CACLF,OAAQY,EACRG,OAAQ,4EAEHC,GACP,IAAKA,EAAEC,MACL,MAAMD,EAGR,MAAO,CACLhB,OAAQ,GACRe,OAAQG,eA7DdC,EA+DUH,EA9DVI,GA+DWlB,EAAQW,2BACkB,QAAzBX,EAAQmB,cA9DZF,EAAMF,OAAS,IAAIK,OACzB,SAACC,EAAUJ,GAKT,GAJKI,EAASJ,EAAMK,QAClBD,EAASJ,EAAMK,MAAS,CAAEC,QAASN,EAAMM,QAASC,KAAMP,EAAMO,OAG5DN,EAA0B,CAC5B,IAAMO,EAAQJ,EAASJ,EAAMK,MAAOG,MAC9BC,EAAWD,GAASA,EAAMR,EAAMO,MAEtCH,EAASJ,EAAMK,MAASK,eACtBV,EAAMK,KACNJ,EACAG,EACAJ,EAAMO,KACNE,EACK,GAAgBE,OAAOF,EAAsBT,EAAMM,SACpDN,EAAMM,SAId,OAAOF,GAET,KAyCMrB,IApEe,IACvBiB,EACAC,KA8BA"}
|
|
@@ -28,6 +28,14 @@ export const schema = yup.object({
|
|
|
28
28
|
),
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
+
export const schemaWithWhen = yup.object({
|
|
32
|
+
name: yup.string().required(),
|
|
33
|
+
value: yup.string().when('name', {
|
|
34
|
+
is: 'test',
|
|
35
|
+
then: yup.number().required(),
|
|
36
|
+
}),
|
|
37
|
+
});
|
|
38
|
+
|
|
31
39
|
export const validData: yup.InferType<typeof schema> = {
|
|
32
40
|
username: 'Doe',
|
|
33
41
|
password: 'Password123_',
|
package/yup/src/__tests__/yup.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/* eslint-disable no-console, @typescript-eslint/ban-ts-comment */
|
|
2
2
|
import * as yup from 'yup';
|
|
3
3
|
import { yupResolver } from '..';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
schema,
|
|
6
|
+
validData,
|
|
7
|
+
fields,
|
|
8
|
+
invalidData,
|
|
9
|
+
schemaWithWhen,
|
|
10
|
+
} from './__fixtures__/data';
|
|
5
11
|
|
|
6
12
|
const shouldUseNativeValidation = false;
|
|
7
13
|
|
|
@@ -171,4 +177,16 @@ describe('yupResolver', () => {
|
|
|
171
177
|
expect.objectContaining({ stripUnknown: true, abortEarly: false }),
|
|
172
178
|
);
|
|
173
179
|
});
|
|
180
|
+
|
|
181
|
+
it('should throw an error without inner property', (done) => {
|
|
182
|
+
yupResolver(schemaWithWhen)({ name: 'test', value: '' }, undefined, {
|
|
183
|
+
fields,
|
|
184
|
+
shouldUseNativeValidation,
|
|
185
|
+
}).catch((e) => {
|
|
186
|
+
expect(e).toMatchInlineSnapshot(
|
|
187
|
+
`[TypeError: You cannot \`concat()\` schema's of different types: string and number]`,
|
|
188
|
+
);
|
|
189
|
+
done();
|
|
190
|
+
});
|
|
191
|
+
});
|
|
174
192
|
});
|
package/yup/src/yup.ts
CHANGED
package/zod/dist/zod.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
import { FieldError, ResolverOptions } from 'react-hook-form';
|
|
1
2
|
import type { Resolver } from './types';
|
|
3
|
+
export declare const validateFieldsNatively: <TFieldValues>(errors: Record<string, FieldError>, options: ResolverOptions<TFieldValues>) => void;
|
|
2
4
|
export declare const zodResolver: Resolver;
|
package/zod/dist/zod.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r=require("react-hook-form"),e=
|
|
1
|
+
var r=require("react-hook-form"),e=function(e,t){for(var o in t.fields){var s=t.fields[o];if(s&&s.ref&&"reportValidity"in s.ref){var n=r.get(e,o);s.ref.setCustomValidity(n&&n.message||""),s.ref.reportValidity()}}},t=function(t,o){o.shouldUseNativeValidation&&e(t,o);var s={};for(var n in t){var i=r.get(o.fields,n);r.set(s,n,Object.assign(t[n],{ref:i&&i.ref}))}return s},o=function(e,t){for(var o={};e.length;){var s=e[0],n=s.code,i=s.message,a=s.path.join(".");if(!o[a])if("unionErrors"in s){var u=s.unionErrors[0].errors[0];o[a]={message:u.message,type:u.code}}else o[a]={message:i,type:n};if("unionErrors"in s&&s.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),t){var f=o[a].types,c=f&&f[s.code];o[a]=r.appendErrors(a,t,o,n,c?[].concat(c,s.message):s.message)}e.shift()}return o};exports.validateFieldsNatively=e,exports.zodResolver=function(r,s,n){return void 0===n&&(n={}),function(i,a,u){try{return Promise.resolve(function(t,o){try{var a=Promise.resolve(r["sync"===n.mode?"parse":"parseAsync"](i,s)).then(function(r){return u.shouldUseNativeValidation&&e({},u),{errors:{},values:r}})}catch(r){return o(r)}return a&&a.then?a.then(void 0,o):a}(0,function(r){return{values:{},errors:r.isEmpty?{}:t(o(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)}}))}catch(r){return Promise.reject(r)}}};
|
|
2
2
|
//# sourceMappingURL=zod.js.map
|
package/zod/dist/zod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.js","sources":["../src/zod.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"zod.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n set,\n get,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport type { Resolver } from './types';\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n\n if (field && field.ref && 'reportValidity' in field.ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n\n field.ref.setCustomValidity((error && error.message) || '');\n\n field.ref.reportValidity();\n }\n }\n};\n\nconst toNestError = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n\nconst parseErrorSchema = (\n zodErrors: z.ZodIssue[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; zodErrors.length; ) {\n const error = zodErrors[0];\n const { code, message, path } = error;\n const _path = path.join('.');\n\n if (!errors[_path]) {\n if ('unionErrors' in error) {\n const unionError = error.unionErrors[0].errors[0];\n\n errors[_path] = {\n message: unionError.message,\n type: unionError.code,\n };\n } else {\n errors[_path] = { message, type: code };\n }\n }\n\n if ('unionErrors' in error) {\n error.unionErrors.forEach((unionError) =>\n unionError.errors.forEach((e) => zodErrors.push(e)),\n );\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.code];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const data = await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {} as FieldErrors,\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(\n error.errors,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign","parseErrorSchema","zodErrors","validateAllFieldCriteria","length","code","_path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","mode","data","isEmpty","criteriaMode"],"mappings":"iCAaaA,EAAyB,SACpCC,EACAC,GAEA,IAAK,IAAMC,KAAaD,EAAQE,OAAQ,CACtC,IAAMC,EAAQH,EAAQE,OAAOD,GAE7B,GAAIE,GAASA,EAAMC,KAAO,mBAAoBD,EAAMC,IAAK,CACvD,IAAMC,EAAQC,MAAIP,EAAQE,GAE1BE,EAAMC,IAAIG,kBAAmBF,GAASA,EAAMG,SAAY,IAExDL,EAAMC,IAAIK,oBAKVC,EAAc,SAClBX,EACAC,GAEAA,EAAQW,2BAA6Bb,EAAuBC,EAAQC,GAEpE,IAAMY,EAAc,GACpB,IAAK,IAAMC,KAAQd,EAAQ,CACzB,IAAMI,EAAQG,MAAIN,EAAQE,OAAQW,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAET,IAAKD,GAASA,EAAMC,OAItD,OAAOQ,GAGHK,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMpB,EAAqC,GACpCmB,EAAUE,QAAU,CACzB,IAAMf,EAAQa,EAAU,GAChBG,EAAwBhB,EAAxBgB,KAAMb,EAAkBH,EAAlBG,QACRc,EAD0BjB,EAATQ,KACJU,KAAK,KAExB,IAAKxB,EAAOuB,GACV,GAAI,gBAAiBjB,EAAO,CAC1B,IAAMmB,EAAanB,EAAMoB,YAAY,GAAG1B,OAAO,GAE/CA,EAAOuB,GAAS,CACdd,QAASgB,EAAWhB,QACpBkB,KAAMF,EAAWH,WAGnBtB,EAAOuB,GAAS,CAAEd,QAAAA,EAASkB,KAAML,GAUrC,GANI,gBAAiBhB,GACnBA,EAAMoB,YAAYE,QAAQ,SAACH,UACzBA,EAAWzB,OAAO4B,QAAQ,SAACC,UAAMV,EAAUW,KAAKD,OAIhDT,EAA0B,CAC5B,IAAMW,EAAQ/B,EAAOuB,GAAOQ,MACtBC,EAAWD,GAASA,EAAMzB,EAAMgB,MAEtCtB,EAAOuB,GAASU,eACdV,EACAH,EACApB,EACAsB,EACAU,EACK,GAAgBE,OAAOF,EAAsB1B,EAAMG,SACpDH,EAAMG,SAIdU,EAAUgB,QAGZ,OAAOnC,wDAIP,SAACoC,EAAQC,EAAeC,mBAAAA,IAAAA,EAAkB,aACnCC,EAAQC,EAAGvC,sEAEKmC,EACQ,SAAzBE,EAAgBG,KAAkB,QAAU,cAC5CF,EAAQF,kBAFJK,GAMN,OAFAzC,EAAQW,2BAA6Bb,EAAuB,GAAIE,GAEzD,CACLD,OAAQ,GACRuC,OAAQG,0EAEHpC,GACP,MAAO,CACLiC,OAAQ,GACRvC,OAAQM,EAAMqC,QACV,GACAhC,EACEO,EACEZ,EAAMN,QACLC,EAAQW,2BACkB,QAAzBX,EAAQ2C,cAEZ3C,OAxBZ"}
|
package/zod/dist/zod.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{appendErrors as
|
|
1
|
+
import{get as r,set as e,appendErrors as o}from"react-hook-form";var n=function(e,o){for(var n in o.fields){var t=o.fields[n];if(t&&t.ref&&"reportValidity"in t.ref){var i=r(e,n);t.ref.setCustomValidity(i&&i.message||""),t.ref.reportValidity()}}},t=function(o,t){t.shouldUseNativeValidation&&n(o,t);var i={};for(var s in o){var a=r(t.fields,s);e(i,s,Object.assign(o[s],{ref:a&&a.ref}))}return i},i=function(r,e){for(var n={};r.length;){var t=r[0],i=t.code,s=t.message,a=t.path.join(".");if(!n[a])if("unionErrors"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:s,type:i};if("unionErrors"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var f=n[a].types,c=f&&f[t.code];n[a]=o(a,e,n,i,c?[].concat(c,t.message):t.message)}r.shift()}return n},s=function(r,e,o){return void 0===o&&(o={}),function(s,a,u){try{return Promise.resolve(function(t,i){try{var a=Promise.resolve(r["sync"===o.mode?"parse":"parseAsync"](s,e)).then(function(r){return u.shouldUseNativeValidation&&n({},u),{errors:{},values:r}})}catch(r){return i(r)}return a&&a.then?a.then(void 0,i):a}(0,function(r){return{values:{},errors:r.isEmpty?{}:t(i(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)}}))}catch(r){return Promise.reject(r)}}};export{n as validateFieldsNatively,s as zodResolver};
|
|
2
2
|
//# sourceMappingURL=zod.module.js.map
|
package/zod/dist/zod.modern.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{appendErrors as
|
|
1
|
+
import{get as e,set as r,appendErrors as s}from"react-hook-form";const o=(r,s)=>{for(const o in s.fields){const t=s.fields[o];if(t&&t.ref&&"reportValidity"in t.ref){const s=e(r,o);t.ref.setCustomValidity(s&&s.message||""),t.ref.reportValidity()}}},t=(s,t)=>{t.shouldUseNativeValidation&&o(s,t);const i={};for(const o in s){const n=e(t.fields,o);r(i,o,Object.assign(s[o],{ref:n&&n.ref}))}return i},i=(e,r)=>{const o={};for(;e.length;){const t=e[0],{code:i,message:n,path:a}=t,c=a.join(".");if(!o[c])if("unionErrors"in t){const e=t.unionErrors[0].errors[0];o[c]={message:e.message,type:e.code}}else o[c]={message:n,type:i};if("unionErrors"in t&&t.unionErrors.forEach(r=>r.errors.forEach(r=>e.push(r))),r){const e=o[c].types,n=e&&e[t.code];o[c]=s(c,r,o,i,n?[].concat(n,t.message):t.message)}e.shift()}return o},n=(e,r,s={})=>async(n,a,c)=>{try{const t=await e["sync"===s.mode?"parse":"parseAsync"](n,r);return c.shouldUseNativeValidation&&o({},c),{errors:{},values:t}}catch(e){return{values:{},errors:e.isEmpty?{}:t(i(e.errors,!c.shouldUseNativeValidation&&"all"===c.criteriaMode),c)}}};export{o as validateFieldsNatively,n as zodResolver};
|
|
2
2
|
//# sourceMappingURL=zod.modern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.modern.js","sources":["../src/zod.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"zod.modern.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n set,\n get,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport type { Resolver } from './types';\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n\n if (field && field.ref && 'reportValidity' in field.ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n\n field.ref.setCustomValidity((error && error.message) || '');\n\n field.ref.reportValidity();\n }\n }\n};\n\nconst toNestError = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n\nconst parseErrorSchema = (\n zodErrors: z.ZodIssue[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; zodErrors.length; ) {\n const error = zodErrors[0];\n const { code, message, path } = error;\n const _path = path.join('.');\n\n if (!errors[_path]) {\n if ('unionErrors' in error) {\n const unionError = error.unionErrors[0].errors[0];\n\n errors[_path] = {\n message: unionError.message,\n type: unionError.code,\n };\n } else {\n errors[_path] = { message, type: code };\n }\n }\n\n if ('unionErrors' in error) {\n error.unionErrors.forEach((unionError) =>\n unionError.errors.forEach((e) => zodErrors.push(e)),\n );\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.code];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const data = await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {} as FieldErrors,\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(\n error.errors,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign","parseErrorSchema","zodErrors","validateAllFieldCriteria","length","code","_path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","async","values","_","data","mode","isEmpty","criteriaMode"],"mappings":"iEAaaA,MAAAA,EAAyB,CACpCC,EACAC,KAEA,IAAK,MAAMC,KAAaD,EAAQE,OAAQ,CACtC,MAAMC,EAAQH,EAAQE,OAAOD,GAE7B,GAAIE,GAASA,EAAMC,KAAO,mBAAoBD,EAAMC,IAAK,CACvD,MAAMC,EAAQC,EAAIP,EAAQE,GAE1BE,EAAMC,IAAIG,kBAAmBF,GAASA,EAAMG,SAAY,IAExDL,EAAMC,IAAIK,oBAKVC,EAAc,CAClBX,EACAC,KAEAA,EAAQW,2BAA6Bb,EAAuBC,EAAQC,GAEpE,MAAMY,EAAc,GACpB,IAAK,MAAMC,KAAQd,EAAQ,CACzB,MAAMI,EAAQG,EAAIN,EAAQE,OAAQW,GAElCC,EACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAET,IAAKD,GAASA,EAAMC,OAItD,OAAOQ,GAGHK,EAAmB,CACvBC,EACAC,KAEA,MAAMpB,EAAqC,GAC3C,KAAOmB,EAAUE,QAAU,CACzB,MAAMf,EAAQa,EAAU,IAClBG,KAAEA,EAAFb,QAAQA,EAARK,KAAiBA,GAASR,EAC1BiB,EAAQT,EAAKU,KAAK,KAExB,IAAKxB,EAAOuB,GACV,GAAI,gBAAiBjB,EAAO,CAC1B,MAAMmB,EAAanB,EAAMoB,YAAY,GAAG1B,OAAO,GAE/CA,EAAOuB,GAAS,CACdd,QAASgB,EAAWhB,QACpBkB,KAAMF,EAAWH,WAGnBtB,EAAOuB,GAAS,CAAEd,QAAAA,EAASkB,KAAML,GAUrC,GANI,gBAAiBhB,GACnBA,EAAMoB,YAAYE,QAASH,GACzBA,EAAWzB,OAAO4B,QAASC,GAAMV,EAAUW,KAAKD,KAIhDT,EAA0B,CAC5B,MAAMW,EAAQ/B,EAAOuB,GAAOQ,MACtBC,EAAWD,GAASA,EAAMzB,EAAMgB,MAEtCtB,EAAOuB,GAASU,EACdV,EACAH,EACApB,EACAsB,EACAU,EACK,GAAgBE,OAAOF,EAAsB1B,EAAMG,SACpDH,EAAMG,SAIdU,EAAUgB,QAGZ,OAAOnC,GAGIoC,EACX,CAACC,EAAQC,EAAeC,EAAkB,KAC1CC,MAAOC,EAAQC,EAAGzC,KAChB,IACE,MAAM0C,QAAaN,EACQ,SAAzBE,EAAgBK,KAAkB,QAAU,cAC5CH,EAAQH,GAIV,OAFArC,EAAQW,2BAA6Bb,EAAuB,GAAIE,GAEzD,CACLD,OAAQ,GACRyC,OAAQE,GAEV,MAAOrC,GACP,MAAO,CACLmC,OAAQ,GACRzC,OAAQM,EAAMuC,QACV,GACAlC,EACEO,EACEZ,EAAMN,QACLC,EAAQW,2BACkB,QAAzBX,EAAQ6C,cAEZ7C"}
|
package/zod/dist/zod.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{appendErrors as
|
|
1
|
+
import{get as r,set as e,appendErrors as o}from"react-hook-form";var n=function(e,o){for(var n in o.fields){var t=o.fields[n];if(t&&t.ref&&"reportValidity"in t.ref){var i=r(e,n);t.ref.setCustomValidity(i&&i.message||""),t.ref.reportValidity()}}},t=function(o,t){t.shouldUseNativeValidation&&n(o,t);var i={};for(var s in o){var a=r(t.fields,s);e(i,s,Object.assign(o[s],{ref:a&&a.ref}))}return i},i=function(r,e){for(var n={};r.length;){var t=r[0],i=t.code,s=t.message,a=t.path.join(".");if(!n[a])if("unionErrors"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:s,type:i};if("unionErrors"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var f=n[a].types,c=f&&f[t.code];n[a]=o(a,e,n,i,c?[].concat(c,t.message):t.message)}r.shift()}return n},s=function(r,e,o){return void 0===o&&(o={}),function(s,a,u){try{return Promise.resolve(function(t,i){try{var a=Promise.resolve(r["sync"===o.mode?"parse":"parseAsync"](s,e)).then(function(r){return u.shouldUseNativeValidation&&n({},u),{errors:{},values:r}})}catch(r){return i(r)}return a&&a.then?a.then(void 0,i):a}(0,function(r){return{values:{},errors:r.isEmpty?{}:t(i(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)}}))}catch(r){return Promise.reject(r)}}};export{n as validateFieldsNatively,s as zodResolver};
|
|
2
2
|
//# sourceMappingURL=zod.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.module.js","sources":["../src/zod.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"zod.module.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n set,\n get,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport type { Resolver } from './types';\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n\n if (field && field.ref && 'reportValidity' in field.ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n\n field.ref.setCustomValidity((error && error.message) || '');\n\n field.ref.reportValidity();\n }\n }\n};\n\nconst toNestError = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n\nconst parseErrorSchema = (\n zodErrors: z.ZodIssue[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; zodErrors.length; ) {\n const error = zodErrors[0];\n const { code, message, path } = error;\n const _path = path.join('.');\n\n if (!errors[_path]) {\n if ('unionErrors' in error) {\n const unionError = error.unionErrors[0].errors[0];\n\n errors[_path] = {\n message: unionError.message,\n type: unionError.code,\n };\n } else {\n errors[_path] = { message, type: code };\n }\n }\n\n if ('unionErrors' in error) {\n error.unionErrors.forEach((unionError) =>\n unionError.errors.forEach((e) => zodErrors.push(e)),\n );\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.code];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const data = await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {} as FieldErrors,\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(\n error.errors,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign","parseErrorSchema","zodErrors","validateAllFieldCriteria","length","code","_path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","values","_","mode","data","isEmpty","criteriaMode"],"mappings":"iEAaaA,IAAAA,EAAyB,SACpCC,EACAC,GAEA,IAAK,IAAMC,KAAaD,EAAQE,OAAQ,CACtC,IAAMC,EAAQH,EAAQE,OAAOD,GAE7B,GAAIE,GAASA,EAAMC,KAAO,mBAAoBD,EAAMC,IAAK,CACvD,IAAMC,EAAQC,EAAIP,EAAQE,GAE1BE,EAAMC,IAAIG,kBAAmBF,GAASA,EAAMG,SAAY,IAExDL,EAAMC,IAAIK,oBAKVC,EAAc,SAClBX,EACAC,GAEAA,EAAQW,2BAA6Bb,EAAuBC,EAAQC,GAEpE,IAAMY,EAAc,GACpB,IAAK,IAAMC,KAAQd,EAAQ,CACzB,IAAMI,EAAQG,EAAIN,EAAQE,OAAQW,GAElCC,EACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAET,IAAKD,GAASA,EAAMC,OAItD,OAAOQ,GAGHK,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMpB,EAAqC,GACpCmB,EAAUE,QAAU,CACzB,IAAMf,EAAQa,EAAU,GAChBG,EAAwBhB,EAAxBgB,KAAMb,EAAkBH,EAAlBG,QACRc,EAD0BjB,EAATQ,KACJU,KAAK,KAExB,IAAKxB,EAAOuB,GACV,GAAI,gBAAiBjB,EAAO,CAC1B,IAAMmB,EAAanB,EAAMoB,YAAY,GAAG1B,OAAO,GAE/CA,EAAOuB,GAAS,CACdd,QAASgB,EAAWhB,QACpBkB,KAAMF,EAAWH,WAGnBtB,EAAOuB,GAAS,CAAEd,QAAAA,EAASkB,KAAML,GAUrC,GANI,gBAAiBhB,GACnBA,EAAMoB,YAAYE,QAAQ,SAACH,UACzBA,EAAWzB,OAAO4B,QAAQ,SAACC,UAAMV,EAAUW,KAAKD,OAIhDT,EAA0B,CAC5B,IAAMW,EAAQ/B,EAAOuB,GAAOQ,MACtBC,EAAWD,GAASA,EAAMzB,EAAMgB,MAEtCtB,EAAOuB,GAASU,EACdV,EACAH,EACApB,EACAsB,EACAU,EACK,GAAgBE,OAAOF,EAAsB1B,EAAMG,SACpDH,EAAMG,SAIdU,EAAUgB,QAGZ,OAAOnC,GAGIoC,EACX,SAACC,EAAQC,EAAeC,mBAAAA,IAAAA,EAAkB,aACnCC,EAAQC,EAAGxC,sEAEKoC,EACQ,SAAzBE,EAAgBG,KAAkB,QAAU,cAC5CF,EAAQF,kBAFJK,GAMN,OAFA1C,EAAQW,2BAA6Bb,EAAuB,GAAIE,GAEzD,CACLD,OAAQ,GACRwC,OAAQG,0EAEHrC,GACP,MAAO,CACLkC,OAAQ,GACRxC,OAAQM,EAAMsC,QACV,GACAjC,EACEO,EACEZ,EAAMN,QACLC,EAAQW,2BACkB,QAAzBX,EAAQ4C,cAEZ5C,OAxBZ"}
|
package/zod/dist/zod.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react-hook-form")
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","react-hook-form"],r):r((e||self).hookformResolversZod={},e.reactHookForm)}(this,function(e,r){var o=function(e,o){for(var t in o.fields){var n=o.fields[t];if(n&&n.ref&&"reportValidity"in n.ref){var i=r.get(e,t);n.ref.setCustomValidity(i&&i.message||""),n.ref.reportValidity()}}},t=function(e,t){t.shouldUseNativeValidation&&o(e,t);var n={};for(var i in e){var s=r.get(t.fields,i);r.set(n,i,Object.assign(e[i],{ref:s&&s.ref}))}return n},n=function(e,o){for(var t={};e.length;){var n=e[0],i=n.code,s=n.message,a=n.path.join(".");if(!t[a])if("unionErrors"in n){var f=n.unionErrors[0].errors[0];t[a]={message:f.message,type:f.code}}else t[a]={message:s,type:i};if("unionErrors"in n&&n.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var u=t[a].types,c=u&&u[n.code];t[a]=r.appendErrors(a,o,t,i,c?[].concat(c,n.message):n.message)}e.shift()}return t};e.validateFieldsNatively=o,e.zodResolver=function(e,r,i){return void 0===i&&(i={}),function(s,a,f){try{return Promise.resolve(function(t,n){try{var a=Promise.resolve(e["sync"===i.mode?"parse":"parseAsync"](s,r)).then(function(e){return f.shouldUseNativeValidation&&o({},f),{errors:{},values:e}})}catch(e){return n(e)}return a&&a.then?a.then(void 0,n):a}(0,function(e){return{values:{},errors:e.isEmpty?{}:t(n(e.errors,!f.shouldUseNativeValidation&&"all"===f.criteriaMode),f)}}))}catch(e){return Promise.reject(e)}}}});
|
|
2
2
|
//# sourceMappingURL=zod.umd.js.map
|
package/zod/dist/zod.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.umd.js","sources":["../src/zod.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"zod.umd.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n set,\n get,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport type { Resolver } from './types';\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n\n if (field && field.ref && 'reportValidity' in field.ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n\n field.ref.setCustomValidity((error && error.message) || '');\n\n field.ref.reportValidity();\n }\n }\n};\n\nconst toNestError = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n\nconst parseErrorSchema = (\n zodErrors: z.ZodIssue[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; zodErrors.length; ) {\n const error = zodErrors[0];\n const { code, message, path } = error;\n const _path = path.join('.');\n\n if (!errors[_path]) {\n if ('unionErrors' in error) {\n const unionError = error.unionErrors[0].errors[0];\n\n errors[_path] = {\n message: unionError.message,\n type: unionError.code,\n };\n } else {\n errors[_path] = { message, type: code };\n }\n }\n\n if ('unionErrors' in error) {\n error.unionErrors.forEach((unionError) =>\n unionError.errors.forEach((e) => zodErrors.push(e)),\n );\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.code];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const data = await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {} as FieldErrors,\n values: data,\n };\n } catch (error: any) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(\n error.errors,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign","parseErrorSchema","zodErrors","validateAllFieldCriteria","length","code","_path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","mode","data","isEmpty","criteriaMode"],"mappings":"6SAaaA,IAAAA,EAAyB,SACpCC,EACAC,GAEA,IAAK,IAAMC,KAAaD,EAAQE,OAAQ,CACtC,IAAMC,EAAQH,EAAQE,OAAOD,GAE7B,GAAIE,GAASA,EAAMC,KAAO,mBAAoBD,EAAMC,IAAK,CACvD,IAAMC,EAAQC,MAAIP,EAAQE,GAE1BE,EAAMC,IAAIG,kBAAmBF,GAASA,EAAMG,SAAY,IAExDL,EAAMC,IAAIK,oBAKVC,EAAc,SAClBX,EACAC,GAEAA,EAAQW,2BAA6Bb,EAAuBC,EAAQC,GAEpE,IAAMY,EAAc,GACpB,IAAK,IAAMC,KAAQd,EAAQ,CACzB,IAAMI,EAAQG,MAAIN,EAAQE,OAAQW,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAET,IAAKD,GAASA,EAAMC,OAItD,OAAOQ,GAGHK,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMpB,EAAqC,GACpCmB,EAAUE,QAAU,CACzB,IAAMf,EAAQa,EAAU,GAChBG,EAAwBhB,EAAxBgB,KAAMb,EAAkBH,EAAlBG,QACRc,EAD0BjB,EAATQ,KACJU,KAAK,KAExB,IAAKxB,EAAOuB,GACV,GAAI,gBAAiBjB,EAAO,CAC1B,IAAMmB,EAAanB,EAAMoB,YAAY,GAAG1B,OAAO,GAE/CA,EAAOuB,GAAS,CACdd,QAASgB,EAAWhB,QACpBkB,KAAMF,EAAWH,WAGnBtB,EAAOuB,GAAS,CAAEd,QAAAA,EAASkB,KAAML,GAUrC,GANI,gBAAiBhB,GACnBA,EAAMoB,YAAYE,QAAQ,SAACH,UACzBA,EAAWzB,OAAO4B,QAAQ,SAACC,UAAMV,EAAUW,KAAKD,OAIhDT,EAA0B,CAC5B,IAAMW,EAAQ/B,EAAOuB,GAAOQ,MACtBC,EAAWD,GAASA,EAAMzB,EAAMgB,MAEtCtB,EAAOuB,GAASU,eACdV,EACAH,EACApB,EACAsB,EACAU,EACK,GAAgBE,OAAOF,EAAsB1B,EAAMG,SACpDH,EAAMG,SAIdU,EAAUgB,QAGZ,OAAOnC,4CAIP,SAACoC,EAAQC,EAAeC,mBAAAA,IAAAA,EAAkB,aACnCC,EAAQC,EAAGvC,sEAEKmC,EACQ,SAAzBE,EAAgBG,KAAkB,QAAU,cAC5CF,EAAQF,kBAFJK,GAMN,OAFAzC,EAAQW,2BAA6Bb,EAAuB,GAAIE,GAEzD,CACLD,OAAQ,GACRuC,OAAQG,0EAEHpC,GACP,MAAO,CACLiC,OAAQ,GACRvC,OAAQM,EAAMqC,QACV,GACAhC,EACEO,EACEZ,EAAMN,QACLC,EAAQW,2BACkB,QAAzBX,EAAQ2C,cAEZ3C,OAxBZ"}
|
package/zod/src/zod.ts
CHANGED
|
@@ -1,8 +1,53 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
appendErrors,
|
|
3
|
+
FieldError,
|
|
4
|
+
FieldErrors,
|
|
5
|
+
set,
|
|
6
|
+
get,
|
|
7
|
+
Field,
|
|
8
|
+
ResolverOptions,
|
|
9
|
+
} from 'react-hook-form';
|
|
2
10
|
import { z } from 'zod';
|
|
3
|
-
import { toNestError, validateFieldsNatively } from '@hookform/resolvers';
|
|
4
11
|
import type { Resolver } from './types';
|
|
5
12
|
|
|
13
|
+
// Native validation (web only)
|
|
14
|
+
export const validateFieldsNatively = <TFieldValues>(
|
|
15
|
+
errors: Record<string, FieldError>,
|
|
16
|
+
options: ResolverOptions<TFieldValues>,
|
|
17
|
+
): void => {
|
|
18
|
+
for (const fieldPath in options.fields) {
|
|
19
|
+
const field = options.fields[fieldPath];
|
|
20
|
+
|
|
21
|
+
if (field && field.ref && 'reportValidity' in field.ref) {
|
|
22
|
+
const error = get(errors, fieldPath) as FieldError | undefined;
|
|
23
|
+
|
|
24
|
+
field.ref.setCustomValidity((error && error.message) || '');
|
|
25
|
+
|
|
26
|
+
field.ref.reportValidity();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const toNestError = <TFieldValues>(
|
|
32
|
+
errors: Record<string, FieldError>,
|
|
33
|
+
options: ResolverOptions<TFieldValues>,
|
|
34
|
+
): FieldErrors<TFieldValues> => {
|
|
35
|
+
options.shouldUseNativeValidation && validateFieldsNatively(errors, options);
|
|
36
|
+
|
|
37
|
+
const fieldErrors = {} as FieldErrors<TFieldValues>;
|
|
38
|
+
for (const path in errors) {
|
|
39
|
+
const field = get(options.fields, path) as Field['_f'] | undefined;
|
|
40
|
+
|
|
41
|
+
set(
|
|
42
|
+
fieldErrors,
|
|
43
|
+
path,
|
|
44
|
+
Object.assign(errors[path], { ref: field && field.ref }),
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return fieldErrors;
|
|
49
|
+
};
|
|
50
|
+
|
|
6
51
|
const parseErrorSchema = (
|
|
7
52
|
zodErrors: z.ZodIssue[],
|
|
8
53
|
validateAllFieldCriteria: boolean,
|