{"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"}