@knorm/knorm
Version:
A JavaScript ORM written using ES6 classes
72 lines (71 loc) • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("util");
const KnormError_1 = require("./KnormError");
class ValidationError extends KnormError_1.KnormError {
constructor({ field, value, validator = {} }) {
super({ field, value, validator });
this.field = field;
this.value = value;
this.validator = validator;
let errorType;
if (validator.required) {
errorType = 'RequiredError';
}
else if (validator.type) {
errorType = 'TypeError';
}
else if (validator.minLength) {
errorType = 'MinLengthError';
}
else if (validator.maxLength !== undefined) {
errorType = 'MaxLengthError';
}
else if (validator.oneOf) {
errorType = 'OneOfError';
}
else if (validator.equals !== undefined) {
errorType = 'EqualsError';
}
else if (validator.regex) {
errorType = 'RegexError';
}
else if (validator.validate) {
errorType = 'ValidatorError';
}
this.type = errorType;
}
formatMessage({ field, validator = {} }) {
let message;
let forFieldName = `for field \`${field.model.name}.${field.path}\``;
if (field.valueIndex !== undefined) {
forFieldName += ` at index ${field.valueIndex}`;
}
if (validator.required) {
message = `Missing required value ${forFieldName}`;
}
else if (validator.type) {
message = `Expected value of type \`${validator.type}\` ${forFieldName}`;
}
else if (validator.minLength) {
message = `Expected value of min-length \`${validator.minLength}\` ${forFieldName}`;
}
else if (validator.maxLength !== undefined) {
message = `Expected value of max-length \`${validator.maxLength}\` ${forFieldName}`;
}
else if (validator.oneOf) {
message = `Expected value ${forFieldName} to be one of ${util_1.inspect(validator.oneOf)}`;
}
else if (validator.equals !== undefined) {
message = `Expected value ${forFieldName} to equal ${util_1.inspect(validator.equals)}`;
}
else if (validator.regex) {
message = `Expected value ${forFieldName} ${validator.notMatching ? 'not ' : ''}to match ${util_1.inspect(validator.regex)}`;
}
else if (validator.validate) {
message = `Validation failed ${forFieldName}`;
}
return message;
}
}
exports.ValidationError = ValidationError;