UNPKG

@svengroup/openapi-to-pdf

Version:

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

80 lines (79 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = generateInfoMarkdown; exports.generateTosMarkdown = generateTosMarkdown; exports.generateContactMarkdown = generateContactMarkdown; exports.generateLicenseMarkdown = generateLicenseMarkdown; const indefinite = require('indefinite'); // eslint-disable-line @typescript-eslint/no-require-imports function generateInfoMarkdown(schema, config) { const info = schema.info; let info_str = ""; info_str += "# General Information"; info_str += "\n\n"; /* title & ver */ info_str += `${info.title} v${info.version}`; info_str += "\n\n"; /* description */ if (info.description) { info_str += `${info.description}`; info_str += "\n\n"; } /* added info */ if (config?.texts?.info) { info_str += config.texts.info; info_str += "\n\n"; } /* tos */ info_str += generateTosMarkdown(info); /* contact */ info_str += generateContactMarkdown(info); /* license */ info_str += generateLicenseMarkdown(info); return info_str; } function generateTosMarkdown(info) { let info_str = ""; if (info.termsOfService) { info_str += "## Terms of Service"; info_str += "\n\n"; info_str += `Usage of this API is subject to its Terms of Service which you may access at [${info.termsOfService}](${info.termsOfService}).`; info_str += "\n\n"; } return info_str; } function generateContactMarkdown(info) { let info_str = ""; if (info.contact && (info.contact.email || info.contact.name || info.contact.url)) { info_str += "## Contact"; info_str += "\n\n"; if (info.contact.name) { info_str += `- Name: ${info.contact.name}`; info_str += "\n"; } if (info.contact.email) { info_str += `- Email: [${info.contact.email}](mailto:${info.contact.email})`; info_str += "\n"; } if (info.contact.url) { info_str += `- URL: [${info.contact.url}](${info.contact.url})`; info_str += "\n"; } info_str += "\n"; } return info_str; } function generateLicenseMarkdown(info) { let info_str = ""; if (info.license?.name) { info_str += "## License"; info_str += "\n\n"; const license_text = indefinite(info.license.name); info_str += `This API is under ${license_text} license.`; info_str += "\n\n"; if (info.license.url) { info_str += `Read the full license here: [${info.license.url}](${info.license.url})`; info_str += "\n\n"; } } return info_str; }