schm

    0.4.1 • Public • Published

    schm

    NPM version

    Install

    $ npm install --save schm
    

    Usage

    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 }) // error

    API

    Table of Contents

    schema

    Creates a schema by composing groups of parameters.

    Parameters

    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

    • params Object (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

    SchemaGroup

    Type: function (previous: Schema): Schema

    ValidationError

    Type: {param: string, value: any?, validator: string, message: string?}

    Properties

    License

    MIT © Diego Haz

    Install

    npm i schm

    DownloadsWeekly Downloads

    1,090

    Version

    0.4.1

    License

    MIT

    Unpacked Size

    38.4 kB

    Total Files

    14

    Last publish

    Collaborators

    • diegohaz