import { FlexTable } from ".."; const sumValidationResult = (result1: FlexTable.ValidationResult, result2: FlexTable.ValidationResult) => { const success = result1.success && result2.success; return ({ success, results: result2.success ? result1.results : [...result1.results, ...result2.results], }); }; const validate = (test: FlexTable.ValidationTest, params: P): FlexTable.ValidationResult => { return ({ success: test.passCondition(params), results: [test.result], }); }; const getSuccessResult = () => { return ({ success: true, results: new Array() as M[] }); }; const validateAll = (tests: FlexTable.ValidationTest[], params: P) => { const testResults = tests.reduce((prev, next) => { return sumValidationResult(prev as FlexTable.ValidationResult, validate(next, params)) }, getSuccessResult()); return testResults; }; export { validate, validateAll };