{"_id":"di.js","_rev":"31-34589084a1949db34fa2202c1cf05923","name":"di.js","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","dist-tags":{"latest":"1.16.1"},"versions":{"1.0.0":{"name":"di.js","version":"1.0.0","description":"DI ==","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglifyjs":"^2.4.10"},"dependencies":{"lodash":"*"},"gitHead":"c3b64ea28f8a96123f84c4b4c9a6d8446275678f","_id":"di.js@1.0.0","_shasum":"e23d5c3c788d5e0ecb4816c4478cc3955a758e02","_from":".","_npmVersion":"2.13.1","_nodeVersion":"0.12.7","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"e23d5c3c788d5e0ecb4816c4478cc3955a758e02","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.0.0.tgz","integrity":"sha512-ErYNcy45PePt4vLrXeKQDjY5MQwQb6h+WN/sLigplcdvWn+Z+sX39bWMu3J3OaOGmS6BVJY5DVggQmeVRUhECQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1Zh0hQBVWGdlUjvQCm34mzdrqqWvS+KhctIXB8mAHagIhANhPRdDnJ+4IrI/uftiEDS0voJ/CJFw7yzkAhUdj3TXF"}]}},"1.0.1":{"name":"di.js","version":"1.0.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglifyjs":"^2.4.10"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"7907492c508cf6d5ef4d3d661710961f15731632","_id":"di.js@1.0.1","_shasum":"d9f5edb2d8bb8899b2c0c9b416f4eb1c8176d839","_from":".","_npmVersion":"2.13.1","_nodeVersion":"0.12.7","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"d9f5edb2d8bb8899b2c0c9b416f4eb1c8176d839","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.0.1.tgz","integrity":"sha512-x7jg36pOl55AU+zYbg3nGnX9akAzK0eTT+ef9BusAsJHrlyk7FymauE+8qIOx06QEk3UXJpVMoVn/SOtn4Z7Fw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAsTT127090XPZ+rp5xunEfrWFGIfHyKD6Rs61Rned2DAiB8w0u1nGO/c+Fc7ZHrTGbmAHakLn8c28XGzXLzsS02uw=="}]}},"1.1.0":{"name":"di.js","version":"1.1.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"a6979871878293f15835c748ac8324790ee34a69","_id":"di.js@1.1.0","_shasum":"5422ed7ae8739de2b5049bff03456fbe3128750c","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.0.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"5422ed7ae8739de2b5049bff03456fbe3128750c","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.1.0.tgz","integrity":"sha512-FilVhB7EC/GIbOAXH8KSeEJyGBafANEqEE5xgK3pHn93XTrvIZl19/+xwR0c3jhOu4c6rvvneYyWllau08R4xw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Khvm0qf7TwJ5KYwBCdsrpcAJN1jnqJbl4pUXkZRgagIhAN5r8uTK18CsSpnNPPqa7r3QiycAcuelTdWCqxvjABZz"}]}},"1.1.1":{"name":"di.js","version":"1.1.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"c3c5572b0ab9e8e2ad9bf4b22663082bfeab21b7","_id":"di.js@1.1.1","_shasum":"cc9c67d0e3f736eefef709ad547c29e730fbce98","_from":".","_npmVersion":"2.14.5","_nodeVersion":"4.2.1","_npmUser":{"name":"ftdebugger","email":"ftdebugger@yandex-team.ru"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"cc9c67d0e3f736eefef709ad547c29e730fbce98","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.1.1.tgz","integrity":"sha512-CBELB+pOagil7ecqfx2Gecl9BUIxOhWZy4fjRYZUDkF1g5mtbcQBmN1QP4rKyOfm2u7lh4udf/vH6q7r+g5IHg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnu0HCCj+YcrblZbc7tg2emhhU8cZrqQJpLM0ADsQjqgIgXudsCtcjiKbrC+hfUsTdwS6GJVMsVDKW7IKFhiJdm6c="}]}},"1.2.0":{"name":"di.js","version":"1.2.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"e89bde589129d73b04cff3a7a3fbe5087fa3361c","_id":"di.js@1.2.0","_shasum":"5a9850f0aa76201ec5305438af998847d1c5d404","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.0.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"5a9850f0aa76201ec5305438af998847d1c5d404","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.2.0.tgz","integrity":"sha512-N0YSv6JZpuN+f0DUcfeY9iwVt14RydK0Hps8rQRoFW2+sC3vL7e345qsjeWaiZkEURvsJ0EJ27BEB3Z3+20zxg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXfO6TErtLh21Rp6vO9daWD+3/+vnp5PmpdAmGTRUgBAiEAzcqh1jUscKfq5zEYMF8h3Jh+sdGmcJ6Cqt1+ySqrzDs="}]}},"1.3.0":{"name":"di.js","version":"1.3.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"94f9dafec0bea190a602caad47d913a72edbe9d1","_id":"di.js@1.3.0","_shasum":"e847b9a406308037ffe8f2a2b547e1cb54cc20d7","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.0.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"e847b9a406308037ffe8f2a2b547e1cb54cc20d7","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.3.0.tgz","integrity":"sha512-rpO+QnaKC0d4RiHJhqOWkgnaoJRT1RkrQKPnvUfMHGr5evKm2fFdG6jMv/2w3qdyEC6u1KVu4JtR+w0nZtbMaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIClmTMWBH+qy9sazYHNOuJfp/5hvutu8t62ZGumlZeNtAh82OosRLlk/J6TKKvtuMyV67lxwXeQSnaxMoV45oQCu"}]}},"1.3.1":{"name":"di.js","version":"1.3.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"8d04e7ae658761e5fbc48723f75326524f44f967","_id":"di.js@1.3.1","_shasum":"4b7acc5d14c51daf583f5f2a43347e83259da242","_from":".","_npmVersion":"2.14.5","_nodeVersion":"4.2.1","_npmUser":{"name":"ftdebugger","email":"ftdebugger@yandex-team.ru"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"4b7acc5d14c51daf583f5f2a43347e83259da242","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.3.1.tgz","integrity":"sha512-dI4TP+WTYPsvvWKc76RK15y9WUdXF21Wf0M1h0aWc6UN3GJt8vLXf/aJzk+uHOyvQjv5xGEi+BBKgQYg+drjDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9xGHwgHjCxaQXrLMfVj7/FPkQeNRpx0p383rfZYtBCAiBYFHo6gCh613qdpYjWR29xeDvpHiN8i0JUQFl8hYna0A=="}]}},"1.3.2":{"name":"di.js","version":"1.3.2","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"41e028c88ced6a53a9249a4e0847596ff28a55f6","_id":"di.js@1.3.2","_shasum":"f1d15e34f1658cdda85b19666eb55cea7a16fd6c","_from":".","_npmVersion":"2.14.5","_nodeVersion":"4.2.1","_npmUser":{"name":"ftdebugger","email":"ftdebugger@yandex-team.ru"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"f1d15e34f1658cdda85b19666eb55cea7a16fd6c","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.3.2.tgz","integrity":"sha512-xdypbugZF+C72ap7FYC2RZsN7fpMIP3mtN1Vp+xHtAxr3OJTVgWgaWNkSUOeaY7yqARn4JzDX0IAt9rHgb0gHw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsCBzRDoM7qt7ESH2yLgUHhxopmim4eeXBXq0A/ndi3QIhAJJZbzx/bROCIbDcRg4kjJ2/Dq0rpKHVOzgkFnF6NIHk"}]}},"1.3.3":{"name":"di.js","version":"1.3.3","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"473d3052fc8ff132b4ed426d75c45109497aa24e","_id":"di.js@1.3.3","_shasum":"2e6a02ee195891a594e82107e4ccfd0771ed50c0","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.0.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"2e6a02ee195891a594e82107e4ccfd0771ed50c0","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.3.3.tgz","integrity":"sha512-TEiFWizcPz1KOHepEvuQGHbHwtN4M7Tj86hT1gVQrRVF1YvrWuwKPY14bNqfwfOXI+suikT4OMPATOxGR4eZ4w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQYpgYlfBBCAAL6/TZ0XAzEuqMzGyaJO44HCqwzFjd/AIgc4ggjNvjqzvwrucoZ/w04tqkaijJVh+szPL+srygSMg="}]}},"1.4.0":{"name":"di.js","version":"1.4.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"f8f554b51e0daf2b57411ca93a4e0b7817265d44","_id":"di.js@1.4.0","_shasum":"41b9e572443cad1919e504babfc374e45e425d7c","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.0.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"41b9e572443cad1919e504babfc374e45e425d7c","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.4.0.tgz","integrity":"sha512-BvWIPhGp5SSkIMT/QbWdRR9V4WS/uRqXFbSN9AP4l4U60GL2hr65x+8KE43aDpF3HP5kpaIoimwsz/CL66ZvEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGPrN/iF+qyj9rOr23DNtYKuI0SVOPnl8lMggIub/F6YAiAHER5bi0kYH/Kdp6ns6j4V2I1uUqamF4nB5XMXj/2Riw=="}]}},"1.5.0":{"name":"di.js","version":"1.5.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"a42c60fd3b63cf58cdfbe8ea4299281b60e18a95","_id":"di.js@1.5.0","_shasum":"f7337ba6aef80641befb7488042203dd216570d6","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.0.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"f7337ba6aef80641befb7488042203dd216570d6","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.5.0.tgz","integrity":"sha512-gJhEQGsqhub8u6S0RAyMyq6g46CLC42fDtP9JRyQz/3v0Ff4elm6Zp2XrdY0sO3135z3PvcR/C357a24sjQ4UQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsLfC9XpWbQMQuq5z1FpfqyY/sT2VqK2JfRI230ysM0AiA+B6ozK3F9undiU7EuRVAMvnhu3AcIj8p0kEPJ0hChgg=="}]}},"1.6.0":{"name":"di.js","version":"1.6.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"03ae80a326b2028eceb1f2a97e446b330b06874b","_id":"di.js@1.6.0","_shasum":"888f1af4827c05501fce9b431275bf29344d4998","_from":".","_npmVersion":"2.14.5","_nodeVersion":"4.2.1","_npmUser":{"name":"ftdebugger","email":"ftdebugger@yandex-team.ru"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"888f1af4827c05501fce9b431275bf29344d4998","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.6.0.tgz","integrity":"sha512-tlHvVVDjbSCDUqsS4p86lW3MpugK11onIcdkPgIF+9CZGzzVhyxUYaK69pzUKwogr1VsfsK+HB7ojE+FS6gWng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGqZYq+lt71nVUe8iRuKs1bVNtLWBKP4geg6QL3Q/dbwIgGs2/4f8Q5/R1jLhDFe39D/GL00PeQACwyyENb9dqqKQ="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.6.0.tgz_1461192353720_0.6378612606786191"}},"1.7.0":{"name":"di.js","version":"1.7.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"196977b8de1f5dcc4a923e825d14a1ee46274393","_id":"di.js@1.7.0","_shasum":"4f7fc759fb5ec12add419efce61491bbdef40c34","_from":".","_npmVersion":"2.14.5","_nodeVersion":"4.4.3","_npmUser":{"name":"ftdebugger","email":"ftdebugger@yandex-team.ru"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"4f7fc759fb5ec12add419efce61491bbdef40c34","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.7.0.tgz","integrity":"sha512-B1HPL4/lyUsCOlQlQXZboSoKFTCrX6fXuq47Db56pbt+MhoEIK8HCv17hFPAQEP/iOyocqZmAKlHWVYHDiohzw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJ5tsldEa8+d/LZWlJJzRXgPa8C/5pW887rRUu+7dgRAiANL01BEQZs/IFHd2daC84zA0KetrDUwjKA84wQ8nkMXg=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.7.0.tgz_1464556325686_0.7138133882544935"}},"1.7.1":{"name":"di.js","version":"1.7.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"5238174fd6175345f6b9a2a28b28647a78f805d5","_id":"di.js@1.7.1","_shasum":"fd8926affef4d7ba35369ce9cedc23b164f15dcb","_from":".","_npmVersion":"3.8.2","_nodeVersion":"4.4.3","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"fd8926affef4d7ba35369ce9cedc23b164f15dcb","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.7.1.tgz","integrity":"sha512-R7K6R/IALxjd1PBDxMAn6oi7HxwvHhFdPRpIaAMjE+qvVyAiuUVxZw0GA/K9+9eZ72Eek9F93DQMx9jcBLly8g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBGJG5drB66Ep87AmKIPPlFxDz+N63l8/XL4IUZALGlgIgGl+Z1hjUTdNW6EFpRO45dPIWjZAg8rAWfUT6CXuTa8I="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.7.1.tgz_1464968422223_0.6051988510880619"}},"1.7.2":{"name":"di.js","version":"1.7.2","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"b56c02691a8ef72dda67dd9530778752e237f1b5","_id":"di.js@1.7.2","_shasum":"1cf6fdaf7a43af040ecdc75482a183c61782307b","_from":".","_npmVersion":"3.8.2","_nodeVersion":"4.4.3","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"1cf6fdaf7a43af040ecdc75482a183c61782307b","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.7.2.tgz","integrity":"sha512-3GP5qpX3e70AZSpkb+6ryEFJX+YsINIumBb2xvi9e4+ajbgFLnstLQ1wZIJRLWVT4wJHg6k3tt8qZ3Dw6g0B2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHRjldNgATgoWjMhq/i2o9Y9sDD/+QQYOfjZG+0a6gQHAiEA9Ba6arxQa/hWB5jDdjz20etve/SBo4Q+OnJWrBwHXQc="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.7.2.tgz_1465402497173_0.7989261548500508"}},"1.7.3":{"name":"di.js","version":"1.7.3","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{"lodash":"*"},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"608e4046990517135e664746ab62e7e2a7c9a5e2","_id":"di.js@1.7.3","_shasum":"52882ce0cfcf7efab9d55571a1717531185a713e","_from":".","_npmVersion":"2.14.5","_nodeVersion":"4.4.3","_npmUser":{"name":"ftdebugger","email":"ftdebugger@yandex-team.ru"},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"dist":{"shasum":"52882ce0cfcf7efab9d55571a1717531185a713e","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.7.3.tgz","integrity":"sha512-3OCnlGLNL7BKuyV+JCmpwfDwGo31SH55YsgVdRgl8QrfMBGrop0nRZzsR5EztY8H1kRv5hMybuedZPp0NGHR0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAR0XbHVruKSGqH7UkcBSk8XkB68kfRTAor+LIE4a7HrAiEA2AQjSchjcywb1rOcjI8IMVAfQ0al2fwrEEfK4TdNde0="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.7.3.tgz_1466609445940_0.2627865488175303"}},"1.8.0":{"name":"di.js","version":"1.8.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"9b6e9f20dfee726adaffb562a8f49325769a0931","_id":"di.js@1.8.0","_shasum":"09a7ad9d33339a4199c9129966cfdf7e67ab8aea","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"09a7ad9d33339a4199c9129966cfdf7e67ab8aea","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.8.0.tgz","integrity":"sha512-qJQ5wsAF/u8MI33IYmQhCoJlgdOnKjvAb8VMK1UQ3WXzDKuB/q/xrsCHNm1GE369rjCLCOhXK09zlon+Dkd8ag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEq9312aAQQS1ukFWMngH4iVo/xPpH56HvkSQMb9oeAAAiEAuJAaoewW9ibsvAjNTJO2McT32COJosg22wKb7ojGLGc="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.8.0.tgz_1467755981296_0.5191006287932396"}},"1.8.1":{"name":"di.js","version":"1.8.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"d3b87452b6a217fab033e6c56447386bece60880","_id":"di.js@1.8.1","_shasum":"94bbaa9cc581ab300d1823704d8ff88fb991d0f6","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"94bbaa9cc581ab300d1823704d8ff88fb991d0f6","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.8.1.tgz","integrity":"sha512-FymoQy8zF/wL1d4Qv+bKBSFQePZSfeMIStFDsXgFCRYoULPG76+LIdWdR6/niE8cIeU5mfTEFUeWPpB9eIdAWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDY8VWYYGNcbkGBT/WgdnPxdk5EvjmrPXQ1g7RJj4n79gIhAPiNZy5dnUqojgUN5gPyZ8eYaNubAf18UN+JBuwmq7E3"}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.8.1.tgz_1467837031027_0.5756993109825999"}},"1.9.0":{"name":"di.js","version":"1.9.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"c2e92ca2020633850545cdfbbc1f14accc12b8ce","_id":"di.js@1.9.0","_shasum":"913a235f415a89b67343158fc4303b3825c858a8","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"913a235f415a89b67343158fc4303b3825c858a8","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.9.0.tgz","integrity":"sha512-HbIJmaE8hudnPr/4z1KNhLAZ9GwfwtfEwgzj5sEX5selVyWdsWdQ2OMf2ocKzp9X4s4ck2tXP9lcpQ8Rko2WYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCx4rhTrn3cSIY66siV33a10LO9jpc+Mdr7zvRSykdOvQIgIxU2ENvac5KYBBPpbWYD0qEqOB6XsljmwKtsIMZGzYk="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.9.0.tgz_1468360650902_0.3865842572413385"}},"1.9.1":{"name":"di.js","version":"1.9.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"index.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"e455c7b35e2f2b746f60a38c0a485d1a8e0a30b1","_id":"di.js@1.9.1","_shasum":"6adcc0a66c89900f65520a62414c4cfe79ed8fa9","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"6adcc0a66c89900f65520a62414c4cfe79ed8fa9","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.9.1.tgz","integrity":"sha512-zx2b24qZlK0y58W8vfazX1YrB1zjgHS9jcb5zK04kuafXQt0KdxbiM3VMoVxWAAkMszG4+HKfJgGuEtDeMWOZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC19t678ezxF95cY16MmEwO317MONbuMdxBc6w0Hk46bwIgVRLsOt+I8V85byMMK5nNER8RABKhwJWSjVukEP4m/QQ="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.9.1.tgz_1471172046215_0.29111995128914714"}},"1.10.0":{"name":"di.js","version":"1.10.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"e0f350ab5ecb3d227cedfb75fc2fc4e9c89cf30d","_id":"di.js@1.10.0","_shasum":"a83bce739f9a100ab19b801276f10d0386cebc9c","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"a83bce739f9a100ab19b801276f10d0386cebc9c","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.10.0.tgz","integrity":"sha512-EhdeQEhaoyy8IY+jYgxPrY/+l75c6PvIFKELBJIr44qJJgATWh/bn1qzBUw0t74LFrGP0TRFMplUhsVsGP3Akg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiMohUNW7UqyhvBydxdsvsKgaHH6NY4p47uR4bM1gm5AIhAMoOBHnKfIx6cD89BKRWXyqur9aqkEDDy0Fu32fLMrLg"}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.10.0.tgz_1472982323638_0.5191588553134352"}},"1.11.0":{"name":"di.js","version":"1.11.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"285245a9216f3b90d77b6773c8568234f1e2c030","_id":"di.js@1.11.0","_shasum":"f45a6e86ad8155542a55086070be2be9a81fbfda","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"f45a6e86ad8155542a55086070be2be9a81fbfda","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.11.0.tgz","integrity":"sha512-LEaEOMjkaDWysYaEvGoacj6woI1k3IhBh/RjbCrwXaRNPT3dEag1UBTqNafVEr0M2jDtjigWSqsbERTG8PKk6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEzWnaeL3NCuE71JHLkBCd+3R4KgDbljR26LVFLkui8AiEAmw8/NSum6nfNRnoYyTvVFdK5bIUFdaPyzupvkyBGs04="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.11.0.tgz_1474383673049_0.34981146780774"}},"1.12.0":{"name":"di.js","version":"1.12.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"8eaeaf91eb1d3dba8ddc624afd2de6a12c383ca8","_id":"di.js@1.12.0","_shasum":"f321ef3903204562affb1148a970dfec93fe2ebe","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.2.2","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"f321ef3903204562affb1148a970dfec93fe2ebe","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.12.0.tgz","integrity":"sha512-leFrFq1i0Q1XMIZBEKVE7IcOeEBH3jHwpn14HcrptD0P8AzrB7ZiEQHkYf+q5dnqLdmgKldg1xdcIoyHlhDsqQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICKJrDhizsLWThPFBxA2IzAAB3OL15D2WOjNMTTZ2vvTAiB9s+Hv0JJAOojvVQFQWE2CflLGTpnAyXnwJN13aILeLA=="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/di.js-1.12.0.tgz_1474924158547_0.3505844085011631"}},"1.13.0":{"name":"di.js","version":"1.13.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build && npm test"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"4ea7a2ada500813670c979ef0e4f85b86fb94449","_id":"di.js@1.13.0","_shasum":"0e65232887c1ace7153e89e3b1da7bf04ab0f786","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"0e65232887c1ace7153e89e3b1da7bf04ab0f786","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.13.0.tgz","integrity":"sha512-5fXTAB2/mW13KFRmmnJDPEh/GdvzFHZgirdrOCQvyYSV5/5Sl1p3tWsJRcJPpoLhZmHFNu/4krS2RzVUIATb2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCU4YvEzGfe35chvIG+FrtQFwwRMkrGlJHQb8BxVkm2zQIhAMmoczJz2C7dCg0ecGayLBkjtDrvkFSKYuk3WYNvpSyr"}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/di.js-1.13.0.tgz_1483382759953_0.6373868233058602"}},"1.14.0":{"name":"di.js","version":"1.14.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build && npm test"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"4a0b608067b80578b6df2d69cd1eeb42b9829027","_id":"di.js@1.14.0","_shasum":"8f2cf97a90d45213972bd5305cf0ff5f9866ea10","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"8f2cf97a90d45213972bd5305cf0ff5f9866ea10","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.14.0.tgz","integrity":"sha512-M7A3MAPRVmP8velIgfATFv7SY53Mnp02RBlwcqQJsfX1yT5qus7CcAO1c5GzxB7PfqNCMLSPd+DqP84sR3DXyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDg95OeNcWUu1xDbLXur3+KOGJaRVS3cFjaSDbM7R/pKwIgXQBmEPGIjHV2PImnmBAXi9/wowpKKb/59IqifAbM8tc="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.14.0.tgz_1485781881798_0.7868664478883147"}},"1.15.0":{"name":"di.js","version":"1.15.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build && npm test"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"cf8203b0253e5cfc032bb6a6250180f704cbde58","_id":"di.js@1.15.0","_shasum":"bf05c656b192b03e161ab4a9a701377400bf7803","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.4.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"bf05c656b192b03e161ab4a9a701377400bf7803","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.15.0.tgz","integrity":"sha512-A8QcyTjBS9L7IoFDYP+fJqIHAKMcrZCmv+lBgczHFOg7uMEAgbMhCnroYr1O6z7ZzV8V5IzapIqKXteLqPJ+ZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8K846V5VPfEX99DgeKsxF1SNpO8g3K103mAsZLbeqggIhALFevMI6p408HFi4prrPYlRpjWjKHLbwZDSq7dgwGPJR"}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.15.0.tgz_1487327420514_0.16536323120817542"}},"1.15.1":{"name":"di.js","version":"1.15.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build && npm test"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"5e87495f576fce84828a1d7b706b0222d912eccd","_id":"di.js@1.15.1","_shasum":"b9f99240bde17904d20bff91c31b6d9bd70ee1a6","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.4.0","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"b9f99240bde17904d20bff91c31b6d9bd70ee1a6","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.15.1.tgz","integrity":"sha512-TtkHaGLjtBWooraSfgeFIlc0uneuc8JBYou5fdCj7RzllBVpNMm1fYDvwwGXqog9C/UDycnSl6aEVPj3VDCzmw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnJ5NV4zYnlj7JeCITivRIA/nEDm5l26aiojuY+46sDAiEAkF5TJWBMF9C3dLbYRl8tkP12u6CUg8MLBliZ0tyqIBY="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/di.js-1.15.1.tgz_1487328994106_0.7030911613255739"}},"1.16.0":{"name":"di.js","version":"1.16.0","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build && npm test"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"e23d23a65640252c775eff1b9942efe276222f95","_id":"di.js@1.16.0","_shasum":"7fb14d4ff501c84de4267956e067e436e8017df9","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.1","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"7fb14d4ff501c84de4267956e067e436e8017df9","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.16.0.tgz","integrity":"sha512-XuDPIhtALvtpkFdGghTxQqXjOZJvwJMlYVIkO+/G0LRoR/bFTb54tjHD7kjuuD/aYKB5lNF8ZjRyfW0vM3ukkA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzHHYiNSB8zNSxU4m8oxmMyRLFXQW5jcBaKz/WaGXTBAiEAl6odMkTdfv48uge5n6XbNzrGXPd7GCLncMgF4vE0n1o="}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/di.js-1.16.0.tgz_1489502592212_0.9819229077547789"}},"1.16.1":{"name":"di.js","version":"1.16.1","description":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js) ========================================================================================================","main":"build/di.es5.js","scripts":{"test":"mocha --compilers js:babel/register","dev":"mocha --compilers js:babel/register -w","es5":"mkdir -p build && babel index.js -s inline -m umd --module-id di -o build/di.es5.js","build":"npm run es5 && uglifyjs build/di.es5.js -o build/di.es5.min.js --mangle --screw-ie8 -c join_vars,unsafe,pure_getters","prepublish":"npm run build && npm test"},"author":"","license":"ISC","devDependencies":{"babel":"^5.8.23","chai":"^3.2.0","chai-as-promised":"^5.1.0","lodash":"*","mocha":"^2.2.5","uglify-js":"^2.4.24"},"dependencies":{},"respository":"git@github.com:ftdebugger/di.js.git","gitHead":"440bfd563a54c036e4b28900a37ea6b976536532","_id":"di.js@1.16.1","_shasum":"9084872fa6e7bf8c7534a0ef6535da9d4dec5ef8","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.1","_npmUser":{"name":"ftdebugger","email":"evgeny@shpilevsky.com"},"dist":{"shasum":"9084872fa6e7bf8c7534a0ef6535da9d4dec5ef8","tarball":"https://registry.npmjs.org/di.js/-/di.js-1.16.1.tgz","integrity":"sha512-QrKED75nP7m6xMbLBTuZJL6xxMecucDTOXFHLNha2r+rbYxBSGIpWbKWwHMZA6l848eyWAPPX4NlhtcMaQn4Cw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYiKLMtazo7iOj+VoINucCMxJH53Bib4kndDi3wv6g6gIhAK2uYTapwOrM26mANjTHADpz2CcfDj/TvLnbaBn2MhSo"}]},"maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/di.js-1.16.1.tgz_1493053845422_0.979187959805131"}}},"readme":"DI [![Build Status](https://travis-ci.org/ftdebugger/di.js.svg)](https://travis-ci.org/ftdebugger/di.js)\n========================================================================================================\n\nInstall\n-------\n\n    npm install --save di.js\n    \nUsage\n-----\n\nLets imagine we want to cook russian salad.\n\nAll ingredients are in `ingredients` directory:\n\n```\ningredients\n├──Salad.js\n├──Pea.js\n├──Pickles.js\n├──Chicken.js\n├──Mayonnaise.js\n├──Eggs.js\n└──Potato.js\n```\n\n```js\n\nimport {createContainer, webpackResolver, then} from 'di.js';\n\nvar di = createContainer({\n    resolvers: [\n        // Each dependency is resolved via resolvers.\n        // You can write you own resolver: it just a function which takes one argument - name\n        // and returns module or Promise.<module>.\n        //\n        // Here we are creating resolver from webpack's require.context. \n        // It will resolve all bundled modules\n        webpackResolver([\n            require.context('./ingredients', true, /\\.js$/)\n        ])\n    ],\n    dependencies: {\n        // This is the most simple usage: we are defining key `Salad` and specify dependencies.\n        // When all dependencies will be resolved, a map with their instances will be passed \n        // into `Salad` constructor.\n        Salad: {\n            pea: 'Pea',\n            pickles: 'Pickles',\n            Mayonnaise: 'Mayonnaise',\n            chicken: 'boiledChicken',\n            eggs: 'boiledEggs',\n            potato: 'boiledPotato'\n        },\n\n        // `boiledChicken` will be created from the Chicken module by `boilFactory` method. \n        // This method should return chicken instance or Promise.<instance>. \n        // This is a sort of Aliases. Aliasing can be very useful for constructing\n        // same class instances with different dependencies.\n        boiledChicken: 'Chicken.boilFactory',\n\n        // This is one more way of aliasing. The definition means that `boiledEggs` \n        // is instance of `Eggs` which depends on all of `Eggs` dependencies as well \n        // as on `water` dependency.\n        boiledEggs: ['Eggs', {\n            water: 'Water'\n        }],\n\n        // This is a full definition syntax. In fact it is too verbose and you \n        // unlikely will need it.\n        boiledPotato: [{\n            bundleName: 'MyFavoritePotato',\n            dependencies: {\n                water: 'Water'\n            }\n        }]\n    }\n});\n\n// If all dependencies can be resolved synchronously, then we will \n// get the instance synchronously too.\nlet syncSalad = di('Salad');\n\n// If there are some asynchronous dependencies, we will get promise instead\ndi('Salad').then(asyncSalad => {...});\n\n// If you don't want to care about it, you could use Promise\nPromise.resolve(di('Salad')).then(salad => {...});\n\n// or `then` helper from di.js package (more effective than Promise)\nthen(di('Salad'), salad => {...});\n\n```\n\nModules\n-------\n\nModule stands for a CommonJS, AMD or ES6 module. Modules themselves cannot be used as dependencies, but module's instances can do.\nAfter Module is resolved via resolver, it should be instantiated. The process looks like step by step algorithm:\n\n1. If module is ES6 (`__esModule` is defined) and there is no `default` object export then container will extract first exported class (see examples below).\n2. If module has factory method (`factory` by default), it will be invoked with dependencies as first argument.\n3. If module is a function and doesn't have factory method it will be invoked with `new` keyword with dependencies as first argument. In other words an instance will be created.\n4. If previous two steps will result into `thenable` (e.g. Promise), it will wait for this Promise to resolve. Notice, that you can't use promise as a dependency.\n5. When instance is being resolved, di tries to invoke update method if it exists(`updateDependencies` by default) with dependencies as first argument.\n\n```js\n// A.js\nexport default class MyClass() {} // good\n\n// B.js\nexport class MyClass() {} // nice\n\n// C.js\nclass A {}\nclass B {}\n\nexport {A, B}; // bad! DI will extract only `class A`\n\n// D.js\nclass A {}\nclass B {}\n\nexport default { // awesome!\n    factoryA: deps => new A(deps),\n    factoryB: deps => new B(deps),\n};\n\n```\n\nResolvers\n---------\n\nResolver is simply a function, which takes name as its argument and returns Module (or Promise.&lt;Module&gt;) if it can resolve given name, or null (or Promise.&lt;null&gt;) if it doesn't.\nAll resolvers which are passed to `di.createContainer` method are invoked consequentially. First resolver which returns Module wins.\n\n```js\n\nlet myFirstSyncResolver = (name) => {\n    if (name === 'MyCommonJSModule') {\n        return require('./MyCommonJSModule');\n    }\n};\n\nlet myFirstAsyncResolver = (name) => {\n    if (name === 'MyAMDModule') {\n        return new Promise(resolve => require(['./MyAMDModule'], resolve));\n    }\n};\n\n```\n\nThere are some useful resolvers out of the box.\n\n### staticResolver\n\n`staticResolver` is constructed with `key`-`value` pairs of your Modules and will then resolve Modules by `key`. \n\n```js\nimport {createContainer, staticResolver} from 'di.js';\n\nvar di = createContainer({\n    resolvers: [\n        staticResolver({\n            User: require('./model/User'),\n            config: _ => require('./config.json') \n        })\n    ],\n    dependencies: {}\n});\n```\n\n### webpackResolver\n\n`webpackResolver` is constructed with webpack's require.context objects and then will resolve all bundled Modules. It is very useful, when you are lazy enough to specify Modules manually or you want to split your application into bundles.\n\n```js\nimport {createContainer, staticResolver} from 'di.js';\n\nvar di = createContainer({\n    resolvers: [\n        webpackResolver({\n            // recursively finds all files in `states` directory with a name \n            // matched by regular expression\n            require.context('./states/', true, /(State).js$/),\n            \n            // with bundle-loader you can activate AMD require style, which means \n            // automatic bundle splitting with webpack\n            require.context('bundle!./views/', true, /(Layout).js$/),\n            \n            // same behavior with promise-loader\n            require.context('promise?global!./views/', true, /(Content).js$/),\n        })\n    ],\n    dependencies: {}\n});\n```\n\nWebpack gives us information about where modules are placed and webpackResolver creates map with `name` - `path` pairs. Filename without extension will be used as a Module name. It means that file `./states/SidebarState.js` can be required from di as `di('SidebarState')`. But keep your eyes open: unique names are required!\n\nDependency definition\n---------------------\n\nYou can specify dependencies in `dependencies` key of the `createContainer` configuration. If your module has no dependencies, there is no need to declare them. \nEach item in the `dependencies` map will be converted to the `Definition`. It looks like this:\n\n```js\n{\n    \"id\": \"uniqueModuleId\",\n    \"bundleName\": \"myFavoriteBundle\", // this property will be passed to resolvers\n    \"factory\": \"factory\", // factory method name\n    \"update\": \"updateDependencies\", // update method name\n    \"dependencies\": {\n        \"dependencyName\": \"dependencyDefinitionId\"\n    }\n}\n\n```\n\nAs you can see it's not so simple and too verbose, but you can use some sugar:\n\n### Direct dependency declaration\n\n```js\ndependencies: {\n    Dep1: {\n        a: 'Dep2', // dependencyName => dependencyDefinitionId\n        b: 'Dep3.factory' // dependencyName => dependencyDefinitionId.factory\n    }\n}\n\n// converts to definition\n\n{\n    \"id\": \"Dep1\",\n    \"bundleName\": \"Dep1\",\n    \"factory\": \"factory\",\n    \"dependencies\": {\n        \"a\": \"Dep2\",\n        \"b\": \"Dep3.factory\"\n    }\n}\n\n```\n\n### Parenting\n\n```js\ndependencies: {\n    Dep1: \"Dep2\" // definitionId => parentDefinitionId\n}\n\n// converts to definition\n\n{\n    \"id\": \"Dep1\",\n    \"parentId\": \"Dep2\",\n    \"bundleName\": \"Dep2\", // Dep2 is not declared, so we use it as class name\n    \"factory\": \"factory\", // Default factory is 'factory'\n    \"dependencies\": {}\n}\n\n```\n\n### Deep parenting with factory overriding\n\nAll dependencies, factories and other properties will be copied from the User to the currentUser\n\n```js\ndependencies: {\n    User: {\n        test: 'test'\n    },\n    currentUser: \"User.factoryCurrentUser\"\n}\n\n// converts to definition\n\n{\n    User: {\n        \"id\": \"User\",\n        \"parentId\": \"User\",\n        \"bundleName\": \"User\",\n        \"factory\": \"factory\", // Default factory is 'factory'\n        \"dependencies\": {\n            \"test\": \"test\"\n        }\n    },\n    currentUser: {\n        \"id\": \"currentUser\",\n        \"parentId\": \"User\",\n        \"bundleName\": \"User\",\n        \"factory\": \"factoryCurrentUser\", // Factory was overriden\n        \"dependencies\": {\n            \"test\": \"test\"\n        }\n    },\n    //..\n}\n\n```\n\n### Deep parenting with dependency overriding\n\n```js\ndependencies: {\n    User: {\n        test: 'test'\n    },\n    currentUser: ['User.factoryCurrentUser', {\n        test2: 'test2'\n    }]\n}\n\n// converts to definition\n\n{\n    User: {\n        \"id\": \"User\",\n        \"parentId\": \"User\",\n        \"bundleName\": \"User\",\n        \"factory\": \"factory\", // Default factory is 'factory'\n        \"dependencies\": {\n            \"test\": \"test\"\n        }\n    },\n    currentUser: {\n        \"id\": \"currentUser\",\n        \"parentId\": \"User\",\n        \"bundleName\": \"User\",\n        \"factory\": \"factoryCurrentUser\", // Factory was overriden\n        \"dependencies\": {\n            \"test\": \"test\",  // parent dependency\n            \"test2\": \"test2\" // new dependency\n        }\n    },\n    //..\n}\n```\n\n### Update function declaration\n\nUpdate function are invoked during sessions. For more information refer to the sessions section\n\n```js\n{\n    user: 'User.newFactory#newUpdate'\n}\n\n// converts to definition\n\n{\n    User: {\n        \"id\": \"User\",\n        \"parentId\": \"User\",\n        \"bundleName\": \"User\",\n        \"factory\": \"factory\", // Default factory is 'factory'\n        \"update\": \"updateDependencies\", // Default update function\n        \"dependencies\": {}\n    },\n    currentUser: {\n        \"id\": \"currentUser\",\n        \"parentId\": \"User\",\n        \"bundleName\": \"User\",\n        \"factory\": \"newFactory\", // Factory was overriden\n        \"update\": \"newUpdate\",   // Update function was overriden\n        \"dependencies\": {}\n    },\n    //..\n}\n```\n\n### Complete manual definition\n\n```js\ndependencies: {\n    Dep1: [{\n       \"bundleName\": \"Dep2\",\n       \"factory\": \"produce\",\n       \"dependencies\": {\n           \"a\": \"Dep3.factory\"\n       }\n   }]\n}\n```\n\n### Unnamed dependencies on the fly\n\n```js\ndependencies: {\n    Dep1: {\n        a: [\"b\", {\n            c: \"c\" \n        }]\n    }\n}\n\n// converts to definition\n\n{\n    Dep1: {\n        \"id\": \"Dep1\",\n        \"bundleName\": \"Dep1\",\n        \"factory\": \"factory\",\n        \"dependencies\": {\n            \"a\": \"Dep1/a\"\n        }\n    },\n    'Dep1/a': {\n        \"id\": \"Dep1/a\",\n        \"bundleName\": \"b\",\n        \"factory\": \"factory\",\n        \"dependencies\": {\n            \"c\": \"c\"\n        }\n    }\n}\n```\n\n### Instance reuse\n\nInstance reusing is useful, when dependencies are changing, but the instance should stay the same. For example Layouts can accept different views as dependencies, but should always stay the same to prevent rerendering.\nWith instance reusing di will use created instance of reused Module if it exists and will update only dependencies.\n\n```js\ndependencies: {\n    basePage: ['BasePage', {\n        header: 'BaseHeader'\n    }],\n\n    homePage: ['!basePage', {\n        section: 'BaseSection'\n    }],\n\n    profilePage: ['!basePage', {\n        section: 'ProfileSection'\n    }]\n}\n\n// converts to definition\n\n{\n    basePage: {\n        id: 'basePage',\n        bundleName: 'BasePage',\n        dependencies: {\n            header: 'BaseHeader'\n        }\n    },\n\n    homePage: {\n        id: 'homePage',\n        dependencies: {\n            header: 'BaseHeader',\n            section: 'BaseSection'\n        },\n        reuse: 'basePage'\n    },\n\n    profilePage: {\n        id: 'profilePage',\n        dependencies: {\n            header: 'BaseHeader',\n            section: 'ProfileSection'\n        },\n        reuse: 'basePage'\n    }\n}\n\n```\n\nDependency lifecycle\n--------------------\n\nEvery definition is created once and its instance will be used for all dependencies. Definition allows to create dependencies graph.\nIf session mechanism is used, dependency can be destroyed via garbage collector. In this case it will be created when it will be needed again.\n\nSessions\n--------\n\nSession is a mechanism to simplify dependency lifecycle. This DI container is designed to cover scenario, when application \nhas only one entry point for dependency loading. It could soundd strange, but if we place such a DI container into a router and will fetch the root dependency only in this place we can get a very pure and powerful garbage collection mechanism.\n \nLet's have look at API:\n\n```js\nimport {createContainer} from 'di.js';\n\nlet di = createContainer(...);\nlet session = di.session(); // creates new session\n\n// During `Dep1` loading instances from previous loading will be reused.\n// Loads `Dep 1`. Same signature as di()\nsession.load('Dep1'); \n\n// All not reused instances will be destroyed.\n// Closes session, runs GC. \nsession.close(); \n```\n\nWell, some syntactic example of this point:\n\n```js\nimport {createContainer, webpackResolver, then} from 'di.js';\nimport {router} from './router'; // some router\n\nlet di = createContainer({\n    resolvers: [...],\n    dependencies: {\n        home: ['BaseLayout', {\n            header: 'BaseHeader',\n            content: 'HomeContent'\n        }],\n\n        profile: ['!home', {\n            header: 'BaseHeader',\n            content: 'ProfileContent'\n        }],\n        \n        BaseHeader: {\n            model: 'UserAuth'\n        }\n    }\n});\n\nrouter.on(routeName => {\n    let session = di.session();\n\n    then(session(routeName), (layout) => {\n        // Backbone.View for example\n        layout.render();\n        \n        layout.$el.appendTo('body');\n        \n        session.close(); // run GC\n    });\n});\n```\n\nWhen route changes it fires an event and new session is opened. We load all dependencies and reuse existent. When all dependencies are loaded and layouts are rendered we close the session and thus destroy all instances, which were not used in the new session.\nTake for example there was `home` route initially on the page. It depends on `BaseLayout`, `BaseHeader`, `HomeContent` and `UserAuth`. Once route becomes `profile` route, we load all of its dependencies and by closing session we destroy outdated dependencies. Hereby we load `ProfileContent` Module and pass it to the existing `BaseLayout` Module and also destroy `HomeContent` Module since nobody requires it in the new session. Notice, that `BaseLayout` Module remains the same through sessions since it is reused by `profile` route.\n\nAdditionally you can pass `default` dependencies to the session, which will be passed into every instance, which would be created or updated via the DI container.\n\n```\nlet session = di.session({someKey: 'some value'});\nlet user = session('User'); // User module will be instantiated with {someKey: 'some value'} as dependencies\n```\n\nWhen instances are created for the first time or they were created in the previous session and someone requires them in the new session then update method will be invoked with new dependencies of the module.\nIt call for each instances once in session.\n\nSerialization\n-------------\n\nYou could serialize current DI state to restore it later. There is no magic: if you want to use this feature\nyou need to implement `serialize` instance method and `restore` static module method.\n\n```js\nlet data = di.serialize();\n\nlet newDi = createContainer(...);\nnewDi.restore(data);\n```\n\nModule can look like this:\n\n```js\nexport class User {\n\n    constructor(data) {\n        this.data = data;\n    }\n\n    serialize() {\n        return this.data; // Promise are supported too\n    }\n    \n    static restore(data) {\n        return new this(data);\n    }\n\n}\n```\n","maintainers":[{"name":"ftdebugger","email":"evgeny@shpilevsky.com"}],"time":{"modified":"2022-06-15T03:07:20.689Z","created":"2015-08-31T14:04:31.925Z","1.0.0":"2015-08-31T14:04:31.925Z","1.0.1":"2015-09-03T09:27:01.981Z","1.1.0":"2015-11-05T15:31:34.202Z","1.1.1":"2015-11-26T21:01:36.417Z","1.2.0":"2015-11-27T11:22:16.516Z","1.3.0":"2015-12-03T17:38:51.131Z","1.3.1":"2015-12-05T15:55:13.684Z","1.3.2":"2015-12-05T16:08:33.259Z","1.3.3":"2015-12-10T11:46:38.349Z","1.4.0":"2015-12-28T16:58:24.806Z","1.5.0":"2016-01-12T11:55:20.916Z","1.6.0":"2016-04-20T22:45:54.995Z","1.7.0":"2016-05-29T21:12:07.708Z","1.7.1":"2016-06-03T15:40:23.647Z","1.7.2":"2016-06-08T16:14:59.601Z","1.7.3":"2016-06-22T15:30:48.772Z","1.8.0":"2016-07-05T21:59:43.760Z","1.8.1":"2016-07-06T20:30:33.442Z","1.9.0":"2016-07-12T21:57:33.497Z","1.9.1":"2016-08-14T10:54:07.904Z","1.10.0":"2016-09-04T09:45:25.927Z","1.11.0":"2016-09-20T15:01:15.288Z","1.12.0":"2016-09-26T21:09:20.053Z","1.13.0":"2017-01-02T18:46:00.674Z","1.14.0":"2017-01-30T13:11:23.840Z","1.15.0":"2017-02-17T10:30:22.457Z","1.15.1":"2017-02-17T10:56:34.980Z","1.16.0":"2017-03-14T14:43:14.339Z","1.16.1":"2017-04-24T17:10:46.148Z"},"license":"ISC","readmeFilename":"Readme.md"}