express-swagger-autogen
Version:
A library that auto generates swagger docs to your endpoints from express.
85 lines (84 loc) • 3.52 kB
JavaScript
;
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;