{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import type { ObjectSchema, ValidationError, ValidateOptions } from 'yup';\nimport type {\n  Obj,\n  AssignableErrors,\n  ValidationFunction,\n  Extender,\n  ExtenderHandler,\n} from '@felte/common';\nimport { _set, CurrentForm } from '@felte/common';\n\nexport type ValidatorConfig = {\n  schema: ObjectSchema<any>;\n  level?: 'error' | 'warning';\n  castValues?: boolean;\n};\n\nexport function validateSchema<Data extends Obj>(\n  schema: ObjectSchema<any>,\n  options?: ValidateOptions\n): ValidationFunction<Data> {\n  function shapeErrors(errors: ValidationError): AssignableErrors<Data> {\n    return errors.inner.reduce((err, value) => {\n      /* istanbul ignore next */\n      if (!value.path) return err;\n      return _set(err, value.path, value.message);\n    }, {} as AssignableErrors<Data>);\n  }\n  return async function validate(\n    values: Data\n  ): Promise<AssignableErrors<Data> | undefined> {\n    return schema\n      .validate(values, { strict: true, abortEarly: false, ...options })\n      .then(() => undefined)\n      .catch(shapeErrors);\n  };\n}\n\nexport function validator<Data extends Obj = Obj>({\n  schema,\n  level = 'error',\n  castValues,\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    if (!castValues) return {};\n    const transformFn = (values: unknown) => {\n      return schema.cast(values);\n    };\n    currentForm.addTransformer(transformFn);\n    return {};\n  };\n}\n"],"names":["_set"],"mappings":";;;;AAgBgB,SAAA,cAAc,CAC5B,MAAyB,EACzB,OAAyB,EAAA;IAEzB,SAAS,WAAW,CAAC,MAAuB,EAAA;QAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;;YAExC,IAAI,CAAC,KAAK,CAAC,IAAI;AAAE,gBAAA,OAAO,GAAG;AAC3B,YAAA,OAAOA,WAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;SAC5C,EAAE,EAA4B,CAAC;;AAElC,IAAA,OAAO,eAAe,QAAQ,CAC5B,MAAY,EAAA;AAEZ,QAAA,OAAO;AACJ,aAAA,QAAQ,CAAC,MAAM,EAAI,MAAA,CAAA,MAAA,CAAA,EAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAK,EAAA,OAAO,CAAG;AACjE,aAAA,IAAI,CAAC,MAAM,SAAS;aACpB,KAAK,CAAC,WAAW,CAAC;AACvB,KAAC;AACH;AAEM,SAAU,SAAS,CAAyB,EAChD,MAAM,EACN,KAAK,GAAG,OAAO,EACf,UAAU,GACM,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,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,EAAE;AAC1B,QAAA,MAAM,WAAW,GAAG,CAAC,MAAe,KAAI;AACtC,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,SAAC;AACD,QAAA,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC;AACvC,QAAA,OAAO,EAAE;AACX,KAAC;AACH;;;;;"}