{"_id":"zeninjector","_rev":"32-5f01131361d55d0ddc8529ed9565c8a5","name":"zeninjector","description":"Simple dependency injection library using promises","dist-tags":{"latest":"0.1.12"},"versions":{"0.0.1":{"name":"zeninjector","version":"0.0.1","description":"Simple dependency injection library using es6 generators","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --harmony --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.0.1"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"engine":{"node":">=0.11.9"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.0.1","dist":{"shasum":"5d2e3825b84d0941f219d1f0c29103aab33df074","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.0.1.tgz","integrity":"sha512-mRJ3QRnmC6j1Kn3b86Bgux82mRhiGJ6fe2Jb7Ivsz7ebJ9B6DFDLg8BvvviOUveLayh2VuOtEmPPNhA2CUrg7w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCq1tEdFiuTE3riz9LqfJPhkCmtQgUcHySJiDJcHyAWWwIgM/3J9IKKY5BaJVsdt4JC80+kBn4waL+331Rb70gfvOA="}]},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.0.2":{"name":"zeninjector","version":"0.0.2","description":"Simple dependency injection library using es6 generators","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.0.1"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.0.2","dist":{"shasum":"288f416a25bd6f16db69244600a6d375408bdeb8","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.0.2.tgz","integrity":"sha512-okOlWTsJNbUSfmVnQcXRtETtQ+edunok6/mQwt3KYOtioppHNNgR0vDPvbvelBzxkbagyfF9yGVs48Td4j5hYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkQ+KCyNPoL/gxbdZ4vyhX3M6WrGu5ZuD09e08evtsKwIhAJ3mBrOaJGXawwupM2+b8OKVDW539XkRnkcqNGpMqp/H"}]},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.2":{"name":"zeninjector","version":"0.1.2","description":"Simple dependency injection library using es6 generators","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.2"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.2","dist":{"shasum":"f1fb02636123f443ad1481eadb2b8eafe1c14185","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.2.tgz","integrity":"sha512-uBaxJVorjZUfRHCWMt5zvpIIa0+WCUwt9Z7PuyQS7ICxNhytblR5m9dA77Urq5hW0xIECJb5GidAWx0Or7lshw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrLl5SNmu9AGzH9IQphScF7lM5Rwg1IA9h29BBjlCq6AIgJUpr0jO6wf2bX9BREhoNtc3bpgmyKF5z3joQVy+8zNA="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.3":{"name":"zeninjector","version":"0.1.3","description":"Simple dependency injection library using es6 generators","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.2","glob":"^3.2.9","split":"^0.3.0","lodash":"^2.4.1","grunt":"^0.4.4"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.3","dist":{"shasum":"eba177cb858db11a91623345f8b2f0317c87f35d","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.3.tgz","integrity":"sha512-gEm3LHz7/g1y+xgn09HKifUpiHCvsv507ZHrz69vDcITO9NfnYSxnEpY+QRA8kqWrGlNWPTd31QzcZr43tGAVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDx7nPRCSMew17lWSV1UDANDtBPNjjtM1Hqk3PO7QSWxAiB38MHiAEz0W/RpqZsPkeoiraKrQ2x3qzr3sbJeBjfWHw=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.4":{"name":"zeninjector","version":"0.1.4","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.2","glob":"^3.2.9","split":"^0.3.0","lodash":"^2.4.1","grunt":"^0.4.4"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.4","dist":{"shasum":"0fe99a32b38794f7fc26f99ea234403c1cf77a0a","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.4.tgz","integrity":"sha512-FZodc6zzVUsjd7VFXfYS7+rPmvlrf/bHInd0566sndV7ghau6dUe98uJvSgWD1lfa6jQsPcscCDAGf55WLQKrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxYkHCxja79a0MzKV8TiOoCi2dKSimytr2LDXuqUIQegIhAKE6Qw1WoLmj3Qc5SNIfoIYn5q3ebzhnPVwXCA1WG0Xo"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.5":{"name":"zeninjector","version":"0.1.5","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.2","glob":"^3.2.9","split":"^0.3.0","lodash":"^2.4.1","grunt":"^0.4.4","multi-glob":"^0.4.0"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.5","dist":{"shasum":"b9b6b2f5a2706e47eeda21581b13d326215a4e04","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.5.tgz","integrity":"sha512-yR/CA4yrwiruO+4JGl7TBqcdQ1yr4BuYg1EiBec3QuV4P0LPczSgc3OYrkHwLuH0DT4EPe0vsORlLiGYRbyz9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGu9KVvZFHFoN1sMneePasFSBgdddGXpaD1QiEtQ+PaAiEAtA8N4mZZxdmVMCZfC1jxz+gb5MDCVl1cFRU/Dv2gvio="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.6":{"name":"zeninjector","version":"0.1.6","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.2","glob":"^3.2.9","split":"^0.3.0","lodash":"^2.4.1","grunt":"^0.4.4","multi-glob":"^0.4.0"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.6","dist":{"shasum":"c9a37e01732d79692bfeb5c87a3ce67c0a5a6d4a","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.6.tgz","integrity":"sha512-f/JnFvnuuaagtw/Leajeoo7hbD600qeAMjsNHg8EI1KNiiz05h0WKRnr6eTi/WH5DJdimZQqUH8fnp6unPKvCg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGpj99BlZ1lYNfbZBuEW6uAKbg+m1WoccEZ4KGsU8HUgIhAK3nytjmkXnAqYK5QfVnfMiW5xxmd8wh+qTY1YeS93N1"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.7":{"name":"zeninjector","version":"0.1.7","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"~1.2","glob":"^3.2.9","split":"^0.3.0","lodash":"^2.4.1","grunt":"^0.4.4","multi-glob":"^0.4.0"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.7","dist":{"shasum":"edb0ba1fa7284ce4399314546442edd04eb3a1f1","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.7.tgz","integrity":"sha512-Sszdoww9FLQqTEcfksHtUo8n+Pv5p2Rdp2BpH7fmgNuPtQBvCuxAgejbLbSyIj7rAvbR/4fSxVHRg6lzg/XhDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGn0iF5RcTYG0bgx+llL+YO3lOluGgafytFkmW3HGeQYAiEAzz09/s6KLDLxmy6tNXgPF9NJs6e8V8PWZfuzJTig8GI="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.8":{"name":"zeninjector","version":"0.1.8","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"^2.1","split":"^0.3.0","lodash":"^2.4.1","multi-glob":"^0.4.0"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1","sinon":"^1.10.2"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.8","dist":{"shasum":"78c6d3cfa4c449d1b8243d891fecd533822081fc","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.8.tgz","integrity":"sha512-kXjD9Kko8GLvWE2MZcxfZeL9EYF6DV3I4gohvRxXN2QqJaup7C0yxNkmj8w9yp487oieNZUBNyE8nXt1/gUKdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA3lVy7Q5f5S4yizhY9t1OuAB/D2+hmRNIODQNpLWoiPAiAYyxp8/1YvX5hgT3Wcr7H6J1b7UyRwrm14UVwdTE46lA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.9":{"name":"zeninjector","version":"0.1.9","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"^2.1","split":"^0.3.0","lodash":"^2.4.1","multi-glob":"^0.4.0"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1","sinon":"^1.10.2"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.9","dist":{"shasum":"82da531dcfac71bcbb35d14eb79cb4f31ef85945","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.9.tgz","integrity":"sha512-eRHcYFoJatKybQB9QBKADJGiKMFcaYPEmuhuzRve+WH+V0dIWTrXV7zBrDQ37C9nT38l9glKX0OErCFZ6osaBA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEp7rT1VbKKrAi6FUzeNtROp7MZjLkSGNKZBOSl3zHNcAiARB90zRgivZr54PzbrJKBLOJUIv5t9XA/p+BBmeb1y3Q=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.10":{"name":"zeninjector","version":"0.1.10","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"^2.1","split":"^0.3.0","lodash":"^2.4.1","multi-glob":"https://github.com/geekingfrog/multi-glob/tarball/master"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1","sinon":"^1.10.2"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.10","dist":{"shasum":"bbc5dc14db5f119767d85bcf66191c8a8aa702d8","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.10.tgz","integrity":"sha512-38RkWsiWqgsouFqS+OCM3KzAnWR6u4xZE9gTBz0j9SYtZSNUYO8m0AjNxdRgd9tFSC/SIIgWcQfeajBHQa/Xtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEVHgh31qQ63MgWH5NbZLqrUNTwUe1BWR2/0KFAUNGweAiEA0kyWVaRPUBPsda0i12x5xLyFc8R9cXMkuHYp9Cinxho="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.11":{"name":"zeninjector","version":"0.1.11","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"^2.1","split":"^0.3.0","lodash":"^2.4.1","multi-glob":"https://github.com/geekingfrog/multi-glob/tarball/master"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1","sinon":"^1.10.2"},"gitHead":"a6c90e2c0984c105980db1bac0d2c151d6afc96d","bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.11","_shasum":"0dbb916971968c73a363e602982ca937ee96c186","_from":".","_npmVersion":"2.0.0","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"dist":{"shasum":"0dbb916971968c73a363e602982ca937ee96c186","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.11.tgz","integrity":"sha512-FQAWBf05h0k53NreKhcb+0bb484A7v/X4pQG8puaDWGRkJ73+CMc+75HN19rU1pL7spKLv2sWPTBm3zIe+tAiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBbS+fgRyYHxSXa3qY+4Sjw/vMJPazaD0ppiIjwT/2TSAiEAjZioRSOdWGAh2ruZ8peQOQ92ylK537zzYGo1WH+gxW8="}]},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.12":{"name":"zeninjector","version":"0.1.12","description":"Simple dependency injection library using promises","main":"lib/container.js","scripts":{"test":"./node_modules/mocha/bin/mocha --ui tdd --reporter spec"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"license":"MIT","keywords":["dependency injection"],"dependencies":{"bluebird":"^2.1","split":"^0.3.0","lodash":"^2.4.1","multi-glob":"https://github.com/geekingfrog/multi-glob/tarball/master"},"devDependencies":{"chai":"~1.9.0","mocha":"~1.17.1","sinon":"^1.10.2"},"gitHead":"249ce7eb2756b9a21e960e88d958bf8ca14cb4db","bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"homepage":"https://github.com/geekingfrog/zeninjector","_id":"zeninjector@0.1.12","_shasum":"b37f4bb767410599422fe55ed558975b52baa714","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"geekingfrog","email":"greg@geekingfrog.com"},"maintainers":[{"name":"geekingfrog","email":"greg@geekingfrog.com"}],"dist":{"shasum":"b37f4bb767410599422fe55ed558975b52baa714","tarball":"https://registry.npmjs.org/zeninjector/-/zeninjector-0.1.12.tgz","integrity":"sha512-ZHy4CMilOrr4yyJxp0dVatmEcbT3Fm4D7GU4TsOczFHYUu49BI+5e/pKO6D4JAGKP/WO2Yn5Vddo2LNBbZeAsg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDb9+jI6un0ywB68NutAKihZzaCuS9xkhkP/JtCyjjtJAiApxLEF7zElk8z6NkBjmMJepiLCFGlVC1+1vU51FHSGmg=="}]},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"readme":"# ZenInjector\n\n<a href=\"https://app.wercker.com/project/bykey/3fbf7f806e16276cbf6e0f6ab2d6aa20\"><img alt=\"Wercker status\" src=\"https://app.wercker.com/status/3fbf7f806e16276cbf6e0f6ab2d6aa20/m/master\" align=\"right\"></a>\n\n### A simple library for dependency injection with support for ES6 generators.\n\n## Dependency what ?\nWith dependency injection, one doesn't care how to retrieve dependencies as long as they comply with a given interface. This allow you to decouple each components from each others. You don't need to know which implementation of `express` or `fs` you're using.\nThis allow easy mocking of objects for testing for example.\nUsing dependency injection, you create once a container which will manage all the components of your application, and make them available where they are needed.\n\n\n## Use cases\nYou should use `zeninjector` when\n\n* You want to decouple your components from each others\n* You want to integrate into one namespace a lot of components\n* You need to dynamically add components to your code without branching the whole repo.\n* You want to be able to do (more) unit tests on your code.\n\n## Example\nBelow, a typicall example of any node.js program:\n\n```javascript\n// file module1.js\nvar dep1 = require('./dep1');\nvar dep2 = require('./dep2');\nmodule.exports.myModuleName = dep1 + dep2;\n```\n\n## Two flavors\nYou can rewrite this snippet of code with `zeninjector` using it programmatically or with annotations.\n\n### Programmatic usage\n**Create** the [IOC](http://en.wikipedia.org/wiki/Inversion_of_control) container:\n```javascript\nvar Zeninjector = require('zeninjector');\nvar container = new Zeninjector();\n```\n\n**Register** a module with some dependencies:\n```javascript\ncontainer.register('myModuleName', function(dep1, dep2) {\n  return dep1+dep2;\n});\n\n// alternative syntax\ncontainer.register('myModuleName', ['dep1', 'dep2', function(dep1, dep2) {\n  // with this syntax, you can name the function's arguments whatever you like\n  return dep1+dep2;\n}]);\n```\n\n**Directly register** a module with no dependency:\n```javascript\ncontainer.registerAndExport('myConfigObject', {\n  env: 'test',\n  port: 8080\n});\n\n// it works great with `require` too\ncontainer.registerAndExport('Promise', require('bluebird'));\n```\n\n**Resolve a module** with its dependencies:\n```javascript\ncontainer.resolve('myModuleName').then(function(module) {\n    // here module is equal to `dep1+dep2`\n})\n```\n`Zeninjector#resolve` returns a [bluebird promise]('https://github.com/petkaantonov/bluebird'), thus the need to have a `then`.\n\n**Inject** dependencies to an anonymous function, because sometimes you just want to access some objects once, but still want all the goodness of the IOC.\n```javascript\ncontainer.inject(function(myConfigObject, dep1) {\n  console.log('current env %s, dep1 equals: %s', myConfigObject.env, dep1);\n});\n\n// this also works\ncontainer.inject(['myConfigObject', 'dep1', function(config, dep) {\n  // ...\n}]);\n```\n\n### Annotations\nYou still have to **create** the container:\n```javascript\nvar Zeninjector = require('zeninjector');\nvar container = new Zeninjector();\n```\n\n**Scan** your projects to automatically register all dependencies:\n```\nvar scan = container.scan([__dirname+'/lib/**/*.js', __dirname+'/ext/**/*.js']);\n```\nThis returns a bluebird promise. Once it's done, you can use `Zeninjector#inject` and `Zeninjector.resolve` to get a reference to your defined objects.\n\n**Define** a module with dependencies:\n```javascript\n//@autoinject\nmodule.exports.myModuleName = function(dep1, dep2) {\n  return dep1+dep2;\n};\n```\n\nWith **custom name** and **custom dependencies**:\n```javascript\n//@autoinject(name=myModuleName; dependencies=dep1,dep2)\nmodule.exports.thisNameIsIrrelevant = function(a, b) {\n  return a+b;\n};\n```\nThis example has exactly the same effect as the previous one.\n\nAutomatically **exports** (similar to `Zeninjector#registerAndExport`):\n```javascript\n//@autoexport\nmodule.exports.myConfigObject = {\n  env: 'test'\n};\n```\n\n## Asynchronous definitions\nLet's have a look at an example where you need to connect to a database:\n\n```javascript\n// file db.js\nvar MongoClient = require('mongodb').MongoClient;\nvar db;\nmodule.exports.connect = function connect(callback) {\n  if(db) {\n    process.setImmediate(function() { callback(null, db); });\n  } else {\n      MongoClient.connect(\"mongodb://localhost:27017/exampleDb\", function(err, _db) {\n        db = _db;\n        callback(err, db);\n      });\n  }\n};\n```\n\nThere is a problem here, everytime one wants to connect to the database, `connect` has to be called first and your code ends up in another callback (hello callback hell).\nWith `zeninjector`, a module can returns a promise, and the result of this promise will be injected as dependecy:\n\n```javascript\nvar MongoClient = require('mongodb').MongoClient;\n\n// @autoinject\nmodule.exports.db = function(Promise) {\n  // inject a Promise library\n  var connect = Promise.promisify(MongoClient.connect);\n  return connect(\"mongodb://localhost:27017/exampleDb\");\n}\n```\n\n```javascript\n// @autoinject\nmodule.exports.myOtherModule = function(db) {\n  // db here is the database object ready to be used\n}\n```\n\n\n## With generators\n`resolve` and `inject` returns a promise so it can easily be used in coroutines. Below is the asynchronous example written with generators:\n\n```javascript\nvar Promise = require('bluebird');\nPromise.coroutine(function* () {\n  yield container.scan('**/*.js'); // scan the db.js file\n  \n  try {\n    var db = yield container.resolve('db');\n    var foo = db.collection('foo');\n    //...\n  } catch(err) {\n    console.error('Got error:', err);\n  }\n})();\n```\nThis example requires node `>=0.11.4` with the flag `--harmony-generators`.\n\n## Running tests\n```\nnpm install && npm test\n```\n\n# API\n\n##### `new Zeninjector(Object options)` -> `container`\nThe `options` object currently supports:\n\n* `logger` an optional logger (default to the console). The logger must implement the methodes `trace`, `debug`, `info`, `warn`, `error` and `fatal`.\n* `verbose` to add more logs with the level `DEBUG`. Defaults to `false`.\n\n---\n##### `.setLogger(Logger logger)` -> `container`\nSet a custom logger after creation. The logger object is expected to have the following functions:\n`trace`, `debug`, `info`, `warn`, `error` and `fatal`;\n\n---\n##### `.register(String name, FunctionDefinition)` -> `undefined`\nThis function will register the dependency `name`. `FunctionDefinition` can be a function or an array of Strings, with its last element being a function. The array variant is the same as [require.js](http://requirejs.org/docs/api.html#defdep). If only a function is provided, the name of the arguments will be used to fetch the dependencies, same is [angularJS implicit dependencies](https://docs.angularjs.org/guide/di).\n\nWhen this module is required, the given `FunctionDefinition` function will be called and it's return value will be used as the value of the module `name`. If it returns a promise, the resolved value of the promise will be taken.\n\n---\n##### `.registerAndExport(String name, Any value)` -> `value`\nThis is a shorthand to `container.register(name, function() { return value; });`\n\n---\n##### `.isRegistered(String moduleName)` -> `Boolean`\nReturn `true` if and only if there is a registered module with the given `moduleName`.\n\n---\n##### `.resolve(String name)` -> `promise`\nThis will activate the `define` function for the dependency with `name`. The returned promise will resolve to the return value of the `define` function.\n\n---\n##### `.inject(FunctionDefinition)` -> `Promise`\nThis will invoke the given function with its arguments already resolved.\n\n---\n##### `.scan(Array patterns)` -> `promise`\nScan takes an array of file glob patterns (or a single string) and returns a promise which resolves when all the files have been scanned.\nScan will look for `//@autoinject` and `//@autoexport` inside every files, and take the following function's name as the module name. This method allow to manage large project without having to pass around the `container` object and do the registration by yourself.\n\nAnnotations can be used to define a custom name for the module and specify dependencies explicitely:\n```\n//@autoinject(name=customName, dependencies=dep1,dep2)\n// dependencies are comma (,) separated\n```\n\nThe following patterns are supported to declare your module with annotations:\n```javascript\nmodule.exports = {\n  //@autoinject\n  a: function() {}\n}\n\n//@autoinject\nmodule.exports.b = function() {\n  return 'baz';\n};\n\n//@autoinject\nvar c = function() {};\n\n//@autoinject\n\nfunction d() {};\n\n//@autoinject\nfunction e() {};\n// /!\\ this will raise an error if you try to require it\n// .scan's promise will be rejected here.\n\n\nfunction f() {}; // will NOT be exported\n\n//@autoinject\nmodule.exports = function g() {};\n\n```\n\n# License\nMIT\n\n","maintainers":[{"email":"support@npmjs.com","name":"npm-support"}],"time":{"modified":"2024-05-08T12:12:29.606Z","created":"2014-02-20T14:35:59.657Z","0.0.1":"2014-02-20T14:35:59.657Z","0.0.2":"2014-02-27T01:39:06.056Z","0.1.2":"2014-04-04T00:18:36.521Z","0.1.3":"2014-05-01T03:27:04.820Z","0.1.4":"2014-05-01T05:41:05.003Z","0.1.5":"2014-05-15T12:34:09.662Z","0.1.6":"2014-05-25T06:06:55.015Z","0.1.7":"2014-05-28T23:21:23.288Z","0.1.8":"2014-06-25T21:17:28.670Z","0.1.9":"2014-06-26T00:04:33.956Z","0.1.10":"2014-09-16T12:52:45.221Z","0.1.11":"2014-10-28T12:25:35.348Z","0.1.12":"2014-12-06T03:55:39.959Z"},"readmeFilename":"README.md","homepage":"https://github.com/geekingfrog/zeninjector","keywords":["dependency injection"],"repository":{"type":"git","url":"git://github.com/geekingfrog/zeninjector"},"author":{"name":"Grégoire Charvet","email":"greg@geekingfrog.com"},"bugs":{"url":"https://github.com/geekingfrog/zeninjector/issues"},"license":"MIT","users":{}}