UNPKG

@cowwoc/requirements

Version:

A fluent API for enforcing design contracts with automatic message generation.

40 lines 1.34 kB
import { requireThatTypeCategory, TypeCategory } from "./internal/internal.mjs"; /** * Thrown if multiple validations have failed. */ class MultipleFailuresError extends Error { failures; /** * Creates a new error. * * @param failures - the list of validation failures * @throws TypeError if `failures` is `undefined` or `null` * @throws RangeError if `failures` contains less than two elements */ constructor(failures) { super(MultipleFailuresError.createMessage(failures)); this.failures = failures; } static createMessage(failures) { requireThatTypeCategory(failures, "failures", TypeCategory.ARRAY); if (failures.length === 0) throw new RangeError("failures must contain at least two elements"); let result = `There are ${failures.length} nested errors.\n`; let i = 1; for (const failure of failures) { result += `${i}. ${failure.getError().name}: ${failure.getMessage()}\n`; ++i; } return result.toString(); } /** * Returns the list of validation failures. * * @returns the list of validation failures */ getFailures() { return this.failures; } } export { MultipleFailuresError }; //# sourceMappingURL=MultipleFailuresError.mjs.map