@hookform/resolvers 2.8.6 → 2.8.9

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 CHANGED
@@ -84,7 +84,7 @@ import { zodResolver } from '@hookform/resolvers/zod';
84
84
  import * as z from 'zod';
85
85
 
86
86
  const schema = z.object({
87
- name: z.string().nonempty({ message: 'Required' }),
87
+ name: z.string().min(1, { message: 'Required' }),
88
88
  age: z.number().min(10),
89
89
  });
90
90
 
package/dist/resolvers.js CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("react-hook-form"),r=function(r,i){for(var t in i.fields){var a=i.fields[t];if(a&&a.ref&&"reportValidity"in a.ref){var o=e.get(r,t);a.ref.setCustomValidity(o&&o.message||""),a.ref.reportValidity()}}};exports.toNestError=function(i,t){t.shouldUseNativeValidation&&r(i,t);var a={};for(var o in i){var s=e.get(t.fields,o);e.set(a,o,Object.assign(i[o],{ref:s&&s.ref}))}return a},exports.validateFieldsNatively=r;
1
+ var r=require("react-hook-form"),e=function(e,i,t){if(e&&"reportValidity"in e){var a=r.get(t,i);e.setCustomValidity(a&&a.message||""),e.reportValidity()}},i=function(r,i){var t=function(t){var a=i.fields[t];a&&a.ref&&"reportValidity"in a.ref?e(a.ref,t,r):a.refs&&a.refs.forEach(function(i){return e(i,t,r)})};for(var a in i.fields)t(a)};exports.toNestError=function(e,t){t.shouldUseNativeValidation&&i(e,t);var a={};for(var o in e){var f=r.get(t.fields,o);r.set(a,o,Object.assign(e[o],{ref:f&&f.ref}))}return a},exports.validateFieldsNatively=i;
2
2
  //# sourceMappingURL=resolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import { get, FieldError, ResolverOptions } from 'react-hook-form';\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","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"iCAGaA,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,wCCLW,SACzBV,EACAC,GAEAA,EAAQU,2BAA6BZ,EAAuBC,EAAQC,GAEpE,IAAMW,EAAc,GACpB,IAAK,IAAMC,KAAQb,EAAQ,CACzB,IAAMI,EAAQG,MAAIN,EAAQE,OAAQU,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOhB,EAAOa,GAAO,CAAER,IAAKD,GAASA,EAAMC,OAItD,OAAOO"}
