jaredhanson/electrolyte

View on GitHub
lib/sources/node_modules.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * Sources node modules as objects.
 *
 * This source allows node modules to be injected as dependencies.
 *
 * This functionality is especially useful when developing objects that perform
 * network I/O.  For example, the MySQL module can be injected by `@require`ing
 * `mysql`.  Test cases can then easily swap the `mysql` module for a mock
 * module that allows unit tests to be written without requiring database
 * access.
 *
 * Examples:
 *
 *    IoC.use(IoC.node_modules());
 *
 * @return {function}
 * @public
 */
module.exports = function() {
  
  return function(id) {
    try {
      var module = require(id);
      module['@literal'] = true;
      return module;
    } catch (ex) {
      if (ex.code == 'MODULE_NOT_FOUND') { return; }
      throw ex;
    }
  };
};