express-joi-simple
Version:
## Installation
47 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Joi = require("joi-express");
var Swagger = require("swagger-json");
var SwaggerUi = require("swagger-ui-express");
var fs = require("fs");
var ExpressJoiSimple = /** @class */ (function () {
function ExpressJoiSimple() {
}
ExpressJoiSimple.prototype.validateJoiSchema = function (schema) {
return Joi(schema);
};
ExpressJoiSimple.prototype.generateDoc = function (app, info) {
Swagger.swaggerDoc.createJsonDoc(info);
app._router.stack.forEach(function (middleware) {
if (middleware.route) { // routes registered directly on the app
var _a = middleware.route, path_1 = _a.path, stack = _a.stack;
if (path_1) {
stack.forEach(function (routeMehtod) {
if (routeMehtod.name == 'validateRequest') {
var joiSchema = routeMehtod.handle('schemaBypass');
Swagger.swaggerDoc.addNewRoute(joiSchema, path_1, routeMehtod.method);
}
});
}
}
else if (middleware.name === 'router') { // router middleware
middleware.handle.stack.forEach(function (handler) {
var _a = handler.route, path = _a.path, stack = _a.stack;
if (path) {
stack.forEach(function (routeMehtod) {
if (routeMehtod.name == 'validateRequest') {
var joiSchema = routeMehtod.handle('schemaBypass');
Swagger.swaggerDoc.addNewRoute(joiSchema, middleware.prefix + path, routeMehtod.method);
}
});
}
});
}
});
var swaggerDocument = fs.readFileSync('./swagger.json', 'utf8');
app.use('/documentation', SwaggerUi.serve, SwaggerUi.setup(JSON.parse(swaggerDocument)));
};
return ExpressJoiSimple;
}());
exports.ExpressJoiSimple = ExpressJoiSimple;
//# sourceMappingURL=express-joi-simple.js.map