1
+ {"version":3,"file":"resolvers.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: Record<string, FieldError>) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","field","fields","refs","forEach","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"iCAIMA,EAAoB,SAACC,EAAUC,EAAmBC,GACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,IAAMG,EAAQC,MAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,SACpCL,EACAM,kBAIWP,GACT,IAAMQ,EAAQD,EAAQE,OAAOT,GACzBQ,GAASA,EAAMT,KAAO,mBAAoBS,EAAMT,IAClDD,EAAkBU,EAAMT,IAAKC,EAAWC,GAC/BO,EAAME,MACfF,EAAME,KAAKC,QAAQ,SAACZ,UAA0BD,EAAkBC,EAAKC,EAAWC,MALpF,IAAK,IAAMD,KAAaO,EAAQE,SAArBT,wBCVc,SACzBC,EACAM,GAEAA,EAAQK,2BAA6BN,EAAuBL,EAAQM,GAEpE,IAAMM,EAAc,GACpB,IAAK,IAAMC,KAAQb,EAAQ,CACzB,IAAMO,EAAQL,MAAII,EAAQE,OAAQK,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOhB,EAAOa,GAAO,CAAEf,IAAKS,GAASA,EAAMT,OAItD,OAAOc"}
@@ -1,2 +1,2 @@
1
- import{get as r,set as e}from"react-hook-form";var i=function(e,i){for(var a in i.fields){var f=i.fields[a];if(f&&f.ref&&"reportValidity"in f.ref){var t=r(e,a);f.ref.setCustomValidity(t&&t.message||""),f.ref.reportValidity()}}},a=function(a,f){f.shouldUseNativeValidation&&i(a,f);var t={};for(var o in a){var s=r(f.fields,o);e(t,o,Object.assign(a[o],{ref:s&&s.ref}))}return t};export{a as toNestError,i as validateFieldsNatively};
1
+ import{get as r,set as i}from"react-hook-form";var e=function(i,e,t){if(i&&"reportValidity"in i){var f=r(t,e);i.setCustomValidity(f&&f.message||""),i.reportValidity()}},t=function(r,i){var t=function(t){var f=i.fields[t];f&&f.ref&&"reportValidity"in f.ref?e(f.ref,t,r):f.refs&&f.refs.forEach(function(i){return e(i,t,r)})};for(var f in i.fields)t(f)},f=function(e,f){f.shouldUseNativeValidation&&t(e,f);var o={};for(var a in e){var n=r(f.fields,a);i(o,a,Object.assign(e[a],{ref:n&&n.ref}))}return o};export{f as toNestError,t as validateFieldsNatively};
2
2
  //# sourceMappingURL=resolvers.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.mjs","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import { get, FieldError, ResolverOptions } from 'react-hook-form';\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","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"+CAGaA,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,oBCLHC,EAAc,CACzBX,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"}
1
+ {"version":3,"file":"resolvers.mjs","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: Record<string, FieldError>) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","fields","field","refs","forEach","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"+CAIA,MAAMA,EAAoB,CAACC,EAAUC,EAAmBC,KACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,MAAMG,EAAQC,EAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,CACpCL,EACAM,KAIA,IAAK,MAAMP,KAAaO,EAAQC,OAAQ,CACtC,MAAMC,EAAQF,EAAQC,OAAOR,GACzBS,GAASA,EAAMV,KAAO,mBAAoBU,EAAMV,IAClDD,EAAkBW,EAAMV,IAAKC,EAAWC,GAC/BQ,EAAMC,MACfD,EAAMC,KAAKC,QAASZ,GAA0BD,EAAkBC,EAAKC,EAAWC,MCfzEW,EAAc,CACzBX,EACAM,KAEAA,EAAQM,2BAA6BP,EAAuBL,EAAQM,GAEpE,MAAMO,EAAc,GACpB,IAAK,MAAMC,KAAQd,EAAQ,CACzB,MAAMQ,EAAQN,EAAII,EAAQC,OAAQO,GAElCC,EACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAEhB,IAAKU,GAASA,EAAMV,OAItD,OAAOe"}
@@ -1,2 +1,2 @@
1
- import{get as r,set as e}from"react-hook-form";var i=function(e,i){for(var a in i.fields){var f=i.fields[a];if(f&&f.ref&&"reportValidity"in f.ref){var t=r(e,a);f.ref.setCustomValidity(t&&t.message||""),f.ref.reportValidity()}}},a=function(a,f){f.shouldUseNativeValidation&&i(a,f);var t={};for(var o in a){var s=r(f.fields,o);e(t,o,Object.assign(a[o],{ref:s&&s.ref}))}return t};export{a as toNestError,i as validateFieldsNatively};
1
+ import{get as r,set as i}from"react-hook-form";var e=function(i,e,t){if(i&&"reportValidity"in i){var f=r(t,e);i.setCustomValidity(f&&f.message||""),i.reportValidity()}},t=function(r,i){var t=function(t){var f=i.fields[t];f&&f.ref&&"reportValidity"in f.ref?e(f.ref,t,r):f.refs&&f.refs.forEach(function(i){return e(i,t,r)})};for(var f in i.fields)t(f)},f=function(e,f){f.shouldUseNativeValidation&&t(e,f);var o={};for(var a in e){var n=r(f.fields,a);i(o,a,Object.assign(e[a],{ref:n&&n.ref}))}return o};export{f as toNestError,t as validateFieldsNatively};
2
2
  //# sourceMappingURL=resolvers.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.module.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import { get, FieldError, ResolverOptions } from 'react-hook-form';\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","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"+CAGaA,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,oBCLHC,EAAc,SACzBX,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"}
1
+ {"version":3,"file":"resolvers.module.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: Record<string, FieldError>) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","field","fields","refs","forEach","toNestError","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"+CAIA,IAAMA,EAAoB,SAACC,EAAUC,EAAmBC,GACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,IAAMG,EAAQC,EAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,SACpCL,EACAM,kBAIWP,GACT,IAAMQ,EAAQD,EAAQE,OAAOT,GACzBQ,GAASA,EAAMT,KAAO,mBAAoBS,EAAMT,IAClDD,EAAkBU,EAAMT,IAAKC,EAAWC,GAC/BO,EAAME,MACfF,EAAME,KAAKC,QAAQ,SAACZ,UAA0BD,EAAkBC,EAAKC,EAAWC,MALpF,IAAK,IAAMD,KAAaO,EAAQE,SAArBT,ICVAY,EAAc,SACzBX,EACAM,GAEAA,EAAQM,2BAA6BP,EAAuBL,EAAQM,GAEpE,IAAMO,EAAc,GACpB,IAAK,IAAMC,KAAQd,EAAQ,CACzB,IAAMO,EAAQL,EAAII,EAAQE,OAAQM,GAElCC,EACEF,EACAC,EACAE,OAAOC,OAAOjB,EAAOc,GAAO,CAAEhB,IAAKS,GAASA,EAAMT,OAItD,OAAOe"}
@@ -1,2 +1,2 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","react-hook-form"],o):o((e||self).hookformResolvers={},e.reactHookForm)}(this,function(e,o){var r=function(e,r){for(var t in r.fields){var i=r.fields[t];if(i&&i.ref&&"reportValidity"in i.ref){var f=o.get(e,t);i.ref.setCustomValidity(f&&f.message||""),i.ref.reportValidity()}}};e.toNestError=function(e,t){t.shouldUseNativeValidation&&r(e,t);var i={};for(var f in e){var a=o.get(t.fields,f);o.set(i,f,Object.assign(e[f],{ref:a&&a.ref}))}return i},e.validateFieldsNatively=r});
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).hookformResolvers={},e.reactHookForm)}(this,function(e,r){var o=function(e,o,t){if(e&&"reportValidity"in e){var i=r.get(t,o);e.setCustomValidity(i&&i.message||""),e.reportValidity()}},t=function(e,r){var t=function(t){var i=r.fields[t];i&&i.ref&&"reportValidity"in i.ref?o(i.ref,t,e):i.refs&&i.refs.forEach(function(r){return o(r,t,e)})};for(var i in r.fields)t(i)};e.toNestError=function(e,o){o.shouldUseNativeValidation&&t(e,o);var i={};for(var f in e){var n=r.get(o.fields,f);r.set(i,f,Object.assign(e[f],{ref:n&&n.ref}))}return i},e.validateFieldsNatively=t});
2
2
  //# sourceMappingURL=resolvers.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.umd.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import { get, FieldError, ResolverOptions } from 'react-hook-form';\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","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["validateFieldsNatively","errors","options","fieldPath","fields","field","ref","error","get","setCustomValidity","message","reportValidity","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"8SAGaA,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,kCCLW,SACzBV,EACAC,GAEAA,EAAQU,2BAA6BZ,EAAuBC,EAAQC,GAEpE,IAAMW,EAAc,GACpB,IAAK,IAAMC,KAAQb,EAAQ,CACzB,IAAMI,EAAQG,MAAIN,EAAQE,OAAQU,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOhB,EAAOa,GAAO,CAAER,IAAKD,GAASA,EAAMC,OAItD,OAAOO"}
