{"_id":"divhide","_rev":"37-091df93034a90d1dc117c404443e0a8f","name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","dist-tags":{"latest":"2.0.1"},"versions":{"0.0.1":{"name":"divhide","description":"Divhide javascript core components for NodeJs and Browser.","version":"0.0.1","author":{"name":"Oscar Brito","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"licenses":[{"type":"MIT","url":""}],"repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"grunt":"~0.4.0","grunt-cli":"","load-grunt-tasks":"1.0.0","grunt-http-server":"*","grunt-contrib-watch":"*","grunt-contrib-jshint":"*","grunt-contrib-jasmine":">=0.6.3","grunt-simple-mocha":">=0.4.0","expect.js":">=0.2.0","grunt-browserify":"=2.1.4","grunt-readme":"0.4.5"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Node.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@0.0.1","_shasum":"ff5acdd2bab847605f5c7bb1dd78de3fe044e772","_resolved":"divhide-0.0.1.tgz","_from":"divhide-0.0.1.tgz","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"ff5acdd2bab847605f5c7bb1dd78de3fe044e772","tarball":"https://registry.npmjs.org/divhide/-/divhide-0.0.1.tgz","integrity":"sha512-v+aVQ9hfMRlvjRTMoQ6oBgZANzKSQgdA+vElbMYh5WfcNfoITn9/kavV4mEkVXs5YqoyOqtOW78YYRwuPFXXHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5ppGSRu0Bz/W64TKzZPg+F+aQ3XWGEWSUf/1q35E2ygIgWmW6DPgUsFL9cScDYbJbj12oMlrAD3h0AQufSQzgF0E="}]}},"1.0.0-alpha.1":{"name":"divhide","description":"Divhide javascript core components for NodeJs and Browser.","version":"1.0.0-alpha.1","author":{"name":"Oscar Brito","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"grunt":"~0.4.0","grunt-cli":"","load-grunt-tasks":"1.0.0","grunt-http-server":"*","grunt-contrib-watch":"*","grunt-contrib-jshint":"*","grunt-contrib-jasmine":">=0.6.3","grunt-simple-mocha":">=0.4.0","expect.js":">=0.2.0","grunt-browserify":"=2.1.4","grunt-readme":"0.4.5"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.1","_shasum":"5b16b2bd2e92a33207ba0a4fac7116f10c044a4e","_resolved":"divhide-1.0.0-alpha.1.tgz","_from":"divhide-1.0.0-alpha.1.tgz","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"5b16b2bd2e92a33207ba0a4fac7116f10c044a4e","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.1.tgz","integrity":"sha512-mIKN+htup47Y/nNK7swp4Yv8KuWXXHV8ifWFvmFL7bnaLBlMX5I/WH0RpS5vLapr4IeAkCA90+gmPS2NJoaSKg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbsvqwVBz5TFmZKwRL9UE33b0fT0wjMjbbkTXLQrUfAAIhAPprraj+GlUHIG49hkkSMnheJkbaULzq/Y5DSXsxODJ8"}]}},"1.0.0-alpha.2":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that run javascript.","version":"1.0.0-alpha.2","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"^8.0.2","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"2.0.0"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.2","_shasum":"5428ca64a721122025d2e2b1fe1d5b87a14fa386","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"5428ca64a721122025d2e2b1fe1d5b87a14fa386","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.2.tgz","integrity":"sha512-zO3tqRPT/tW5rU0ljiikAgqejdHAf/1g99QWiQ0qip28KIbQjQDobo0u/WQH1NU9nFEP3ulm7EfaLYw9Fmurbw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYO2G5N2JzAXqzjDXA1mmRdAoP9BiyIJSs42okxMYxQAiEA9n+f17creIABnlH+uY0f/QS9eUdBKo59nXaAH5AiUEQ="}]}},"1.0.0-alpha.3":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that run javascript.","version":"1.0.0-alpha.3","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"^8.0.2","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"2.0.0"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.3","_shasum":"55920e2cb577c2e166f80e5ee81b05cdb213522f","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"55920e2cb577c2e166f80e5ee81b05cdb213522f","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.3.tgz","integrity":"sha512-lDgJfE3SQsHm4FCqdeWK7gnm1YgTLwLDIwqaFHw4s4CpUqI29yTvQb/trnpLcyaCg4HiXNgmUwJHH3pQT4Ty9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+ilFUUQKqrlLj64g4XaZOIoh3++96u1VeTJbXPJCM5AIgaxfEyZl2/+jM3vZx1I0c1wz8eiyvOHgGZK2JDFlhWEQ="}]}},"1.0.0-alpha.4":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that run javascript.","version":"1.0.0-alpha.4","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"^8.0.2","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"2.0.0"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.4","_shasum":"e3d756a4a4b197788f32f216b740753e02ba574c","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"e3d756a4a4b197788f32f216b740753e02ba574c","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.4.tgz","integrity":"sha512-V/QcpHDk0LYmqKsbQVhE4m/7NqyZLYJ5WD3zgejubFiWbC1u6rmiyrb5aV5Gt2pu0U8mnRoiezJvXaZUHcnX9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCP1AuDQzy+mgzeOzjdeHkuVTPfjS+fxAHntR5yKTEOdwIgNBDfRswlcpQN+ZTEjo9gA8X1N3W6wUupP2rPx7jG20A="}]}},"1.0.0-alpha.5":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that run javascript.","version":"1.0.0-alpha.5","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"^8.0.2","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"2.0.0"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.5","_shasum":"41af40b5563186e36193cb407e05b4e7d01c6913","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"41af40b5563186e36193cb407e05b4e7d01c6913","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.5.tgz","integrity":"sha512-P6mGPgWYU2Lm+SOajdHgoWzeGfLRD+mziMS5ji6PkQ/sC3qJ6R+Iu5MMGAqD2hCKOV5nXDktyF+obFVxxbBaZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAslGFkqjTKzz5PQQ2XtmRgGU9GqXr/3/A7qYOgFR3M7AiA8zGaQ1PN69mL/DfQvleiKMQghmgCtSCT0TnYbv6CZyQ=="}]}},"1.0.0-alpha.6":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.0-alpha.6","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"2.0.0"},"dependencies":{"q":">=2.0.1","lodash":">=1.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.6","_shasum":"2621b26aaf961a8ef3ef21a7819329a480b36321","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"2621b26aaf961a8ef3ef21a7819329a480b36321","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.6.tgz","integrity":"sha512-kg+5/OEw9nIA2mrTJ22Kkv/10TYj2h8hjN2EV25fq97Kqng6iGaYMquNtmLoHIrgxrL7NyKptVb+8k1X7wYjeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTUh9KQI0mbOqfwACZb6EkvPhDriJw/HlnNMLL57AZIgIhALEaNYXlJhmAMSbhszqlNEnVCwxjlmA+m6nxKg8JDKZt"}]}},"1.0.0-alpha.7":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.0-alpha.7","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.7","_shasum":"cca4e0316151a89f8f1295add83dc5f05f90ed1d","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"cca4e0316151a89f8f1295add83dc5f05f90ed1d","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.7.tgz","integrity":"sha512-psm7kNYXjxSCoa//fMAAkRb4Tdj6kwMXoWZCAdIdlAxgoSP2+ylSkqQFvzo4maYErqFUG1HFQqPAlHGJ1ZAfIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNvhKTmB+vKwXpDd8rcq0q92STTzvLrsfE+IChdGROpAiEApmDEY2rO7fpxcwxCK0F/etYjCmNqVOpxFybzqIiq0Bc="}]}},"1.0.0-alpha.8":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.0-alpha.8","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":">=0.2.0","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0-alpha.8","_shasum":"a52474a3aebeedb9d6d6f0e5eb444d557799cf9c","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"a52474a3aebeedb9d6d6f0e5eb444d557799cf9c","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0-alpha.8.tgz","integrity":"sha512-1AlThVqdy+AfjkEGCjEpM5NUbguwR9nGoTbGJ6ZYL/aM3O2acbuvGqnjZaT62BsI/4nGNzWv8rXOfTgZKoqwIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcd3SNnvhd3+alLYdS5LTFl5J+dcIemUIKqFY8Dpr7NAIgXinQRPaAlWa+U5QrO2Gh5D7zRELiq8SaUYSm/QMlcHs="}]}},"1.0.0":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.0","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.0","_shasum":"c57cd3ad6a23bdeaee0dd85d42f7c1c8e6d25fdb","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"c57cd3ad6a23bdeaee0dd85d42f7c1c8e6d25fdb","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.0.tgz","integrity":"sha512-EmRf0Vgsnn16dODuTTo1Eslg2s9QNL6lgA7XPGwDtOZWGlEmjbpYXHErPGkX9tWdlf2W34BbBPyGqXFEsxRdEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHfTz4s3JBGQ2X59nNideBh8giQXO3o2Ay5yRknShXuyAiEA0bDn9reVFT7yvooZw+OasWBYQNDsVNL09WW+cPIZFAk="}]}},"1.0.1":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.1","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.1","_shasum":"94ac27745abaeeffb92890ec40638b5b924d9e19","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"94ac27745abaeeffb92890ec40638b5b924d9e19","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.1.tgz","integrity":"sha512-5X0RlvL2IpMsaLrOSwDMNjToi/Jp52iFiCFGvHpz/949VHU9x0tB+r7+QGAyYTBRteOCbA77/5S66UI9DphKBQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpqsUA3xYYB7bgNLprVDeQXxxzD+qpRU08axxa8tZ6gAiEA5bijrRHbLKCw5vGCvpypm8fooSSwPlae1yPIMQHil/0="}]}},"1.0.2":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.2","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"gitHead":"83a946c61a1ea1f91855a55864d6531dd9a52692","bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.2","_shasum":"ad39ca70670a32a9173553e9ee88d096eebdebc2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"ad39ca70670a32a9173553e9ee88d096eebdebc2","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.2.tgz","integrity":"sha512-4Iin3XZWroVWGoCgAoc0X9LbtDX9s87epp+uhA9dvTVNO1IBoIyaa+Ia4zjGOBJtITBmSrfn6ZuHh7PozHQPZg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlP2qftChob0NIC7NsP7cINXZT5xMGc+9Ze5P9YgP3mwIhAK3F23Hfkwk18Rz+XdxNiNiOO4ppZP6XzLVxiao5USuF"}]}},"1.0.3":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.3","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"gitHead":"83a946c61a1ea1f91855a55864d6531dd9a52692","bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.3","_shasum":"3406fdc95c33cea941e6db909e3304b7782ebe39","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"3406fdc95c33cea941e6db909e3304b7782ebe39","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.3.tgz","integrity":"sha512-vINJtJvSvb7WRUi4ChQRGs5lj27P9JjoWmvjybdCF9+eX1EMm2PMoARwQ4lAZEQ+s2yXHHPyj7Sdqf4YCWr5Kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyO9REAslKzsXaceSs3f1d47ngVuzUyb2ZZqHV1xl0MQIgMcTtJsJHF5WNwRpRdZTMBgpzEBlOh7r+9yWE72FChvA="}]}},"1.0.4":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.4","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"gitHead":"30dafe195e964cbabd98a1db184166974cd4d72f","bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.4","_shasum":"0d8b93ce7e0b8ab0267e97c2bdb747b0bcc9fc00","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"0d8b93ce7e0b8ab0267e97c2bdb747b0bcc9fc00","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.4.tgz","integrity":"sha512-qEaItG8A9nJBUCi5wt5SUDhr4GI/TTEJ6kr21n/dRq9FOo9K0KsQpikOrLxDII/IGXxbb0tDZ6UsXH7zMvR20w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe7kW1SahIKs+5vbiR0djUM8Z/3HLBK7fa5mZqNChJhgIgUKrjKzHxXNkVQ0zCUa10+5O17RpReQkqzTJ8p+e2BEQ="}]}},"1.0.5":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.5","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"gitHead":"f9a30032ad973db1099ab21cc57e53db79646a73","bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.5","_shasum":"30a5bf68281bac51f8829af0f69770f93af4f297","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"30a5bf68281bac51f8829af0f69770f93af4f297","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.5.tgz","integrity":"sha512-s7VIX2Dj7WrhjLp+N1ZPRXhT3cgSTxBdxSPm1PmaDj1sULhmOZ1FEn3BFXERteQb2++7UXkopENqjo5sBPIFmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6sbaAu3VOGXZ2dLZbFuVlTMQ2x7bXXyTEhBGNBhoLmQIgdKOmJdNy0yy76J76qNnmZt+q57cSeac6A6yu+xNHZ/Q="}]}},"1.0.6":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"1.0.6","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git@github.com:divhide/divhide-core.git"},"devDependencies":{"browserify":"8.1.0","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"~3.2.1","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":">=0.6.3","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","load-grunt-tasks":"3.0.0"},"dependencies":{"lodash":"2.4.1"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt travis --verbose"},"gitHead":"9caff31e12b230700219838e120a6cf97db938a4","bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core","_id":"divhide@1.0.6","_shasum":"b50060923b5b04a9b4d97d4ca378a5e01230b2fd","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"b50060923b5b04a9b4d97d4ca378a5e01230b2fd","tarball":"https://registry.npmjs.org/divhide/-/divhide-1.0.6.tgz","integrity":"sha512-odAdowlDdJ4wd6bcR6NNyRphH2zsic2UjFXZwxmkNx9FtxEbPrABl96vlXGktOcCxMQRsr45lV/rZsiKFoNHNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSMPEeVjdI9kOpfqwQyN+QjxILxBVYle0sYVDrYj5urAIgKE6B8CwXtRjc6lp5gyb6D0fzZFMa0Ku5dwUgEXBF74U="}]}},"2.0.0":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"2.0.0","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/divhide/divhide-core.git"},"devDependencies":{"browserify":"9.0.7","browserify-istanbul":"^0.2.1","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"=3.8.0","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":"*","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-karma":"^0.11.1","grunt-karma-coveralls":"^2.5.3","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","karma":"^0.12.37","karma-chrome-launcher":"^0.2.0","karma-coverage":"^0.4.2","karma-jasmine":"^0.3.5","karma-phantomjs-launcher":"^0.2.0","karma-threshold-reporter":"^0.1.15","load-grunt-tasks":"3.0.0","phantomjs":"^1.9.17"},"dependencies":{"lodash":"=3.9.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt --verbose"},"gitHead":"5712826dcb7496e19b6b023a3961a50255dfc620","bugs":{"url":"https://github.com/divhide/divhide-core/issues"},"homepage":"https://github.com/divhide/divhide-core#readme","_id":"divhide@2.0.0","_shasum":"27dddbd85e38c77ea93e654412041b87d8d5ab98","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.10.36","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"27dddbd85e38c77ea93e654412041b87d8d5ab98","tarball":"https://registry.npmjs.org/divhide/-/divhide-2.0.0.tgz","integrity":"sha512-Qqo1R81yROkxLXjUaFFkYiJuqjCeulZk3WfynJ3J5gmvGPVMXBmlTH+p5rBifLJL1Jt+5PFa+68hk3FN3psR6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGEprv7uwhlryj/0eneQJs/l5YeEokSCvzfrJyYU615wIgGotNrdH9Ap99ZsPp/ufWQHVqpBAmYFTcUfZVM56pAMA="}]}},"2.0.1":{"name":"divhide","description":"Divhide javascript core components for NodeJs, Browser, Titanium, ... and everything that runs javascript.","version":"2.0.1","author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/divhide/node-divhide.git"},"devDependencies":{"browserify":"9.0.7","browserify-istanbul":"^0.2.1","expect.js":"^0.3.1","grunt":"~0.4.5","grunt-browserify":"=3.8.0","grunt-bump":"0.0.16","grunt-cli":"","grunt-contrib-jasmine":"*","grunt-contrib-jshint":"*","grunt-contrib-watch":"*","grunt-exec":"^0.4.6","grunt-http-server":"*","grunt-karma":"^0.11.1","grunt-karma-coveralls":"^2.5.3","grunt-readme":"0.4.5","grunt-simple-mocha":">=0.4.0","karma":"^0.12.37","karma-chrome-launcher":"^0.2.0","karma-coverage":"^0.4.2","karma-jasmine":"^0.3.5","karma-phantomjs-launcher":"^0.2.0","karma-threshold-reporter":"^0.1.15","load-grunt-tasks":"3.0.0","phantomjs":"^1.9.17"},"dependencies":{"lodash":"=3.9.3"},"main":"src/Index.js","engines":{"node":">=0.10.2"},"scripts":{"test":"grunt --verbose"},"gitHead":"c444c05fcf85cd65659f081d69b2b4c6f84f1375","bugs":{"url":"https://github.com/divhide/node-divhide/issues"},"homepage":"https://github.com/divhide/node-divhide#readme","_id":"divhide@2.0.1","_shasum":"8c7b026f7ff0e975803cbb965aeca114de82d9bb","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.10.36","_npmUser":{"name":"aetheon","email":"aetheon@gmail.com"},"maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"dist":{"shasum":"8c7b026f7ff0e975803cbb965aeca114de82d9bb","tarball":"https://registry.npmjs.org/divhide/-/divhide-2.0.1.tgz","integrity":"sha512-jl/LWlNPbX/Wf3xBwBGORbEuRQR15cbpFKJkKW0VtMBZAYugVav/JuZY4Cyy4slK1vOI2lqUvyS963rL9P/hLw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdNhl9IbxZhs896EPurDSIIqPn1Fr57MUIChC4pSRimAIhAMdoC1v87AGH+RZXp42ReyOYON2l+7kigFJ6zBZ+CW1Z"}]}}},"readme":"# [![Divhide](http://blog.divhide.com/assets/images/divhide_128px.png)](http://divhide.com/) divhide-core\n\n[![Build Status](https://travis-ci.org/divhide/node-divhide.png?branch=master)](https://travis-ci.org/divhide/node-divhide) [![Coverage Status](https://coveralls.io/repos/divhide/divhide-core/badge.svg)](https://coveralls.io/r/divhide/divhide-core) [![NPM version](https://badge.fury.io/js/divhide.svg)](http://badge.fury.io/js/divhide) [![Dependency Status](https://gemnasium.com/divhide/divhide-core.svg)](https://gemnasium.com/divhide/divhide-core)\n\n[![NPM Stats](https://nodei.co/npm/divhide.png?downloads=true)](https://www.npmjs.com/package/divhide) ![alt text](https://raw.githubusercontent.com/divhide/divhide-core/master/.readme/assets/bower-logo.jpg) ![alt text](https://raw.githubusercontent.com/divhide/divhide-core/master/.readme/assets/titanium-logo.png)\n\n[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=NYVPSL7GBYD6A&lc=US&item_name=Oscar%20Brito&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)\n\n\nJavascript codebase to use on the Browser, NodeJS and other javascript platforms. This provides a set of utilities that you can use everywhere.\n\nThe intent of this library is to expose some building blocks that you can use when building a library, a mobile application, a web page, a web server, a command line utility...\n\nPlease note that **all examples are integrated on the CI build** and that's the reason why you'll see `expect` statements.\n\n\n\n### Install\n\n### Node.js\n\n```\n\nnpm install divhide\n\n```\n\n``` js\n\n\nvar Divhide = require(\"divhide\");\n...\n\n\n```\n\n\n### Bower\n\n```bash\n\nbower install divhide\n## or download **divhide.js** from the **dist/** folder.\n\n```\n\n\n\n``` html\n\n\n<script type=\"text/javascript\" src=\"//bower_components/divhide/dist/divhide.js\"></script>\n<script type=\"text/javascript\">\n    var fn = Divhide.Safe.function();\n    ...\n</script>\n\n\n```\n\n### Titanium\n\n```\n\nDownload dist/divhide.js from github and use it as a library.\n\ne.g.\nvar Divhide = require(\"/vendor/divhide\");\n\n```\n\n\n\n\n## API\n\n* [API](#api)\n  * [I18N](#i18n)\n  * [Exception](#exception)\n  * [Assert](#assert)\n  * [Assertion](#assertion)\n  * [Chain](#chain)\n  * [Schema](#schema)\n  * [CustomSchema](#customschema)\n  * [Type](#type)\n  * [Safe](#safe)\n  * [Obj](#obj)\n  * [Arr](#arr)\n* [Contribute](#contribute)\n* [Authors](#authors)\n* [License](#license)\n\n\n### I18N\n\nThe Internationalization package. This package provides you with some utilities that will help you\non your internationalization tasks.\n\nThere's no intention for this library to contain translations for other languages.\n\n#### I18NString\n\nThe I18NString is a String representation that can be translated. This string can be a plain String or\na lodash template.\n\nThis implementation creates a clear separation between the translation mechanism and it's internal logic. This package is used across the library in order to provide I18N out of the box!\n\n**Constructor**\n\n* `new I18N.String(message, data?, translations?)`\n<br />\nCreates a String instance with the given *message*, associated *data*, and an object which contain the *translation*.\n\n**Methods**\n\n* `.toString(translations?)`\n<br />\nGets the string representation of the error. If _translations_ object is provided the message Error message will try to be translated.\n\n**Example**\n\n```js\n\n\nvar I18NString = Divhide.I18N.String;\n\n/// the external translation data\nvar Portuguese = {\n    \"hello <%= username %>\": \"olá <%= username %>\"\n};\n\n/// create a I18NString (message + data)\nvar message = new I18NString(\"hello <%= username %>\", { username: \"oscar\" });\n\n/// Gets the English message\nvar en = message.toString();\nexpect(en)\n    .toBe(\"hello oscar\");\n\n/// Gets the Portuguese message\nvar en = message.toString(Portuguese);\nexpect(en)\n    .toBe(\"olá oscar\");\n\n\n```\n\n\n### Exception\n\nThe Exception package provides some utilities created in order to normalize the Error handling.\n\nAll the Exceptions classes inherit from Error. Also, these classes are using the I18N\npackage.\n\n\n#### Exception\n\nThe Exception class inherits from Error. This class is integrated with I18N package.\n\n**Constructor**\n\n* `new Exception.Exception(message, data?)`\n<br />\nCreates an instance of an exception with the given _message_ and _data_.\n\n**Methods**\n\n* `.message`\n<br />\nGets the string representation of the error.\n\n* `.toString(translations?)`\n<br />\nGets the string representation of the I18NString. You can provide a *translation* object.\n\n**Example**\n\n```js\n\n\nvar Exception = Divhide.Exception.Exception;\n\n/// the external translation data\nvar Portuguese = {\n    \"The maximum value allowed is <%= value %>.\": \"Valor máximo é <%= value %>.\"\n};\n\nvar error = new Exception(\n    \"The maximum value allowed is <%= value %>.\",\n    { value: 10 });\n\n/// Exception instance is an error!\nexpect(error instanceof Error)\n    .equals(true);\n\n/// Exception message\nexpect(error.toString())\n    .equals(\"The maximum value allowed is 10.\");\n\n/// I18N Exception message\nexpect(error.toString(Portuguese))\n    .equals(\"Valor máximo é 10.\");\n\n\n\n```\n\n#### ExceptionList\n\nThis allows you to create an Exception that contains inner exceptions.\n\nThe ExceptionList is also an instance of Error and compatible with the I18N package.\n\n**Constructor**\n\n* `new Exception.ExceptionList()`\n\n**Methods**\n\n* `.message`\n<br />\nGets the string representation of the ExceptionList.\n\n* `.items`\n<br />\nGets the list of inner Error.\n\n* `.length`\n<br />\nGets length of the ExceptionList\n\n* `.clear()`\n<br />\nClear the ExceptionList\n\n* `.push(Error)`\n<br />\nPush an Error instance to the ExceptionList\n\n* `.push(ExceptionList)`\n<br />\nMerge the given ExceptionList into the instance\n\n* `.toString(translations?)`\n<br />\nGets the string representation of the I18NString. You can provide a *translation* object.\n\n\n**Example**\n\n```js\n\n\nvar Exception       = Divhide.Exception.Exception,\n    ExceptionList   = Divhide.Exception.ExceptionList;\n\n\nvar errors = new ExceptionList();\n\n/// is an instance of Error\nexpect(errors instanceof Error)\n    .toEqual(true);\n\n/// adding errors to ExceptionList ( you can also merge other ExceptionList! )\nerrors.push( new Exception(\"Error1\") );\nerrors.push( new Exception(\"Error2\") );\nerrors.push( new Exception(\"Error3\") );\n\n/// get length of the list\nexpect(errors.length)\n    .toEqual(3);\n\n/// get an error from the list\nexpect(errors.items[0].toString())\n    .toEqual(\"Error1\");\n\n/// get the translated error\nexpect(errors.toString({ \"Error1\": \"Error 1\", \"Error2\": \"Error 2\", \"Error3\": \"Error 3\" }))\n    .toEqual(\"Error 1, Error 2, Error 3\");\n\n\n\n\n```\n\n\n### Assert\n\nThe Assert facility provides an assertion expression builder with some pre-built functions.\n\n**Methods**\n\n* `.required()`\n<br />\nSet the expected value to be defined\n\n* `.string()`\n<br />\nSet the expected value to be a string\n\n* `.array()`\n<br />\nSet the expected value to be an array\n\n* `.object()`\n<br />\nSet the expected value to be an object\n\n* `.number()`\n<br />\nSet the expected value to be a number\n\n* `.max(number)`\n<br />\nSet the expected value to have a specified maximum. In the case of String or Array the context will be the value length. In the case of an object will be the number of keys\n\n* `.min(number)`\n<br />\nSet the expected value to have a specified minimum. In the case of String or Array the context will be the value length. In the case of an object will be the number of keys\n\n* `.instanceOf(fn)`\n<br />\nSet the expected value to be an instance of the given function.\n\n* `.regex(value)`\n<br />\nSet the expected value to pass the regex\n\n* `.isValid(value)`\n<br />\nTest if the given value is valid within the current assertion\n\n* `.assert(value)`\n<br />\nReturn the given value if valid; otherwise will throw an Exception\n\n**Example**\n\n```js\n\n\nvar Assert = Divhide.Assert;\n\n/// Test if the value is valid\nvar isValid = Assert.required()\n    .string()\n    .regex(\"^M\")\n    .max(10)\n    .min(5)\n    .isValid(\"Mary\");\n\nexpect(isValid)\n    .toBe(false);\n\n\n/// Valid assertion:\nvar obj = Assert.required()\n    .array()\n    .max(5)\n    .assert([1, 2, 4, 5]);\n\nexpect(obj)\n    .equals([1, 2, 4, 5]);\n\n\n/// Invalid assertion:\nvar fn = function(){\n\n    Assert.required()\n        .array()\n        .max(1) /// will be on array context\n        .assert([\"first\", \"second\"]);\n\n};\n\nexpect(fn)\n    .toThrow();\n\n\n\n\n```\n\n\n\n### Assertion\n\nAssertion facility provides a way to build custom Asserts. You can create your own assertion functions\nand integrate them with the Assert facility.\n\n**Constructor**\n\n* `new Assertion(methods)`\n<br />\nCreates a custom assertion instance that contains the given methods plus the default methods (see Assert).\n\n\n```js\n\n\n/// Assertion builder\nvar Assertion = Divhide.Assertion;\n\n/// Create the custom Assert facility\nvar Assert = new Assertion({\n\n    /**\n     *\n     * Tests if the string starts with the given value\n     *\n     * @param  {String} val\n     * @param  {String} str\n     * @return {String}\n     */\n    startsWith: function(val, str){\n\n        if(val.indexOf(str) !== 0){\n            throw new Error(\"Does not starts with \" + str);\n        }\n\n    }\n\n});\n\n/// Test if the value is valid\nvar isValid = Assert\n                .required()\n                .string()\n                .startsWith(\"Mary\")\n                .isValid(\"Mary and Peter\");\n\nexpect(isValid)\n    .toBe(true)\n\n\n/// Assert value\nvar value = Assert\n            .required()\n            .string()\n            .startsWith(\"Mary\")\n            .assert(\"Mary and Peter\");\n\nexpect(value)\n    .equals(\"Mary and Peter\");\n\n\n\n\n\n```\n\n\n\n\n### Chain\n\n\nChain facility provides an API to create chainable functions. Each Chain is created by a list of chainable functions, a list of evaluation\nfunction and some options.\n\n**Constructor**\n\n* `new Chain(chainableFns, evaluationFns, options)`\n<br />\nCreates a Chain instance that allows you to execute chainable methods (__chainableFns__). The chain is only executed\nwhen an evaluation method (__evaluationFns__) is called.\n<br />\n    * chainableFns\n    * evaluationFns\n    * options - `{ pipe: Boolean, type: Function, argument: *, scope: Object }`.\n\n```js\n\n\nvar Chain = Divhide.Chain;\n\n\nvar Maths = new Chain(\n\n    /// the chaining fns\n    {\n        sum: function(i,j){\n            return i + j;\n        },\n\n        sub: function(i, j){\n            return i - j;\n        }\n    },\n\n    /// the evaluation fns\n    {\n        calculate: function(result, err){\n            return result;\n        }\n    },\n\n    /// the options\n    {\n\n        /// if true the return of a function is passed as an argument to the next one\n        /// if false, the evaluation arguments are passed to every chain function (default)\n        pipe: true\n\n    });\n\n\nvar value = Maths.sum(5)\n    .sub(3)\n    .sum(10)\n    .calculate(0);\n\nexpect(value)\n    .toBe(12);\n\n\n\n```\n\n\n\n\n### Schema\n\nThe Schema facility provide an easy way to write validation rules. Using a chainable API you can\ncompile and/or evaluate the rules.\n\n**Methods**\n\n`.any()`\n<br />\nSet the expected type as any object.\n\n`.strict()`\n<br />\nDisable the type coercion. Strict types are required.\n\n`.string()`\n<br />\nSet the expected type as a string\n\n`.number()`\n<br />\nSet the expected type as a number\n\n`.boolean()`\n<br />\nSet the expected type as a boolean\n\n`.object(value)`\n<br />\nSet the expected type as an object. The **value** is an object with rules.\n\n`.array(value)`\n<br />\nSet the expected type as an object. The **value** is an array with rules.\n\n`.function()`\n<br />\nSet the expected type as a function.\n\n`.required()`\n<br />\nSet as required.\n\n`.optional()`\n<br />\nSet as optional\n\n`.default(value)`\n<br />\nSet the default value. This is used when the schema its required and the provided value is null.\n\n`.repeatable()`\n<br />\nSet the type as repeatable. This repeats the schema through the structure (array only!).\n\n`.min(value)`\n<br />\nSet the min value expected. If in number context the value is used. If in string context the length is used.\nIf in array context the length is used. If in object context the number of keys is used.\n\n`.max(value)`\n<br />\nSet the max value expected. If in number context the value is used. If in string context the length is used.\nIf in array context the length is used. If in object context the number of keys is used.\n\n`.regex(value)`\n<br />\nSets a regexp condition ( only use on string context! )\n\n`.compile()`\n<br />\nCompiles the schema. If you are using the same Schema multiple time you can compile it for performance reasons.\nThis avoid compiling the Schema before every usage.\n\n`.value(value)`\n<br />\nTest the schema returning the normalized value if valid. Throws an Error if invalid.\n\n`.isValid(value)`\n<br />\nTest the schema return if its valid or not.\n\n`.errors(value)`\n<br />\nTest the schema returning an Array with the errors\n\n`.serialize()`\n<br />\nGets the serialized schema representation.\n\n`.deserialize(value)`\n<br />\nGets the Schema from the given value.\n\n\n**Example** overview\n\n```js\n\n\nvar Schema = Divhide.Schema;\n\n\n/// get the schema\nvar schema = Schema.object({\n\n        /// array with multiple strings\n        data: Schema.array([ \"\" ]).repeatable().max(10),\n\n        /// every other object key is optional\n        \"/.*/\": Schema.number().optional()\n\n    }).required();\n\n\n/// apply the schema to the value\nvar value = schema.value({\n    data: [ 1, 2, 3, 4, 5, 6],\n    timestamp: \"1404373579473\"\n});\n\n\n/// test the value\nexpect(value).equals({\n    data: [ '1', '2', '3', '4', '5' , '6'],\n    timestamp: 1404373579473\n});\n\n\n\n```\n\n**Example** String Schema\n\n```js\n\n\nvar Schema = Divhide.Schema;\n\nvar serialized =\n        Schema.object({\n            \"name\"      : \"\",\n            \"friends\"   : Schema.array([\n                {\n                    name: \"\"\n                }\n            ]).optional(),\n        })\n        .required()\n        .serialize();\n\n/// deserialize the object\nvar schema = Schema.deserialize(serialized);\n\n/// let's get the object\nvar value = schema.value({\n    id: 1,\n    name: \"Oscar\",\n    friends: [{ name: \"Solange\" }]\n});\n\nexpect(value).equals({\n    name: \"Oscar\",\n    friends: [{ name: \"Solange\" }]\n});\n\n\n\n\n\n```\n\nTime to see some code! Some usage examples are described below.\n\n**Example** Number Schema\n\n```js\n\n\nvar Schema = Divhide.Schema;\n\nvar schema = Schema.number()\n                .optional()\n                .min(3)\n                .max(5)\n                .compile();\n\n\n/// value is correct\nvar value = schema.value(3);\nexpect(value).toBe(3);\n\n\n/// optional value\nvar value = schema.value();\nexpect(value).equals(null);\n\n\n/// value is undefined\nexpect(\n    function(){\n        schema.value(0);\n    })\n    .toThrow(\n        new Error(\"The minimum value allowed is 3.\")\n    );\n\n\n/// values exceed the max\nexpect(\n    function(){\n        schema.value(10);\n    })\n    .toThrow(\n        new Error(\"The maximum value allowed is 5.\")\n    );\n\n\n/// because is optional, is valid!\nvar isValid = schema.isValid();\nexpect(isValid).toBe(true);\n\n\nisValid = schema.isValid(3);\nexpect(isValid).toBe(true);\n\n\nisValid = schema.isValid(10);\nexpect(isValid).toBe(false);\n\n\n\n\n\n```\n\n**Example** Schema (de)serialization\n\n```js\n\n\nvar Schema = Divhide.Schema;\n\n\n/// String schema\nvar schema = Schema.string()\n                .required()\n                .min(3)\n                .max(5);\n\n\n/// returns the value\nvar value = schema.value(\"hello\");\nexpect(value).toBe(\"hello\");\n\n\n/// value is required!\nexpect(\n    function(){\n        schema.value();\n    })\n    .toThrowError(\"Value is required., The minimum value allowed is 3.\");\n\n\n/// value is required!\nexpect(\n    function(){\n        schema.value(\"hello world\");\n    })\n    .toThrow(new Error(\"The maximum value allowed is 5.\"));\n\n\n/// Check if is valid\nvar isValid = schema.isValid(\"\");\nexpect(isValid).toBe(false);\n\n\nvar isValid = schema.isValid(\"hello\");\nexpect(isValid).toBe(true);\n\n\nvar isValid = schema.isValid(\"hello world\");\nexpect(isValid).toBe(false);\n\n\n\n\n\n```\n\n**Example** Object Schema\n\nObjects schema is set by applying rules to each property of the object. You can also use regular expressions on\nthe schema object keys to give better filtering.\n\nYou can also set the schema object keys to primitive values which will be interpreted as `required().default(value)`\nin the schema.\n\n```js\n\n\nvar Schema = Divhide.Schema;\n\nvar schema =\n        Schema.object({\n            \"/^optional/\"   : Schema.string().optional(),\n            \"number\"        : 0,\n            \"string\"        : \"\",\n        })\n        .required()\n        /// TIP: When compiled the schema is faster\n        .compile();\n\n\n/// let's get the object\nvar value = schema.value({\n    string      : \"awesome!\",\n    number      : \"0\",\n    optional1   : \"1\",\n    optional2   : \"2\",\n    other       : 1\n});\n\n\n/// Please notice that some of the object properties were\n/// not included!\nexpect(value).equals({\n    \"number\": 0,\n    \"string\": \"awesome!\",\n    \"optional1\": \"1\",\n    \"optional2\": \"2\"\n});\n\n\n\n\n\n```\n**Example** Array Schema\n\nThe following example describe an array rule that is optional and its expecting three items.\n\n```js\n\n\nvar Schema = Divhide.Schema;\n\n\n/// Array schema ( no repeatable)\nvar schema = Schema\n    .array([ Schema.string().default(\"value\"), Schema.number(), Schema.string() ])\n    .optional()\n    .compile();\n\n\n/// because its optional it returns null\nvar value = schema.value();\nexpect(value).toBe(null);\n\n\n/// The value is right!\nvalue = schema.value([ '1', 2, '3' ]);\nexpect(value).equals([ '1', 2, '3']);\n\n\n/// array have more items than it should\nexpect(\n    function(){\n        schema.value([ '1', 2, '3', 4, 5, 6 ])\n    })\n    .toThrow(\n        new Error(\"Expected list with 3 items but found 6.\")\n    );\n\n\n/// Wrong type!\nexpect(\n    function(){\n        schema.value(10);\n    })\n    .toThrow(\n        new Error(\"'array' was expected but found 'number' instead.\")\n    );\n\n\n///\n/// Just another way to write the rule!\n///\n\n\nvar schema = Schema\n    .array([ Schema.string(), Schema.number() ])\n    .repeatable()\n    .optional()\n    .compile();\n\n\n// Get the value\nvar value = schema.value([\"1\", 2, \"3\", 4]);\nexpect(value).equals([\"1\", 2, \"3\", 4]);\n\n\n// because the number of item on the array must be multiple of 2\n// an error is thrown\nexpect(\n    function(){\n        schema.value([\"1\", 2, \"3\"])\n    })\n    .toThrow(\n        new Error(\"Expected list length to be multiple of 2 but found length of 3.\")\n    );\n\n\n\n\n\n```\n\n\n\n### CustomSchema\n\n\n### Type\n\nType facility provides an API that can help you with typical operations using the javascript\ndata Types.\n\n**Methods**\n\n* `.of(value)`\n<br />\nGets the string representation of the given value.\n\n* `.isArray(value)`\n\n* `.isBoolean(value)`\n\n* `.isFunction(value)`\n\n* `.isString(value)`\n\n* `.isObject(value)`\n\n* `.isBoolean(value)`\n\n* `.isRegExp(value)`\n\n* `.isRegExpStr(value)`\n\n* `.isNumber(value)`\n\n* `.instanceOf(value)`\n\n* `.isDefined(value)`\n<br />\nChecks if the value is defined.\n\n* `.isEmpty(value)`\n<br />\nChecks if the value is empty (executed in string, list and object context ).\n\n```js\n\n\nvar Type = Divhide.Type;\n\nvar type = Type.of({});\nexpect(type).toBe(\"object\");\n\nvar type = Type.of([]);\nexpect(type).toBe(\"array\");\n\nvar type = Type.of(1);\nexpect(type).toBe(\"number\");\n\nvar type = Type.of(\"name\");\nexpect(type).toBe(\"string\");\n\nvar type = Type.of(true);\nexpect(type).toBe(\"boolean\");\n\nvar isArray = Type.isArray([]);\nexpect(isArray).toBe(true);\n\nvar isBoolean = Type.isBoolean(true);\nexpect(isBoolean).toBe(true);\n\nvar isFunction = Type.isFunction(function(){});\nexpect(isFunction).toBe(true);\n\nvar isString = Type.isString(\"\");\nexpect(isString).toBe(true);\n\nvar isObject = Type.isObject({});\nexpect(isObject).toBe(true);\n\nvar isObject = Type.isObject(null);\nexpect(isObject).toBe(false);\n\nvar isRegExp = Type.isRegExp(/reg/);\nexpect(isRegExp).toBe(true);\n\nvar isNumber = Type.isNumber(1);\nexpect(isNumber).toBe(true);\n\nvar isNumber = Type.isNumber(\"1.1\");\nexpect(isNumber).toBe(true);\n\nvar isDefined = Type.isDefined(null);\nexpect(isDefined).toBe(false);\n\nvar isDefined = Type.isDefined(undefined);\nexpect(isDefined).toBe(false);\n\nvar isEmpty = Type.isEmpty(\"\");\nexpect(isEmpty).toBe(true);\n\nvar isEmpty = Type.isEmpty([]);\nexpect(isEmpty).toBe(true);\n\nvar isEmpty =  Type.isEmpty({});\nexpect(isEmpty).toBe(true);\n\nvar isEmpty =  Type.isEmpty(null);\nexpect(isEmpty).toBe(true);\n\nvar isString = Type.instanceOf(\"string\", String);\nexpect(isString).toBe(true);\n\n\n\n\n```\n\n\n\n\n\n\n\n### Safe\n\n\nSafe facility provides an API that can helps you safelly working with javascript data types. This methods\nare supposed to work with different value types.\n\n**Methods**\n\n* `Safe.array(value, defaultValue?)`\n<br />\nGets the value in the array representation. __defaultValue__ is returned if defined and if value is not\nan array.\n\n* `Safe.boolean(value, defaultValue?)`\n\n* `Safe.string(value, defaultValue?)`\n\n* `Safe.object(value, defaultValue?)`\n\n* `Safe.number(value, defaultValue?)`\n\n* `Safe.function(value, defaultValue?)`\n\n* `Safe.value(value, defaultValue?)`\n\n* `Safe.regexp(value, defaultValue)`\n\n* `Safe.instanceOf(value, Class)`\n<br />\nGets an instance of the given value if is an instance of the given Class, otherwise it will\ncreate an instance.\n\n* `Safe.length(value)`\n<br />\nGets the length of the value.\n\n* `Safe.coerce(value, expected)`\nGets the value coerced by the expected value type.\n\n**Example** Array\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.array(1);\nexpect(value)\n    .equals([1]);\n\nvar value = Safe.array(1);\nexpect(value)\n    .equals([1]);\n\nvar value = Safe.array([1, 2]);\nexpect(value)\n    .equals([1, 2]);\n\nvar value = Safe.array(null, [ 1, 2 ]);\nexpect(value)\n    .equals([1, 2]);\n\nvar value = Safe.array(\"1\", [1, 2]);\nexpect(value)\n    .equals([\"1\"]);\n\n\n\n```\n\n**Example** Boolean\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.boolean(true);\nexpect(value).toBe(true);\n\nvar value = Safe.boolean(false);\nexpect(value).toBe(false);\n\nvar value = Safe.boolean(1);\nexpect(value).toBe(true);\n\nvar value = Safe.boolean(\"1\");\nexpect(value).toBe(true);\n\nvar value = Safe.boolean(\"0\");\nexpect(value).toBe(false);\n\nvar value = Safe.boolean({});\nexpect(value).toBe(false);\n\nvar value = Safe.boolean({}, true);\nexpect(value).toBe(true);\n\nvar value = Safe.boolean([]);\nexpect(value).toBe(false);\n\nvar value = Safe.boolean(null);\nexpect(value).toBe(false);\n\n\n\n```\n\n**Example** Function\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar fn = Safe.function(function(){});\nexpect(fn())\n    .toBe(undefined);\n\nvar fn = Safe.function(\"\");\nexpect(fn())\n    .toBe(undefined);\n\nvar fn = Safe.function(\"\", function(){ return 1; });\nexpect(fn())\n    .toBe(1);\n\n\n\n```\n\n**Example** Length\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.length([1, 2]);\nexpect(value).toBe(2);\n\nvar value = Safe.length({ one: 1, two: 2});\nexpect(value).toBe(2);\n\nvar value = Safe.length(2);\nexpect(value).toBe(2);\n\nvar value = Safe.length(\"hello\");\nexpect(value).toBe(5);\n\n\n\n```\n\n**Example** Number\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.number(1);\nexpect(value).equals(1);\n\nvar value = Safe.number(\"\");\nexpect(value).equals(0);\n\nvar value = Safe.number(\"1\");\nexpect(value).equals(1);\n\nvar value = Safe.number({});\nexpect(value).equals(0);\n\nvar value = Safe.number(\"\", 1);\nexpect(value).equals(1);\n\n\n\n```\n\n**Example** Object\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.object({ one: 1 });\nexpect(value).equals({ one: 1 });\n\nvar value = Safe.object([]);\nexpect(value).equals({});\n\nvar value = Safe.object([], { one: 1 });\nexpect(value).equals({ one: 1 });\n\n\n\n\n```\n\n**Example** Regex\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.regexp(/regexp/);\nexpect(value)\n    .toEqual(/regexp/);\n\nvar value = Safe.regexp(\"/regexp/\");\nexpect(value)\n    .toEqual(/regexp/);\n\nvar value = Safe.regexp(\"\");\nexpect(value)\n    .toEqual(/^$/);\n\nvar value = Safe.regexp(\"name\");\nexpect(value)\n    .toEqual(/^name$/);\n\nvar value = Safe.regexp({}, /regexp/);\nexpect(value)\n    .toEqual(/regexp/);\n\n\n\n```\n\n**Example** String\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.string(\"\");\nexpect(value).toBe(\"\");\n\nvar value = Safe.string({});\nexpect(value).toBe(\"\");\n\nvar value = Safe.string({}, \"default\");\nexpect(value).toBe(\"default\");\n\n\n\n\n```\n\n**Example** Value\n\n```js\n\n\nvar Safe = Divhide.Safe;\n\nvar value = Safe.value(1);\nexpect(value).toBe(1);\n\nvar value = Safe.value(\"1\");\nexpect(value).toBe(\"1\");\n\nvar value = Safe.value(null);\nexpect(value).toBe(null);\n\nvar value = Safe.value(undefined);\nexpect(value).toBe(null);\n\nvar value = Safe.value(null, 1);\nexpect(value).toBe(1);\n\n\n\n\n```\n\n\n\n### Obj\n\nObject facility provides some utility function to use on Objects.\n\n**Methods**\n\n* `filter(value, filter)`\n<br />\nReturns an array with all the keys that match the __filter__.\n\n\n**Example**\n\n```js\n\n\nvar Obj = Divhide.Obj;\n\nvar results = Obj.filter({ \"one\": 1, \"two\": 2 });\nexpect(results)\n    .toEqual([\"one\", \"two\"]);\n\nvar results = Obj.filter({ \"one\": 1, \"two\": 2 }, \"one\");\nexpect(results)\n    .toEqual([\"one\"]);\n\n\nvar results = Obj.filter({ \"one\": 1, \"two\": 2 }, \"three\");\nexpect(results)\n    .toEqual([]);\n\n\n```\n\n\n### Arr\n\nArray facility provides an API to easily manage array references.\n\n**Methods**\n\n* `index(value, index)`\n<br />\nGets the value of the index.\n\n* `first(value)`\n\n* `last(value)`\n\n* `length(value)`\n\n* `insert(array, value, index?)`\nInserts the given value(s) on the given index of the __array__.\n\n* `remove(array, index, n?)`\nRemoves the given __n__ elements from the __index__ from the __array__.\n\n\n**Example**\n\n```js\n\n\nvar Arr = Divhide.Arr;\n\nvar value = Arr.index([1 ,2, 3], 0);\nexpect(value).toBe(1);\n\nvar value = Arr.index([1 ,2, 3], 10);\nexpect(value).toBeNull();\n\nvar first = Arr.first([1 ,2, 3]);\nexpect(first).toBe(first);\n\nvar last = Arr.last([1 ,2, 3]);\nexpect(last).toBe(3);\n\nvar length = Arr.length([1 ,2, 3]);\nexpect(last).toBe(3);\n\nvar array = [1, 2, 3];\nArr.insert(array, 4);\nexpect(array).toEqual([1, 2, 3, 4]);\n\nvar array = Arr.insert([1 ,2, 3], [4, 5]);\nexpect(array).toEqual([1, 2, 3, 4, 5]);\n\nvar array = Arr.insert([1 ,2, 3], -1, 0);\nexpect(array).toEqual([-1, 1, 2, 3]);\n\nvar array = [1, 2, 3];\nArr.remove(array, 0);\nexpect(array).toEqual([2, 3]);\n\nvar array = [1, 2, 3];\nArr.remove(array, 0, 2);\nexpect(array).toEqual([3]);\n\n\n\n```\n\n\n## Contribute\n\n#### Testing\n\nThe purpose of the project is to provide a library that can be used across every platform that uses javascript. The tests are done using jasmine and using the browser to debug. Every file save on the \"src\" folder will recompile\nthe browserify bundle.\n\n``` bash\n\n## open http://localhost:8585/test/ to run the tests on your browser\ngrunt\n\n```\n\n#### Build\n\nThe build process will run a set of tasks including linting and testing. To contribute please add\ntests to the fix/feature you've worked.\n\nAlso, when building the documention is compiled into the README.md. Each module iniside the \"src\" directory\nshould contain a \".md\" file to document it's behaviour.\n\nThe following command will run the build.\n\n``` bash\n\ngrunt build\n\n```\n\n#### Release\n\n``` bash\n\n## change the package.json, bower.json pre-release version (v1.0.0-1)\ngrunt bump:prerelease\n\n## change the package.json, bower.json minor version (v1.0.1)\ngrunt bump:patch\n\n## Publish current version to npm and bower\ngrunt publish\n\n```\n\n\n\n\n## Authors\n\n**Oscar Brito**\n\n+ [github/aetheon](https://github.com/aetheon)\n+ [twitter/aetheon](http://twitter.com/aetheon)\n\n\n\n\n## License\nCopyright (c) 2015 Oscar Brito <aetheon@gmail.com>, contributors.\nReleased under the  license\n\n","maintainers":[{"name":"aetheon","email":"aetheon@gmail.com"}],"time":{"modified":"2022-06-15T05:34:09.529Z","created":"2014-11-01T14:42:28.188Z","0.0.1":"2014-11-01T14:42:28.188Z","1.0.0-alpha.1":"2014-12-30T10:30:04.863Z","1.0.0-alpha.2":"2014-12-31T17:59:03.290Z","1.0.0-alpha.3":"2014-12-31T18:01:55.153Z","1.0.0-alpha.4":"2014-12-31T18:04:59.113Z","1.0.0-alpha.5":"2014-12-31T18:05:51.267Z","1.0.0-alpha.6":"2015-01-25T19:05:58.571Z","1.0.0-alpha.7":"2015-01-26T19:11:52.118Z","1.0.0-alpha.8":"2015-01-27T19:15:19.990Z","1.0.0":"2015-01-31T11:26:15.879Z","1.0.1":"2015-02-01T10:39:10.489Z","1.0.2":"2015-02-07T12:03:35.337Z","1.0.3":"2015-02-07T12:05:15.591Z","1.0.4":"2015-02-07T12:58:50.690Z","1.0.5":"2015-02-07T19:39:04.896Z","1.0.6":"2015-02-08T12:11:37.898Z","2.0.0":"2015-09-17T07:24:17.972Z","2.0.1":"2015-09-17T07:32:37.692Z"},"homepage":"https://github.com/divhide/node-divhide#readme","keywords":["divhide","utils","validation","type","schema","safe","i18n","chain","error","exception","assert"],"repository":{"type":"git","url":"git+ssh://git@github.com/divhide/node-divhide.git"},"author":{"name":"Oscar Brito","email":"aetheon@gmail.com","url":"https://twitter.com/aetheon"},"bugs":{"url":"https://github.com/divhide/node-divhide/issues"},"readmeFilename":"README.md","license":"MIT","users":{"aetheon":true}}