feat(json-schema-2020-12-sample): introduce option API (#9795)

Refs #9739
This commit is contained in:
Vladimír Gorej
2024-04-09 14:50:47 +02:00
committed by GitHub
parent 1267c04230
commit 7db9c9879b
4 changed files with 36 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -8,6 +8,7 @@ export {
memoizedSampleFromSchema, memoizedSampleFromSchema,
memoizedCreateXMLExample, memoizedCreateXMLExample,
} from "./main" } from "./main"
export { default as optionAPI } from "./api/optionAPI"
export { default as encoderAPI } from "./api/encoderAPI" export { default as encoderAPI } from "./api/encoderAPI"
export { default as formatAPI } from "./api/formatAPI" export { default as formatAPI } from "./api/formatAPI"
export { default as mediaTypeAPI } from "./api/mediaTypeAPI" export { default as mediaTypeAPI } from "./api/mediaTypeAPI"

View File

@@ -7,6 +7,7 @@ import {
createXMLExample, createXMLExample,
memoizedSampleFromSchema, memoizedSampleFromSchema,
memoizedCreateXMLExample, memoizedCreateXMLExample,
optionAPI,
encoderAPI, encoderAPI,
mediaTypeAPI, mediaTypeAPI,
formatAPI, formatAPI,
@@ -28,6 +29,7 @@ const JSONSchema202012SamplesPlugin = ({ getSystem }) => {
jsonSchema202012: { jsonSchema202012: {
sampleFromSchema, sampleFromSchema,
sampleFromSchemaGeneric, sampleFromSchemaGeneric,
sampleOptionAPI: optionAPI,
sampleEncoderAPI: encoderAPI, sampleEncoderAPI: encoderAPI,
sampleFormatAPI: formatAPI, sampleFormatAPI: formatAPI,
sampleMediaTypeAPI: mediaTypeAPI, sampleMediaTypeAPI: mediaTypeAPI,