1 | var omit = require("lodash/omit");
|
2 | var through = require("through2");
|
3 | var assign = require("lodash/assign");
|
4 | var includes = require("lodash/includes");
|
5 |
|
6 | module.exports = function() {
|
7 | return through.obj(function(data, enc, done) {
|
8 | try {
|
9 | done(null, filterGraph(data));
|
10 | } catch (err) {
|
11 | done(err);
|
12 | }
|
13 | });
|
14 | };
|
15 |
|
16 | function isStealConditional(name) {
|
17 | return includes(name, "steal-conditional/conditional");
|
18 | }
|
19 |
|
20 | function filterGraph(data) {
|
21 | var graph = data.graph;
|
22 |
|
23 | var configMain = data.loader.configMain;
|
24 | var configNode = graph[configMain];
|
25 | var blackList = [];
|
26 |
|
27 | configNode.dependencies.forEach(function visit(name) {
|
28 | if (!isStealConditional(name) && !includes(blackList, name)) {
|
29 | blackList.push(name);
|
30 |
|
31 | if (graph[name]) {
|
32 | (graph[name].dependencies || []).forEach(visit);
|
33 | }
|
34 | }
|
35 | });
|
36 |
|
37 | return assign({}, omit(data, "graph"), { graph: omit(graph, blackList) });
|
38 | }
|