match-constraints

1.0.2 • Public • Published

Match Constraints

Build Status Coverage Status NPM version

Check a JS object match specified constraints. This is for simple object matching. If you require more advanced manipulation, other libraries will probably be better, see for instance validator.js.

Install

$ npm install match-constraints

Usage

// You may use matchConstraints to throw errors on constraints failures, ot matchConstraintsBool to return false on failures.
var matchConstraints = require('match-constraints').matchConstraints;
 
 
/* Simple use case */
var constraints = {
    name: "hello"
};
 
matchConstraints(constraints, {name: "hello", foo: "bar"}); // OK
matchConstraints(constraints, {name: "helo", foo: "bar"}); // throws Error: "[name]: helo does not equals hello"
 
/* $match : regexp checks */
var constraints = {
    name: {
        $match: /h.+o$/
    }
};
 
matchConstraints(constraints, {name: "hello", foo: "bar"}); // OK
matchConstraints(constraints, {name: "hellos", foo: "bar"}); // throws Error "[name]: hellos does not match /h.+o$/"
 
// Or shortcut notation
var constraints = {
    name: /h.+o$/
}
matchConstraints(constraints, {name: "hello", foo: "bar"}); // OK
 
/* $contains: array checks */
var constraints = {
    values: {
        $contains: 4
    }
};
 
matchConstraints(constraints, {values: [1, 2, 3, 4]}); // OK
matchConstraints(constraints, {values: 4}); // OK
matchConstraints(constraints, {values: [1, 2, 3]}); // throws Error "[values]: 1,2,3 does not contains 4"
 
/* $containsTypeInsensitive: array checks with type tolerance */
var constraints = {
    values: {
        $containsTypeInsensitive: 4
    }
};
 
matchConstraints(constraints, {values: [1, 2, 3, 4]}); // OK
matchConstraints(constraints, {values: 4}); // OK
matchConstraints(constraints, {values: [1, 2, 3, '4']}); // OK
matchConstraints(constraints, {values: '4'}); // OK
matchConstraints(constraints, {values: [1, 2, 3]}); // throws Error "[values]: 1,2,3 does not contains 4"
 
/* $missing: existence checks */
var constraints = {
    notDefined: {
        $missing: true
    }
};
 
matchConstraints(constraints, {}); // OK
matchConstraints(constraints, {notDefined: [1, 2, 3, 4]}); // throws Error "[notDefined]: 1,2,3,4 should not be defined"
 
/* $empty: emptiness checks */
var constraints = {
    array: {
        $empty: true
    }
};
 
matchConstraints(constraints, {array: []}); // OK
matchConstraints(constraints, {array: [1, 2, 3, 4]}); // throws Error "[array]: 1,2,3,4 is not empty"
matchConstraints(constraints, {}); // throws Error "[array]: object does not define the key.", see below to allow for missing key
 
/* $empty: allowing missing field*/
var constraints = {
    array: {
        $empty: 'allowMissing',
    }
};
 
matchConstraints(constraints, {}); // OK
matchConstraints(constraints, {array: []}); // OK
matchConstraints(constraints, {array: [1, 2, 3, 4]}); // throws Error "[array]: 1,2,3,4 is not empty"
 
/* $notEmpty: non emptiness checks*/
var constraints = {
    array: {
        $notEmpty: true,
    }
};
 
matchConstraints(constraints, {array: []}); // throws Error "[array]:  is empty"
matchConstraints(constraints, {array: [1, 2, 3, 4]}); // OK
 
/* Recursive matching */
var constraints = {
    values: {
        foo: {
            $contains: 4
        }
    }
};
 
matchConstraints(constraints, {name: "hello", values: {foo: [1, 2, 3, 4]}}); // OK
matchConstraints(constraints, {values: [1, 2, 3, 4]}); // throws Error "[foo]: object does not define the key"

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.0.20latest

Version History

VersionDownloads (Last 7 Days)Published
1.0.20
1.0.10
1.0.00
0.0.50
0.0.40
0.0.30
0.0.20

Package Sidebar

Install

npm i match-constraints

Weekly Downloads

0

Version

1.0.2

License

none

Last publish

Collaborators

  • matthieu.bacconnier
  • quentin01