1
+ {"version":3,"file":"resolvers.umd.js","sources":["../src/validateFieldsNatively.ts","../src/toNestError.ts"],"sourcesContent":["import {\n get, FieldError, ResolverOptions, Ref\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: Record<string, FieldError>) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: Record<string, FieldError>,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldError,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const 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"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","field","fields","refs","forEach","shouldUseNativeValidation","fieldErrors","path","set","Object","assign"],"mappings":"0SAIA,IAAMA,EAAoB,SAACC,EAAUC,EAAmBC,GACtD,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,IAAMG,EAAQC,MAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,mBAKKC,EAAyB,SACpCL,EACAM,kBAIWP,GACT,IAAMQ,EAAQD,EAAQE,OAAOT,GACzBQ,GAASA,EAAMT,KAAO,mBAAoBS,EAAMT,IAClDD,EAAkBU,EAAMT,IAAKC,EAAWC,GAC/BO,EAAME,MACfF,EAAME,KAAKC,QAAQ,SAACZ,UAA0BD,EAAkBC,EAAKC,EAAWC,MALpF,IAAK,IAAMD,KAAaO,EAAQE,SAArBT,kBCVc,SACzBC,EACAM,GAEAA,EAAQK,2BAA6BN,EAAuBL,EAAQM,GAEpE,IAAMM,EAAc,GACpB,IAAK,IAAMC,KAAQb,EAAQ,CACzB,IAAMO,EAAQL,MAAII,EAAQE,OAAQK,GAElCC,MACEF,EACAC,EACAE,OAAOC,OAAOhB,EAAOa,GAAO,CAAEf,IAAKS,GAASA,EAAMT,OAItD,OAAOc"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hookform/resolvers",
3
3
  "amdName": "hookformResolvers",
4
- "version": "2.8.6",
4
+ "version": "2.8.9",
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",
@@ -192,7 +192,7 @@
192
192
  "prettier": "^2.5.1",
193
193
  "react": "^17.0.2",
194
194
  "react-dom": "^17.0.2",
195
- "react-hook-form": "7.24.0",
195
+ "react-hook-form": "7.29.0",
196
196
  "reflect-metadata": "^0.1.13",
197
197
  "superstruct": "^0.15.3",
198
198
  "ts-jest": "^27.1.3",
@@ -1,5 +1,13 @@
1
1
  import { FieldValues, ResolverResult, UnpackNestedValue, ResolverOptions } from 'react-hook-form';
2
2
  import { z } from 'zod';
3
3
  export declare type Resolver = <T extends z.Schema<any, any>>(schema: T, schemaOptions?: Partial<z.ParseParams>, factoryOptions?: {
4
+ /**
5
+ * @default async
6
+ */
4
7
  mode?: 'async' | 'sync';
8
+ /**
9
+ * Return the raw input values rather than the parsed values.
10
+ * @default false
11
+ */
12
+ rawValues?: boolean;
5
13
  }) => <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>;
package/zod/dist/zod.d.ts CHANGED
@@ -1,4 +1,2 @@
1
- import { FieldError, ResolverOptions } from 'react-hook-form';
2
1
  import type { Resolver } from './types';
3
- export declare const validateFieldsNatively: <TFieldValues>(errors: Record<string, FieldError>, options: ResolverOptions<TFieldValues>) => void;
4
2
  export declare const zodResolver: Resolver;
package/zod/dist/zod.js CHANGED
@@ -1,2 +1,2 @@
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)}}};
1
+ var r=require("react-hook-form"),e=require("@hookform/resolvers"),o=function(e,o){for(var s={};e.length;){var n=e[0],t=n.code,i=n.message,a=n.path.join(".");if(!s[a])if("unionErrors"in n){var u=n.unionErrors[0].errors[0];s[a]={message:u.message,type:u.code}}else s[a]={message:i,type:t};if("unionErrors"in n&&n.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var c=s[a].types,l=c&&c[n.code];s[a]=r.appendErrors(a,o,s,t,l?[].concat(l,n.message):n.message)}e.shift()}return s};exports.zodResolver=function(r,s,n){return void 0===n&&(n={}),function(t,i,a){try{return Promise.resolve(function(o,i){try{var u=Promise.resolve(r["sync"===n.mode?"parse":"parseAsync"](t,s)).then(function(r){return a.shouldUseNativeValidation&&e.validateFieldsNatively({},a),{errors:{},values:n.rawValues?t:r}})}catch(r){return i(r)}return u&&u.then?u.then(void 0,i):u}(0,function(r){return{values:{},errors:r.isEmpty?{}:e.toNestError(o(r.errors,!a.shouldUseNativeValidation&&"all"===a.criteriaMode),a)}}))}catch(r){return Promise.reject(r)}}};
2
2
  //# sourceMappingURL=zod.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"zod.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\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: resolverOptions.rawValues ? 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":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","options","mode","data","shouldUseNativeValidation","validateFieldsNatively","rawValues","isEmpty","toNestError","criteriaMode"],"mappings":"kEASMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAS,CACxB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAExB,IAAKP,EAAOK,GACV,GAAI,gBAAiBH,EAAO,CAC1B,IAAMM,EAAaN,EAAMO,YAAY,GAAGT,OAAO,GAE/CA,EAAOK,GAAS,CACdD,QAASI,EAAWJ,QACpBM,KAAMF,EAAWL,WAGnBH,EAAOK,GAAS,CAAED,QAAAA,EAASM,KAAMP,GAUrC,GANI,gBAAiBD,GACnBA,EAAMO,YAAYE,QAAQ,SAACH,UACzBA,EAAWR,OAAOW,QAAQ,SAACC,UAAMd,EAAUe,KAAKD,OAIhDb,EAA0B,CAC5B,IAAMe,EAAQd,EAAOK,GAAOS,MACtBC,EAAWD,GAASA,EAAMZ,EAAMC,MAEtCH,EAAOK,GAASW,eACdX,EACAN,EACAC,EACAG,EACAY,EACK,GAAgBE,OAAOF,EAAsBb,EAAME,SACpDF,EAAME,SAIdN,EAAUoB,QAGZ,OAAOlB,uBAIP,SAACmB,EAAQC,EAAeC,mBAAAA,IAAAA,EAAkB,aACjCC,EAAQC,EAAGC,sEAEKL,EACQ,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,kBAFJM,GAMN,OAFAF,EAAQG,2BAA6BC,yBAAuB,GAAIJ,GAEzD,CACLxB,OAAQ,GACRsB,OAAQD,EAAgBQ,UAAYP,EAASI,0EAExCxB,GACP,MAAO,CACLoB,OAAQ,GACRtB,OAAQE,EAAM4B,QACV,GACAC,cACAlC,EACEK,EAAMF,QACLwB,EAAQG,2BACgB,QAAzBH,EAAQQ,cAEVR,OAxBZ"}
