@hookform/resolvers 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +86 -11
  2. package/computed-types/dist/computed-types.d.ts +2 -0
  3. package/computed-types/dist/computed-types.js +2 -0
  4. package/computed-types/dist/computed-types.js.map +1 -0
  5. package/computed-types/dist/computed-types.mjs +2 -0
  6. package/computed-types/dist/computed-types.modern.js +2 -0
  7. package/computed-types/dist/computed-types.modern.js.map +1 -0
  8. package/computed-types/dist/computed-types.module.js +2 -0
  9. package/computed-types/dist/computed-types.module.js.map +1 -0
  10. package/computed-types/dist/computed-types.umd.js +2 -0
  11. package/computed-types/dist/computed-types.umd.js.map +1 -0
  12. package/computed-types/dist/index.d.ts +2 -0
  13. package/computed-types/dist/types.d.ts +2 -0
  14. package/computed-types/package.json +17 -0
  15. package/computed-types/src/__tests__/Form.tsx +54 -0
  16. package/computed-types/src/__tests__/__fixtures__/data.ts +72 -0
  17. package/computed-types/src/__tests__/__snapshots__/computed-types.ts.snap +65 -0
  18. package/computed-types/src/__tests__/computed-types.ts +20 -0
  19. package/computed-types/src/computed-types.ts +42 -0
  20. package/computed-types/src/index.ts +2 -0
  21. package/computed-types/src/types.ts +14 -0
  22. package/io-ts/src/__tests__/Form.tsx +65 -0
  23. package/io-ts/src/__tests__/__fixtures__/data.ts +129 -0
  24. package/io-ts/src/__tests__/__snapshots__/io-ts.ts.snap +89 -0
  25. package/io-ts/src/__tests__/io-ts.ts +32 -0
  26. package/joi/dist/joi.js +1 -1
  27. package/joi/dist/joi.js.map +1 -1
  28. package/joi/dist/joi.mjs +1 -1
  29. package/joi/dist/joi.modern.js +1 -1
  30. package/joi/dist/joi.modern.js.map +1 -1
  31. package/joi/dist/joi.module.js +1 -1
  32. package/joi/dist/joi.module.js.map +1 -1
  33. package/joi/dist/joi.umd.js +1 -1
  34. package/joi/dist/joi.umd.js.map +1 -1
  35. package/joi/src/__tests__/__fixtures__/data.ts +12 -3
  36. package/joi/src/__tests__/__snapshots__/joi.ts.snap +20 -10
  37. package/joi/src/joi.ts +6 -1
  38. package/nope/dist/index.d.ts +2 -0
  39. package/nope/dist/nope.d.ts +2 -0
  40. package/nope/dist/nope.js +2 -0
  41. package/nope/dist/nope.js.map +1 -0
  42. package/nope/dist/nope.mjs +2 -0
  43. package/nope/dist/nope.modern.js +2 -0
  44. package/nope/dist/nope.modern.js.map +1 -0
  45. package/nope/dist/nope.module.js +2 -0
  46. package/nope/dist/nope.module.js.map +1 -0
  47. package/nope/dist/nope.umd.js +2 -0
  48. package/nope/dist/nope.umd.js.map +1 -0
  49. package/nope/dist/types.d.ts +6 -0
  50. package/nope/package.json +18 -0
  51. package/nope/src/__tests__/Form.tsx +57 -0
  52. package/nope/src/__tests__/__fixtures__/data.ts +70 -0
  53. package/nope/src/__tests__/__snapshots__/nope.ts.snap +43 -0
  54. package/nope/src/__tests__/nope.ts +24 -0
  55. package/nope/src/index.ts +2 -0
  56. package/nope/src/nope.ts +40 -0
  57. package/nope/src/types.ts +19 -0
  58. package/package.json +51 -32
  59. package/yup/dist/yup.js +1 -1
  60. package/yup/dist/yup.js.map +1 -1
  61. package/yup/dist/yup.mjs +1 -1
  62. package/yup/dist/yup.modern.js +1 -1
  63. package/yup/dist/yup.modern.js.map +1 -1
  64. package/yup/dist/yup.module.js +1 -1
  65. package/yup/dist/yup.module.js.map +1 -1
  66. package/yup/dist/yup.umd.js +1 -1
  67. package/yup/dist/yup.umd.js.map +1 -1
  68. package/yup/src/__tests__/__fixtures__/data.ts +11 -4
  69. package/yup/src/__tests__/__snapshots__/yup.ts.snap +16 -6
  70. package/yup/src/yup.ts +6 -1
  71. package/zod/dist/zod.js +1 -1
  72. package/zod/dist/zod.js.map +1 -1
  73. package/zod/dist/zod.mjs +1 -1
  74. package/zod/dist/zod.modern.js +1 -1
  75. package/zod/dist/zod.modern.js.map +1 -1
  76. package/zod/dist/zod.module.js +1 -1
  77. package/zod/dist/zod.module.js.map +1 -1
  78. package/zod/dist/zod.umd.js +1 -1
  79. package/zod/dist/zod.umd.js.map +1 -1
  80. package/zod/src/__tests__/__fixtures__/data.ts +12 -3
  81. package/zod/src/__tests__/__snapshots__/zod.ts.snap +24 -8
  82. package/zod/src/zod.ts +6 -1
