express-joi-simple
Version:
## Installation
44 lines • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Swagger = require("swagger-json");
var SwaggerUi = require("swagger-ui-express");
var fs = require("fs");
var helper_1 = require("./helper");
function Doc(app, settings) {
var info = settings.info, host = settings.host, basePath = settings.basePath, documentationPath = settings.documentationPath;
Swagger.swaggerDoc.createJsonDoc(info, host, basePath);
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' && middleware.handle.stack) { // router middleware
middleware.handle.stack.forEach(function (handler) {
if (!handler.route) {
return;
}
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, helper_1.regexpToPath(middleware.regexp) + path, routeMehtod.method);
}
});
}
});
}
});
var swaggerDocument = fs.readFileSync('./swagger.json', 'utf8');
var docPath = documentationPath || '/';
app.use(docPath, SwaggerUi.serve, SwaggerUi.setup(JSON.parse(swaggerDocument)));
}
exports.Doc = Doc;
//# sourceMappingURL=Doc.js.map