UNPKG

@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
"use strict"; 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