2013-04-09 16:02:36 +00:00
|
|
|
/**
|
|
|
|
* Module dependencies.
|
|
|
|
*/
|
|
|
|
|
2013-04-20 00:50:48 +00:00
|
|
|
var ModuleLoader = require('asteroid-module-loader')
|
2013-04-19 21:10:59 +00:00
|
|
|
, path = require('path');
|
2013-04-09 16:02:36 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Export the middleware.
|
|
|
|
*/
|
|
|
|
|
|
|
|
module.exports = configure;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load application modules based on the current directories configuration files.
|
|
|
|
*/
|
|
|
|
|
|
|
|
function configure(root) {
|
2013-04-19 21:10:59 +00:00
|
|
|
var moduleLoader = configure.createModuleLoader(root);
|
2013-04-09 16:02:36 +00:00
|
|
|
|
2013-04-10 17:55:13 +00:00
|
|
|
process.__asteroidCache = {};
|
|
|
|
|
2013-04-09 16:02:36 +00:00
|
|
|
return function configureMiddleware(req, res, next) {
|
|
|
|
req.modules = res.modules = moduleLoader;
|
|
|
|
moduleLoader.load(next);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-04-19 21:10:59 +00:00
|
|
|
configure.createModuleLoader = function (root) {
|
|
|
|
var options = {
|
|
|
|
alias: BUNDLED_MODULE_ALIAS
|
|
|
|
};
|
|
|
|
|
|
|
|
return ModuleLoader.create(root || '.', options);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Turn asteroid bundled deps into aliases for the module loader
|
|
|
|
*/
|
|
|
|
|
|
|
|
var BUNDLED_MODULE_ALIAS = require('../../package.json')
|
|
|
|
.bundleDependencies
|
|
|
|
.reduce(function (prev, cur) {
|
|
|
|
prev[cur] = path.join('asteroid', 'node_modules', cur);
|
|
|
|
return prev;
|
|
|
|
}, {});
|
|
|
|
|