steal-tools
Version:
Futuristic build tools for ES6 Module applications.
39 lines (31 loc) • 885 B
JavaScript
var omit = require("lodash/omit");
var through = require("through2");
var assign = require("lodash/assign");
var includes = require("lodash/includes");
module.exports = function() {
return through.obj(function(data, enc, done) {
try {
done(null, filterGraph(data));
} catch (err) {
done(err);
}
});
};
function isStealConditional(name) {
return includes(name, "steal-conditional/conditional");
}
function filterGraph(data) {
var graph = data.graph;
var configMain = data.loader.configMain;
var configNode = graph[configMain];
var blackList = [];
configNode.dependencies.forEach(function visit(name) {
if (!isStealConditional(name) && !includes(blackList, name)) {
blackList.push(name);
if (graph[name]) {
(graph[name].dependencies || []).forEach(visit);
}
}
});
return assign({}, omit(data, "graph"), { graph: omit(graph, blackList) });
}