package/yup/src/yup.ts CHANGED
@@ -17,12 +17,17 @@ const parseErrorSchema = (
17
17
  }
18
18
 
19
19
  if (validateAllFieldCriteria) {
20
+ const types = previous[error.path!].types;
21
+ const messages = types && types[error.type!];
22
+
20
23
  previous[error.path!] = appendErrors(
21
24
  error.path!,
22
25
  validateAllFieldCriteria,
23
26
  previous,
24
27
  error.type!,
25
- error.message,
28
+ messages
29
+ ? ([] as string[]).concat(messages as string[], error.message)
30
+ : error.message,
26
31
  ) as FieldError;
27
32
  }
28
33
 
package/zod/dist/zod.js CHANGED
@@ -1,2 +1,2 @@
1
- var r=require("react-hook-form"),e=require("@hookform/resolvers"),o=function(e,o){for(var n={};e.length;){var t=e[0],s=t.code,u=t.message,i=t.path.join(".");n[i]||(n[i]={message:u,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o&&(n[i]=r.appendErrors(i,o,n,s,u)),e.shift()}return n};exports.zodResolver=function(r,n,t){return void 0===t&&(t={}),function(s,u,i){try{return Promise.resolve(function(e,o){try{var u=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,n)).then(function(r){return{errors:{},values:r}})}catch(r){return o(r)}return u&&u.then?u.then(void 0,o):u}(0,function(r){return{values:{},errors:r.isEmpty?{}:e.toNestError(o(r.errors,"all"===i.criteriaMode),i.fields)}}))}catch(r){return Promise.reject(r)}}};
1
+ var r=require("react-hook-form"),e=require("@hookform/resolvers"),o=function(e,o){for(var n={};e.length;){var t=e[0],s=t.code,i=t.message,u=t.path.join(".");if(n[u]||(n[u]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var a=n[u].types,c=a&&a[t.code];n[u]=r.appendErrors(u,o,n,s,c?[].concat(c,t.message):t.message)}e.shift()}return n};exports.zodResolver=function(r,n,t){return void 0===t&&(t={}),function(s,i,u){try{return Promise.resolve(function(e,o){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,n)).then(function(r){return{errors:{},values:r}})}catch(r){return o(r)}return i&&i.then?i.then(void 0,o):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:e.toNestError(o(r.errors,"all"===u.criteriaMode),u.fields)}}))}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 { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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 errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver = (\n schema,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","type","unionErrors","forEach","unionError","e","push","appendErrors","shift","schema","schemaOptions","resolverOptions","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"kEAKMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAU,CACzB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAEnBP,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAAQ,SAACC,UACzBA,EAAWX,OAAOU,QAAQ,SAACE,UAAMd,EAAUe,KAAKD,OAIhDb,IACFC,EAAOK,GAASS,eACdT,EACAN,EACAC,EACAG,EACAC,IAIJN,EAAUiB,QAGZ,OAAOf,uBAG4B,SACnCgB,EACAC,EACAC,mBAAAA,IAAAA,EAAkB,aACRC,EAAQC,EAAGC,sEAIHL,EACa,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,qBAJZ,MAAO,CACLjB,OAAQ,GACRmB,iFAIKjB,GACP,MAAO,CACLiB,OAAQ,GACRnB,OAAQE,EAAMqB,QACV,GACAC,cACE3B,EAAiBK,EAAMF,OAAiC,QAAzBqB,EAAQI,cACvCJ,EAAQK,YAnBiB"}
1
+ {"version":3,"file":"zod.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","type","unionErrors","forEach","unionError","e","push","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"kEAKMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAU,CACzB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAYxB,GAVKP,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAAQ,SAACC,UACzBA,EAAWX,OAAOU,QAAQ,SAACE,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,uBAG4B,SACnCmB,EACAC,EACAC,mBAAAA,IAAAA,EAAkB,aACRC,EAAQC,EAAGC,sEAIHL,EACa,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,qBAJZ,MAAO,CACLpB,OAAQ,GACRsB,iFAIKpB,GACP,MAAO,CACLoB,OAAQ,GACRtB,OAAQE,EAAMwB,QACV,GACAC,cACE9B,EAAiBK,EAAMF,OAAiC,QAAzBwB,EAAQI,cACvCJ,EAAQK,YAnBiB"}
package/zod/dist/zod.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{appendErrors as r}from"react-hook-form";import{toNestError as e}from"@hookform/resolvers";var o=function(e,o){for(var n={};e.length;){var t=e[0],s=t.code,i=t.message,u=t.path.join(".");n[u]||(n[u]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o&&(n[u]=r(u,o,n,s,i)),e.shift()}return n},n=function(r,n,t){return void 0===t&&(t={}),function(s,i,u){try{return Promise.resolve(function(e,o){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,n)).then(function(r){return{errors:{},values:r}})}catch(r){return o(r)}return i&&i.then?i.then(void 0,o):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:e(o(r.errors,"all"===u.criteriaMode),u.fields)}}))}catch(r){return Promise.reject(r)}}};export{n as zodResolver};
1
+ import{appendErrors as r}from"react-hook-form";import{toNestError as e}from"@hookform/resolvers";var o=function(e,o){for(var n={};e.length;){var t=e[0],s=t.code,i=t.message,c=t.path.join(".");if(n[c]||(n[c]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var u=n[c].types,a=u&&u[t.code];n[c]=r(c,o,n,s,a?[].concat(a,t.message):t.message)}e.shift()}return n},n=function(r,n,t){return void 0===t&&(t={}),function(s,i,c){try{return Promise.resolve(function(e,o){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,n)).then(function(r){return{errors:{},values:r}})}catch(r){return o(r)}return i&&i.then?i.then(void 0,o):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:e(o(r.errors,"all"===c.criteriaMode),c.fields)}}))}catch(r){return Promise.reject(r)}}};export{n as zodResolver};
2
2
  //# sourceMappingURL=zod.module.js.map
