@korbiniankuhn/validator
Version:
Validate object schemas for js, expressjs, angular and mongoose.
102 lines • 3.53 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("./../../../utils/lodash");
exports.isValidRequestObject = (req, message) => {
if (!lodash_1.isObject(req)) {
throw message.get('express_invalid_request_object', {});
}
for (const key of ['params', 'query', 'body']) {
if (!(key in req)) {
throw message.get('express_invalid_request_object', {});
}
}
};
exports.validateSchema = (value, schema, message, { unknown, type }) => __awaiter(this, void 0, void 0, function* () {
if (schema) {
try {
yield schema.validate(value);
}
catch (err) {
if (schema._required || lodash_1.keys(value).length > 0) {
return err;
}
}
}
else if (!unknown && lodash_1.keys(value).length > 0) {
return message.get(`express_unknown_${type}`);
}
return null;
});
exports.validateSchemaSync = (value, schema, message, { unknown, type }) => {
if (schema) {
try {
schema.validateSync(value);
}
catch (err) {
if (schema._required || lodash_1.keys(value).length > 0) {
return err;
}
}
}
else if (!unknown && lodash_1.keys(value).length > 0) {
return message.get(`express_unknown_${type}`);
}
return null;
};
exports.validateRequestAsync = (req, { params, query, body, unknown, message }) => __awaiter(this, void 0, void 0, function* () {
exports.isValidRequestObject(req, message);
const errors = {};
let valid = true;
const keyNames = ['params', 'query', 'body'];
const schemas = [params, query, body];
for (let i = 0; i < keyNames.length; i++) {
const key = keyNames[i];
const error = yield exports.validateSchema(req[key], schemas[i], message, {
unknown,
type: key
});
if (error) {
errors[key] = error;
valid = false;
}
}
if (valid) {
return req;
}
else {
throw errors;
}
});
exports.validateRequestSync = (req, { params, query, body, unknown, message }) => {
exports.isValidRequestObject(req, message);
const errors = {};
let valid = true;
const keyNames = ['params', 'query', 'body'];
const schemas = [params, query, body];
for (let i = 0; i < keyNames.length; i++) {
const key = keyNames[i];
const error = exports.validateSchemaSync(req[key], schemas[i], message, {
unknown,
type: key
});
if (error) {
errors[key] = error;
valid = false;
}
}
if (valid) {
return req;
}
else {
throw errors;
}
};
//# sourceMappingURL=request.js.map