Nine Parsecs from Milwaukee
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    schema-checkpublic

    Schema Check

    Schema Check is an object validation and checking package designed to allow you to easily restrict what can be put on certain fields on a JavaScript Object.

    Uses Object.defineProperty and private fields prefixed with '__'

    To Install:

    npm install schema-check
    

    Usage

    Pass in an object, schema and options (additional settings for the SchemaCheck)

    var SchemaCheck = require('schema-check');
     
    var obj = {
      name: "test",
      rating: 5,
      settings: {
        is_active: true
      }
    };
     
    var schema = {
      name: {
        type: "string",
        allow_nulls: false,
        editable: false,
      },
      rating: {
        type: "number"
      },
      settings: {
        is_active: {
          type: "boolean"
        }
      }
    };
     
    var options = {
      //Should additional fields be allowed?  Defaults to false
      is_strict: false, //TODO - this isn't working yet
      //Does adding an invalid field throw a TypeError or fail silently?  Defaults to true
      throw_error: true
    };
     
    var newObj = SchemaCheck(obj, schema, options);
     
    //or
     
    SchemaCheck(obj, schema);
     
    //Examples
    //Modifying Name doesn't work since editable is false
    obj.name = "bob";
    obj.name; //test
     
    //Modifying Rating does work
    obj.rating = 10;
    obj.rating; //10
     
    //Trying to set rating to a string throws an error
    obj.rating = "10"; //Throws TypeError;
     
    //Set a nested value
    obj.settings.is_active = false;
     
    //Throws error
    obj.settings.is_active = "true";  //Throws TypeError;
     

    Schemas can have the following format:

    {
      field: {
        type: 'string',       //string, number, boolean
        regex: /^test$/,      //regex - for string types only
        min: 5,               //number minimum - value must be greater than or equal to this number - number types only
        max: 5,               //number maximum - value must be less than or equal to this number - number types only
        allow_nulls: false,   //true, false - default false - can you have nulls in this field?
        allow_delete: false,  //true, false - default false - can you delete this field?
        editable: false       //true, false - default true - is there a Setter?
      }
    }

    Working So Far:

    • Number
    • String
    • Regex: Can lock down Setter with Regex for String Types
    • Boolean
    • Nested Numbers/Strings
    • Min/Max (Numbers Only)

    To Do:

    • Arrays?
    • Typed Arrays?
    • Make requests :)

    View the Github repo here: https://github.com/WakeskaterX/schema-check

    Also added debug, so if you want to view logging levels the debug strings are:

    • schema:error
    • schema:warn
    • schema:log
    • schema:test

    I'll try to add more logs as well using debug

    install

    npm i schema-check

    Downloadsweekly downloads

    36

    version

    0.0.7

    license

    MIT

    last publish

    collaborators

    • avatar