$ npm install --save schm
const schema = require('schm')
const userSchema = schema({
name: String,
age: Number,
height: Number,
skills: [RegExp],
})
const user = userSchema.parse({
name: 'Haz',
age: '27',
height: '1.88',
skills: ['code', 'design', 'astronomy'],
})
Output:
{
name: 'Haz',
age: 27,
height: 1.88,
skills: [/code/i, /design/i, /astronomy/i],
}
The way you declare the schema object is very similar to mongoose Schemas. So, refer to their docs to learn more.
You can extend the functionality of schemas by composing them. That way, you can add custom parsers and validators or modify the behavior of parse
and validate
methods themselves. See other packages's source code to learn more. Here's a simple example:
const schema = require('schm')
const userSchema = schema({
name: String,
age: {
type: Number,
adult: true,
},
}, previous => previous.merge({
validators: {
adult: value => ({
valid: value >= 18,
message: 'Not adult',
}),
},
}))
userSchema.validate({ name: 'John', age: 17 }) // error
Creates a schema by composing groups of parameters.
groups
...Array<(Object | Schema | SchemaGroup)>
const schema = require('schm')
const userSchema = schema({
id: String,
name: String,
}, {
age: Number
})
// nested schema
const teamSchema = schema({
users: [userSchema],
})
Returns Schema
Parses a schema based on given values.
const { parse } = require('schm')
parse(
{ foo: 1, bar: '1' },
{ foo: String, bar: Number },
)
// -> { foo: '1', bar: 1 }
// can also be used directly from schema
schema({ foo: String, bar: Number }).parse({ foo: 1, bar: '1' })
Returns Object
Validates a schema based on given values.
const schema = require('schm')
const { validate } = schema
const userSchema = schema({
name: {
type: String,
required: true,
},
age: {
type: Number,
min: [18, 'Too young'],
}
})
validate({ name: 'John', age: 17 }, userSchema)
.then((parsedValues) => {
console.log('Yaay!', parsedValues)
})
.catch((errors) => {
console.log('Oops!', errors)
})
// Output:
// Oops! [{
// param: 'age',
// value: 17,
// validator: 'min',
// min: 18,
// message: 'Too young',
// }]
Returns Promise<Array<ValidationError>>
A simple group of parameters. It's used internally when you pass literal
objects to schema
.
params
Object (optional, default{}
)
const schema = require('schm')
const { group } = schema
const userSchema = schema(
group({
id: String,
name: String,
}),
group({
age: Number,
})
)
Returns SchemaGroup
Type: {params: Object, parsers: {}, validators: {}, parse: function (values: Object): Object, validate: function (values: Object): Promise<Array<ValidationError>>, merge: function (): Schema}
params
Objectparsers
{}validators
{}parse
function (values: Object): Objectvalidate
function (values: Object): Promise<Array<ValidationError>>merge
function (): Schema
Type: function (previous: Schema): Schema
Type: {param: string, value: any?, validator: string, message: string?}
MIT © Diego Haz