@svengroup/openapi-to-pdf
Version:
Create PDF API reference documentation from OpenAPI 3.0.x specification files.
117 lines (116 loc) • 4.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateResponsesMarkdown = generateResponsesMarkdown;
exports.generateResponsesTitleMarkdown = generateResponsesTitleMarkdown;
exports.generateResponseMarkdown = generateResponseMarkdown;
exports.generateResponseTitleMarkdown = generateResponseTitleMarkdown;
exports.generateResponseHeadersMarkdown = generateResponseHeadersMarkdown;
exports.generateResponseHeadersTableMarkdown = generateResponseHeadersTableMarkdown;
exports.generateResponseHeadersTableRowMarkdown = generateResponseHeadersTableRowMarkdown;
exports.generateResponseBodyMarkdown = generateResponseBodyMarkdown;
exports.generateResponseBodyTablesMarkdown = generateResponseBodyTablesMarkdown;
const http_1 = require("../../utils/http");
const _1 = require(".");
const toc_1 = require("../toc");
function generateResponsesMarkdown(h, responses) {
let endpoints_str = "";
const responses_title = generateResponsesTitleMarkdown(h);
let responses_toc = [];
for (const [code, response] of Object.entries(responses)) {
const response_title_markdown = generateResponseTitleMarkdown(h, code);
responses_toc = [...responses_toc, ...(0, toc_1.getToc)(response_title_markdown)];
endpoints_str += generateResponseTitleMarkdown(h, code);
/** @ts-expect-error we resolve all references */
endpoints_str += generateResponseMarkdown(h, response);
}
const responses_toc_markdown = (0, toc_1.generateSubSectionTocMarkdown)(responses_toc);
return responses_title + responses_toc_markdown + endpoints_str;
}
function generateResponsesTitleMarkdown(h) {
let endpoints_str = "";
endpoints_str += `${h}### Responses`;
endpoints_str += "\n\n";
return endpoints_str;
}
function generateResponseMarkdown(h, response) {
let endpoints_str = "";
if (response.description) {
endpoints_str += response.description;
endpoints_str += "\n\n";
}
/** @ts-expect-error we resolve all references */
endpoints_str += generateResponseHeadersMarkdown(h, response.headers);
endpoints_str += generateResponseBodyMarkdown(h, response.content);
return endpoints_str;
}
function generateResponseTitleMarkdown(h, code) {
let endpoints_str = "";
const title = `${code} ${(0, http_1.getStatusName)(code)}`;
endpoints_str += `${h}#### \`${title}\``;
endpoints_str += "\n\n";
return endpoints_str;
}
function generateResponseHeadersMarkdown(h, headers) {
let endpoints_str = "";
endpoints_str += `${h}##### Response Headers`;
endpoints_str += "\n\n";
if (headers) {
endpoints_str += generateResponseHeadersTableMarkdown(headers);
}
else {
endpoints_str += "No Specific Response Headers.";
endpoints_str += "\n\n";
}
return endpoints_str;
}
function generateResponseHeadersTableMarkdown(headers) {
let endpoints_str = "";
endpoints_str += "|Key|Type|Required|Example|\n";
endpoints_str += "|-|-|-|-|\n";
for (const [key, header] of Object.entries(headers)) {
endpoints_str += generateResponseHeadersTableRowMarkdown(key, header);
}
endpoints_str += "\n\n";
return endpoints_str;
}
function generateResponseHeadersTableRowMarkdown(key, header) {
let endpoints_str = "";
endpoints_str += `|${key}`;
/** @ts-expect-error we resolve all references */
const schema = header.schema;
endpoints_str += `|${schema?.type ?? '-'}`;
if (header.required) {
endpoints_str += `|Yes`;
}
else {
endpoints_str += `|No`;
}
if (header.example) {
endpoints_str += `|${header.example}`;
}
else {
endpoints_str += `|-`;
}
endpoints_str += "|\n";
return endpoints_str;
}
function generateResponseBodyMarkdown(h, body) {
let endpoints_str = "";
endpoints_str += `${h}##### Response Body`;
endpoints_str += "\n\n";
if (body) {
endpoints_str += generateResponseBodyTablesMarkdown(body);
}
else {
endpoints_str += "No Response Body";
endpoints_str += "\n\n";
}
return endpoints_str;
}
function generateResponseBodyTablesMarkdown(body) {
let endpoints_str = "";
for (const [media_type, obj] of Object.entries(body)) {
endpoints_str += (0, _1.generateMediaTypeMarkdown)(media_type, obj, 'response');
}
return endpoints_str;
}