UNPKG

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
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 };