Socket
Socket
Sign inDemoInstall

annoinject

Package Overview
Dependencies
3
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    annoinject

Injects dependencies to JavaScript modules and packages


Version published
Weekly downloads
4
increased by100%
Maintainers
1
Install size
48.0 kB
Created
Weekly downloads
 

Readme

Source

build status

inject - Injects dependencies to JavaScript modules and packages

Default require provided by Node.js isn't that flexible. Let's say you want to test a module and inject a mock database driver and configuration there. What to do? One alternative is to use a dependency injection pattern like this:

main.js:

const db = require("./db");
const config = require("./config");
const api = require("./api")({ db, config });

api.js:

module.exports = imports => () => {
    // do something with imports.db, imports.config
    // ...
};

Module Injection

annoinject provides a set of utilities that build upon this idea and make sure all imports needed actually have been injected. In inject's case we would write the following:

api.js:

module.exports = require("annoinject")(["db", "config"], imports => {
    // do something with imports.db, imports.config
});

Yes, there's more to write but at the same time it is more explicit. In addition annoinject performs the extra check I mentioned about. It will give you a nice error in case some dependency hasn't been satisfied.

Package Injection

There are time when you would you like to inject the same dependencies for the whole package. You could for instance want to use the same configuration for each module included. In this case we can use a package level injector like this:

api/main.js:

const config = {
    apikey: 'foobar'
};
const api = require("./api")({ config });

// then we can do
api.countries();

api/index.js:

module.exports = require("annoinject")("config");

api/countries.js:

module.exports = imports => {
    // do something with imports.config now

    return () => console.log('get countries now');
};

Just like the module injector, the package injector will make sure all required modules will get injected and give an Error in case they are not.

License

annoinject is available under MIT. See LICENSE for more details.

Keywords

FAQs

Last updated on 17 Mar 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc