UNPKG

docusaurus-plugin-openapi-docs

Version:

OpenAPI plugin for Docusaurus.

158 lines (157 loc) 5.49 kB
"use strict"; /* ============================================================================ * Copyright (c) Palo Alto Networks * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * ========================================================================== */ Object.defineProperty(exports, "__esModule", { value: true }); exports.getSchemaName = getSchemaName; exports.getQualifierMessage = getQualifierMessage; function prettyName(schema, circular) { var _a, _b, _c, _d, _e; if (schema.format) { if (schema.type) { return `${schema.type}<${schema.format}>`; } return schema.format; } if (schema.allOf) { if (typeof schema.allOf[0] === "string") { // @ts-ignore if (schema.allOf[0].includes("circular")) { return schema.allOf[0]; } } return "object"; } if (schema.oneOf) { return "object"; } if (schema.anyOf) { return "object"; } if (schema.type === "object") { return (_b = (_a = schema.xml) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : schema.type; // return schema.type; } if (schema.type === "array") { return (_d = (_c = schema.xml) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : schema.type; // return schema.type; } if (schema.title && schema.type) { return `${schema.title} (${schema.type})`; } return (_e = schema.title) !== null && _e !== void 0 ? _e : schema.type; } function getSchemaName(schema, circular) { var _a; if (schema.items) { return prettyName(schema.items, circular) + "[]"; } return (_a = prettyName(schema, circular)) !== null && _a !== void 0 ? _a : ""; } function getQualifierMessage(schema) { // TODO: // - uniqueItems // - maxProperties // - minProperties // - multipleOf if (!schema) { return undefined; } if (schema.items && schema.minItems === undefined && schema.maxItems === undefined) { return getQualifierMessage(schema.items); } let message = "**Possible values:** "; let qualifierGroups = []; if (schema.items && schema.items.enum) { if (schema.items.enum) { qualifierGroups.push(`[${schema.items.enum.map((e) => `\`${e}\``).join(", ")}]`); } } if (schema.minLength || schema.maxLength) { let lengthQualifier = ""; let minLength; let maxLength; if (schema.minLength && schema.minLength > 1) { minLength = `\`>= ${schema.minLength} characters\``; } if (schema.minLength && schema.minLength === 1) { minLength = `\`non-empty\``; } if (schema.maxLength) { maxLength = `\`<= ${schema.maxLength} characters\``; } if (minLength && !maxLength) { lengthQualifier += minLength; } if (maxLength && !minLength) { lengthQualifier += maxLength; } if (minLength && maxLength) { lengthQualifier += `${minLength} and ${maxLength}`; } qualifierGroups.push(lengthQualifier); } if (schema.minimum != null || schema.maximum != null || typeof schema.exclusiveMinimum === "number" || typeof schema.exclusiveMaximum === "number") { let minmaxQualifier = ""; let minimum; let maximum; if (typeof schema.exclusiveMinimum === "number") { minimum = `\`> ${schema.exclusiveMinimum}\``; } else if (schema.minimum != null && !schema.exclusiveMinimum) { minimum = `\`>= ${schema.minimum}\``; } else if (schema.minimum != null && schema.exclusiveMinimum === true) { minimum = `\`> ${schema.minimum}\``; } if (typeof schema.exclusiveMaximum === "number") { maximum = `\`< ${schema.exclusiveMaximum}\``; } else if (schema.maximum != null && !schema.exclusiveMaximum) { maximum = `\`<= ${schema.maximum}\``; } else if (schema.maximum != null && schema.exclusiveMaximum === true) { maximum = `\`< ${schema.maximum}\``; } if (minimum && !maximum) { minmaxQualifier += minimum; } if (maximum && !minimum) { minmaxQualifier += maximum; } if (minimum && maximum) { minmaxQualifier += `${minimum} and ${maximum}`; } qualifierGroups.push(minmaxQualifier); } if (schema.pattern) { qualifierGroups.push(`Value must match regular expression \`${schema.pattern}\``); } // Check if discriminator mapping const discriminator = schema; if (discriminator.mapping) { const values = Object.keys(discriminator.mapping); qualifierGroups.push(`[${values.map((e) => `\`${e}\``).join(", ")}]`); } if (schema.enum) { qualifierGroups.push(`[${schema.enum.map((e) => `\`${e}\``).join(", ")}]`); } if (schema.minItems) { qualifierGroups.push(`\`>= ${schema.minItems}\``); } if (schema.maxItems) { qualifierGroups.push(`\`<= ${schema.maxItems}\``); } if (qualifierGroups.length === 0) { return undefined; } return message + qualifierGroups.join(", "); }