@cowwoc/requirements
Version:
A fluent API for enforcing design contracts with automatic message generation.
40 lines • 1.34 kB
JavaScript
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