@@ -1,2 +1,2 @@
1
- import{appendErrors as r}from"react-hook-form";import{toNestError as o}from"@hookform/resolvers";const e=(o,e)=>{const s={};for(;o.length;){const t=o[0],{code:a,message:n,path:c}=t,i=c.join(".");s[i]||(s[i]={message:n,type:a}),"unionErrors"in t&&t.unionErrors.forEach(r=>r.errors.forEach(r=>o.push(r))),e&&(s[i]=r(i,e,s,a,n)),o.shift()}return s},s=(r,s,t={})=>async(a,n,c)=>{try{return{errors:{},values:await r["sync"===t.mode?"parse":"parseAsync"](a,s)}}catch(r){return{values:{},errors:r.isEmpty?{}:o(e(r.errors,"all"===c.criteriaMode),c.fields)}}};export{s as zodResolver};
1
+ import{appendErrors as r}from"react-hook-form";import{toNestError as o}from"@hookform/resolvers";const e=(o,e)=>{const s={};for(;o.length;){const t=o[0],{code:a,message:n,path:c}=t,i=c.join(".");if(s[i]||(s[i]={message:n,type:a}),"unionErrors"in t&&t.unionErrors.forEach(r=>r.errors.forEach(r=>o.push(r))),e){const o=s[i].types,n=o&&o[t.code];s[i]=r(i,e,s,a,n?[].concat(n,t.message):t.message)}o.shift()}return s},s=(r,s,t={})=>async(a,n,c)=>{try{return{errors:{},values:await r["sync"===t.mode?"parse":"parseAsync"](a,s)}}catch(r){return{values:{},errors:r.isEmpty?{}:o(e(r.errors,"all"===c.criteriaMode),c.fields)}}};export{s as zodResolver};
2
2
  //# sourceMappingURL=zod.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod.modern.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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 errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver = (\n schema,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","path","_path","join","type","unionErrors","forEach","unionError","e","push","appendErrors","shift","zodResolver","schema","schemaOptions","resolverOptions","async","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"iGAKA,MAAMA,EAAmB,CACvBC,EACAC,KAEA,MAAMC,EAAqC,GAC3C,KAAOF,EAAUG,QAAU,CACzB,MAAMC,EAAQJ,EAAU,IAClBK,KAAEA,EAAFC,QAAQA,EAARC,KAAiBA,GAASH,EAC1BI,EAAQD,EAAKE,KAAK,KAEnBP,EAAOM,KACVN,EAAOM,GAAS,CAAEF,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAASC,GACzBA,EAAWX,OAAOU,QAASE,GAAMd,EAAUe,KAAKD,KAIhDb,IACFC,EAAOM,GAASQ,EACdR,EACAP,EACAC,EACAG,EACAC,IAIJN,EAAUiB,QAGZ,OAAOf,GAGIgB,EAAwB,CACnCC,EACAC,EACAC,EAAkB,KACfC,MAAOC,EAAQC,EAAGC,KACrB,IACE,MAAO,CACLvB,OAAQ,GACRqB,aAAcJ,EACa,SAAzBE,EAAgBK,KAAkB,QAAU,cAC5CH,EAAQH,IAEZ,MAAOhB,GACP,MAAO,CACLmB,OAAQ,GACRrB,OAAQE,EAAMuB,QACV,GACAC,EACE7B,EAAiBK,EAAMF,OAAiC,QAAzBuB,EAAQI,cACvCJ,EAAQK"}
