HardPro challengeJavaScriptTypeScript

Form Validation Engine

ReactFormsValidation

Build a validation engine. Schema: { field: [{ rule: 'required'|'min'|'email', value? }] }.
Return errors object: { field: [errorMessages] } (or empty).

Rules:

  • required: string must be non-empty.
  • min: string length >= value.
  • email: must contain '@'.

solve(schema, values) returns the errors object.

Sample tests

Test #1Multiple fields
Input: [{"a":[{"rule":"required"}],"b":[{"rule":"min","value":3}]},{"a":"","b":"xy"}]
Output: {"a":["required"],"b":["min:3"]}
Test #2Multiple rules, one fails
Input: [{"pwd":[{"rule":"required"},{"rule":"min","value":8}]},{"pwd":"abc"}]
Output: {"pwd":["min:8"]}
Test #3Required fails
Input: [{"name":[{"rule":"required"}]},{"name":""}]
Output: {"name":["required"]}
Test #4Valid
Input: [{"name":[{"rule":"required"}]},{"name":"Alice"}]
Output: {}
Test #5Email fails
Input: [{"email":[{"rule":"email"}]},{"email":"bad"}]
Output: {"email":["email"]}