UNPKG

3.61 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.buildTree = undefined;
7
8var _asyncToGenerator2;
9
10function _load_asyncToGenerator() {
11 return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator'));
12}
13
14let buildTree = exports.buildTree = (() => {
15 var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (resolver, linker, patterns, ignoreHoisted) {
16 const treesByKey = {};
17 const trees = [];
18 const flatTree = yield linker.getFlatHoistedTree(patterns);
19
20 // If using workspaces, filter out the virtual manifest
21 const workspaceLayout = resolver.workspaceLayout;
22
23 const hoisted = workspaceLayout && workspaceLayout.virtualManifestName ? flatTree.filter(function ([key]) {
24 return key.indexOf(workspaceLayout.virtualManifestName) === -1;
25 }) : flatTree;
26
27 const hoistedByKey = {};
28 for (var _iterator = hoisted, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
29 var _ref3;
30
31 if (_isArray) {
32 if (_i >= _iterator.length) break;
33 _ref3 = _iterator[_i++];
34 } else {
35 _i = _iterator.next();
36 if (_i.done) break;
37 _ref3 = _i.value;
38 }
39
40 const _ref2 = _ref3;
41 const key = _ref2[0];
42 const info = _ref2[1];
43
44 hoistedByKey[key] = info;
45 }
46
47 // build initial trees
48 for (var _iterator2 = hoisted, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
49 var _ref5;
50
51 if (_isArray2) {
52 if (_i2 >= _iterator2.length) break;
53 _ref5 = _iterator2[_i2++];
54 } else {
55 _i2 = _iterator2.next();
56 if (_i2.done) break;
57 _ref5 = _i2.value;
58 }
59
60 const _ref4 = _ref5;
61 const info = _ref4[1];
62
63 const ref = info.pkg._reference;
64 // const parent = getParent(info.key, treesByKey);
65 const children = [];
66 // let depth = 0;
67 invariant(ref, 'expected reference');
68
69 // check parent to obtain next depth
70 // if (parent && parent.depth > 0) {
71 // depth = parent.depth + 1;
72 // } else {
73 // depth = 0;
74 // }
75
76 treesByKey[info.key] = {
77 name: info.pkg.name,
78 version: info.pkg.version,
79 children,
80 manifest: info
81 };
82 }
83
84 // add children
85 for (var _iterator3 = hoisted, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
86 var _ref7;
87
88 if (_isArray3) {
89 if (_i3 >= _iterator3.length) break;
90 _ref7 = _iterator3[_i3++];
91 } else {
92 _i3 = _iterator3.next();
93 if (_i3.done) break;
94 _ref7 = _i3.value;
95 }
96
97 const _ref6 = _ref7;
98 const info = _ref6[1];
99
100 const tree = treesByKey[info.key];
101 const parent = getParent(info.key, treesByKey);
102 if (!tree) {
103 continue;
104 }
105
106 if (info.key.split('#').length === 1) {
107 trees.push(tree);
108 continue;
109 }
110
111 if (parent) {
112 parent.children.push(tree);
113 }
114 }
115
116 return trees;
117 });
118
119 return function buildTree(_x, _x2, _x3, _x4) {
120 return _ref.apply(this, arguments);
121 };
122})();
123
124exports.getParent = getParent;
125
126function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
127
128const invariant = require('invariant');
129
130function getParent(key, treesByKey) {
131 const parentKey = key.split('#').slice(0, -1).join('#');
132 return treesByKey[parentKey];
133}
\No newline at end of file