@hookform/resolvers 3.3.2 → 3.3.3

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hookform/resolvers",
3
3
  "amdName": "hookformResolvers",
4
- "version": "3.3.2",
4
+ "version": "3.3.3",
5
5
  "description": "React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types, TypeBox, arktype and Typanion",
6
6
  "main": "dist/resolvers.js",
7
7
  "module": "dist/resolvers.module.js",
@@ -173,7 +173,9 @@
173
173
  "lint:types": "tsc",
174
174
  "test": "vitest run",
175
175
  "test:watch": "vitest watch",
176
- "check:all": "npm-run-all --parallel lint:* test"
176
+ "check:all": "npm-run-all --parallel lint:* test",
177
+ "csb:install": "pnpx replace-json-property@1.9.0 package.json prepare \"node -e 'process.exit(0)'\" && pnpm i --no-frozen-lockfile",
178
+ "csb:build": "cross-env npm-run-all --sequential 'build:*'"
177
179
  },
178
180
  "keywords": [
179
181
  "scheme",
@@ -247,7 +249,7 @@
247
249
  "superstruct": "^1.0.3",
248
250
  "typanion": "^3.14.0",
249
251
  "typescript": "^5.1.6",
250
- "valibot": "^0.12.0",
252
+ "valibot": "^0.24.1",
251
253
  "vest": "^4.6.11",
252
254
  "vite": "^4.4.9",
253
255
  "vite-tsconfig-paths": "^4.2.0",
@@ -1,2 +1,2 @@
1
- var r=require("@hookform/resolvers"),e=require("valibot"),t=require("react-hook-form"),o=function(r,e){for(var o={};r.issues.length;){var a=r.issues[0];if(a.path){var s=a.path.map(function(r){return r.key}).join(".");if(o[s]||(o[s]={message:a.message,type:a.validation}),e){var n=o[s].types,i=n&&n[a.validation];o[s]=t.appendErrors(s,e,o,a.validation,i?[].concat(i,a.message):a.message)}r.issues.shift()}}return o};exports.valibotResolver=function(t,a,s){return void 0===s&&(s={}),function(n,i,u){try{return Promise.resolve(function(r,o){try{var i=function(){function r(r){return{values:s.raw?n:r,errors:{}}}var o=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},a);return"sync"===s.mode?r(e.parse(t,n,o)):Promise.resolve(e.parseAsync(t,n,o)).then(r)}()}catch(r){return o(r)}return i&&i.then?i.then(void 0,o):i}(0,function(t){if(t instanceof e.ValiError)return{values:{},errors:r.toNestErrors(o(t,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)};throw t}))}catch(r){return Promise.reject(r)}}};
1
+ var r=require("@hookform/resolvers"),e=require("valibot"),t=require("react-hook-form");function n(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}var o=function(r,e){for(var o,a={},i=function(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=function(r,e){if(r){if("string"==typeof r)return n(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(r,e):void 0}}(r))){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(r.issues);!(o=i()).done;){var s=o.value;if(s.path){var u=s.path.map(function(r){return r.key}).join(".");if(a[u]||(a[u]={message:s.message,type:s.validation}),e){var l=a[u].types,c=l&&l[s.validation];a[u]=t.appendErrors(u,e,a,s.validation,c?[].concat(c,s.message):s.message)}}}return a};exports.valibotResolver=function(t,n,a){return void 0===a&&(a={}),function(i,s,u){try{return Promise.resolve(function(r,o){try{var s=function(){function r(r){return{values:a.raw?i:r,errors:{}}}var o=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},n);return"sync"===a.mode?r(e.parse(t,i,o)):Promise.resolve(e.parseAsync(t,i,o)).then(r)}()}catch(r){return o(r)}return s&&s.then?s.then(void 0,o):s}(0,function(t){if(t instanceof e.ValiError)return{values:{},errors:r.toNestErrors(o(t,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)};throw t}))}catch(r){return Promise.reject(r)}}};
2
2
  //# sourceMappingURL=valibot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"valibot.js","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n for (; valiErrors.issues.length; ) {\n const error = valiErrors.issues[0];\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n valiErrors.issues.shift();\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","errors","issues","length","error","path","_path","map","_ref","key","join","message","type","validation","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","options","Promise","resolve","_temp2","parsed","raw","schemaOpts","Object","assign","abortEarly","abortPipeEarly","mode","parse","parseAsync","then","_catch","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode","e","reject"],"mappings":"uFAUMA,EAAc,SAClBC,EACAC,GAGA,IADA,IAAMC,EAAqC,CAAA,EACpCF,EAAWG,OAAOC,QAAU,CACjC,IAAMC,EAAQL,EAAWG,OAAO,GAChC,GAAKE,EAAMC,KAAX,CAGA,IAAMC,EAAQF,EAAMC,KAAKE,IAAI,SAAAC,UAAMA,EAAHC,GAAa,GAAEC,KAAK,KAMpD,GAJKT,EAAOK,KACVL,EAAOK,GAAS,CAAEK,QAASP,EAAMO,QAASC,KAAMR,EAAMS,aAGpDb,EAA0B,CAC5B,IAAMc,EAAQb,EAAOK,GAAOQ,MACtBC,EAAWD,GAASA,EAAMV,EAAMS,YAEtCZ,EAAOK,GAASU,EAAAA,aACdV,EACAN,EACAC,EACAG,EAAMS,WACNE,EACK,GAAgBE,OAAOF,EAAsBX,EAAMO,SACpDP,EAAMO,QAEb,CAEDZ,EAAWG,OAAOgB,OAtBjB,CAuBF,CAED,OAAOjB,CACT,0BAGE,SAACkB,EAAQC,EAAeC,GAAoB,gBAApBA,IAAAA,EAAkB,CAAE,GAAA,SACrCC,EAAQC,EAAGC,GAAW,IAAA,OAAAC,QAAAC,gCACvB,WAAA,SAAAC,EAUIC,GASN,MAAO,CACLN,OAAQD,EAAgBQ,IAAMP,EAASM,EACvC3B,OAAQ,GACR,CArBF,IAAM6B,EAAaC,OAAOC,OACxB,CAAE,EACF,CACEC,YAAY,EACZC,gBAAgB,GAElBd,GAI+B,MAAN,SAAzBC,EAAgBc,KAAeR,EAC3BS,EAAKA,MAACjB,EAAsBG,EAAQQ,IAAWL,QAAAC,QACzCW,EAAAA,WACJlB,EACAG,EACAQ,IACDQ,KAAAX,EAMR,6DAxB0BY,CACvB,EAuBH,SAAQnC,GACP,GAAIA,aAAiBoC,EAAAA,UACnB,MAAO,CACLlB,OAAQ,GACRrB,OAAQwC,EAAAA,aACN3C,EACEM,GACCoB,EAAQkB,2BACkB,QAAzBlB,EAAQmB,cAEZnB,IAKN,MAAMpB,CACP,GACH,CAAC,MAAAwC,UAAAnB,QAAAoB,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"valibot.js","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n\n for (const error of valiErrors.issues) {\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","_step","errors","_iterator","_createForOfIteratorHelperLoose","issues","done","error","value","path","_path","map","_ref","key","join","message","type","validation","types","messages","appendErrors","concat","schema","schemaOptions","resolverOptions","values","_","options","Promise","resolve","_temp2","parsed","raw","schemaOpts","Object","assign","abortEarly","abortPipeEarly","mode","parse","parseAsync","then","_catch","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode","e","reject"],"mappings":"iMAUA,IAAMA,EAAc,SAClBC,EACAC,GAIA,IAFA,IAEqCC,EAF/BC,EAAqC,CAAE,EAE7CC,2qBAAAC,CAAoBL,EAAWM,UAAMJ,EAAAE,KAAAG,MAAE,CAA5B,IAAAC,EAAKN,EAAAO,MACd,GAAKD,EAAME,KAAX,CAGA,IAAMC,EAAQH,EAAME,KAAKE,IAAI,SAAAC,UAAMA,EAAHC,GAAa,GAAEC,KAAK,KAMpD,GAJKZ,EAAOQ,KACVR,EAAOQ,GAAS,CAAEK,QAASR,EAAMQ,QAASC,KAAMT,EAAMU,aAGpDjB,EAA0B,CAC5B,IAAMkB,EAAQhB,EAAOQ,GAAOQ,MACtBC,EAAWD,GAASA,EAAMX,EAAMU,YAEtCf,EAAOQ,GAASU,EAAYA,aAC1BV,EACAV,EACAE,EACAK,EAAMU,WACNE,EACK,GAAgBE,OAAOF,EAAsBZ,EAAMQ,SACpDR,EAAMQ,QAEb,CApBA,CAqBF,CAED,OAAOb,CACT,0BAGE,SAACoB,EAAQC,EAAeC,GAAoB,gBAApBA,IAAAA,EAAkB,IAAE,SACrCC,EAAQC,EAAGC,GAAW,IAAA,OAAAC,QAAAC,gCACvB,WAAA,SAAAC,EAUIC,GASN,MAAO,CACLN,OAAQD,EAAgBQ,IAAMP,EAASM,EACvC7B,OAAQ,GACR,CArBF,IAAM+B,EAAaC,OAAOC,OACxB,GACA,CACEC,YAAY,EACZC,gBAAgB,GAElBd,GAI+B,MAAN,SAAzBC,EAAgBc,KAAeR,EAC3BS,EAAAA,MAAMjB,EAAsBG,EAAQQ,IAAWL,QAAAC,QACzCW,aACJlB,EACAG,EACAQ,IACDQ,KAAAX,EAMR,6DAxB0BY,CACvB,EAuBH,SAAQnC,GACP,GAAIA,aAAiBoC,YACnB,MAAO,CACLlB,OAAQ,CAAE,EACVvB,OAAQ0C,EAAYA,aAClB9C,EACES,GACCoB,EAAQkB,2BACkB,QAAzBlB,EAAQmB,cAEZnB,IAKN,MAAMpB,CACP,GACH,CAAC,MAAAwC,UAAAnB,QAAAoB,OAAAD,EAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import{toNestErrors as r}from"@hookform/resolvers";import{parse as e,parseAsync as t,ValiError as o}from"valibot";import{appendErrors as n}from"react-hook-form";var a=function(r,e){for(var t={};r.issues.length;){var o=r.issues[0];if(o.path){var a=o.path.map(function(r){return r.key}).join(".");if(t[a]||(t[a]={message:o.message,type:o.validation}),e){var i=t[a].types,s=i&&i[o.validation];t[a]=n(a,e,t,o.validation,s?[].concat(s,o.message):o.message)}r.issues.shift()}}return t},i=function(n,i,s){return void 0===s&&(s={}),function(u,c,f){try{return Promise.resolve(function(r,o){try{var a=function(){function r(r){return{values:s.raw?u:r,errors:{}}}var o=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},i);return"sync"===s.mode?r(e(n,u,o)):Promise.resolve(t(n,u,o)).then(r)}()}catch(r){return o(r)}return a&&a.then?a.then(void 0,o):a}(0,function(e){if(e instanceof o)return{values:{},errors:r(a(e,!f.shouldUseNativeValidation&&"all"===f.criteriaMode),f)};throw e}))}catch(r){return Promise.reject(r)}}};export{i as valibotResolver};
