From 01d2376b5f815439f6df85e619316064b7739639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Thu, 11 May 2023 17:50:17 +0200 Subject: [PATCH] feat(oas31): add support for Schema Object externalDocs keyword (#8659) Refs #8513 --- src/core/plugins/oas31/index.js | 2 + .../keywords/Discriminator/Discriminator.jsx | 3 + .../components/keywords/ExternalDocs.jsx | 101 ++++++++++++++++++ .../components/keywords/Xml.jsx | 26 ++--- .../json-schema-2020-12-extensions/fn.js | 6 +- .../wrap-components/keywords/Default.jsx | 4 + 6 files changed, 129 insertions(+), 13 deletions(-) create mode 100644 src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/ExternalDocs.jsx diff --git a/src/core/plugins/oas31/index.js b/src/core/plugins/oas31/index.js index 2b235c92..e2f6bc03 100644 --- a/src/core/plugins/oas31/index.js +++ b/src/core/plugins/oas31/index.js @@ -53,6 +53,7 @@ import { selectLicenseUrl as selectOAS31LicenseUrl } from "./selectors" import JSONSchema202012KeywordExample from "./json-schema-2020-12-extensions/components/keywords/Example" import JSONSchema202012KeywordXml from "./json-schema-2020-12-extensions/components/keywords/Xml" import JSONSchema202012KeywordDiscriminator from "./json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator" +import JSONSchema202012KeywordExternalDocs from "./json-schema-2020-12-extensions/components/keywords/ExternalDocs" import JSONSchema202012KeywordDescriptionWrapper from "./json-schema-2020-12-extensions/wrap-components/keywords/Description" import JSONSchema202012KeywordDefaultWrapper from "./json-schema-2020-12-extensions/wrap-components/keywords/Default" import { makeIsExpandable } from "./json-schema-2020-12-extensions/fn" @@ -88,6 +89,7 @@ const OAS31Plugin = ({ getSystem }) => { JSONSchema202012KeywordExample, JSONSchema202012KeywordXml, JSONSchema202012KeywordDiscriminator, + JSONSchema202012KeywordExternalDocs, }, wrapComponents: { InfoContainer: InfoWrapper, diff --git a/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx b/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx index 21c13b85..900f076a 100644 --- a/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx +++ b/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx @@ -52,6 +52,9 @@ const Discriminator = ({ schema, getSystem }) => { {discriminator.propertyName} )} + + object + diff --git a/src/core/plugins/oas31/json-schema-2020-12-extensions/fn.js b/src/core/plugins/oas31/json-schema-2020-12-extensions/fn.js index 3693ada2..7d9b0cfd 100644 --- a/src/core/plugins/oas31/json-schema-2020-12-extensions/fn.js +++ b/src/core/plugins/oas31/json-schema-2020-12-extensions/fn.js @@ -9,5 +9,9 @@ export const makeIsExpandable = (original, { fn }) => { const { hasKeyword } = fn.jsonSchema202012 return (schema) => - original(schema) || hasKeyword(schema, "example") || schema?.xml + original(schema) || + hasKeyword(schema, "example") || + schema?.xml || + schema?.discriminator || + schema?.externalDocs } diff --git a/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx b/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx index 92c46ff9..abd3b9dc 100644 --- a/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx +++ b/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx @@ -12,12 +12,16 @@ const DefaultWrapper = createOnlyOAS31ComponentWrapper( ) const KeywordXml = getComponent("JSONSchema202012KeywordXml") const KeywordExample = getComponent("JSONSchema202012KeywordExample") + const KeywordExternalDocs = getComponent( + "JSONSchema202012KeywordExternalDocs" + ) return ( <> + )