-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgetGraphEntries.js
37 lines (35 loc) · 990 Bytes
/
getGraphEntries.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'use strict';
const some = require('array.prototype.some');
const toSorted = require('array.prototype.tosorted');
const getTree = require('get-dep-tree');
module.exports = async function getGraphEntries({
mode,
dev,
peer,
production,
selectedEngines,
logger = void undefined,
path = void undefined,
}) {
const tree = await getTree(mode, { dev, logger, path, peer, production });
const nodesWithEngines = await tree.querySelectorAll(':attr(engines, [node])');
return toSorted(
nodesWithEngines.flatMap(({
name,
package: {
_inBundle,
engines,
},
dev: nodeDev = false,
peer: nodePeer = false,
}) => (
!_inBundle
&& engines
&& ((dev || !nodeDev) && (production || nodeDev) && (peer || !nodePeer)) // TODO: figure out why get-dep-tree isn't pruning properly
&& some(selectedEngines, (engine) => engines[engine] !== '*')
? [[name, engines]]
: []
)),
([a, aE], [b, bE]) => a.localeCompare(b) || aE.node.localeCompare(bE.node),
);
};