-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Sergej edited this page Apr 30, 2019
·
3 revisions
This builder takes advantage of TypeScript Generics to provide a Fluent JSON Schema builder, with full IntelliSense support. You don't need to worry about knowing the JSON Schema specification upfront, instead explore it while typing code.
⚠ In beta, support is not complete. See below for what is supported.
V1 of the builder aims to implement Draft-V4
const schema = new Schema<Model>()
.with(m => m.StringProp, /^[A-z]+\.[A-z]+$/)
.with(m => m.NumberProp, x => x > 15)
.with(m => m.ObjProp.Lvl2ObjProp.Lvl3StrProp, "specificValue")
.with(m => m.ArrayProp, new ArraySchema({
length: x => x < 10,
}))
.build();
Produces following schema (click to expand)
{
"type": "object",
"properties": {
"StringProp": {
"type": "string",
"pattern": "^[A-z]+\\.[A-z]+$"
},
"NumberProp": {
"type": "number",
"minimum": 16
},
"ObjProp": {
"title": "ObjProp",
"type": "object",
"properties": {
"Lvl2ObjProp": {
"title": "Lvl2ObjProp",
"type": "object",
"properties": {
"Lvl3StrProp": {
"type": "string",
"pattern": "specificValue"
}
},
"required": [
"Lvl3StrProp"
]
}
},
"required": [
"Lvl2ObjProp"
]
},
"ArrayProp": {
"type": "array",
"maxItems": 9
}
},
"required": [
"StringProp",
"NumberProp",
"ObjProp",
"ArrayProp"
]
}