dependency-cruiser 16.4.0 → 16.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/package.json +4 -4
  2. package/src/cache/cache.mjs +0 -2
  3. package/src/cache/find-content-changes.mjs +0 -2
  4. package/src/cache/metadata-strategy.mjs +0 -1
  5. package/src/cli/init-config/find-extensions.mjs +0 -3
  6. package/src/enrich/add-validations.mjs +3 -3
  7. package/src/enrich/derive/folders/index.mjs +2 -2
  8. package/src/enrich/derive/reachable.mjs +6 -3
  9. package/src/enrich/summarize/index.mjs +2 -2
  10. package/src/enrich/summarize/summarize-modules.mjs +2 -2
  11. package/src/extract/acorn/extract.mjs +3 -3
  12. package/src/extract/acorn/parse.mjs +0 -6
  13. package/src/extract/clear-caches.mjs +6 -6
  14. package/src/extract/resolve/module-classifiers.mjs +8 -1
  15. package/src/extract/swc/extract.mjs +3 -5
  16. package/src/extract/swc/parse.mjs +14 -22
  17. package/src/extract/tsc/extract.mjs +4 -4
  18. package/src/extract/tsc/parse.mjs +14 -22
  19. package/src/graph-utl/compare.mjs +10 -14
  20. package/src/graph-utl/consolidate-module-dependencies.mjs +2 -2
  21. package/src/graph-utl/consolidate-modules.mjs +2 -2
  22. package/src/main/options/assert-validity.mjs +2 -2
  23. package/src/main/report-wrap.mjs +4 -4
  24. package/src/meta.cjs +1 -1
  25. package/src/report/dot/index.mjs +6 -12
  26. package/src/report/dot/module-utl.mjs +5 -35
  27. package/src/report/dot/prepare-custom-level.mjs +8 -7
  28. package/src/report/dot/prepare-flat-level.mjs +8 -7
  29. package/src/report/dot/prepare-folder-level.mjs +9 -7
  30. package/src/report/dot/theming.mjs +20 -6
  31. package/src/report/error-html/utl.mjs +2 -11
  32. package/src/report/index.mjs +2 -7
  33. package/src/report/markdown.mjs +5 -3
  34. package/src/utl/regex-util.mjs +2 -7
  35. package/src/validate/index.mjs +14 -17
  36. package/src/validate/match-dependency-rule.mjs +34 -26
  37. package/src/validate/match-folder-dependency-rule.mjs +3 -3
  38. package/src/validate/match-module-rule-helpers.mjs +132 -0
  39. package/src/validate/match-module-rule.mjs +6 -130
  40. package/src/validate/matchers.mjs +22 -38
  41. package/src/validate/rule-classifiers.mjs +0 -2
  42. package/src/validate/violates-required-rule.mjs +8 -4
@@ -19,7 +19,7 @@ const DEPENDENCY_TYPE_DUPLICATES_THAT_MATTER = new Set([
19
19
  "npm-unknown",
20
20
  ]);
21
21
 
