@webnotion-net/typescript-model-validator
Version:
Flexible and extensible library for validating data models in TypeScript
69 lines (68 loc) • 3.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var Violations_1 = __importDefault(require("./violations/Violations"));
var Violation_1 = __importDefault(require("./violations/Violation"));
var Validator = /** @class */ (function () {
function Validator() {
}
Validator.prototype.validate = function (data) {
var violations = [];
if (this.isValidatableModel(data)) {
for (var _i = 0, _a = Object.entries(data === null || data === void 0 ? void 0 : data.getConstraints()); _i < _a.length; _i++) {
var _b = _a[_i], propertyName = _b[0], constraints = _b[1];
for (var _c = 0, constraints_1 = constraints; _c < constraints_1.length; _c++) {
var constraint = constraints_1[_c];
if (!constraint.validate(data[propertyName])) {
var violation = new Violation_1.default(propertyName, constraint.getErrorMessage());
violations.push(violation);
}
}
}
}
if (this.isGloballyValidatableModel(data)) {
for (var _d = 0, _e = Object.entries(data === null || data === void 0 ? void 0 : data.getGlobalConstraints()); _d < _e.length; _d++) {
var _f = _e[_d], key = _f[0], constraint = _f[1];
if (!constraint.validate(data)) {
var violation = new Violation_1.default(null, constraint.getErrorMessage());
violations.push(violation);
}
}
}
return new Violations_1.default(violations);
};
Validator.prototype.validatePlain = function (data, constraints) {
var violations = [];
for (var _i = 0, _a = Object.entries(constraints); _i < _a.length; _i++) {
var _b = _a[_i], propertyName = _b[0], propertyConstraints = _b[1];
for (var _c = 0, propertyConstraints_1 = propertyConstraints; _c < propertyConstraints_1.length; _c++) {
var constraint = propertyConstraints_1[_c];
if (!constraint.validate(data[propertyName])) {
var violation = new Violation_1.default(propertyName, constraint.getErrorMessage());
violations.push(violation);
}
}
}
return new Violations_1.default(violations);
};
Validator.prototype.validateProperty = function (propertyName, data, constraints) {
var violations = [];
constraints.forEach(function (constraint) {
if (!constraint.validate(data)) {
var violation = new Violation_1.default(propertyName, constraint.getErrorMessage());
violations.push(violation);
}
});
return new Violations_1.default(violations);
};
Validator.prototype.isValidatableModel = function (data) {
return data.getConstraints !== undefined;
};
Validator.prototype.isGloballyValidatableModel = function (data) {
return data.getGlobalConstraints !== undefined;
};
return Validator;
}());
exports.default = Validator;