1
+ {"version":3,"file":"zod.modern.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","path","_path","join","type","unionErrors","forEach","unionError","e","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","async","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"iGAKA,MAAMA,EAAmB,CACvBC,EACAC,KAEA,MAAMC,EAAqC,GAC3C,KAAOF,EAAUG,QAAU,CACzB,MAAMC,EAAQJ,EAAU,IAClBK,KAAEA,EAAFC,QAAQA,EAARC,KAAiBA,GAASH,EAC1BI,EAAQD,EAAKE,KAAK,KAYxB,GAVKP,EAAOM,KACVN,EAAOM,GAAS,CAAEF,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAASC,GACzBA,EAAWX,OAAOU,QAASE,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,EAAwB,CACnCC,EACAC,EACAC,EAAkB,KACfC,MAAOC,EAAQC,EAAGC,KACrB,IACE,MAAO,CACL1B,OAAQ,GACRwB,aAAcJ,EACa,SAAzBE,EAAgBK,KAAkB,QAAU,cAC5CH,EAAQH,IAEZ,MAAOnB,GACP,MAAO,CACLsB,OAAQ,GACRxB,OAAQE,EAAM0B,QACV,GACAC,EACEhC,EAAiBK,EAAMF,OAAiC,QAAzB0B,EAAQI,cACvCJ,EAAQK"}
@@ -1,2 +1,2 @@
1
- import{appendErrors as r}from"react-hook-form";import{toNestError as e}from"@hookform/resolvers";var o=function(e,o){for(var n={};e.length;){var t=e[0],s=t.code,i=t.message,u=t.path.join(".");n[u]||(n[u]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o&&(n[u]=r(u,o,n,s,i)),e.shift()}return n},n=function(r,n,t){return void 0===t&&(t={}),function(s,i,u){try{return Promise.resolve(function(e,o){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,n)).then(function(r){return{errors:{},values:r}})}catch(r){return o(r)}return i&&i.then?i.then(void 0,o):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:e(o(r.errors,"all"===u.criteriaMode),u.fields)}}))}catch(r){return Promise.reject(r)}}};export{n as zodResolver};
1
+ import{appendErrors as r}from"react-hook-form";import{toNestError as e}from"@hookform/resolvers";var o=function(e,o){for(var n={};e.length;){var t=e[0],s=t.code,i=t.message,c=t.path.join(".");if(n[c]||(n[c]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),o){var u=n[c].types,a=u&&u[t.code];n[c]=r(c,o,n,s,a?[].concat(a,t.message):t.message)}e.shift()}return n},n=function(r,n,t){return void 0===t&&(t={}),function(s,i,c){try{return Promise.resolve(function(e,o){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,n)).then(function(r){return{errors:{},values:r}})}catch(r){return o(r)}return i&&i.then?i.then(void 0,o):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:e(o(r.errors,"all"===c.criteriaMode),c.fields)}}))}catch(r){return Promise.reject(r)}}};export{n as zodResolver};
2
2
  //# sourceMappingURL=zod.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod.module.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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 errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver = (\n schema,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","type","unionErrors","forEach","unionError","e","push","appendErrors","shift","zodResolver","schema","schemaOptions","resolverOptions","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"iGAKA,IAAMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAU,CACzB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAEnBP,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAAQ,SAACC,UACzBA,EAAWX,OAAOU,QAAQ,SAACE,UAAMd,EAAUe,KAAKD,OAIhDb,IACFC,EAAOK,GAASS,EACdT,EACAN,EACAC,EACAG,EACAC,IAIJN,EAAUiB,QAGZ,OAAOf,GAGIgB,EAAwB,SACnCC,EACAC,EACAC,mBAAAA,IAAAA,EAAkB,aACRC,EAAQC,EAAGC,sEAIHL,EACa,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,qBAJZ,MAAO,CACLlB,OAAQ,GACRoB,iFAIKlB,GACP,MAAO,CACLkB,OAAQ,GACRpB,OAAQE,EAAMsB,QACV,GACAC,EACE5B,EAAiBK,EAAMF,OAAiC,QAAzBsB,EAAQI,cACvCJ,EAAQK,YAnBiB"}
