{"_id":"validationator","_rev":"28-479e269dd4dafdc18cb57192aece5f0d","name":"validationator","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation, and much more.","dist-tags":{"latest":"2.0.4"},"versions":{"1.0.0":{"name":"validationator","version":"1.0.0","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"dist/bundle.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"webpack"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","dependencies":{"@babel/core":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","babel-loader":"^8.0.0-beta.0","chai":"^4.1.2","eslint-config-standart":"^0.2.0","mocha":"^4.1.0","webpack":"^3.10.0"},"devDependencies":{"eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1"},"gitHead":"9e070aed0c9afe179cfa4e1dbcb5f1ae7f0805bf","_id":"validationator@1.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-qlGPEcNXyaTUNrG8ZB68FuOxIODu7EfEMM8dGIe2L14api6FCqv6aWKXtRsUtElHy6yyBZpw1WtF6efzo6606g==","shasum":"43a40f1f479658ac2a981aa49d0d95351d065688","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjJpy4YRQRe1QkzwGHU3f6AndFeiV2yegP3pd0ft/C8AIhAKHRt59OIj7qTkt+wz+/pFNLgPswgG9eG63c/jHqnrpF"}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.0.tgz_1515484623376_0.9573259791359305"}},"1.0.1":{"name":"validationator","version":"1.0.1","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"webpack"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","dependencies":{"@babel/core":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","babel-loader":"^8.0.0-beta.0","chai":"^4.1.2","eslint-config-standart":"^0.2.0","mocha":"^4.1.0","validationator":"^1.0.0","webpack":"^3.10.0"},"devDependencies":{"eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1"},"gitHead":"9e070aed0c9afe179cfa4e1dbcb5f1ae7f0805bf","_id":"validationator@1.0.1","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-SeK3FKKm8ZvRFnVbHcizF6pmG9fFT+rYxT2XtyKsSPnfvZJJoF6v5NJnPhBUavI35m1EhxqRLXaNqjWvY0KMAQ==","shasum":"a2ccd88ec583db18dd66917b9453ca5bb3a41298","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9IMJBCsT6tqI6BBmfi6cX3wKV9JL0kAMGPhJcIG54BAIga7tol0r1pf9KD80CoiSp7eZQ49zVoOz/djchwMzoF4g="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.1.tgz_1515487082523_0.026629820466041565"}},"1.0.2":{"name":"validationator","version":"1.0.2","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"dist/bundle.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"webpack"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","dependencies":{"@babel/core":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","babel-loader":"^8.0.0-beta.0","chai":"^4.1.2","eslint-config-standart":"^0.2.0","mocha":"^4.1.0","validationator":"^1.0.0","webpack":"^3.10.0"},"devDependencies":{"eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1"},"_id":"validationator@1.0.2","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-/XEgaTSh1FhElJPl29dkFZI2q+9vL9tb60iltCpMTUNp83JP8lKGJYhcpOm/UKnM8aF0Wsmk76SRHzp6iBqPSw==","shasum":"3b671571c66030ace02db7d8c85e3804439718f2","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPO4pY6uhTbZQ1lWSfwjnfxfuJ24AriwxtxmLvBwK+DAiBNXHns0DuT9Fsou2KCU9c3UIGL8MYoWzDCOKLZ1Q38SA=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.2.tgz_1515487311540_0.8953103485982865"}},"1.0.3":{"name":"validationator","version":"1.0.3","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"webpack"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","dependencies":{"@babel/core":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","babel-loader":"^8.0.0-beta.0","chai":"^4.1.2","eslint-config-standart":"^0.2.0","mocha":"^4.1.0","validationator":"^1.0.0","webpack":"^3.10.0"},"devDependencies":{"eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1"},"_id":"validationator@1.0.3","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-+tab/bVLpg9oGlgTXA84XzgxjdlO91hMyDe1/o7cJuNxbxB97p1E/ffLTqwCKasu3IUpMOKUfRgrq07PSUGt4A==","shasum":"be4a5efbe6b429dc6b5c35cb78e265105404add9","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDypQrJxJByLM0tW+COtTBCcC7dkRmNW3r7ZFMp3ouRnwIhANL6DBJL32lTxQiNwQ6Vn3q27IwOmzslU+5YgCGA6iMK"}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.3.tgz_1515487357909_0.7694995081983507"}},"1.0.4":{"name":"validationator","version":"1.0.4","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"webpack"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","dependencies":{"@babel/core":"^7.0.0-beta.37","@babel/preset-env":"^7.0.0-beta.37","babel-loader":"^8.0.0-beta.0","chai":"^4.1.2","eslint-config-standart":"^0.2.0","mocha":"^4.1.0","validationator":"^1.0.0","webpack":"^3.10.0"},"devDependencies":{"eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1"},"_id":"validationator@1.0.4","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-j3wjk9WB4zbk/7q5ckfYCsyYS0o7Jv1n1wXxF2Zs5Gf34FDjO99SyP9gGMMo7DkZXMQx5CjJTyUk1MODSYIFlQ==","shasum":"d1b8f5ad3408038672add9c963b66663c1f11896","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWxLqlBfoXUCC6I7LiINBjJ8n9UEO5OyQtKioP7rim1AiAktMX3ihgnR8YZ1BtOroMy+ed2u055d7gFS0FDDbJVfQ=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.4.tgz_1515489436164_0.9132113924715668"}},"1.0.5":{"name":"validationator","version":"1.0.5","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"gitHead":"aac53fc7d9129f90c49874324cefc9001b01d662","_id":"validationator@1.0.5","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-E4lKshQ9S3RW7b5nCIoCgDm8OTyR/EB7z1CURiD0xvk6ATW2bPfQhK3++eRvUemHWNwJxCTXoPN6DkfIeJmvoQ==","shasum":"1f8c40db41c30cbe594d3a568101cd996042d5c0","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVIhUEAHP9vEv4g1nHrgIKksBq3QR1k40IF9n6pQu2HAiEAxGQ08CeqvGXmyGtJz1IH0yK0mLc+MjkC+VH59dNKuxs="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.5.tgz_1515575110801_0.39963393472135067"}},"1.0.6":{"name":"validationator","version":"1.0.6","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"gitHead":"aac53fc7d9129f90c49874324cefc9001b01d662","_id":"validationator@1.0.6","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-KAq28KIMOh5xY15xhUXTFaFwZrrSEphXXXLz7u+BeE+Zbei0ZwaPGbAIrnp+eUdEP2Fh9ea5KWJmHgpZZmpa3A==","shasum":"eaea58fc127cac91c4e398b8830d222aadd76414","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeeYtn4A4OwDyvHy8mol5ALs03I/CT5THGICzdiATzhQIgOzh9bM1/kPYjs0foKsGO/5JZsioSyOaphMBkf8okjok="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.6.tgz_1515575224300_0.9255312012974173"}},"1.0.7":{"name":"validationator","version":"1.0.7","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"gitHead":"6b9e25e75803d77e88f28c0240c7d051da266cd6","_id":"validationator@1.0.7","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-MjwfW0pe0uJrIRHJTjg+UcQGIRhEYzP+sPkIRTdegm8Ow8E8IiHXIYSA1J+e4flp8sOfdG4RJCugSwCAwIUcZg==","shasum":"e6ce4de29f190ce5d4b5ca253f0841e9d6174e9f","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGg8ckzkKN3nHjnmxgEAwyQ1oGaf3/HAjKIJqIRu3bheAiAY+Ne758KbTBflVdawhUNZwWjdcLS5MlpCMm3z/PnhhA=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.7.tgz_1515575446494_0.6657565347850323"}},"1.0.8":{"name":"validationator","version":"1.0.8","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"dependencies":{"validationator":"^1.0.7"},"gitHead":"2511178c4a6a5eb9213806a2f63191c3d27b0934","_id":"validationator@1.0.8","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-TzhK+bemQ+AHUuDng+6XSiGGvXjFT0k5f6twSxfA1sUWxfhzvGfkqfdJsuuqdjqUI7KTczUWX5xlGfZsdz4tGw==","shasum":"fab4dd396f69931080c3cf51ec7708c8a6d9c2a7","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.8.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEQm+YNS4CVjCMcaOuz08rv/QHdlGCsC5jFeQV/ZVf1gIgZ+AOahY0kLzmcq9jg/y+CKE7KLKW3frywJEqahPUdo4="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.8.tgz_1515575631910_0.840427144896239"}},"1.0.9":{"name":"validationator","version":"1.0.9","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"dependencies":{"validationator":"^1.0.7"},"gitHead":"0e0d9bd9fb6a82dd3f7958be038e31942e5ae823","_id":"validationator@1.0.9","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-hOgag0VJeVbPkeI0sRsvziAbX7ibHgGSav4HR6lQs8xHWZdxDGAK8fj+9kLXZuJL6gEOVfZzzXyegovFMO8VRA==","shasum":"5f03fdf550f9505b61dcd2a3f45b728c597cfae5","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.0.9.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICFXmUzN3uy8D+utJR8zxyFR+/skhaflvB/qUwqQi4spAiAd6rQiLfyXDNRnCJ0JdNYvAPktxi+s8gl4fmMAVJUpkg=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.0.9.tgz_1516060300045_0.664235434262082"}},"1.1.0":{"name":"validationator","version":"1.1.0","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"src/index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"dependencies":{"validationator":"^1.0.7"},"gitHead":"055dc261e0fe89ac8b471bbb071ba36fbb19194c","_id":"validationator@1.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-/5v7rYFBU1/4mZlDoGL50z+m5YHbqyizMZDxoZanwoglKjZ6dwtvS+V93g1SWvDU0iZqwytcIhM+e4JHPsqmIw==","shasum":"19067a30dc9d65133b92df3d1e8baaa9893cc1bb","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDEh4UdmxE+ZAPNxGjGRix5MyoFWcaR3RTXon7kSz/aWAiEAmxhfx56Xy8eUhA5dlawL26jYVFArgJn0oYs3RqItuZo="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.0.tgz_1516061420141_0.38211831427179277"}},"1.1.1":{"name":"validationator","version":"1.1.1","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"dependencies":{"ians-utils":"^1.0.0","validationator":"^1.0.7"},"gitHead":"a8dab6a615df379069f75d790b795958423a8c50","_id":"validationator@1.1.1","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-GaaI+Pb0unNANhL8iDX2SooLEOIAvqaCGoxJRqaaAhtCLgZs+6OMoZS8Blw3Jc2bsIFB1z6liQlBKqFC89aBLA==","shasum":"7c81e2deff65e30324ef0084cfd01bdeab64e583","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWMRab6K8YTnhbw6V6pfo4Guc5g+ERLoChxBf/S28DJgIhAKfQrPtIg6dD9yKJCq6rzZ0qSgHxz0qbn3EnJz1Vd5A1"}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.1.tgz_1516069424829_0.25485639832913876"}},"1.1.2":{"name":"validationator","version":"1.1.2","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"dependencies":{"ians-utils":"^1.0.0","validationator":"^1.0.7"},"gitHead":"2acff8e68d8a5ece016071239453b1c06309a3ce","_id":"validationator@1.1.2","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-XD2KW2B6mOvimVGGLLyXhMiODsgy5V9zljM7dN4sAv0DFe/N4kdXOJZyajj6zoVJ7FjSej6Hv1ZTxUGhBe9soQ==","shasum":"771a02076c8ceca630f3bca77627c978c96fb9a0","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNcGsKKPYLFZH14sFUfrz7WNHuEC7v6fmFfY9YzvkKBAIhANTlUcfzP/m8QhkIrnSbSol9HebIHl28eYU3o6Wvc5I3"}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.2.tgz_1516073117249_0.8296726059634238"}},"1.1.3":{"name":"validationator","version":"1.1.3","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets babel-preset-es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish.sh; ./bin/publish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0"},"dependencies":{"ians-utils":"^1.0.0","validationator":"^1.0.7"},"gitHead":"fc85d6a0dad57de18aee32905c3da03678a5ea44","_id":"validationator@1.1.3","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-1dDp4t1F2nKPqTGSHjRme9i+K2ohuE7KUn/CnOpQF2MJ6j2bQdEnVjKD3r1q31JXT2z4ATTqUcYMGMbJBuOtaA==","shasum":"294b73b8fe7a0c2cf8e6c6601ef231339e5b86a9","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKYDb071jthSg9lqDSHC4l3Phru8w2pw1sQZdfJ1jJEAiAiTpLKtjN+AHdr1+YYQsxoqCZSQGLKS8Pdwwwa83PHvA=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.3.tgz_1516073591362_0.7343236673623323"}},"1.1.5":{"name":"validationator","version":"1.1.5","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","deploy":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.0.7"},"gitHead":"3c1bd8b89c36066d6288c44506eccb9cea8776ad","_id":"validationator@1.1.5","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-VMOP78S6JL/HJ3UqtZpqXwU+fFJvkbONlT4i8NTn+cOyyphIwyljR6g1Fy2v8TmGPjuVefGa0mqrJnBP6hQZgg==","shasum":"1747c3c3e3e211374f072b5db385963785d61ca4","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYWdRacdoAkebV99f0ODMxA9jYuqW3qeIQEd8lMeOIQAiEAwDO0QqGnYZJw3E3sDE+BH6KjAwbRbHiLRZzTfrmxixY="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.5.tgz_1516261102095_0.7238348852843046"}},"1.1.6":{"name":"validationator","version":"1.1.6","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.0.7"},"gitHead":"7274d4d84fd76b7715e4fdf0cf05b660250b0b63","_id":"validationator@1.1.6","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-0WM0L3ptae4MCq2vKvzEDUUmGBNK3MfRgxNmdVpHtCY2n887B752G8a1isUcruFDHh9eBwwWLKsiCtKcxo4+ow==","shasum":"2c2c56d19a8a8905c052f176b03a76bb9c56811c","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICht5okDQfZp7CZHR1VLDJakdsiFquRxbwX0IqRCzjnLAiAZ3O07IH+zKbP1Q+bFafjNPj7KVrybGcb6QgICA40Ruw=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.6.tgz_1516261561230_0.7825488285161555"}},"1.1.7":{"name":"validationator","version":"1.1.7","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.1.6"},"gitHead":"932f0104990ad432ce871316fa490473ebe71273","_id":"validationator@1.1.7","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-/BLphjNP50AS1Hux444sFqx5AKmDCLrNBNOSgkXSnM62df6kRhFoyBQz7HRS1MyHKTOexDYQCuoB2pgarv0JYw==","shasum":"2cdeffc2d22eff3dd748efc833ea43147621b4c5","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAl+wI+vNf/5aXvWm/+11OlFExiJKpJpAqEMQaJY8HLPAiEAsFGKkD8pp7o63pkoUlp5JGUuPoElJrzRQukiJbfpyHo="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.7.tgz_1516262684391_0.2966120531782508"}},"1.1.8":{"name":"validationator","version":"1.1.8","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.1.7"},"gitHead":"62928eac88af4eddfa80b4796704d7b028cde618","_id":"validationator@1.1.8","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-nUzK409dxX6BiyqV9etpqeCzk7IUT3Mc29v//T2gMGw5a2RH+/sM0MrhV1MVPgQqogR4Ro4ln9j4HJbvo2sG/w==","shasum":"77bf889adbe0b4e8ed558f625b1a88b10a78437c","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.8.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKXk3aZU3Rj3TLO/88QUkpgOjH9o+3o4oINP/obbacsAiEAnLhRB1AXQgCBZepQxoTD2CG22Ymm0YBg5kqPH2Mn2I4="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.8.tgz_1516317371103_0.09794071246869862"}},"1.1.9":{"name":"validationator","version":"1.1.9","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015 --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.1.8"},"gitHead":"26f4a7fb87a210ad1080ce671dfd3ab53d09788a","_id":"validationator@1.1.9","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-EQXZKIX+ZByvMu6v2h9X/dGYMImF3tBwOXrPa85PszwWafpFr3NOR614aaZCAQnaMucfW+chB5BxtiscLzSCFw==","shasum":"3ad366dcedfdd91a5ecb967458bea62bd32720b9","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.1.9.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxI5YpdmPwFION6ymUOaAYWGbJ6s0QuJfoySwu4pOZRAIgeOBV1nvBpMgvbiK5ceeDDI3CPBmcyu58kXu4ZEE0+d4="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.1.9.tgz_1516317768195_0.8299667416140437"}},"1.2.0":{"name":"validationator","version":"1.2.0","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.1.9"},"gitHead":"ba983d4da91a28742924040bccbcad914f7fd708","_id":"validationator@1.2.0","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-Pa0oAjc/XLVcQDEKvWvVsQ9WV/kmI1ok1Nq99SXVTv/h04fL/lRU87nE5/ampTiPOwjZOu6qMWNmWEQqK+PTyw==","shasum":"38f248d65b05d75e464658626d7b9f54dacbe7ff","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQSDhYVD08G+9YfrKQrqC3fpDhFmRpteB9xQYv8t6jtAiAkByt7uONXyrgFfa84SeB5CBh00yrXr388jXxAJdRHFQ=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.2.0.tgz_1516327379615_0.5987203009426594"}},"1.2.1":{"name":"validationator","version":"1.2.1","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.2.0"},"gitHead":"198f3c698e3d948eb998b56d784408090cc1826d","_id":"validationator@1.2.1","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-L1vG7BlUHikPMBFPBuKpB5T1Vatk10kajVM9LqqvgH78nkt9oyaq49ccUB+/vA9GNAFnvg3/aEN748+VXy04Tg==","shasum":"dca3f7a53d167f2b2ebdc3d2f60e7d1f9978698a","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDvAJr6Y6yK3VYC2MwBOr8aXctSo/PF4ILsiAa1P0YASAiB6nC4Aoqz4nuR8+vK+CSsJjzUoy5++G+QG4C8fOtVqdg=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.2.1.tgz_1516329277427_0.8945512264035642"}},"1.2.2":{"name":"validationator","version":"1.2.2","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.2.1"},"gitHead":"f68f1505474325f1e4bc586e1ec297e47c9dfffc","_id":"validationator@1.2.2","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-QtLa4usbnDOXWI6CDpTZlP7ZP2rZ/+ou4iPWkePuv1vFoG/S2SZvm6k1EbEPQmD63qwBBQagYzQaT7nQaS0dhw==","shasum":"0b86def8e64da6ab76fab2fdd9adbd4444ff2905","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL7SSHQQSsNZ66EWZYaXO83TSi2J+aUzUL30/pXJUbZwIgPU4uQ5ptP2p0QBsWPoxjooF+X8R/Aj+73gYZRe9FkCQ="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.2.2.tgz_1516329703086_0.8430599952116609"}},"1.2.3":{"name":"validationator","version":"1.2.3","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-plugin-transform-es2015-spread":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.2.2"},"dependencies":{"validator":"^9.2.0"},"gitHead":"0907808a9c4af2f2dcfe4e717f906daf7ed57ed2","_id":"validationator@1.2.3","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-iewhgYVXr5heK5Qghu8MLJV8RFfIz8PHVo3RfTpt1CRwROzS8rfqus8dkm6arqB9FSGDHf5H2oqHAz1i8pOksA==","shasum":"950c98c0c7fb1ea7247cc67c1a51a536a10817b9","tarball":"https://registry.npmjs.org/validationator/-/validationator-1.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDSYZQS77MZpb8vmoRXC1fZJXbjJZZMkLMHnFn+VnKycAiEA2Ij0ahhoh3B2l77jfW11rZ3zgQyxjJr8MrghXiDSjZg="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-1.2.3.tgz_1516422392615_0.7946937861852348"}},"2.0.0":{"name":"validationator","version":"2.0.0","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^1.2.3"},"dependencies":{"validator":"^9.2.0"},"gitHead":"5818efdff2436dfad7e2ea5ac9ee67006acdbe78","_id":"validationator@2.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-kAbzSzJUVFXdvn+tmw1IzPJtywK9sVCsjZEuG38SdJvTIKNqMoSY/Hkbg6jYYtK80inWi5/RVVq+8mPoaxUEXQ==","shasum":"13d0b3f56d6c64cf13e3f8934a7c6c49667f2686","tarball":"https://registry.npmjs.org/validationator/-/validationator-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICsujOcPjRsoz0RJgJJFy9NpJOjHZrV6AIPNZdfHspkdAiB+C2rGD86fFKaIP5OXPK81d4jnPbvSWlW/2UM9MEZHgA=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-2.0.0.tgz_1516513714804_0.8629893923643976"}},"2.0.1":{"name":"validationator","version":"2.0.1","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"asdf"},"keywords":["validation","validate","type checker","typed","typed functions","deeply nested","nested","data structures","static","validator","validation","validate"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^2.0.0"},"dependencies":{"validator":"^9.2.0"},"gitHead":"b63f2c094381c960199ca45ee6a6234e02c012e4","_id":"validationator@2.0.1","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-E49pUjDfdWde0m8EFIUz7I3knWMutdTbYO84aXF8YbhjW8Q4hEofxGHh3Og9qFdCTVixYWl4d29figIJu4qLJQ==","shasum":"5259505facf90ec2bf0cacc23f70a860caa93baa","tarball":"https://registry.npmjs.org/validationator/-/validationator-2.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLTC3ro6kDgGAJbS/Xj+QBejcxA2dn/uNXSz9Tt46GmQIgNfVH4jQMvz+LGiZptumUvWRDPGS7NScDmI1mkRsf3u4="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-2.0.1.tgz_1516515400702_0.7535553576890379"}},"2.0.2":{"name":"validationator","version":"2.0.2","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation, and much more.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"git+https://github.com/hattonpoint/validationator.git"},"keywords":["validation","validate","type checker","type","checker","front end","backend","testing","typed","typed functions","typed","deeply nested","nested","data structures","data","structures","static","validator","validation","validate"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^2.0.1"},"dependencies":{"validator":"^9.2.0"},"gitHead":"1553ea2f7f51cfdba826c1d437f9bc7282508537","bugs":{"url":"https://github.com/hattonpoint/validationator/issues"},"homepage":"https://github.com/hattonpoint/validationator#readme","_id":"validationator@2.0.2","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-Me2c2n+TGOBoxVZztWsflxHJC8O2+8gTlbMOEu3HiCpWtHJwB4cVgC6HXRP5az9z04TqOjsaGHrIW/F28WS78Q==","shasum":"ba508d96d714cc30690625c9fcf956ebb7d7e318","tarball":"https://registry.npmjs.org/validationator/-/validationator-2.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHDj06OXJWrzWfO0/wBLyZZdYEX6KjDpYmjFR6vxzRiPAiAi1YL+Xa3vNC6gZelFwvVQ5O3o7BgbURWvRE1kW1wTzw=="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-2.0.2.tgz_1516840295429_0.3565301615744829"}},"2.0.3":{"name":"validationator","version":"2.0.3","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation, and much more.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"git+https://github.com/hattonpoint/validationator.git"},"keywords":["validation","validate","type checker","type","checker","front end","backend","testing","typed","typed functions","typed","deeply nested","nested","data structures","data","structures","static","validator","validation","validate"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^2.0.2"},"dependencies":{"validator":"^9.2.0"},"gitHead":"1837233eea16e0484807a672245ecfbded008d20","bugs":{"url":"https://github.com/hattonpoint/validationator/issues"},"homepage":"https://github.com/hattonpoint/validationator#readme","_id":"validationator@2.0.3","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-8Bt6pjuiIj+IaRgTmxYMyiIk/1emZF8+joOJQfyunlX+5wKLj5hGL1VMrMvQYIP4afTxBggULn9WiOXhW5zePg==","shasum":"1a40d12c20b02e17d138f690a3e41279d8a044a3","tarball":"https://registry.npmjs.org/validationator/-/validationator-2.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD44o3QPZTiDXR1aKtK/3vRRUFxsrdqfHf1K8DFcHPlzQIgEHBWHWwcpI8ntBDqcj8wPUmxHeKLjZ+kts3RqpM+t/E="}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-2.0.3.tgz_1516939179955_0.34442247333936393"}},"2.0.4":{"name":"validationator","version":"2.0.4","description":"A versitile data validator and static type checker. Creat complex models for deeply nested data structures. Create statically typed functions. Switch to bool mode of use in form validation, and much more.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"./node_modules/mocha/bin/mocha test/src","test:dist":"./node_modules/mocha/bin/mocha test/dist","test:prod":"./node_modules/mocha/bin/mocha test/prod","lint":"eslint .","lint:fix":"eslint . --fix","build":"babel src --presets es2015-script --out-dir dist","minify":"minify dist -d dist","clean":"rm -rf dist","publish:start":"chmod +x ./bin/publish-start.sh; ./bin/publish-start.sh","publish:finish":"chmod +x ./bin/publish-finish.sh; ./bin/publish-finish.sh"},"repository":{"type":"git","url":"git+https://github.com/hattonpoint/validationator.git"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures","classes"],"author":{"name":"Ian Lancaster"},"license":"ISC","devDependencies":{"babel-cli":"^6.26.0","babel-minify":"^0.2.0","babel-preset-es2015-script":"^1.1.0","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","mocha":"^4.1.0","npm-cli-login":"0.0.10","validationator":"^2.0.3"},"dependencies":{"lodash":"^4.17.4","validator":"^9.2.0"},"gitHead":"ff3a133e2252fa41985b25f63694f5a891f28222","bugs":{"url":"https://github.com/hattonpoint/validationator/issues"},"homepage":"https://github.com/hattonpoint/validationator#readme","_id":"validationator@2.0.4","_npmVersion":"5.5.1","_nodeVersion":"8.6.0","_npmUser":{"name":"ianlancaster","email":"ianclancaster@gmail.com"},"dist":{"integrity":"sha512-eGPPtOigqmziW5+gSsdiH1vkoB+l6GdnqCzW8FJxAZy88tru1qkTMiet8eSPpMq3P5P9O/i/DjVOiGbQOLEPeA==","shasum":"652c00d1dc908ac03f78ed6542ca6976f034a3a9","tarball":"https://registry.npmjs.org/validationator/-/validationator-2.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2OWfiBfs5cCvr4HbzKzsUGy3MVYpMQJ4nLTSI795C2QIhAM11qcFZgpuI26dSBoVM7gp9eQU1U4+2zItPiasbHmSu"}]},"maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/validationator-2.0.4.tgz_1517700049647_0.4929775441996753"}}},"readme":"<center>\n  <div style=\"text-align: center\">\n    <a href=\"https://hattonpoint.com\">\n      <img\n        src=\"./assets/validationator-header.png\"\n        style=\"width: 500px, display: block; margin: auto;\"\n      />\n    </a>\n    <p>Current version: 2.0.4</p>\n    <a href='./docs/changelog.md'><p>Change log</p></a>\n  </div>\n</center>\n\nValidationator is a flexible and powerful javascript typing & data validation library. Validationator has four exports:\n  * **validations** - an object of validation methods. These are used to power all other functions of the library. They can be extended, added to, and used ad hoc.\n  * **validate** - the core of the validationator library. Define a validation model of your data and validate to either return the original value or throw a useful error. Use warn or bool mode to override this behavior.\n  * **type** - a wrapper around the validate core library that allows for an alternative more traditional typed language syntax.\n  * **validateFunc** - define the input and output models of a function much like react PropTypes. Create statically typed functions. Uses the validate core.\n  * **typeFunc** - pass in a function and validation model to return a reusable typed function\n  * **typeClass** - create fully typed classes by defining a class model\n  * **TypeClass** - allows for use of setProps in classes for internal static typing.\n  * **TypedVal** - wrap values in geter and setter function that consistently enforce validation\n\nWhy use validationator:\n\n* statically type js functions for more robust applications\n* it's super small, super fast, and backward compatible\n* throw useful errors for faster debugging\n* very versatile API\n* validate forms with ease\n* easily add your own custom validations\n\nWait, doesn't flow do this already? Yes, flow does allow for static typing, but it does not allow for nested data structures or non-type validation checks. This is also a semi-runtime library where flow is compile-time. I say semi because the library is set to look for a 'production' node environment variable and will to bypass any validation. This behavior can be easily overridden.\n\nThe default behavior of validate is to return the original value on success and to throw an error on failure. This can be configured to 'bool' and 'warn' mode as well.\n\n## Getting Started\n```js\n// ==> npm i -S validationator\n\n// for front end\nimport { validate, validations, validateFunc, type } from 'validationator'\n\n// or for Node\nconst { validate, validations, validateFunc, type } = require('validationator')\n\nvalidate('info@hattonpoint.com', String)\n```\n## Overview\n\n### validations\nA validation is simply a method that takes in a value and an options object, and then throws errors if certain criteria are met. They are very fast, throw useful errors, but do not have any of the options or syntactic sugar added by the validate core.\n```js\nvalidations.number(12, {\n  decimails: 0,\n  max: 20\n})\n```\n\n### validate\nTakes in a value and a validation model. By default returns the original value on success and throws a useful error on failure. There are various options to configure this behavior, add and extend validations, and much more. More API details available below.\n\n```js\n// do very simple data type checks\nvalidate('asdf', String)\n\n// add extra options\nvalidate('asdf', {\n  String,\n  minLen: 2\n})\n\n// use various non data type validations\nvalidate('info@hattonpoint.com', 'email')\n```\n\n### type\nAn alternative syntax for the validate core. Define the data type first and options after. Define a secondary data type and validate with same options object (the options object inherits the options of the data type). \n\n```js\nconst homepage = 'www.hattonpoint.com'\ntype(String, homepage)\n\ntype(String, homepage, {\n  maxLen: 100\n})\n\nconst x = type // read 'check'\n\nconst validatedUrl = x(String, homepage, {\n  type: 'url',\n  maxLen: 100\n})\n```\n\n### validateFunc\nSyntactic sugar that makes it easier to create statically typed functions. Define an inputModel and outputModel to functions.\n\n```js\nconst increment = num => (num + 1)\nincrement.inputModel = Number\nincrement.outputModel = Number\n\nvalidateFunc(increment, 3)\n\n// There are various ways to create statically typed\n// functions and classes discussed in sections below.\n```\n\n### typeFunc\npass in a function and validation model to return a reuseable typed function\n```js\nconst increment = num => (num + 1)\nconst typedIncrement = typeFunc(increment, {\n  inputModel: Number,\n  outputModel: Number\n})\n\ntypedIncrement(1) // ==> 2\ntypedIncrement('asdf') // throws error\n```\n\n### typeClass\n\nUsing the fundamental components of validate and validateFunc, typeClass allows you to create fully typed js classes be defining a separate class validation model. Instance construction and prop changes and protected by validation checks. Methods are typed using validateFunc. This gives you many of the benefits of static typing without having to clutter up your original code.\n\n```js\nlet Hooligan = class Hooligan {\n  constructor ({ name, height }) {\n    this.name = name\n    this.height = height\n    this.stomach = []\n    this.mood = 'grumpy'\n  }\n\n  eat (food) {\n    this.stomach = [ ...this.stomach, food ]\n\n    return 'uhh.. not food'\n  }\n\n  drink (drank) {\n    if (drank === 'coffee') this.mood = 'better'\n  }\n}\n\nHooligan.model = {\n    constructor: {\n      name: String,\n      height: Number\n    },\n    props: {\n      name: String,\n      stomach: { Array, allChildren: String },\n      mood: String,\n      height: Number\n    },\n    methods: {\n      eat: {\n        inputModel: String,\n        outputModel: String\n      },\n      drink: {\n        inputModel: String,\n        outputModel: undefined\n      }\n    }\n  }\n\nHooligan = typeClass(Hooligan)\n\n// The parameters passed into the constructor are typechecked\nconst hooligan = new Hooligan(12) // ==> throws error\n\nconst Ian = new Hooligan({ name: 'Ian', height: 60 })\n\n// After converting your class to a typed class, call your props\n// as functions. This is your getter method. Getter methods do\n// not do any validation since the setter and constructor validation\n// should ensure it is always the correct type.\n\nIan.name() // ==> 'Ian'\nIan.name // ==> undefined\n\n// typeClass creates camelCased setter methods for your defined\n// props. These methods take in a new value and validate it\n// before setting the class prop value. The setter methods return\n// the new value of the prop, or throw and error.\n\nIan.setName('Ignatius') // ==> 'Ignatius'\nIan.name() // ==> 'Ignatius'\nIan.setName(123) // throws error\n\n// The inputs and outputs of defined methods are wrapped using the\n// validateFunc function.\n\nconst Ian = new Hooligan({ name: 'Ian', height: 60 })\nIan.mood() // ==> 'grumpy'\nIan.drink('coffee')\nIan.mood() // ==> 'better'\nIan.drink(123) // throws error\n```\n### TypedClass\nOne of the weaknesses of typeClass is that still allows methods to set the props of a class internally without validation. TypedClass was introduced to address this issue. Extend your classes from TypedClass and pass constructor props directly into super to gain access to setProps in your class methods. setProps operates much like setState in react. Pass in an object with the keys of the props you want to change with updated values. Usine setProps these values are validated whenever you attempt to update them.\n\n```js\nconst Hooligan = class Hooligan extends TypedClass { // updated\n  constructor ({ name, height }) { // updated\n    super({ name, height })\n    this.name = name\n    this.height = height\n    this.stomach = []\n    this.mood = 'grumpy'\n  }\n\n  eat (food) {\n    this.setProps({ // updated\n      stomach: [ ...this.stomach, food ]\n    })\n\n    return 'uhh.. not food'\n  }\n\n  drink (drank) {\n    if (drank === 'coffee') this.mood = 'better'\n  }\n}\n\nHooligan.model = hooliganModel\n\n```\n\n### TypedVal\nWrap values in geter and setter methods that consistently enforce validation.\n\n```js\nconst myEmail = 'info@hattonpoint.com'\nconst typedEmail = new TypedVal(myEmail, { type: 'email' })\n\n// values are checked on construction\nconst notEmail = 'hattonpoint.com'\nnew TypedVal(notEmail, { type: 'email' }) // throws error\n\n// new values are accessed with get and set methods\ntypedEmail.get() // ==> myEmail\n\n// use g and s shorthand methods\ntypedEmail.g() // ==> myEmail\n\nconst newEmail = 'newEmail@example.com'\ntypedEmail.set(newEmail) // newEamil\ntypedEmail.g() // ==> newEmail\n\ntypedEmail.set(notEmail) // throws error\n\ntypedEmail.s(myEmail) // ==> myEmail\ntypedEmail.g() // ==> myEmail\n```\n\n\n# API Details\n\n## validate.js\n\n```javascript\n// do very simple data type checks\nvalidate('asdf', String)\n\n// this is all valid syntax too\nvalidate('asdf', 'string')\nvalidate('asdf', { type: 'string' })\nvalidate('asdf', { type: String })\n\n// add extra options\nvalidate('asdf', {\n  String,\n  minLen: 2\n})\n\n// use various non data type validations\nvalidate('info@hattonpoint.com', 'email')\n\n// validate children of arrays and objects\nconst hooligans = [ 'Mike', 'Erik', 'Kenny' ]\nvalidate(hooligans, { Array, allChildren: String })\n\n// validate deeply nested data structures\nconst backPack = {\n  brand: 'North Face',\n  price: 20,\n  contents: [\n    'water bottle',\n    'jacket'\n  ],\n  fannyPack: {\n    style: -1000,\n    contents: 'questionable'\n  }\n}\n\nconst validationModel = {\n  Object,\n  brand: String,\n  price: { Number, max: 50 },\n  contents: { Array, allChilden: String },\n  fannyPack: {\n    Object,\n    children: {\n      // pass multiple validations in an array for or checks\n      style: [{ Number, max: 0 }, String, Object],\n      contents: { type: 'is', exactly: 'questionable' }\n    }\n  }\n}\n\nvalidate(backPack, validationModel)\n\n// you can even validate classes\n\nconst Hooligan = class Hooligan {\n  constructor (name) {\n    this.name = name\n    this.stomach = []\n    this.mood = 'grumpy'\n  }\n\n  eat (food) {\n    this.stomach.push(food)\n  }\n\n  drink (drank) {\n    if (drank === 'coffee') this.mood = 'better'\n  }\n}\n\nconst Ian = new Hooligan('Ian')\n\nvalidate(Ian, {\n  type: 'instance',\n  of: Hooligan,\n  strict: true,\n  children: {\n    name: String,\n    eat: Function,\n    drink: Function\n  }\n})\n```\n\n### Validation Model API\n\nA validation model is an object that describes your value. It can be a simple type check or a complex data evaluation with appended tests.\n\n'type' is the only required validation. Each type will also have its own set of custom validation options. There are many validation types available, many powered by the validator.js library. See the validation type section below for more details.\n\nThe default behavior of validate is to return the original value on success and throw an error on failure. This behavior can be changed using the various options outlined below.\n\nBy default, all validated values are required and any falsy value will fail the required check. See the acceptedNulls and notRequired options below to change this behavior.\n\nvalidate and validateFunc both default to bypassing all validation when a 'production' node environment is detected. (ie. process.enc.NODE_ENV === 'production'). This is so typing errors can be found in development but would prevent the performance dip from validation in production. This behavior can be controlled with the ON and OFF options.\n\n### shared options:\n\nSome options are shared by all validation types. They are:\n-   **name\\<string>** - name to be used in error reporting (optional)\n```javascript\nvalidate('hello', { String, name: 'hello-string' })\n```\n-   **on\\<boolean>** - if true the validate function will ignore the check for a production node environment and run anyway. This is an override option to let the validation run in production.\n```javascript\nprocess.env.NODE_ENV = 'production'\n\nvalidate(12, { Number, on: true })\n// validates even in production\n// off, warn, and bool API just like on.\n```\n-   **off\\<boolean>** - if true turns off all validation. Same as what happens in production environment\n-   **warn\\<boolean>** - if true errors delivered through console.warn rather than throwing an error. This allows for non-blocking validation.\n-   **bool\\<boolean>**- if true validate will return true or false to indicate validation rather than throw errors.\n-   **notRequired\\<boolean>**: all fields with a model are considered required unless this is true.\n-   **acceptedNulls\\<array>**: by default, every falsey value is considered missing when doing the default required field check. This includes values like false and 0. In many instances, you may consider falsey values such as these valid. Pass all accepted null values in an array to override.\n```javascript\n// on, off, warn, and bool can all also be\n// set at the function level like this:\n\nvalidate.bool = true\n\n// every instance of validate from this\n// point on will have the bool option activated.\n\nvalidate(0, Number) // ==> false\n// (because all values are requred by default and\n// all falsy values fail the required check by default)\n\nvalidate(1, Number) // ==> true\n\nvalidate(0, { Number, notRequired: true }) // ==> true\nvalidate(undefined, { Number, notRequired: true }) // ==> true\n\nconst acceptedNulls = [0]\nvalidate(0, { Number, acceptedNulls }) // ==> true\nvalidate(undefined, { Number, acceptedNulls }) // ==> false\n```\n-   **extend\\<cb[value, validation>** extend is a callback function that gives you access to variables of the current evaluation so you can inject custom rules. See below:\n```javascript\nvalidate({ test: 1 },\n  { Object,\n    extend: value => {\n      if (value.test === 1) throw new Error('The value is 1! It is not supposed to be 1!!!')\n    },\n  }\n)\n```\n\n### boolean\n\nJust a type check.\n\n```javascript\nvalidate(true, Boolean) // ==> true\nvalidate('asdf', Boolean) // throws error\nvalidate(false, { Boolean, acceptedNulls: [false] }) // ==> false\n// (because it is returning the original value on success)\n\nvalidate(false, {\n  Boolean,\n  bool: true,\n  acceptedNulls: [false]\n})\n// ==> true\n\n// But really though,\n// think about whether or not you need to use validate\ntypeof false === 'boolean' // ==> true\n// same thing, way faster.\n```\n\nRemember to add false to the acceptedNulls list if you want them not to fail this validation\n\n### function\n\nJust a type check.\n\n```javascript\nconst increment = int => (int + 1)\n\nvalidate(increment, 'function') // ==> increment\n```\n\n### string\n\n-   **maxLength\\<number>**\n-   **minLength\\<number>**\n-   **regEx\\<regEx>** - tests the string against a provided regEx expression\n-   **includes\\<string>** - fail validation if string does not include string\n-   **notIncludes\\<string>** - fail validation if string does include string\n-   **includesAny\\<string>** - fail validation if string does not include any of the strings in an array\n-   **notIncludesAny\\<[string]>** - fail validation if string does include any of the strings in an array\n-   **upperCase\\<bool>** - fail validation if string is not all uppercase\n-   **lowerCase\\<bool>** - fail validation if string is not all lowercase\n\n### number\n\n-   **max\\<number>**\n-   **min\\<number>**\n-   **decimals\\<number>** - specifies the maximum amount of decimals. Less than the number provided will pass.\n-   **regEx\\<regEx>** - tests the string against a provided regEx expression\n\n### object\n\n-   **minLength\\<number>**\n-   **maxLength\\<number>**\n-   **requredKeys\\<array<string>>**\n-   **includes\\<any>** - fail validation if object does not include value\n-   **notIncludes\\<any>** - fail validation if object does include value\n-   **includesAny\\<any>** - fail validation if object does not include any of the values in an array\n-   **notIncludesAny\\<[any]>** - fail validation if object does include any of the values in an array\n-   **allChildren\\<validationModel>** - validates every child against the given validation model\n-   **children\\<object>** - an object with keys that match the expected keys of the value with a valueModel for each key. This allows for deeply nested data structure models.\n\n\n### array\n\n-   **minLength\\<number>**\n-   **maxLength\\<number>**\n-   **requredKeys\\<array<string>>**\n-   **includes\\<any>** - fail validation if array does not include value\n-   **notIncludes\\<any>** - fail validation if array does include value\n-   **includesAny\\<any>** - fail validation if array does not include any of the values in an array\n-   **notIncludesAny\\<[any]>** - fail validation if array does include any of the values in an array\n-   **allChildren\\<validationModel>** - validates every child against the given validation model\n-   **children\\<array>** - an array of valueModels that corresponds to the expected value in an array. This allows for deeply nested data structure models.\n\n### instance\nCheck to see if a value is an instance of a constructor. \n\n-   **of\\<Constructor>** - the constructor of the instance you are testing. uses instanceof, so values like 'Object' will still pass\n-   **strict\\<bool>** - strictly test constructor. Ancestors not included\n\n-   **instance also inherits all of the options of Object, including children!**\n\n```js\nconst Hooligan = class Hooligan {\n  constructor (name) {\n    this.name = name\n    this.stomach = []\n    this.mood = 'grumpy'\n  }\n\n  eat (food) {\n    this.stomach.push(food)\n  }\n\n  drink (drank) {\n    if (drank === 'coffee') this.mood = 'better'\n  }\n}\n\nconst Ian = new Hooligan('Ian')\n\nvalidate(Ian, {\n  type: 'instance',\n  of: Hooligan,\n  strict: true,\n  children: {\n    name: String,\n    eat: Function,\n    drink: Function\n  }\n})\n```\n\n\n### is \nvalidates that the value is exactly equal to the value specified\n```javascript\nvalidate('true', { type: 'is', exactly: 'true' }) // ==> 'true'\nvalidate('true', { type: 'is', exactly: true }) // throw error\n```\n\n### string-int\nparseInt then number validation\n\n## validator validations\nnote all of the validations below are powered by the validator package. See the validator docs for more info on the options. Validator options can be provided through the validation object. They should work as expected, but I still need to write tests to verify and need to add better use documentation below. For now, I am just showing an example of the error that will be thrown if validation is not met.\n\n### email\n    string: ${value} does not match email validation with options: ${options}\n### postal-code \n    value: ${value} is not a valid postal code ${state ? ` for state ${state}` : ''}\n### url \n    URL ${value} did not match the validation: ${options}\n### date \n    value: ${value} is not a valid date\n### date-obj \n    value: ${value} is not a valid date object\n### phone \n### alpha \n    string: ${value} is not alpha.\n### alpha-numeric \n    value: ${value} is not alpha numeric.\n### ascii \n    string: ${value} is not an ascii string.\n### base64 \n    string: ${value} is not a base64 string.\n### credit-card \n    value: ${value} is not a valid credit card number.\n### currency \n    value: ${value} is not a valid currency with options: ${options}.\n### data-uri \n    value: ${value} is not a valid data URI.\n### fqdn \n    value: ${value} is not a valid fully qualified domain name.\n### float \n    value: ${value} is not a valid float.\n### hash \n    value: ${value} is not a valid ${algorithm} hash.\n### hex-color \n    value: ${value} is not a valid hex color.\n### hex-dec \n    value: ${value} is not a valid hexadecimal.\n### ip \n    value: ${value} is not a valid IP v. ${version}.\n### isbn \n    value: ${value} is not a valid ISBN v. ${version}.\n### issn \n    value: ${value} is not a valid ISSN with options ${options}.\n### isin \n    value: ${value} is not a valid ISIN (stock/security identifier).\n### iso8601 \n    value: ${value} is not a valid ISO8601.\n### isrc \n    value: ${value} is not a valid ISRC.\n### int \n    value: ${value} is not a valid int with options: ${options}.\n### json \n    value: ${value} is not a valid JSON.\n### lat-long \n    value: ${value} is not a valid lat-long.\n### mac \n    value: ${value} is not a valid MAC address.\n### md5 \n    value: ${value} is not a valid MD5 hash.\n### mime-type \n    value: ${value} is not a valid mime type.\n### mongo-id \n    value: ${value} is not a valid mongo-id.\n### port \n    value: ${value} is not a valid port number.\n### uuid \n    value: ${value} is not a valid UUID.\n\n### or\n\n```javascript\n// pass in an array of validation objects instead of a single object to do an or validation\n\nvalidate(11 , [String, { Number, max: 22 }]) // ==> 11\nvalidate('towel' , [String, { Number, max: 22 }]) // ==> 'towel'\nvalidate(89 , [String, { Number, max: 22 }]) // throw error\n\n```\n\n### extensions & only\nOne of the most valuable features of the validationator is the ability to easily add your own validations. Simply define a new type via validate.extensions and throw errors to validate the value.\n\nTo add validations define validate.extensions as an object. Every key you add will be a new available type. The value is a method that takes two parameters: the value that will be passed to it in the validation process, and a validation object. This is exactly the same way the validations under the hood are designed. Below are a few examples of existing types to get you started. Remember! You want to throw errors not return true or false. That is handled by the error catching BOOL option area of the validate function.\n\nvalidate itself throws errors by default, so feel free to validate itself within the validations.\n\nIf you create a valuable validation please visit our [contribution guidelines](./docs/contribution.md) page and consider submitting a pull request :)\n\n```js\nconst validate = require('validationator').validate\n\nvalidate.extensions = {\n  'is': (value, { exactly }) => {\n    if (typeof value !== typeof exactly || JSON.stringify(value) !== JSON.stringify(exactly)) throw new Error(`value: ${value} is not exactly equal to ${exactly}`)\n  },\n  'string-int': (value, validation) => {\n    validate(parseInt(value), Object.assign(\n      validation,\n      { type: 'number', name: 'string-int' }\n    ))\n  },\n  'postal-code': (value, { state }) => {\n    validate(value, ['string', 'number'])\n    state = state || 'any'\n    value = `${value}` // convert to string if not number\n    if (!validator.isPostalCode(value, state)) throw new Error(`value: ${value} is not a valid postal code ${state ? ` for state ${state}` : ''}`)\n  },\n  'phone': (value, { mobile }) => {\n    validate(value, ['string', 'number'])\n    value = `${value}` // convert to string if not number\n    validate(value, {\n      type: 'string',\n      name: 'phone',\n      regEx: /^\\s*(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{4})(?: *x(\\d+))?\\s*$/\n    })\n    if (mobile === true) mobile = 'any'\n    if (mobile) validate.isMobilePhone(value, mobile)\n  },\n}\n```\n```javascript\n// only is like extensions except that it allows you to specifically pick the only validations you want to include in the validate call. You also have access to the default validations object.\n\n// this is here as a performance optimization, but honestly, it is just cutting out a few dozen ops.\n\nimport { validate, validations } from 'validationator'\n\nvalidate.only = {\n  'number': validations.number,\n  'postal-code': (value, { state }) => {\n    validate(value, ['string', 'number'])\n    state = state || 'any'\n    value = `${value}` // convert to string if not number\n    if (!validator.isPostalCode(value, state)) throw new Error(`value: ${value} is not a valid postal code ${state ? ` for state ${state}` : ''}`)\n  },\n}\n\n// number and postal-code are now the only validations available\n// you can also use single validations on their own to throw errors\n\nvalidations.number(12, { max: 10 }) // throws error\n\n// note that bool warn and passthrough options are not available when used this way\n```\n\nvalidateFunc\n------------\n\nusing the validate core validateFunc serves as an advanced runtime static type checker and validator. Usage of validateFunc differs slightly depending on the way you structure your parameters. You define the models by adding an inputModel or/and outputModel param to your function. Both inputModel and outputModel are optional, but both cannot be missing or you should not be using the function. You must pass your function then your parameters into validateFunc, or you can build it into your function definitions. validateFunc will return the return value of the product.\n\n```javascript\nvalidateFunc(func, param(s), options)\n```\n\n### options (optional)\n\nThe options object can take the following parameters:\n\n-   **on\\<boolean>** - if true the validate function will ignore the check for a production node environment and run anyway. This is an override option to let the validation run in production.\n-   **off\\<boolean>** - if true turns off all validation. Same as what happens in production environment\n-   **warn\\<boolean>** - if true errors delivered through console.warn rather than throwing an error. This allows for non-blocking validation.\n\n### single parameter\n\n```javascript\nconst increment = number => (number + 1)\n\nincrement.inputModel = Number\nincrement.outputModel = Number\n \nvalidateFunc(increment, 1) // ==> 2\nvalidateFunc(increment, '1') // throws error\n```\n\nOr if you were to build it into the function\n\n```javascript\nconst increment = number => {\n  const innerFunc = number => (number + 1)\n  innerFunc.inputModel = { Number, name: 'increment' }\n  innerFunc.outputModel = { Number, name: 'increment' }\n  return validateFunc(innerFunc, number)\n}\n \nincrement(1) // increment is now a strongly typed function\n```\n\nYou could also accomplish the same thing using just the validate core library.\n```javascript\nconst increment = number => {\n  validate(number, Number)\n  const innerFunc = number => (number + 1)\n  return validate(innerFunc(number), Number)\n}\n \nincrement(1) // increment is now a strongly typed function\n```\n\nor with the new type syntax\n```js\nimport { type as x } from 'validationator'\n\nconst increment = number => {\n  x(Number, number)\n  const innerFunc = number => (number + 1)\n  return x(Number, innerFunc(number))\n}\n\n```\n\nNote that if your function takes in a single array as its sole argument you will need to double wrap the array so that validateFunc does not think it is for multiple parameters.\n\n```javascript\nconst ct = arr => arr.length\n \nct.inputModel = { Array }\n \nvalidateFunc(ct, [[ 1, 2, 3 ]])\n```\n\n### multiple parameters\n\n```javascript\nconst multiply = (a, b) => a * b\n \nmultiply.inputModel = [ Number, Number ]\n \nassert(validateFunc(multiply, [2, 3]) === 6)\n```\n\n### parameter destructuring\n\n```javascript\nconst multiply = ({ a, b }) => a * b\n \nmultiply.inputModel = {\n  a: Number,\n  b: Number,\n}\n \nvalidateFunc(multiply, { a: 1, b: 8 })\n```\n\n**it just works**\n\n```javascript\n// do below the function like react proptypes\n\nconst testFunc = (num, char, bool) => {\n  return {\n    see: 'it works',\n    coolness: 1000000,\n    itSucks: false,\n  }\n}\n \ntestFunc.inputModel = [\n  { Number, min: 40 },\n  { String, maxLength: 1 },\n  { Boolean, notRequired: true },\n]\n \ntestFunc.outputModel = {\n  Object,\n  children: {\n    see: String\n    coolness: { Number, min: 10000 },\n    itSucks: { Boolean, acceptedNulls: [ false ] },\n  },\n}\n \nvalidateFunc(testFunc, [ 50, 'a', false ])\n```\n\n```javascript\n// or contained within the function itself\n \nconst testFunc2 = (num, char, bool) => { \n  const execution = (num, char, bool) => ({\n    see: 'it works',\n    coolness: 1000000,\n    itSucks: false,\n  })\n\n  execution.inputModel = [\n      { Number, min: 40 },\n      { String, maxLength: 1 },\n      { Boolean, notRequired: true },\n  ]\n \n  execution.outputModel = {\n    Object,\n    children: {\n      see: String,\n      coolness: { Number, min: 10000 },\n      itSucks: { Boolean, acceptedNulls: [ false ] },\n    },\n  }\n \n  return validateFunc(execution, [num, char, bool])\n}\n \ntestFunc2(50, 'a', false) // now a strongly typed function\n```\n","maintainers":[{"name":"ianlancaster","email":"ianclancaster@gmail.com"}],"time":{"modified":"2022-05-23T02:34:39.183Z","created":"2018-01-09T07:57:03.703Z","1.0.0":"2018-01-09T07:57:03.703Z","1.0.1":"2018-01-09T08:38:03.503Z","1.0.2":"2018-01-09T08:41:51.666Z","1.0.3":"2018-01-09T08:42:38.756Z","1.0.4":"2018-01-09T09:17:16.275Z","1.0.5":"2018-01-10T09:05:11.919Z","1.0.6":"2018-01-10T09:07:04.392Z","1.0.7":"2018-01-10T09:10:47.552Z","1.0.8":"2018-01-10T09:13:53.054Z","1.0.9":"2018-01-15T23:51:40.135Z","1.1.0":"2018-01-16T00:10:21.402Z","1.1.1":"2018-01-16T02:23:45.931Z","1.1.2":"2018-01-16T03:25:17.375Z","1.1.3":"2018-01-16T03:33:12.598Z","1.1.5":"2018-01-18T07:38:23.549Z","1.1.6":"2018-01-18T07:46:01.404Z","1.1.7":"2018-01-18T08:04:45.549Z","1.1.8":"2018-01-18T23:16:11.254Z","1.1.9":"2018-01-18T23:22:49.344Z","1.2.0":"2018-01-19T02:02:59.726Z","1.2.1":"2018-01-19T02:34:37.489Z","1.2.2":"2018-01-19T02:41:44.133Z","1.2.3":"2018-01-20T04:26:32.797Z","2.0.0":"2018-01-21T05:48:35.927Z","2.0.1":"2018-01-21T06:16:41.772Z","2.0.2":"2018-01-25T00:31:36.643Z","2.0.3":"2018-01-26T03:59:41.136Z","2.0.4":"2018-02-03T23:20:49.733Z"},"keywords":["validation","validate","static","type","checker","typed","functions","deep","deeply","nested","data","structures","classes"],"repository":{"type":"git","url":"git+https://github.com/hattonpoint/validationator.git"},"author":{"name":"Ian Lancaster"},"license":"ISC","readmeFilename":"readme.md","homepage":"https://github.com/hattonpoint/validationator#readme","bugs":{"url":"https://github.com/hattonpoint/validationator/issues"}}