diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/api/optionAPI.js b/src/core/plugins/json-schema-2020-12-samples/fn/api/optionAPI.js new file mode 100644 index 00000000000..0b766198e46 --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/fn/api/optionAPI.js @@ -0,0 +1,17 @@ +/** + * @prettier + */ + +import OptionRegistry from "../class/OptionRegistry" + +const registry = new OptionRegistry() + +const optionAPI = (optionName, optionValue) => { + if (typeof optionValue !== "undefined") { + registry.register(optionName, optionValue) + } + + return registry.get(optionName) +} + +export default optionAPI diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/class/OptionRegistry.js b/src/core/plugins/json-schema-2020-12-samples/fn/class/OptionRegistry.js new file mode 100644 index 00000000000..cad83bb1b52 --- /dev/null +++ b/src/core/plugins/json-schema-2020-12-samples/fn/class/OptionRegistry.js @@ -0,0 +1,16 @@ +/** + * @prettier + */ +import Registry from "./Registry" + +class OptionRegistry extends Registry { + #defaults = {} + + data = { ...this.#defaults } + + get defaults() { + return { ...this.#defaults } + } +} + +export default OptionRegistry diff --git a/src/core/plugins/json-schema-2020-12-samples/fn/index.js b/src/core/plugins/json-schema-2020-12-samples/fn/index.js index 5f0dbecaf80..334f10e9052 100644 --- a/src/core/plugins/json-schema-2020-12-samples/fn/index.js +++ b/src/core/plugins/json-schema-2020-12-samples/fn/index.js @@ -8,6 +8,7 @@ export { memoizedSampleFromSchema, memoizedCreateXMLExample, } from "./main" +export { default as optionAPI } from "./api/optionAPI" export { default as encoderAPI } from "./api/encoderAPI" export { default as formatAPI } from "./api/formatAPI" export { default as mediaTypeAPI } from "./api/mediaTypeAPI" diff --git a/src/core/plugins/json-schema-2020-12-samples/index.js b/src/core/plugins/json-schema-2020-12-samples/index.js index 1561a9655d2..72caab4a5e3 100644 --- a/src/core/plugins/json-schema-2020-12-samples/index.js +++ b/src/core/plugins/json-schema-2020-12-samples/index.js @@ -7,6 +7,7 @@ import { createXMLExample, memoizedSampleFromSchema, memoizedCreateXMLExample, + optionAPI, encoderAPI, mediaTypeAPI, formatAPI, @@ -28,6 +29,7 @@ const JSONSchema202012SamplesPlugin = ({ getSystem }) => { jsonSchema202012: { sampleFromSchema, sampleFromSchemaGeneric, + sampleOptionAPI: optionAPI, sampleEncoderAPI: encoderAPI, sampleFormatAPI: formatAPI, sampleMediaTypeAPI: mediaTypeAPI,