1
+ {"version":3,"file":"zod.module.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","type","unionErrors","forEach","unionError","e","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"iGAKA,IAAMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAU,CACzB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAYxB,GAVKP,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAAQ,SAACC,UACzBA,EAAWX,OAAOU,QAAQ,SAACE,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,EAAwB,SACnCC,EACAC,EACAC,mBAAAA,IAAAA,EAAkB,aACRC,EAAQC,EAAGC,sEAIHL,EACa,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,qBAJZ,MAAO,CACLrB,OAAQ,GACRuB,iFAIKrB,GACP,MAAO,CACLqB,OAAQ,GACRvB,OAAQE,EAAMyB,QACV,GACAC,EACE/B,EAAiBK,EAAMF,OAAiC,QAAzByB,EAAQI,cACvCJ,EAAQK,YAnBiB"}
@@ -1,2 +1,2 @@
1
- !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react-hook-form"),require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","react-hook-form","@hookform/resolvers"],e):e((r||self).hookformResolversZod={},r.reactHookForm,r.hookformResolvers)}(this,function(r,e,o){var n=function(r,o){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,f=t.path.join(".");n[f]||(n[f]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),o&&(n[f]=e.appendErrors(f,o,n,s,i)),r.shift()}return n};r.zodResolver=function(r,e,t){return void 0===t&&(t={}),function(s,i,f){try{return Promise.resolve(function(o,n){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,e)).then(function(r){return{errors:{},values:r}})}catch(r){return n(r)}return i&&i.then?i.then(void 0,n):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:o.toNestError(n(r.errors,"all"===f.criteriaMode),f.fields)}}))}catch(r){return Promise.reject(r)}}}});
1
+ !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react-hook-form"),require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","react-hook-form","@hookform/resolvers"],e):e((r||self).hookformResolversZod={},r.reactHookForm,r.hookformResolvers)}(this,function(r,e,o){var n=function(r,o){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,f=t.path.join(".");if(n[f]||(n[f]={message:i,type:s}),"unionErrors"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),o){var u=n[f].types,c=u&&u[t.code];n[f]=e.appendErrors(f,o,n,s,c?[].concat(c,t.message):t.message)}r.shift()}return n};r.zodResolver=function(r,e,t){return void 0===t&&(t={}),function(s,i,f){try{return Promise.resolve(function(o,n){try{var i=Promise.resolve(r["sync"===t.mode?"parse":"parseAsync"](s,e)).then(function(r){return{errors:{},values:r}})}catch(r){return n(r)}return i&&i.then?i.then(void 0,n):i}(0,function(r){return{values:{},errors:r.isEmpty?{}:o.toNestError(n(r.errors,"all"===f.criteriaMode),f.fields)}}))}catch(r){return Promise.reject(r)}}}});
2
2
  //# sourceMappingURL=zod.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod.umd.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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 errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver = (\n schema,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","type","unionErrors","forEach","unionError","e","push","appendErrors","shift","schema","schemaOptions","resolverOptions","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"wXAKA,IAAMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAU,CACzB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAEnBP,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAAQ,SAACC,UACzBA,EAAWX,OAAOU,QAAQ,SAACE,UAAMd,EAAUe,KAAKD,OAIhDb,IACFC,EAAOK,GAASS,eACdT,EACAN,EACAC,EACAG,EACAC,IAIJN,EAAUiB,QAGZ,OAAOf,iBAG4B,SACnCgB,EACAC,EACAC,mBAAAA,IAAAA,EAAkB,aACRC,EAAQC,EAAGC,sEAIHL,EACa,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,qBAJZ,MAAO,CACLjB,OAAQ,GACRmB,iFAIKjB,GACP,MAAO,CACLiB,OAAQ,GACRnB,OAAQE,EAAMqB,QACV,GACAC,cACE3B,EAAiBK,EAAMF,OAAiC,QAAzBqB,EAAQI,cACvCJ,EAAQK,YAnBiB"}
