Initial content
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.validateModel = exports.validateIdProperty = exports.validate = void 0;
|
||||
const validation_types_1 = require("./validation_types");
|
||||
function validate(data, reqs) {
|
||||
let validatedData = {};
|
||||
Object.entries(reqs).forEach(([prop, rule]) => {
|
||||
const [valid, value] = applyRule(data[prop], rule);
|
||||
if (valid) {
|
||||
validatedData[prop] = value;
|
||||
}
|
||||
else {
|
||||
throw new validation_types_1.ValidationError(prop, "Validation Error");
|
||||
}
|
||||
});
|
||||
return validatedData;
|
||||
}
|
||||
exports.validate = validate;
|
||||
function applyRule(val, rule) {
|
||||
const required = Array.isArray(rule) ? true : rule.required;
|
||||
const checks = Array.isArray(rule) ? rule : rule.validation;
|
||||
const convert = Array.isArray(rule) ? (v) => v : rule.converter;
|
||||
if (val === null || val == undefined || val === "") {
|
||||
return [required ? false : true, val];
|
||||
}
|
||||
let valid = true;
|
||||
checks.forEach(check => {
|
||||
if (!check(val)) {
|
||||
valid = false;
|
||||
}
|
||||
});
|
||||
return [valid, convert ? convert(val) : val];
|
||||
}
|
||||
function validateIdProperty(val, v) {
|
||||
if (v.keyValidator) {
|
||||
const [valid, value] = applyRule(val, v.keyValidator);
|
||||
if (valid) {
|
||||
return value;
|
||||
}
|
||||
throw new validation_types_1.ValidationError("ID", "Validation Error");
|
||||
}
|
||||
return val;
|
||||
}
|
||||
exports.validateIdProperty = validateIdProperty;
|
||||
function validateModel(model, rules) {
|
||||
if (rules.propertyRules) {
|
||||
model = validate(model, rules.propertyRules);
|
||||
}
|
||||
if (rules.modelRule) {
|
||||
const [valid, data] = applyRule(model, rules.modelRule);
|
||||
if (valid) {
|
||||
return data;
|
||||
}
|
||||
throw new validation_types_1.ValidationError("Model", "Validation Error");
|
||||
}
|
||||
}
|
||||
exports.validateModel = validateModel;
|
||||
Reference in New Issue
Block a user