{"_id":"occamsrazor","_rev":"47-c4655f6bae64dea8235740e22582914c","name":"occamsrazor","description":"A plugin system for Javascript","dist-tags":{"latest":"9.1.9"},"versions":{"2.2.0":{"name":"occamsrazor","version":"2.2.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugin","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","_id":"occamsrazor@2.2.0","dist":{"shasum":"ad9ecdc5ece0fb57fc932fc4ba33867df252104d","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-2.2.0.tgz","integrity":"sha512-JBTljhSu2qCXtO9V2D01ex6QHngY2fLhVrCJLTJrP1AoROR+BvMegu+q8D0NfCk5hHppEUGcG4KtczprJfP8mA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdsjtRlBdENiUozsuzD54SR1T0o1ngl9Q1M9ACwMbSrQIhAMtup4QGQ4UyU4mDUdZrh4ELADZ8KxPHDmOcnrpt64Fg"}]},"_from":"./","_npmVersion":"1.2.2","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}]},"2.2.1":{"name":"occamsrazor","version":"2.2.1","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugin","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","_id":"occamsrazor@2.2.1","dist":{"shasum":"53a3978179d97ce7d410537b8aa100a5d8b9685c","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-2.2.1.tgz","integrity":"sha512-ANFc84S/CL/4jdwFv3zktDwo7poPR2UCR3JYb/MK2tfdP15d6RMRjUFoz8DlRpVNczlYPxhCwHDPRmTqgrRSxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5aZqAqmuU4yChFTOFFne14FjOfievNW7AYLygRuwcXAiBlYJ1Tzjcs5AWbERGGUltVxOJwadaxzTc7Ko0qoyntTQ=="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}]},"2.2.2":{"name":"occamsrazor","version":"2.2.2","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugin","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","_id":"occamsrazor@2.2.2","dist":{"shasum":"c2a127492ba4e32b92a5921550f76fb64999418f","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-2.2.2.tgz","integrity":"sha512-KR7GPiHGJ28ZR6jC/CZBBSwKz0uY1Ay7C5Kw4neZNN29c/5oihvPk8Ane/mL1mSG2Ffobxor4ExLU9qrNzQ7hg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7mU8K8ZYcgcppJ9S+uTWz4BXEMI+EMEe/EvR1cSz0VQIgNxGQrj/3PXexOP5Wy5ndeegMwJaobP9m313iwT4y7n0="}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}]},"3.0.0":{"name":"occamsrazor","version":"3.0.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js","_id":"occamsrazor@3.0.0","_shasum":"930a55b9b0134965573380bd2408f057578a6df9","_from":".","_npmVersion":"2.1.2","_nodeVersion":"0.10.24","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"930a55b9b0134965573380bd2408f057578a6df9","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-3.0.0.tgz","integrity":"sha512-wzZd6DbXJHK9gjYXJgaxwxeXE68heD8dgFZuUNnzTEA+jNSwQkOWJe00khlf7i0JYJgSZNRIde665+8el0PG7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCH0z2CKyXv5KAEJkGzOUUs/RuIYjLmne9dFw4Pl/SLggIgVi9ja2JAZKu7WouogGBBXo/PTMpTnGZ5uu2NnS6fVWc="}]}},"3.0.1":{"name":"occamsrazor","version":"3.0.1","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js","_id":"occamsrazor@3.0.1","_shasum":"816b43791c44580cdb97699e62c1c00fb32cf277","_from":".","_npmVersion":"2.1.2","_nodeVersion":"0.10.24","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"816b43791c44580cdb97699e62c1c00fb32cf277","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-3.0.1.tgz","integrity":"sha512-1UHxDnmSdrQja045uGzVS9Xhp5RRQL0LooVI6Gefr+cb8nN5/K036V4LGNKG6QyVtZKPSuVv4CrLcqh3KpITPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVkZxz85J830tltuHS17gzyD2hc6mqyXkk2giflhXkuwIhALuYtWxfcFsytzwB1QgwarXUhh23nt1aDX+tHcnAU7Os"}]}},"3.0.2":{"name":"occamsrazor","version":"3.0.2","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js","_id":"occamsrazor@3.0.2","_shasum":"3086dfd785c04e6aeaa0372acb165f64e3bff3e8","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"3086dfd785c04e6aeaa0372acb165f64e3bff3e8","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-3.0.2.tgz","integrity":"sha512-jll4YtLZQxAOqScStgwCRf4SfDKsAv+JV7laxUqXmTrv4AOJU4W7nvN6vexg0UDMpDAawkyGKr71GqLPwU9KAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEF4rVWXJKf1SMd2Xq3tS41BssIm8Jq81F+d6Qks65NOAiEAwbVrhess4qQLrdUGem4mrCegX+YXAy2+Iv982kpcw5s="}]}},"3.1.0":{"name":"occamsrazor","version":"3.1.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js","_id":"occamsrazor@3.1.0","_shasum":"c0bfd909f1f29bd5ff328e8cb40d63ec2418e6d6","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"c0bfd909f1f29bd5ff328e8cb40d63ec2418e6d6","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-3.1.0.tgz","integrity":"sha512-DLJA8FQx/gqdVyzjMX1PEO7m5mR1hbOV9OziRkGuAm5MCIoScd+H6A5fhwM+E6TXWcNdVtLAj/FkalfOrPAsfg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEjzcNmXy8WnHj++IuIB2JnPSIRRyLg14c/rnmrdVE51AiBcorCcXn+hpGErwnxcB/V2zG4oplHmgkevr8iLM3vqTA=="}]}},"3.2.0":{"name":"occamsrazor","version":"3.2.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js","_id":"occamsrazor@3.2.0","_shasum":"f0e1f5565bea8a15dc6c88c174ee6dd7579d4403","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"f0e1f5565bea8a15dc6c88c174ee6dd7579d4403","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-3.2.0.tgz","integrity":"sha512-yTz7fZkfyKJ24/EM+/1Cj7E2jIrTWRe8ubyKqhVWcQgbzcxK7XiFPV7S9K1TaXHEtGFheg+Y1IoOd/jC5dmw2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8w5bMTXgNr0sliXFsP2IQP8kQEur3sZzDlnqwQMWffQIgZmTByOcOD0Ke7m6aMG+mFSetMUjbEKwsG/CXa6bzOFU="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}]},"3.3.0":{"name":"occamsrazor","version":"3.3.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@3.3.0","_shasum":"ca13844d1bce5aff7450868e88d8e973fc74fae0","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"ca13844d1bce5aff7450868e88d8e973fc74fae0","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-3.3.0.tgz","integrity":"sha512-v1mKv049ByyO5wH+OSX6vtC8QeneKzOi6M6Bmdbq3hNqNTp/GTxSR29yjXysSonxTdEZoBBYY9EqZcL6rxIfEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6EgeJeoIGjY7HUJ3x3oLaOBDYkiibz510isEV6xRUIwIgezfgnansyjjM6JVEGkd5QFgYTGXtpKgE4R7avPUvqwo="}]}},"4.0.0":{"name":"occamsrazor","version":"4.0.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.0.0","_shasum":"ea242a797a98af98104700ca82035a07bb77e928","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"ea242a797a98af98104700ca82035a07bb77e928","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.0.0.tgz","integrity":"sha512-/DsoOoC0xwfK41RgKVdRbe7irzoXPRaxBq1V5vAvPFXmTR/2ZpAyjDraJimjC5xiK3g2h2HCPabKl2uY5/8cKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3kqQvHeYlB7ykvxYNGY5quIzdVS15pvXYzoYWdKax6wIgRVD95ytk4qQhd1pdTWAiJB9kGHAzxeQnuQjWO8ElbTg="}]}},"4.1.0":{"name":"occamsrazor","version":"4.1.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.1.0","_shasum":"82746f1987959f66f40b26e925d7fed85e5edfc7","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"82746f1987959f66f40b26e925d7fed85e5edfc7","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.1.0.tgz","integrity":"sha512-kvLvZAv9/6n8JSABKCp4wkGUHwpq8JopeI4YwXvFXMjfrjExVU0AIOwMVgOnumYZ2sP1q1Mm9pUwsUEpIui/zA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEf0vgXf9zksWIX7iSjh+yJG2LRDo79dlZTYBu/R5H5/AiBrqBPsC/Hds8oupOmVeGR8+CXp7vVISJsEuTG2OIkPXg=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}]},"4.2.0":{"name":"occamsrazor","version":"4.2.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.2.0","_shasum":"d0cc0d65253b56f68e4dc85e5aa7160c5fd5272b","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"d0cc0d65253b56f68e4dc85e5aa7160c5fd5272b","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.2.0.tgz","integrity":"sha512-JjVZojnjzTBOnb+M01fBuWpq4RU/C9pJjmYV0CHHYNpe0RXsaTpYzvsLBYkqkoahIOa6tvatV1Lle1Axm36MOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAhUWv9a7lyX6h9tS7AkW5RThZ6G/zv82YQa3Z1uxotgIgBxCViogNMm/BKD89peDYzCIRKQsjIiyiXdM3kEQjilw="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}]},"4.3.0":{"name":"occamsrazor","version":"4.3.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.3.0","_shasum":"de9a1507e776077c0ee747a3badb37e78b290494","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"de9a1507e776077c0ee747a3badb37e78b290494","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.3.0.tgz","integrity":"sha512-TKtrHFa5SF0Vn/oS0SSXYq3z9ysXVQ/2D8ib67vq/KYpd6gPmKtbKAJaOr7Owc3s+pFemTI+dWsJx3azHbo/cA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCusgUOQinpkUqF+LxcyUvqEbMcJVymSWU0vud+Ww03RgIhAJN0U4vPrjHoU9938CocyG65MXvfIcRAHTF3kOqmX0kM"}]}},"4.4.0":{"name":"occamsrazor","version":"4.4.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.4.0","_shasum":"acb8be49a2a1b3bbc1e6101b95e50665e41c3f31","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"acb8be49a2a1b3bbc1e6101b95e50665e41c3f31","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.4.0.tgz","integrity":"sha512-vjbd2bAStRvZgLcgqiQNouWHckCz4WjAY96o8Mq2KuqCIE9xdCb0b6zQ+Z2X6mMS0wRXh9gp0Y4BBelS2fpPEQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEinI2rOR//bi5y2LM1YClEdv9G+0r5lsvbTrGgEASkQAiAoZL2nq5gT6Jd1ma/guQjF+XW+/9N0woYaBIrpVnlcEw=="}]}},"4.4.1":{"name":"occamsrazor","version":"4.4.1","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.4.1","_shasum":"5a0c614f3561365621057f533d31486e7617a2e2","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"5a0c614f3561365621057f533d31486e7617a2e2","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.4.1.tgz","integrity":"sha512-ABZCjOiWqmEkQcuhdyoNOj5QDCobs4ZjBeiP32Fhkk4ID5TgnACBbYp/J6N0a1H2ojrdsMCHW6ypiNJq3QWsFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3VzE1VJ7ZEELxOcETqgcmlCwpCIwWj7K6Vfv4vNrccAIgUWYgA+gcj6Qisw9mFu/kmPGkUY8tgTojxOSeac0NiOE="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/occamsrazor-4.4.1.tgz_1455543734781_0.9119052411988378"}},"4.5.0":{"name":"occamsrazor","version":"4.5.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.5.0","_shasum":"5844bd63e16a9be3a7bff8a95c91ef47610b8e31","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"5844bd63e16a9be3a7bff8a95c91ef47610b8e31","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.5.0.tgz","integrity":"sha512-nBJrTszu2DiDykk9zDN5P8sGnRWguNNQ4oip408Jzw+IGSXZ2GiQ0FxZ4Y69VhWQpNcpkttJIPgdRPVEvP57yw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDa04JNAWwlhLH3pqIo24oN5iJ6KkpdagyiOuozAFWslwIgTX8mUQjSHwt8kwK4hXBDBihxxhidQMcESbeu2mF89Bc="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/occamsrazor-4.5.0.tgz_1457442452012_0.04997469554655254"}},"4.5.1":{"name":"occamsrazor","version":"4.5.1","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.5.1","_shasum":"ca90828003858e180ac0aba21546fbeded9983ae","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"ca90828003858e180ac0aba21546fbeded9983ae","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.5.1.tgz","integrity":"sha512-4VbjJBewKuLoz9wvxscdRt4lYrSFm9Wm2amm8/3WbnffkFdFFVFidaOoT9SUUI/kdFZSroNN9zVkCEXc/MtPOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDLz2s61jAqL9phol5a6X+EyM2OUpPVLHtsTgKXeZmklAiBT8a6jd/zxATH2sIbV76M61aLluwkkRZ75cnYcGw3CNw=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/occamsrazor-4.5.1.tgz_1457446859347_0.3771712090820074"}},"4.6.0":{"name":"occamsrazor","version":"4.6.0","description":"A plugin system for Javascript","main":"occamsrazor.js","directories":{"test":"tests"},"scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"gpl-mit","gitHead":"38821d9d552829b8aeef15fd6adeae86189c18db","devDependencies":{"grunt":"^0.4.5","grunt-contrib-qunit":"^0.5.2","grunt-release":"^0.12.0"},"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@4.6.0","_shasum":"d294e97b7dd970a069207666dfa62460c14cb490","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"d294e97b7dd970a069207666dfa62460c14cb490","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-4.6.0.tgz","integrity":"sha512-i97dByNsqxuxBMYFZxIDQknB7IO8REEyB1dp9XcUpg0Rph4Ho9xqI4ts8zjSlNuTh8mxEXqICJIBnYR7zZG/Lg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKsgT7CYkK/5tsTQVGH/WSeDV93KpTwxV9mg/Rxd1duQIhAPcaSSX4E2NEvMYaCMh6Bxkgu5slSFfGTVMxfdBufVuO"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/occamsrazor-4.6.0.tgz_1457538481427_0.40536355576477945"}},"5.0.0":{"name":"occamsrazor","version":"5.0.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^5.1.0","setimmediate":"^1.0.4"},"gitHead":"616ac16f2bb3521ad260f9627cdf682b00e06f3c","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@5.0.0","_shasum":"c2b0ed3d067f8bb1d02dfa6b1df10c860a5b0699","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"dist":{"shasum":"c2b0ed3d067f8bb1d02dfa6b1df10c860a5b0699","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-5.0.0.tgz","integrity":"sha512-7uRg78ayV1ulM2IajR+RlSSvCz0mLOcILp/MAH1OpQI5Xmlx2c1fRe7g0PKpxOzGMC773SS9SysYROoaibWa1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB9RHMaDsNaZZGVqi7j2fd+AEiMpvp7SqhbN4BJ0J+QXAiEAmRFbl9wSGoblm67QjMQ80t+j+/AyhKNbOMxcWjbEH/A="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/occamsrazor-5.0.0.tgz_1459117044984_0.6208144426345825"},"directories":{}},"5.0.1":{"name":"occamsrazor","version":"5.0.1","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^6.0.0","setimmediate":"^1.0.4"},"gitHead":"ed03bfec9b043a653684158508cf9ca69c49e5f5","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@5.0.1","_shasum":"170bbde9afbd4e4d83028f7fcfcd9fae364bef91","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"170bbde9afbd4e4d83028f7fcfcd9fae364bef91","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-5.0.1.tgz","integrity":"sha512-Bqx3aL9TH1tFEz4Lkk5fuzBWx67XbBGoz0+1Abw2xpHAatVd+e7EaYc+eys5uz7iuTxtZe2keVe7L9+/Xm7s5A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEmKHOAsun0cQ3VPqPsf0Yx92Idgt1jDpA9cz9N2K1ozAiEAhQRkITLLuiiEfotsR1RIgKXGK0ZTnTV86cZklgDEMkw="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/occamsrazor-5.0.1.tgz_1463069843048_0.2757918906863779"},"directories":{}},"5.1.0":{"name":"occamsrazor","version":"5.1.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^6.0.0","setimmediate":"^1.0.4"},"gitHead":"290ebc46cc4d859d58c8c04d0dfdc59d720d2e3b","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@5.1.0","_shasum":"19709f1647b72c7cdef929618612e8ce188fe47d","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"19709f1647b72c7cdef929618612e8ce188fe47d","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-5.1.0.tgz","integrity":"sha512-qhyqmWVk7UAsAu5VLfv6s+te4e+sZ0gm80bOdV4RXlCDOe4MTLNkt3DFlbhbRd3QwlN8DmGFeWhnZe9VPsFdfg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDLHpBVvkOa7i1/198jhafgLIHZ3ffa62MsMuzoZVZTMAiEAz+oYNP+cscGYe7qM79kOfmneE3PsAMm6gYTKuXTSoIs="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/occamsrazor-5.1.0.tgz_1487794020475_0.37800514209084213"},"directories":{}},"5.1.1":{"name":"occamsrazor","version":"5.1.1","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^6.0.0","setimmediate":"^1.0.4"},"gitHead":"ddf2baccdc4bab79c356c3d7f73c10dca3595871","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@5.1.1","_shasum":"192eb3656f003b1d6e8375154e19382d33d4af72","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"192eb3656f003b1d6e8375154e19382d33d4af72","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-5.1.1.tgz","integrity":"sha512-qQlvZZvnUbJGCtefutL39GI2FMU6puQsVEPsorV3MROr9AE98HJ+uNfkzwUGtI7qMIFeaue5pjS+LBFGW+nVfQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsc+l0u1kE5QWG1QP3j195DO/1dfM2m867FbFNAXGxwAIhAJCjheGNkDle3ILj0xSHJkVbW19NWvZXCiLzlwOM9sRy"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/occamsrazor-5.1.1.tgz_1491336108482_0.9214308722876012"},"directories":{}},"6.0.0":{"name":"occamsrazor","version":"6.0.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^8.0.0","setimmediate":"^1.0.4"},"gitHead":"a74429bebe7c3e0b805f4f59930c2e71ec963396","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@6.0.0","_shasum":"ac31905fab8c1469722e6cb2034dbaa42afbde17","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"ac31905fab8c1469722e6cb2034dbaa42afbde17","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-6.0.0.tgz","integrity":"sha512-RY90nwjuMhAGCaSJ0IH+jSMWsszzKrkTyzUL/rscQ1HMQcm2NaOh+APZTLjk4k9ua0WioNn9P2ymuRO3RWTMKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDoUOCvl8xo29YoRm6ynFng4xcbTY4SgVsjOJ2Mdx3w8AiAqoGsdqaULq4tpP+UsplsjGlcfevr42cJnRMbi7nh8Dw=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor-6.0.0.tgz_1497391564185_0.4793805340304971"},"directories":{}},"6.0.1":{"name":"occamsrazor","version":"6.0.1","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^8.0.1","setimmediate":"^1.0.5"},"gitHead":"3804fe23be9eb8675514d42db227565a46d20ea5","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@6.0.1","_shasum":"c3f5624cd35cbf7088dceb9a7ee1497d64952bb3","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"c3f5624cd35cbf7088dceb9a7ee1497d64952bb3","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-6.0.1.tgz","integrity":"sha512-TuoXoPUg8RCwxxb6YixawhznVzIdHmeIqBJ/peILUbbd9veIO2unKIzajNuSLSsa7R8wGVn4mQX5RNtEunA7tw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEwv4yw+fLMD2mITE0o17lTbmpM0PjSF4dwZWpHMbg29AiBC3cTp4y0NmsOxdMXvcaqWWBxvUG3XwfQ0n8NluR429Q=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor-6.0.1.tgz_1498211546038_0.176793152699247"},"directories":{}},"7.0.0":{"name":"occamsrazor","version":"7.0.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"4017f61c3a6e6c8cef0bf37c5afd7190f02f3125","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@7.0.0","_shasum":"4a3ec2894468f965a10f85db187cabb1206a77fc","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"4a3ec2894468f965a10f85db187cabb1206a77fc","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-7.0.0.tgz","integrity":"sha512-DqefyR/ZT7WGtU1Cam5Gtxg1uDY24Rzw753Vpcqj8dBZOWUd0Tl7Tu8jH18pX0aTJwqFlyfYoLh9K1KeXG/fyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCsxxFrmsr2YyU9+eY4kj5IFWnUiLcBVgcaSOx14EegwIhAOOcciByHUDpt2YMaWVn5VDdvNXsP9Wa+VHScj+QA7oG"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor-7.0.0.tgz_1498592190505_0.5794311047066003"},"directories":{}},"7.0.1":{"name":"occamsrazor","version":"7.0.1","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"37245b23e9a4804ad0ad02daa3183d24bd860e51","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@7.0.1","_shasum":"248fcb75228ff0e67744b316430bbf0d020acea0","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"248fcb75228ff0e67744b316430bbf0d020acea0","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-7.0.1.tgz","integrity":"sha512-0ypV7REMasrT8BeTECyHGnWFhXLCqM2ktxxWQPeQC7D9vnIAd6/j0VQpN/xwwrL0ENrZ454zeCKwow9Lh8zuEQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGOKwLpgoD/3s9a3d0tqDYwpQp3P4tcpGdy622eTdCFeAiEAk61cLBHsQvhX4oWByTPYRutMwUHMvpzNqz83K4PVqZs="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor-7.0.1.tgz_1499720645930_0.8033478811848909"},"directories":{}},"7.1.0":{"name":"occamsrazor","version":"7.1.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --ext .js ./src ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^1.10.0","eslint":"^1.10.3","husky":"^0.10.2","mocha":"^2.1.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"a6d1c83ea071bfc617a45cf0a9a6cb0674266eab","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@7.1.0","_shasum":"d53a274ac1853656817ce369e09f0222718b34ef","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"d53a274ac1853656817ce369e09f0222718b34ef","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-7.1.0.tgz","integrity":"sha512-RfvLIiaFWNcAO/7jzvhuw2PG4HTjCxQTEbvacJh3C2h/pVsSpUZFI0ge/PF7tMduxM/Tam0wF5Tsb1DRxu0DwA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJdQQlhSULqeDioXay7nQjYy86tZIKJCNlXAS3ueI48gIgZdXjQWCfhQjXBZyTFNoarpPPVkUjpElXC6YZx7aZtLk="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor-7.1.0.tgz_1513637802008_0.3474661149084568"},"directories":{}},"8.0.0":{"name":"occamsrazor","version":"8.0.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"5bb7b1868bf5ec12073679bc096a7abbfa8a92f8","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@8.0.0","_shasum":"a4e62039859e8ace78a5573323d4625763bdfbf2","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"a4e62039859e8ace78a5573323d4625763bdfbf2","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-8.0.0.tgz","fileCount":24,"unpackedSize":117027,"integrity":"sha512-9gN+luz4MlcjMx7wFTwlIEXHsdSHnsMb/LmwO0YeImrjZwqiEqAyVUUncxGxQKv6LUMPK9O1ONZeOEKe2JLY0A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDY6TMFlxb/qEqlAO76ZvodBmwIeKmSzlCllTJzNJv7LQIgQSdssdZhAMhnZW+oU/QlRj8Zyt9U4tAqZ522bv3+3Yc="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_8.0.0_1517957223279_0.6688749230547681"},"_hasShrinkwrap":false},"9.0.0":{"name":"occamsrazor","version":"9.0.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","npm-release":"^1.0.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"3275c0ad74a710a59dc3facb381e2352f1e784d5","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.0.0","_shasum":"9ffa7832dc78f8db4f1f50e51cc66d8ad761041c","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"9ffa7832dc78f8db4f1f50e51cc66d8ad761041c","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.0.0.tgz","fileCount":25,"unpackedSize":122581,"integrity":"sha512-E9yudxIOUhaebqMqEd9iW8ab9l+4QX3MgcmyOUXg428D3i20XmxlIavw2htJAVe4S1GL4LIeKR/Hv5mlx3kxeg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDEWvVj5xAE8ZP0r3QZyZk5DZMCp/CDEqgLdwX1OqP2dAiAErZLUXp/bsOEi1R0yup8uO4l4bbvxXVuOkHWUE2W/Mw=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.0.0_1518424840100_0.7557569114970064"},"_hasShrinkwrap":false},"9.1.0":{"name":"occamsrazor","version":"9.1.0","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","npm-release":"^1.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"707d47ed28e2efb68dd6be91b17e8d909885fa9e","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.7.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-ZxyTW0km1DP5/bxGLX0+ko8zHbEM1iJ0AMqX7fjLqrQDfR1MfZhyDXuACJfThGmFY3GK9jVGViFkLxKsniHWKw==","shasum":"612e3c3e38cce8bcadee523ffb1f81dea85d5a7d","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.0.tgz","fileCount":25,"unpackedSize":65563,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBXF8Mmd06br9Md/wamxr8dedlotvREZ7ySH3ofu31+vAiEAmKcuICgTQRi8jW9gB8INu211DQURYZmNT+cnSWKoXDA="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.0_1519288726791_0.5190163502966465"},"_hasShrinkwrap":false},"9.1.1":{"name":"occamsrazor","version":"9.1.1","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","npm-release":"^1.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"49b486cdceaf024eca98f850aa6e545a174dd8a1","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.1","_shasum":"d1c079840f575ef7e7c166df95c132cefc2d6c43","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"shasum":"d1c079840f575ef7e7c166df95c132cefc2d6c43","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.1.tgz","fileCount":27,"unpackedSize":130056,"integrity":"sha512-I7ho+o3JSgSuUFsIr/Oez8BV8hisFkSmNMm6KEPjfdvAoLoaZ2LuFKjq58wIHcgZTJE5cf6Jaw/FKgDcTMc36A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMc2KBsgBV2Fmosn65KJdqCTzO8ULR17TWWSKXSjx9WwIhAOKJMHJnJJu4P0+kFcAjT44dw2NRhvMidPglM/DGO9Hn"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.1_1519517275458_0.2426239199383533"},"_hasShrinkwrap":false},"9.1.3":{"name":"occamsrazor","version":"9.1.3","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","release:major":"npm-release major","release:minor":"npm-release minor","release:patch":"npm-release patch","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","npm-release":"^1.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5"},"gitHead":"81ece1d9c067d50a6886d091b333b1eb859578c7","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.3","_npmVersion":"5.6.0","_nodeVersion":"8.7.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-1fSxzOJ2dkD9LOlic17CkkCWrPK8d8ESpvXXeuoOQlNP249cziXMRgdj3RqNcsJKc4Cxd3UsLBPKhgU4e5Imjg==","shasum":"2a9354d596fe3614bc9ff9283bd2f47c99cb2d5f","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.3.tgz","fileCount":25,"unpackedSize":67226,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn1k1lCqM5nXfWvYdZIH13cE5a/aphfpJmekYlGm3dRQIhAIk7xAAfsxTBcjowirZxfYulAb9eu006pCbK2HkvFoAc"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.3_1519717555872_0.401374993103746"},"_hasShrinkwrap":false},"9.1.4":{"name":"occamsrazor","version":"9.1.4","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5","stable":"^0.1.8"},"gitHead":"053562b0871bde0386d720ac1aee690899c5268e","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.4","_npmVersion":"5.8.0","_nodeVersion":"8.7.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-uKzEI8xCnSehDkpGRUbX8+1m3BdBhdXUht57gb0+fDYr0Q84NrHXGLBzDPeSP+qyW4nxlLMeBxtuxgmv/aUD0Q==","shasum":"d0a95c9392836114a0fcdda9f96787766de2c592","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.4.tgz","fileCount":25,"unpackedSize":68096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbx1fyCRA9TVsSAnZWagAAo14P/1mXU7OSJ5ivCjWVCf7+\nEq8AYPEKKVKM3k+c5P9di+LgYk1L3TcffBhJC2L1sq34qMlKTb6C8OfG/h5N\nfXAcpCCW2A8hbEBgoAayJNA40Hv9w3nA++ZRVQmhQW5Grfasscw2ULLBq+j9\n3Y3O495eNDNurORcF63tAHK4a8aq/YjsXXwXumFUMr809Te34mooKDsZJ18O\nkD1erfUGSO6Aap9x2PVq3bP1bPOsC+L3RRDRTI5DlxYKYCUMPTIimi1KXAyD\nLNSfmbFw+cCFVw7e9S5ALm5DZ/R+GtpuaYclLaJ+F4D/YpDqiUfVwvyCF3GP\nrHPP4MZA4GXzXh574kxlgmgQxYqKJ4+ZEXEa0aY3TAtkzEGt34ClTpdz5Ter\nrEG/4GVgjkxCR8z5+nG+6c5yn25D5begTMZxHqcWEzUpZXJ/mh1XNlbXogL+\nyuxMQKG3THJg7rHrCq5/boUKdTetHl/RdsKAlCboByGZD+iO98Fm6U1ngNdA\nYoRRQec93bCJMo4uDuzGo6OqukY+FTaiXFkCeJB4dcRP/iDX21LX/rV66MCP\nzlLlZCF4TvSHl3vyr56Hn37qetcEq68v5YXVEcyu1Qh0c2pHcFP9HYugOVrG\nDl3tq+SZEbWGMXWvkDsp4W65kjQbWgKzRtSdjEnSwgyhpbPMAn4BFVZfaa4J\nn48o\r\n=iGh3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIsWJkXDVDFd0uPk4SmGYh6Hm+DrN+KQjilE6OlsU2EAiEA7MkHlpjCWRlaG854vV7G04S5PtMP/IikcWuOYoLGcCM="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.4_1539790833659_0.6068059213879793"},"_hasShrinkwrap":false},"9.1.5":{"name":"occamsrazor","version":"9.1.5","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5","stable":"^0.1.8"},"gitHead":"375ef4b2db54ef439daacd2fcfff275b45401b23","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.5","_npmVersion":"5.8.0","_nodeVersion":"8.7.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-qRGRJfIB4+KC4wBWz3YxvN+VdLWYpMjPwKhtlsWdPzW8sYt+FPEEUtg5I+erh3Du0LvthGwZbU22uc4Ra+1pgA==","shasum":"bde104114d48a9e2e4cabfa98b475e0eb252f9b0","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.5.tgz","fileCount":25,"unpackedSize":68133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbx1l3CRA9TVsSAnZWagAA7rEP/RbtCEa5jBQD53sN/ON9\nN67goLqZ1LQmu1klSCCTfG3d+h2EnjBhzxHEkVAs/O+qnnfwDc3FiJBSwWmS\nznQso6ipLo9MGPYtYj7uwG+l5oZSIEiMODc8mmIHv+9ot/Qn4MXc1Q3turQ9\nersUY4CfGxdioOygWWF+YgZ4ktMjdORRrJ98T7EqCD5SCzKaWZZneNb++wxN\nDi+H/3yDPNbGeXp/c8Cd0MzC8dcu3pU0O3ei+d+mFBSMIGq9nnfGoEfUCc7z\nItk7QjOwvFGf1wiJjPU9OGrBnCLAOaknCC7vNvVSl4YdHmxtPpL/fqBb4T4N\nKcwScXx29IQ2g/FzRtnBWSn5DuUJKqFcEX3HtvpHH3W+RKFjlaw9UT4C2GWX\nruWtt+WydOuiccE7DUhNC03Jckf1rJ8GSm3IynVcLxU3OXyOgeKqk6znxGVH\nhfao96lPRP0gVyB1Fp1a1Sk9BYgYBVuD+eGT7awIOUf7TpDfPUSS42n7KdsM\nROMVcZ6+OZgPjX2Ijug53s9JmYrPplZTfgWWnPYDdZiqPFwQkUp8Xo/Ke6D4\nGZHqMdvclUISkIF5cgiZA2cmVYiiAtR0HY3p/8ZEMbqQeGQ6ZJ+RQqbN1orM\nUL8DJGadtoDxDhpWv22qMK5NTY1z6mSW9ghK61s+8lhdEdiyCoLWoGwQWisH\nWSwD\r\n=Y/46\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTfHzgSa7PGqPWzRB66uQGwo1BvZAnmRnIhvRe2GSovgIhAKFp6RgZI8qq50ke0r7fJLqpK/tVcMafcGHgKXB0qGos"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.5_1539791222982_0.07250195350603494"},"_hasShrinkwrap":false},"9.1.6":{"name":"occamsrazor","version":"9.1.6","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5","stable":"^0.1.8"},"gitHead":"c40f739322e8bac2ff6630260af3e08abd94868e","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.6","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-RH/wnvs81Ea+zqAiWU8HUTyjIMLwG6PzUy9Po4tE4qvumvdMaR8cV5nMR2CWo9McuyNcEHgtOi0PJlSabt4Jgw==","shasum":"8ec8281e88cf81ffa3d4d0df194fddba5bd163c4","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.6.tgz","fileCount":25,"unpackedSize":68133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckgsCCRA9TVsSAnZWagAAxosQAJtqk9E+80ytwahshJL7\nrKVDgOTSLZ2clyqHRyuBORKBQo/779N6H1sC2ixBcxA3E5GRFLe9d6HcFtad\njVXXlz0Sgz/u4eGpomBvGika62LgbxM1QVRYS+PMZ72d0gpasK6e/5oyhWhA\nP8pYtbdoqcLgzBspFtMDGKARaCJjbzIkBBmQVTtM+Csezjs6YnN87ZPzXTBG\n3DMGs1216ca4QCyAcPR+34OJ9uk4GdI3cmIhu2w9i0MWiAkCsSdv/eUs9cga\nhMZ3FCzpFfjnGPw0tAlhZMT5wQcvce5+9KfagPa74nb6NqCzJ+vosMxboVZ0\nXeBhDtj3zdPxRgz/G+GEDoYFsyGh+jzRz/dv4F9KQMRtGZ5nicg3nb8ogib/\nM3N12mvYzwCTZTvOAAK7l8Z1IWt/0Nf48HkoBM/MZrKnP64/hMUw0y5GX5Zt\nR0BKmODknhHdmjzNW/Itj2q62HtWn60JAj08rJ+k4njFHUKMbtKvRe/hrvD2\nJJM8aYZ0Keoo9Sa/aoEjxOVwIdgz8okhR+0rWxUD/TwOsZn1tD8ZV3zGSHvC\nWpRETIOMivTkcQ/sYJAUpPVKQ39ibRcsI/23WU1SMsqn/QkDouFTSDdtimDB\nx1edNTeu3goNkdfpt9yqc57IDIXCgwpYa73xG9M4O1+wOjglrpIRn5SHQ7TY\nTKHt\r\n=dH3v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTp9987vDYdmyTEsz44Qijo7I82qudJPwcILhb4heseQIgbtVOS2OL8qR7jbtOVqx8RBb74/3gkH3iaFd1RRvFM+E="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.6_1553074945838_0.14328357845406958"},"_hasShrinkwrap":false},"9.1.7":{"name":"occamsrazor","version":"9.1.7","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5","stable":"^0.1.8"},"gitHead":"4d276a33d06955f919f5317cbd2c977b2ab7cf46","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-4GknMdMy0ADQcS/OVqf9tRkc214qMzmQl9/U87mNx1RaEToADu83LNCUg5GZfNznvudig+mmCmCXziNRrAeFVA==","shasum":"08a927a4b295718e116c939342ce71978a38e038","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.7.tgz","fileCount":25,"unpackedSize":68133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/5fZCRA9TVsSAnZWagAACGsP/38RMqo3JeJbg5zrbddW\n9P4YXB5Vb41J8dsDt4GiWHGBY2t2cda4jWygOpdpGIxzcqeM/D67BZd5KbQ5\n0Czwf0gqi4ASsV0Ty7pue9YvOxJItemZgwKEhVBGI2Ge8lHm6pKx+5VqNC/Y\nlCVyVpeSceZZ0hGU9CZEn0878fYkl0CeH18ycvORAKRFCoWQc6Xb2EW4pHGA\nU0dsmUuZA6Czq0aV1hp9+R9SwWen5MPHw4o1ap8pUn2YUGyUUyWMF+fNYWCb\nhJWyxsrxS13SpVFHDruJNAKKhKwTgDjBU0fmdOETjAWiW7S1Vt+QGFXK/9TR\nwiEVuM0yTtbXzPCpXcyY1l+zW5QqFFSaPdvqW5vxLniqPO5wxAyU5VNfJc8B\nYXSuZZytCIV6A9pau392EwrDcC33XRnwCfQXNoqiFYQYSPMHnaoqpJjOtEk0\nAS4YqDRZhHbUjucoCoDkRcaAhYCvQ38B4P/QtM7gWo521KLxZ+4gmt4rfLuY\n3cKVk4oQuqnZ20ujEojtt5LwSmys1mHL6NVreLOuKAnKfqguAwr1g3+mPQMg\nutm2QgDsE5IqOilds/c61/wqnHLyRIl1Aqw2XA9CEFI1kX3Sw5u9y8QNOxPw\nDx3C6bSfHN9PKzB5C0x6hdF+uE3d6dm4Vdhpk0dkaTwiC03dlVUY+VulOZ3u\njkes\r\n=CyeT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHKJCVrAMwElOw3mMV2YxNsqpPbfEjzD+ZuRlDhnvORDAiB2RhkU1EJqG0A6S3OjR7XnqSNL4696LSKepipk9mNULg=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.7_1560254423811_0.992198031729111"},"_hasShrinkwrap":false},"9.1.8":{"name":"occamsrazor","version":"9.1.8","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha tests/**/*.js","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./tests","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5","stable":"^0.1.8"},"gitHead":"95b6d44cc402761e3651e00568be20d80f3229d0","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.8","_nodeVersion":"8.7.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-ZRoWdkIj0/MduZaLz8sVlHxlIeSELmBAtqBTB4nn4qy5j+yzGIBmqZFUONIYTUjZv28jTD1kJVe31BzmOQfNbg==","shasum":"58ae7646274f96dc2ead00a87dd67fdb2f0a12b2","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.8.tgz","fileCount":25,"unpackedSize":68133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdW9lXCRA9TVsSAnZWagAA9g0QAIbPFTchv/T8iNe6yfLw\npWnY83di9bNacOpSUMLnyicsJU9kXfATTzB4xm3uzxQUe+uKMFvEg7cW64kx\noa38VNcR+wVPXHuH2AtUS+rPMoTeXsRnQ7tictWX3kTgCzkboHeIFJDDcjNY\nyn4GO0teP9gQB6gSDyT7HrlMKrsFQk4Zix4GsNoOLc0lQH6eCsJjV/6u8pfQ\nA080R+JFVj4ndp9jpvo42v+YVPeOx9H9eSmi40qUZMR6vF+ZO2i6e2FCuPZO\n4J0zbvZ/rCMjoiJ2Vjk8irEnLle8kYLTQ/iw1ufyTtRXPKv0GynsalRX0IjI\ngYvyHdBza86OczY6fcJPCbdAFZxxrG7XrkD5zNxfSJ+i+g5Ih1hDtjRDB0kW\nYApJWzgZaIhzTp1PXzXRVYMUIdRmGlvWa8xWVo7GiWbPj4uudVnUsEcerI08\n1ocilMVIaaEew+8sHKFR+XPcAn0mZ+jSFSKQy3ATeHR1x+OiDzAomPDDxsB/\nQAquuAHOMic/E8iYRpJ/pJFzBYbJdXv8+zj1f1yiBSA2C0h1EFtPqO+MPKxm\nsl1uBEM2vHRaOB4Wn1DNOpzUF03EHXao5eYoUZJhUw+iZ7XRLnmJD9Sz0Ulw\nWDF6hZLh9mqf18jGpQLQKDxaiG+0i5fl+GJrdJPMcUTWr6nZTNn04G3UdI3m\nTHT1\r\n=S3zR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnGQ59/qwwRuW676cNbQbodWeGuqnmGecnjCGzzx1IkgIhAIk1jswrFM5fJAT6zVVNyGN+r7917BvL41rYv9Qeb00C"}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.8_1566300502370_0.9091082699844133"},"_hasShrinkwrap":false},"9.1.9":{"name":"occamsrazor","version":"9.1.9","description":"A plugin system for Javascript","main":"index.js","scripts":{"test":"mocha","watch":"npm run test -- -w","lint":"eslint --fix --ext .js ./ ./test","precommit":"npm run lint","prepush":"npm run test"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"keywords":["plugins","components","registry","adapters"],"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"license":"MIT","devDependencies":{"chai":"^4.1.2","eslint":"^4.17.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","husky":"^0.14.3","mocha":"^5.0.0","occamsrazor-match":"^4.1.0"},"dependencies":{"occamsrazor-validator":"^9.0.0","setimmediate":"^1.0.5","stable":"^0.1.8"},"gitHead":"a9c2ec0fea7d7a901614527d80dcfd55de5a0823","bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","_id":"occamsrazor@9.1.9","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"sithmel","email":"maurizio.lupo@gmail.com"},"dist":{"integrity":"sha512-NyI+FRTjfiI/o5tNoNkj9nXj6UJkzXD3bpWsJh6gwqniymgpT8/TtQjo/Ln0LzfNAgC5G67H9JRlZV3R8OyZPQ==","shasum":"e8720a01bdcbc918fbd6f14f6a2b8593f5a6063d","tarball":"https://registry.npmjs.org/occamsrazor/-/occamsrazor-9.1.9.tgz","fileCount":25,"unpackedSize":68116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3URrCRA9TVsSAnZWagAAIvwP/09Oq4HNc+69D8631ai7\ngFVb+YapelFYTr/saItHPrBYeJv6M5JHEacQcGPloZ8psmmKVQqcpZdkEVBB\nTnOdz6aHybcqofRbk6pg0vIgpgv6Tma6d/NBrgsh1vzvVVxncpmvrHLUU9Fj\nTkfN+O5ozProxQAK5OUAp9WwVvpuRELYAKulX/hpGW0/JvaCmJUFoWhXN4fb\nxTFW9nwOs73bvft7ymIjArOedjYVorPBapZGfHIEkDzL8pZyTPP8pOqTH2V8\np68YIpn2N4GbSg1JQo1Dh37ffkt2kMwfGpTqCgBjGVk1BXaoOwW3gIvZYw98\n4YWtdDcRXZSAC1OGVn13oJCF2aDe+RxzsskcsUGKwm7l6wscVJzrc2OXPRG5\nmygVwz9p/7oMG1itQPsmXe98620Hi4XwNTm2/AWa1kki3dPq0zV3I5v62SkW\nb0LrT1W2tqESHGOT1VAFSoD95PBUsMuiW7WFtDYK6msGEzSaI15cOQp+Ij2a\nzXfudrscWgY3+wKq2qBbTP1dBOqG08Vm70uRAIZN/tDOARNUNGJIRnbYUU+z\nqgc2LFqsI1NGeepVhmAkzA7hNMSs/VB2TiNqrkgCaY7faB+nrFFai9/u13un\nzu3iF0eYl//BGeKnoHzxK2BUtYfp600D4Tfr/s6pBp51OpNrCIUHl5ZNcsyj\noQb5\r\n=xIr1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1ODkpwk9DUFtgQxXfB6Nf/0TdnS9k0mxRWu42X6+uAAiBWiuJBsI0q6VHWAy7LXzB7RYuRPIEkfyLy7f54JVl1TQ=="}]},"maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/occamsrazor_9.1.9_1574782059551_0.7145673082051014"},"_hasShrinkwrap":false}},"readme":"Occamsrazor\n===========\n[![Build Status](https://travis-ci.org/sithmel/occamsrazor.js.svg?branch=master)](https://travis-ci.org/sithmel/occamsrazor.js)\n\nOccamsrazor runs the function (or the functions) that matches a list of arguments. It can be be used to write event systems, or to make an application extensible.\n\nTutorial\n========\nLet's say you have some objects:\n```js\nvar shape1 = { radius: 10 };\nvar shape2 = { radius: 5 };\nvar shape3 = { width: 5 };\n```\nEvery object represents a different shape. You need to calculate the area of these objects.\n```js\nvar circleArea = function (circle) {\n  return circle.radius * circle.radius * Math.PI;\n};\n\nvar squareArea = function (square) {\n  return square.width * square.width;\n};\n```\nThe problem is: how can you pick the right function for each shape ?\n\nThis is where occamsrazor enter.\nFirst of all you need some validator. A validator will help to identify a \"shape\":\n```js\nvar validator = require('occamsrazor-validator');\nvar isNUmber = require('occamsrazor-match/extra/isNumber');\n\nvar has_radius = validator().match({ radius: isNumber });\nvar has_width  = validator().match({ width: isNumber });\n```\nA validator is a function that runs over an argument and returns a positive score if the argument matches, or null if it doesn't. You can find further explanations [here](https://github.com/sithmel/occamsrazor-validator) and [here](https://github.com/sithmel/occamsrazor-match)\n\nThese two validators match objects with a \"radius\" or \"width\" attribute respectively.\nNow I create a special function that wraps the two area functions defined previously. I call it \"function registry\":\n```js\nvar shapeArea = occamsrazor();\n```\nThen add the two functions to it:\n```js\nshapeArea.add(has_radius, circleArea);\nshapeArea.add(has_width, squareArea);\n```\nThe validators (has_radius and has_width) are used internally to pick the right function.\nIf you prefer you can chain the \"add\" methods together:\n```js\nvar shapeArea = occamsrazor()\n  .add(has_radius, circleArea)\n  .add(has_width, squareArea);\n```\nFrom now on if you need to calculate the area you will do:\n```js\nvar area = shapeArea(shape1);\n```\nMaybe you are thinking, why doing this while you can just extend an object using its prototype or copying attributes and methods.\nWell, you just can't change a third party script, for example. You may also want to provide a way to extend your code without changing it.\n\nWorking in this way promotes the open/close principle (https://en.wikipedia.org/wiki/Open/closed_principle) because you can add functionalities without changing the original code.\n\nAdding a more specific function\n===============================\nValidators with different scores allow to choose different functions.\nNow I add another type of shape, a rectangle:\n```js\nvar shape4 = { width: 5, height: 6 };\n```\nA rectangle has both width and height so you will define a more specific validator:\n```js\nvar has_width_and_height = validator() // this scores 0\n  .match({ width: isNumber })                        // this scores 1\n  .match({ height: isNumber });                      // this scores 2\n```\nEvery time you extend a validator, you get a new one so you could instead extend the previous one:\n```js\nvar has_width_and_height = has_width.match({ height: isNumber }); // score 2\n```\nBut pay attention! this is different from defining a validator like this:\n```js\nvar wrong_has_width_and_height = validator().match({ height: isNumber, width: isNumber }); // score 2\n```\nThe last one has the same specificity of has_width so occamsrazor won't be able to decide what function to use!\n\nThe score of this validator gets bigger every time is chained with another one:\n```js\nvar is_parallelepiped = has_width_and_height.match({ depth: isNumber }); // score 3\n```\nshape4 fits the description of a rectangle and a square (they both has a width) but the has_width_and_height validator is more specific.\nUsing this validator you can add another function:\n```js\nvar rectangleArea = function (rectangle){\n  return rectangle.width * rectangle.height;\n};\n\nshapeArea.add(has_width_and_height, rectangleArea);\n```\nWhen you call the registry it will execute the most specific function (based on the validator with the highest score):\n```js\nvar area = shapeArea(shape4); // rectangleMath(shape4)\n```\nIf the arguments (shape4 in the previous example) matches with more than one function with the same score, it will throw an exception.\n\nMatching more than one argument\n===============================\nIn the previous example you used a validator to match an argument, in reality you can match any number of arguments.\nThe next one doesn't try to match any argument.\n```js\nshapeArea.add(function (shape) {\n  return 'I can\\'t calculate the area';\n});\n```\nThis one matches two:\n```js\nshapeArea.add(has_width, has_width, function (shape1, shape2) {\n  // combining the areas of two squares\n  return shape1.width * shape1.width + shape2.width * shape2.width;\n});\n```\nYou might wonder how the system decide to match a function or another. Well, all the respective scores are put in an array and compared. For example:\n```js\n[] // this has the lowest score, it doesn't match any argument\n[0] > []\n[1] > [0]\n[0, 0] > [1]\n[0, 1] > [0, 0]\n[1, 0] > [0, 8, 8, 8]\n```\nIn the \"add\" method you specify the arguments you want to match but you are not forced to validate all arguments passed to the function.\n```js\nshapeArea.add(has_width_and_height, function (shape, name) {\n  // shape argument is validated (it must have a width and an height)\n  // name is not validated\n  console.log(name + ' is a rectangle');\n});\n```\nThe smaller score you can have is 0 (validator()) and it is so generic that matches anything.\n\nDeleting a function\n===================\nIf you want to delete a function you can use the \"remove\" method:\n```js\nshapeArea.remove(rectangleArea);\n```\nThe remove method is chainable:\n```js\nshapeArea.remove(rectangleArea).remove(squareArea);\n```\nYou can also remove all functions with:\n```js\nshapeArea.remove();\n```\nIf you want to remove all functions matching a set of arguments, you can use \"removeIf\".\n```js\nshapeArea.removeIf(shape4);\n```\n\nAdding constructor functions\n============================\nOccamsrazor works with constructor functions too! you just need to wrap the constructor function inside a special wrapper:\n\n```js\nvar Shape = occamsrazor\n  .add(has_width, occamsrazor.wrapConstructor(function (obj){\n      this.width = obj.width;\n  }))\n  .add(has_radius, occamsrazor.wrapConstructor(function (obj){\n      this.radius = obj.radius;\n  }));\n\nvar shape = new Shape({width: 5});\n```\nThe prototype chain and \"constructor\" attribute will work as expected.\n\nShortcut validators\n===================\nValidators can be expressed in a shorter way as documented [here](https://github.com/sithmel/occamsrazor-validator#validatormatch) and [here](https://github.com/sithmel/occamsrazor-match)\n```js\nvar isNumber = require('occamsrazor-match/extra/isNumber');\n\nvar shapeArea = occamsrazor()\n  .add({ radius: isNumber }, circleArea)\n  .add({ width: isNumber }, squareArea);\n```\nThe shortcuts provide a way to match complex object with a very simple syntax. They have a fixed score:\n```js\nvar registry = occamsrazor()\n  .add('select', { center: { x: isNumber, y: isNumber } },\n    function (command, point) {\n      // does something with the point\n    });\n\nregistry('point', { center: { x: 3, y: 2 }}); // this matches!\n```\nThat is the equivalent of the less concise:\n```js\nvar validator = require('occamsrazor-validator');\nvar is_select = validator().match('select');\nvar is_point = validator().match({ center: { x: isNumber, y: isNumber }});\n\nvar registry = occamsrazor()\n  .add(is_select, is_point,\n    function (command, point) {\n      // does something with the point\n    });\n\nregistry('point', { center: { x: 3, y: 2 }}); // this matches!\n```\n\nGetting all\n===========\nSo far you have used occamsrazor to get the most specific function (the one with the highest score). You can also get all functions matching the validators, no matter what the score is:\n```js\nvar shapeCalculations = occamsrazor()\n  .add(has_width, function (shape) {\n    return 'Perimeter is ' + (shape.width * 4);\n  })\n  .add(has_width, function (shape) {\n    return 'Area is ' + (shape.width * shape.width);\n  })\n  .add(has_radius, function (shape) {\n    return 'Perimeter is ' + (2 * Math.PI * shape.radius);\n  })\n  .add(has_radius, function (shape) {\n    return 'Area is ' + (Math.PI * shape.radius * shape.radius);\n  });\n\nvar results = shapeCalculations.all({width: 10});\n\n// ['Perimeter is 40', 'Area is 100']\n```\nThis will return an array containing all the results. They will be sorted starting with the most specific.\n\nUsing it as a publish/subscribe object\n======================================\nUsing its matching capabilities and the expressiveness of the shortcut syntax, you can use occamsrazor as an event system:\n```js\nvar pubsub = occamsrazor();\npubsub.on('selected', has_radius, function(eventName, shape) {\n  // do something with the shape\n});\npubsub.trigger('selected', { radius: 10 });\n```\n\".on\" attaches an event handler and \".trigger\" runs all the event handlers matching its arguments.\nIn reality \".on\" is an alias of \".add\" and \".trigger\" is a slightly modified version of .all (it doesn't return the result of the functions and it defers the execution to the next tick).\nOf course you can remove the event handler using \".off\" (an alias of remove).\nIf you need to handle the event only once there is a special method \".one\":\n```js\npubsub.one(\"selected\", has_radius, function (evt, circle) {\n  console.log('This is executed only once');\n});\n```\nUsually you'll need to have an event handler attached (with .on) BEFORE triggering it. Some event represent a state change and it is very convenient keeping them published (imagine something like the \"ready\" jQuery event for example).\nYou can publish an event permanently using \"post\". This method works like trigger but allows to keep the arguments published, so any new event handler fires immediately:\n```js\npubsub.on(\"selected\", has_radius, function (evt, circle) {\n  console.log('Circle is selected and the radius is ', circle.radius);\n});\n\npubsub.post(\"selected\", { radius: 10 });\n\npubsub.on(\"selected\", has_radius, function (evt, circle) {\n  console.log('This will be fired as well!');\n});\n```\nYou can remove these published event using \"unpost\", passing a validator that will match the arguments:\n```js\npubsub.unpost(\"selected\");\n```\n\nConsume/consumeOne\n==================\nThis is a variation of the \".on\" that is removing arguments published with post when matching.\nconsumeOne removes only the first argument and then it unregister itself.\n\nA recap\n=======\nPublish an object:\n\n|         | Returns         | Function executed                         | Objects remains published |\n|---------|-----------------|-------------------------------------------|---------------------------|\n| adapt   | yes             | the most specific matching the validators |           no              |\n| all     | yes (array)     | all matching the validators               |           no              |\n| trigger | no, it is async | all matching the validators               |           no              |\n| post    | no, it is async | all matching the validators               |           yes             |\n\n* add/on: runs a function every time validators are matching\n* one: runs a function the first time validators are matching, then it unregister itself\n* consume: runs a function every time validators are matching, and removes the matching object\n* consumeOne: runs a function the first time validators are matching, and removes the matching object\n\nBatches\n=======\nThis feature allows to queue many \"messages\" (calls to trigger/all) and then trigger them all at once.\n```js\nvar events = occamsrazor();\n\nevents.on(isNumber, function (n) {\n  return n * n;\n})\n\nvar batch = events.batch();\nbatch\n  .queue(2)\n  .queue(3);\n\nvar results = batch.all(); // [4, 9])\n```\nYou can queue messages using queue (you can chain that), and use .all (or the alias triggerSync) to call them in synchronously.\nYou can also use trigger to call them asynchronously:\n\n```js\nbatch.trigger(function (err, res) {\n  // if any function throws an exception, this is captured and\n  // res is [4, 9])\n});\n```\nTrigger takes a callback that returns the result (or, in case an error).\nCalling trigger/all empties the batch. It can be reused to queue other messages.\nImportant detail: using the events are triggered either synchronously (all/triggerSync) or asynchronously (trigger) in the same microtask. If any function throws an exception the execution stops.\n\nA classic use case is to collect a sequence of messages and then executing them on request animation frame.\n\n```js\nvar events = occamsrazor();\nvar batch = events.batch();\n\nfunction mainLoop() {\n  batch.triggerSync();\n  requestAnimationFrame(mainLoop);\n}\nrequestAnimationFrame(mainLoop);\n\ndocument.addEventListener('keydown', function(event) {\n  batch.queue('keydown', event.keyCode);\n});\n\nevents.on('keydown', 38, function () {\n  ... dealing with up arrow ...\n});\n```\n\nNamespace\n=========\nIf you need to remove functions you added, without affecting others, you can create a new namespace:\n```js\nvar namespace = pubsub.namespace();\nnamespace.on('selected', has_radius, function () {\n  console.log('I have added a function using a namespace');\n});\n\n// the following are exactly the same\npubsub.trigger('selected', { radius: 10 });\nnamespace.trigger('selected', { radius: 10 });\n\nnamespace.remove(); // this removes only the function above\npubsub.remove();    // this removes all functions\n```\nIt works with \"removeIf\" too.\n\nContext\n=======\nSome methods retain the current context (this). They are: all/trigger, post, adapt (that is a version of the object invoked without any method). This allows you to call them as methods or using call/apply.\n\nRegistries\n==========\nThis helper function is useful to group functions in registries:\n```js\nvar mathregistry = occamsrazor.registry('math'),\n    getArea = mathregistry('area_functions');\n```\nIf a registry doesn't exist it is created and returned by the registry function.\nIf the function registry required doesn't exist it is created and returned too.\nIf you don't specify a specific registry you'll get the \"default\" registry:\n```js\nvar registry = occamsrazor.registry(),\n    getArea = registry('area_functions');\n```\n\nSyntax and reference\n====================\n\nImporting occamsrazor\n---------------------\nOccamsrazor is a commonjs module\n```js\nvar occamsrazor = require('occamsrazor');\n```\n\nGetting a function registry\n---------------------------\nSyntax:\n```js\nvar funcs = occamsrazor.adapters();\n```\nor:\n```js\nvar funcs = occamsrazor();\n```\nIt can take an option argument containing an \"comparator\" function (optional). This is used to keep the posted object in a certain order if you need to implement a priority queue. The comparator take an object with this shape:\n```js\n{\n  args: [...], // array of arguments\n  context: ... // value of \"this\"\n}\n```\nThe comparator works like the one used by the \".sort\" array method. For example:\n```js\nvar adapters = occamsrazor({\n  comparator: function (a, b) {\n    return a.args[0] - b.args[0]\n  }\n})\n```\nThis should sort by the first argument (assuming is a number), from the smallest.\nThe comparator works in a special way when returning 0 (items with same priority): it doesn't proceed on storing the new event. You can use this special behaviour to remove duplicated events in the queue.\n\n\nFunction registry API\n=====================\nSyntax:\n```js\nfuncs([arg1, arg2 ...]);\n```\nIt is equivalent to:\n```js\nfuncs.adapt([arg1, arg2 ...]);\n```\n\nit takes 0 or more arguments. It calls the most specific function with the given arguments and returns its result.\nIt retains the context (this). If more than one function matches with the same score it throws an exception.\nIf no function match, it returns undefined.\n\n.all (alias .triggerSync)\n----\n```js\nfuncs.all([arg1, arg2 ...]);\n```\nit takes 0 or more arguments. It calls all functions that matches, with the given arguments.\nIt retains the context (this). It returns the results of all functions in an array.\n\n.trigger\n--------\n```js\nfuncs.trigger([arg1, arg2 ...]);\n```\nit takes 0 or more arguments. It calls all functions that matches, with the given arguments.\nIt retains the context (this). It doesn't return the results as it's execution is deferred (using setImmediate).\n\n.post (alias .stick)\n--------------------\n```js\nfuncs.post([arg1, arg2 ...]);\n```\nIt works the same as trigger, the arguments (including the current context \"this\") are stored forever. When an new function is added (using \"add\", \"on\",  \"one\" or \"consume\"), it is executed immediatly (if it matches).\n\n.unpost (alias .unstick)\n------------------------\n```js\nfuncs.unpost(validator, validator, validator, ...);\n```\nIt takes some validators, just like the .add/.on method (but without the callback).\nEvery event added with post mathing those arguments is removed.\n\n.add (alias .on)\n----------------\nSyntax:\n```js\nfuncs.add(func);\n\nfuncs.add(validator, func);\n\nfuncs.add(validator, validator, validator ..., func);\n```\nAdd a function and 0 or more validators to the function registry. The function is always the last argument.\n\nIt returns the function registry, or the namespaced function registry (this method can be chained). The validator will be converted automatically to a function using [validator.match]((https://github.com/sithmel/occamsrazor-validator#validatormatch))\nIf the last argument is not a function this is converted automatically to a function returning that value.\n\n.one\n----\nThe same as .add but the function will be execute only once and them removed.\n\n.remove (alias .off)\n--------------------\nSyntax:\n```js\nfuncs.remove(func);\n```\nor\n```js\nfuncs.remove(); // delete all functions\n```\nDelete one or all functions from the function registry. If it is called on a namespaced function registry, it removes only the functions added with through that namespace.\nIt returns the function registry, or the namespaced function registry (this method can be chained).\n\n.consume\n--------\nThe same as .add/.on. Functions registered using \"consume\" will remove every object published with \".post\".\n\n.size\n-----\nSyntax:\n```js\nfuncs.size();\n```\nIt returns the number of functions in the function registry. If you pass arguments to \"size\" you will get the number of functions matching those arguments.\n\n.consumeOne\n-----------\nThe same as .consume, but it executes the function only once.\n\n.size\n-----\nSyntax:\n```js\nfuncs.size();\n```\nIt returns the number of functions in the function registry. If you pass arguments to \"size\" you will get the number of functions matching those arguments.\n\n.namespace (alias .proxy)\n-------------------------\nSyntax:\n```js\nvar proxy = funcs.namespace([name]);\n```\nIt returns a namespaced function registry. This is equivalent to the original function registry except that every function added through the this object gets marked and can get removed easily using remove:\n```js\nfuncs.add(...); // this won't be touched\nnamespace.add(...); // this will be removed\nnamespace.remove(...);\n```\nThe name is optional, a random string is used if not defined. You just have to keep the reference.\n\n.getAdapters\n------------\nSyntax:\n```js\nfuncs.getAdapters();\n```\nIt exposes the internal registry of all functions. Useful for debugging purposes.\nIf you pass arguments to this method, these will be used to filter what functions return.\n\n\n.batch\n------\nIt returns a batch object.\nSyntax:\n```js\nvar batch = funcs.batch();\n```\n\nbatch\n=====\nThis object allows to queue multiple calls.\n\n.queue\n------\nQueue arguments in the batch.\n\nSyntax:\n```js\nbatch.queue(... args ...);\n```\nThis method returns the batch (it is chainable).\nIf a comparator is set, the queue respect that order.\nIt accepts to be bound to a context.\n```js\nbatch.queue.apply(something, [...args...]))\n```\n\n.adapt\n------\nIt takes any item on the queue, search the most specific function, and execute that function with the arguments. It returns an array with the results. If a group of arguments doesn't match any function, it returns undefined (for that item).\nAs usual if a group of arguments matches multiple times with the same score, it throws an exception.\nSyntax:\n```js\nvar results = batch.adapt();\n```\nIt empties the queue.\n\n.all/.triggerSync\n-----------------\nIt takes any item on the queue, search the all the functions matching these arguments, and execute those function with the arguments. It returns an array with the results (flattened). If a group of arguments doesn't match any function, it returns undefined (for that item).\nSyntax:\n```js\nvar results = batch.all();\n```\nIt empties the queue.\n\n.trigger\n--------\nIt takes any item on the queue, search the all the functions matching these arguments, and execute those function with the arguments.\nThe functions are executed, in the next tick.\nIt takes an optional callback, returning the error (or null) and an array with the results (flattened). If a group of arguments doesn't match any function, it returns undefined (for that item).\nSyntax:\n```js\nbatch.trigger(function (err, results) {\n  ...\n});\n```\nIt empties the queue, and returns the adapter object.\n\nregistry\n========\nSyntax:\n```js\noccamsrazor.registry(name);\n```\nCreate a registry with a specific name (a registry of registries!!!) in the global namespace (window or global).\nYou can use it to get a function registry.\n```js\nregistry(functionRegistryName);\n```\nThis is created if it doesn't exist.\n\nwrapConstructor\n===============\nSyntax:\n```js\noccamsrazor.wrapConstructor(constructorFunction)\n```\nIt transform a constructor function in a simple function that you can call without using \"new\"\n\nAsynchronous function queuing\n=============================\nAsynchronous function queuing is a pattern to allow loading synchronously only a stub, instead of the whole library. The stub registers all method calls in an hidden array. Then the library loads asynchronously and execute all calls queued. This works only for asynchronous (callback based) methods. Occamsrazor includes a couple of useful modules to implement this pattern. The synchronous library contains, for example:\n```js\nvar fakeOccamsrazor = require('occamsrazor/async-func-queue/fake-occamsrazor');\nfakeOccamsrazor('_private', 'events');\n```\nThis allows to start using occamsrazor with:\n```js\nwindow.events.on( ... );\nwindow.events.trigger( ... );\n// etc\n```\nThe library loading the whole occamsrazor will be loaded asynchronously and will contain:\n```js\nvar occamsrazor = require('occamsrazor');\nvar flushQueue = require('occamsrazor/async-func-queue/flush-queue');\n\nwindow.events = occamsrazor();\nflushQueue('_private', 'events');\n```\nThis will work with all methods returning asynchronously. So these won't work: adapt, all, triggerSync, size, proxy, batch\n\nAbout the name\n==============\nThe name of the library is taken from this philosophical principle:\nOccam's Razor:\nThis principle is often summarized as \"other things being equal, a simpler explanation is better than a more complex one.\"\nhttp://en.wikipedia.org/wiki/Occam%27s_razor\n\nOk this name can be a little pretentious but I think it can effectively describe a library capable to find the most appropriate answer (function in this case) from a series of assumptions (validators).\n","maintainers":[{"name":"sithmel","email":"maurizio.lupo@gmail.com"}],"time":{"modified":"2022-06-22T18:13:49.905Z","created":"2013-01-24T21:55:39.333Z","2.2.0":"2013-01-24T21:55:42.585Z","2.2.1":"2013-06-10T12:00:55.452Z","2.2.2":"2013-06-10T19:38:34.023Z","3.0.0":"2015-01-06T23:00:20.952Z","3.0.1":"2015-01-12T09:13:24.670Z","3.0.2":"2015-03-27T23:17:25.822Z","3.1.0":"2015-04-20T21:23:38.388Z","3.2.0":"2015-06-06T12:38:53.357Z","3.3.0":"2015-12-01T22:49:08.941Z","4.0.0":"2015-12-14T00:54:50.996Z","4.1.0":"2015-12-18T22:00:33.736Z","4.2.0":"2015-12-21T08:33:32.812Z","4.3.0":"2016-01-07T22:04:30.704Z","4.4.0":"2016-01-08T22:49:44.066Z","4.4.1":"2016-02-15T13:42:18.971Z","4.5.0":"2016-03-08T13:07:36.060Z","4.5.1":"2016-03-08T14:21:03.756Z","4.6.0":"2016-03-09T15:48:06.447Z","5.0.0":"2016-03-27T22:17:27.077Z","5.0.1":"2016-05-12T16:17:25.486Z","5.1.0":"2017-02-22T20:07:02.379Z","5.1.1":"2017-04-04T20:01:50.522Z","6.0.0":"2017-06-13T22:06:05.205Z","6.0.1":"2017-06-23T09:52:27.133Z","7.0.0":"2017-06-27T19:36:31.493Z","7.0.1":"2017-07-10T21:04:07.048Z","7.1.0":"2017-12-18T22:56:42.991Z","8.0.0":"2018-02-06T22:47:04.067Z","9.0.0":"2018-02-12T08:40:40.916Z","9.1.0":"2018-02-22T08:38:46.872Z","9.1.1":"2018-02-25T00:07:55.573Z","9.1.3":"2018-02-27T07:45:55.958Z","9.1.4":"2018-10-17T15:40:33.800Z","9.1.5":"2018-10-17T15:47:03.143Z","9.1.6":"2019-03-20T09:42:25.939Z","9.1.7":"2019-06-11T12:00:24.315Z","9.1.8":"2019-08-20T11:28:22.498Z","9.1.9":"2019-11-26T15:27:39.668Z"},"author":{"name":"Maurizio Lupo","email":"maurizio.lupo@gmail.com"},"repository":{"type":"git","url":"git://github.com/sithmel/occamsrazor.js.git"},"homepage":"https://github.com/sithmel/occamsrazor.js#readme","keywords":["plugins","components","registry","adapters"],"bugs":{"url":"https://github.com/sithmel/occamsrazor.js/issues"},"license":"MIT","readmeFilename":"README.md"}