1
+ {"version":3,"file":"zod.umd.js","sources":["../src/zod.ts"],"sourcesContent":["import { appendErrors, FieldError } from 'react-hook-form';\nimport * as z from 'zod';\nimport { toNestError } from '@hookform/resolvers';\nimport type { Resolver } from './types';\n\nconst parseErrorSchema = (\n zodErrors: z.ZodSuberror[],\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 errors[_path] = { message, type: code };\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,\n schemaOptions,\n resolverOptions = {},\n) => async (values, _, options) => {\n try {\n return {\n errors: {},\n values: await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions),\n };\n } catch (error) {\n return {\n values: {},\n errors: error.isEmpty\n ? {}\n : toNestError(\n parseErrorSchema(error.errors, options.criteriaMode === 'all'),\n options.fields,\n ),\n };\n }\n};\n"],"names":["parseErrorSchema","zodErrors","validateAllFieldCriteria","errors","length","error","code","message","_path","path","join","type","unionErrors","forEach","unionError","e","push","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","options","mode","isEmpty","toNestError","criteriaMode","fields"],"mappings":"wXAKA,IAAMA,EAAmB,SACvBC,EACAC,GAGA,IADA,IAAMC,EAAqC,GACpCF,EAAUG,QAAU,CACzB,IAAMC,EAAQJ,EAAU,GAChBK,EAAwBD,EAAxBC,KAAMC,EAAkBF,EAAlBE,QACRC,EAD0BH,EAATI,KACJC,KAAK,KAYxB,GAVKP,EAAOK,KACVL,EAAOK,GAAS,CAAED,QAAAA,EAASI,KAAML,IAG/B,gBAAiBD,GACnBA,EAAMO,YAAYC,QAAQ,SAACC,UACzBA,EAAWX,OAAOU,QAAQ,SAACE,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,iBAG4B,SACnCmB,EACAC,EACAC,mBAAAA,IAAAA,EAAkB,aACRC,EAAQC,EAAGC,sEAIHL,EACa,SAAzBE,EAAgBI,KAAkB,QAAU,cAC5CH,EAAQF,qBAJZ,MAAO,CACLpB,OAAQ,GACRsB,iFAIKpB,GACP,MAAO,CACLoB,OAAQ,GACRtB,OAAQE,EAAMwB,QACV,GACAC,cACE9B,EAAiBK,EAAMF,OAAiC,QAAzBwB,EAAQI,cACvCJ,EAAQK,YAnBiB"}
@@ -4,7 +4,16 @@ import * as z from 'zod';
4
4
  export const schema = z
