rjweb-server
Version:
Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS
58 lines (57 loc) • 1.33 kB
JavaScript
import { Version } from "..";
import { isRegExp } from "util/types";
const transformRoutePath = (route) => {
let base = "", parameters = [];
for (const segment of route.path.data.segments) {
base += `/${segment.raw}`;
for (const param of segment.params) {
parameters.push({
name: param,
in: "path"
});
}
}
if (isRegExp(route.path.path))
return {
path: base.replace("//", "/").concat(`/{${route.path.path}}`),
parameters
};
else
return {
path: base.replace("//", "/"),
parameters
};
};
function generateOpenAPI3(ctg, server) {
const paths = {};
for (const route of ctg.routes.normal) {
const { path, parameters } = transformRoutePath(route);
if (!paths[path])
paths[path] = {};
paths[path][route.method.toLowerCase()] = {
responses: {},
parameters
};
}
return {
openapi: "3.1.0",
info: {
title: "rjweb-server openapi routes",
description: "auto generated openapi 3.1 routes",
version: Version
},
servers: [
server ? {
url: server,
description: "User Provided Server"
} : {
url: `http://localhost:${ctg.options.port}`,
description: "localhost + port"
}
],
paths
};
}
export {
generateOpenAPI3 as default
};