22
- function propertyEquals(pRule, pDependency, pProperty) {
22
+ export function propertyEquals(pRule, pDependency, pProperty) {
23
23
  // The properties can be booleans, so we can't use !pRule.to[pProperty]
24
24
  if (Object.hasOwn(pRule.to, pProperty)) {
25
25
  return pDependency[pProperty] === pRule.to[pProperty];
@@ -27,7 +27,7 @@ function propertyEquals(pRule, pDependency, pProperty) {
27
27
  return true;
28
28
  }
29
29
 
30
- function propertyMatches(pRule, pDependency, pRuleProperty, pProperty) {
30
+ export function propertyMatches(pRule, pDependency, pRuleProperty, pProperty) {
31
31
  return Boolean(
32
32
  !pRule.to[pRuleProperty] ||
33
33
  (pDependency[pProperty] &&
@@ -35,7 +35,12 @@ function propertyMatches(pRule, pDependency, pRuleProperty, pProperty) {
35
35
  );
36
36
  }
37
37
 
38
- function propertyMatchesNot(pRule, pDependency, pRuleProperty, pProperty) {
38
+ export function propertyMatchesNot(
39
+ pRule,
40
+ pDependency,
41
+ pRuleProperty,
42
+ pProperty,
43
+ ) {
39
44
  return Boolean(
40
45
  !pRule.to[pRuleProperty] ||
41
46
  (pDependency[pProperty] &&
@@ -43,21 +48,21 @@ function propertyMatchesNot(pRule, pDependency, pRuleProperty, pProperty) {
43
48
  );
44
49
  }
45
50
 
46
- function fromPath(pRule, pModule) {
51
+ export function matchesFromPath(pRule, pModule) {
47
52
  return Boolean(!pRule.from.path || pModule.source.match(pRule.from.path));
48
53
  }
49
54
 
50
- function fromPathNot(pRule, pModule) {
55
+ export function matchesFromPathNot(pRule, pModule) {
51
56
  return Boolean(
52
57
  !pRule.from.pathNot || !pModule.source.match(pRule.from.pathNot),
53
58
  );
54
59
  }
55
60
 
56
- function modulePath(pRule, pModule) {
61
+ export function matchesModulePath(pRule, pModule) {
57
62
  return Boolean(!pRule.module.path || pModule.source.match(pRule.module.path));
58
63
  }
59
64
 
60
- function modulePathNot(pRule, pModule) {
65
+ export function matchesModulePathNot(pRule, pModule) {
61
66
  return Boolean(
62
67
  !pRule.module.pathNot || !pModule.source.match(pRule.module.pathNot),
63
68
  );
@@ -70,11 +75,11 @@ function _toPath(pRule, pString, pGroups = []) {
70
75
  );
71
76
  }
72
77
 
73
- function toPath(pRule, pDependency, pGroups) {
78
+ export function matchesToPath(pRule, pDependency, pGroups) {
74
79
  return _toPath(pRule, pDependency.resolved, pGroups);
75
80
  }
76
81
 
77
- function toModulePath(pRule, pModule, pGroups) {
82
+ export function matchToModulePath(pRule, pModule, pGroups) {
78
83
  return _toPath(pRule, pModule.source, pGroups);
79
84
  }
80
85
 
@@ -85,22 +90,22 @@ function _toPathNot(pRule, pString, pGroups = []) {
85
90
  );
86
91
  }
87
92
 
88
- function toPathNot(pRule, pDependency, pGroups) {
93
+ export function matchesToPathNot(pRule, pDependency, pGroups) {
89
94
  return _toPathNot(pRule, pDependency.resolved, pGroups);
90
95
  }
91
96
 
92
- function toModulePathNot(pRule, pModule, pGroups) {
97
+ export function matchToModulePathNot(pRule, pModule, pGroups) {
93
98
  return _toPathNot(pRule, pModule.source, pGroups);
94
99
  }
95
100
 
96
- function toDependencyTypes(pRule, pDependency) {
101
+ export function matchesToDependencyTypes(pRule, pDependency) {
97
102
  return Boolean(
98
103
  !pRule.to.dependencyTypes ||
99
104
  intersects(pDependency.dependencyTypes, pRule.to.dependencyTypes),
100
105
  );
101
106
  }
102
107
 
103
- function toDependencyTypesNot(pRule, pDependency) {
108
+ export function matchesToDependencyTypesNot(pRule, pDependency) {
104
109
  return Boolean(
105
110
  !pRule.to.dependencyTypesNot ||
106
111
  !intersects(pDependency.dependencyTypes, pRule.to.dependencyTypesNot),
@@ -108,7 +113,7 @@ function toDependencyTypesNot(pRule, pDependency) {
108
113
  }
109
114
 
110
115
  // eslint-disable-next-line complexity
111
- function toVia(pRule, pDependency, pGroups) {
116
+ export function matchesToVia(pRule, pDependency, pGroups) {
112
117
  let lReturnValue = true;
113
118
  if (pRule.to.via && pDependency.cycle) {
114
119
  if (pRule.to.via.path) {
@@ -140,7 +145,7 @@ function toVia(pRule, pDependency, pGroups) {
140
145
  }
141
146
 
142
147
  // eslint-disable-next-line complexity
143
- function toViaOnly(pRule, pDependency, pGroups) {
148
+ export function matchesToViaOnly(pRule, pDependency, pGroups) {
144
149
  let lReturnValue = true;
145
150
  if (pRule.to.viaOnly && pDependency.cycle) {
146
151
  if (pRule.to.viaOnly.path) {
@@ -171,7 +176,7 @@ function toViaOnly(pRule, pDependency, pGroups) {
171
176
  return lReturnValue;
172
177
  }
173
178
 
174
- function toIsMoreUnstable(pRule, pModule, pDependency) {
179
+ export function matchesToIsMoreUnstable(pRule, pModule, pDependency) {
175
180
  if (Object.hasOwn(pRule.to, "moreUnstable")) {
176
181
  return (
177
182
  (pRule.to.moreUnstable &&
@@ -182,7 +187,7 @@ function toIsMoreUnstable(pRule, pModule, pDependency) {
182
187
  return true;
183
188
  }
184
189
 
185
- function matchesMoreThanOneDependencyType(pRule, pDependency) {
190
+ export function matchesMoreThanOneDependencyType(pRule, pDependency) {
186
191
  /**
187
192
  * this rule exists to weed out i.e. dependencies declared in both
188
193
  * dependencies and devDependencies. We, however, also use the dependencyTypes
@@ -208,24 +213,3 @@ function matchesMoreThanOneDependencyType(pRule, pDependency) {
208
213
  }
209
214
  return true;
210
215
  }
211
-
212
- export default {
213
- replaceGroupPlaceholders,
214
- propertyEquals,
215
- propertyMatches,
216
- propertyMatchesNot,
217
- fromPath,
218
- fromPathNot,
219
- toPath,
220
- toModulePath,
221
- modulePath,
222
- modulePathNot,
223
- toPathNot,
224
- toModulePathNot,
225
- toDependencyTypes,
226
- toDependencyTypesNot,
227
- toVia,
228
- toViaOnly,
229
- toIsMoreUnstable,
230
- matchesMoreThanOneDependencyType,
231
- };
@@ -20,5 +20,3 @@ export function isFolderScope(pRule) {
20
20
  // normalized away before getting here.
21
21
  return (pRule?.scope ?? "module") === "folder";
22
22
  }
23
-
24
- export default { isModuleOnlyRule, isFolderScope };
@@ -1,4 +1,8 @@
1
- import matchers from "./matchers.mjs";
1
+ import {
2
+ matchesToPath,
3
+ matchesModulePath,
4
+ matchesModulePathNot,
5
+ } from "./matchers.mjs";
2
6
  import { extractGroups } from "#utl/regex-util.mjs";
3
7
 
4
8
  /**
@@ -13,13 +17,13 @@ export default function violatesRequiredRule(pRule, pModule) {
13
17
  let lReturnValue = false;
14
18
 
15
19
  if (
16
- matchers.modulePath(pRule, pModule) &&
17
- matchers.modulePathNot(pRule, pModule)
20
+ matchesModulePath(pRule, pModule) &&
21
+ matchesModulePathNot(pRule, pModule)
18
22
  ) {
19
23
  const lGroups = extractGroups(pRule.module, pModule.source);
20
24
 
21
25
  lReturnValue = !pModule.dependencies.some((pDependency) =>
22
- matchers.toPath(pRule, pDependency, lGroups),
26
+ matchesToPath(pRule, pDependency, lGroups),
23
27
  );
24
28
  }
25
29
  return lReturnValue;