package/zod/dist/zod.mjs CHANGED
@@ -1,2 +1,2 @@
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};
1
+ import{appendErrors as r}from"react-hook-form";import{validateFieldsNatively as e,toNestError as o}from"@hookform/resolvers";var n=function(e,o){for(var n={};e.length;){var s=e[0],t=s.code,i=s.message,a=s.path.join(".");if(!n[a])if("unionErrors"in s){var u=s.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:t};if("unionErrors"in s&&s.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var c=n[a].types,f=c&&c[s.code];n[a]=r(a,o,n,t,f?[].concat(f,s.message):s.message)}e.shift()}return n},s=function(r,s,t){return void 0===t&&(t={}),function(i,a,u){try{return Promise.resolve(function(o,n){try{var a=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](i,s)).then(function(r){return u.shouldUseNativeValidation&&e({},u),{errors:{},values:t.rawValues?i:r}})}catch(r){return n(r)}return a&&a.then?a.then(void 0,n):a}(0,function(r){return{values:{},errors:r.isEmpty?{}:o(n(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)}}))}catch(r){return Promise.reject(r)}}};export{s as zodResolver};
2
2
  //# sourceMappingURL=zod.module.js.map
@@ -1,2 +1,2 @@
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};
1
+ import{appendErrors as r}from"react-hook-form";import{validateFieldsNatively as s,toNestError as e}from"@hookform/resolvers";const o=(s,e)=>{const o={};for(;s.length;){const a=s[0],{code:t,message:n,path:i}=a,c=i.join(".");if(!o[c])if("unionErrors"in a){const r=a.unionErrors[0].errors[0];o[c]={message:r.message,type:r.code}}else o[c]={message:n,type:t};if("unionErrors"in a&&a.unionErrors.forEach(r=>r.errors.forEach(r=>s.push(r))),e){const s=o[c].types,n=s&&s[a.code];o[c]=r(c,e,o,t,n?[].concat(n,a.message):a.message)}s.shift()}return o},a=(r,a,t={})=>async(n,i,c)=>{try{const e=await r["sync"===t.mode?"parse":"parseAsync"](n,a);return c.shouldUseNativeValidation&&s({},c),{errors:{},values:t.rawValues?n:e}}catch(r){return{values:{},errors:r.isEmpty?{}:e(o(r.errors,!c.shouldUseNativeValidation&&"all"===c.criteriaMode),c)}}};export{a as zodResolver};
2
2
  //# sourceMappingURL=zod.modern.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"zod.modern.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\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: resolverOptions.rawValues ? 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":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","path","_path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","async","values","_","options","data","mode","shouldUseNativeValidation","validateFieldsNatively","rawValues","isEmpty","toNestError","criteriaMode"],"mappings":"6HASA,MAAMA,EAAmB,CACvBC,EACAC,KAEA,MAAMC,EAAqC,GAC3C,KAAOF,EAAUG,QAAS,CACxB,MAAMC,EAAQJ,EAAU,IAClBK,KAAEA,EAAFC,QAAQA,EAARC,KAAiBA,GAASH,EAC1BI,EAAQD,EAAKE,KAAK,KAExB,IAAKP,EAAOM,GACV,GAAI,gBAAiBJ,EAAO,CAC1B,MAAMM,EAAaN,EAAMO,YAAY,GAAGT,OAAO,GAE/CA,EAAOM,GAAS,CACdF,QAASI,EAAWJ,QACpBM,KAAMF,EAAWL,WAGnBH,EAAOM,GAAS,CAAEF,QAAAA,EAASM,KAAMP,GAUrC,GANI,gBAAiBD,GACnBA,EAAMO,YAAYE,QAASH,GACzBA,EAAWR,OAAOW,QAASC,GAAMd,EAAUe,KAAKD,KAIhDb,EAA0B,CAC5B,MAAMe,EAAQd,EAAOM,GAAOQ,MACtBC,EAAWD,GAASA,EAAMZ,EAAMC,MAEtCH,EAAOM,GAASU,EACdV,EACAP,EACAC,EACAG,EACAY,EACK,GAAgBE,OAAOF,EAAsBb,EAAME,SACpDF,EAAME,SAIdN,EAAUoB,QAGZ,OAAOlB,GAGImB,EACX,CAACC,EAAQC,EAAeC,EAAkB,KACxCC,MAAOC,EAAQC,EAAGC,KAChB,IACE,MAAMC,QAAaP,EACQ,SAAzBE,EAAgBM,KAAkB,QAAU,cAC5CJ,EAAQH,GAIV,OAFAK,EAAQG,2BAA6BC,EAAuB,GAAIJ,GAEzD,CACL1B,OAAQ,GACRwB,OAAQF,EAAgBS,UAAYP,EAASG,GAE/C,MAAOzB,GACP,MAAO,CACLsB,OAAQ,GACRxB,OAAQE,EAAM8B,QACV,GACAC,EACApC,EACEK,EAAMF,QACL0B,EAAQG,2BACgB,QAAzBH,EAAQQ,cAEVR"}
