{"_id":"@benchristel/yavanna","_rev":"8-f07e23ee3b152eaf8748515750b2b173","name":"@benchristel/yavanna","description":"Tiny dependency injection framework","dist-tags":{"latest":"0.4.0"},"versions":{"0.0.0":{"name":"@benchristel/yavanna","version":"0.0.0","description":"Tiny dependency injection framework","main":"index.js","scripts":{"test":"gulp test"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","devDependencies":{"gulp":"^3.9.1","gulp-jasmine":"^2.3.0"},"gitHead":"d2c29759c9e248417e9bdbd16b29621a2aaacaa4","_id":"@benchristel/yavanna@0.0.0","_shasum":"0c7d036363f5317d0e1fb9b994b407c27e4cae68","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"benchristel","email":"the.wizard.ben@gmail.com"},"dist":{"shasum":"0c7d036363f5317d0e1fb9b994b407c27e4cae68","tarball":"https://registry.npmjs.org/@benchristel/yavanna/-/yavanna-0.0.0.tgz","integrity":"sha512-v8FwuOvrkOyEbXfsTJk4pZWj4yDc2eCSaQ+fRA9bljFXjWm9dbyppFq4GCT2yz1P6cAkNrBCHobs1Nxyykyjjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9hHRICGc6lUKlBxN3CvZ9WBKT0dDrkeKSPARiQJxibAiAECGCnNymdYpU2kH06evxdx9PhbEOTIDHASeuEkBp4xQ=="}]},"maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/yavanna-0.0.0.tgz_1464632131428_0.501049472251907"}},"0.1.0":{"name":"@benchristel/yavanna","version":"0.1.0","description":"Tiny dependency injection framework","main":"index.js","scripts":{"test":"gulp test"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","devDependencies":{"gulp":"^3.9.1","gulp-jasmine":"^2.3.0"},"gitHead":"8c1cf4b24e48c1bac3a563ff236279f04ef28d69","_id":"@benchristel/yavanna@0.1.0","_shasum":"d14a183bd6e2bccad00df9e6fdc8ccc2e0bb54a5","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"benchristel","email":"the.wizard.ben@gmail.com"},"dist":{"shasum":"d14a183bd6e2bccad00df9e6fdc8ccc2e0bb54a5","tarball":"https://registry.npmjs.org/@benchristel/yavanna/-/yavanna-0.1.0.tgz","integrity":"sha512-FG/d+OL49H/wLkPAr29xCcGO10zJ+VzH+cAYIJA/9/2GyzAteMfuRaTOOSeyEVVlZKXYYiNTyM401PPMtgIcNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLkxM3O4SkrRPJX/3dOk8IkKQj82oVqSZrI7OctGtm2QIhAKGCHiWbW4fhCcw5C0Ht8ZL5f9rYLWIfaVTdR9V4o64K"}]},"maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/yavanna-0.1.0.tgz_1465450996378_0.8647629930637777"}},"0.2.0":{"name":"@benchristel/yavanna","version":"0.2.0","description":"Tiny dependency injection framework","main":"index.js","scripts":{"test":"gulp test"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","devDependencies":{"gulp":"^3.9.1","gulp-jasmine":"^2.3.0"},"gitHead":"7aaaf1d049dabf2e1e97a7d4558eac5ec38bd831","_id":"@benchristel/yavanna@0.2.0","_shasum":"77f68443b1676c977a11d18c2c5d6074005a2705","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"benchristel","email":"the.wizard.ben@gmail.com"},"dist":{"shasum":"77f68443b1676c977a11d18c2c5d6074005a2705","tarball":"https://registry.npmjs.org/@benchristel/yavanna/-/yavanna-0.2.0.tgz","integrity":"sha512-PyL+lKxXH6tldMh9Bi6LXp8e6Cd0V2xu1VWRM8nwuTP7B1tWp+uOXjmI+ErpnguIhuwOQCZQ4Tls6Ai3evVz7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgGxP+ZoiucP15uq9tKOzNOGgPZtcoQDbqhebOWtYTOQIgdau56XSR965pCwl3SgIZ+QYy4UdOwz1yyB9HRXaVH88="}]},"maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/yavanna-0.2.0.tgz_1466521285206_0.031525746919214725"}},"0.2.1":{"name":"@benchristel/yavanna","version":"0.2.1","description":"Tiny dependency injection framework","main":"index.js","scripts":{"test":"gulp test"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","devDependencies":{"gulp":"^3.9.1","gulp-jasmine":"^2.3.0"},"gitHead":"0ce8974a90b95bddc26814da5811cf9b0e0ed55e","_id":"@benchristel/yavanna@0.2.1","_shasum":"a49c0b6cc8c0262a293f3e1625f26ae421a266b0","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"benchristel","email":"the.wizard.ben@gmail.com"},"dist":{"shasum":"a49c0b6cc8c0262a293f3e1625f26ae421a266b0","tarball":"https://registry.npmjs.org/@benchristel/yavanna/-/yavanna-0.2.1.tgz","integrity":"sha512-BQPyX+YrkVlCs3/5ZNLdqnT2yN+rlLTBvNr1wrJVUJX/A75LBdPN98DsLFkvVvMOqrGTggi41q8cHPokUNd09w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGxHafAGO4ubjOyhC2VLcG/Cfnao0Itobt3a6kwLitUbAiAqjrhtgq7UIJiM/331ytU1X1i298Xa8IxOjku2AVNqvg=="}]},"maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/yavanna-0.2.1.tgz_1466958082642_0.2278327567037195"}},"0.3.0":{"name":"@benchristel/yavanna","version":"0.3.0","description":"Tiny dependency injection framework","main":"index.js","scripts":{"test":"gulp test"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","devDependencies":{"gulp":"^3.9.1","gulp-jasmine":"^2.3.0"},"gitHead":"4b30f2a75d88a3b6534a6ba75256ceb69bd27ffe","_id":"@benchristel/yavanna@0.3.0","_shasum":"7ac1af050e80ed4048816630d6e2efe52089fec1","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"benchristel","email":"the.wizard.ben@gmail.com"},"dist":{"shasum":"7ac1af050e80ed4048816630d6e2efe52089fec1","tarball":"https://registry.npmjs.org/@benchristel/yavanna/-/yavanna-0.3.0.tgz","integrity":"sha512-ko+QNtTXoeRl6yb1uBGjjQxd7sISMq59rrjIJkhlX8ME3CGS9xAYljgPupuHntttQIS5cxydVeS6JJLj2E9DIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvuDsYm0SOM7JbUxhne3P+/zFxZHAHswfyXYPq6rVNoAiAxaKYqQodjeqz05vKzyGY8uaj/gDpVxgvAJoYtr5j11A=="}]},"maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/yavanna-0.3.0.tgz_1470350901871_0.88349325559102"}},"0.4.0":{"name":"@benchristel/yavanna","version":"0.4.0","description":"Tiny dependency injection framework","main":"index.js","scripts":{"test":"gulp test"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","devDependencies":{"gulp":"^3.9.1","gulp-jasmine":"^2.3.0"},"gitHead":"4dc0d547b75556e2eedb5b35784ef909ed0118e2","_id":"@benchristel/yavanna@0.4.0","_shasum":"ad500991ed1424664cf39726f4051fc4d2c251fd","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"benchristel","email":"the.wizard.ben@gmail.com"},"dist":{"shasum":"ad500991ed1424664cf39726f4051fc4d2c251fd","tarball":"https://registry.npmjs.org/@benchristel/yavanna/-/yavanna-0.4.0.tgz","integrity":"sha512-YOH+lttI9oOKHPXk0UwZuSfjXtjd1PTh6w8L4pcpfEL6+MbdUoq2bFMKZaCSAbCkOBRVcDBVnEmzUyAJ833C/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICpSiFy+3Id8hZa2/ojgiq2O2TrM4cWIBOTGYU4jEaK8AiBc4dNv0pnRUYXUCJnfwwCXK/yKzyY/mELAkRypRSoPiw=="}]},"maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/yavanna-0.4.0.tgz_1470435209113_0.1704291645437479"}}},"readme":"# Yavanna\n\nA JavaScript dependency injection framework\n\n![CircleCI Build Status](https://circleci.com/gh/benchristel/yavanna.svg?style=shield&circle-token=058bb5224f0693d2f5891954ce85ce8879c88791)\n\n## What?\n\nhttps://en.wikipedia.org/wiki/Yavanna\n\n## How?\n\n### Require Yavanna and create an instance\n\n```javascript\nconst yavanna = require('@benchristel/yavanna')()\n```\n\n### Register a factory function\n\nHere, our factory is named `peaches` and requires `water` and `sunlight` as dependencies (note that the example below uses ES6 syntax).\n\n```javascript\nyavanna.provide('peaches', ({water, sunlight}) => {\n  if (water && sunlight) {\n    return 'PEACHES!'\n  } else {\n    return 'no peaches :('\n  }\n})\n\nyavanna.provide('water', () => 'delicious water')\nyavanna.provide('sunlight', () => 'glorious sunlight')\n```\n\nAnd the same thing, with old-school syntax:\n\n```javascript\nyavanna.provide('peaches', function (provided) {\n  if (provided.water && provided.sunlight) {\n    return 'PEACHES!'\n  } else {\n    return 'no peaches :('\n  }\n})\n\nyavanna.provide('water', function () { return 'delicious water' })\nyavanna.provide('sunlight', function () { return 'glorious sunlight' })\n```\n\n### Get your stuff, with dependencies injected\n\n```javascript\nyavanna.get('peaches') // returns 'PEACHES!'\n```\n\n### Override the dependencies with test doubles\n\n```javascript\ntestInjector = yavanna.withOverrides({water: false, sunlight: false})\n\ntestInjector.get('peaches') // returns 'no peaches :('\n```\n\n## Why?\n\nDon't use Yavanna unless you actually feel the need for dependency injection in your project. The use cases for DI in JavaScript are limited, but they do exist.\n\nFor example, consider the problem of testing a React component that renders a video player component within itself. If you simply render the component as-is, the actual video player will load, potentially causing unwanted side-effects that could break your test. Stubbing won't work here because your test has no control over the lifecycle of the component instances and therefore no way to stub methods on them. Instead, you need to inject a test double for the video player component class.\n","maintainers":[{"name":"benchristel","email":"the.wizard.ben@gmail.com"}],"time":{"modified":"2022-06-12T15:10:20.981Z","created":"2016-05-30T18:15:31.986Z","0.0.0":"2016-05-30T18:15:31.986Z","0.1.0":"2016-06-09T05:43:16.919Z","0.2.0":"2016-06-21T15:01:28.375Z","0.2.1":"2016-06-26T16:21:26.355Z","0.3.0":"2016-08-04T22:48:22.113Z","0.4.0":"2016-08-05T22:13:29.345Z"},"keywords":["dependency","injection","di","browser","framework"],"author":{"name":"Ben Christel"},"license":"MIT","readmeFilename":"README.md"}