1 | const _clone = require("lodash/clone");
|
2 | const focus = require("./add-focus");
|
3 | const matchFacade = require("./match-facade");
|
4 |
|
5 | function 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 |
|
20 | function 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 |
|
36 | function 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 |
|
54 | module.exports = { applyFilters };
|