swagger-object-validator
Version:
Validate your objects against a swagger spec and receive in-depth error traces
103 lines (102 loc) • 4.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidationResult = exports.getTraceString = exports.ConstraintName = exports.ValidationErrorType = void 0;
var ValidationErrorType;
(function (ValidationErrorType) {
ValidationErrorType["MISSING_REQUIRED_PROPERTY"] = "MISSING_REQUIRED_PROPERTY";
ValidationErrorType["ADDITIONAL_PROPERTY"] = "ADDITIONAL_PROPERTY";
ValidationErrorType["TYPE_MISMATCH"] = "TYPE_MISMATCH";
ValidationErrorType["ENUM_MISMATCH"] = "ENUM_MISMATCH";
ValidationErrorType["DATE_FORMAT"] = "DATE_FORMAT";
ValidationErrorType["CONSTRAINTS_VIOLATION"] = "CONSTRAINTS_VIOLATION";
ValidationErrorType["CUSTOM"] = "CUSTOM";
})(ValidationErrorType = exports.ValidationErrorType || (exports.ValidationErrorType = {}));
var ConstraintName;
(function (ConstraintName) {
ConstraintName["minItems"] = "minItems";
ConstraintName["maxItems"] = "maxItems";
ConstraintName["uniqueItems"] = "uniqueItems";
ConstraintName["maximum"] = "maximum";
ConstraintName["minimum"] = "minimum";
ConstraintName["multipleOf"] = "multipleOf";
ConstraintName["minLength"] = "minLength";
ConstraintName["maxLength"] = "maxLength";
ConstraintName["pattern"] = "pattern";
})(ConstraintName = exports.ConstraintName || (exports.ConstraintName = {}));
function getTraceString(trace) {
return trace.map(function (traceStep) {
var traceString = traceStep.stepName;
if (traceStep.arrayPos !== undefined) {
traceString += "[".concat(traceStep.arrayPos, "]");
}
if (traceStep.concreteModel !== undefined) {
traceString += "<".concat(traceStep.concreteModel, ">");
}
return traceString;
}).join('/');
}
exports.getTraceString = getTraceString;
var ValidationResult = (function () {
function ValidationResult(errors) {
this.errors = errors;
}
;
ValidationResult.prototype.humanReadable = function () {
if (this.errors.length === 0) {
return 'Valid';
}
var ret = [];
this.errors.forEach(function (error) {
switch (error.errorType) {
case ValidationErrorType.MISSING_REQUIRED_PROPERTY:
ret.push('Missing required property:');
ret.push("\t - At ".concat(getTraceString(error.trace)));
break;
case ValidationErrorType.TYPE_MISMATCH:
var typeValidationError = error;
ret.push('Type mismatch:');
ret.push("\t - At ".concat(getTraceString(error.trace)));
ret.push("\t - Should be: \"".concat(typeValidationError.typeShouldBe, "\""));
ret.push("\t - Is: \"".concat(typeValidationError.typeIs, "\""));
break;
case ValidationErrorType.ENUM_MISMATCH:
var enumValidationError = error;
ret.push('Enum mismatch:');
ret.push("\t - At ".concat(getTraceString(error.trace)));
ret.push("\t - Should be one of: [\"".concat(enumValidationError.enumShouldBe.join('", "'), "\"]"));
ret.push("\t - Is: \"".concat(enumValidationError.enumIs, "\""));
break;
case ValidationErrorType.ADDITIONAL_PROPERTY:
ret.push('Additional Property:');
ret.push("\t - At ".concat(getTraceString(error.trace)));
break;
case ValidationErrorType.DATE_FORMAT:
ret.push('Date format mismatch:');
ret.push("\t - At ".concat(getTraceString(error.trace)));
break;
case ValidationErrorType.CONSTRAINTS_VIOLATION:
var violationError = error;
ret.push('Constraint violation:');
ret.push("\t - Violation: ".concat(violationError.constraintName, "<").concat(violationError.constraintValue, ">"));
ret.push("\t - At ".concat(getTraceString(error.trace)));
break;
case ValidationErrorType.CUSTOM:
var customValidationError = error;
ret.push('Custom Error:');
ret.push("\t - At ".concat(getTraceString(customValidationError.trace)));
if (customValidationError.content) {
ret.push("\t - Content: ".concat(JSON.stringify(customValidationError.content)));
}
break;
default:
ret.push('Unknown Error:');
ret.push("\t - At ".concat(getTraceString(error.trace)));
break;
}
ret.push('');
});
return ret.join('\n');
};
return ValidationResult;
}());
exports.ValidationResult = ValidationResult;