@hookform/resolvers
Advanced tools
Comparing version 2.0.0-beta.10 to 2.0.0-beta.11
{ | ||
"name": "@hookform/resolvers", | ||
"amdName": "hookformResolvers", | ||
"version": "2.0.0-beta.10", | ||
"version": "2.0.0-beta.11", | ||
"description": "React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest and etc.", | ||
@@ -6,0 +6,0 @@ "main": "dist/resolvers.js", |
@@ -1,2 +0,2 @@ | ||
var r=require("react-hook-form"),e=require("@hookform/resolvers");function t(){return(t=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}return r}).apply(this,arguments)}class o extends TypeError{constructor(r,e){let t;const{message:o,...n}=r,{path:s}=r;super(0===s.length?o:"At path: "+s.join(".")+" -- "+o),Object.assign(this,n),this.name=this.constructor.name,this.failures=()=>{var o;return null!=(o=t)?o:t=[r,...e()]}}}function n(r){return"object"==typeof r&&null!=r}function*s(r,e,t={}){const{path:o=[],branch:i=[r],coerce:a=!1,mask:c=!1}=t,u={path:o,branch:i};if(a&&(r=e.coercer(r,u),c&&"type"!==e.type&&n(e.schema)&&n(r)&&!Array.isArray(r)))for(const t in r)void 0===e.schema[t]&&delete r[t];let f=!0;for(const t of e.validator(r,u))f=!1,yield[t,void 0];for(let[t,l,v]of e.entries(r,u)){const e=s(l,v,{path:void 0===t?o:[...o,t],branch:void 0===t?i:[...i,l],coerce:a,mask:c});for(const o of e)o[0]?(f=!1,yield[o[0],void 0]):a&&(l=o[1],void 0===t?r=l:r instanceof Map?r.set(t,l):r instanceof Set?r.add(l):n(r)&&(r[t]=l))}if(f)for(const t of e.refiner(r,u))f=!1,yield[t,void 0];f&&(yield[void 0,r])}function i(r,e,t={}){const n=s(r,e,t),i=function(r){const{done:e,value:t}=r.next();return e?void 0:t}(n);return i[0]?[new o(i[0],function*(){for(const r of n)r[0]&&(yield r[0])}),void 0]:[void 0,i[1]]}exports.superstructResolver=function(o,n){return function(s,a,c){var u,f,l=c.criteriaMode,v=c.fields;try{var d=i(s,o,n),p=d[0],h=d[1];return Promise.resolve(null!=p?{values:{},errors:e.toNestError((u=p,f="all"===l,u.failures().reduce(function(o,n){var s,i,a,c=n.path,u=n.message,l=void 0===u?"":u,v=n.type,d=e.convertArrayToPathName(c);return t({},o,c?o[d]&&f?((s={})[d]=r.appendErrors(d,f,o,v||"",l),s):((a={})[d]=o[d]||t({message:l,type:v},f?{types:(i={},i[v||""]=l||!0,i)}:{}),a):{})},{})),v)}:{values:h,errors:{}})}catch(r){return Promise.reject(r)}}}; | ||
var r=require("@hookform/resolvers"),e=require("superstruct");exports.superstructResolver=function(s,t){return function(u,o,n){var a,i=e.validate(u,s,t);return{values:i[1]||{},errors:i[0]?r.toNestError((a=i[0],a.failures().reduce(function(r,e){return(r[e.path.join(".")]={message:e.message,type:e.type})&&r},{})),n.fields):{}}}}; | ||
//# sourceMappingURL=superstruct.js.map |
@@ -1,2 +0,2 @@ | ||
import{appendErrors as e}from"react-hook-form";import{toNestError as o,convertArrayToPathName as r}from"@hookform/resolvers";function t(){return(t=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var r=arguments[o];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}class n extends TypeError{constructor(e,o){let r;const{message:t,...n}=e,{path:s}=e;super(0===s.length?t:"At path: "+s.join(".")+" -- "+t),Object.assign(this,n),this.name=this.constructor.name,this.failures=()=>{var t;return null!=(t=r)?t:r=[e,...o()]}}}function s(e){return"object"==typeof e&&null!=e}function*i(e,o,r={}){const{path:t=[],branch:n=[e],coerce:c=!1,mask:a=!1}=r,f={path:t,branch:n};if(c&&(e=o.coercer(e,f),a&&"type"!==o.type&&s(o.schema)&&s(e)&&!Array.isArray(e)))for(const r in e)void 0===o.schema[r]&&delete e[r];let l=!0;for(const r of o.validator(e,f))l=!1,yield[r,void 0];for(let[r,u,d]of o.entries(e,f)){const o=i(u,d,{path:void 0===r?t:[...t,r],branch:void 0===r?n:[...n,u],coerce:c,mask:a});for(const t of o)t[0]?(l=!1,yield[t[0],void 0]):c&&(u=t[1],void 0===r?e=u:e instanceof Map?e.set(r,u):e instanceof Set?e.add(u):s(e)&&(e[r]=u))}if(l)for(const r of o.refiner(e,f))l=!1,yield[r,void 0];l&&(yield[void 0,e])}function c(e,o,r={}){const t=i(e,o,r),s=function(e){const{done:o,value:r}=e.next();return o?void 0:r}(t);return s[0]?[new n(s[0],function*(){for(const e of t)e[0]&&(yield e[0])}),void 0]:[void 0,s[1]]}const a=(n,s)=>async(i,a,{criteriaMode:f,fields:l})=>{const[u,d]=c(i,n,s);return null!=u?{values:{},errors:o((p=u,h="all"===f,p.failures().reduce((o,{path:n,message:s="",type:i})=>{const c=r(n);return t({},o,n?o[c]&&h?{[c]:e(c,h,o,i||"",s)}:{[c]:o[c]||t({message:s,type:i},h?{types:{[i||""]:s||!0}}:{})}:{})},{})),l)}:{values:d,errors:{}};var p,h};export{a as superstructResolver}; | ||
import{toNestError as r}from"@hookform/resolvers";import{validate as e}from"superstruct";const s=(s,o)=>(t,m,p)=>{const a=e(t,s,o);return{values:a[1]||{},errors:a[0]?r((u=a[0],u.failures().reduce((r,e)=>(r[e.path.join(".")]={message:e.message,type:e.type})&&r,{})),p.fields):{}};var u};export{s as superstructResolver}; | ||
//# sourceMappingURL=superstruct.modern.js.map |
@@ -1,2 +0,2 @@ | ||
import{appendErrors as e}from"react-hook-form";import{toNestError as r,convertArrayToPathName as o}from"@hookform/resolvers";function t(){return(t=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}return e}).apply(this,arguments)}class n extends TypeError{constructor(e,r){let o;const{message:t,...n}=e,{path:i}=e;super(0===i.length?t:"At path: "+i.join(".")+" -- "+t),Object.assign(this,n),this.name=this.constructor.name,this.failures=()=>{var t;return null!=(t=o)?t:o=[e,...r()]}}}function i(e){return"object"==typeof e&&null!=e}function*s(e,r,o={}){const{path:t=[],branch:n=[e],coerce:a=!1,mask:c=!1}=o,f={path:t,branch:n};if(a&&(e=r.coercer(e,f),c&&"type"!==r.type&&i(r.schema)&&i(e)&&!Array.isArray(e)))for(const o in e)void 0===r.schema[o]&&delete e[o];let l=!0;for(const o of r.validator(e,f))l=!1,yield[o,void 0];for(let[o,u,d]of r.entries(e,f)){const r=s(u,d,{path:void 0===o?t:[...t,o],branch:void 0===o?n:[...n,u],coerce:a,mask:c});for(const t of r)t[0]?(l=!1,yield[t[0],void 0]):a&&(u=t[1],void 0===o?e=u:e instanceof Map?e.set(o,u):e instanceof Set?e.add(u):i(e)&&(e[o]=u))}if(l)for(const o of r.refiner(e,f))l=!1,yield[o,void 0];l&&(yield[void 0,e])}function a(e,r,o={}){const t=s(e,r,o),i=function(e){const{done:r,value:o}=e.next();return r?void 0:o}(t);return i[0]?[new n(i[0],function*(){for(const e of t)e[0]&&(yield e[0])}),void 0]:[void 0,i[1]]}var c=function(n,i){return function(s,c,f){var l,u,d=f.criteriaMode,v=f.fields;try{var p=a(s,n,i),h=p[0],y=p[1];return Promise.resolve(null!=h?{values:{},errors:r((l=h,u="all"===d,l.failures().reduce(function(r,n){var i,s,a,c=n.path,f=n.message,l=void 0===f?"":f,d=n.type,v=o(c);return t({},r,c?r[v]&&u?((i={})[v]=e(v,u,r,d||"",l),i):((a={})[v]=r[v]||t({message:l,type:d},u?{types:(s={},s[d||""]=l||!0,s)}:{}),a):{})},{})),v)}:{values:y,errors:{}})}catch(e){return Promise.reject(e)}}};export{c as superstructResolver}; | ||
import{toNestError as r}from"@hookform/resolvers";import{validate as e}from"superstruct";var o=function(o,t){return function(s,u,n){var f,i=e(s,o,t);return{values:i[1]||{},errors:i[0]?r((f=i[0],f.failures().reduce(function(r,e){return(r[e.path.join(".")]={message:e.message,type:e.type})&&r},{})),n.fields):{}}}};export{o as superstructResolver}; | ||
//# sourceMappingURL=superstruct.module.js.map |
@@ -1,2 +0,2 @@ | ||
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("react-hook-form"),require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","react-hook-form","@hookform/resolvers"],o):o((e||self).hookformResolversSuperstruct={},e.reactHookForm,e.hookformResolvers)}(this,function(e,o,r){function t(){return(t=Object.assign||function(e){for(var o=1;o<arguments.length;o++){var r=arguments[o];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}class n extends TypeError{constructor(e,o){let r;const{message:t,...n}=e,{path:s}=e;super(0===s.length?t:"At path: "+s.join(".")+" -- "+t),Object.assign(this,n),this.name=this.constructor.name,this.failures=()=>{var t;return null!=(t=r)?t:r=[e,...o()]}}}function s(e){return"object"==typeof e&&null!=e}function*i(e,o,r={}){const{path:t=[],branch:n=[e],coerce:c=!1,mask:a=!1}=r,f={path:t,branch:n};if(c&&(e=o.coercer(e,f),a&&"type"!==o.type&&s(o.schema)&&s(e)&&!Array.isArray(e)))for(const r in e)void 0===o.schema[r]&&delete e[r];let u=!0;for(const r of o.validator(e,f))u=!1,yield[r,void 0];for(let[r,l,d]of o.entries(e,f)){const o=i(l,d,{path:void 0===r?t:[...t,r],branch:void 0===r?n:[...n,l],coerce:c,mask:a});for(const t of o)t[0]?(u=!1,yield[t[0],void 0]):c&&(l=t[1],void 0===r?e=l:e instanceof Map?e.set(r,l):e instanceof Set?e.add(l):s(e)&&(e[r]=l))}if(u)for(const r of o.refiner(e,f))u=!1,yield[r,void 0];u&&(yield[void 0,e])}function c(e,o,r={}){const t=i(e,o,r),s=function(e){const{done:o,value:r}=e.next();return o?void 0:r}(t);return s[0]?[new n(s[0],function*(){for(const e of t)e[0]&&(yield e[0])}),void 0]:[void 0,s[1]]}e.superstructResolver=function(e,n){return function(s,i,a){var f,u,l=a.criteriaMode,d=a.fields;try{var p=c(s,e,n),h=p[0],v=p[1];return Promise.resolve(null!=h?{values:{},errors:r.toNestError((f=h,u="all"===l,f.failures().reduce(function(e,n){var s,i,c,a=n.path,f=n.message,l=void 0===f?"":f,d=n.type,p=r.convertArrayToPathName(a);return t({},e,a?e[p]&&u?((s={})[p]=o.appendErrors(p,u,e,d||"",l),s):((c={})[p]=e[p]||t({message:l,type:d},u?{types:(i={},i[d||""]=l||!0,i)}:{}),c):{})},{})),d)}:{values:v,errors:{}})}catch(e){return Promise.reject(e)}}}}); | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("superstruct")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","superstruct"],r):r((e||self).hookformResolversSuperstruct={},e.hookformResolvers,e.superstruct)}(this,function(e,r,o){e.superstructResolver=function(e,s){return function(t,u,n){var f,i=o.validate(t,e,s);return{values:i[1]||{},errors:i[0]?r.toNestError((f=i[0],f.failures().reduce(function(e,r){return(e[r.path.join(".")]={message:r.message,type:r.type})&&e},{})),n.fields):{}}}}}); | ||
//# sourceMappingURL=superstruct.umd.js.map |
import { FieldValues, ResolverOptions, ResolverResult, UnpackNestedValue } from 'react-hook-form'; | ||
import { validate, Struct } from 'superstruct'; | ||
declare type Options = Parameters<typeof validate>[2]; | ||
export declare type Resolver = <T extends Struct<any, any>>(schema: T, factoryOtions?: Options) => <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => Promise<ResolverResult<TFieldValues>>; | ||
export declare type Resolver = <T extends Struct<any, any>>(schema: T, factoryOtions?: Options) => <TFieldValues extends FieldValues, TContext>(values: UnpackNestedValue<TFieldValues>, context: TContext | undefined, options: ResolverOptions<TFieldValues>) => ResolverResult<TFieldValues>; | ||
export {}; |
@@ -15,4 +15,5 @@ { | ||
"react-hook-form": ">=6.6.0", | ||
"@hookform/resolvers": "^1.0.0" | ||
"@hookform/resolvers": "^1.0.0", | ||
"superstruct": ">=0.12.0" | ||
} | ||
} |
@@ -20,11 +20,2 @@ import { superstructResolver } from '..'; | ||
}); | ||
it('should return all the errors from superstructResolver when validation fails with `validateAllFieldCriteria` set to true', async () => { | ||
const result = await superstructResolver(schema)(invalidData, undefined, { | ||
fields, | ||
criteriaMode: 'all', | ||
}); | ||
expect(result).toMatchSnapshot(); | ||
}); | ||
}); |
@@ -1,65 +0,30 @@ | ||
import { appendErrors } from 'react-hook-form'; | ||
import { FieldError } from 'react-hook-form'; | ||
import { toNestError } from '@hookform/resolvers'; | ||
import { StructError, validate } from 'superstruct'; | ||
import { convertArrayToPathName } from '@hookform/resolvers'; | ||
import { Resolver } from './types'; | ||
const parseErrorSchema = ( | ||
error: StructError, | ||
validateAllFieldCriteria: boolean, | ||
) => | ||
error | ||
.failures() | ||
.reduce((previous: Record<string, any>, { path, message = '', type }) => { | ||
const currentPath = convertArrayToPathName(path); | ||
return { | ||
...previous, | ||
...(path | ||
? previous[currentPath] && validateAllFieldCriteria | ||
? { | ||
[currentPath]: appendErrors( | ||
currentPath, | ||
validateAllFieldCriteria, | ||
previous, | ||
type || '', | ||
message, | ||
), | ||
} | ||
: { | ||
[currentPath]: previous[currentPath] || { | ||
message, | ||
type, | ||
...(validateAllFieldCriteria | ||
? { | ||
types: { [type || '']: message || true }, | ||
} | ||
: {}), | ||
}, | ||
} | ||
: {}), | ||
}; | ||
}, {}); | ||
const parseErrorSchema = (error: StructError) => | ||
error.failures().reduce<Record<string, FieldError>>( | ||
(previous, error) => | ||
(previous[error.path.join('.')] = { | ||
message: error.message, | ||
type: error.type, | ||
}) && previous, | ||
{}, | ||
); | ||
export const superstructResolver: Resolver = (schema, options) => async ( | ||
export const superstructResolver: Resolver = (schema, resolverOptions) => ( | ||
values, | ||
_context, | ||
{ criteriaMode, fields }, | ||
_, | ||
options, | ||
) => { | ||
const [errors, result] = validate(values, schema, options); | ||
const result = validate(values, schema, resolverOptions); | ||
if (errors != null) { | ||
return { | ||
values: {}, | ||
errors: toNestError( | ||
parseErrorSchema(errors, criteriaMode === 'all'), | ||
fields, | ||
), | ||
}; | ||
} | ||
return { | ||
values: result, | ||
errors: {}, | ||
values: result[1] || {}, | ||
errors: result[0] | ||
? toNestError(parseErrorSchema(result[0]), options.fields) | ||
: {}, | ||
}; | ||
}; |
@@ -18,2 +18,2 @@ import { | ||
options: ResolverOptions<TFieldValues>, | ||
) => Promise<ResolverResult<TFieldValues>>; | ||
) => ResolverResult<TFieldValues>; |
@@ -1,2 +0,2 @@ | ||
var r=require("@hookform/resolvers");function e(){return(e=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])}return r}).apply(this,arguments)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var n,o=(function(r,e){r.exports=function(r){return function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];if("function"!=typeof r)throw Error("[vest/promisify]: Expected validatorFn to be a function.");return new Promise(function(e){return r.apply(void 0,n).done(e)})}}}(n={exports:{}}),n.exports);exports.vestResolver=function(n,t,i){var s=(void 0===i?{mode:"async"}:i).mode;return function(t,i,u){var a=u.criteriaMode,f=u.fields;try{var c,l=function(){var n,o,i=c.getErrors();return c.hasErrors()?{values:{},errors:r.toNestError((n=i,o="all"===a,Object.entries(n).reduce(function(r,n){var t,i=n[1];return e({},r,((t={})[n[0]]=e({type:"",message:i[0]},o?{types:i.reduce(function(r,n,o){var t;return e({},r,((t={})[o]=n,t))},{})}:{}),t))},{})),f)}:{values:t,errors:{}}},v=function(){if("async"===s){var r=o(n);return Promise.resolve(r(t)).then(function(r){c=r})}c=n(t)}();return Promise.resolve(v&&v.then?v.then(l):l())}catch(r){return Promise.reject(r)}}}; | ||
var r=require("@hookform/resolvers");function e(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}var t=e(require("vest/promisify")),o=function(r,e){var t={};for(var o in r)t[o]||(t[o]={message:r[o][0],type:""}),e&&(t[o].types=r[o].reduce(function(r,e,t){return(r[t]=e)&&r},{}));return t};exports.vestResolver=function(e,s,n){return void 0===n&&(n={}),function(s,u,i){try{var a=function(e){return e.hasErrors()?{values:{},errors:r.toNestError(o(e.getErrors(),"all"===i.criteriaMode),i.fields)}:{values:s,errors:{}}};return Promise.resolve("sync"===n.mode?a(e(s)):Promise.resolve(t.default(e)(s)).then(a))}catch(r){return Promise.reject(r)}}}; | ||
//# sourceMappingURL=vest.js.map |
@@ -1,2 +0,2 @@ | ||
import{toNestError as e}from"@hookform/resolvers";function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}return e}).apply(this,arguments)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var o,t=(function(e,r){e.exports=function(e){return function(){for(var r=arguments.length,o=Array(r),t=0;t<r;t++)o[t]=arguments[t];if("function"!=typeof e)throw Error("[vest/promisify]: Expected validatorFn to be a function.");return new Promise(function(r){return e.apply(void 0,o).done(r)})}}}(o={exports:{}}),o.exports);const n=(o,n,{mode:s}={mode:"async"})=>async(n,i,{criteriaMode:a,fields:f})=>{let l;if("async"===s){const e=t(o);l=await e(n)}else l=o(n);const c=l.getErrors();return l.hasErrors()?{values:{},errors:e((u=c,p="all"===a,Object.entries(u).reduce((e,[o,t])=>r({},e,{[o]:r({type:"",message:t[0]},p?{types:t.reduce((e,o,t)=>r({},e,{[t]:o}),{})}:{})}),{})),f)}:{values:n,errors:{}};var u,p};export{n as vestResolver}; | ||
import{toNestError as r}from"@hookform/resolvers";import e from"vest/promisify";const o=(r,e)=>{const o={};for(const s in r)o[s]||(o[s]={message:r[s][0],type:""}),e&&(o[s].types=r[s].reduce((r,e,o)=>(r[o]=e)&&r,{}));return o},s=(s,t,a={})=>async(t,i,n)=>{const c="sync"===a.mode?s(t):await e(s)(t);return c.hasErrors()?{values:{},errors:r(o(c.getErrors(),"all"===n.criteriaMode),n.fields)}:{values:t,errors:{}}};export{s as vestResolver}; | ||
//# sourceMappingURL=vest.modern.js.map |
@@ -1,2 +0,2 @@ | ||
import{toNestError as r}from"@hookform/resolvers";function e(){return(e=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])}return r}).apply(this,arguments)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var n,o=(function(r,e){r.exports=function(r){return function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];if("function"!=typeof r)throw Error("[vest/promisify]: Expected validatorFn to be a function.");return new Promise(function(e){return r.apply(void 0,n).done(e)})}}}(n={exports:{}}),n.exports),t=function(n,t,i){var f=(void 0===i?{mode:"async"}:i).mode;return function(t,i,s){var u=s.criteriaMode,a=s.fields;try{var c,l=function(){var n,o,i=c.getErrors();return c.hasErrors()?{values:{},errors:r((n=i,o="all"===u,Object.entries(n).reduce(function(r,n){var t,i=n[1];return e({},r,((t={})[n[0]]=e({type:"",message:i[0]},o?{types:i.reduce(function(r,n,o){var t;return e({},r,((t={})[o]=n,t))},{})}:{}),t))},{})),a)}:{values:t,errors:{}}},d=function(){if("async"===f){var r=o(n);return Promise.resolve(r(t)).then(function(r){c=r})}c=n(t)}();return Promise.resolve(d&&d.then?d.then(l):l())}catch(r){return Promise.reject(r)}}};export{t as vestResolver}; | ||
import{toNestError as r}from"@hookform/resolvers";import e from"vest/promisify";var o=function(r,e){var o={};for(var t in r)o[t]||(o[t]={message:r[t][0],type:""}),e&&(o[t].types=r[t].reduce(function(r,e,o){return(r[o]=e)&&r},{}));return o},t=function(t,s,n){return void 0===n&&(n={}),function(s,i,u){try{var a=function(e){return e.hasErrors()?{values:{},errors:r(o(e.getErrors(),"all"===u.criteriaMode),u.fields)}:{values:s,errors:{}}};return Promise.resolve("sync"===n.mode?a(t(s)):Promise.resolve(e(t)(s)).then(a))}catch(r){return Promise.reject(r)}}};export{t as vestResolver}; | ||
//# sourceMappingURL=vest.module.js.map |
@@ -1,2 +0,2 @@ | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers"],r):r((e||self).hookformResolversVest={},e.resolvers)}(this,function(e,r){function o(){return(o=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var n=function(e){var r={exports:{}};return function(e,r){e.exports=function(e){return function(){for(var r=arguments.length,o=Array(r),n=0;n<r;n++)o[n]=arguments[n];if("function"!=typeof e)throw Error("[vest/promisify]: Expected validatorFn to be a function.");return new Promise(function(r){return e.apply(void 0,o).done(r)})}}}(r),r.exports}();e.vestResolver=function(e,t,i){var s=(void 0===i?{mode:"async"}:i).mode;return function(t,i,f){var u=f.criteriaMode,a=f.fields;try{var l,c=function(){var e,n,i=l.getErrors();return l.hasErrors()?{values:{},errors:r.toNestError((e=i,n="all"===u,Object.entries(e).reduce(function(e,r){var t,i=r[1];return o({},e,((t={})[r[0]]=o({type:"",message:i[0]},n?{types:i.reduce(function(e,r,n){var t;return o({},e,((t={})[n]=r,t))},{})}:{}),t))},{})),a)}:{values:t,errors:{}}},d=function(){if("async"===s){var r=n(e);return Promise.resolve(r(t)).then(function(e){l=e})}l=e(t)}();return Promise.resolve(d&&d.then?d.then(c):c())}catch(e){return Promise.reject(e)}}}}); | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("vest/promisify")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","vest/promisify"],r):r((e||self).hookformResolversVest={},e.resolvers,e.promisify)}(this,function(e,r,o){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=t(o),n=function(e,r){var o={};for(var t in e)o[t]||(o[t]={message:e[t][0],type:""}),r&&(o[t].types=e[t].reduce(function(e,r,o){return(e[o]=r)&&e},{}));return o};e.vestResolver=function(e,o,t){return void 0===t&&(t={}),function(o,i,f){try{var u=function(e){return e.hasErrors()?{values:{},errors:r.toNestError(n(e.getErrors(),"all"===f.criteriaMode),f.fields)}:{values:o,errors:{}}};return Promise.resolve("sync"===t.mode?u(e(o)):Promise.resolve(s.default(e)(o)).then(u))}catch(e){return Promise.reject(e)}}}}); | ||
//# sourceMappingURL=vest.umd.js.map |
@@ -14,4 +14,6 @@ { | ||
"peerDependencies": { | ||
"react-hook-form": ">=6.6.0" | ||
"react-hook-form": ">=6.6.0", | ||
"@hookform/resolvers": ">=2.0.0", | ||
"vest": ">=3.0.0" | ||
} | ||
} |
@@ -14,3 +14,3 @@ import { | ||
schemaOptions?: never, | ||
factoryOptions?: { mode: 'async' | 'sync' }, | ||
factoryOptions?: { mode?: 'async' | 'sync' }, | ||
) => <TFieldValues extends FieldValues, TContext>( | ||
@@ -17,0 +17,0 @@ values: UnpackNestedValue<TFieldValues>, |
import { toNestError } from '@hookform/resolvers'; | ||
import { FieldError } from 'react-hook-form'; | ||
import promisify from 'vest/promisify'; | ||
import { DraftResult, IVestResult } from 'vest/vestResult'; | ||
import type { VestErrors, Resolver } from './types'; | ||
@@ -10,21 +10,16 @@ | ||
) => { | ||
return Object.entries(vestError).reduce((prev, [key, value]) => { | ||
return { | ||
...prev, | ||
[key]: { | ||
type: '', | ||
message: value[0], | ||
...(validateAllFieldCriteria | ||
? { | ||
types: value.reduce((prev, message, index) => { | ||
return { | ||
...prev, | ||
[index]: message, | ||
}; | ||
}, {}), | ||
} | ||
: {}), | ||
}, | ||
}; | ||
}, {}); | ||
const errors: Record<string, FieldError> = {}; | ||
for (const path in vestError) { | ||
if (!errors[path]) { | ||
errors[path] = { message: vestError[path][0], type: '' }; | ||
} | ||
if (validateAllFieldCriteria) { | ||
errors[path].types = vestError[path].reduce<Record<number, string>>( | ||
(acc, message, index) => (acc[index] = message) && acc, | ||
{}, | ||
); | ||
} | ||
} | ||
return errors; | ||
}; | ||
@@ -35,25 +30,18 @@ | ||
_, | ||
{ mode } = { mode: 'async' }, | ||
) => async (values, _context, { criteriaMode, fields }) => { | ||
let result: IVestResult | DraftResult; | ||
if (mode === 'async') { | ||
const validateSchema = promisify(schema); | ||
result = await validateSchema(values); | ||
} else { | ||
result = schema(values); | ||
} | ||
resolverOptions = {}, | ||
) => async (values, _context, options) => { | ||
const result = | ||
resolverOptions.mode === 'sync' | ||
? schema(values) | ||
: await promisify(schema)(values); | ||
const errors = result.getErrors(); | ||
if (!result.hasErrors()) { | ||
return { values, errors: {} }; | ||
} | ||
return { | ||
values: {}, | ||
errors: toNestError( | ||
parseErrorSchema(errors, criteriaMode === 'all'), | ||
fields, | ||
), | ||
}; | ||
return result.hasErrors() | ||
? { | ||
values: {}, | ||
errors: toNestError( | ||
parseErrorSchema(result.getErrors(), options.criteriaMode === 'all'), | ||
options.fields, | ||
), | ||
} | ||
: { values, errors: {} }; | ||
}; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
11
174630
1470