diff options
Diffstat (limited to 'src/node_modules/class-validator/esm2015/validation/ValidationError.js')
-rw-r--r-- | src/node_modules/class-validator/esm2015/validation/ValidationError.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/node_modules/class-validator/esm2015/validation/ValidationError.js b/src/node_modules/class-validator/esm2015/validation/ValidationError.js new file mode 100644 index 0000000..9306d75 --- /dev/null +++ b/src/node_modules/class-validator/esm2015/validation/ValidationError.js @@ -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 |