@@ -1,2 +1,2 @@
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};
1
+ import{appendErrors as r}from"react-hook-form";import{validateFieldsNatively as e,toNestError as o}from"@hookform/resolvers";var n=function(e,o){for(var n={};e.length;){var s=e[0],t=s.code,i=s.message,a=s.path.join(".");if(!n[a])if("unionErrors"in s){var u=s.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:t};if("unionErrors"in s&&s.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var c=n[a].types,f=c&&c[s.code];n[a]=r(a,o,n,t,f?[].concat(f,s.message):s.message)}e.shift()}return n},s=function(r,s,t){return void 0===t&&(t={}),function(i,a,u){try{return Promise.resolve(function(o,n){try{var a=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](i,s)).then(function(r){return u.shouldUseNativeValidation&&e({},u),{errors:{},values:t.rawValues?i:r}})}catch(r){return n(r)}return a&&a.then?a.then(void 0,n):a}(0,function(r){return{values:{},errors:r.isEmpty?{}:o(n(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)}}))}catch(r){return Promise.reject(r)}}};export{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 {\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"}
1
+ {"version":3,"file":"zod.module.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\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: resolverOptions.rawValues ? 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":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","values","_","options","mode","data","shouldUseNativeValidation","validateFieldsNatively","rawValues","isEmpty","toNestError","criteriaMode"],"mappings":"6HASA,IAAMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAS,CACxB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAExB,IAAKP,EAAOK,GACV,GAAI,gBAAiBH,EAAO,CAC1B,IAAMM,EAAaN,EAAMO,YAAY,GAAGT,OAAO,GAE/CA,EAAOK,GAAS,CACdD,QAASI,EAAWJ,QACpBM,KAAMF,EAAWL,WAGnBH,EAAOK,GAAS,CAAED,QAAAA,EAASM,KAAMP,GAUrC,GANI,gBAAiBD,GACnBA,EAAMO,YAAYE,QAAQ,SAACH,UACzBA,EAAWR,OAAOW,QAAQ,SAACC,UAAMd,EAAUe,KAAKD,OAIhDb,EAA0B,CAC5B,IAAMe,EAAQd,EAAOK,GAAOS,MACtBC,EAAWD,GAASA,EAAMZ,EAAMC,MAEtCH,EAAOK,GAASW,EACdX,EACAN,EACAC,EACAG,EACAY,EACK,GAAgBE,OAAOF,EAAsBb,EAAME,SACpDF,EAAME,SAIdN,EAAUoB,QAGZ,OAAOlB,GAGImB,EACX,SAACC,EAAQC,EAAeC,mBAAAA,IAAAA,EAAkB,aACjCC,EAAQC,EAAGC,sEAEKL,EACQ,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,kBAFJM,GAMN,OAFAF,EAAQG,2BAA6BC,EAAuB,GAAIJ,GAEzD,CACLzB,OAAQ,GACRuB,OAAQD,EAAgBQ,UAAYP,EAASI,0EAExCzB,GACP,MAAO,CACLqB,OAAQ,GACRvB,OAAQE,EAAM6B,QACV,GACAC,EACAnC,EACEK,EAAMF,QACLyB,EAAQG,2BACgB,QAAzBH,EAAQQ,cAEVR,OAxBZ"}
@@ -1,2 +1,2 @@
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)}}}});
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react-hook-form"),require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","react-hook-form","@hookform/resolvers"],r):r((e||self).hookformResolversZod={},e.reactHookForm,e.hookformResolvers)}(this,function(e,r,o){var s=function(e,o){for(var s={};e.length;){var n=e[0],t=n.code,i=n.message,a=n.path.join(".");if(!s[a])if("unionErrors"in n){var u=n.unionErrors[0].errors[0];s[a]={message:u.message,type:u.code}}else s[a]={message:i,type:t};if("unionErrors"in n&&n.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var f=s[a].types,c=f&&f[n.code];s[a]=r.appendErrors(a,o,s,t,c?[].concat(c,n.message):n.message)}e.shift()}return s};e.zodResolver=function(e,r,n){return void 0===n&&(n={}),function(t,i,a){try{return Promise.resolve(function(s,i){try{var u=Promise.resolve(e["sync"===n.mode?"parse":"parseAsync"](t,r)).then(function(e){return a.shouldUseNativeValidation&&o.validateFieldsNatively({},a),{errors:{},values:n.rawValues?t:e}})}catch(e){return i(e)}return u&&u.then?u.then(void 0,i):u}(0,function(e){return{values:{},errors:e.isEmpty?{}:o.toNestError(s(e.errors,!a.shouldUseNativeValidation&&"all"===a.criteriaMode),a)}}))}catch(e){return Promise.reject(e)}}}});
2
2
  //# sourceMappingURL=zod.umd.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"zod.umd.js","sources":["../src/zod.ts"],"sourcesContent":["import {\n appendErrors,\n FieldError,\n FieldErrors,\n} from 'react-hook-form';\nimport { z } from 'zod';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport type { Resolver } from './types';\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: resolverOptions.rawValues ? 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":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","unionError","unionErrors","type","forEach","e","push","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","options","mode","data","shouldUseNativeValidation","validateFieldsNatively","rawValues","isEmpty","toNestError","criteriaMode"],"mappings":"wXASA,IAAMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAS,CACxB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAExB,IAAKP,EAAOK,GACV,GAAI,gBAAiBH,EAAO,CAC1B,IAAMM,EAAaN,EAAMO,YAAY,GAAGT,OAAO,GAE/CA,EAAOK,GAAS,CACdD,QAASI,EAAWJ,QACpBM,KAAMF,EAAWL,WAGnBH,EAAOK,GAAS,CAAED,QAAAA,EAASM,KAAMP,GAUrC,GANI,gBAAiBD,GACnBA,EAAMO,YAAYE,QAAQ,SAACH,UACzBA,EAAWR,OAAOW,QAAQ,SAACC,UAAMd,EAAUe,KAAKD,OAIhDb,EAA0B,CAC5B,IAAMe,EAAQd,EAAOK,GAAOS,MACtBC,EAAWD,GAASA,EAAMZ,EAAMC,MAEtCH,EAAOK,GAASW,eACdX,EACAN,EACAC,EACAG,EACAY,EACK,GAAgBE,OAAOF,EAAsBb,EAAME,SACpDF,EAAME,SAIdN,EAAUoB,QAGZ,OAAOlB,iBAIP,SAACmB,EAAQC,EAAeC,mBAAAA,IAAAA,EAAkB,aACjCC,EAAQC,EAAGC,sEAEKL,EACQ,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,kBAFJM,GAMN,OAFAF,EAAQG,2BAA6BC,yBAAuB,GAAIJ,GAEzD,CACLxB,OAAQ,GACRsB,OAAQD,EAAgBQ,UAAYP,EAASI,0EAExCxB,GACP,MAAO,CACLoB,OAAQ,GACRtB,OAAQE,EAAM4B,QACV,GACAC,cACAlC,EACEK,EAAMF,QACLwB,EAAQG,2BACgB,QAAzBH,EAAQQ,cAEVR,OAxBZ"}
