@@ -1235,7 +1143,6 @@ Array [
name={\\"sharedProp\\"}
required={false}
schemaName={\\"string\\"}
- qualifierMessage={undefined}
schema={{ type: \\"string\\" }}
>;
",
@@ -1270,7 +1177,6 @@ Array [
name={\\"noseLength\\"}
required={true}
schemaName={\\"number\\"}
- qualifierMessage={undefined}
schema={{ type: \\"number\\" }}
>
@@ -1424,7 +1330,6 @@ Array [
name={\\"objectProp\\"}
required={false}
schemaName={\\"string\\"}
- qualifierMessage={undefined}
schema={{ type: \\"string\\" }}
>
@@ -1527,7 +1432,6 @@ Array [
name={\\"requiredPropA\\"}
required={true}
schemaName={\\"string\\"}
- qualifierMessage={undefined}
schema={{ type: \\"string\\" }}
>
@@ -1537,7 +1441,6 @@ Array [
name={\\"requiredPropB\\"}
required={true}
schemaName={\\"number\\"}
- qualifierMessage={undefined}
schema={{ type: \\"number\\" }}
>
@@ -1557,7 +1460,6 @@ Array [
name={\\"sharedProp\\"}
required={false}
schemaName={\\"string\\"}
- qualifierMessage={undefined}
schema={{ type: \\"string\\" }}
>;
",
@@ -1581,7 +1483,6 @@ Array [
name={\\"specificPropA\\"}
required={false}
schemaName={\\"string\\"}
- qualifierMessage={undefined}
schema={{ type: \\"string\\" }}
>
@@ -1591,7 +1492,6 @@ Array [
name={\\"specificPropB\\"}
required={false}
schemaName={\\"number\\"}
- qualifierMessage={undefined}
schema={{ type: \\"number\\" }}
>
diff --git a/packages/docusaurus-plugin-openapi-docs/src/markdown/createSchema.ts b/packages/docusaurus-plugin-openapi-docs/src/markdown/createSchema.ts
index 3447507fc..80f461ecb 100644
--- a/packages/docusaurus-plugin-openapi-docs/src/markdown/createSchema.ts
+++ b/packages/docusaurus-plugin-openapi-docs/src/markdown/createSchema.ts
@@ -17,7 +17,7 @@ import {
import { createDescription } from "./createDescription";
import { createDetails } from "./createDetails";
import { createDetailsSummary } from "./createDetailsSummary";
-import { getQualifierMessage, getSchemaName } from "./schema";
+import { getSchemaName } from "./schema";
import { create, guard } from "./utils";
import { SchemaObject } from "../openapi/types";
@@ -140,7 +140,6 @@ function createProperties(schema: SchemaObject) {
name: "",
required: false,
schemaName: "object",
- qualifierMessage: undefined,
schema: {},
});
}
@@ -169,7 +168,6 @@ function createAdditionalProperties(schema: SchemaObject) {
name: "property name*",
required: false,
schemaName: "any",
- qualifierMessage: getQualifierMessage(schema),
schema: schema,
collapsible: false,
discriminator: false,
@@ -209,7 +207,6 @@ function createAdditionalProperties(schema: SchemaObject) {
name: "property name*",
required: false,
schemaName: schemaName,
- qualifierMessage: getQualifierMessage(schema),
schema: additionalProperties,
collapsible: false,
discriminator: false,
@@ -399,12 +396,6 @@ function createDetailsNode(
children: createDescription(description),
})
),
- guard(getQualifierMessage(schema), (message) =>
- create("div", {
- style: { marginTop: ".5rem", marginBottom: ".5rem" },
- children: createDescription(message),
- })
- ),
createNodes(schema, SCHEMA_TYPE),
],
}),
@@ -545,14 +536,6 @@ function createPropertyDiscriminator(
children: createDescription(description),
})
),
- guard(getQualifierMessage(discriminator), (message) =>
- create("div", {
- style: {
- paddingLeft: "1rem",
- },
- children: createDescription(message),
- })
- ),
create("DiscriminatorTabs", {
className: "openapi-tabs__discriminator",
children: Object.keys(discriminator?.mapping!).map((key, index) => {
@@ -727,7 +710,6 @@ function createEdges({
name,
required: Array.isArray(required) ? required.includes(name) : required,
schemaName: mergedSchemaName,
- qualifierMessage: getQualifierMessage(mergedSchemas),
schema: mergedSchemas,
});
}
@@ -738,7 +720,6 @@ function createEdges({
name,
required: Array.isArray(required) ? required.includes(name) : required,
schemaName: schemaName,
- qualifierMessage: getQualifierMessage(schema),
schema: schema,
});
}
@@ -823,17 +804,7 @@ export function createNodes(
marginTop: ".5rem",
marginBottom: ".5rem",
},
- children: [
- createDescription(schema.type),
- guard(getQualifierMessage(schema), (message) =>
- create("div", {
- style: {
- paddingTop: "1rem",
- },
- children: createDescription(message),
- })
- ),
- ],
+ children: [createDescription(schema.type)],
});
}
@@ -844,17 +815,7 @@ export function createNodes(
marginTop: ".5rem",
marginBottom: ".5rem",
},
- children: [
- createDescription(schema),
- guard(getQualifierMessage(schema), (message) =>
- create("div", {
- style: {
- paddingTop: "1rem",
- },
- children: createDescription(message),
- })
- ),
- ],
+ children: [createDescription(schema)],
});
}
diff --git a/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.test.ts b/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.test.ts
deleted file mode 100644
index daa3a633d..000000000
--- a/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.test.ts
+++ /dev/null
@@ -1,208 +0,0 @@
-/* ============================================================================
- * 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.
- * ========================================================================== */
-
-import { getQualifierMessage } from "./schema";
-
-describe("getQualifierMessage", () => {
- it("should render nothing", () => {
- const actual = getQualifierMessage({});
- expect(actual).toBeUndefined();
- });
-
- //
- // minLength + maxLength
- //
- it("should render minLength", () => {
- const expected = "**Possible values:** `non-empty`";
- const actual = getQualifierMessage({ minLength: 1 });
- expect(actual).toBe(expected);
- });
-
- it("should render maxLength", () => {
- const expected = "**Possible values:** `<= 40 characters`";
- const actual = getQualifierMessage({ maxLength: 40 });
- expect(actual).toBe(expected);
- });
-
- it("should render minLength and maxLength", () => {
- const expected = "**Possible values:** `non-empty` and `<= 40 characters`";
- const actual = getQualifierMessage({ minLength: 1, maxLength: 40 });
- expect(actual).toBe(expected);
- });
-
- //
- // pattern
- //
- it("should render pattern", () => {
- const expected =
- "**Possible values:** Value must match regular expression `^[a-zA-Z0-9_-]*$`";
- const actual = getQualifierMessage({ pattern: "^[a-zA-Z0-9_-]*$" });
- expect(actual).toBe(expected);
- });
-
- it("should render multiple string qualifiers", () => {
- const expected =
- "**Possible values:** `non-empty` and `<= 40 characters`, Value must match regular expression `^[a-zA-Z0-9_-]*$`";
- const actual = getQualifierMessage({
- minLength: 1,
- maxLength: 40,
- pattern: "^[a-zA-Z0-9_-]*$",
- });
- expect(actual).toBe(expected);
- });
-
- //
- // enum
- //
- it("should render enum", () => {
- const expected = "**Possible values:** [`cat`, `dog`, `mouse`]";
- const actual = getQualifierMessage({ enum: ["cat", "dog", "mouse"] });
- expect(actual).toBe(expected);
- });
-
- //
- // minimum + maximum + exclusiveMinimum + exclusiveMaximum
- //
- it("should render minimum", () => {
- const expected = "**Possible values:** `>= 1`";
- const actual = getQualifierMessage({ minimum: 1 });
- expect(actual).toBe(expected);
- });
-
- it("should render maximum", () => {
- const expected = "**Possible values:** `<= 40`";
- const actual = getQualifierMessage({ maximum: 40 });
- expect(actual).toBe(expected);
- });
-
- it("should render numeric exclusiveMinimum", () => {
- const expected = "**Possible values:** `> 1`";
- const actual = getQualifierMessage({ exclusiveMinimum: 1 });
- expect(actual).toBe(expected);
- });
-
- it("should render numeric exclusiveMaximum", () => {
- const expected = "**Possible values:** `< 40`";
- const actual = getQualifierMessage({ exclusiveMaximum: 40 });
- expect(actual).toBe(expected);
- });
-
- it("should render boolean exclusiveMinimum", () => {
- const expected = "**Possible values:** `> 1`";
- const actual = getQualifierMessage({ minimum: 1, exclusiveMinimum: true });
- expect(actual).toBe(expected);
- });
-
- it("should render boolean exclusiveMaximum", () => {
- const expected = "**Possible values:** `< 40`";
- const actual = getQualifierMessage({ maximum: 40, exclusiveMaximum: true });
- expect(actual).toBe(expected);
- });
-
- it("should render minimum when exclusiveMinimum is false", () => {
- const expected = "**Possible values:** `>= 1`";
- const actual = getQualifierMessage({ minimum: 1, exclusiveMinimum: false });
- expect(actual).toBe(expected);
- });
-
- it("should render maximum when exclusiveMaximum is false", () => {
- const expected = "**Possible values:** `<= 40`";
- const actual = getQualifierMessage({
- maximum: 40,
- exclusiveMaximum: false,
- });
- expect(actual).toBe(expected);
- });
-
- it("should render minimum and maximum", () => {
- const expected = "**Possible values:** `>= 1` and `<= 40`";
- const actual = getQualifierMessage({ minimum: 1, maximum: 40 });
- expect(actual).toBe(expected);
- });
-
- it("should render 0 minimum and maximum", () => {
- const expected = "**Possible values:** `>= 0` and `<= 40`";
- const actual = getQualifierMessage({ minimum: 0, maximum: 40 });
- expect(actual).toBe(expected);
- });
-
- it("should render minimum and 0 maximum", () => {
- const expected = "**Possible values:** `>= -10` and `<= 0`";
- const actual = getQualifierMessage({ minimum: -10, maximum: 0 });
- expect(actual).toBe(expected);
- });
-
- it("should render boolean exclusiveMinimum and maximum", () => {
- const expected = "**Possible values:** `> 1` and `<= 40`";
- const actual = getQualifierMessage({
- minimum: 1,
- maximum: 40,
- exclusiveMinimum: true,
- });
- expect(actual).toBe(expected);
- });
-
- it("should render minimum and boolean exclusiveMaximum", () => {
- const expected = "**Possible values:** `>= 1` and `< 40`";
- const actual = getQualifierMessage({
- minimum: 1,
- maximum: 40,
- exclusiveMaximum: true,
- });
- expect(actual).toBe(expected);
- });
-
- it("should render numeric exclusiveMinimum and maximum", () => {
- const expected = "**Possible values:** `> 1` and `<= 40`";
- const actual = getQualifierMessage({
- exclusiveMinimum: 1,
- maximum: 40,
- });
- expect(actual).toBe(expected);
- });
-
- it("should render minimum and numeric exclusiveMaximum", () => {
- const expected = "**Possible values:** `>= 1` and `< 40`";
- const actual = getQualifierMessage({
- minimum: 1,
- exclusiveMaximum: 40,
- });
- expect(actual).toBe(expected);
- });
-
- it("should render numeric exclusiveMinimum and boolean exclusiveMaximum", () => {
- const expected = "**Possible values:** `> 1` and `< 40`";
- const actual = getQualifierMessage({
- exclusiveMinimum: 1,
- maximum: 40,
- exclusiveMaximum: true,
- });
- expect(actual).toBe(expected);
- });
-
- it("should render nothing with empty boolean exclusiveMinimum", () => {
- const actual = getQualifierMessage({
- exclusiveMinimum: true,
- });
- expect(actual).toBeUndefined();
- });
-
- it("should render nothing with empty boolean exclusiveMaximum", () => {
- const actual = getQualifierMessage({
- exclusiveMaximum: true,
- });
- expect(actual).toBeUndefined();
- });
-
- it("should render nothing with empty boolean exclusiveMinimum and exclusiveMaximum", () => {
- const actual = getQualifierMessage({
- exclusiveMinimum: true,
- exclusiveMaximum: true,
- });
- expect(actual).toBeUndefined();
- });
-});
diff --git a/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.ts b/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.ts
index ea5e1c708..cb966c309 100644
--- a/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.ts
+++ b/packages/docusaurus-plugin-openapi-docs/src/markdown/schema.ts
@@ -66,129 +66,3 @@ export function getSchemaName(
return prettyName(schema, circular) ?? "";
}
-
-export function getQualifierMessage(schema?: SchemaObject): string | undefined {
- // 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 as any;
- 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(", ");
-}
diff --git a/packages/docusaurus-plugin-openapi-docs/src/markdown/utils.ts b/packages/docusaurus-plugin-openapi-docs/src/markdown/utils.ts
index 959587c9d..966070b92 100644
--- a/packages/docusaurus-plugin-openapi-docs/src/markdown/utils.ts
+++ b/packages/docusaurus-plugin-openapi-docs/src/markdown/utils.ts
@@ -129,7 +129,9 @@ export function create(
} else {
// Inline props as usual
for (const [key, value] of Object.entries(rest)) {
- propString += `\n ${key}={${JSON.stringify(value)}}`;
+ if (value !== undefined) {
+ propString += `\n ${key}={${JSON.stringify(value)}}`;
+ }
}
}
diff --git a/packages/docusaurus-plugin-openapi-docs/src/openapi/utils/utils/openapi.ts b/packages/docusaurus-plugin-openapi-docs/src/openapi/utils/utils/openapi.ts
index 5c569169a..f4050dc1a 100644
--- a/packages/docusaurus-plugin-openapi-docs/src/openapi/utils/utils/openapi.ts
+++ b/packages/docusaurus-plugin-openapi-docs/src/openapi/utils/utils/openapi.ts
@@ -450,116 +450,6 @@ export function getDefinitionName(pointer?: string): string | undefined {
return name;
}
-function humanizeMultipleOfConstraint(
- multipleOf: number | undefined
-): string | undefined {
- if (multipleOf === undefined) {
- return;
- }
- const strigifiedMultipleOf = multipleOf.toString(10);
- if (!/^0\.0*1$/.test(strigifiedMultipleOf)) {
- return `multiple of ${strigifiedMultipleOf}`;
- }
- return `decimal places <= ${strigifiedMultipleOf.split(".")[1].length}`;
-}
-
-function humanizeRangeConstraint(
- description: string,
- min: number | undefined,
- max: number | undefined
-): string | undefined {
- let stringRange;
- if (min !== undefined && max !== undefined) {
- if (min === max) {
- stringRange = `= ${min} ${description}`;
- } else {
- stringRange = `[ ${min} .. ${max} ] ${description}`;
- }
- } else if (max !== undefined) {
- stringRange = `<= ${max} ${description}`;
- } else if (min !== undefined) {
- if (min === 1) {
- stringRange = "non-empty";
- } else {
- stringRange = `>= ${min} ${description}`;
- }
- }
-
- return stringRange;
-}
-
-export function humanizeNumberRange(schema: OpenAPISchema): string | undefined {
- const minimum =
- typeof schema.exclusiveMinimum === "number"
- ? Math.min(schema.exclusiveMinimum, schema.minimum ?? Infinity)
- : schema.minimum;
- const maximum =
- typeof schema.exclusiveMaximum === "number"
- ? Math.max(schema.exclusiveMaximum, schema.maximum ?? -Infinity)
- : schema.maximum;
- const exclusiveMinimum =
- typeof schema.exclusiveMinimum === "number" || schema.exclusiveMinimum;
- const exclusiveMaximum =
- typeof schema.exclusiveMaximum === "number" || schema.exclusiveMaximum;
-
- if (minimum !== undefined && maximum !== undefined) {
- return `${exclusiveMinimum ? "( " : "[ "}${minimum} .. ${maximum}${
- exclusiveMaximum ? " )" : " ]"
- }`;
- } else if (maximum !== undefined) {
- return `${exclusiveMaximum ? "< " : "<= "}${maximum}`;
- } else if (minimum !== undefined) {
- return `${exclusiveMinimum ? "> " : ">= "}${minimum}`;
- }
-}
-
-export function humanizeConstraints(schema: OpenAPISchema): string[] {
- const res: string[] = [];
-
- const stringRange = humanizeRangeConstraint(
- "characters",
- schema.minLength,
- schema.maxLength
- );
- if (stringRange !== undefined) {
- res.push(stringRange);
- }
-
- const arrayRange = humanizeRangeConstraint(
- "items",
- schema.minItems,
- schema.maxItems
- );
- if (arrayRange !== undefined) {
- res.push(arrayRange);
- }
-
- const propertiesRange = humanizeRangeConstraint(
- "properties",
- schema.minProperties,
- schema.maxProperties
- );
- if (propertiesRange !== undefined) {
- res.push(propertiesRange);
- }
-
- const multipleOfConstraint = humanizeMultipleOfConstraint(schema.multipleOf);
- if (multipleOfConstraint !== undefined) {
- res.push(multipleOfConstraint);
- }
-
- const numberRange = humanizeNumberRange(schema);
- if (numberRange !== undefined) {
- res.push(numberRange);
- }
-
- if (schema.uniqueItems) {
- res.push("unique");
- }
-
- return res;
-}
-
export function sortByRequired(fields: any[], order: string[] = []) {
const unrequiredFields: any[] = [];
const orderedFields: any[] = [];
diff --git a/packages/docusaurus-theme-openapi-docs/src/markdown/schema.ts b/packages/docusaurus-theme-openapi-docs/src/markdown/schema.ts
index a798db106..ca5c54905 100644
--- a/packages/docusaurus-theme-openapi-docs/src/markdown/schema.ts
+++ b/packages/docusaurus-theme-openapi-docs/src/markdown/schema.ts
@@ -140,9 +140,7 @@ export function getQualifierMessage(schema?: SchemaObject): string | undefined {
if (schema.items) {
const itemsEnum = getEnumFromSchema(schema.items as SchemaObject);
if (itemsEnum) {
- qualifierGroups.push(
- `[${itemsEnum.map((e) => `\`${e}\``).join(", ")}]`
- );
+ qualifierGroups.push(`[${itemsEnum.map((e) => `\`${e}\``).join(", ")}]`);
}
}
@@ -150,14 +148,22 @@ export function getQualifierMessage(schema?: SchemaObject): string | undefined {
let lengthQualifier = "";
let minLength;
let maxLength;
+ const charactersMessage = translate({
+ id: OPENAPI_SCHEMA_ITEM.CHARACTERS,
+ message: "characters",
+ });
+ const nonEmptyMessage = translate({
+ id: OPENAPI_SCHEMA_ITEM.NON_EMPTY,
+ message: "non-empty",
+ });
if (schema.minLength && schema.minLength > 1) {
- minLength = `\`>= ${schema.minLength} characters\``;
+ minLength = `\`>= ${schema.minLength} ${charactersMessage}\``;
}
if (schema.minLength && schema.minLength === 1) {
- minLength = `\`non-empty\``;
+ minLength = `\`${nonEmptyMessage}\``;
}
if (schema.maxLength) {
- maxLength = `\`<= ${schema.maxLength} characters\``;
+ maxLength = `\`<= ${schema.maxLength} ${charactersMessage}\``;
}
if (minLength && !maxLength) {
@@ -211,9 +217,11 @@ export function getQualifierMessage(schema?: SchemaObject): string | undefined {
}
if (schema.pattern) {
- qualifierGroups.push(
- `Value must match regular expression \`${schema.pattern}\``
- );
+ const expressionMessage = translate({
+ id: OPENAPI_SCHEMA_ITEM.EXPRESSION,
+ message: "Value must match regular expression",
+ });
+ qualifierGroups.push(`${expressionMessage} \`${schema.pattern}\``);
}
// Check if discriminator mapping
diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ResponseHeaders/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ResponseHeaders/index.tsx
index d8f2158dd..882089bdd 100644
--- a/packages/docusaurus-theme-openapi-docs/src/theme/ResponseHeaders/index.tsx
+++ b/packages/docusaurus-theme-openapi-docs/src/theme/ResponseHeaders/index.tsx
@@ -9,7 +9,7 @@ import React from "react";
import SchemaItem from "@theme/SchemaItem";
-import { getQualifierMessage, getSchemaName } from "../../markdown/schema";
+import { getSchemaName } from "../../markdown/schema";
interface ResponseHeadersProps {
description?: string;
@@ -35,7 +35,6 @@ export const ResponseHeaders: React.FC<{
name={name}
collapsible={false}
schemaName={getSchemaName(schema)}
- qualifierMessage={getQualifierMessage(schema)}
schema={schema}
discriminator={false}
children={null}
diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx
index 051150e28..b4903a974 100644
--- a/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx
+++ b/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx
@@ -21,16 +21,11 @@ import { OPENAPI_SCHEMA_ITEM } from "@theme/translationIds";
// eslint-disable-next-line import/no-extraneous-dependencies
import { merge } from "allof-merge";
import clsx from "clsx";
-import {
- getQualifierMessage,
- getSchemaName,
-} from "docusaurus-plugin-openapi-docs/lib/markdown/schema";
-import type {
- SchemaObject,
- SchemaType,
-} from "docusaurus-plugin-openapi-docs/src/openapi/types";
import isEmpty from "lodash/isEmpty";
+import { getQualifierMessage, getSchemaName } from "../../markdown/schema";
+import type { SchemaObject } from "../../types.d";
+
// eslint-disable-next-line import/no-extraneous-dependencies
// const jsonSchemaMergeAllOf = require("json-schema-merge-allof");
@@ -296,7 +291,6 @@ const AnyOneOf: React.FC
= ({
collapsible={false}
name={undefined}
schemaName={computedSchemaName}
- qualifierMessage={getQualifierMessage(anyOneSchema)}
schema={anyOneSchema}
discriminator={false}
children={null}
@@ -313,7 +307,6 @@ const AnyOneOf: React.FC = ({
collapsible={false}
name={undefined}
schemaName={computedSchemaName}
- qualifierMessage={getQualifierMessage(anyOneSchema)}
schema={anyOneSchema}
discriminator={false}
children={null}
@@ -398,7 +391,6 @@ const Properties: React.FC = ({
name=""
required={false}
schemaName="object"
- qualifierMessage={undefined}
schema={{}}
/>
);
@@ -611,7 +603,6 @@ const AdditionalProperties: React.FC = ({
name="property name*"
required={false}
schemaName="any"
- qualifierMessage={getQualifierMessage(schema)}
schema={schema}
collapsible={false}
discriminator={false}
@@ -657,7 +648,6 @@ const AdditionalProperties: React.FC = ({
name="property name*"
required={false}
schemaName={schemaName}
- qualifierMessage={getQualifierMessage(schema)}
schema={additionalProperties}
collapsible={false}
discriminator={false}
@@ -767,7 +757,6 @@ const Items: React.FC<{
collapsible={false}
name="" // No name for array items
schemaName={getSchemaName(itemsSchema)}
- qualifierMessage={getQualifierMessage(itemsSchema)}
schema={itemsSchema}
discriminator={false}
children={null}
@@ -927,7 +916,6 @@ const SchemaEdge: React.FC = ({
Array.isArray(required) ? required.includes(name) : required
}
schemaName={schema.allOf[0]}
- qualifierMessage={undefined}
schema={schema.allOf[0]}
discriminator={false}
children={null}
@@ -999,7 +987,6 @@ const SchemaEdge: React.FC = ({
name={name}
required={Array.isArray(required) ? required.includes(name) : required}
schemaName={mergedSchemaName}
- qualifierMessage={getQualifierMessage(mergedSchemas)}
schema={mergedSchemas}
discriminator={false}
children={null}
@@ -1013,7 +1000,6 @@ const SchemaEdge: React.FC = ({
name={name}
required={Array.isArray(required) ? required.includes(name) : required}
schemaName={schemaName}
- qualifierMessage={getQualifierMessage(schema)}
schema={schema}
discriminator={false}
children={null}
@@ -1217,7 +1203,6 @@ const SchemaNode: React.FC = ({
name={schema.type}
required={Boolean(schema.required)}
schemaName={schemaName}
- qualifierMessage={getQualifierMessage(schema)}
schema={schema}
discriminator={false}
children={null}
@@ -1230,7 +1215,9 @@ const SchemaNode: React.FC = ({
export default SchemaNode;
-type PrimitiveSchemaType = Exclude;
+type PrimitiveSchemaType =
+ | Exclude, "object" | "array">
+ | "null";
const PRIMITIVE_TYPES: Record = {
string: true,
diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/SchemaItem/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/SchemaItem/index.tsx
index aec98c7a1..83593cc78 100644
--- a/packages/docusaurus-theme-openapi-docs/src/theme/SchemaItem/index.tsx
+++ b/packages/docusaurus-theme-openapi-docs/src/theme/SchemaItem/index.tsx
@@ -13,6 +13,7 @@ import Markdown from "@theme/Markdown";
import { OPENAPI_SCHEMA_ITEM } from "@theme/translationIds";
import clsx from "clsx";
+import { getQualifierMessage } from "../../markdown/schema";
import { guard } from "../../markdown/utils";
export interface Props {
@@ -130,7 +131,11 @@ export default function SchemaItem(props: Props) {
>
));
- const renderQualifierMessage = guard(qualifierMessage, (message) => (
+ // Generate qualifierMessage from schema if not provided
+ const effectiveQualifierMessage =
+ qualifierMessage ?? (schema ? getQualifierMessage(schema) : undefined);
+
+ const renderQualifierMessage = guard(effectiveQualifierMessage, (message) => (
<>
{message}
>
diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/translationIds.ts b/packages/docusaurus-theme-openapi-docs/src/theme/translationIds.ts
index a607a13cd..1f51a0b24 100644
--- a/packages/docusaurus-theme-openapi-docs/src/theme/translationIds.ts
+++ b/packages/docusaurus-theme-openapi-docs/src/theme/translationIds.ts
@@ -79,6 +79,8 @@ export const OPENAPI_SCHEMA = {
};
export const OPENAPI_SCHEMA_ITEM = {
+ CHARACTERS: "theme.openapi.schemaItem.characters",
+ NON_EMPTY: "theme.openapi.schemaItem.nonEmpty",
REQUIRED: "theme.openapi.schemaItem.required",
DEPRECATED: "theme.openapi.schemaItem.deprecated",
NULLABLE: "theme.openapi.schemaItem.nullable",
@@ -90,6 +92,7 @@ export const OPENAPI_SCHEMA_ITEM = {
ENUM_VALUE: "theme.openapi.schemaItem.enumValue",
ENUM_DESCRIPTION: "theme.openapi.schemaItem.enumDescription",
POSSIBLE_VALUES: "theme.openapi.schemaItem.possibleValues",
+ EXPRESSION: "theme.openapi.schemaItem.expression",
ONE_OF: "theme.openapi.schemaItem.oneOf",
ANY_OF: "theme.openapi.schemaItem.anyOf",
};