Spaces:
Running
Running
; | |
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 |