UNPKG

1.62 kBJavaScriptView Raw
1const _get = require("lodash/get");
2const matchFacade = require("./match-facade");
3
4function getFocusModules(pModules, pFilter) {
5 return pModules
6 .filter((pModule) => matchFacade.moduleMatchesFilter(pModule, pFilter))
7 .map((pModule) => ({ ...pModule, matchesFocus: true }));
8}
9
10function getCallingModules(pModules, pFilter) {
11 return pModules
12 .filter(
13 (pModule) =>
14 !matchFacade.moduleMatchesFilter(pModule, pFilter) &&
15 pModule.dependencies.some((pDependency) =>
16 matchFacade.dependencyMatchesFilter(pDependency, pFilter)
17 )
18 )
19 .map((pModule) => ({
20 ...pModule,
21 matchesFocus: false,
22 dependencies: pModule.dependencies.filter((pDependency) =>
23 matchFacade.dependencyMatchesFilter(pDependency, pFilter)
24 ),
25 }));
26}
27
28function getCalledModules(pModules, pFilter, pFocusModules) {
29 const lCalledModuleNames = new Set(
30 pFocusModules.reduce(
31 (pAll, pModule) =>
32 pAll.concat(pModule.dependencies.map(({ resolved }) => resolved)),
33 []
34 )
35 );
36
37 return pModules
38 .filter(
39 (pModule) =>
40 !matchFacade.moduleMatchesFilter(pModule, pFilter) &&
41 lCalledModuleNames.has(pModule.source)
42 )
43 .map((pModule) => ({ ...pModule, matchesFocus: false, dependencies: [] }));
44}
45
46module.exports = function addFocus(pModules, pFilter) {
47 if (_get(pFilter, "path")) {
48 const lFocusModules = getFocusModules(pModules, pFilter);
49
50 return lFocusModules
51 .concat(getCallingModules(pModules, pFilter))
52 .concat(getCalledModules(pModules, pFilter, lFocusModules));
53 }
54 return pModules;
55};