UNPKG

rjweb-server

Version:

Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS

78 lines (77 loc) 2.29 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var generateOpenAPI3_exports = {}; __export(generateOpenAPI3_exports, { default: () => generateOpenAPI3 }); module.exports = __toCommonJS(generateOpenAPI3_exports); var import__ = require(".."); var import_types = require("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 ((0, import_types.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: import__.Version }, servers: [ server ? { url: server, description: "User Provided Server" } : { url: `http://localhost:${ctg.options.port}`, description: "localhost + port" } ], paths }; }