class-validator
Version:
Decorator-based property validation for classes.
50 lines • 2.47 kB
JavaScript
/**
* Validation error description.
*/
var ValidationError = /** @class */ (function () {
function ValidationError() {
}
/**
*
* @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability
* @param hasParent true when the error is a child of an another one
* @param parentPath path as string to the parent of this property
*/
ValidationError.prototype.toString = function (shouldDecorate, hasParent, parentPath) {
var _this = this;
if (shouldDecorate === void 0) { shouldDecorate = false; }
if (hasParent === void 0) { hasParent = false; }
if (parentPath === void 0) { parentPath = ""; }
var boldStart = shouldDecorate ? "\u001B[1m" : "";
var boldEnd = shouldDecorate ? "\u001B[22m" : "";
var propConstraintFailed = function (propertyName) {
return " - property ".concat(boldStart).concat(parentPath).concat(propertyName).concat(boldEnd, " has failed the following constraints: ").concat(boldStart).concat(Object.keys(_this.constraints).join(", ")).concat(boldEnd, " \n");
};
if (!hasParent) {
return ("An instance of ".concat(boldStart).concat(this.target ? this.target.constructor.name : 'an object').concat(boldEnd, " has failed the validation:\n") +
(this.constraints ? propConstraintFailed(this.property) : "") +
(this.children
? this.children.map(function (childError) { return childError.toString(shouldDecorate, true, _this.property); }).join("")
: ""));
}
else {
// we format numbers as array indexes for better readability.
var formattedProperty_1 = Number.isInteger(+this.property)
? "[".concat(this.property, "]")
: "".concat(parentPath ? "." : "").concat(this.property);
if (this.constraints) {
return propConstraintFailed(formattedProperty_1);
}
else {
return this.children
? this.children
.map(function (childError) { return childError.toString(shouldDecorate, true, "".concat(parentPath).concat(formattedProperty_1)); })
.join("")
: "";
}
}
};
return ValidationError;
}());
export { ValidationError };
//# sourceMappingURL=ValidationError.js.map