{"_id":"tcomb-validation","_rev":"398375","name":"tcomb-validation","description":"General purpose validation library for JavaScript","dist-tags":{"latest":"3.4.1"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"time":{"modified":"2021-08-04T04:22:09.000Z","created":"2014-08-24T17:34:38.228Z","3.4.1":"2017-08-16T06:09:29.952Z","3.4.0":"2017-08-01T08:00:48.496Z","3.3.0":"2016-11-11T16:18:16.550Z","3.2.2":"2016-10-01T11:39:05.562Z","3.2.1":"2016-07-04T19:37:55.957Z","3.2.0":"2016-06-03T08:24:43.549Z","3.1.0":"2016-05-15T06:39:31.255Z","3.0.0":"2016-03-07T11:01:53.184Z","2.3.0":"2016-01-14T13:31:04.774Z","2.2.0":"2015-09-13T09:56:15.909Z","2.1.1":"2015-09-06T13:26:58.715Z","2.1.0":"2015-08-13T09:22:28.768Z","2.0.1":"2015-07-29T10:51:29.686Z","2.0.0":"2015-07-08T07:25:16.363Z","2.0.0-beta":"2015-05-31T17:03:16.745Z","1.0.4":"2015-05-12T06:32:49.705Z","1.0.3":"2015-04-04T11:14:57.386Z","1.0.2":"2015-03-27T14:12:37.512Z","1.0.1":"2015-03-22T13:52:33.774Z","1.0.0":"2015-02-16T09:34:17.722Z","0.3.0":"2014-12-27T09:13:26.844Z","0.2.3":"2014-12-08T15:49:15.420Z","0.2.2":"2014-12-06T09:16:29.884Z","0.2.1":"2014-11-27T09:34:47.532Z","0.2.0":"2014-11-17T14:52:20.854Z","0.1.3":"2014-11-02T17:59:22.455Z","0.1.2":"2014-09-22T10:17:34.383Z","0.1.1":"2014-09-20T11:38:03.622Z","0.1.0":"2014-09-05T15:44:32.533Z","0.0.6":"2014-09-02T14:18:11.958Z","0.0.5":"2014-09-02T13:53:55.132Z","0.0.4":"2014-08-30T17:34:05.720Z","0.0.3":"2014-08-29T06:53:50.963Z","0.0.2":"2014-08-25T17:23:17.521Z","0.0.1":"2014-08-24T17:34:38.228Z"},"users":{"eserozvataf":true},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"versions":{"3.4.1":{"name":"tcomb-validation","version":"3.4.1","description":"General purpose validation library for JavaScript","main":"index.js","typings":"index.d.ts","files":["index.js","index.d.ts"],"scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"aa6951186ccb9f6d6fc1f5cdfd87ba406f88b4ab","_id":"tcomb-validation@3.4.1","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"shasum":"a7696ec176ce56a081d9e019f8b732a5a8894b65","size":7795,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.4.1.tgz"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tcomb-validation-3.4.1.tgz_1502863768910_0.3924135104753077"},"directories":{},"publish_time":1502863769952,"_cnpm_publish_time":1502863769952,"_hasShrinkwrap":false},"3.4.0":{"name":"tcomb-validation","version":"3.4.0","description":"General purpose validation library for JavaScript","main":"index.js","typings":"index.d.ts","files":["index.js","index.d.ts"],"scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"5a7495b84c5a7d8c5bd5137f0fda8f5b245009ee","_id":"tcomb-validation@3.4.0","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"c8816fa9be4192b2c2c36ba629568adfac7e181a","size":7757,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.4.0.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tcomb-validation-3.4.0.tgz_1501574447418_0.10204856679774821"},"directories":{},"publish_time":1501574448496,"_hasShrinkwrap":false,"_cnpm_publish_time":1501574448496},"3.3.0":{"name":"tcomb-validation","version":"3.3.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"010205023ffb8f54c69e49d81b95e5f930b1a1f3","_id":"tcomb-validation@3.3.0","_shasum":"29ada8534203500e90b245eedd0e1a80f1909ba2","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"29ada8534203500e90b245eedd0e1a80f1909ba2","size":7079,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.3.0.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tcomb-validation-3.3.0.tgz_1478881094521_0.4030228150077164"},"directories":{},"publish_time":1478881096550,"_cnpm_publish_time":1478881096550,"_hasShrinkwrap":false},"3.2.2":{"name":"tcomb-validation","version":"3.2.2","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"8f5e2007bc9c3b1a2150ed2aea54fe7f84be38d5","_id":"tcomb-validation@3.2.2","_shasum":"f963c5c11a58c012db0e132cc0f60cc38b7513ba","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"f963c5c11a58c012db0e132cc0f60cc38b7513ba","size":7024,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.2.2.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tcomb-validation-3.2.2.tgz_1475321943587_0.08926757867448032"},"directories":{},"publish_time":1475321945562,"_cnpm_publish_time":1475321945562,"_hasShrinkwrap":false},"3.2.1":{"name":"tcomb-validation","version":"3.2.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"6897195b26eee8a196ced1a8830eb50e0aa0176b","_id":"tcomb-validation@3.2.1","_shasum":"20e3215ad378f8922d46efa7a4a646e11f030c4b","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"20e3215ad378f8922d46efa7a4a646e11f030c4b","size":6978,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.2.1.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/tcomb-validation-3.2.1.tgz_1467661073761_0.6002337217796594"},"directories":{},"publish_time":1467661075957,"_cnpm_publish_time":1467661075957,"_hasShrinkwrap":false},"3.2.0":{"name":"tcomb-validation","version":"3.2.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"36a7053f06dddc8934ecc45d3dded293b3aa47af","_id":"tcomb-validation@3.2.0","_shasum":"28e099aa82c45d26bbfe56630714b31fcee6fa3f","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"28e099aa82c45d26bbfe56630714b31fcee6fa3f","size":6899,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.2.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/tcomb-validation-3.2.0.tgz_1464942282156_0.9515537198167294"},"directories":{},"publish_time":1464942283549,"_cnpm_publish_time":1464942283549,"_hasShrinkwrap":false},"3.1.0":{"name":"tcomb-validation","version":"3.1.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"fa8b318e1e3e7dcc62896e022cbc3c2f1898be38","_id":"tcomb-validation@3.1.0","_shasum":"0305b524ee0fb39976c509a44c475790bfb87231","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"0305b524ee0fb39976c509a44c475790bfb87231","size":6809,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.1.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/tcomb-validation-3.1.0.tgz_1463294369297_0.20886586606502533"},"directories":{},"publish_time":1463294371255,"_cnpm_publish_time":1463294371255,"_hasShrinkwrap":false},"3.0.0":{"name":"tcomb-validation","version":"3.0.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^3.0.0"},"devDependencies":{"eslint":"0.22.1","mocha":"2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"23db75026a0abadfaab8feb6031f097cdde220b6","_id":"tcomb-validation@3.0.0","_shasum":"f272d34f6542d4ba5b544c1a01f0ba587d8f7ab8","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"f272d34f6542d4ba5b544c1a01f0ba587d8f7ab8","size":6603,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-3.0.0.tgz"},"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/tcomb-validation-3.0.0.tgz_1457348509558_0.09880629694089293"},"directories":{},"publish_time":1457348513184,"_cnpm_publish_time":1457348513184,"_hasShrinkwrap":false},"2.3.0":{"name":"tcomb-validation","version":"2.3.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.2.0"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"98e824b74d54eae554a4fcfdad501889749b33aa","_id":"tcomb-validation@2.3.0","_shasum":"a10c3aa597a39233f6fd694b54d324fb712944ab","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"a10c3aa597a39233f6fd694b54d324fb712944ab","size":6505,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.3.0.tgz"},"directories":{},"publish_time":1452778264774,"_cnpm_publish_time":1452778264774,"_hasShrinkwrap":false},"2.2.0":{"name":"tcomb-validation","version":"2.2.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.2.0"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"f5406bd3bec8d21a79f64a6984bfe679716b1ebb","_id":"tcomb-validation@2.2.0","_shasum":"5ee7e6f0c8efde396ac6c19cd211d0984960e55c","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"5ee7e6f0c8efde396ac6c19cd211d0984960e55c","size":6327,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.2.0.tgz"},"directories":{},"publish_time":1442138175909,"_cnpm_publish_time":1442138175909,"_hasShrinkwrap":false},"2.1.1":{"name":"tcomb-validation","version":"2.1.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.2.0"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"9c246fc08bbb1e92de0c9021e4e9b95ab9e8fa8e","_id":"tcomb-validation@2.1.1","_shasum":"11252822054a6174b01c7bb9e35d92000ee40727","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"11252822054a6174b01c7bb9e35d92000ee40727","size":6122,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.1.1.tgz"},"directories":{},"publish_time":1441546018715,"_cnpm_publish_time":1441546018715,"_hasShrinkwrap":false},"2.1.0":{"name":"tcomb-validation","version":"2.1.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.2.0"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"7c04c74ea85d244b4fa3b0e6a0012dd78799aa89","_id":"tcomb-validation@2.1.0","_shasum":"118c5f21bffb8fee3707502812822b0e7803ad3d","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"118c5f21bffb8fee3707502812822b0e7803ad3d","size":5719,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.1.0.tgz"},"directories":{},"publish_time":1439457748768,"_cnpm_publish_time":1439457748768,"_hasShrinkwrap":false},"2.0.1":{"name":"tcomb-validation","version":"2.0.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.1.0"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"7fd3aa7d6e766866115d56f25b0fcef095214404","_id":"tcomb-validation@2.0.1","_shasum":"ab4564946a39136fc68baa2176181abeb929fa51","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"ab4564946a39136fc68baa2176181abeb929fa51","size":5642,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.0.1.tgz"},"directories":{},"publish_time":1438167089686,"_cnpm_publish_time":1438167089686,"_hasShrinkwrap":false},"2.0.0":{"name":"tcomb-validation","version":"2.0.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.0.0"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"d0f58857c216e441f6027c699a0bb38ebac6b9eb","_id":"tcomb-validation@2.0.0","_shasum":"913df7428757a6041fb19a53220448362e645a63","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"913df7428757a6041fb19a53220448362e645a63","size":5593,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.0.0.tgz"},"directories":{},"publish_time":1436340316363,"_cnpm_publish_time":1436340316363,"_hasShrinkwrap":false},"2.0.0-beta":{"name":"tcomb-validation","version":"2.0.0-beta","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"lint":"eslint index.js","test":"npm run lint && mocha"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^2.0.0-beta"},"devDependencies":{"eslint":"^0.22.1","mocha":"^2.2.5"},"tags":["tcomb","validation","models","domain"],"keywords":["tcomb","validation","models","domain"],"gitHead":"e274e1358c029062a5ef71858fa8149e846fb6dd","_id":"tcomb-validation@2.0.0-beta","_shasum":"f0c846772782e99bf4263c2651edc164bce1d602","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"f0c846772782e99bf4263c2651edc164bce1d602","size":5527,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-2.0.0-beta.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-2.0.0-beta.tgz"},"directories":{},"publish_time":1433091796745,"_cnpm_publish_time":1433091796745,"_hasShrinkwrap":false},"1.0.4":{"name":"tcomb-validation","version":"1.0.4","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"git+https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","peerDependencies":{"tcomb":"^1.0.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"b2600e9f64abc6faf42cfd9128e65d8d4e11eeb7","_id":"tcomb-validation@1.0.4","_shasum":"8af9d629a234c3590a06c5c763e4327fd660220c","_from":".","_npmVersion":"2.9.0","_nodeVersion":"0.12.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"8af9d629a234c3590a06c5c763e4327fd660220c","size":8297,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-1.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-1.0.4.tgz"},"directories":{},"publish_time":1431412369705,"_cnpm_publish_time":1431412369705,"_hasShrinkwrap":false},"1.0.3":{"name":"tcomb-validation","version":"1.0.3","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","peerDependencies":{"tcomb":"^1.0.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"758e4dfc53c7a733f62053ec840303c29e3b89d7","_id":"tcomb-validation@1.0.3","_shasum":"dd5c5ac93a63a2f60bf374e69cf69b1c1cc36b9d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"dd5c5ac93a63a2f60bf374e69cf69b1c1cc36b9d","size":8451,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-1.0.3.tgz"},"directories":{},"publish_time":1428146097386,"_cnpm_publish_time":1428146097386,"_hasShrinkwrap":false},"1.0.2":{"name":"tcomb-validation","version":"1.0.2","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","peerDependencies":{"tcomb":"^1.0.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"58cd8a51aa83f21cbab7f8c4ef18639b75c1769f","_id":"tcomb-validation@1.0.2","_shasum":"ea23173cd2f1502321f8f75075e18199eb8eadb9","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"ea23173cd2f1502321f8f75075e18199eb8eadb9","size":8366,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-1.0.2.tgz"},"directories":{},"publish_time":1427465557512,"_cnpm_publish_time":1427465557512,"_hasShrinkwrap":false},"1.0.1":{"name":"tcomb-validation","version":"1.0.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","peerDependencies":{"tcomb":"^1.0.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"1ea3417834909dce9493cb78fba67a170d6c9c6e","_id":"tcomb-validation@1.0.1","_shasum":"9e2ebf129c4fd86fccff4f1f7f15bb4c242ee1a2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"9e2ebf129c4fd86fccff4f1f7f15bb4c242ee1a2","size":8286,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-1.0.1.tgz"},"directories":{},"publish_time":1427032353774,"_cnpm_publish_time":1427032353774,"_hasShrinkwrap":false},"1.0.0":{"name":"tcomb-validation","version":"1.0.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^1.0.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"fb841f8d16866d33d6751e3f56b5943168c604be","_id":"tcomb-validation@1.0.0","_shasum":"d2313fe6f1ea7a9ca513ff70346538b95362b86e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"d2313fe6f1ea7a9ca513ff70346538b95362b86e","size":8273,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-1.0.0.tgz"},"directories":{},"publish_time":1424079257722,"_cnpm_publish_time":1424079257722,"_hasShrinkwrap":false},"0.3.0":{"name":"tcomb-validation","version":"0.3.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^0.4.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"aeba1c0b36736e40ca93988af48c11d084e5152c","_id":"tcomb-validation@0.3.0","_shasum":"c5371588e3142f87b93fc0ce1c3cd2fb77bfc2d0","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"c5371588e3142f87b93fc0ce1c3cd2fb77bfc2d0","size":8324,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.3.0.tgz"},"directories":{},"publish_time":1419671606844,"_cnpm_publish_time":1419671606844,"_hasShrinkwrap":false},"0.2.3":{"name":"tcomb-validation","version":"0.2.3","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^0.3.5"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"3c5035c93c19759224f6dce3f3dd3aca4cc09b3b","_id":"tcomb-validation@0.2.3","_shasum":"31fa0ca874e6515e4d3a8239956a7fae3770b39b","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"31fa0ca874e6515e4d3a8239956a7fae3770b39b","size":8302,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.2.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.2.3.tgz"},"directories":{},"publish_time":1418053755420,"_cnpm_publish_time":1418053755420,"_hasShrinkwrap":false},"0.2.2":{"name":"tcomb-validation","version":"0.2.2","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^0.3.4"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"2affa683e2758e743b634f68f89df13fd163ae35","_id":"tcomb-validation@0.2.2","_shasum":"35fa817118c474142568f1addaddaad0660f2e94","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"35fa817118c474142568f1addaddaad0660f2e94","size":8293,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.2.2.tgz"},"directories":{},"publish_time":1417857389884,"_cnpm_publish_time":1417857389884,"_hasShrinkwrap":false},"0.2.1":{"name":"tcomb-validation","version":"0.2.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^0.3.4"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"56af3c4bdbf003133d0d611e24960b888e28d74f","_id":"tcomb-validation@0.2.1","_shasum":"e5f8b8553eca3bebaa06eac98ae6e2b08d62a2d4","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"e5f8b8553eca3bebaa06eac98ae6e2b08d62a2d4","size":8225,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.2.1.tgz"},"directories":{},"publish_time":1417080887532,"_cnpm_publish_time":1417080887532,"_hasShrinkwrap":false},"0.2.0":{"name":"tcomb-validation","version":"0.2.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^0.3.3"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","reactify":"^0.16.0","react":"^0.12.0"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"40c1e296caf233eca14994bb70316e08be07c0ee","_id":"tcomb-validation@0.2.0","_shasum":"ef9dac0630318777475f2c52a9ce0138b4c1490b","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"ef9dac0630318777475f2c52a9ce0138b4c1490b","size":8218,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.2.0.tgz"},"directories":{},"publish_time":1416235940854,"_cnpm_publish_time":1416235940854,"_hasShrinkwrap":false},"0.1.3":{"name":"tcomb-validation","version":"0.1.3","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"^0.3.1"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","istanbul":"^0.3.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"9e6a24e45b229999836b16a0b15d7d67d47fc9aa","_id":"tcomb-validation@0.1.3","_shasum":"a246b92a6384e6bcd617a936197eb024000feeba","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"a246b92a6384e6bcd617a936197eb024000feeba","size":10633,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.1.3.tgz"},"directories":{},"publish_time":1414951162455,"_cnpm_publish_time":1414951162455,"_hasShrinkwrap":false},"0.1.2":{"name":"tcomb-validation","version":"0.1.2","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"~0.2.1"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","istanbul":"^0.3.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation","models","domain"],"keywords":["validation","models","domain"],"gitHead":"fbea9e736fbbd5c110cedbd4e87a99a20a6936c4","_id":"tcomb-validation@0.1.2","_shasum":"6dcd2e563c3e26d8e6676e2b8c3e972b3647f840","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"6dcd2e563c3e26d8e6676e2b8c3e972b3647f840","size":10956,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.1.2.tgz"},"directories":{},"publish_time":1411381054383,"_cnpm_publish_time":1411381054383,"_hasShrinkwrap":false},"0.1.1":{"name":"tcomb-validation","version":"0.1.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"~0.2.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","istanbul":"^0.3.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation"],"gitHead":"9da64e9b4db68d19226d4ba0b7556d0bac922a31","_id":"tcomb-validation@0.1.1","_shasum":"69e16bf75e9ad4816b13c032de1a891ce5bbf759","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"69e16bf75e9ad4816b13c032de1a891ce5bbf759","size":179945,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.1.1.tgz"},"directories":{},"publish_time":1411213083622,"_cnpm_publish_time":1411213083622,"_hasShrinkwrap":false},"0.1.0":{"name":"tcomb-validation","version":"0.1.0","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"~0.2.0"},"devDependencies":{"grunt":"^0.4.5","grunt-cli":"^0.1.13","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.5.1","grunt-contrib-watch":"^0.6.1","grunt-mocha-test":"^0.11.0","istanbul":"^0.3.0","jshint-stylish":"^0.4.0","mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation"],"gitHead":"acf4cbdd3f66e7a9d748a4f511e9709e093fffa2","_id":"tcomb-validation@0.1.0","_shasum":"02e197944ac6864c42188e010b37ad788f3450bf","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"02e197944ac6864c42188e010b37ad788f3450bf","size":179849,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.1.0.tgz"},"directories":{},"publish_time":1409931872533,"_cnpm_publish_time":1409931872533,"_hasShrinkwrap":false},"0.0.6":{"name":"tcomb-validation","version":"0.0.6","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"*"},"devDependencies":{"mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation","JSON Schema","react","backbone","form validation"],"gitHead":"c2dbb48af01bee949ed4d1fae0e3b742d64b0fd6","_id":"tcomb-validation@0.0.6","_shasum":"92d29acadf5995c2367b999f6ae957bad0644239","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"92d29acadf5995c2367b999f6ae957bad0644239","size":174161,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.0.6.tgz"},"directories":{},"publish_time":1409667491958,"_cnpm_publish_time":1409667491958,"_hasShrinkwrap":false},"0.0.5":{"name":"tcomb-validation","version":"0.0.5","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"~0.1.0"},"devDependencies":{"mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation","JSON Schema","react","backbone","form validation"],"gitHead":"bdf32dd166b1db06d9eca4392c14163d5da0ae3e","_id":"tcomb-validation@0.0.5","_shasum":"2e2589593c7cbacf54a8a1d973bc40eb0ff7becd","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"2e2589593c7cbacf54a8a1d973bc40eb0ff7becd","size":174168,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.0.5.tgz"},"directories":{},"publish_time":1409666035132,"_cnpm_publish_time":1409666035132,"_hasShrinkwrap":false},"0.0.4":{"name":"tcomb-validation","version":"0.0.4","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"~0.1.0"},"devDependencies":{"mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation","JSON Schema","react","backbone","form validation"],"gitHead":"1015b259b764da87c8a7425e8ee0bd705bece33d","_id":"tcomb-validation@0.0.4","_shasum":"dd65ae30828791cb1c23c93111e1ff360fbd9d6e","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"dd65ae30828791cb1c23c93111e1ff360fbd9d6e","size":464321,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.0.4.tgz"},"directories":{},"publish_time":1409420045720,"_cnpm_publish_time":1409420045720,"_hasShrinkwrap":false},"0.0.3":{"name":"tcomb-validation","version":"0.0.3","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha","build-playground":"watchify -v -t reactify playground/playground.jsx -o playground/playground.js"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"~0.0.12"},"devDependencies":{"mocha":"^1.21.4","react":"^0.11.1","backbone":"^1.1.2","sinon":"^1.10.3","tcomb-react-bootstrap":"^0.0.4"},"tags":["validation","JSON Schema","react","backbone","form validation"],"gitHead":"7949b801acf1f87f11da15a09c16fbad0d07880e","_id":"tcomb-validation@0.0.3","_shasum":"448a158b9687ee4a4fdb68fee456be05e3a5743a","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"448a158b9687ee4a4fdb68fee456be05e3a5743a","size":464094,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.0.3.tgz"},"directories":{},"publish_time":1409295230963,"_cnpm_publish_time":1409295230963,"_hasShrinkwrap":false},"0.0.2":{"name":"tcomb-validation","version":"0.0.2","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"*"},"devDependencies":{"mocha":"*","react":"*","sinon":"*"},"tags":["validation"],"gitHead":"3b68020708386fdbbdfd3ce2c052b9c7f958ef3e","_id":"tcomb-validation@0.0.2","_shasum":"e273429a45e27ea67b170fb89d311c3baf7b2bbd","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"e273429a45e27ea67b170fb89d311c3baf7b2bbd","size":5832,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.0.2.tgz"},"directories":{},"publish_time":1408987397521,"_cnpm_publish_time":1408987397521,"_hasShrinkwrap":false},"0.0.1":{"name":"tcomb-validation","version":"0.0.1","description":"General purpose validation library for JavaScript","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/gcanti/tcomb-validation.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"homepage":"https://github.com/gcanti/tcomb-validation","dependencies":{"tcomb":"*"},"devDependencies":{"mocha":"*"},"tags":["validation"],"gitHead":"1d667d3189caf90cc3f49e75716faa8c3c218d42","_id":"tcomb-validation@0.0.1","_shasum":"7d01572f0a1c41d0b40e168135de0d256a5e54b2","_from":".","_npmVersion":"2.0.0-beta.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"7d01572f0a1c41d0b40e168135de0d256a5e54b2","size":2095,"noattachment":false,"key":"/tcomb-validation/-/tcomb-validation-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tcomb-validation/download/tcomb-validation-0.0.1.tgz"},"directories":{},"publish_time":1408901678228,"_cnpm_publish_time":1408901678228,"_hasShrinkwrap":false}},"readme":"[![build status](https://img.shields.io/travis/gcanti/tcomb-validation/master.svg?style=flat-square)](https://travis-ci.org/gcanti/tcomb-validation)\n[![dependency status](https://img.shields.io/david/gcanti/tcomb-validation.svg?style=flat-square)](https://david-dm.org/gcanti/tcomb-validation)\n![npm downloads](https://img.shields.io/npm/dm/tcomb-validation.svg)\n\nA general purpose JavaScript validation library based on type combinators\n\n# Features\n\n- concise yet expressive syntax\n- validates native types, refinements, objects, lists and tuples, enums, unions, dicts, intersections\n- validates structures with arbitrary level of nesting\n- detailed informations on failed validations\n- lightweight alternative to JSON Schema\n- reuse your domain model written with [tcomb](https://github.com/gcanti/tcomb)\n\n# Documentation\n\n- [Basic usage](#basic-usage)\n  - [Primitives](#primitives)\n  - [Refinements](#refinements)\n  - [Objects](#objects)\n  - [Lists and tuples](#lists-and-tuples)\n  - [Enums](#enums)\n  - [Unions](#unions)\n  - [Dicts](#dicts)\n  - [Intersections](#intersections)\n  - [Nested structures](#nested-structures)\n- [Customise error messages](#customise-error-messages)\n- [Use cases](#use-cases)\n  - [Form validation](#form-validation)\n  - [JSON schema](#json-schema)\n- [API reference](#api-reference)\n\n# Basic usage\n\n*If you don't know how to define types with tcomb you may want to take a look at its [README](https://github.com/gcanti/tcomb/blob/master/README.md) file.*\n\nThe main function is `validate`:\n\n```js\nvalidate(value, type, [options]) -> ValidationResult\n```\n\n- `value` the value to validate\n- `type` a type defined with the [tcomb](https://github.com/gcanti/tcomb) library\n- `options` (optional) is an object with the following keys\n  - `path: Array<string | number>` path prefix for validation\n  - `context: any` passed to `getValidationErrorMessage` (useful for i18n)\n  - `strict: boolean` (default `false`) if `true` no additional properties are allowed while validating structs\n\nreturns a `ValidationResult` object containing the result of the validation\n\n**Note**.\n\n- `options` can be an array (as `path` prefix) for backward compatibility (deprecated)\n\nExample\n\n```js\nvar t = require('tcomb-validation');\nvar validate = t.validate;\n\nvalidate(1, t.String).isValid();   // => false\nvalidate('a', t.String).isValid(); // => true\n```\n\nYou can inspect the result to quickly identify what's wrong:\n\n```js\nvar result = validate(1, t.String);\nresult.isValid();             // => false\nresult.firstError().message;  // => 'Invalid value 1 supplied to String'\n\n// see `result.errors` to inspect all errors\n```\n\n## Primitives\n\n```js\n// null and undefined\nvalidate('a', t.Nil).isValid();       // => false\nvalidate(null, t.Nil).isValid();      // => true\nvalidate(undefined, t.Nil).isValid(); // => true\n\n// strings\nvalidate(1, t.String).isValid();   // => false\nvalidate('a', t.String).isValid(); // => true\n\n// numbers\nvalidate('a', t.Number).isValid(); // => false\nvalidate(1, t.Number).isValid();   // => true\n\n// booleans\nvalidate(1, t.Boolean).isValid();    // => false\nvalidate(true, t.Boolean).isValid(); // => true\n\n// optional values\nvalidate(null, maybe(t.String)).isValid(); // => true\nvalidate('a', maybe(t.String)).isValid();  // => true\nvalidate(1, maybe(t.String)).isValid();    // => false\n\n// functions\nvalidate(1, t.Function).isValid();              // => false\nvalidate(function () {}, t.Function).isValid(); // => true\n\n// dates\nvalidate(1, t.Date).isValid();           // => false\nvalidate(new Date(), t.Date).isValid();  // => true\n\n// regexps\nvalidate(1, t.RegExp).isValid();    // => false\nvalidate(/^a/, t.RegExp).isValid(); // => true\n```\n\n## Refinements\n\nYou can express more fine-grained contraints with the `refinement` syntax:\n\n```js\n// a predicate is a function with signature: (x) -> boolean\nvar predicate = function (x) { return x >= 0; };\n\n// a positive number\nvar Positive = t.refinement(t.Number, predicate);\n\nvalidate(-1, Positive).isValid(); // => false\nvalidate(1, Positive).isValid();  // => true\n```\n\n## Objects\n\n### Structs\n\n```js\n// an object with two numerical properties\nvar Point = t.struct({\n  x: t.Number,\n  y: t.Number\n});\n\nvalidate(null, Point).isValid();            // => false\nvalidate({x: 0}, Point).isValid();          // => false, y is missing\nvalidate({x: 0, y: 'a'}, Point).isValid();  // => false, y is not a number\nvalidate({x: 0, y: 0}, Point).isValid();    // => true\nvalidate({x: 0, y: 0, z: 0}, Point, { strict: true }).isValid(); // => false, no additional properties are allowed\n```\n\n### Interfaces\n\n**Differences from structs**\n\n- also checks prototype keys\n\n```js\nvar Serializable = t.interface({\n  serialize: t.Function\n});\n\nvalidate(new Point(...), Serializable).isValid(); // => false\n\nPoint.prototype.serialize = function () { ... }\n\nvalidate(new Point(...), Serializable).isValid(); // => true\n```\n\n## Lists and tuples\n\n**Lists**\n\n```js\n// a list of strings\nvar Words = t.list(t.String);\n\nvalidate(null, Words).isValid();                  // => false\nvalidate(['hello', 1], Words).isValid();          // => false, [1] is not a string\nvalidate(['hello', 'world'], Words).isValid();    // => true\n```\n\n**Tuples**\n\n```js\n// a tuple (width x height)\nvar Size = t.tuple([Positive, Positive]);\n\nvalidate([1], Size).isValid();      // => false, height missing\nvalidate([1, -1], Size).isValid();  // => false, bad height\nvalidate([1, 2], Size).isValid();   // => true\n```\n\n## Enums\n\n```js\nvar CssTextAlign = t.enums.of('left right center justify');\n\nvalidate('bottom', CssTextAlign).isValid(); // => false\nvalidate('left', CssTextAlign).isValid();   // => true\n```\n\n## Unions\n\n```js\nvar CssLineHeight = t.union([t.Number, t.String]);\n\nvalidate(null, CssLineHeight).isValid();    // => false\nvalidate(1.4, CssLineHeight).isValid();     // => true\nvalidate('1.2em', CssLineHeight).isValid(); // => true\n```\n\n## Dicts\n\n```js\n// a dictionary of numbers\nvar Country = t.enums.of(['IT', 'US'], 'Country');\nvar Warranty = t.dict(Country, t.Number, 'Warranty');\n\nvalidate(null, Warranty).isValid();             // => false\nvalidate({a: 2}, Warranty).isValid();           // => false, ['a'] is not a Country\nvalidate({US: 2, IT: 'a'}, Warranty).isValid(); // => false, ['IT'] is not a number\nvalidate({US: 2, IT: 1}, Warranty).isValid();   // => true\n```\n\n## Intersections\n\n```js\nvar Min = t.refinement(t.String, function (s) { return s.length > 2; }, 'Min');\nvar Max = t.refinement(t.String, function (s) { return s.length < 5; }, 'Max');\nvar MinMax = t.intersection([Min, Max], 'MinMax');\n\nMinMax.is('abc'); // => true\nMinMax.is('a'); // => false\nMinMax.is('abcde'); // => false\n```\n\n## Nested structures\n\nYou can validate structures with an arbitrary level of nesting:\n\n```js\nvar Post = t.struct({\n  title: t.String,\n  content: t.String,\n  tags: Words\n});\n\nvar mypost = {\n  title: 'Awesome!',\n  content: 'You can validate structures with arbitrary level of nesting',\n  tags: ['validation', 1] // <-- ouch!\n};\n\nvalidate(mypost, Post).isValid();             // => false\nvalidate(mypost, Post).firstError().message;  // => 'tags[1] is `1`, should be a `Str`'\n```\n\n# Customise error messages\n\nYou can customise the validation error message defining a function `getValidationErrorMessage(value, path, context)` on the type constructor:\n\n```js\nvar ShortString = t.refinement(t.String, function (s) {\n  return s.length < 3;\n});\n\nShortString.getValidationErrorMessage = function (value) {\n  if (!value) {\n    return 'Required';\n  }\n  if (value.length >= 3) {\n    return 'Too long my friend';\n  }\n};\n\nvalidate('abc', ShortString).firstError().message; // => 'Too long my friend'\n```\n\n## How to keep DRY?\n\nIn order to keep the validation logic in one place, one may define a custom combinator:\n\n```js\nfunction mysubtype(type, getValidationErrorMessage, name) {\n  var Subtype = t.refinement(type, function (x) {\n    return !t.String.is(getValidationErrorMessage(x));\n  }, name);\n  Subtype.getValidationErrorMessage = getValidationErrorMessage;\n  return Subtype;\n}\n\nvar ShortString = mysubtype(t.String, function (s) {\n  if (!s) {\n    return 'Required';\n  }\n  if (s.length >= 3) {\n    return 'Too long my friend';\n  }\n});\n\n```\n\n# Use cases\n\n## Form validation\n\nLet's design the process for a simple sign in form:\n\n```js\nvar SignInInfo = t.struct({\n  username: t.String,\n  password: t.String\n});\n\n// retrieves values from the UI\nvar formValues = {\n  username: $('#username').val().trim() || null,\n  password: $('#password').val().trim() || null\n};\n\n// if formValues = {username: null, password: 'password'}\nvar result = validate(formValues, SignInInfo);\nresult.isValid();             // => false\nresult.firstError().message;  // => 'Invalid value null supplied to /username: String'\n```\n\n## JSON schema\n\nIf you don't want to use a JSON Schema validator or it's not applicable, you can just use this lightweight library in a snap. This is the JSON Schema example of [http://jsonschemalint.com/](http://jsonschemalint.com/)\n\n```json\n{\n  \"type\": \"object\",\n  \"properties\": {\n    \"foo\": {\n      \"type\": \"number\"\n    },\n    \"bar\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"a\",\n        \"b\",\n        \"c\"\n      ]\n    }\n  }\n}\n```\n\nand the equivalent `tcomb-validation` counterpart:\n\n```js\nvar Schema = t.struct({\n  foo: t.Number,\n  bar: t.enums.of('a b c')\n});\n```\n\nlet's validate the example JSON:\n\n```js\nvar json = {\n  \"foo\": \"this is a string, not a number\",\n  \"bar\": \"this is a string that isn't allowed\"\n};\n\nvalidate(json, Schema).isValid(); // => false\n\n// the returned errors are:\n- Invalid value \"this is a string, not a number\" supplied to /foo: Number\n- Invalid value \"this is a string that isn't allowed\" supplied to /bar: \"a\" | \"b\" | \"c\"\n```\n\n**Note**: A feature missing in standard JSON Schema is the powerful [refinement](#refinements) syntax.\n\n# Api reference\n\n## ValidationResult\n\n`ValidationResult` represents the result of a validation. It containes the following fields:\n\n- `errors`: a list of `ValidationError` if validation fails\n- `value`: an instance of `type` if validation succeded\n\n```js\n// the definition of `ValidationError`\nvar ValidationError = t.struct({\n  message: t.String,                        // a default message for developers\n  actual: t.Any,                            // the actual value being validated\n  expected: t.Function,                     // the type expected\n  path: list(t.union([t.String, t.Number])) // the path of the value\n}, 'ValidationError');\n\n// the definition of `ValidationResult`\nvar ValidationResult = t.struct({\n  errors: list(ValidationError),\n  value: t.Any\n}, 'ValidationResult');\n```\n\n### #isValid()\n\nReturns true if there are no errors.\n\n```js\nvalidate('a', t.String).isValid(); // => true\n```\n\n### #firstError()\n\nReturns an object that contains an error message or `null` if validation succeeded.\n\n```js\nvalidate(1, t.String).firstError().message; // => 'value is `1`, should be a `Str`'\n```\n\n## validate(value, type, [options]) -> ValidationResult\n\n- `value` the value to validate\n- `type` a type defined with the tcomb library\n- `options` (optional) is an object with the following keys\n  - `path: Array<string | number>` path prefix for validation\n  - `context: any` passed to `getValidationErrorMessage` (useful for i18n)\n  - `strict: boolean` (default `false`) if `true` no additional properties are allowed while validating structs\n\n# Tests\n\nRun `npm test`\n\n# License\n\nThe MIT License (MIT)\n","_attachments":{},"homepage":"https://github.com/gcanti/tcomb-validation","bugs":{"url":"https://github.com/gcanti/tcomb-validation/issues"},"license":"MIT"}