{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n  Obj,\n  AssignableErrors,\n  ValidationFunction,\n  ExtenderHandler,\n  CurrentForm,\n  Extender,\n} from '@felte/common';\nimport { _update } from '@felte/common';\nimport type { ZodError, AnyZodObject } from 'zod';\n\ntype ZodSchema = {\n  parseAsync: AnyZodObject['parseAsync'];\n};\n\nexport type ValidatorConfig = {\n  schema: ZodSchema;\n  level?: 'error' | 'warning';\n};\n\nexport function validateSchema<Data extends Obj>(\n  schema: ZodSchema\n): ValidationFunction<Data> {\n  function shapeErrors(errors: ZodError): AssignableErrors<Data> {\n    return errors.issues.reduce((err, value) => {\n      /* istanbul ignore next */\n      if (!value.path) return err;\n      return _update(\n        err,\n        value.path.join('.'),\n        (currentValue: undefined | string[]) => {\n          if (!currentValue || !Array.isArray(currentValue))\n            return [value.message];\n          return [...currentValue, value.message];\n        }\n      );\n    }, {} as AssignableErrors<Data>);\n  }\n  return async function validate(\n    values: Data\n  ): Promise<AssignableErrors<Data> | undefined> {\n    try {\n      await schema.parseAsync(values);\n    } catch (error) {\n      return shapeErrors(error as ZodError<any>);\n    }\n  };\n}\n\nexport function validator<Data extends Obj = Obj>({\n  schema,\n  level = 'error',\n}: ValidatorConfig): Extender<Data> {\n  return function extender(\n    currentForm: CurrentForm<Data>\n  ): ExtenderHandler<Data> {\n    if (currentForm.stage !== 'SETUP') return {};\n    const validateFn = validateSchema<Data>(schema);\n    currentForm.addValidator(validateFn, { level });\n    return {};\n  };\n}\n"],"names":[],"mappings":";;AAoBM,SAAU,cAAc,CAC5B,MAAiB,EAAA;IAEjB,SAAS,WAAW,CAAC,MAAgB,EAAA;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;;YAEzC,IAAI,CAAC,KAAK,CAAC,IAAI;AAAE,gBAAA,OAAO,GAAG;AAC3B,YAAA,OAAO,OAAO,CACZ,GAAG,EACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EACpB,CAAC,YAAkC,KAAI;gBACrC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAC/C,oBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxB,OAAO,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;AACzC,aAAC,CACF;SACF,EAAE,EAA4B,CAAC;;AAElC,IAAA,OAAO,eAAe,QAAQ,CAC5B,MAAY,EAAA;AAEZ,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;QAC/B,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,WAAW,CAAC,KAAsB,CAAC;;AAE9C,KAAC;AACH;AAEM,SAAU,SAAS,CAAyB,EAChD,MAAM,EACN,KAAK,GAAG,OAAO,GACC,EAAA;IAChB,OAAO,SAAS,QAAQ,CACtB,WAA8B,EAAA;AAE9B,QAAA,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO;AAAE,YAAA,OAAO,EAAE;AAC5C,QAAA,MAAM,UAAU,GAAG,cAAc,CAAO,MAAM,CAAC;QAC/C,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC;AAC/C,QAAA,OAAO,EAAE;AACX,KAAC;AACH;;;;"}