5
5
  .object({
6
6
  username: z.string().regex(/^\w+$/).min(3).max(30),
7
- password: z.string().regex(/^[a-zA-Z0-9]{3,30}/),
7
+ password: z
8
+ .string()
9
+ .regex(new RegExp('.*[A-Z].*'), 'One uppercase character')
10
+ .regex(new RegExp('.*[a-z].*'), 'One lowercase character')
11
+ .regex(new RegExp('.*\\d.*'), 'One number')
12
+ .regex(
13
+ new RegExp('.*[`~<>?,./!@#$%^&*()\\-_+="\'|{}\\[\\];:\\\\].*'),
14
+ 'One special character',
15
+ )
16
+ .min(8, 'Must be at least 8 characters in length'),
8
17
  repeatPassword: z.string(),
9
18
  accessToken: z.union([z.string(), z.number()]).optional(),
10
19
  birthYear: z.number().min(1900).max(2013).optional(),
@@ -27,8 +36,8 @@ export const schema = z
27
36
 
28
37
  export const validData: z.infer<typeof schema> = {
29
38
  username: 'Doe',
30
- password: 'Password123',
31
- repeatPassword: 'Password123',
39
+ password: 'Password123_',
40
+ repeatPassword: 'Password123_',
32
41
  birthYear: 2000,
33
42
  email: 'john@doe.com',
34
43
  tags: ['tag1', 'tag2'],
@@ -43,7 +43,7 @@ Object {
43
43
  "type": "invalid_union",
44
44
  },
45
45
  "password": Object {
46
- "message": "Invalid",
46
+ "message": "One uppercase character",
47
47
  "ref": Object {
48
48
  "name": "password",
49
49
  },
@@ -114,7 +114,7 @@ Object {
114
114
  "type": "invalid_union",
115
115
  },
116
116
  "password": Object {
117
- "message": "Invalid",
117
+ "message": "One uppercase character",
118
118
  "ref": Object {
119
119
  "name": "password",
120
120
  },
@@ -150,7 +150,10 @@ Object {
150
150
  "ref": undefined,
151
151
  "type": "invalid_union",
152
152
  "types": Object {
153
- "invalid_type": "Expected undefined, received string",
153
+ "invalid_type": Array [
154
+ "Expected number, received string",
155
+ "Expected undefined, received string",
156
+ ],
154
157
  "invalid_union": "Invalid input",
155
158
  },
156
159
  },
@@ -208,13 +211,18 @@ Object {
208
211
  },
209
212
  },
210
213
  "password": Object {
211
- "message": "Invalid",
214
+ "message": "One uppercase character",
212
215
  "ref": Object {
213
216
  "name": "password",
214
217
  },
215
218
  "type": "invalid_string",
216
219
  "types": Object {
217
- "invalid_string": "Invalid",
220
+ "invalid_string": Array [
221
+ "One uppercase character",
222
+ "One lowercase character",
223
+ "One number",
224
+ ],
225
+ "too_small": "Must be at least 8 characters in length",
218
226
  },
219
227
  },
220
228
  "repeatPassword": Object {
@@ -256,7 +264,10 @@ Object {
256
264
  "ref": undefined,
257
265
  "type": "invalid_union",
258
266
  "types": Object {
259
- "invalid_type": "Expected undefined, received string",
267
+ "invalid_type": Array [
268
+ "Expected number, received string",
269
+ "Expected undefined, received string",
270
+ ],
260
271
  "invalid_union": "Invalid input",
261
272
  },
262
273
  },
@@ -314,13 +325,18 @@ Object {
314
325
  },
315
326
  },
316
327
  "password": Object {
317
- "message": "Invalid",
328
+ "message": "One uppercase character",
318
329
  "ref": Object {
319
330
  "name": "password",
320
331
  },
321
332
  "type": "invalid_string",
322
333
  "types": Object {
323
- "invalid_string": "Invalid",
334
+ "invalid_string": Array [
335
+ "One uppercase character",
336
+ "One lowercase character",
337
+ "One number",
338
+ ],
339
+ "too_small": "Must be at least 8 characters in length",
324
340
  },
325
341
  },
326
342
  "repeatPassword": Object {
package/zod/src/zod.ts CHANGED
@@ -24,12 +24,17 @@ const parseErrorSchema = (
24
24
  }
25
25
 
26
26
  if (validateAllFieldCriteria) {
27
+ const types = errors[_path].types;
28
+ const messages = types && types[error.code];
29
+
27
30
  errors[_path] = appendErrors(
28
31
  _path,
29
32
  validateAllFieldCriteria,
30
33
  errors,
31
34
  code,
32
- message,
35
+ messages
36
+ ? ([] as string[]).concat(messages as string[], error.message)
37
+ : error.message,
33
38
  ) as FieldError;
34
39
  }
35
40