0.0.7 • Published 8 years ago
schema-check v0.0.7
#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