@taraj/express-validator
Version:
Lightweight & powerful express validator designed for Typescript.
61 lines (51 loc) • 1.84 kB
JavaScript
var Joi = require("joi");
var AbstractValidatedDto = function () {
if (this.constructor === AbstractValidatedDto) {
throw new Error("Can't instantiate abstract class!");
}
};
AbstractValidatedDto.prototype.validate = function (options) {
var { error, value } = Joi.object(this.getSchema()).validate(this, options);
if (error != null) {
throw error;
}
return value;
}
AbstractValidatedDto.prototype.getSchema = function () {
throw new Error("Not implemented!");
}
exports = module.exports = function (options = {}) {
return function (req, res, next) {
req.getValidatedBody = function (type) {
var dto = Object.assign(new type(), req.body);
if (dto.validate != null) {
return dto.validate(options);
} else {
throw new Error("Validate function missing.")
}
}
req.getValidatedParam = function (name, joiSchema, defaultValue = null) {
if (defaultValue) {
var { error, value } = joiSchema.validate(req.params[name], options);
if (error != null) {
return defaultValue;
}
return value;
}
return Joi.attempt(req.params[name], joiSchema, options);
}
req.getValidatedQuery = function (name, joiSchema, defaultValue = null) {
if (defaultValue) {
var { error, value } = joiSchema.validate(req.query[name], options);
if (error != null) {
return defaultValue;
}
return value;
}
return Joi.attempt(req.query[name], joiSchema, options);
}
next();
}
};
exports.Joi = Joi;
exports.AbstractValidatedDto = AbstractValidatedDto;