@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.
- package/README.md +86 -11
- package/computed-types/dist/computed-types.d.ts +2 -0
- package/computed-types/dist/computed-types.js +2 -0
- package/computed-types/dist/computed-types.js.map +1 -0
- package/computed-types/dist/computed-types.mjs +2 -0
- package/computed-types/dist/computed-types.modern.js +2 -0
- package/computed-types/dist/computed-types.modern.js.map +1 -0
- package/computed-types/dist/computed-types.module.js +2 -0
- package/computed-types/dist/computed-types.module.js.map +1 -0
- package/computed-types/dist/computed-types.umd.js +2 -0
- package/computed-types/dist/computed-types.umd.js.map +1 -0
- package/computed-types/dist/index.d.ts +2 -0
- package/computed-types/dist/types.d.ts +2 -0
- package/computed-types/package.json +17 -0
- package/computed-types/src/__tests__/Form.tsx +54 -0
- package/computed-types/src/__tests__/__fixtures__/data.ts +72 -0
- package/computed-types/src/__tests__/__snapshots__/computed-types.ts.snap +65 -0
- package/computed-types/src/__tests__/computed-types.ts +20 -0
- package/computed-types/src/computed-types.ts +42 -0
- package/computed-types/src/index.ts +2 -0
- package/computed-types/src/types.ts +14 -0
- package/io-ts/src/__tests__/Form.tsx +65 -0
- package/io-ts/src/__tests__/__fixtures__/data.ts +129 -0
- package/io-ts/src/__tests__/__snapshots__/io-ts.ts.snap +89 -0
- package/io-ts/src/__tests__/io-ts.ts +32 -0
- package/joi/dist/joi.js +1 -1
- package/joi/dist/joi.js.map +1 -1
- package/joi/dist/joi.mjs +1 -1
- package/joi/dist/joi.modern.js +1 -1
- package/joi/dist/joi.modern.js.map +1 -1
- package/joi/dist/joi.module.js +1 -1
- package/joi/dist/joi.module.js.map +1 -1
- package/joi/dist/joi.umd.js +1 -1
- package/joi/dist/joi.umd.js.map +1 -1
- package/joi/src/__tests__/__fixtures__/data.ts +12 -3
- package/joi/src/__tests__/__snapshots__/joi.ts.snap +20 -10
- package/joi/src/joi.ts +6 -1
- package/nope/dist/index.d.ts +2 -0
- package/nope/dist/nope.d.ts +2 -0
- package/nope/dist/nope.js +2 -0
- package/nope/dist/nope.js.map +1 -0
- package/nope/dist/nope.mjs +2 -0
- package/nope/dist/nope.modern.js +2 -0
- package/nope/dist/nope.modern.js.map +1 -0
- package/nope/dist/nope.module.js +2 -0
- package/nope/dist/nope.module.js.map +1 -0
- package/nope/dist/nope.umd.js +2 -0
- package/nope/dist/nope.umd.js.map +1 -0
- package/nope/dist/types.d.ts +6 -0
- package/nope/package.json +18 -0
- package/nope/src/__tests__/Form.tsx +57 -0
- package/nope/src/__tests__/__fixtures__/data.ts +70 -0
- package/nope/src/__tests__/__snapshots__/nope.ts.snap +43 -0
- package/nope/src/__tests__/nope.ts +24 -0
- package/nope/src/index.ts +2 -0
- package/nope/src/nope.ts +40 -0
- package/nope/src/types.ts +19 -0
- package/package.json +51 -32
- package/yup/dist/yup.js +1 -1
- package/yup/dist/yup.js.map +1 -1
- package/yup/dist/yup.mjs +1 -1
- package/yup/dist/yup.modern.js +1 -1
- package/yup/dist/yup.modern.js.map +1 -1
- package/yup/dist/yup.module.js +1 -1
- package/yup/dist/yup.module.js.map +1 -1
- package/yup/dist/yup.umd.js +1 -1
- package/yup/dist/yup.umd.js.map +1 -1
- package/yup/src/__tests__/__fixtures__/data.ts +11 -4
- package/yup/src/__tests__/__snapshots__/yup.ts.snap +16 -6
- package/yup/src/yup.ts +6 -1
- package/zod/dist/zod.js +1 -1
- package/zod/dist/zod.js.map +1 -1
- package/zod/dist/zod.mjs +1 -1
- package/zod/dist/zod.modern.js +1 -1
- package/zod/dist/zod.modern.js.map +1 -1
- package/zod/dist/zod.module.js +1 -1
- package/zod/dist/zod.module.js.map +1 -1
- package/zod/dist/zod.umd.js +1 -1
- package/zod/dist/zod.umd.js.map +1 -1
- package/zod/src/__tests__/__fixtures__/data.ts +12 -3
- package/zod/src/__tests__/__snapshots__/zod.ts.snap +24 -8
- 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
|
-
|
|
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,
|
|
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
|
package/zod/dist/zod.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
package/zod/dist/zod.modern.js
CHANGED
|
@@ -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&&
|
|
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,
|
|
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"}
|
package/zod/dist/zod.module.js
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,
|
|
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,
|
|
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"}
|
package/zod/dist/zod.umd.js
CHANGED
|
@@ -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&&
|
|
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
|
package/zod/dist/zod.umd.js.map
CHANGED
|
@@ -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,
|
|
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
|
|
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: '
|
|
31
|
-
repeatPassword: '
|
|
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": "
|
|
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": "
|
|
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":
|
|
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": "
|
|
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":
|
|
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":
|
|
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": "
|
|
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":
|
|
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
|
-
|
|
35
|
+
messages
|
|
36
|
+
? ([] as string[]).concat(messages as string[], error.message)
|
|
37
|
+
: error.message,
|
|
33
38
|
) as FieldError;
|
|
34
39
|
}
|
|
35
40
|
|