SB-6.1-PRE

This commit is contained in:
ItzEmerald committed 2021-02-02 13:50:53 +00:00
1 parent 690169a409
commit 358a25f522
3760 files changed
+300059 -36

No files matched your search

+37
View File
@@ -0,0 +1,37 @@
/**
* Validation error description.
*/
export class 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
*/
toString(shouldDecorate = false, hasParent = false, parentPath = ``) {
const boldStart = shouldDecorate ? `\x1b[1m` : ``;
const boldEnd = shouldDecorate ? `\x1b[22m` : ``;
const propConstraintFailed = (propertyName) => ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${Object.keys(this.constraints).join(`, `)}${boldEnd} \n`;
if (!hasParent) {
return `An instance of ${boldStart}${this.target ? this.target.constructor.name : "an object"}${boldEnd} has failed the validation:\n` +
(this.constraints ? propConstraintFailed(this.property) : ``) +
this.children
.map(childError => childError.toString(shouldDecorate, true, this.property))
.join(``);
}
else {
// we format numbers as array indexes for better readability.
const formattedProperty = Number.isInteger(+this.property) ? `[${this.property}]` : `${parentPath ? `.` : ``}${this.property}`;
if (this.constraints) {
return propConstraintFailed(formattedProperty);
}
else {
return this.children
.map(childError => childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`))
.join(``);
}
}
}
}
//# sourceMappingURL=ValidationError.js.map