import { FieldCheck } from "./fieldChecks"; export class FieldsContainer { fields = new Map(); /** * Add field to container. * @param {string} name - The field name. * @param {string} value - The field value. * @param {Array} checks - Array of necessary FieldCheck objects. */ addField(name: string, value: string, checks: FieldCheck[]) { this.fields.set(name, new Field(value, checks)); } } export class Field { value: string; checks: FieldCheck[]; constructor(value: string, checks: FieldCheck[]) { this.value = value; this.checks = checks; } tryGetFirstError() { let result = ""; this.checks.every((fieldCheck) => { result = fieldCheck.check(this.value); return result === ""; //break or continue every() }); return result; } tryGetAllErrors() { const result = this.checks.flatMap((fieldCheck) => { const err = fieldCheck.check(this.value); return err === "" ? [] : [err]; }); return result.join(", "); } }