{"_id":"node-restify-validation","_rev":"39-e211adf375cf751941f01eb71376667b","name":"node-restify-validation","description":"```diff -Maintener wanted ``` Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","dist-tags":{"latest":"1.3.0"},"versions":{"0.0.1":{"name":"node-restify-validation","version":"0.0.1","author":{"name":"Timo Behrmann"},"keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"underscore":"1.5.1","underscore.string":"2.3.3","validator":"1.3.0"},"devDependencies":{"restify":"2.6.0","grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-watch":"~0.4.4","grunt-mocha-cli":"~1.0.1","matchdep":"~0.1.1","should":"~1.2.2","sinon":"~1.7.3","grunt-mocha-cov":"0.0.7"},"description":"node-restify-validation ======================= Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","_id":"node-restify-validation@0.0.1","dist":{"shasum":"389da20ee89c3563891ac75bee2ef26864027448","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.0.1.tgz","integrity":"sha512-ne8AqMz6yQ6wns083/YIJmDS38v8bkn8YxM228vzcdW7RIOIJTF8AAE3ECiNEWui7BYaJ+zaTvmKGxf12BmGEQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIOgHZZncQqB8p3Q+skVUrtxkUdtiN2sniqv6ktYH3fAiBhnPHLuOFCn39ns+pt5528OhtO24TFNz2MXHGhpjF0fQ=="}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"directories":{}},"0.0.2":{"name":"node-restify-validation","version":"0.0.2","author":{"name":"Timo Behrmann"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"underscore":"1.5.1","underscore.string":"2.3.3","validator":"1.3.0"},"devDependencies":{"restify":"2.6.0","grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-watch":"~0.5.1","grunt-mocha-cli":"~1.0.1","matchdep":"~0.1.1","should":"~1.2.2","sinon":"~1.7.3","grunt-mocha-cov":"0.0.7"},"description":"node-restify-validation ======================= Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","_id":"node-restify-validation@0.0.2","dist":{"shasum":"feaae46090845cfe57281c607a1fdf39d972e02b","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.0.2.tgz","integrity":"sha512-twsnw82RFYplAnBugx3R3wZ/4T2JKuA0mv95tz18EzWlB3XVxQs8FWh+DqJNyRA+86WZmHb+pVtvWQb3bF78Bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClwfE8vODAdrSjcamU+1URn8f/DlSjzX7SkDtFUfppDAIhAPtyO2+GS5e3V0HROS6fn6aboAlsrExn0JDk5X6Iofjb"}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"directories":{}},"0.0.3":{"name":"node-restify-validation","version":"0.0.3","author":{"name":"Timo Behrmann"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"underscore":"1.5.1","underscore.string":"2.3.3","validator":"1.3.0"},"devDependencies":{"restify":"2.6.0","grunt":"~0.4.1","grunt-contrib-jshint":"~0.6.0","grunt-contrib-watch":"~0.5.1","grunt-mocha-cli":"~1.0.1","matchdep":"~0.1.1","should":"~1.2.2","sinon":"~1.7.3","grunt-mocha-cov":"0.0.7"},"description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","_id":"node-restify-validation@0.0.3","dist":{"shasum":"bd928989f98151600e44e942697c2ba318d38deb","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.0.3.tgz","integrity":"sha512-vIiPVxbuT4ZOJQ4hlEzhvcufEieoXjua8GcPN2gz2S/kWvUVxNgZVTEcGBi5PIQSyN/ZbC607eV2UnzHLSfV/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICpxEXyYJL7LsinjXeM35mOf0AYVq64JzPH3gNX0wy4CAiBKJFqYF68jtqE1U7HEDCTx++I1OQYZfJR2kc66eBUPew=="}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"directories":{}},"0.0.5":{"name":"node-restify-validation","version":"0.0.5","author":{"name":"Timo Behrmann"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"underscore":"~1.5.2","underscore.string":"~2.3.3","validator":"~1.5.1"},"devDependencies":{"restify":">=2.6.0","grunt":"~0.4.1","grunt-contrib-jshint":"~0.7.0","grunt-contrib-watch":"~0.5.1","grunt-mocha-cli":"~1.3.0","matchdep":"~0.3.0","should":"~2.0.2","sinon":"~1.7.3","grunt-mocha-cov":"~0.0.7","grunt-release":"~0.6.0"},"description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","_id":"node-restify-validation@0.0.5","dist":{"shasum":"a85982a302879bc8d58d0e5276517c38c923edb5","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.0.5.tgz","integrity":"sha512-l8z0i1wonCK5rdMhUI7Bz62iQZalSC8Ff+sijrBrzItRQd2HQgXM22ZKiz82x3V21gPkcdHaecBMnoZ6OyNs2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9EFKLJOgzNbiIBatlmBG7brjlVJqIDgplidTaR5H2SAIhANyJuDKAMb1B+7uLaqfJPM1gUtry7qQreT64ZESHWtO8"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"directories":{}},"0.0.6":{"name":"node-restify-validation","version":"0.0.6","author":{"name":"Timo Behrmann"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"underscore":"~1.5.2","underscore.string":"~2.3.3","validator":"~1.5.1"},"devDependencies":{"restify":">=2.6.0","grunt":"~0.4.1","grunt-contrib-jshint":"~0.7.0","grunt-contrib-watch":"~0.5.1","grunt-mocha-cli":"~1.3.0","matchdep":"~0.3.0","should":"~2.0.2","sinon":"~1.7.3","grunt-mocha-cov":"~0.0.7","grunt-release":"~0.6.0"},"description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation","_id":"node-restify-validation@0.0.6","dist":{"shasum":"887cff2183818331ff04bab3f238b5f9a25c6e52","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.0.6.tgz","integrity":"sha512-UvacRtvtmNeRyFqQ2sA53eBLn5ca0uSjUYyc5ausAyh+xr8rjGE/MwCmT2q6WnfTTyAhG815yhNo/99Cqpv/LA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlrjFAf3Ed/1Ta7DkiAS1p8td6SZSj57rKZrKScd10OQIgfMCObY2UE8tO1ckee/rVyISpuo302OKKHF5XEcM0TbU="}]},"_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"directories":{}},"0.0.7":{"name":"node-restify-validation","version":"0.0.7","author":{"name":"Timo Behrmann"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"lodash":"^2.4.1","underscore.string":"~2.3.3","validator":"~1.5.1"},"devDependencies":{"restify":">=2.6.0","grunt":"~0.4.1","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","grunt-mocha-cli":"~1.9.0","matchdep":"~0.3.0","should":"~4.0.4","sinon":"~1.10.2","grunt-mocha-cov":"~0.2.1","grunt-release":"~0.7.0"},"gitHead":"4b8ecc756336594cc4c87fb4160dcec16974e684","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation","_id":"node-restify-validation@0.0.7","_shasum":"f4042a14509b16174ccf3b00495513feee476590","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"dist":{"shasum":"f4042a14509b16174ccf3b00495513feee476590","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.0.7.tgz","integrity":"sha512-mh8an+5JqmrdDtqUKXPVg0sZY0rM9NWp0WDaqE0PjLSkakY3071ZjS4WZbeJe858Z2obsMrC8qjaITprrGhLjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPx8PylWHVIHqORpAXyYw1rOkECk5jza5IrTPXzuD5nAiBkW/hiaiMojicd11LgSZjV4l1/fRB6Om8IdMT4AEjrvA=="}]},"directories":{}},"0.1.0":{"name":"node-restify-validation","version":"0.1.0","author":{"name":"Timo Behrmann"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"lodash":"^2.4.1","underscore.string":"~2.3.3","validator":"~3.16.1"},"devDependencies":{"restify":">=2.8.1","grunt":"~0.4.5","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","grunt-mocha-cli":"~1.9.0","matchdep":"~0.3.0","should":"~4.0.4","sinon":"~1.10.3","grunt-mocha-cov":"~0.2.1","grunt-release":"~0.7.0"},"gitHead":"5fe97a36e9b531eaf046c58c265c2508a634fdc1","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation","_id":"node-restify-validation@0.1.0","_shasum":"e051cfbf7a37e70ffef8ac3d403661e35163ea26","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"dist":{"shasum":"e051cfbf7a37e70ffef8ac3d403661e35163ea26","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.1.0.tgz","integrity":"sha512-mJGP0vnUxcQOoVu6Q1ArlHPEvf+vdLpQrfLo9OSvXEapFex4lRWoJY6wwgNP/rhTuTt08lGptnR2JTrd3u0eeA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAai6/wF7E2sgmx8hoKs8+Vq5Q6nGRrHrMgf+6WMDsK2AiEA7PydVAX34K/cXJJks1kXWIoOwgiDjlKE13fqDI/JJ3Q="}]},"directories":{}},"0.1.2":{"name":"node-restify-validation","version":"0.1.2","author":{"name":"Timo Behrmann"},"contributors":{"name":"Marcos Sanz"},"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"grunt test"},"main":"lib/index","dependencies":{"lodash":"^2.4.1","underscore.string":"~2.3.3","validator":"~3.22.0"},"devDependencies":{"restify":">=2.8.1","grunt":"~0.4.5","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","grunt-mocha-cli":"~1.10.0","matchdep":"~0.3.0","should":"~4.2.1","sinon":"~1.11.1","grunt-mocha-cov":"~0.3.0","grunt-release":"~0.7.0"},"gitHead":"881084d0b2c1a14213face238460f446f71920fe","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation","_id":"node-restify-validation@0.1.2","_shasum":"7b55732eba64c735fe70f2f26ddf301363b60041","_from":".","_npmVersion":"2.1.8","_nodeVersion":"0.10.32","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"dist":{"shasum":"7b55732eba64c735fe70f2f26ddf301363b60041","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-0.1.2.tgz","integrity":"sha512-UIuNzDdxEfbWoKNUzoJ4VCIZ01u1p9Zn2awhFMuLom9mFRTt2Tqmhegbc+0RoCFqIw6YRmv0ErVvjWYi4d5lRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs79crgbSbPMCFkEAfsZ5apSNaX2g4C51i/j2ulTTcLAIhAMp8a++Gon7wBLWWKERXsyJ11BOT4KeJsBSJmf0uapiS"}]},"directories":{}},"1.0.3":{"name":"node-restify-validation","version":"1.0.3","author":{"name":"Timo Behrmann"},"contributors":[{"name":"Marcos Sanz"},{"name":"Guillaume Chauvet"}],"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"mocha --recursive test"},"main":"lib/index","dependencies":{"lodash":"^2.4.1","validator":"3.7.x"},"devDependencies":{"restify":">=2.8.1","mocha":"^2.0.1","sinon":"^1.11.1","should":"^4.3.0"},"gitHead":"8e3241bb8d94aeb7bcade0f6d8c855790ea1a4ab","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation","_id":"node-restify-validation@1.0.3","_shasum":"5dced783c960059a5ddaf6fafcf45e84f898a482","_from":".","_npmVersion":"2.5.0","_nodeVersion":"1.1.0","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"dist":{"shasum":"5dced783c960059a5ddaf6fafcf45e84f898a482","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-1.0.3.tgz","integrity":"sha512-/l/xsDEzNNw6cwewVLG8J23FcDKhBvnQkNev6JY2/ldYOyBv+CQJ7Gl46UXUdf8z1hwdXPMMrvAsvD7an7zoXQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYul1V5C+IPUKUnryDh7jSgbvgyenXIEx850ULVSZ7+gIgS6yT2nmUBJA7Ga5Y5HcMpIleKuy0g1g/b4Uqckj737g="}]},"directories":{}},"1.0.4":{"name":"node-restify-validation","version":"1.0.4","author":{"name":"Timo Behrmann"},"contributors":[{"name":"Marcos Sanz"},{"name":"Guillaume Chauvet"}],"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"mocha --recursive test"},"main":"lib/index","dependencies":{"lodash":"^2.4.1","validator":"3.7.x"},"devDependencies":{"restify":">=2.8.1","mocha":"^2.0.1","sinon":"^1.11.1","should":"^4.3.0"},"gitHead":"2b19ec9856fe5f762690086c1b6b3ffdea78c36a","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation","_id":"node-restify-validation@1.0.4","_shasum":"3ecbf1cc423b3136e0b3e8e0875ff536a82618cb","_from":".","_npmVersion":"2.6.1","_nodeVersion":"1.4.1","_npmUser":{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"dist":{"shasum":"3ecbf1cc423b3136e0b3e8e0875ff536a82618cb","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-1.0.4.tgz","integrity":"sha512-Cwp1ENVMwknLpivsE67H6IqUbUVGl2EqS7vSZptQJCqKgQdeqPz+cxsquosEJBIbNqGTVbmI4X/n8PUdguSOng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6dCxgwOzSdWs1MGmL8SHeE49BkHDEVxu89F3Rzdm8qQIgVg4dsuVjy8rfFAB5PcgvtTnzsZm+DscbV6Pye3uIS1E="}]},"directories":{}},"1.0.5":{"name":"node-restify-validation","version":"1.0.5","author":{"name":"Timo Behrmann"},"contributors":[{"name":"Marcos Sanz"},{"name":"Guillaume Chauvet"}],"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"mocha --recursive test"},"main":"lib/index","dependencies":{"lodash":"^2.4.1","validator":"3.7.x"},"devDependencies":{"restify":">=2.8.1","mocha":"^2.0.1","sinon":"^1.11.1","should":"^4.3.0","supertest":"^1.0.1"},"gitHead":"0ac4a26a34e53a6aa5556a208757466fb6034423","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation#readme","_id":"node-restify-validation@1.0.5","_shasum":"348d8da8ab4fcea54cced71ffaa8bf9c18e215fc","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.3","_npmUser":{"name":"gchauvet","email":"g.chauvet@bimedia.com.fr"},"dist":{"shasum":"348d8da8ab4fcea54cced71ffaa8bf9c18e215fc","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-1.0.5.tgz","integrity":"sha512-YEEQePhh5bDhJ4odqfS2KPsKdFpkE9FEejCCv86W4Nf3ttc9zZH1+wdRuWRXFVQ8a/foKMZJW42N9iOAADe+eg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1h9VkiLLiSXbRTaOT3sX7yP+R4R7AUxiUJ1xxjjkVvAiBjJVe6aij3sR59cw8s7akAkCwzPC2u9n/aOHYXw3TeKw=="}]},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},{"name":"gchauvet","email":"g.chauvet@bimedia.com.fr"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/node-restify-validation-1.0.5.tgz_1460973505559_0.38805451430380344"},"directories":{}},"1.1.1":{"name":"node-restify-validation","version":"1.1.1","author":{"name":"Timo Behrmann"},"contributors":[{"name":"Marcos Sanz"},{"name":"Guillaume Chauvet"},{"name":"Stefan Schärmeli"}],"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"mocha --recursive test"},"main":"lib/index","dependencies":{"lodash":"3.10.x","validator":"3.22.x"},"devDependencies":{"restify":">=2.8.1","mocha":"3.1.x","sinon":"1.11.x","should":"11.1.x","supertest":"2.0.x"},"gitHead":"aeb7d41a70f2bf3ed474fb78c5dc05568837fe3c","description":"Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation#readme","_id":"node-restify-validation@1.1.1","_shasum":"73240e5f0f8bcf7f3bd2297400d1e1d034b95bdb","_from":".","_npmVersion":"3.5.2","_nodeVersion":"4.2.6","_npmUser":{"name":"gchauvet","email":"gchauvet@zatarox.com"},"dist":{"shasum":"73240e5f0f8bcf7f3bd2297400d1e1d034b95bdb","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-1.1.1.tgz","integrity":"sha512-dceb+gSHyDnY+lUrbcAmODyuCDgcdN5B0MxGklR2UiGjP0P36mluEbh3VAxs32FTrSYMGKi3xGLGg6UgonoqFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCo+laYrW3yL8QRadJnF001UxG4lBDk99WBUr5Zc/XbJAIgJZs26kC5FO+0oxFkPfY6VvbVyYxLjVOCwOFteWwF4Gs="}]},"maintainers":[{"name":"z0mt3c","email":"timo.behrmann@gmail.com"},{"name":"gchauvet","email":"g.chauvet@bimedia.com.fr"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/node-restify-validation-1.1.1.tgz_1484166333043_0.31584360683336854"},"directories":{}},"1.3.0":{"name":"node-restify-validation","version":"1.3.0","author":{"name":"Timo Behrmann"},"contributors":[{"name":"Marcos Sanz"},{"name":"Guillaume Chauvet"},{"name":"Stefan Schärmeli"}],"license":"MIT","keywords":["rest","api","restify","validation"],"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"scripts":{"test":"mocha --recursive test"},"main":"lib/index","dependencies":{"lodash":"3.10.x","validator":"3.22.x"},"devDependencies":{"restify":">=2.8.1 <5.0.0","mocha":"3.1.x","sinon":"1.11.x","should":"11.1.x","supertest":"2.0.x","coveralls":"2.12.x"},"gitHead":"118a53e80bf07629a672fedf8bfd11b425e43210","description":"```diff -Maintener wanted ``` Validation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js","homepage":"https://github.com/z0mt3c/node-restify-validation#readme","_id":"node-restify-validation@1.3.0","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"andrewzey","email":"andrew@andrewzey.com"},"dist":{"integrity":"sha512-KDAEwhgiVA0OqIwrmHwnk0Fz8F1LjmlL42reWC0d8XnpRyUyhOXfgB4U866mrB691U9ty3X5Bw/p34rSSxWLOA==","shasum":"ad5a31ff5b54569b51c3a93bd5112f950a4ff4a3","tarball":"https://registry.npmjs.org/node-restify-validation/-/node-restify-validation-1.3.0.tgz","fileCount":21,"unpackedSize":126941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOkvXCRA9TVsSAnZWagAAEqoP/A2D3T65koYe/I9Tx/Vf\n6krdYgL97qjriyeg2WyDadDQne0gKoBS3cK8owGYtQ4u3l0432F440Hz0BT/\nXnY/XLAR+CPK5OzMwWAQtiAgG7ySm7pkSMUuSdD6f9AvNCf5hBjIt1Hjw0YP\nfCi5C/QiVxE4tdYPdX4BuKPCTO+k2B7qgLjRbRR3yZaP+6yoHIXUS2yIHwQH\nqnO1FCDE5BKxpcszKxTI/+PzeK+qW+79T9/EGdERNOUkFcz/VSVJ+iREjGG6\nXSM52VRoGWw/6BM7pw2wvDLQOKvBvJjbQ5Dpvzc2d5Ev/IG9xoOgXObGFDYa\nzBKuyGRjwBOSmIbZDfkJTZB+zQ0nhHUkQ/OF21jd0Ww/lDx26ghvwGoLM7UQ\nG9VFyDEOjKpnzk/T8A43co5LPxWS9s4oTgKZ0s9yEc8CCR0oim5gHQKQCTIu\n6xqmtbvbmnbwnpVT+WsfojQU6sb2Q/j6+KOd6MxNRytDEtBkTCLL2icAhVRd\nm1IqqKXhgJd2i3Ezl64mK9x8TTzvDpT2dQsJebKLOsvgdykLl4ZVGdYOTWUJ\nfOddq3KJXkvzOUxB+RHb+mDOn0Otar6F8l9iZBxqna+2wyNehM/HNCWhbQuN\n6X3toEzlLCOnNNpbeQVOQp+osly4gvTUp0l4cSWBwpLhUewraTGln0ARhRyB\n4i+X\r\n=TzVS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEscinIZ3/kIlsJneHVl1vfiKHobg2igSVXjW2uPa9RKAiEAqLuT5xMCtxt8efhIc/bx/o+815e75LGM5ULVaoA+HrE="}]},"maintainers":[{"name":"gchauvet","email":"g.chauvet@bimedia.com.fr"},{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-restify-validation_1.3.0_1530547159080_0.6037758685474133"},"_hasShrinkwrap":false}},"readme":"# node-restify-validation\n```diff\n-Maintener wanted\n```\nValidation for REST Services built with [node-restify](https://github.com/mcavage/node-restify) in node.js\n\n[![Build Status](https://travis-ci.org/gchauvet/node-restify-validation.png)](https://travis-ci.org/gchauvet/node-restify-validation)\n[![Coverage Status](https://coveralls.io/repos/gchauvet/node-restify-validation/badge.png?branch=master)](https://coveralls.io/r/gchauvet/node-restify-validation?branch=master)\n[![Dependency Status](https://gemnasium.com/gchauvet/node-restify-validation.png)](https://gemnasium.com/gchauvet/node-restify-validation)\n\n## Requirements\n* node-restify-validation requires at least restify 2.6.0 since the validation model is defined in the route-object. (https://github.com/mcavage/node-restify/pull/408)\n\n## Simple request validation with node-restify\nGoal of this little project is to have the validation rules / schema as close to the route itself as possible on one hand without messing up the logic with further LOCs on the other hand.\n\nExample:\n```javascript\n    var server = restify.createServer();\n    server.use(restify.queryParser());\n    server.use(restifyValidation.validationPlugin( {\n        // Shows errors as an array\n        errorsAsArray: false,\n        // Not exclude incoming variables not specified in validator rules\n        forbidUndefinedVariables: false,\n        errorHandler: restify.errors.InvalidArgumentError\n    }));\n\n    server.get({url: '/test/:name', validation: {\n      resources: {\n        name: { isRequired: true, isIn: ['foo','bar'] }\n      },\n      queries : {\n        status: { isRequired: true, isIn: ['foo','bar'] },\n        email: { isRequired: false, isEmail: true },\n        age: { isRequired: true, isNatural: true }\n      }\n    }}, function (req, res, next) {\n        res.send(req.params);\n    });\n\n    // Ensure there is a file uploaded:\n    server.post({url: '/test/:name', validation: {\n      resources: {\n        name: { isRequired: true, isIn: ['foo','bar'] }\n      },\n      files : {\n        myfile: { isRequired: true }\n      }\n    }}, function (req, res, next) {\n        res.send(req.params);\n    });\n\n    // Checks the body of the request contains a json payload with a `person` object with the following attributes:\n    //   firstName - required\n    //   middle - optional\n    //   lastName - required\n    //   emails - optional array of email addresses with at most 5 elements\n    server.put({url: '/products/:id/labels/:label', validation: {\n      resources: {\n        id: { isRequired: true, isNatural: true },\n        label: { isRequired: true }\n      },\n      queries : {\n        status: { isRequired: true, isIn: ['foo','bar'] }\n      },\n      content: {\n        person: {\n            isObject: {\n                properties: {\n                    firstName: { isRequired: true },\n                    middle: { isRequired: false },\n                    lastName: { isRequired: true },\n                    emails: {\n                        isArray: {\n                            maxLength: 5,\n                            element: { isEmail: true }\n                        }\n                    }\n                }\n            }\n        },\n        label: { isRequired: true }\n      }\n    }}, function (req, res, next) {\n        res.send(req.params);\n    });\n\n    // Validate header fields\n    server.get({url: '/test/something/:name', validation: {\n      resources: {\n        name: { isRequired: true, isIn: ['foo','bar'] }\n      },\n      headers: {\n        requestid: { isRequired: true }\n      }\n    }}, function (req, res, next) {\n        res.send(req.params);\n    });\n\n    // Validate header fields\n    server.get({url: '/test/something/:name', validation: {\n      resources: {\n        name: { isRequired: true, isIn: ['foo','bar'] }\n      },\n      headers: {\n        requestid: { isRequired: true }\n      }\n    }}, function (req, res, next) {\n        res.send(req.params);\n    });\n\n    server.listen(8001, function () {\n        console.log('%s listening at %s', server.name, server.url);\n    });\n```\n\n\n## Use\nSimply install it through npm\n\n    npm install node-restify-validation\n\n\n## Documentation powered by swagger\nOn top of the validation schema the [node-restify-swagger](https://github.com/z0mt3c/node-restify-swagger) library should later-on generate the swagger resources to provide a hands-on documentation.\n\n\n## Supported validations\n\n```javascript\n    isRequired: true | function()\n    equalTo: {'fieldName'}\n```\n\nPowered by [node-validator](https://github.com/chriso/validator.js).\n\n    contains\n    equals\n    is\n    isAfter\n    isAlpha\n    isAlphanumeric\n    isBefore\n    isBoolean\n    isCreditCard\n    isDate\n    isDecimal\n    isDivisibleBy\n    isEmail\n    isFloat\n    isHexColor\n    isHexadecimal\n    isIP\n    isIPNet\n    isIPv4\n    isIPv6\n    isIn\n    isInt\n    isNatural\n    isLowercase\n    isNumeric\n    isUUID\n    isUUIDv3\n    isUUIDv4\n    isUppercase\n    isUrl\n    max\n    min\n    not\n    notContains\n    notIn\n    notRegex\n    regex\n\n## Nested validation\n\nValidation nesting allows validating content that contains objects and arrays.\n\n### isArray\n\nValidates that specified value is an array.  It can take a boolean value or\nan object with the following attributes:\n\n- minLength - minimum number of elements (use with `{ isRequired: true }`)\n- maxLength - maximum number of elements\n- element - validation specification for elements inside the array\n\n\n```\n{\n  content: {\n    comments: {\n        isArray: true\n    },\n    emailAddresses: {\n        isRequired: true,\n        isArray: {\n            minLength: 1,\n            maxLength: 10,\n            element: { isEmail: true }\n        }\n    }\n  }\n}\n```\n\n### isObject\n\nValidates that the specified value is an object.  It can take a boolean value or\nand object with the following attributes:\n\n- properties: validation specification for the contents of the object\n\n```\n{\n    content: {\n        data: {\n            isObject: true\n        },\n        person: {\n            isRequired: true,\n            isObject: {\n                properties: {\n                    first: { isRequired: true },\n                    last: { isRequired: true },\n                    middle: { isRequired: false },\n                    address: {\n                        isObject: {\n                            properties: {\n                                street: { isRequired: true },\n                                city: { isRequired: true },\n                                state: { isRequired: true }\n                            }\n                        }\n                    },\n                    emails: {\n                        isArray: {\n                            maxLength: 5,\n                            element: { isEmail: true }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n```\n\n### isDictionary\n\nValidates that specified value is a dictionary.  It can take a boolean value or\nan object with the following attributes:\n\n- minLength - minimum number of elements (use with `{ isRequired: true }`)\n- maxLength - maximum number of elements\n- key - validation specification for the dictionary keys\n- value - validation specification for the dictionary values\n\n\n```\n{\n  content: {\n    users: {\n        isDictionary: {\n            minLength: 1,\n            maxLength: 10,\n            key: { isEmail: true },\n            value: {\n                isObject: {\n                    name: { isRequired: true },\n                    phone: { isRequired: true },\n                    year: { isInt: true }\n                }\n            }\n        }\n    }\n  }\n}\n```\n\n## Conditional validations\nAll validation parameters are able to deal with functions as parameters.\n\nFor instance the parameterMatches-Condition:\n```javascript\nmodule.exports.paramMatches = function (params) {\n    return conditionalChecker(params, function (matches, value) {\n        var result;\n        if (_.isArray(matches)) {\n            result = _.contains(matches, value);\n        } else {\n            result = _.isEqual(matches, value);\n        }\n        return result;\n    });\n};\n```\nWhich will be used for instance as follows:\n\n```javascript\n    var validation = isRequired: require('node-restify-validation');\n    //...\n    parameter: { isRequired: validation.when.paramMatches({(scope: '...',) variable: 'param1', matches: ['a', 'b']}) }\n```\n\nAs result the parameter will only be required when param1 matches a or b. The called method will have a context (this) containing the following information:\n\n* req: the request object\n* scope: (real) current scope validation\n* validationModel: the complete validation model\n* validationRules: the validationRules for the current atribute\n* options: the options which have initially been passed\n* recentErrors: errors which have been computed until now\n\n## Models\n\nThe request `resource`, `query` and `headers` contain string values, even though they may\nbe representing numbers, booleans, Dates or other types.\n\nAn optional `model` property can be specified to transform the request value to a specific type.\nWhen validation of a property succeeds and a `model` is specified, the original request value\nis replaced with the transformed value.\n\n```javascript\n// Creates an instance of date from a numeric or string value\nfunction DateModel(value) {\n    return new Date(Number(value) || value);\n}\n\nserver.get({url: '/search', validation: {\n    queries: {\n        text: { isRequired: true },\n        from: { model: DateModel },\n        to: { model: DateModel },\n        summary: { isBoolean, model: Boolean },\n        page: { isNatural: true, model: Number }\n    }\n}, function (req, res, next) {\n    console.log(\"Query:\", JSON.stringify(req.query));\n    res.send(req.query);\n}))\n```\n\nWhen handling the request `GET /search?text=Hello&from=2017-12-1&to=1514678400000&summary=true&page=3`,\nthe query property types will be `string`, `number`, `Date`, `Date` and `number`, respectively\nand the following will be logged:\n\n```\nQuery: {\"text\":\"Hello\",\"from\":\"2017-12-01T06:00:00.000Z\",\"to\":\"2017-12-31T00:00:00.000Z\",\"summary\":true,\"page\":3}\n```\n\nWithout specifying the `model` settings, the query property types would have been strings and the following would\nhave been logged:\n\n```\nQuery: {\"text\":\"Hello\",\"from\":\"2017-12-1\",\"to\":\"1514678400000\",\"summary\":\"true\",\"page\":\"3\"}\n```\n\n### Validator Models\n\nTo avoid having to specify models in your validation configurations, you can\nconfigure models to be automatically applied based on the validator.\n\n```javascript\nserver.use(restifyValidation.validationPlugin({\n    validatorModels: {\n        isInt: Number\n    }\n}));\n```\n\nWhen you specify the standard `restifyValidation.validatorModels`, it will supply models\nfor the following validators:\n\n- isBoolean - converts value to `boolean`\n- isDate - converts value to `Date`\n- isDecimal - converts value to `number`\n- isDivisibleBy - converts value to `number`\n- isFloat - converts value to `number`\n- isInt - converts value to `number`\n- isNatural - converts value to `number`\n\nThe `validatorModels` configuration can also take an array of settings.\nThe following example uses `restifyValidation.validatorModels` but then overrides\nthe model for the `isDate` validator to map values to `moment` rather than to `Date`.\n\n```javascript\nvar moment = require('moment');\nserver.use(restifyValidation.validationPlugin({\n    validatorModels: [\n        restifyValidation.validatorModels,\n        { isDate: moment }\n    ]\n}));\n```\n\n## Inspiration\nnode-restify-validation was & is inspired by [backbone.validation](https://github.com/thedersen/backbone.validation).\nIn terms of validation node-restify-validation makes use of [node-validator](https://github.com/chriso/node-validator).\n\n## License\nThe MIT License (MIT)\n\nCopyright (c) 2014 Timo Behrmann, Guillaume Chauvet\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","maintainers":[{"name":"gchauvet","email":"g.chauvet@bimedia.com.fr"},{"name":"z0mt3c","email":"timo.behrmann@gmail.com"}],"time":{"modified":"2022-06-21T21:05:32.899Z","created":"2013-07-15T21:08:49.591Z","0.0.1":"2013-07-15T21:08:52.503Z","0.0.2":"2013-07-22T08:54:43.941Z","0.0.3":"2013-07-22T09:00:42.412Z","0.0.5":"2013-10-24T06:54:07.069Z","0.0.6":"2013-11-28T13:02:44.320Z","0.0.7":"2014-06-27T08:46:04.339Z","0.1.0":"2014-07-18T08:30:02.159Z","0.1.2":"2014-11-25T14:22:36.142Z","1.1.0":"2015-02-04T08:40:50.660Z","0.1.3":"2015-02-09T11:37:33.995Z","1.0.3":"2015-02-11T08:59:22.677Z","1.0.4":"2015-03-05T18:53:11.876Z","1.0.5":"2016-04-18T09:58:26.701Z","1.1.1":"2017-01-11T20:25:33.917Z","1.3.0":"2018-07-02T15:59:19.152Z"},"author":{"name":"Timo Behrmann"},"repository":{"type":"git","url":"git://github.com/z0mt3c/node-restify-validation.git"},"homepage":"https://github.com/z0mt3c/node-restify-validation#readme","keywords":["rest","api","restify","validation"],"bugs":{"url":"https://github.com/z0mt3c/node-restify-validation/issues"},"license":"MIT","readmeFilename":"README.md","contributors":[{"name":"Marcos Sanz"},{"name":"Guillaume Chauvet"},{"name":"Stefan Schärmeli"}],"users":{"ebiven":true,"samclayton":true,"vparaskevas":true}}