1
+ import{toNestErrors as r}from"@hookform/resolvers";import{parse as t,parseAsync as e,ValiError as n}from"valibot";import{appendErrors as o}from"react-hook-form";function a(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e<t;e++)n[e]=r[e];return n}var i=function(r,t){for(var e,n={},i=function(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(e)return(e=e.call(r)).next.bind(e);if(Array.isArray(r)||(e=function(r,t){if(r){if("string"==typeof r)return a(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?a(r,t):void 0}}(r))){e&&(r=e);var n=0;return function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(r.issues);!(e=i()).done;){var u=e.value;if(u.path){var s=u.path.map(function(r){return r.key}).join(".");if(n[s]||(n[s]={message:u.message,type:u.validation}),t){var c=n[s].types,l=c&&c[u.validation];n[s]=o(s,t,n,u.validation,l?[].concat(l,u.message):u.message)}}}return n},u=function(o,a,u){return void 0===u&&(u={}),function(s,c,l){try{return Promise.resolve(function(r,n){try{var i=function(){function r(r){return{values:u.raw?s:r,errors:{}}}var n=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},a);return"sync"===u.mode?r(t(o,s,n)):Promise.resolve(e(o,s,n)).then(r)}()}catch(r){return n(r)}return i&&i.then?i.then(void 0,n):i}(0,function(t){if(t instanceof n)return{values:{},errors:r(i(t,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)};throw t}))}catch(r){return Promise.reject(r)}}};export{u as valibotResolver};
2
2
  //# sourceMappingURL=valibot.module.js.map
@@ -1,2 +1,2 @@
1
- import{toNestErrors as o}from"@hookform/resolvers";import{parse as s,parseAsync as t,ValiError as e}from"valibot";import{appendErrors as a}from"react-hook-form";const r=(o,s)=>{const t={};for(;o.issues.length;){const e=o.issues[0];if(!e.path)continue;const r=e.path.map(({key:o})=>o).join(".");if(t[r]||(t[r]={message:e.message,type:e.validation}),s){const o=t[r].types,i=o&&o[e.validation];t[r]=a(r,s,t,e.validation,i?[].concat(i,e.message):e.message)}o.issues.shift()}return t},i=(a,i,n={})=>async(c,l,m)=>{try{const o=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},i),e="sync"===n.mode?s(a,c,o):await t(a,c,o);return{values:n.raw?c:e,errors:{}}}catch(s){if(s instanceof e)return{values:{},errors:o(r(s,!m.shouldUseNativeValidation&&"all"===m.criteriaMode),m)};throw s}};export{i as valibotResolver};
1
+ import{toNestErrors as o}from"@hookform/resolvers";import{parse as t,parseAsync as a,ValiError as r}from"valibot";import{appendErrors as e}from"react-hook-form";const s=(o,t)=>{const a={};for(const r of o.issues){if(!r.path)continue;const o=r.path.map(({key:o})=>o).join(".");if(a[o]||(a[o]={message:r.message,type:r.validation}),t){const s=a[o].types,i=s&&s[r.validation];a[o]=e(o,t,a,r.validation,i?[].concat(i,r.message):r.message)}}return a},i=(e,i,n={})=>async(c,m,l)=>{try{const o=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},i),r="sync"===n.mode?t(e,c,o):await a(e,c,o);return{values:n.raw?c:r,errors:{}}}catch(t){if(t instanceof r)return{values:{},errors:o(s(t,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)};throw t}};export{i as valibotResolver};
2
2
  //# sourceMappingURL=valibot.modern.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"valibot.modern.mjs","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n for (; valiErrors.issues.length; ) {\n const error = valiErrors.issues[0];\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n valiErrors.issues.shift();\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","errors","issues","length","error","path","_path","map","key","join","message","type","validation","types","messages","appendErrors","concat","shift","valibotResolver","schema","schemaOptions","resolverOptions","async","values","_","options","schemaOpts","Object","assign","abortEarly","abortPipeEarly","parsed","mode","parse","parseAsync","raw","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode"],"mappings":"iKAUA,MAAMA,EAAcA,CAClBC,EACAC,KAEA,MAAMC,EAAqC,CAAE,EAC7C,KAAOF,EAAWG,OAAOC,QAAU,CACjC,MAAMC,EAAQL,EAAWG,OAAO,GAChC,IAAKE,EAAMC,KACT,SAEF,MAAMC,EAAQF,EAAMC,KAAKE,IAAI,EAAGC,SAAUA,GAAKC,KAAK,KAMpD,GAJKR,EAAOK,KACVL,EAAOK,GAAS,CAAEI,QAASN,EAAMM,QAASC,KAAMP,EAAMQ,aAGpDZ,EAA0B,CAC5B,MAAMa,EAAQZ,EAAOK,GAAOO,MACtBC,EAAWD,GAASA,EAAMT,EAAMQ,YAEtCX,EAAOK,GAASS,EACdT,EACAN,EACAC,EACAG,EAAMQ,WACNE,EACK,GAAgBE,OAAOF,EAAsBV,EAAMM,SACpDN,EAAMM,QAEb,CAEDX,EAAWG,OAAOe,OACnB,CAED,OAAOhB,GAGIiB,EACXA,CAACC,EAAQC,EAAeC,EAAkB,CAAE,IAC5CC,MAAOC,EAAQC,EAAGC,KAChB,IACE,MAAMC,EAAaC,OAAOC,OACxB,CAAE,EACF,CACEC,YAAY,EACZC,gBAAgB,GAElBV,GAGIW,EACqB,SAAzBV,EAAgBW,KACZC,EAAMd,EAAsBI,EAAQG,SAC9BQ,EACJf,EACAI,EACAG,GAGR,MAAO,CACLH,OAAQF,EAAgBc,IAAMZ,EAASQ,EACvC9B,OAAQ,GAEX,CAAC,MAAOG,GACP,GAAIA,aAAiBgC,EACnB,MAAO,CACLb,OAAQ,CAAE,EACVtB,OAAQoC,EACNvC,EACEM,GACCqB,EAAQa,2BACkB,QAAzBb,EAAQc,cAEZd,IAKN,MAAMrB,CACP"}
