"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const shared = (root) => { const sch = { nullable: { type: "boolean" }, metadata: { optionalProperties: { union: { elements: { ref: "schema" } }, }, additionalProperties: true, }, }; if (root) sch.definitions = { values: { ref: "schema" } }; return sch; }; const emptyForm = (root) => ({ optionalProperties: shared(root), }); const refForm = (root) => ({ properties: { ref: { type: "string" }, }, optionalProperties: shared(root), }); const typeForm = (root) => ({ properties: { type: { enum: [ "boolean", "timestamp", "string", "float32", "float64", "int8", "uint8", "int16", "uint16", "int32", "uint32", ], }, }, optionalProperties: shared(root), }); const enumForm = (root) => ({ properties: { enum: { elements: { type: "string" } }, }, optionalProperties: shared(root), }); const elementsForm = (root) => ({ properties: { elements: { ref: "schema" }, }, optionalProperties: shared(root), }); const propertiesForm = (root) => ({ properties: { properties: { values: { ref: "schema" } }, }, optionalProperties: { optionalProperties: { values: { ref: "schema" } }, additionalProperties: { type: "boolean" }, ...shared(root), }, }); const optionalPropertiesForm = (root) => ({ properties: { optionalProperties: { values: { ref: "schema" } }, }, optionalProperties: { additionalProperties: { type: "boolean" }, ...shared(root), }, }); const discriminatorForm = (root) => ({ properties: { discriminator: { type: "string" }, mapping: { values: { metadata: { union: [propertiesForm(false), optionalPropertiesForm(false)], }, }, }, }, optionalProperties: shared(root), }); const valuesForm = (root) => ({ properties: { values: { ref: "schema" }, }, optionalProperties: shared(root), }); const schema = (root) => ({ metadata: { union: [ emptyForm, refForm, typeForm, enumForm, elementsForm, propertiesForm, optionalPropertiesForm, discriminatorForm, valuesForm, ].map((s) => s(root)), }, }); const jtdMetaSchema = { definitions: { schema: schema(false), }, ...schema(true), }; exports.default = jtdMetaSchema; //# sourceMappingURL=jtd-schema.js.map