UNPKG

@felte/validator-vest

Version:
1 lines 3.21 kB
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n Obj,\n ValidationFunction,\n Extender,\n ExtenderHandler,\n AssignableErrors,\n} from '@felte/common';\nimport { _set, CurrentForm } from '@felte/common';\nimport type { create } from 'vest';\n\nexport type ValidatorConfig = {\n suite: ReturnType<typeof create>;\n};\n\nfunction shapeErrors<Data extends Obj>(\n errors: Record<string, string[]>\n): AssignableErrors<Data> {\n let err = {} as AssignableErrors<Data>;\n for (const [fieldName, messages] of Object.entries(errors)) {\n err = _set(err, fieldName, messages);\n }\n return err;\n}\n\nexport function validateSuite<Data extends Obj>(\n suite: ReturnType<typeof create>\n): ValidationFunction<Data> {\n return async function validate(\n values: Data\n ): Promise<AssignableErrors<Data> | undefined> {\n return new Promise((resolve) => {\n suite(values).done((results) => {\n if (results.hasErrors()) {\n resolve(shapeErrors<Data>(results.getErrors()));\n } else {\n resolve(undefined);\n }\n });\n });\n };\n}\n\nexport function warnSuite<Data extends Obj>(\n suite: ReturnType<typeof create>\n): ValidationFunction<Data> {\n return async function validate(\n values: Data\n ): Promise<AssignableErrors<Data> | undefined> {\n const results = suite(values);\n if (results.hasWarnings()) {\n return shapeErrors<Data>(results.getWarnings());\n }\n };\n}\n\nexport function validator<Data extends Obj = Obj>({\n suite,\n}: ValidatorConfig): Extender<Data> {\n return function extender(\n currentForm: CurrentForm<Data>\n ): ExtenderHandler<Data> {\n if (currentForm.stage !== 'SETUP') return {};\n const validateFn = validateSuite<Data>(suite);\n const warnFn = warnSuite<Data>(suite);\n currentForm.addValidator(validateFn);\n currentForm.addValidator(warnFn, { level: 'warning' });\n return {};\n };\n}\n"],"names":["_set"],"mappings":";;;;AAcA,SAAS,WAAW,CAClB,MAAgC,EAAA;IAEhC,IAAI,GAAG,GAAG,EAA4B;AACtC,IAAA,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC1D,GAAG,GAAGA,WAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC;;AAEtC,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,aAAa,CAC3B,KAAgC,EAAA;AAEhC,IAAA,OAAO,eAAe,QAAQ,CAC5B,MAAY,EAAA;AAEZ,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAC7B,gBAAA,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;oBACvB,OAAO,CAAC,WAAW,CAAO,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;;qBAC1C;oBACL,OAAO,CAAC,SAAS,CAAC;;AAEtB,aAAC,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC;AACH;AAEM,SAAU,SAAS,CACvB,KAAgC,EAAA;AAEhC,IAAA,OAAO,eAAe,QAAQ,CAC5B,MAAY,EAAA;AAEZ,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE;AACzB,YAAA,OAAO,WAAW,CAAO,OAAO,CAAC,WAAW,EAAE,CAAC;;AAEnD,KAAC;AACH;AAEgB,SAAA,SAAS,CAAyB,EAChD,KAAK,GACW,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,aAAa,CAAO,KAAK,CAAC;AAC7C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAO,KAAK,CAAC;AACrC,QAAA,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC;QACpC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACtD,QAAA,OAAO,EAAE;AACX,KAAC;AACH;;;;;;"}