simplecheck

0.1.3 • Public • Published

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); // true

Use oneOf

matches('foo', oneOf(String, Number)); // true
 
matches('foo', oneOf(Number, Boolean)); // false
 
matches('foo', oneOf('foo', 'bar')); // true
 

Check an object's schema

matches({
  foo:'bar',
  baz:10
}, {
  foo:String,
  baz:Number
}); // true
 

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)
}); // true
 
matches({
  foo:'bar'
}, {
  foo:String,
  baz:optional(Number)
}); // true
 
matches({
  foo:'bar',
  baz:'baz'
}, {
  foo:String,
  baz:optional(Number)
}); // false ("baz" is not a 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]); // true
 
matches(['foo', 10], [String]); // false
 
matches(['foo', 10], [oneOf(String, Number)]); // true

Check on a regular expression

matches('foo', /^foo$/g); // true
 
matches('foo', oneOf('bar', /fo/g)); // true
 
matches('foo', /bar/g); // false
 
matches({
  foo:'bar'
}, {
  foo:/ba/g
}); // true

Accept anything

matches('foo', anything); // true
matches({
  foo:'bar'
}, {
  foo:anything
}); // true
 
### 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.

Readme

Keywords

none

Package Sidebar

Install

npm i simplecheck

Weekly Downloads

13

Version

0.1.3

License

MIT

Last publish

Collaborators