@@ -29,13 +29,19 @@ export const schema = z
29
29
  }),
30
30
  )
31
31
  .optional(),
32
+ dateStr: z
33
+ .string()
34
+ .transform((value) => new Date(value))
35
+ .refine((value) => !isNaN(value.getTime()), {
36
+ message: 'Invalid date',
37
+ }),
32
38
  })
33
39
  .refine((obj) => obj.password === obj.repeatPassword, {
34
40
  message: 'Passwords do not match',
35
41
  path: ['confirm'],
36
42
  });
37
43
 
38
- export const validData: z.infer<typeof schema> = {
44
+ export const validData: z.input<typeof schema> = {
39
45
  username: 'Doe',
40
46
  password: 'Password123_',
41
47
  repeatPassword: 'Password123_',
@@ -51,6 +57,7 @@ export const validData: z.infer<typeof schema> = {
51
57
  name: 'name',
52
58
  },
53
59
  ],
60
+ dateStr: '2020-01-01',
54
61
  };
55
62
 
56
63
  export const invalidData = {
@@ -13,6 +13,11 @@ Object {
13
13
  "ref": undefined,
14
14
  "type": "invalid_type",
15
15
  },
16
+ "dateStr": Object {
17
+ "message": "Required",
18
+ "ref": undefined,
19
+ "type": "invalid_type",
20
+ },
16
21
  "email": Object {
17
22
  "message": "Invalid email",
18
23
  "ref": Object {
@@ -86,6 +91,11 @@ Object {
86
91
  "ref": undefined,
87
92
  "type": "invalid_type",
88
93
  },
94
+ "dateStr": Object {
95
+ "message": "Required",
96
+ "ref": undefined,
97
+ "type": "invalid_type",
98
+ },
89
99
  "email": Object {
90
100
  "message": "Invalid email",
91
101
  "ref": Object {
@@ -169,6 +179,14 @@ Object {
169
179
  "invalid_type": "Expected number, received string",
170
180
  },
171
181
  },
182
+ "dateStr": Object {
183
+ "message": "Required",
184
+ "ref": undefined,
185
+ "type": "invalid_type",
186
+ "types": Object {
187
+ "invalid_type": "Required",
188
+ },
189
+ },
172
190
  "email": Object {
173
191
  "message": "Invalid email",
174
192
  "ref": Object {
@@ -284,6 +302,14 @@ Object {
284
302
  "invalid_type": "Expected number, received string",
285
303
  },
286
304
  },
305
+ "dateStr": Object {
306
+ "message": "Required",
307
+ "ref": undefined,
308
+ "type": "invalid_type",
309
+ "types": Object {
310
+ "invalid_type": "Required",
311
+ },
312
+ },
287
313
  "email": Object {
288
314
  "message": "Invalid email",
289
315
  "ref": Object {
@@ -375,3 +401,30 @@ Object {
375
401
  "values": Object {},
376
402
  }
377
403
  `;
404
+
405
+ exports[`zodResolver should return parsed values from zodResolver with \`mode: sync\` when validation pass 1`] = `
406
+ Object {
407
+ "errors": Object {},
408
+ "values": Object {
409
+ "accessToken": "accessToken",
410
+ "birthYear": 2000,
411
+ "dateStr": 2020-01-01T00:00:00.000Z,
412
+ "email": "john@doe.com",
413
+ "enabled": true,
414
+ "like": Array [
415
+ Object {
416
+ "id": 1,
417
+ "name": "name",
418
+ },
419
+ ],
420
+ "password": "Password123_",
421
+ "repeatPassword": "Password123_",
422
+ "tags": Array [
423
+ "tag1",
424
+ "tag2",
425
+ ],
426
+ "url": "https://react-hook-form.com/",
427
+ "username": "Doe",
428
+ },
429
+ }
430
+ `;
@@ -4,10 +4,12 @@ import { schema, validData, invalidData, fields } from './__fixtures__/data';
4
4
  const shouldUseNativeValidation = false;
5
5
 
6
6
  describe('zodResolver', () => {
7
- it('should return values from zodResolver when validation pass', async () => {
7
+ it('should return values from zodResolver when validation pass & rawValues=true', async () => {
8
8
  const parseAsyncSpy = jest.spyOn(schema, 'parseAsync');
9
9
 
10
- const result = await zodResolver(schema)(validData, undefined, {
10
+ const result = await zodResolver(schema, undefined, {
11
+ rawValues: true,
12
+ })(validData, undefined, {
11
13
  fields,
12
14
  shouldUseNativeValidation,
13
15
  });
@@ -16,7 +18,7 @@ describe('zodResolver', () => {
16
18
  expect(result).toEqual({ errors: {}, values: validData });
17
19
  });
18
20
 
19
- it('should return values from zodResolver with `mode: sync` when validation pass', async () => {
21
+ it('should return parsed values from zodResolver with `mode: sync` when validation pass', async () => {
20
22
  const parseSpy = jest.spyOn(schema, 'parse');
21
23
  const parseAsyncSpy = jest.spyOn(schema, 'parseAsync');
22
24
 
@@ -26,7 +28,8 @@ describe('zodResolver', () => {
26
28
 
27
29
  expect(parseSpy).toHaveBeenCalledTimes(1);
28
30
  expect(parseAsyncSpy).not.toHaveBeenCalled();
29
- expect(result).toEqual({ errors: {}, values: validData });
31
+ expect(result.errors).toEqual({});
32
+ expect(result).toMatchSnapshot();
30
33
  });
31
34
 
32
35
  it('should return a single error from zodResolver when validation fails', async () => {
package/zod/src/types.ts CHANGED
@@ -9,7 +9,17 @@ import { z } from 'zod';
9
9
  export type Resolver = <T extends z.Schema<any, any>>(
10
10
  schema: T,
11
11
  schemaOptions?: Partial<z.ParseParams>,
12
- factoryOptions?: { mode?: 'async' | 'sync' },
12
+ factoryOptions?: {
13
+ /**
14
+ * @default async
15
+ */
16
+ mode?: 'async' | 'sync';
17
+ /**
18
+ * Return the raw input values rather than the parsed values.
19
+ * @default false
20
+ */
21
+ rawValues?: boolean;
22
+ },
13
23
  ) => <TFieldValues extends FieldValues, TContext>(
14
24
  values: UnpackNestedValue<TFieldValues>,
15
25
  context: TContext | undefined,
package/zod/src/zod.ts CHANGED
@@ -2,58 +2,17 @@ import {
2
2
  appendErrors,
3
3
  FieldError,
4
4
  FieldErrors,
5
- set,
6
- get,
7
- Field,
8
- ResolverOptions,
9
5
  } from 'react-hook-form';
10
6
  import { z } from 'zod';
7
+ import { toNestError, validateFieldsNatively } from '@hookform/resolvers';
11
8
  import type { Resolver } from './types';
12
9
 
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
-
51
10
  const parseErrorSchema = (
52
11
  zodErrors: z.ZodIssue[],
53
12
  validateAllFieldCriteria: boolean,
54
13
  ) => {
55
14
  const errors: Record<string, FieldError> = {};
56
- for (; zodErrors.length; ) {
15
+ for (; zodErrors.length;) {
57
16
  const error = zodErrors[0];
58
17
  const { code, message, path } = error;
59
18
  const _path = path.join('.');
@@ -100,31 +59,31 @@ const parseErrorSchema = (
100
59
 
101
60
  export const zodResolver: Resolver =
102
61
  (schema, schemaOptions, resolverOptions = {}) =>
103
- async (values, _, options) => {
104
- try {
105
- const data = await schema[
106
- resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'
107
- ](values, schemaOptions);
62
+ async (values, _, options) => {
63
+ try {
64
+ const data = await schema[
65
+ resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'
66
+ ](values, schemaOptions);
108
67
 
109
- options.shouldUseNativeValidation && validateFieldsNatively({}, options);
68
+ options.shouldUseNativeValidation && validateFieldsNatively({}, options);
110
69
 
111
- return {
112
- errors: {} as FieldErrors,
113
- values: data,
114
- };
115
- } catch (error: any) {
116
- return {
117
- values: {},
118
- errors: error.isEmpty
119
- ? {}
120
- : toNestError(
70
+ return {
71
+ errors: {} as FieldErrors,
72
+ values: resolverOptions.rawValues ? values : data,
73
+ };
74
+ } catch (error: any) {
75
+ return {
76
+ values: {},
77
+ errors: error.isEmpty
78
+ ? {}
79
+ : toNestError(
121
80
  parseErrorSchema(
122
81
  error.errors,
123
82
  !options.shouldUseNativeValidation &&
124
- options.criteriaMode === 'all',
83
+ options.criteriaMode === 'all',
125
84
  ),
126
85
  options,
127
86
  ),
128
- };
129
- }
130
- };
87
+ };
88
+ }
89
+ };