1
+ {"version":3,"file":"valibot.modern.mjs","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n\n for (const error of valiErrors.issues) {\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","errors","error","issues","path","_path","map","key","join","message","type","validation","types","messages","appendErrors","concat","valibotResolver","schema","schemaOptions","resolverOptions","async","values","_","options","schemaOpts","Object","assign","abortEarly","abortPipeEarly","parsed","mode","parse","parseAsync","raw","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode"],"mappings":"iKAUA,MAAMA,EAAcA,CAClBC,EACAC,KAEA,MAAMC,EAAqC,CAAA,EAE3C,IAAK,MAAMC,KAASH,EAAWI,OAAQ,CACrC,IAAKD,EAAME,KACT,SAEF,MAAMC,EAAQH,EAAME,KAAKE,IAAI,EAAGC,SAAUA,GAAKC,KAAK,KAMpD,GAJKP,EAAOI,KACVJ,EAAOI,GAAS,CAAEI,QAASP,EAAMO,QAASC,KAAMR,EAAMS,aAGpDX,EAA0B,CAC5B,MAAMY,EAAQX,EAAOI,GAAOO,MACtBC,EAAWD,GAASA,EAAMV,EAAMS,YAEtCV,EAAOI,GAASS,EACdT,EACAL,EACAC,EACAC,EAAMS,WACNE,EACK,GAAgBE,OAAOF,EAAsBX,EAAMO,SACpDP,EAAMO,QAEb,CACF,CAED,OAAOR,GAGIe,EACXA,CAACC,EAAQC,EAAeC,EAAkB,CAAA,IAC1CC,MAAOC,EAAQC,EAAGC,KAChB,IACE,MAAMC,EAAaC,OAAOC,OACxB,CAAE,EACF,CACEC,YAAY,EACZC,gBAAgB,GAElBV,GAGIW,EACqB,SAAzBV,EAAgBW,KACZC,EAAMd,EAAsBI,EAAQG,SAC9BQ,EACJf,EACAI,EACAG,GAGR,MAAO,CACLH,OAAQF,EAAgBc,IAAMZ,EAASQ,EACvC5B,OAAQ,GAEX,CAAC,MAAOC,GACP,GAAIA,aAAiBgC,EACnB,MAAO,CACLb,OAAQ,GACRpB,OAAQkC,EACNrC,EACEI,GACCqB,EAAQa,2BACkB,QAAzBb,EAAQc,cAEZd,IAKN,MAAMrB,CACP"}
@@ -1,2 +1,2 @@
1
- import{toNestErrors as r}from"@hookform/resolvers";import{parse as e,parseAsync as t,ValiError as o}from"valibot";import{appendErrors as n}from"react-hook-form";var a=function(r,e){for(var t={};r.issues.length;){var o=r.issues[0];if(o.path){var a=o.path.map(function(r){return r.key}).join(".");if(t[a]||(t[a]={message:o.message,type:o.validation}),e){var i=t[a].types,s=i&&i[o.validation];t[a]=n(a,e,t,o.validation,s?[].concat(s,o.message):o.message)}r.issues.shift()}}return t},i=function(n,i,s){return void 0===s&&(s={}),function(u,c,f){try{return Promise.resolve(function(r,o){try{var a=function(){function r(r){return{values:s.raw?u:r,errors:{}}}var o=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},i);return"sync"===s.mode?r(e(n,u,o)):Promise.resolve(t(n,u,o)).then(r)}()}catch(r){return o(r)}return a&&a.then?a.then(void 0,o):a}(0,function(e){if(e instanceof o)return{values:{},errors:r(a(e,!f.shouldUseNativeValidation&&"all"===f.criteriaMode),f)};throw e}))}catch(r){return Promise.reject(r)}}};export{i as valibotResolver};
1
+ import{toNestErrors as r}from"@hookform/resolvers";import{parse as t,parseAsync as e,ValiError as n}from"valibot";import{appendErrors as o}from"react-hook-form";function a(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e<t;e++)n[e]=r[e];return n}var i=function(r,t){for(var e,n={},i=function(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(e)return(e=e.call(r)).next.bind(e);if(Array.isArray(r)||(e=function(r,t){if(r){if("string"==typeof r)return a(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?a(r,t):void 0}}(r))){e&&(r=e);var n=0;return function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(r.issues);!(e=i()).done;){var u=e.value;if(u.path){var s=u.path.map(function(r){return r.key}).join(".");if(n[s]||(n[s]={message:u.message,type:u.validation}),t){var c=n[s].types,l=c&&c[u.validation];n[s]=o(s,t,n,u.validation,l?[].concat(l,u.message):u.message)}}}return n},u=function(o,a,u){return void 0===u&&(u={}),function(s,c,l){try{return Promise.resolve(function(r,n){try{var i=function(){function r(r){return{values:u.raw?s:r,errors:{}}}var n=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},a);return"sync"===u.mode?r(t(o,s,n)):Promise.resolve(e(o,s,n)).then(r)}()}catch(r){return n(r)}return i&&i.then?i.then(void 0,n):i}(0,function(t){if(t instanceof n)return{values:{},errors:r(i(t,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)};throw t}))}catch(r){return Promise.reject(r)}}};export{u as valibotResolver};
2
2
  //# sourceMappingURL=valibot.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"valibot.module.js","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n for (; valiErrors.issues.length; ) {\n const error = valiErrors.issues[0];\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n valiErrors.issues.shift();\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","errors","issues","length","error","path","_path","map","_ref","key","join","message","type","validation","types","messages","appendErrors","concat","shift","valibotResolver","schema","schemaOptions","resolverOptions","values","_","options","Promise","resolve","_temp2","parsed","raw","schemaOpts","Object","assign","abortEarly","abortPipeEarly","mode","parse","parseAsync","then","_catch","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode","e","reject"],"mappings":"iKAUA,IAAMA,EAAc,SAClBC,EACAC,GAGA,IADA,IAAMC,EAAqC,CAAA,EACpCF,EAAWG,OAAOC,QAAU,CACjC,IAAMC,EAAQL,EAAWG,OAAO,GAChC,GAAKE,EAAMC,KAAX,CAGA,IAAMC,EAAQF,EAAMC,KAAKE,IAAI,SAAAC,UAAMA,EAAHC,GAAa,GAAEC,KAAK,KAMpD,GAJKT,EAAOK,KACVL,EAAOK,GAAS,CAAEK,QAASP,EAAMO,QAASC,KAAMR,EAAMS,aAGpDb,EAA0B,CAC5B,IAAMc,EAAQb,EAAOK,GAAOQ,MACtBC,EAAWD,GAASA,EAAMV,EAAMS,YAEtCZ,EAAOK,GAASU,EACdV,EACAN,EACAC,EACAG,EAAMS,WACNE,EACK,GAAgBE,OAAOF,EAAsBX,EAAMO,SACpDP,EAAMO,QAEb,CAEDZ,EAAWG,OAAOgB,OAtBjB,CAuBF,CAED,OAAOjB,CACT,EAEakB,EACX,SAACC,EAAQC,EAAeC,GAAoB,gBAApBA,IAAAA,EAAkB,CAAE,GAAA,SACrCC,EAAQC,EAAGC,GAAW,IAAA,OAAAC,QAAAC,gCACvB,WAAA,SAAAC,EAUIC,GASN,MAAO,CACLN,OAAQD,EAAgBQ,IAAMP,EAASM,EACvC5B,OAAQ,GACR,CArBF,IAAM8B,EAAaC,OAAOC,OACxB,CAAE,EACF,CACEC,YAAY,EACZC,gBAAgB,GAElBd,GAI+B,MAAN,SAAzBC,EAAgBc,KAAeR,EAC3BS,EAAMjB,EAAsBG,EAAQQ,IAAWL,QAAAC,QACzCW,EACJlB,EACAG,EACAQ,IACDQ,KAAAX,EAMR,6DAxB0BY,CACvB,EAuBH,SAAQpC,GACP,GAAIA,aAAiBqC,EACnB,MAAO,CACLlB,OAAQ,GACRtB,OAAQyC,EACN5C,EACEM,GACCqB,EAAQkB,2BACkB,QAAzBlB,EAAQmB,cAEZnB,IAKN,MAAMrB,CACP,GACH,CAAC,MAAAyC,UAAAnB,QAAAoB,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"valibot.module.js","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n\n for (const error of valiErrors.issues) {\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","_step","errors","_iterator","_createForOfIteratorHelperLoose","issues","done","error","value","path","_path","map","_ref","key","join","message","type","validation","types","messages","appendErrors","concat","valibotResolver","schema","schemaOptions","resolverOptions","values","_","options","Promise","resolve","_temp2","parsed","raw","schemaOpts","Object","assign","abortEarly","abortPipeEarly","mode","parse","parseAsync","then","_catch","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode","e","reject"],"mappings":"2QAUA,IAAMA,EAAc,SAClBC,EACAC,GAIA,IAFA,IAEqCC,EAF/BC,EAAqC,CAAE,EAE7CC,2qBAAAC,CAAoBL,EAAWM,UAAMJ,EAAAE,KAAAG,MAAE,CAA5B,IAAAC,EAAKN,EAAAO,MACd,GAAKD,EAAME,KAAX,CAGA,IAAMC,EAAQH,EAAME,KAAKE,IAAI,SAAAC,UAAMA,EAAHC,GAAa,GAAEC,KAAK,KAMpD,GAJKZ,EAAOQ,KACVR,EAAOQ,GAAS,CAAEK,QAASR,EAAMQ,QAASC,KAAMT,EAAMU,aAGpDjB,EAA0B,CAC5B,IAAMkB,EAAQhB,EAAOQ,GAAOQ,MACtBC,EAAWD,GAASA,EAAMX,EAAMU,YAEtCf,EAAOQ,GAASU,EACdV,EACAV,EACAE,EACAK,EAAMU,WACNE,EACK,GAAgBE,OAAOF,EAAsBZ,EAAMQ,SACpDR,EAAMQ,QAEb,CApBA,CAqBF,CAED,OAAOb,CACT,EAEaoB,EACX,SAACC,EAAQC,EAAeC,GAAoB,gBAApBA,IAAAA,EAAkB,IAAE,SACrCC,EAAQC,EAAGC,GAAW,IAAA,OAAAC,QAAAC,gCACvB,WAAA,SAAAC,EAUIC,GASN,MAAO,CACLN,OAAQD,EAAgBQ,IAAMP,EAASM,EACvC9B,OAAQ,GACR,CArBF,IAAMgC,EAAaC,OAAOC,OACxB,GACA,CACEC,YAAY,EACZC,gBAAgB,GAElBd,GAI+B,MAAN,SAAzBC,EAAgBc,KAAeR,EAC3BS,EAAMjB,EAAsBG,EAAQQ,IAAWL,QAAAC,QACzCW,EACJlB,EACAG,EACAQ,IACDQ,KAAAX,EAMR,6DAxB0BY,CACvB,EAuBH,SAAQpC,GACP,GAAIA,aAAiBqC,EACnB,MAAO,CACLlB,OAAQ,CAAE,EACVxB,OAAQ2C,EACN/C,EACES,GACCqB,EAAQkB,2BACkB,QAAzBlB,EAAQmB,cAEZnB,IAKN,MAAMrB,CACP,GACH,CAAC,MAAAyC,UAAAnB,QAAAoB,OAAAD,EAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@hookform/resolvers"),require("valibot"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","valibot","react-hook-form"],r):r((e||self).hookformResolversValibot={},e.hookformResolvers,e.valibot,e.ReactHookForm)}(this,function(e,r,o,t){var s=function(e,r){for(var o={};e.issues.length;){var s=e.issues[0];if(s.path){var i=s.path.map(function(e){return e.key}).join(".");if(o[i]||(o[i]={message:s.message,type:s.validation}),r){var n=o[i].types,a=n&&n[s.validation];o[i]=t.appendErrors(i,r,o,s.validation,a?[].concat(a,s.message):s.message)}e.issues.shift()}}return o};e.valibotResolver=function(e,t,i){return void 0===i&&(i={}),function(n,a,f){try{return Promise.resolve(function(r,s){try{var a=function(){function r(e){return{values:i.raw?n:e,errors:{}}}var s=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},t);return"sync"===i.mode?r(o.parse(e,n,s)):Promise.resolve(o.parseAsync(e,n,s)).then(r)}()}catch(e){return s(e)}return a&&a.then?a.then(void 0,s):a}(0,function(e){if(e instanceof o.ValiError)return{values:{},errors:r.toNestErrors(s(e,!f.shouldUseNativeValidation&&"all"===f.criteriaMode),f)};throw e}))}catch(e){return Promise.reject(e)}}}});
1
+ !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@hookform/resolvers"),require("valibot"),require("react-hook-form")):"function"==typeof define&&define.amd?define(["exports","@hookform/resolvers","valibot","react-hook-form"],e):e((r||self).hookformResolversValibot={},r.hookformResolvers,r.valibot,r.ReactHookForm)}(this,function(r,e,t,o){function n(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,o=new Array(e);t<e;t++)o[t]=r[t];return o}var a=function(r,e){for(var t,a={},i=function(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=function(r,e){if(r){if("string"==typeof r)return n(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(r,e):void 0}}(r))){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(r.issues);!(t=i()).done;){var s=t.value;if(s.path){var l=s.path.map(function(r){return r.key}).join(".");if(a[l]||(a[l]={message:s.message,type:s.validation}),e){var u=a[l].types,f=u&&u[s.validation];a[l]=o.appendErrors(l,e,a,s.validation,f?[].concat(f,s.message):s.message)}}}return a};r.valibotResolver=function(r,o,n){return void 0===n&&(n={}),function(i,s,l){try{return Promise.resolve(function(e,a){try{var s=function(){function e(r){return{values:n.raw?i:r,errors:{}}}var a=Object.assign({},{abortEarly:!1,abortPipeEarly:!1},o);return"sync"===n.mode?e(t.parse(r,i,a)):Promise.resolve(t.parseAsync(r,i,a)).then(e)}()}catch(r){return a(r)}return s&&s.then?s.then(void 0,a):s}(0,function(r){if(r instanceof t.ValiError)return{values:{},errors:e.toNestErrors(a(r,!l.shouldUseNativeValidation&&"all"===l.criteriaMode),l)};throw r}))}catch(r){return Promise.reject(r)}}}});
2
2
  //# sourceMappingURL=valibot.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"valibot.umd.js","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n for (; valiErrors.issues.length; ) {\n const error = valiErrors.issues[0];\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n valiErrors.issues.shift();\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","errors","issues","length","error","path","_path","map","_ref","key","join","message","type","validation","types","messages","appendErrors","concat","shift","schema","schemaOptions","resolverOptions","values","_","options","Promise","resolve","_temp2","parsed","raw","schemaOpts","Object","assign","abortEarly","abortPipeEarly","mode","parse","parseAsync","then","_catch","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode","e","reject"],"mappings":"qaAUA,IAAMA,EAAc,SAClBC,EACAC,GAGA,IADA,IAAMC,EAAqC,CAAA,EACpCF,EAAWG,OAAOC,QAAU,CACjC,IAAMC,EAAQL,EAAWG,OAAO,GAChC,GAAKE,EAAMC,KAAX,CAGA,IAAMC,EAAQF,EAAMC,KAAKE,IAAI,SAAAC,UAAMA,EAAHC,GAAa,GAAEC,KAAK,KAMpD,GAJKT,EAAOK,KACVL,EAAOK,GAAS,CAAEK,QAASP,EAAMO,QAASC,KAAMR,EAAMS,aAGpDb,EAA0B,CAC5B,IAAMc,EAAQb,EAAOK,GAAOQ,MACtBC,EAAWD,GAASA,EAAMV,EAAMS,YAEtCZ,EAAOK,GAASU,EAAAA,aACdV,EACAN,EACAC,EACAG,EAAMS,WACNE,EACK,GAAgBE,OAAOF,EAAsBX,EAAMO,SACpDP,EAAMO,QAEb,CAEDZ,EAAWG,OAAOgB,OAtBjB,CAuBF,CAED,OAAOjB,CACT,oBAGE,SAACkB,EAAQC,EAAeC,GAAoB,gBAApBA,IAAAA,EAAkB,CAAE,GAAA,SACrCC,EAAQC,EAAGC,GAAW,IAAA,OAAAC,QAAAC,gCACvB,WAAA,SAAAC,EAUIC,GASN,MAAO,CACLN,OAAQD,EAAgBQ,IAAMP,EAASM,EACvC3B,OAAQ,GACR,CArBF,IAAM6B,EAAaC,OAAOC,OACxB,CAAE,EACF,CACEC,YAAY,EACZC,gBAAgB,GAElBd,GAI+B,MAAN,SAAzBC,EAAgBc,KAAeR,EAC3BS,EAAKA,MAACjB,EAAsBG,EAAQQ,IAAWL,QAAAC,QACzCW,EAAAA,WACJlB,EACAG,EACAQ,IACDQ,KAAAX,EAMR,6DAxB0BY,CACvB,EAuBH,SAAQnC,GACP,GAAIA,aAAiBoC,EAAAA,UACnB,MAAO,CACLlB,OAAQ,GACRrB,OAAQwC,EAAAA,aACN3C,EACEM,GACCoB,EAAQkB,2BACkB,QAAzBlB,EAAQmB,cAEZnB,IAKN,MAAMpB,CACP,GACH,CAAC,MAAAwC,UAAAnB,QAAAoB,OAAAD,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"valibot.umd.js","sources":["../src/valibot.ts"],"sourcesContent":["import { toNestErrors } from '@hookform/resolvers';\nimport type { Resolver } from './types';\nimport {\n BaseSchema,\n BaseSchemaAsync,\n ValiError,\n parse,\n parseAsync,\n} from 'valibot';\nimport { FieldErrors, FieldError, appendErrors } from 'react-hook-form';\nconst parseErrors = (\n valiErrors: ValiError,\n validateAllFieldCriteria: boolean,\n): FieldErrors => {\n const errors: Record<string, FieldError> = {};\n\n for (const error of valiErrors.issues) {\n if (!error.path) {\n continue;\n }\n const _path = error.path.map(({ key }) => key).join('.');\n\n if (!errors[_path]) {\n errors[_path] = { message: error.message, type: error.validation };\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.validation];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n error.validation,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n }\n\n return errors;\n};\n\nexport const valibotResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const schemaOpts = Object.assign(\n {},\n {\n abortEarly: false,\n abortPipeEarly: false,\n },\n schemaOptions,\n );\n\n const parsed =\n resolverOptions.mode === 'sync'\n ? parse(schema as BaseSchema, values, schemaOpts)\n : await parseAsync(\n schema as BaseSchema | BaseSchemaAsync,\n values,\n schemaOpts,\n );\n\n return {\n values: resolverOptions.raw ? values : parsed,\n errors: {} as FieldErrors,\n };\n } catch (error) {\n if (error instanceof ValiError) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrors(\n error,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\n"],"names":["parseErrors","valiErrors","validateAllFieldCriteria","_step","errors","_iterator","_createForOfIteratorHelperLoose","issues","done","error","value","path","_path","map","_ref","key","join","message","type","validation","types","messages","appendErrors","concat","schema","schemaOptions","resolverOptions","values","_","options","Promise","resolve","_temp2","parsed","raw","schemaOpts","Object","assign","abortEarly","abortPipeEarly","mode","parse","parseAsync","then","_catch","ValiError","toNestErrors","shouldUseNativeValidation","criteriaMode","e","reject"],"mappings":"+gBAUA,IAAMA,EAAc,SAClBC,EACAC,GAIA,IAFA,IAEqCC,EAF/BC,EAAqC,CAAE,EAE7CC,2qBAAAC,CAAoBL,EAAWM,UAAMJ,EAAAE,KAAAG,MAAE,CAA5B,IAAAC,EAAKN,EAAAO,MACd,GAAKD,EAAME,KAAX,CAGA,IAAMC,EAAQH,EAAME,KAAKE,IAAI,SAAAC,UAAMA,EAAHC,GAAa,GAAEC,KAAK,KAMpD,GAJKZ,EAAOQ,KACVR,EAAOQ,GAAS,CAAEK,QAASR,EAAMQ,QAASC,KAAMT,EAAMU,aAGpDjB,EAA0B,CAC5B,IAAMkB,EAAQhB,EAAOQ,GAAOQ,MACtBC,EAAWD,GAASA,EAAMX,EAAMU,YAEtCf,EAAOQ,GAASU,EAAYA,aAC1BV,EACAV,EACAE,EACAK,EAAMU,WACNE,EACK,GAAgBE,OAAOF,EAAsBZ,EAAMQ,SACpDR,EAAMQ,QAEb,CApBA,CAqBF,CAED,OAAOb,CACT,oBAGE,SAACoB,EAAQC,EAAeC,GAAoB,gBAApBA,IAAAA,EAAkB,IAAE,SACrCC,EAAQC,EAAGC,GAAW,IAAA,OAAAC,QAAAC,gCACvB,WAAA,SAAAC,EAUIC,GASN,MAAO,CACLN,OAAQD,EAAgBQ,IAAMP,EAASM,EACvC7B,OAAQ,GACR,CArBF,IAAM+B,EAAaC,OAAOC,OACxB,GACA,CACEC,YAAY,EACZC,gBAAgB,GAElBd,GAI+B,MAAN,SAAzBC,EAAgBc,KAAeR,EAC3BS,EAAAA,MAAMjB,EAAsBG,EAAQQ,IAAWL,QAAAC,QACzCW,aACJlB,EACAG,EACAQ,IACDQ,KAAAX,EAMR,6DAxB0BY,CACvB,EAuBH,SAAQnC,GACP,GAAIA,aAAiBoC,YACnB,MAAO,CACLlB,OAAQ,CAAE,EACVvB,OAAQ0C,EAAYA,aAClB9C,EACES,GACCoB,EAAQkB,2BACkB,QAAzBlB,EAAQmB,cAEZnB,IAKN,MAAMpB,CACP,GACH,CAAC,MAAAwC,UAAAnB,QAAAoB,OAAAD,EAAA,CAAA,CAAA"}
@@ -42,7 +42,7 @@ function TestComponent({ onSubmit }: Props) {
42
42
  );
43
43
  }
44
44
 
45
- test("form's native validation with Zod", async () => {
45
+ test("form's native validation with Valibot", async () => {
46
46
  const handleSubmit = vi.fn();
47
47
  render(<TestComponent onSubmit={handleSubmit} />);
48
48
 
@@ -12,7 +12,9 @@ import {
12
12
  array,
13
13
  boolean,
14
14
  required,
15
- union
15
+ union,
16
+ variant,
17
+ literal,
16
18
  } from 'valibot';
17
19
 
18
20
  export const schema = required(
@@ -29,7 +31,13 @@ export const schema = required(
29
31
  minLength(8, 'Must be at least 8 characters in length'),
30
32
  ]),
31
33
  repeatPassword: string('Repeat Password is required'),
32
- accessToken: union([string('Access token should be a string'), number('Access token should be a number')], "access token is required"),
34
+ accessToken: union(
35
+ [
36
+ string('Access token should be a string'),
37
+ number('Access token should be a number'),
38
+ ],
39
+ 'access token is required',
40
+ ),
33
41
  birthYear: number('Please enter your birth year', [
34
42
  minValue(1900),
35
43
  maxValue(2013),
@@ -46,6 +54,14 @@ export const schema = required(
46
54
  }),
47
55
  );
48
56
 
57
+ export const schemaError = variant('type', [
58
+ object({ type: literal('a') }),
59
+ object({ type: literal('b') }),
60
+ ]);
61
+
62
+ export const validSchemaErrorData = { type: 'a' };
63
+ export const invalidSchemaErrorData = { type: 'c' };
64
+
49
65
  export const validData = {
50
66
  username: 'Doe',
51
67
  password: 'Password123_',
@@ -1,6 +1,14 @@
1
1
  /* eslint-disable no-console, @typescript-eslint/ban-ts-comment */
2
2
  import { valibotResolver } from '..';
3
- import { schema, validData, fields, invalidData } from './__fixtures__/data';
3
+ import {
4
+ schema,
5
+ validData,
6
+ fields,
7
+ invalidData,
8
+ schemaError,
9
+ validSchemaErrorData,
10
+ invalidSchemaErrorData,
11
+ } from './__fixtures__/data';
4
12
  import * as valibot from 'valibot';
5
13
 
6
14
  const shouldUseNativeValidation = false;
@@ -98,4 +106,34 @@ describe('valibotResolver', () => {
98
106
 
99
107
  expect(result).toMatchSnapshot();
100
108
  });
109
+
110
+ it('should be able to validate variants', async () => {
111
+ const result = await valibotResolver(schemaError, undefined, {
112
+ mode: 'sync',
113
+ })(validSchemaErrorData, undefined, {
114
+ fields,
115
+ shouldUseNativeValidation,
116
+ });
117
+
118
+ expect(result).toEqual({
119
+ errors: {},
120
+ values: {
121
+ type: 'a',
122
+ },
123
+ });
124
+ });
125
+
126
+ it('should exit issue resolution if no path is set', async () => {
127
+ const result = await valibotResolver(schemaError, undefined, {
128
+ mode: 'sync',
129
+ })(invalidSchemaErrorData, undefined, {
130
+ fields,
131
+ shouldUseNativeValidation,
132
+ });
133
+
134
+ expect(result).toEqual({
135
+ errors: {},
136
+ values: {},
137
+ });
138
+ });
101
139
  });
@@ -13,8 +13,8 @@ const parseErrors = (
13
13
  validateAllFieldCriteria: boolean,
14
14
  ): FieldErrors => {
15
15
  const errors: Record<string, FieldError> = {};
16
- for (; valiErrors.issues.length; ) {
17
- const error = valiErrors.issues[0];
16
+
17
+ for (const error of valiErrors.issues) {
18
18
  if (!error.path) {
19
19
  continue;
20
20
  }
@@ -38,8 +38,6 @@ const parseErrors = (
38
38
  : error.message,
39
39
  ) as FieldError;
40
40
  }
41
-
42
- valiErrors.issues.shift();
43
41
  }
44
42
 
45
43
  return errors;