Code Monkey home page Code Monkey logo

vson's Introduction

vson [WIP]

JavaScript object validator, using schemas

Vson is an object validator for nodejs. It uses a similar technique to Mongoose, which uses defined schemas for validation. However, there are no models here. The validation is being done by passing the schema and the object to validate.

Install

$ npm install vson

Usage

Create a schema:

const { Schema } = require('vson');
const FooSchema = new Schema({
    bar: Number
});

Validate an object:

var { Validator } = require('vson');
var FooValidator = new Validator(FooSchema, { allowNulls: true });

FooValidator.validate({ bar: 5 }, function(err) {
    //=> error = null
});

Schema's Rules

A schema's child called a property. A property value can be one of the following:

Definition

You can see all the appropriate definitions here. A definition is the property's settings. For example:

{
    prop: { type: String, default: 'wat' } // This is called a definition
}

Only a Type

You can see all the types here. For example:

{
    prop: Date
}

If the property value is only a type, it gains the default values for its definition. The default definition value:

{ type: String } // Could be any specified type

You could even allow multiple types, like so:

{ type: [String, Number] } // Could be string or a number

Virtual

A virtual is just a child object. For example:

{
    prop: { // This is a virtual
        inside: String,
        yay: { type: String, required: true }
    }
}

Embedded Schema

An embedded schema is basically just an array of virtuals. For example:

{
    prop: [{
        prop: String,
        wow: { type: Number }
    }]
}

wat

If there is a property called type, the property value is considered as a definition. If you need to include a type property inside a virtual, make the value of type as a definition. In other words, if there is a type property inside, so the value considered as a definition.

{
    wrong: {
        type: Boolean // so sad.
    },
    right: {
        type: { type: Boolean } // Works!
    }
}

API

Schema(schema); [instance]

Creates a new vson schema instance.

Schema

Type: object

Schema().validate([schema]);

Validate a schema's structure.

schema

Type: object
Default: this.schema

Validator(Schema, [options]); [instance]

Creates a new vson validator instance.

Schema

Type: vson.Schema

[options]

Type: object
Default: {}

allowNulls

Type: boolean
Default: false

requireAll

Type: boolean
Default: false

allowExtras

Type: boolean
Default: false

Validator().validate(obj, callback);

Validate an object accroding to a schema.

obj

Type: object

callback

Type: function

TODO

  • ES2015ify it
  • Finish the validator
  • Promisify it

License

MIT © Yarden Sod-Moriah

vson's People

Contributors

yardnsm avatar

Watchers

James Cloos avatar Jonathan Ohayon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.