UNPKG

express-swagger-autogen

Version:

A library that auto generates swagger docs to your endpoints from express.

85 lines (84 loc) 3.52 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExpressSwaggerAutogenUtils = void 0; var ExpressSwaggerAutogenUtils = /** @class */ (function () { function ExpressSwaggerAutogenUtils() { } ExpressSwaggerAutogenUtils.listRoutes = function (router) { var rotas = []; var _loop_1 = function (layer) { if (layer.route) { var path = layer.route.path; var route_1 = layer.route; var methods = Object.keys(route_1.methods).filter(function (method) { return route_1.methods[method]; }); var handlers = layer.route.stack.map(function (m) { return m.handle; }); for (var _b = 0, methods_1 = methods; _b < methods_1.length; _b++) { var method = methods_1[_b]; rotas.push({ path: path, method: method.toUpperCase(), handlers: handlers, }); } } }; for (var _i = 0, _a = router.stack; _i < _a.length; _i++) { var layer = _a[_i]; _loop_1(layer); } return rotas; }; ExpressSwaggerAutogenUtils.METADATA_KEY = Symbol("esa-handler-doc"); ExpressSwaggerAutogenUtils.extractPathParams = function (path) { var paramRegex = /:([a-zA-Z0-9_]+)/g; var params = []; var match; while ((match = paramRegex.exec(path)) !== null) { params.push(match[1]); } return params; }; ExpressSwaggerAutogenUtils.extractFirstPathName = function (path) { var firstSegment = path.split("/").filter(function (segment) { return segment && !segment.startsWith(":"); })[0]; return firstSegment || ""; }; ExpressSwaggerAutogenUtils.normalizeSwaggerToExpressPath = function (path) { return path.replace(/\/\{([a-zA-Z0-9_]+)\}/g, "/:$1"); }; ExpressSwaggerAutogenUtils.normalizeExpressToSwaggerPath = function (path) { return path.replace(/\/:([a-zA-Z0-9_]+)/g, "/{$1}"); }; ExpressSwaggerAutogenUtils.merge = function (target, source) { var result = __assign({}, target); for (var _i = 0, _a = Object.entries(source); _i < _a.length; _i++) { var _b = _a[_i], key = _b[0], value = _b[1]; var isArray = Array.isArray(value); var isObject = typeof result[key] === "object" && typeof value === "object" && result[key] !== null && value !== null; if (isObject && !isArray) { result[key] = ExpressSwaggerAutogenUtils.merge(result[key], value); } else { result[key] = value; } } return result; }; ExpressSwaggerAutogenUtils.logger = function (message) { if (process.env.NODE_ENV !== "test") { console.log("\u001B[1m\u001B[34mExpress Swagger Autogen\u001B[0m: ".concat(message)); } }; return ExpressSwaggerAutogenUtils; }()); exports.ExpressSwaggerAutogenUtils = ExpressSwaggerAutogenUtils;