From 113996f627ab0e2b97d2b49b0198853d3d8acb95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Tue, 5 Sep 2023 14:13:53 +0200 Subject: [PATCH] feat(json-schema): expose API that generates examples from JSON Schema (#9190) This allows to use the samples API in a static way without fully instantiating SwaggerUI. Refs #9188 --- flavors/swagger-ui-react/index.jsx | 1 + src/core/index.js | 8 ++- .../fn/api/encoderAPI.js | 2 +- .../fn/api/formatAPI.js | 0 .../fn/api/mediaTypeAPI.js | 0 .../fn/class/EncoderRegistry.js | 0 .../fn/class/MediaTypeRegistry.js | 0 .../fn/class/Registry.js | 0 .../fn/core/constants.js | 0 .../fn/core/example.js | 0 .../fn/core/merge.js | 0 .../fn/core/predicates.js | 0 .../fn/core/random.js | 0 .../fn/core/type.js | 0 .../fn/core/utils.js | 0 .../fn/encoders/7bit.js | 0 .../fn/encoders/8bit.js | 0 .../fn/encoders/base16.js | 0 .../fn/encoders/base32.js | 0 .../fn/encoders/base64.js | 0 .../fn/encoders/binary.js | 0 .../fn/encoders/quoted-printable.js | 0 .../fn/generators/date-time.js | 0 .../fn/generators/date.js | 0 .../fn/generators/double.js | 0 .../fn/generators/duration.js | 0 .../fn/generators/email.js | 0 .../fn/generators/float.js | 0 .../fn/generators/hostname.js | 0 .../fn/generators/idn-email.js | 0 .../fn/generators/idn-hostname.js | 0 .../fn/generators/int32.js | 0 .../fn/generators/int64.js | 0 .../fn/generators/ipv4.js | 0 .../fn/generators/ipv6.js | 0 .../fn/generators/iri-reference.js | 0 .../fn/generators/iri.js | 0 .../fn/generators/json-pointer.js | 0 .../fn/generators/media-types/application.js | 0 .../fn/generators/media-types/audio.js | 0 .../fn/generators/media-types/image.js | 0 .../fn/generators/media-types/text.js | 0 .../fn/generators/media-types/video.js | 0 .../fn/generators/password.js | 0 .../fn/generators/regex.js | 0 .../fn/generators/relative-json-pointer.js | 0 .../fn/generators/time.js | 0 .../fn/generators/uri-reference.js | 0 .../fn/generators/uri-template.js | 0 .../fn/generators/uri.js | 0 .../fn/generators/uuid.js | 0 .../fn/get-json-sample-schema.js | 36 +++++++++++++ .../fn/get-sample-schema.js | 39 ++++++++++++++ .../fn/get-xml-sample-schema.js | 35 +++++++++++++ .../fn/get-yaml-sample-schema.js | 34 +++++++++++++ .../fn/index.js | 0 .../fn/main.js | 0 .../fn/types/array.js | 0 .../fn/types/boolean.js | 0 .../fn/types/index.js | 0 .../fn/types/integer.js | 0 .../fn/types/null.js | 0 .../fn/types/number.js | 0 .../fn/types/object.js | 0 .../fn/types/string.js | 0 .../json-schema-2020-12-samples/index.js | 45 ++++++++++++++++ src/core/plugins/json-schema-2020-12/index.js | 18 ------- .../fn/get-json-sample-schema.js | 0 .../fn/get-sample-schema.js | 0 .../fn/get-xml-sample-schema.js | 0 .../fn/get-yaml-sample-schema.js | 0 .../fn/index.js | 0 .../plugins/json-schema-5-samples/index.js | 51 +++++++++++++++++++ src/core/plugins/samples/index.js | 32 ------------ src/core/presets/apis/index.js | 9 +++- src/core/presets/base/index.js | 4 +- .../bugs/4557-default-parameter-values.jsx | 10 ++-- test/unit/components/parameter-row.jsx | 10 ++-- test/unit/components/response.jsx | 10 ++-- .../fn.js | 2 +- .../get-sample-schema.js | 22 ++++---- .../fn}/get-sample-schema.js | 10 ++-- .../fn/index.js | 2 +- 83 files changed, 292 insertions(+), 88 deletions(-) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/api/encoderAPI.js (78%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/api/formatAPI.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/api/mediaTypeAPI.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/class/EncoderRegistry.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/class/MediaTypeRegistry.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/class/Registry.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/constants.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/example.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/merge.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/predicates.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/random.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/type.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/core/utils.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/7bit.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/8bit.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/base16.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/base32.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/base64.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/binary.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/encoders/quoted-printable.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/date-time.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/date.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/double.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/duration.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/email.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/float.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/hostname.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/idn-email.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/idn-hostname.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/int32.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/int64.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/ipv4.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/ipv6.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/iri-reference.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/iri.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/json-pointer.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/media-types/application.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/media-types/audio.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/media-types/image.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/media-types/text.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/media-types/video.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/password.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/regex.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/relative-json-pointer.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/time.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/uri-reference.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/uri-template.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/uri.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/generators/uuid.js (100%) create mode 100644 src/core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema.js create mode 100644 src/core/plugins/json-schema-2020-12-samples/fn/get-sample-schema.js create mode 100644 src/core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema.js create mode 100644 src/core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema.js rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/index.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/main.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/array.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/boolean.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/index.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/integer.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/null.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/number.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/object.js (100%) rename src/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn/types/string.js (100%) create mode 100644 src/core/plugins/json-schema-2020-12-samples/index.js rename src/core/plugins/{samples => json-schema-5-samples}/fn/get-json-sample-schema.js (100%) rename src/core/plugins/{samples => json-schema-5-samples}/fn/get-sample-schema.js (100%) rename src/core/plugins/{samples => json-schema-5-samples}/fn/get-xml-sample-schema.js (100%) rename src/core/plugins/{samples => json-schema-5-samples}/fn/get-yaml-sample-schema.js (100%) rename src/core/plugins/{samples => json-schema-5-samples}/fn/index.js (100%) create mode 100644 src/core/plugins/json-schema-5-samples/index.js delete mode 100644 src/core/plugins/samples/index.js rename test/unit/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-2020-12-samples}/fn.js (99%) rename test/unit/core/plugins/{samples/fn => json-schema-2020-12-samples}/get-sample-schema.js (82%) rename test/unit/core/plugins/{json-schema-2020-12/samples-extensions => json-schema-5-samples/fn}/get-sample-schema.js (89%) rename test/unit/core/plugins/{samples => json-schema-5-samples}/fn/index.js (99%) diff --git a/flavors/swagger-ui-react/index.jsx b/flavors/swagger-ui-react/index.jsx index 00b20801..0c5ec434 100644 --- a/flavors/swagger-ui-react/index.jsx +++ b/flavors/swagger-ui-react/index.jsx @@ -169,6 +169,7 @@ SwaggerUI.defaultProps = { oauth2RedirectUrl: undefined, } +SwaggerUI.System = SwaggerUIConstructor.System SwaggerUI.presets = SwaggerUIConstructor.presets SwaggerUI.plugins = SwaggerUIConstructor.plugins diff --git a/src/core/index.js b/src/core/index.js index df2bc2cb..4c50796d 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -12,13 +12,14 @@ import ErrPlugin from "./plugins/err" import FilterPlugin from "./plugins/filter" import IconsPlugin from "./plugins/icons" import JSONSchema202012Plugin from "./plugins/json-schema-2020-12" +import JSONSchema202012SamplesPlugin from "./plugins/json-schema-2020-12-samples" import LayoutPlugin from "./plugins/layout" import LogsPlugin from "./plugins/logs" import OpenAPI30Plugin from "./plugins/oas3" import OpenAPI31Plugin from "./plugins/oas3" import OnCompletePlugin from "./plugins/on-complete" import RequestSnippetsPlugin from "./plugins/request-snippets" -import SamplesPlugin from "./plugins/samples" +import JSONSchema5SamplesPlugin from "./plugins/json-schema-5-samples" import SpecPlugin from "./plugins/spec" import SwaggerClientPlugin from "./plugins/swagger-client" import UtilPlugin from "./plugins/util" @@ -239,6 +240,8 @@ export default function SwaggerUI(opts) { return system } +SwaggerUI.System = System + SwaggerUI.presets = { base: BasePreset, apis: ApisPreset, @@ -251,14 +254,15 @@ SwaggerUI.plugins = { Err: ErrPlugin, Filter: FilterPlugin, Icons: IconsPlugin, + JSONSchema5Samples: JSONSchema5SamplesPlugin, JSONSchema202012: JSONSchema202012Plugin, + JSONSchema202012Samples: JSONSchema202012SamplesPlugin, Layout: LayoutPlugin, Logs: LogsPlugin, OpenAPI30: OpenAPI30Plugin, OpenAPI31: OpenAPI31Plugin, OnComplete: OnCompletePlugin, RequestSnippets: RequestSnippetsPlugin, - Samples: SamplesPlugin, Spec: SpecPlugin, SwaggerClient: SwaggerClientPlugin, Util: UtilPlugin, diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/encoderAPI.js b/src/core/plugins/json-schema-2020-12-samples/fn/api/encoderAPI.js similarity index 78% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/encoderAPI.js rename to src/core/plugins/json-schema-2020-12-samples/fn/api/encoderAPI.js index 4d4ee996..81e408da 100644 --- a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/encoderAPI.js +++ b/src/core/plugins/json-schema-2020-12-samples/fn/api/encoderAPI.js @@ -2,7 +2,7 @@ * @prettier */ -import EncoderRegistry from "core/plugins/json-schema-2020-12/samples-extensions/fn/class/EncoderRegistry" +import EncoderRegistry from "../class/EncoderRegistry" const registry = new EncoderRegistry() diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/formatAPI.js b/src/core/plugins/json-schema-2020-12-samples/fn/api/formatAPI.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/formatAPI.js rename to src/core/plugins/json-schema-2020-12-samples/fn/api/formatAPI.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/mediaTypeAPI.js b/src/core/plugins/json-schema-2020-12-samples/fn/api/mediaTypeAPI.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/api/mediaTypeAPI.js rename to src/core/plugins/json-schema-2020-12-samples/fn/api/mediaTypeAPI.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/class/EncoderRegistry.js b/src/core/plugins/json-schema-2020-12-samples/fn/class/EncoderRegistry.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/class/EncoderRegistry.js rename to src/core/plugins/json-schema-2020-12-samples/fn/class/EncoderRegistry.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/class/MediaTypeRegistry.js b/src/core/plugins/json-schema-2020-12-samples/fn/class/MediaTypeRegistry.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/class/MediaTypeRegistry.js rename to src/core/plugins/json-schema-2020-12-samples/fn/class/MediaTypeRegistry.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/class/Registry.js b/src/core/plugins/json-schema-2020-12-samples/fn/class/Registry.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/class/Registry.js rename to src/core/plugins/json-schema-2020-12-samples/fn/class/Registry.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/constants.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/constants.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/constants.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/constants.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/example.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/example.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/example.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/example.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/merge.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/merge.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/merge.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/predicates.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/predicates.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/predicates.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/predicates.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/random.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/random.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/random.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/random.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/type.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/type.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/type.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/type.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/utils.js b/src/core/plugins/json-schema-2020-12-samples/fn/core/utils.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/core/utils.js rename to src/core/plugins/json-schema-2020-12-samples/fn/core/utils.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/7bit.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/7bit.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/7bit.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/7bit.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/8bit.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/8bit.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/8bit.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/8bit.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base16.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base16.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base16.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/base16.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base32.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base32.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base32.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/base32.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base64.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base64.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/base64.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/base64.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/binary.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/binary.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/binary.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/binary.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/quoted-printable.js b/src/core/plugins/json-schema-2020-12-samples/fn/encoders/quoted-printable.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/encoders/quoted-printable.js rename to src/core/plugins/json-schema-2020-12-samples/fn/encoders/quoted-printable.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/date-time.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/date-time.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/date-time.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/date-time.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/date.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/date.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/date.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/date.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/double.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/double.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/double.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/double.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/duration.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/duration.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/duration.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/duration.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/email.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/email.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/email.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/email.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/float.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/float.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/float.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/float.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/hostname.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/hostname.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/hostname.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/hostname.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/idn-email.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-email.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/idn-email.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-email.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/idn-hostname.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-hostname.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/idn-hostname.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-hostname.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/int32.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/int32.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/int32.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/int32.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/int64.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/int64.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/int64.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/int64.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/ipv4.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv4.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/ipv4.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv4.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/ipv6.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv6.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/ipv6.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv6.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/iri-reference.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/iri-reference.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/iri-reference.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/iri-reference.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/iri.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/iri.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/iri.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/iri.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/json-pointer.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/json-pointer.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/json-pointer.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/json-pointer.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/application.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/application.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/application.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/application.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/audio.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/audio.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/audio.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/audio.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/image.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/image.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/image.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/image.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/text.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/text.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/text.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/text.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/video.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/video.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/media-types/video.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/video.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/password.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/password.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/password.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/password.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/regex.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/regex.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/regex.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/regex.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/relative-json-pointer.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/relative-json-pointer.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/relative-json-pointer.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/relative-json-pointer.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/time.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/time.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/time.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/time.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri-reference.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-reference.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri-reference.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-reference.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri-template.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-template.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri-template.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-template.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/uri.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uri.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/uri.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uuid.js b/src/core/plugins/json-schema-2020-12-samples/fn/generators/uuid.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/generators/uuid.js rename to src/core/plugins/json-schema-2020-12-samples/fn/generators/uuid.js diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema.js b/src/core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema.js new file mode 100644 index 00000000..84e09f59 --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema.js @@ -0,0 +1,36 @@ +/** + * @prettier + */ +import some from "lodash/some" + +const shouldStringifyTypesConfig = [ + { + when: /json/, + shouldStringifyTypes: ["string"], + }, +] +const defaultStringifyTypes = ["object"] +const makeGetJsonSampleSchema = + (getSystem) => (schema, config, contentType, exampleOverride) => { + const { fn } = getSystem() + const res = fn.jsonSchema202012.memoizedSampleFromSchema( + schema, + config, + exampleOverride + ) + const resType = typeof res + + const typesToStringify = shouldStringifyTypesConfig.reduce( + (types, nextConfig) => + nextConfig.when.test(contentType) + ? [...types, ...nextConfig.shouldStringifyTypes] + : types, + defaultStringifyTypes + ) + + return some(typesToStringify, (x) => x === resType) + ? JSON.stringify(res, null, 2) + : res + } + +export default makeGetJsonSampleSchema diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/get-sample-schema.js b/src/core/plugins/json-schema-2020-12-samples/fn/get-sample-schema.js new file mode 100644 index 00000000..ea3063af --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/fn/get-sample-schema.js @@ -0,0 +1,39 @@ +/** + * @prettier + */ +const makeGetSampleSchema = + (getSystem) => + (schema, contentType = "", config = {}, exampleOverride = undefined) => { + const { fn } = getSystem() + + if (typeof schema?.toJS === "function") { + schema = schema.toJS() + } + if (typeof exampleOverride?.toJS === "function") { + exampleOverride = exampleOverride.toJS() + } + + if (/xml/.test(contentType)) { + return fn.jsonSchema202012.getXmlSampleSchema( + schema, + config, + exampleOverride + ) + } + if (/(yaml|yml)/.test(contentType)) { + return fn.jsonSchema202012.getYamlSampleSchema( + schema, + config, + contentType, + exampleOverride + ) + } + return fn.jsonSchema202012.getJsonSampleSchema( + schema, + config, + contentType, + exampleOverride + ) + } + +export default makeGetSampleSchema diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema.js b/src/core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema.js new file mode 100644 index 00000000..d2c67a5c --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema.js @@ -0,0 +1,35 @@ +/** + * @prettier + */ +const makeGetXmlSampleSchema = + (getSystem) => (schema, config, exampleOverride) => { + const { fn } = getSystem() + + if (schema && !schema.xml) { + schema.xml = {} + } + if (schema && !schema.xml.name) { + if ( + !schema.$$ref && + (schema.type || + schema.items || + schema.properties || + schema.additionalProperties) + ) { + // eslint-disable-next-line quotes + return '\n' + } + if (schema.$$ref) { + let match = schema.$$ref.match(/\S*\/(\S+)$/) + schema.xml.name = match[1] + } + } + + return fn.jsonSchema202012.memoizedCreateXMLExample( + schema, + config, + exampleOverride + ) + } + +export default makeGetXmlSampleSchema diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema.js b/src/core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema.js new file mode 100644 index 00000000..2976c33c --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema.js @@ -0,0 +1,34 @@ +/** + * @prettier + */ +import YAML, { JSON_SCHEMA } from "js-yaml" + +const makeGetYamlSampleSchema = + (getSystem) => (schema, config, contentType, exampleOverride) => { + const { fn } = getSystem() + const jsonExample = fn.jsonSchema202012.getJsonSampleSchema( + schema, + config, + contentType, + exampleOverride + ) + let yamlString + try { + yamlString = YAML.dump( + YAML.load(jsonExample), + { + lineWidth: -1, // don't generate line folds + }, + { schema: JSON_SCHEMA } + ) + if (yamlString[yamlString.length - 1] === "\n") { + yamlString = yamlString.slice(0, yamlString.length - 1) + } + } catch (e) { + console.error(e) + return "error: could not generate yaml example" + } + return yamlString.replace(/\t/g, " ") + } + +export default makeGetYamlSampleSchema diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/index.js b/src/core/plugins/json-schema-2020-12-samples/fn/index.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/index.js rename to src/core/plugins/json-schema-2020-12-samples/fn/index.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/main.js b/src/core/plugins/json-schema-2020-12-samples/fn/main.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/main.js rename to src/core/plugins/json-schema-2020-12-samples/fn/main.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/array.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/array.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/array.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/array.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/boolean.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/boolean.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/boolean.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/boolean.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/index.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/index.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/index.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/index.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/integer.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/integer.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/integer.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/integer.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/null.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/null.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/null.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/null.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/number.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/number.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/number.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/number.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/object.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/object.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/object.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/object.js diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/string.js b/src/core/plugins/json-schema-2020-12-samples/fn/types/string.js similarity index 100% rename from src/core/plugins/json-schema-2020-12/samples-extensions/fn/types/string.js rename to src/core/plugins/json-schema-2020-12-samples/fn/types/string.js diff --git a/src/core/plugins/json-schema-2020-12-samples/index.js b/src/core/plugins/json-schema-2020-12-samples/index.js new file mode 100644 index 00000000..eb60b4ac --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/index.js @@ -0,0 +1,45 @@ +/** + * @prettier + */ +import { + sampleFromSchema, + sampleFromSchemaGeneric, + createXMLExample, + memoizedSampleFromSchema, + memoizedCreateXMLExample, + encoderAPI, + mediaTypeAPI, + formatAPI, +} from "./fn/index" +import makeGetJsonSampleSchema from "./fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "./fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "./fn/get-xml-sample-schema" +import makeGetSampleSchema from "./fn/get-sample-schema" + +const JSONSchema202012SamplesPlugin = ({ getSystem }) => { + const getJsonSampleSchema = makeGetJsonSampleSchema(getSystem) + const getYamlSampleSchema = makeGetYamlSampleSchema(getSystem) + const getXmlSampleSchema = makeGetXmlSampleSchema(getSystem) + const getSampleSchema = makeGetSampleSchema(getSystem) + + return { + fn: { + jsonSchema202012: { + sampleFromSchema, + sampleFromSchemaGeneric, + sampleEncoderAPI: encoderAPI, + sampleFormatAPI: formatAPI, + sampleMediaTypeAPI: mediaTypeAPI, + createXMLExample, + memoizedSampleFromSchema, + memoizedCreateXMLExample, + getJsonSampleSchema, + getYamlSampleSchema, + getXmlSampleSchema, + getSampleSchema, + }, + }, + } +} + +export default JSONSchema202012SamplesPlugin diff --git a/src/core/plugins/json-schema-2020-12/index.js b/src/core/plugins/json-schema-2020-12/index.js index aceee751..816357e3 100644 --- a/src/core/plugins/json-schema-2020-12/index.js +++ b/src/core/plugins/json-schema-2020-12/index.js @@ -44,16 +44,6 @@ import Accordion from "./components/Accordion/Accordion" import ExpandDeepButton from "./components/ExpandDeepButton/ExpandDeepButton" import ChevronRightIcon from "./components/icons/ChevronRight" import { upperFirst, hasKeyword, isExpandable } from "./fn" -import { - sampleFromSchema, - sampleFromSchemaGeneric, - createXMLExample, - memoizedSampleFromSchema, - memoizedCreateXMLExample, - encoderAPI, - mediaTypeAPI, - formatAPI, -} from "./samples-extensions/fn/index" import { JSONSchemaDeepExpansionContext } from "./context" import { useFn, useConfig, useComponent, useIsExpandedDeeply } from "./hooks" import { withJSONSchemaContext } from "./hoc" @@ -114,14 +104,6 @@ const JSONSchema202012Plugin = () => ({ useConfig, useComponent, useIsExpandedDeeply, - sampleFromSchema, - sampleFromSchemaGeneric, - sampleEncoderAPI: encoderAPI, - sampleFormatAPI: formatAPI, - sampleMediaTypeAPI: mediaTypeAPI, - createXMLExample, - memoizedSampleFromSchema, - memoizedCreateXMLExample, }, }, }) diff --git a/src/core/plugins/samples/fn/get-json-sample-schema.js b/src/core/plugins/json-schema-5-samples/fn/get-json-sample-schema.js similarity index 100% rename from src/core/plugins/samples/fn/get-json-sample-schema.js rename to src/core/plugins/json-schema-5-samples/fn/get-json-sample-schema.js diff --git a/src/core/plugins/samples/fn/get-sample-schema.js b/src/core/plugins/json-schema-5-samples/fn/get-sample-schema.js similarity index 100% rename from src/core/plugins/samples/fn/get-sample-schema.js rename to src/core/plugins/json-schema-5-samples/fn/get-sample-schema.js diff --git a/src/core/plugins/samples/fn/get-xml-sample-schema.js b/src/core/plugins/json-schema-5-samples/fn/get-xml-sample-schema.js similarity index 100% rename from src/core/plugins/samples/fn/get-xml-sample-schema.js rename to src/core/plugins/json-schema-5-samples/fn/get-xml-sample-schema.js diff --git a/src/core/plugins/samples/fn/get-yaml-sample-schema.js b/src/core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema.js similarity index 100% rename from src/core/plugins/samples/fn/get-yaml-sample-schema.js rename to src/core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema.js diff --git a/src/core/plugins/samples/fn/index.js b/src/core/plugins/json-schema-5-samples/fn/index.js similarity index 100% rename from src/core/plugins/samples/fn/index.js rename to src/core/plugins/json-schema-5-samples/fn/index.js diff --git a/src/core/plugins/json-schema-5-samples/index.js b/src/core/plugins/json-schema-5-samples/index.js new file mode 100644 index 00000000..aaabf231 --- /dev/null +++ b/src/core/plugins/json-schema-5-samples/index.js @@ -0,0 +1,51 @@ +/** + * @prettier + */ +import { + sampleFromSchema, + inferSchema, + sampleFromSchemaGeneric, + createXMLExample, + memoizedCreateXMLExample, + memoizedSampleFromSchema, +} from "./fn/index" +import makeGetJsonSampleSchema from "./fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "./fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "./fn/get-xml-sample-schema" +import makeGetSampleSchema from "./fn/get-sample-schema" + +const JSONSchema5SamplesPlugin = ({ getSystem }) => { + const getJsonSampleSchema = makeGetJsonSampleSchema(getSystem) + const getYamlSampleSchema = makeGetYamlSampleSchema(getSystem) + const getXmlSampleSchema = makeGetXmlSampleSchema(getSystem) + const getSampleSchema = makeGetSampleSchema(getSystem) + + return { + fn: { + jsonSchema5: { + inferSchema, + sampleFromSchema, + sampleFromSchemaGeneric, + createXMLExample, + memoizedSampleFromSchema, + memoizedCreateXMLExample, + getJsonSampleSchema, + getYamlSampleSchema, + getXmlSampleSchema, + getSampleSchema, + }, + inferSchema, + sampleFromSchema, + sampleFromSchemaGeneric, + createXMLExample, + memoizedSampleFromSchema, + memoizedCreateXMLExample, + getJsonSampleSchema, + getYamlSampleSchema, + getXmlSampleSchema, + getSampleSchema, + }, + } +} + +export default JSONSchema5SamplesPlugin diff --git a/src/core/plugins/samples/index.js b/src/core/plugins/samples/index.js deleted file mode 100644 index cb56c2db..00000000 --- a/src/core/plugins/samples/index.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @prettier - */ -import { - sampleFromSchema, - inferSchema, - sampleFromSchemaGeneric, - createXMLExample, - memoizedCreateXMLExample, - memoizedSampleFromSchema, -} from "./fn/index" -import makeGetJsonSampleSchema from "./fn/get-json-sample-schema" -import makeGetYamlSampleSchema from "./fn/get-yaml-sample-schema" -import makeGetXmlSampleSchema from "./fn/get-xml-sample-schema" -import makeGetSampleSchema from "./fn/get-sample-schema" - -const SamplesPlugin = ({ getSystem }) => ({ - fn: { - inferSchema, - sampleFromSchema, - sampleFromSchemaGeneric, - createXMLExample, - memoizedSampleFromSchema, - memoizedCreateXMLExample, - getJsonSampleSchema: makeGetJsonSampleSchema(getSystem), - getYamlSampleSchema: makeGetYamlSampleSchema(getSystem), - getXmlSampleSchema: makeGetXmlSampleSchema(getSystem), - getSampleSchema: makeGetSampleSchema(getSystem), - }, -}) - -export default SamplesPlugin diff --git a/src/core/presets/apis/index.js b/src/core/presets/apis/index.js index a2966ba5..74d0e802 100644 --- a/src/core/presets/apis/index.js +++ b/src/core/presets/apis/index.js @@ -5,7 +5,14 @@ import BasePreset from "core/presets/base" import OpenAPI30Plugin from "core/plugins/oas3" import OpenAPI31Plugin from "core/plugins/oas31" import JSONSchema202012Plugin from "core/plugins/json-schema-2020-12" +import JSONSchema202012SamplesPlugin from "core/plugins/json-schema-2020-12-samples" export default function PresetApis() { - return [BasePreset, OpenAPI30Plugin, JSONSchema202012Plugin, OpenAPI31Plugin] + return [ + BasePreset, + OpenAPI30Plugin, + JSONSchema202012Plugin, + JSONSchema202012SamplesPlugin, + OpenAPI31Plugin, + ] } diff --git a/src/core/presets/base/index.js b/src/core/presets/base/index.js index 1fdc49c9..30843c30 100644 --- a/src/core/presets/base/index.js +++ b/src/core/presets/base/index.js @@ -11,7 +11,7 @@ import LayoutPlugin from "core/plugins/layout" import LogsPlugin from "core/plugins/logs" import OnCompletePlugin from "core/plugins/on-complete" import RequestSnippetsPlugin from "core/plugins/request-snippets" -import SamplesPlugin from "core/plugins/samples" +import JSONSchema5SamplesPlugin from "core/plugins/json-schema-5-samples" import SpecPlugin from "core/plugins/spec" import SwaggerClientPlugin from "core/plugins/swagger-client" import UtilPlugin from "core/plugins/util" @@ -32,7 +32,7 @@ const BasePreset = () => [ ErrPlugin, IconsPlugin, LayoutPlugin, - SamplesPlugin, + JSONSchema5SamplesPlugin, CoreComponentsPlugin, FormComponentsPlugin, SwaggerClientPlugin, diff --git a/test/unit/bugs/4557-default-parameter-values.jsx b/test/unit/bugs/4557-default-parameter-values.jsx index 3cba3fb4..c2a65a37 100644 --- a/test/unit/bugs/4557-default-parameter-values.jsx +++ b/test/unit/bugs/4557-default-parameter-values.jsx @@ -9,11 +9,11 @@ import ParameterRow from "core/components/parameter-row" import { memoizedSampleFromSchema, memoizedCreateXMLExample, -} from "core/plugins/samples/fn/index" -import makeGetSampleSchema from "core/plugins/samples/fn/get-sample-schema" -import makeGetJsonSampleSchema from "core/plugins/samples/fn/get-json-sample-schema" -import makeGetYamlSampleSchema from "core/plugins/samples/fn/get-yaml-sample-schema" -import makeGetXmlSampleSchema from "core/plugins/samples/fn/get-xml-sample-schema" +} from "core/plugins/json-schema-5-samples/fn/index" +import makeGetSampleSchema from "core/plugins/json-schema-5-samples/fn/get-sample-schema" +import makeGetJsonSampleSchema from "core/plugins/json-schema-5-samples/fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-xml-sample-schema" describe("bug #4557: default parameter values", function () { it("should apply a Swagger 2.0 default value", function () { diff --git a/test/unit/components/parameter-row.jsx b/test/unit/components/parameter-row.jsx index fca9b3a8..d266cb9b 100644 --- a/test/unit/components/parameter-row.jsx +++ b/test/unit/components/parameter-row.jsx @@ -9,11 +9,11 @@ import ParameterRow from "core/components/parameter-row" import { memoizedSampleFromSchema, memoizedCreateXMLExample, -} from "core/plugins/samples/fn/index" -import makeGetSampleSchema from "core/plugins/samples/fn/get-sample-schema" -import makeGetJsonSampleSchema from "core/plugins/samples/fn/get-json-sample-schema" -import makeGetYamlSampleSchema from "core/plugins/samples/fn/get-yaml-sample-schema" -import makeGetXmlSampleSchema from "core/plugins/samples/fn/get-xml-sample-schema" +} from "core/plugins/json-schema-5-samples/fn/index" +import makeGetSampleSchema from "core/plugins/json-schema-5-samples/fn/get-sample-schema" +import makeGetJsonSampleSchema from "core/plugins/json-schema-5-samples/fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-xml-sample-schema" describe("", () => { const createProps = ({ param, isOAS3 }) => { diff --git a/test/unit/components/response.jsx b/test/unit/components/response.jsx index f82ab050..626b16ab 100644 --- a/test/unit/components/response.jsx +++ b/test/unit/components/response.jsx @@ -11,11 +11,11 @@ import { inferSchema, memoizedSampleFromSchema, memoizedCreateXMLExample, -} from "core/plugins/samples/fn/index" -import makeGetSampleSchema from "core/plugins/samples/fn/get-sample-schema" -import makeGetJsonSampleSchema from "core/plugins/samples/fn/get-json-sample-schema" -import makeGetYamlSampleSchema from "core/plugins/samples/fn/get-yaml-sample-schema" -import makeGetXmlSampleSchema from "core/plugins/samples/fn/get-xml-sample-schema" +} from "core/plugins/json-schema-5-samples/fn/index" +import makeGetSampleSchema from "core/plugins/json-schema-5-samples/fn/get-sample-schema" +import makeGetJsonSampleSchema from "core/plugins/json-schema-5-samples/fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-xml-sample-schema" describe("", function () { const dummyComponent = () => null diff --git a/test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js b/test/unit/core/plugins/json-schema-2020-12-samples/fn.js similarity index 99% rename from test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js rename to test/unit/core/plugins/json-schema-2020-12-samples/fn.js index 936e3f9d..5d49a061 100644 --- a/test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js +++ b/test/unit/core/plugins/json-schema-2020-12-samples/fn.js @@ -8,7 +8,7 @@ import { sampleFromSchema, memoizedCreateXMLExample, memoizedSampleFromSchema, -} from "core/plugins/json-schema-2020-12/samples-extensions/fn" +} from "core/plugins/json-schema-2020-12-samples/fn" describe("sampleFromSchema", () => { it("should return appropriate example for primitive types + format", function () { diff --git a/test/unit/core/plugins/samples/fn/get-sample-schema.js b/test/unit/core/plugins/json-schema-2020-12-samples/get-sample-schema.js similarity index 82% rename from test/unit/core/plugins/samples/fn/get-sample-schema.js rename to test/unit/core/plugins/json-schema-2020-12-samples/get-sample-schema.js index 581dba0d..9a2f1dfc 100644 --- a/test/unit/core/plugins/samples/fn/get-sample-schema.js +++ b/test/unit/core/plugins/json-schema-2020-12-samples/get-sample-schema.js @@ -4,21 +4,23 @@ import { memoizedSampleFromSchema, memoizedCreateXMLExample, -} from "core/plugins/samples/fn/index" -import makeGetSampleSchema from "core/plugins/samples/fn/get-sample-schema" -import makeGetJsonSampleSchema from "core/plugins/samples/fn/get-json-sample-schema" -import makeGetYamlSampleSchema from "core/plugins/samples/fn/get-yaml-sample-schema" -import makeGetXmlSampleSchema from "core/plugins/samples/fn/get-xml-sample-schema" +} from "core/plugins/json-schema-2020-12-samples/fn/index" +import makeGetSampleSchema from "core/plugins/json-schema-2020-12-samples/fn/get-sample-schema" +import makeGetJsonSampleSchema from "core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema" describe("getSampleSchema", () => { const oriDate = Date const getSystem = () => ({ fn: { - memoizedSampleFromSchema, - memoizedCreateXMLExample, - getJsonSampleSchema: makeGetJsonSampleSchema(getSystem), - getYamlSampleSchema: makeGetYamlSampleSchema(getSystem), - getXmlSampleSchema: makeGetXmlSampleSchema(getSystem), + jsonSchema202012: { + memoizedSampleFromSchema, + memoizedCreateXMLExample, + getJsonSampleSchema: makeGetJsonSampleSchema(getSystem), + getYamlSampleSchema: makeGetYamlSampleSchema(getSystem), + getXmlSampleSchema: makeGetXmlSampleSchema(getSystem), + }, }, }) const getSampleSchema = makeGetSampleSchema(getSystem) diff --git a/test/unit/core/plugins/json-schema-2020-12/samples-extensions/get-sample-schema.js b/test/unit/core/plugins/json-schema-5-samples/fn/get-sample-schema.js similarity index 89% rename from test/unit/core/plugins/json-schema-2020-12/samples-extensions/get-sample-schema.js rename to test/unit/core/plugins/json-schema-5-samples/fn/get-sample-schema.js index dd4332d7..f08c4c0a 100644 --- a/test/unit/core/plugins/json-schema-2020-12/samples-extensions/get-sample-schema.js +++ b/test/unit/core/plugins/json-schema-5-samples/fn/get-sample-schema.js @@ -4,11 +4,11 @@ import { memoizedSampleFromSchema, memoizedCreateXMLExample, -} from "core/plugins/json-schema-2020-12/samples-extensions/fn" -import makeGetSampleSchema from "core/plugins/samples/fn/get-sample-schema" -import makeGetJsonSampleSchema from "core/plugins/samples/fn/get-json-sample-schema" -import makeGetYamlSampleSchema from "core/plugins/samples/fn/get-yaml-sample-schema" -import makeGetXmlSampleSchema from "core/plugins/samples/fn/get-xml-sample-schema" +} from "core/plugins/json-schema-5-samples/fn/index" +import makeGetSampleSchema from "core/plugins/json-schema-5-samples/fn/get-sample-schema" +import makeGetJsonSampleSchema from "core/plugins/json-schema-5-samples/fn/get-json-sample-schema" +import makeGetYamlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema" +import makeGetXmlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-xml-sample-schema" describe("getSampleSchema", () => { const oriDate = Date diff --git a/test/unit/core/plugins/samples/fn/index.js b/test/unit/core/plugins/json-schema-5-samples/fn/index.js similarity index 99% rename from test/unit/core/plugins/samples/fn/index.js rename to test/unit/core/plugins/json-schema-5-samples/fn/index.js index f4e0c686..1dfdb3d3 100644 --- a/test/unit/core/plugins/samples/fn/index.js +++ b/test/unit/core/plugins/json-schema-5-samples/fn/index.js @@ -1,5 +1,5 @@ import { fromJS } from "immutable" -import { createXMLExample, sampleFromSchema, memoizedCreateXMLExample, memoizedSampleFromSchema } from "core/plugins/samples/fn/index" +import { createXMLExample, sampleFromSchema, memoizedCreateXMLExample, memoizedSampleFromSchema } from "core/plugins/json-schema-5-samples/fn/index" describe("sampleFromSchema", () => { it("handles Immutable.js objects for nested schemas", function () {