lib/sources/node_modules.js
/**
* 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;
}
};
};