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