UNPKG

1.5 kBJavaScriptView Raw
1const _clone = require("lodash/clone");
2const focus = require("./add-focus");
3const matchFacade = require("./match-facade");
4
5function includeOnly(pModules, pIncludeFilter) {
6 return pIncludeFilter.path
7 ? pModules
8 .filter((pModule) =>
9 matchFacade.moduleMatchesFilter(pModule, pIncludeFilter)
10 )
11 .map((pModule) => ({
12 ...pModule,
13 dependencies: pModule.dependencies.filter((pDependency) =>
14 matchFacade.dependencyMatchesFilter(pDependency, pIncludeFilter)
15 ),
16 }))
17 : pModules;
18}
19
20function exclude(pModules, pExcludeFilter) {
21 return pExcludeFilter.path
22 ? pModules
23 .filter(
24 (pModule) => !matchFacade.moduleMatchesFilter(pModule, pExcludeFilter)
25 )
26 .map((pModule) => ({
27 ...pModule,
28 dependencies: pModule.dependencies.filter(
29 (pDependency) =>
30 !matchFacade.dependencyMatchesFilter(pDependency, pExcludeFilter)
31 ),
32 }))
33 : pModules;
34}
35
36function applyFilters(pModules, pFilters) {
37 if (pFilters) {
38 let lReturnValue = _clone(pModules);
39
40 if (pFilters.exclude) {
41 lReturnValue = exclude(lReturnValue, pFilters.exclude);
42 }
43 if (pFilters.includeOnly) {
44 lReturnValue = includeOnly(lReturnValue, pFilters.includeOnly);
45 }
46 if (pFilters.focus) {
47 lReturnValue = focus(lReturnValue, pFilters.focus);
48 }
49 return lReturnValue;
50 }
51 return pModules;
52}
53
54module.exports = { applyFilters };