@hookform/resolvers
Version:
React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types, TypeBox, arktype, Typanion and Effect-TS
1 lines • 3.68 kB
Source Map (JSON)
{"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"}