UNPKG

@svengroup/openapi-to-pdf

Version:

Create PDF API reference documentation from OpenAPI 3.0.x specification files.

149 lines (148 loc) 5.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getParametersIn = getParametersIn; exports.generateParametersMarkdown = generateParametersMarkdown; exports.generateParameterTitleMarkdown = generateParameterTitleMarkdown; exports.generateParametersTableMarkdown = generateParametersTableMarkdown; exports.generateParameterTableRowMarkdown = generateParameterTableRowMarkdown; exports.generateParameterTableRowTypeColMarkdown = generateParameterTableRowTypeColMarkdown; exports.generateParameterTableRowRequiredColMarkdown = generateParameterTableRowRequiredColMarkdown; exports.generateRequestBodyMarkdown = generateRequestBodyMarkdown; const schema_1 = require("../../markdown/schema"); const _1 = require("."); function getParametersIn(used_in, parameters) { if (!parameters) { return []; } let parameters_in = []; for (const parameter of parameters) { if (parameter.in === used_in) { parameters_in = [...parameters_in, parameter]; } } return parameters_in; } function generateParametersMarkdown(h, used_in, parameters) { let endpoints_str = ""; endpoints_str += generateParameterTitleMarkdown(h, used_in); const parameters_in = getParametersIn(used_in, parameters); if (parameters_in.length < 1) { switch (used_in) { case "path": endpoints_str += "No Path Parameters."; break; case "query": endpoints_str += "No Query Parameters."; break; case "header": endpoints_str += "No Specific Request Headers"; break; case "cookie": endpoints_str += "No Cookies."; break; default: endpoints_str += "No Parameters."; break; } endpoints_str += "\n\n"; } else { endpoints_str += generateParametersTableMarkdown(parameters_in); } return endpoints_str; } function generateParameterTitleMarkdown(h, used_in) { let endpoints_str = ""; switch (used_in) { case "path": endpoints_str += `${h}### Path Parameters`; break; case "query": endpoints_str += `${h}### Query Parameters`; break; case "header": endpoints_str += `${h}### Request Headers`; break; case "cookie": endpoints_str += `${h}### Cookies`; break; default: break; } endpoints_str += "\n\n"; return endpoints_str; } function generateParametersTableMarkdown(parameters) { let endpoints_str = ""; endpoints_str += "|Key|Type|Required|Example|Notes|\n"; endpoints_str += "|-|-|-|-|-|\n"; for (const parameter of parameters) { endpoints_str += generateParameterTableRowMarkdown(parameter); } endpoints_str += "\n\n"; return endpoints_str; } function generateParameterTableRowMarkdown(parameter) { let endpoints_str = ""; /** @ts-expect-error we resolve all references */ let schema = parameter.schema; schema = schema ? (0, schema_1.handleAllOf)(schema) : undefined; const input_schema = schema ?? {}; // for input in schema functions if (schema?.readOnly) { return ""; // override if readonly } if (schema?.anyOf || schema?.oneOf) { return (0, schema_1.generateOneAnyOfSchemaTableRowMarkdown)(parameter.name, schema, parameter.required ? [parameter.name] : [], 'request'); } /* NAME */ endpoints_str += `|${parameter.name}`; /* TYPE */ endpoints_str += generateParameterTableRowTypeColMarkdown(schema); /* REQUIRED */ endpoints_str += generateParameterTableRowRequiredColMarkdown(parameter); /* EXAMPLE */ endpoints_str += (0, schema_1.generateSchemaTableRowExampleColMarkdown)(input_schema); /* NESTED */ endpoints_str += (0, schema_1.generateSchemaNotesMarkdown)(schema); /* NESTED */ endpoints_str += (0, schema_1.generateNestedSchemaTableRowMarkdown)(parameter.name, input_schema, 'request'); return endpoints_str; } function generateParameterTableRowTypeColMarkdown(schema) { let endpoints_str = ""; endpoints_str += `|${schema?.type ?? '-'}`; return endpoints_str; } function generateParameterTableRowRequiredColMarkdown(parameter) { let endpoints_str = ""; if (parameter.required) { endpoints_str += `|Yes`; } else { endpoints_str += `|No`; } return endpoints_str; } function generateRequestBodyMarkdown(h, body) { let endpoints_str = ""; endpoints_str += `${h}### Request Body`; endpoints_str += "\n\n"; if (body) { if (body.required) { endpoints_str += "Required."; endpoints_str += "\n\n"; } if (body.description) { endpoints_str += body.description; endpoints_str += "\n\n"; } for (const [media_type, obj] of Object.entries(body.content)) { endpoints_str += (0, _1.generateMediaTypeMarkdown)(media_type, obj, 'request'); } } else { endpoints_str += "No Request Body."; endpoints_str += "\n\n"; } return endpoints_str; }