steal-tools
Version:
Futuristic build tools for ES6 Module applications.
31 lines (23 loc) • 813 B
JavaScript
var _ = require("lodash");
var splitIntoWithOrWithout = function(node, moduleNames, withModuleNames, withoutModuleNames){
// TODO: this can be done faster probably.
var bundledModuleNames = _.intersection(node.bundles, moduleNames);
if( bundledModuleNames.length ){
node.bundles = bundledModuleNames;
withModuleNames[node.load.name] = node;
} else {
node.bundles = _.difference(node.bundles, moduleNames);
withoutModuleNames[node.load.name] = node;
}
};
module.exports = function(graph, moduleNames){
var graphWithModuleNames = {},
graphWithoutModuleNames = {};
for(var moduleName in graph){
splitIntoWithOrWithout(graph[moduleName], moduleNames, graphWithModuleNames, graphWithoutModuleNames);
}
return {
"with": graphWithModuleNames,
"without": graphWithoutModuleNames
};
};