@sheminusminus/schm v0.4.5
schm
Install
$ npm install --save schmUsage
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.
Extending schemas
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 }) // errorAPI
Table of Contents
schema
Creates a schema by composing groups of parameters.
Parameters
groups...Array<(Object | Schema | SchemaGroup)>
Examples
const schema = require('schm')
const userSchema = schema({
id: String,
name: String,
}, {
age: Number
})
// nested schema
const teamSchema = schema({
users: [userSchema],
})Returns Schema
parse
Parses a schema based on given values.
Parameters
Examples
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
validate
Validates a schema based on given values.
Parameters
Examples
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>>
group
A simple group of parameters. It's used internally when you pass literal
objects to schema.
Parameters
paramsObject (optional, default{})
Examples
const schema = require('schm')
const { group } = schema
const userSchema = schema(
group({
id: String,
name: String,
}),
group({
age: Number,
})
)Returns SchemaGroup
Types
Schema
Type: {params: Object, parsers: {}, validators: {}, parse: function (values: Object): Object, validate: function (values: Object): Promise<Array<ValidationError>>, merge: function (): Schema}
Properties
paramsObjectparsers{}validators{}parsefunction (values: Object): Objectvalidatefunction (values: Object): Promise<Array<ValidationError>>mergefunction (): Schema
SchemaGroup
Type: function (previous: Schema): Schema
ValidationError
Type: {param: string, value: any?, validator: string, message: string?}
Properties
License
MIT © Diego Haz