{"version":3,"file":"resolvers.mjs","sources":["../src/validateFieldsNatively.ts","../src/toNestErrors.ts"],"sourcesContent":["import {\n  get,\n  FieldError,\n  ResolverOptions,\n  Ref,\n  FieldErrors,\n  FieldValues,\n} from 'react-hook-form';\n\nconst setCustomValidity = (\n  ref: Ref,\n  fieldPath: string,\n  errors: FieldErrors,\n) => {\n  if (ref && 'reportValidity' in ref) {\n    const error = get(errors, fieldPath) as FieldError | undefined;\n    ref.setCustomValidity((error && error.message) || '');\n\n    ref.reportValidity();\n  }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues extends FieldValues>(\n  errors: FieldErrors,\n  options: ResolverOptions<TFieldValues>,\n): void => {\n  for (const fieldPath in options.fields) {\n    const field = options.fields[fieldPath];\n    if (field && field.ref && 'reportValidity' in field.ref) {\n      setCustomValidity(field.ref, fieldPath, errors);\n    } else if (field.refs) {\n      field.refs.forEach((ref: HTMLInputElement) =>\n        setCustomValidity(ref, fieldPath, errors),\n      );\n    }\n  }\n};\n","import {\n  get,\n  FieldErrors,\n  Field,\n  ResolverOptions,\n  FieldValues,\n  InternalFieldName,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const isDateObject = (value: unknown): value is Date => value instanceof Date;\n\nexport const isNullOrUndefined = (value: unknown): value is null | undefined => value == null;\n\nexport const isObjectType = (value: unknown): value is object =>\n  typeof value === 'object';\n\nexport const isObject = <T extends object>(value: unknown): value is T =>\n  !isNullOrUndefined(value) &&\n  !Array.isArray(value) &&\n  isObjectType(value) &&\n  !isDateObject(value);\n\nexport const isKey = (value: string) => /^\\w*$/.test(value);\n\nconst compact = <TValue>(value: TValue[]) =>\n  Array.isArray(value) ? value.filter(Boolean) : [];\n\nconst stringToPath = (input: string): string[] =>\n  compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nconst set = (object: FieldValues, path: string, value?: unknown) => {\n  let index = -1;\n  const tempPath = isKey(path) ? [path] : stringToPath(path);\n  const length = tempPath.length;\n  const lastIndex = length - 1;\n\n  while (++index < length) {\n    const key = tempPath[index];\n    let newValue = value;\n\n    if (index !== lastIndex) {\n      const objValue = object[key];\n      newValue =\n        isObject(objValue) || Array.isArray(objValue)\n          ? objValue\n          : !isNaN(+tempPath[index + 1])\n            ? []\n            : {};\n    }\n    object[key] = newValue;\n    object = object[key];\n  }\n  return object;\n};\n\n\nexport const toNestErrors = <TFieldValues extends FieldValues>(\n  errors: FieldErrors,\n  options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n  options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n  const fieldErrors = {} as FieldErrors<TFieldValues>;\n  for (const path in errors) {\n    const field = get(options.fields, path) as Field['_f'] | undefined;\n    const error = Object.assign(errors[path] || {}, {\n      ref: field && field.ref,\n    });\n\n    if (isNameInFieldArray(options.names || Object.keys(errors), path)) {\n      const fieldArrayErrors = Object.assign({}, get(fieldErrors, path));\n\n      set(fieldArrayErrors, 'root', error);\n      set(fieldErrors, path, fieldArrayErrors);\n    } else {\n      set(fieldErrors, path, error);\n    }\n  }\n\n  return fieldErrors;\n};\n\nconst isNameInFieldArray = (\n  names: InternalFieldName[],\n  name: InternalFieldName,\n) => names.some((n) => n.startsWith(name + '.'));\n"],"names":["setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","fields","field","refs","forEach","isDateObject","value","Date","isNullOrUndefined","isObjectType","isObject","Array","isArray","isKey","test","set","object","path","index","tempPath","input","compact","replace","split","filter","Boolean","stringToPath","length","lastIndex","key","newValue","objValue","isNaN","toNestErrors","shouldUseNativeValidation","fieldErrors","Object","assign","isNameInFieldArray","names","keys","fieldArrayErrors","name","some","n","startsWith"],"mappings":"sCASA,MAAMA,EAAoBA,CACxBC,EACAC,EACAC,KAEA,GAAIF,GAAO,mBAAoBA,EAAK,CAClC,MAAMG,EAAQC,EAAIF,EAAQD,GAC1BD,EAAID,kBAAmBI,GAASA,EAAME,SAAY,IAElDL,EAAIM,gBACL,GAIUC,EAAyBA,CACpCL,EACAM,KAEA,IAAK,MAAMP,KAAaO,EAAQC,OAAQ,CACtC,MAAMC,EAAQF,EAAQC,OAAOR,GACzBS,GAASA,EAAMV,KAAO,mBAAoBU,EAAMV,IAClDD,EAAkBW,EAAMV,IAAKC,EAAWC,GAC/BQ,EAAMC,MACfD,EAAMC,KAAKC,QAASZ,GAClBD,EAAkBC,EAAKC,EAAWC,GAGvC,GC1BUW,EAAgBC,GAAkCA,aAAiBC,KAEnEC,EAAqBF,GAAuD,MAATA,EAEnEG,EAAgBH,GACV,iBAAVA,EAEII,EAA8BJ,IACxCE,EAAkBF,KAClBK,MAAMC,QAAQN,IACfG,EAAaH,KACZD,EAAaC,GAEHO,EAASP,GAAkB,QAAQQ,KAAKR,GAQ/CS,EAAMA,CAACC,EAAqBC,EAAcX,KAC9C,IAAIY,GAAS,EACb,MAAMC,EAAWN,EAAMI,GAAQ,CAACA,GALZG,KACpBC,OAJuBf,EAIfc,EAAME,QAAQ,YAAa,IAAIC,MAAM,SAH7CZ,MAAMC,QAAQN,GAASA,EAAMkB,OAAOC,SAAW,GADxBnB,KAI+B,EAIdoB,CAAaT,GAC/CU,EAASR,EAASQ,OAClBC,EAAYD,EAAS,EAE3B,OAAST,EAAQS,GAAQ,CACvB,MAAME,EAAMV,EAASD,GACrB,IAAIY,EAAWxB,EAEf,GAAIY,IAAUU,EAAW,CACvB,MAAMG,EAAWf,EAAOa,GACxBC,EACEpB,EAASqB,IAAapB,MAAMC,QAAQmB,GAChCA,EACCC,OAAOb,EAASD,EAAQ,IAEvB,CAAA,EADA,EAET,CACDF,EAAOa,GAAOC,EACdd,EAASA,EAAOa,EACjB,CACD,OAAOb,GAIIiB,EAAeA,CAC1BvC,EACAM,KAEAA,EAAQkC,2BAA6BnC,EAAuBL,EAAQM,GAEpE,MAAMmC,EAAc,CAA+B,EACnD,IAAK,MAAMlB,KAAQvB,EAAQ,CACzB,MAAMQ,EAAQN,EAAII,EAAQC,OAAQgB,GAC5BtB,EAAQyC,OAAOC,OAAO3C,EAAOuB,IAAS,CAAE,EAAE,CAC9CzB,IAAKU,GAASA,EAAMV,MAGtB,GAAI8C,EAAmBtC,EAAQuC,OAASH,OAAOI,KAAK9C,GAASuB,GAAO,CAClE,MAAMwB,EAAmBL,OAAOC,OAAO,GAAIzC,EAAIuC,EAAalB,IAE5DF,EAAI0B,EAAkB,OAAQ9C,GAC9BoB,EAAIoB,EAAalB,EAAMwB,EACxB,MACC1B,EAAIoB,EAAalB,EAAMtB,EAE1B,CAED,OAAOwC,GAGHG,EAAqBA,CACzBC,EACAG,IACGH,EAAMI,KAAMC,GAAMA,EAAEC,WAAWH,EAAO"}