typetree
Object validation using a definition laid out as a type-tree.
Install
npm install typetree
Usage
const {validateObject} = require('typetree')
Defining a typetree
Typetree definitions can be JavaScript built-in objects
Boolean
Number
String
Object
or a literal values such as
null, "string literal", 12 (number), undefined (indicates that the values can be ommited)
Here's a comprehesive sample (validation object for a company):
var validObject = {
id: Number,
name: String,
address: {
city: String,
country: ['EE', 'FI', 'SE']
},
branches: [
{
name: String,
subId: Number
}
],
active: [Boolean, undefined],
type: 'SME'
}
Examples
Validating an object
validateObject(validObject, {
id: 10,
name: 'John Wick',
email: 'john.wick@example.com'
})
validateObject(validObject, {
id: 10,
name: null,
})
Validating optional values
var validObject = {
patient: {
bloodType: ['A', 'B', 'AB', 'O']
}
}
validateObject(validObject, {
patient: {
bloodType: 'A'
}
})
validateObject(validObject, {
patient: {
bloodType: 'Z'
}
})
Validating array contents
Provide an array with a single element in order to define an array validation object
var validObject = {
characters: [{filmId: Number, name: String}]
}
validateObject(validObject, { characters: [
{
filmId: 10,
name: 'John Wick'
},
{
filmId: 10
}
]})
In order to validate array contents with optionals, provide an array within an array
var validObject = {
characters: [[
{filmId: Number, name: String},
{deleted: true}
]]
}
validateObject(validObject, {
characters: [
{
filmId: 10,
name: 'John Wick'
},
{
filmId: 10,
deleted: true
}
]
})
validateObject(validObject, {
characters: [
{
filmId: 10,
name: 'John Wick'
},
{
filmId: 10
}
]
})
Test
node test
Licence
MIT