@szegedsw/lib-node
Version:
A little framework published by Szeged Software Zrt. in order to enhance api endpoint security and create reuseable code. Email module, Logging system, and much more. Further improvements are expected.
43 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validatorRes = exports.validator = void 0;
const config_1 = require("../config/config");
const try_1 = require("../functions/try");
async function validator(res, object, required, optional) {
const validated = await try_1._try(res, async () => {
if (Array.isArray(object)) {
// tslint:disable-next-line: max-line-length
const valid = (await Promise.all(object.map((value) => validator(res, value, required, optional)))).every((value) => value.valid);
return { valid, object: object };
}
const keysOK = (keys, checkKeys) => keys.every((key) => {
const keyOK = checkKeys.includes(key);
if (!keyOK) {
// tslint:disable-next-line: no-console
console.log(`Key '${key}' is not included in input object of ['${checkKeys.join("','")}'].`);
}
return keyOK;
});
const requiredOK = keysOK(Object.keys(new required()), Object.keys(object));
const optionalOK = optional ? keysOK(Object.keys(object), Object.keys(new required()).concat(Object.keys(new optional()))) : true;
if (!requiredOK || !optionalOK) {
throw new Error("invalid input object format");
}
return { valid: requiredOK && optionalOK, object: object };
}, {
"invalid input object format": {
code: "badRequest",
body: `Invalid input object format: ['${Object.keys(object).join("','")}']\nrequired: ['${Object.keys(new required()).join("','")}']\noptional: ['${Object.keys(optional ? new optional() : {}).join("','")}'].`,
},
});
return typeof validated === "boolean" ? { valid: validated, object: {} } : validated;
}
exports.validator = validator;
async function validatorRes(res, object, required, optional) {
const { valid } = await validator(res, object, required, optional);
if (valid) {
res.status(config_1.HttpCodes.ok).json(object).end();
}
}
exports.validatorRes = validatorRes;
//# sourceMappingURL=interface-validators.js.map