UNPKG

@svengroup/openapi-to-pdf

Version:

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

117 lines (116 loc) 4.41 kB
"use strict"; 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; }