simplecheck
This is a simple variable type-checking library inspired by the check
and Match
functions and behaviors in MeteorJS.
Why?
I love Meteor's check
function but you can't use it outside of Meteor due to the way it is written, and I want to use it in my pure node projects.
Usage
Import the library
import {matches, oneOf, optional, ensure, anything} from 'simplecheck';
Check a variable's type
matches('foo', String);
Use oneOf
matches('foo', oneOf(String, Number));
matches('foo', oneOf(Number, Boolean));
matches('foo', oneOf('foo', 'bar'));
Check an object's schema
matches({
foo:'bar',
baz:10
}, {
foo:String,
baz:Number
});
Use the optional
function for optional keys
(if they exist, they must match, but they aren't required)
matches({
foo:'bar',
baz:10
}, {
foo:String,
baz:optional(Number)
});
matches({
foo:'bar'
}, {
foo:String,
baz:optional(Number)
});
matches({
foo:'bar',
baz:'baz'
}, {
foo:String,
baz:optional(Number)
});
Check for array of type
Note that this library doesn't support type-checking of elements at specific indices in the array (yet)
matches(['foo'], [String]);
matches(['foo', 10], [String]);
matches(['foo', 10], [oneOf(String, Number)]);
Check on a regular expression
matches('foo', /^foo$/g);
matches('foo', oneOf('bar', /fo/g));
matches('foo', /bar/g);
matches({
foo:'bar'
}, {
foo:/ba/g
});
Accept anything
matches('foo', anything);
matches({
foo:'bar'
}, {
foo:anything
});
### Throw an error instead of returning a boolean?
Use `ensure`:
```js
ensure('foo', Number);
// "MatchError: Expected 'foo' to be a number"
Find a bug?
Please add a test in check_test.js
and we will try to fix.