{"version":3,"file":"validate-field-value.cjs","names":["validateValues","getRuleForPath","getPath"],"sources":["../../src/validate/validate-field-value.ts"],"sourcesContent":["import { getPath } from '../paths';\nimport { FormFieldValidationResult, FormValidateInput } from '../types';\nimport { getRuleForPath } from './get-rule-for-path';\nimport { validateValues } from './validate-values';\n\nconst defaultResolveError = (err: unknown): React.ReactNode =>\n  err instanceof Error ? err.message : String(err);\n\nfunction fieldResultFromErrors(\n  path: string,\n  errors: Record<string, React.ReactNode>\n): FormFieldValidationResult {\n  const pathInError = Object.keys(errors).find((errorKey) =>\n    path.split('.').every((pathPart, i) => pathPart === errorKey.split('.')[i])\n  );\n  return { hasError: !!pathInError, error: pathInError ? errors[pathInError] : null };\n}\n\nexport function validateFieldValue<T>(\n  path: unknown,\n  rules: FormValidateInput<T> | undefined,\n  values: T,\n  resolveValidationError: (error: unknown) => React.ReactNode = defaultResolveError,\n  signal: AbortSignal = new AbortController().signal\n): FormFieldValidationResult | Promise<FormFieldValidationResult> {\n  if (typeof path !== 'string') {\n    return { hasError: false, error: null };\n  }\n\n  if (typeof rules === 'function') {\n    const results = validateValues(rules, values, resolveValidationError, signal);\n    if (results instanceof Promise) {\n      return results.then((r) => fieldResultFromErrors(path, r.errors));\n    }\n    return fieldResultFromErrors(path, results.errors);\n  }\n\n  const rule = getRuleForPath(path, rules);\n\n  if (rule) {\n    const value = getPath(path, values);\n    try {\n      const result = rule(value, values, path, signal);\n      if (result instanceof Promise) {\n        return result.then(\n          (error) => {\n            if (error) {\n              return { hasError: true, error };\n            }\n            return { hasError: false, error: null };\n          },\n          (err) => ({ hasError: true, error: resolveValidationError(err) })\n        );\n      }\n      if (result) {\n        return { hasError: true, error: result };\n      }\n      return { hasError: false, error: null };\n    } catch (err) {\n      const error = resolveValidationError(err);\n      return { hasError: true, error };\n    }\n  }\n\n  const results = validateValues(rules, values, resolveValidationError, signal);\n  if (results instanceof Promise) {\n    return results.then((r) => fieldResultFromErrors(path, r.errors));\n  }\n  return fieldResultFromErrors(path, results.errors);\n}\n"],"mappings":";;;;;AAKA,MAAM,uBAAuB,QAC3B,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAEjD,SAAS,sBACP,MACA,QAC2B;CAC3B,MAAM,cAAc,OAAO,KAAK,MAAM,EAAE,MAAM,aAC5C,KAAK,MAAM,GAAG,EAAE,OAAO,UAAU,MAAM,aAAa,SAAS,MAAM,GAAG,EAAE,EAAE,CAC5E;CACA,OAAO;EAAE,UAAU,CAAC,CAAC;EAAa,OAAO,cAAc,OAAO,eAAe;CAAK;AACpF;AAEA,SAAgB,mBACd,MACA,OACA,QACA,yBAA8D,qBAC9D,SAAsB,IAAI,gBAAgB,EAAE,QACoB;CAChE,IAAI,OAAO,SAAS,UAClB,OAAO;EAAE,UAAU;EAAO,OAAO;CAAK;CAGxC,IAAI,OAAO,UAAU,YAAY;EAC/B,MAAM,UAAUA,wBAAAA,eAAe,OAAO,QAAQ,wBAAwB,MAAM;EAC5E,IAAI,mBAAmB,SACrB,OAAO,QAAQ,MAAM,MAAM,sBAAsB,MAAM,EAAE,MAAM,CAAC;EAElE,OAAO,sBAAsB,MAAM,QAAQ,MAAM;CACnD;CAEA,MAAM,OAAOC,0BAAAA,eAAe,MAAM,KAAK;CAEvC,IAAI,MAAM;EACR,MAAM,QAAQC,iBAAAA,QAAQ,MAAM,MAAM;EAClC,IAAI;GACF,MAAM,SAAS,KAAK,OAAO,QAAQ,MAAM,MAAM;GAC/C,IAAI,kBAAkB,SACpB,OAAO,OAAO,MACX,UAAU;IACT,IAAI,OACF,OAAO;KAAE,UAAU;KAAM;IAAM;IAEjC,OAAO;KAAE,UAAU;KAAO,OAAO;IAAK;GACxC,IACC,SAAS;IAAE,UAAU;IAAM,OAAO,uBAAuB,GAAG;GAAE,EACjE;GAEF,IAAI,QACF,OAAO;IAAE,UAAU;IAAM,OAAO;GAAO;GAEzC,OAAO;IAAE,UAAU;IAAO,OAAO;GAAK;EACxC,SAAS,KAAK;GAEZ,OAAO;IAAE,UAAU;IAAM,OADX,uBAAuB,GACR;GAAE;EACjC;CACF;CAEA,MAAM,UAAUF,wBAAAA,eAAe,OAAO,QAAQ,wBAAwB,MAAM;CAC5E,IAAI,mBAAmB,SACrB,OAAO,QAAQ,MAAM,MAAM,sBAAsB,MAAM,EAAE,MAAM,CAAC;CAElE,OAAO,sBAAsB,MAAM,QAAQ,MAAM;AACnD"}