dependency-cruiser 17.3.2 → 17.3.3-beta-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 (232) hide show
  1. package/bin/depcruise-baseline.mjs +43 -43
  2. package/bin/depcruise-fmt.mjs +89 -89
  3. package/bin/dependency-cruise.mjs +171 -171
  4. package/configs/plugins/3d-reporter-plugin.mjs +36 -36
  5. package/configs/plugins/stats-reporter-plugin.mjs +51 -51
  6. package/configs/recommended-strict.cjs +5 -5
  7. package/configs/recommended-warn-only.cjs +5 -5
  8. package/configs/recommended.cjs +22 -22
  9. package/configs/rules/no-circular.cjs +10 -10
  10. package/configs/rules/no-deprecated-core.cjs +10 -10
  11. package/configs/rules/no-duplicate-dependency-types.cjs +17 -17
  12. package/configs/rules/no-non-package-json.cjs +11 -11
  13. package/configs/rules/no-orphans.cjs +18 -18
  14. package/configs/rules/not-to-deprecated.cjs +10 -10
  15. package/configs/rules/not-to-unresolvable.cjs +10 -10
  16. package/package.json +170 -170
  17. package/src/cache/cache.mjs +139 -139
  18. package/src/cache/content-strategy.mjs +88 -88
  19. package/src/cache/find-content-changes.mjs +58 -58
  20. package/src/cache/helpers.mjs +52 -52
  21. package/src/cache/metadata-strategy.mjs +83 -83
  22. package/src/cache/options-compatible.mjs +56 -109
  23. package/src/cli/assert-node-environment-suitable.mjs +7 -7
  24. package/src/cli/defaults.mjs +5 -5
  25. package/src/cli/format-meta-info.mjs +22 -22
  26. package/src/cli/format.mjs +28 -28
  27. package/src/cli/index.mjs +145 -145
  28. package/src/cli/init-config/build-config.mjs +94 -94
  29. package/src/cli/init-config/environment-helpers.mjs +77 -77
  30. package/src/cli/init-config/find-extensions.mjs +27 -27
  31. package/src/cli/init-config/get-user-input.mjs +151 -151
  32. package/src/cli/init-config/index.mjs +88 -88
  33. package/src/cli/init-config/normalize-init-options.mjs +47 -47
  34. package/src/cli/init-config/utl.mjs +4 -4
  35. package/src/cli/init-config/validators.mjs +10 -10
  36. package/src/cli/init-config/write-config.mjs +21 -21
  37. package/src/cli/init-config/write-run-scripts-to-manifest.mjs +103 -107
  38. package/src/cli/listeners/cli-feedback.mjs +49 -49
  39. package/src/cli/listeners/ndjson.mjs +66 -66
  40. package/src/cli/listeners/performance-log/format-helpers.mjs +63 -63
  41. package/src/cli/listeners/performance-log/handlers.mjs +56 -56
  42. package/src/cli/listeners/performance-log/index.mjs +37 -37
  43. package/src/cli/normalize-cli-options.mjs +182 -182
  44. package/src/cli/tools/wrap-stream-in-html.mjs +37 -37
  45. package/src/cli/utl/assert-file-existence.mjs +7 -7
  46. package/src/cli/utl/io.mjs +28 -31
  47. package/src/config-utl/extract-babel-config.mjs +69 -69
  48. package/src/config-utl/extract-depcruise-config/index.mjs +54 -54
  49. package/src/config-utl/extract-depcruise-config/merge-configs.mjs +63 -63
  50. package/src/config-utl/extract-depcruise-config/read-config.mjs +9 -9
  51. package/src/config-utl/extract-depcruise-options.mjs +9 -9
  52. package/src/config-utl/extract-known-violations.mjs +49 -49
  53. package/src/config-utl/extract-ts-config.mjs +46 -48
  54. package/src/config-utl/extract-webpack-resolve-config.mjs +88 -88
  55. package/src/config-utl/make-absolute.mjs +5 -5
  56. package/src/enrich/add-validations.mjs +13 -13
  57. package/src/enrich/derive/circular.mjs +49 -49
  58. package/src/enrich/derive/dependents.mjs +27 -27
  59. package/src/enrich/derive/folders/aggregate-to-folders.mjs +104 -104
  60. package/src/enrich/derive/folders/index.mjs +19 -19
  61. package/src/enrich/derive/folders/utl.mjs +18 -18
  62. package/src/enrich/derive/metrics/get-module-metrics.mjs +27 -27
  63. package/src/enrich/derive/metrics/index.mjs +8 -8
  64. package/src/enrich/derive/module-utl.mjs +18 -18
  65. package/src/enrich/derive/orphan/index.mjs +18 -18
  66. package/src/enrich/derive/orphan/is-orphan.mjs +9 -9
  67. package/src/enrich/derive/reachable.mjs +165 -168
  68. package/src/enrich/enrich-modules.mjs +25 -25
  69. package/src/enrich/index.mjs +15 -15
  70. package/src/enrich/soften-known-violations.mjs +90 -90
  71. package/src/enrich/summarize/add-rule-set-used.mjs +13 -13
  72. package/src/enrich/summarize/get-stats.mjs +17 -17
  73. package/src/enrich/summarize/index.mjs +18 -18
  74. package/src/enrich/summarize/is-same-violation.mjs +30 -30
  75. package/src/enrich/summarize/summarize-folders.mjs +35 -35
  76. package/src/enrich/summarize/summarize-modules.mjs +97 -97
  77. package/src/enrich/summarize/summarize-options.mjs +71 -71
  78. package/src/extract/acorn/estree-helpers.mjs +66 -66
  79. package/src/extract/acorn/extract-amd-deps.mjs +63 -64
  80. package/src/extract/acorn/extract-cjs-deps.mjs +83 -83
  81. package/src/extract/acorn/extract-es6-deps.mjs +54 -54
  82. package/src/extract/acorn/extract-stats.mjs +4 -4
  83. package/src/extract/acorn/extract.mjs +28 -28
  84. package/src/extract/acorn/parse.mjs +37 -37
  85. package/src/extract/clear-caches.mjs +7 -7
  86. package/src/extract/extract-dependencies.mjs +109 -109
  87. package/src/extract/extract-stats.mjs +21 -21
  88. package/src/extract/gather-initial-sources.mjs +64 -64
  89. package/src/extract/helpers.mjs +73 -71
  90. package/src/extract/index.mjs +120 -120
  91. package/src/extract/resolve/determine-dependency-types.mjs +166 -169
  92. package/src/extract/resolve/external-module-helpers.mjs +76 -76
  93. package/src/extract/resolve/get-manifest.mjs +79 -79
  94. package/src/extract/resolve/index.mjs +175 -164
  95. package/src/extract/resolve/is-built-in.mjs +22 -24
  96. package/src/extract/resolve/merge-manifests.mjs +43 -43
  97. package/src/extract/resolve/module-classifiers.mjs +229 -229
  98. package/src/extract/resolve/resolve-amd.mjs +44 -44
  99. package/src/extract/resolve/resolve-cjs.mjs +40 -40
  100. package/src/extract/resolve/resolve-helpers.mjs +20 -20
  101. package/src/extract/resolve/resolve.mjs +26 -26
  102. package/src/extract/swc/dependency-visitor.mjs +211 -211
  103. package/src/extract/swc/extract-swc-deps.mjs +4 -4
  104. package/src/extract/swc/extract.mjs +7 -7
  105. package/src/extract/swc/parse.mjs +12 -12
  106. package/src/extract/transpile/babel-wrap.mjs +9 -9
  107. package/src/extract/transpile/coffeescript-wrap.mjs +21 -21
  108. package/src/extract/transpile/index.mjs +47 -47
  109. package/src/extract/transpile/javascript-wrap.mjs +6 -6
  110. package/src/extract/transpile/livescript-wrap.mjs +5 -5
  111. package/src/extract/transpile/meta.mjs +80 -80
  112. package/src/extract/transpile/svelte-preprocess.mjs +73 -73
  113. package/src/extract/transpile/svelte-wrap.mjs +19 -19
  114. package/src/extract/transpile/try-import-available.mjs +26 -27
  115. package/src/extract/transpile/typescript-wrap.mjs +39 -39
  116. package/src/extract/transpile/vue-template-wrap.cjs +43 -43
  117. package/src/extract/tsc/extract-stats.mjs +4 -4
  118. package/src/extract/tsc/extract-typescript-deps.mjs +429 -398
  119. package/src/extract/tsc/extract.mjs +22 -22
  120. package/src/extract/tsc/parse.mjs +21 -21
  121. package/src/graph-utl/add-focus.mjs +35 -35
  122. package/src/graph-utl/compare.mjs +24 -24
  123. package/src/graph-utl/consolidate-module-dependencies.mjs +35 -35
  124. package/src/graph-utl/consolidate-modules.mjs +33 -33
  125. package/src/graph-utl/consolidate-to-folder.mjs +13 -13
  126. package/src/graph-utl/consolidate-to-pattern.mjs +34 -34
  127. package/src/graph-utl/filter-bank.mjs +74 -69
  128. package/src/graph-utl/indexed-module-graph.mjs +227 -225
  129. package/src/graph-utl/match-facade.mjs +3 -3
  130. package/src/graph-utl/rule-set.mjs +20 -20
  131. package/src/graph-utl/strip-self-transitions.mjs +6 -6
  132. package/src/main/cruise.mjs +81 -81
  133. package/src/main/files-and-dirs/normalize.mjs +7 -7
  134. package/src/main/format.mjs +11 -14
  135. package/src/main/helpers.mjs +25 -25
  136. package/src/main/index.mjs +8 -8
  137. package/src/main/options/assert-validity.mjs +100 -100
  138. package/src/main/options/defaults.mjs +11 -11
  139. package/src/main/options/normalize.mjs +158 -160
  140. package/src/main/report-wrap.mjs +37 -37
  141. package/src/main/resolve-options/normalize.mjs +127 -128
  142. package/src/main/rule-set/assert-validity.mjs +67 -73
  143. package/src/main/rule-set/normalize.mjs +81 -79
  144. package/src/meta.cjs +15 -16
  145. package/src/report/anon/anonymize-path-element.mjs +20 -34
  146. package/src/report/anon/anonymize-path.mjs +11 -11
  147. package/src/report/anon/index.mjs +119 -119
  148. package/src/report/anon/random-string.mjs +23 -23
  149. package/src/report/azure-devops.mjs +75 -99
  150. package/src/report/baseline.mjs +9 -9
  151. package/src/report/csv.mjs +13 -13
  152. package/src/report/d2.mjs +105 -105
  153. package/src/report/dot/default-theme.mjs +152 -152
  154. package/src/report/dot/index.mjs +146 -146
  155. package/src/report/dot/module-utl.mjs +72 -72
  156. package/src/report/dot/prepare-custom-level.mjs +20 -20
  157. package/src/report/dot/prepare-flat-level.mjs +11 -11
  158. package/src/report/dot/prepare-folder-level.mjs +12 -13
  159. package/src/report/dot/theming.mjs +73 -73
  160. package/src/report/dot-webpage/dot-module.mjs +36 -36
  161. package/src/report/dot-webpage/svg-in-html-snippets/script.cjs +208 -210
  162. package/src/report/dot-webpage/svg-in-html-snippets/style.css +51 -51
  163. package/src/report/dot-webpage/wrap-in-html.mjs +7 -7
  164. package/src/report/error-html/index.mjs +49 -49
  165. package/src/report/error-html/utl.mjs +99 -99
  166. package/src/report/error-long.mjs +1 -1
  167. package/src/report/error.mjs +93 -93
  168. package/src/report/html/index.mjs +48 -48
  169. package/src/report/identity.mjs +4 -4
  170. package/src/report/index.mjs +33 -33
  171. package/src/report/json.mjs +4 -4
  172. package/src/report/markdown.mjs +120 -120
  173. package/src/report/mermaid.mjs +111 -111
  174. package/src/report/metrics.mjs +185 -185
  175. package/src/report/null.mjs +4 -4
  176. package/src/report/plugins.mjs +41 -41
  177. package/src/report/teamcity.mjs +150 -150
  178. package/src/report/text.mjs +42 -42
  179. package/src/report/utl/dependency-to-incidence-transformer.mjs +32 -32
  180. package/src/report/utl/index.mjs +53 -53
  181. package/src/schema/configuration.validate.mjs +1 -0
  182. package/src/schema/cruise-result.validate.mjs +1 -0
  183. package/src/schema/utl.mjs +6 -0
  184. package/src/utl/array-util.mjs +25 -25
  185. package/src/utl/bus.mjs +12 -12
  186. package/src/utl/extract-root-module-name.cjs +8 -8
  187. package/src/utl/find-all-files.mjs +54 -54
  188. package/src/utl/get-extension.mjs +2 -2
  189. package/src/utl/object-util.mjs +21 -22
  190. package/src/utl/path-to-posix.mjs +5 -5
  191. package/src/utl/regex-util.mjs +20 -20
  192. package/src/utl/try-import.mjs +42 -41
  193. package/src/utl/try-require.cjs +23 -23
  194. package/src/utl/wrap-and-indent.mjs +33 -33
  195. package/src/validate/index.mjs +65 -65
  196. package/src/validate/match-dependency-rule.mjs +47 -47
  197. package/src/validate/match-folder-dependency-rule.mjs +27 -27
  198. package/src/validate/match-module-rule-helpers.mjs +76 -76
  199. package/src/validate/match-module-rule.mjs +12 -12
  200. package/src/validate/matchers.mjs +162 -162
  201. package/src/validate/rule-classifiers.mjs +9 -9
  202. package/src/validate/violates-required-rule.mjs +23 -23
  203. package/types/cache-options.d.mts +27 -27
  204. package/types/config-utl/extract-babel-config.d.mts +1 -1
  205. package/types/config-utl/extract-depcruise-config.d.mts +3 -3
  206. package/types/config-utl/extract-depcruise-options.d.mts +1 -1
  207. package/types/config-utl/extract-ts-config.d.mts +1 -1
  208. package/types/config-utl/extract-webpack-resolve-config.d.mts +3 -3
  209. package/types/configuration.d.mts +10 -10
  210. package/types/cruise-result.d.mts +414 -414
  211. package/types/dependency-cruiser.d.mts +52 -52
  212. package/types/filter-types.d.mts +45 -45
  213. package/types/options.d.mts +430 -430
  214. package/types/plugins/3d-reporter-plugin.d.mts +9 -9
  215. package/types/plugins/mermaid-reporter-plugin.d.mts +10 -10
  216. package/types/plugins/stats-reporter-plugin.d.mts +9 -9
  217. package/types/reporter-options.d.mts +196 -196
  218. package/types/resolve-options.d.mts +23 -23
  219. package/types/restrictions.d.mts +174 -174
  220. package/types/rule-set.d.mts +132 -132
  221. package/types/rule-summary.d.mts +14 -14
  222. package/types/shared-types.d.mts +89 -89
  223. package/types/strict-filter-types.d.mts +52 -52
  224. package/types/strict-options.d.mts +34 -34
  225. package/types/strict-restrictions.d.mts +25 -25
  226. package/types/strict-rule-set.d.mts +36 -36
  227. package/types/violations.d.mts +40 -40
  228. package/src/schema/README.md +0 -5
  229. package/src/schema/baseline-violations.schema.mjs +0 -1
  230. package/src/schema/configuration.schema.mjs +0 -1
  231. package/src/schema/cruise-result.schema.mjs +0 -1
  232. package/types/README.md +0 -1
@@ -6,38 +6,38 @@ const UPPERCASE = 2;
6
6
  const NOTHING_SPECIAL = 3;
7
7
 
8
8
  function isSeparator(pChar) {
9
- const lSeparatorsRe = /[-_.]/;
9
+ const lSeparatorsRe = /[-_.]/;
10
10
 
11
- return lSeparatorsRe.test(pChar);
11
+ return lSeparatorsRe.test(pChar);
12
12
  }
13
13
 
14
14
  function isUpperCase(pChar) {
15
- return pChar.toUpperCase() === pChar;
15
+ return pChar.toUpperCase() === pChar;
16
16
  }
17
17
 
18
18
  function classifyChar(pChar) {
19
- if (/\d/.test(pChar)) return NUMBER;
20
- if (isSeparator(pChar)) return SEPARATOR;
21
- if (isUpperCase(pChar)) return UPPERCASE;
22
- return NOTHING_SPECIAL;
19
+ if (/\d/.test(pChar)) return NUMBER;
20
+ if (isSeparator(pChar)) return SEPARATOR;
21
+ if (isUpperCase(pChar)) return UPPERCASE;
22
+ return NOTHING_SPECIAL;
23
23
  }
24
24
 
25
25
  function getRandomChar(pChar) {
26
- const lLowerCaseChars = "abcdefghijklmnopqrstuvwxyz";
27
- const lMaxDecimalChar = 9;
28
-
29
- switch (classifyChar(pChar)) {
30
- case SEPARATOR:
31
- return pChar;
32
- case NUMBER:
33
- return randomInt(0, lMaxDecimalChar);
34
- case UPPERCASE:
35
- return lLowerCaseChars[
36
- randomInt(0, lLowerCaseChars.length - 1)
37
- ].toUpperCase();
38
- default:
39
- return lLowerCaseChars[randomInt(0, lLowerCaseChars.length - 1)];
40
- }
26
+ const lLowerCaseChars = "abcdefghijklmnopqrstuvwxyz";
27
+ const lMaxDecimalChar = 9;
28
+
29
+ switch (classifyChar(pChar)) {
30
+ case SEPARATOR:
31
+ return pChar;
32
+ case NUMBER:
33
+ return randomInt(0, lMaxDecimalChar);
34
+ case UPPERCASE:
35
+ return lLowerCaseChars[
36
+ randomInt(0, lLowerCaseChars.length - 1)
37
+ ].toUpperCase();
38
+ default:
39
+ return lLowerCaseChars[randomInt(0, lLowerCaseChars.length - 1)];
40
+ }
41
41
  }
42
42
 
43
43
  /**
@@ -54,5 +54,5 @@ function getRandomChar(pChar) {
54
54
  * @return {string} - a random string with above specs
55
55
  */
56
56
  export default function getRandomString(pString) {
57
- return Array.from(pString).map(getRandomChar).join("");
57
+ return Array.from(pString).map(getRandomChar).join("");
58
58
  }
@@ -1,16 +1,15 @@
1
1
  import { EOL } from "node:os";
2
2
  import {
3
- formatPercentage,
4
- formatViolation as _formatViolation,
3
+ formatPercentage,
4
+ formatViolation as _formatViolation,
5
5
  } from "./utl/index.mjs";
6
6
 
7
7
  const SEVERITY2VSO_TYPE = new Map([
8
- // "error" | "warn" | "info" | "ignore"
9
- ["error", "error"],
10
- ["warn", "warning"],
11
- // azure devops doesn't seem to know 'info'. We still want to
12
- // show them, though, hence:
13
- ["info", "warning"],
8
+ ["error", "error"],
9
+ ["warn", "warning"],
10
+ // azure devops doesn't seem to know 'info'. We still want to
11
+ // show them, though, hence:
12
+ ["info", "warning"],
14
13
  ]);
15
14
 
16
15
  /**
@@ -18,7 +17,7 @@ const SEVERITY2VSO_TYPE = new Map([
18
17
  * @returns {string}
19
18
  */
20
19
  function formatSeverity(pSeverity) {
21
- return SEVERITY2VSO_TYPE.get(pSeverity) ?? "warning";
20
+ return SEVERITY2VSO_TYPE.get(pSeverity) ?? "warning";
22
21
  }
23
22
 
24
23
  /**
@@ -26,7 +25,7 @@ function formatSeverity(pSeverity) {
26
25
  * @returns {string}
27
26
  */
28
27
  function formatModuleViolation(pViolation) {
29
- return pViolation.from;
28
+ return pViolation.from;
30
29
  }
31
30
 
32
31
  /**
@@ -34,7 +33,7 @@ function formatModuleViolation(pViolation) {
34
33
  * @returns {string}
35
34
  */
36
35
  function formatDependencyViolation(pViolation) {
37
- return `${pViolation.from} -> ${pViolation.to}`;
36
+ return `${pViolation.from} -> ${pViolation.to}`;
38
37
  }
39
38
 
40
39
  /**
@@ -42,9 +41,9 @@ function formatDependencyViolation(pViolation) {
42
41
  * @returns {string}
43
42
  */
44
43
  function formatCycleViolation(pViolation) {
45
- return `${pViolation.from} -> ${pViolation.cycle
46
- .map(({ name }) => name)
47
- .join(" -> ")}`;
44
+ return `${pViolation.from} -> ${pViolation.cycle
45
+ .map(({ name }) => name)
46
+ .join(" -> ")}`;
48
47
  }
49
48
 
50
49
  /**
@@ -52,9 +51,9 @@ function formatCycleViolation(pViolation) {
52
51
  * @returns {string}
53
52
  */
54
53
  function formatReachabilityViolation(pViolation) {
55
- return `${pViolation.from} -> ${pViolation.to} (via ${pViolation.via
56
- .map(({ name }) => name)
57
- .join(" -> ")})`;
54
+ return `${pViolation.from} -> ${pViolation.to} (via ${pViolation.via
55
+ .map(({ name }) => name)
56
+ .join(" -> ")})`;
58
57
  }
59
58
 
60
59
  /**
@@ -62,11 +61,11 @@ function formatReachabilityViolation(pViolation) {
62
61
  * @returns {string}
63
62
  */
64
63
  function formatInstabilityViolation(pViolation) {
65
- return `${pViolation.from} -> ${
66
- pViolation.to
67
- } (instability: ${formatPercentage(
68
- pViolation.metrics.from.instability,
69
- )} -> ${formatPercentage(pViolation.metrics.to.instability)})`;
64
+ return `${pViolation.from} -> ${
65
+ pViolation.to
66
+ } (instability: ${formatPercentage(
67
+ pViolation.metrics.from.instability,
68
+ )} -> ${formatPercentage(pViolation.metrics.to.instability)})`;
70
69
  }
71
70
 
72
71
  /**
@@ -74,23 +73,23 @@ function formatInstabilityViolation(pViolation) {
74
73
  * @returns {string}
75
74
  */
76
75
  function formatViolation(pViolation) {
77
- const lViolationType2Formatter = {
78
- module: formatModuleViolation,
79
- dependency: formatDependencyViolation,
80
- cycle: formatCycleViolation,
81
- reachability: formatReachabilityViolation,
82
- instability: formatInstabilityViolation,
83
- };
84
- let lFormattedViolators = _formatViolation(
85
- pViolation,
86
- lViolationType2Formatter,
87
- formatDependencyViolation,
88
- );
89
- return `##vso[task.logissue type=${formatSeverity(
90
- pViolation.rule.severity,
91
- )};sourcepath=${pViolation.from};code=${
92
- pViolation.rule.name
93
- };]${lFormattedViolators}${EOL}`;
76
+ const lViolationType2Formatter = {
77
+ module: formatModuleViolation,
78
+ dependency: formatDependencyViolation,
79
+ cycle: formatCycleViolation,
80
+ reachability: formatReachabilityViolation,
81
+ instability: formatInstabilityViolation,
82
+ };
83
+ let lFormattedViolators = _formatViolation(
84
+ pViolation,
85
+ lViolationType2Formatter,
86
+ formatDependencyViolation,
87
+ );
88
+ return `##vso[task.logissue type=${formatSeverity(
89
+ pViolation.rule.severity,
90
+ )};sourcepath=${pViolation.from};code=${
91
+ pViolation.rule.name
92
+ };]${lFormattedViolators}${EOL}`;
94
93
  }
95
94
 
96
95
  /**
@@ -99,7 +98,7 @@ function formatViolation(pViolation) {
99
98
  * @returns {string}
100
99
  */
101
100
  function formatResultStatus(pNumberOfErrors) {
102
- return pNumberOfErrors > 0 ? "Failed" : "Succeeded";
101
+ return pNumberOfErrors > 0 ? "Failed" : "Succeeded";
103
102
  }
104
103
 
105
104
  /**
@@ -107,16 +106,16 @@ function formatResultStatus(pNumberOfErrors) {
107
106
  * @returns {string}
108
107
  */
109
108
  function formatMeta(pMeta) {
110
- const lWarningCount = pMeta.warn + pMeta.info;
111
- const lError = `${pMeta.error} error`;
112
- const lWarn = `${lWarningCount} warning/ informational`;
113
- const lIgnore = (pMeta?.ignore ?? 0) > 0 ? `, ${pMeta.ignore} ignored` : "";
109
+ const lWarningCount = pMeta.warn + pMeta.info;
110
+ const lError = `${pMeta.error} error`;
111
+ const lWarn = `${lWarningCount} warning/ informational`;
112
+ const lIgnore = (pMeta?.ignore ?? 0) > 0 ? `, ${pMeta.ignore} ignored` : "";
114
113
 
115
- return `${lError}, ${lWarn}${lIgnore}`;
114
+ return `${lError}, ${lWarn}${lIgnore}`;
116
115
  }
117
116
 
118
117
  function sumMeta(pMeta) {
119
- return pMeta.error + pMeta.warn + pMeta.info;
118
+ return pMeta.error + pMeta.warn + pMeta.info;
120
119
  }
121
120
 
122
121
  /**
@@ -124,9 +123,9 @@ function sumMeta(pMeta) {
124
123
  * @returns {string}
125
124
  */
126
125
  function formatIgnoreWarning(pNumberOfIgnored) {
127
- return (pNumberOfIgnored ?? 0) > 0
128
- ? ` - ${pNumberOfIgnored} violations ignored `
129
- : "";
126
+ return (pNumberOfIgnored ?? 0) > 0
127
+ ? ` - ${pNumberOfIgnored} violations ignored `
128
+ : "";
130
129
  }
131
130
 
132
131
  /**
@@ -134,19 +133,19 @@ function formatIgnoreWarning(pNumberOfIgnored) {
134
133
  * @returns {string}
135
134
  */
136
135
  function formatResultMessage(pSummary) {
137
- let lStatSummary = `${pSummary.totalCruised} modules, ${
138
- pSummary?.totalDependenciesCruised ?? 0
139
- } dependencies cruised`;
140
-
141
- if (sumMeta(pSummary) > 0) {
142
- return `${sumMeta(pSummary)} dependency violations (${formatMeta(
143
- pSummary,
144
- )}). ${lStatSummary}`;
145
- } else {
146
- return `no dependency violations found${formatIgnoreWarning(
147
- pSummary.ignore,
148
- )} (${lStatSummary})`;
149
- }
136
+ let lStatSummary = `${pSummary.totalCruised} modules, ${
137
+ pSummary?.totalDependenciesCruised ?? 0
138
+ } dependencies cruised`;
139
+
140
+ if (sumMeta(pSummary) > 0) {
141
+ return `${sumMeta(pSummary)} dependency violations (${formatMeta(
142
+ pSummary,
143
+ )}). ${lStatSummary}`;
144
+ } else {
145
+ return `no dependency violations found${formatIgnoreWarning(
146
+ pSummary.ignore,
147
+ )} (${lStatSummary})`;
148
+ }
150
149
  }
151
150
 
152
151
  /**
@@ -154,9 +153,9 @@ function formatResultMessage(pSummary) {
154
153
  * @returns {string}
155
154
  */
156
155
  function formatSummary(pSummary) {
157
- return `##vso[task.complete result=${formatResultStatus(
158
- pSummary.error,
159
- )};]${formatResultMessage(pSummary)}${EOL}`;
156
+ return `##vso[task.complete result=${formatResultStatus(
157
+ pSummary.error,
158
+ )};]${formatResultMessage(pSummary)}${EOL}`;
160
159
  }
161
160
 
162
161
  /**
@@ -172,38 +171,15 @@ function formatSummary(pSummary) {
172
171
  */
173
172
  // eslint-disable-next-line unicorn/prevent-abbreviations
174
173
  export default function azureDevOps(pResults) {
175
- const lViolations = (pResults?.summary?.violations ?? []).filter(
176
- (pViolation) => pViolation.rule.severity !== "ignore",
177
- );
178
-
179
- return {
180
- output: lViolations
181
- .map(formatViolation)
182
- .join("")
183
- .concat(formatSummary(pResults.summary)),
184
- exitCode: pResults.summary.error,
185
- };
174
+ const lViolations = (pResults?.summary?.violations ?? []).filter(
175
+ (pViolation) => pViolation.rule.severity !== "ignore",
176
+ );
177
+
178
+ return {
179
+ output: lViolations
180
+ .map(formatViolation)
181
+ .join("")
182
+ .concat(formatSummary(pResults.summary)),
183
+ exitCode: pResults.summary.error,
184
+ };
186
185
  }
187
-
188
- /*
189
- Some notes from the documentation over at https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash#task-commands
190
-
191
- Warnings and errors:
192
-
193
- ##vso[task.logissue type=warning;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]Found something that could be a problem.
194
-
195
- Progress
196
- ##vso[task.setprogress]current operation
197
-
198
- Complete
199
- ##vso[task.complete]current operation
200
-
201
- Message grouping
202
- ##[group]Beginning of a group
203
- ##[warning]Warning message
204
- ##[error]Error message
205
- ##[section]Start of a section
206
- ##[debug]Debug text
207
- ##[command]Command-line being run
208
- ##[endgroup]
209
- */
@@ -12,13 +12,13 @@ const EOL = "\n";
12
12
  * exitCode: 0
13
13
  */
14
14
  export default function baseline(pCruiseResult) {
15
- return {
16
- output:
17
- JSON.stringify(
18
- pCruiseResult.summary.violations,
19
- null,
20
- DEFAULT_JSON_INDENT,
21
- ) + EOL,
22
- exitCode: 0,
23
- };
15
+ return {
16
+ output:
17
+ JSON.stringify(
18
+ pCruiseResult.summary.violations,
19
+ null,
20
+ DEFAULT_JSON_INDENT,
21
+ ) + EOL,
22
+ exitCode: 0,
23
+ };
24
24
  }
@@ -2,24 +2,24 @@ import { EOL } from "node:os";
2
2
  import dependencyToIncidenceTransformer from "./utl/dependency-to-incidence-transformer.mjs";
3
3
 
4
4
  function renderHeader(pModules) {
5
- return pModules.map((pModule) => `"${pModule.source}"`).join(",");
5
+ return pModules.map((pModule) => `"${pModule.source}"`).join(",");
6
6
  }
7
7
 
8
8
  function mapIncidences(pIncidences) {
9
- return pIncidences.map((pIncidence) => `"${pIncidence.incidence}"`).join(",");
9
+ return pIncidences.map((pIncidence) => `"${pIncidence.incidence}"`).join(",");
10
10
  }
11
11
 
12
12
  function renderBody(pModules) {
13
- return pModules
14
- .map(
15
- (pModule) =>
16
- `"${pModule.source}",${mapIncidences(pModule.incidences)},""`,
17
- )
18
- .join(EOL);
13
+ return pModules
14
+ .map(
15
+ (pModule) =>
16
+ `"${pModule.source}",${mapIncidences(pModule.incidences)},""`,
17
+ )
18
+ .join(EOL);
19
19
  }
20
20
 
21
21
  function report(pModules) {
22
- return `"",${renderHeader(pModules)},""${EOL}${renderBody(pModules)}${EOL}`;
22
+ return `"",${renderHeader(pModules)},""${EOL}${renderBody(pModules)}${EOL}`;
23
23
  }
24
24
 
25
25
  /**
@@ -30,8 +30,8 @@ function report(pModules) {
30
30
  * @returns {import("../../types/dependency-cruiser.js").IReporterOutput}
31
31
  */
32
32
  export default function csv(pResults) {
33
- return {
34
- output: report(dependencyToIncidenceTransformer(pResults.modules)),
35
- exitCode: 0,
36
- };
33
+ return {
34
+ output: report(dependencyToIncidenceTransformer(pResults.modules)),
35
+ exitCode: 0,
36
+ };
37
37
  }
package/src/report/d2.mjs CHANGED
@@ -3,9 +3,9 @@ import { basename, dirname } from "node:path";
3
3
  import { getURLForModule } from "./utl/index.mjs";
4
4
 
5
5
  const severity2color = new Map([
6
- ["error", "red"],
7
- ["warn", "orange"],
8
- ["info", "blue"],
6
+ ["error", "red"],
7
+ ["warn", "orange"],
8
+ ["info", "blue"],
9
9
  ]);
10
10
 
11
11
  /**
@@ -13,21 +13,21 @@ const severity2color = new Map([
13
13
  * @returns {string}
14
14
  */
15
15
  function getMaxSeverity(pRules) {
16
- const lSeverity2Number = new Map([
17
- // eslint-disable-next-line no-magic-numbers
18
- ["error", 3],
19
- // eslint-disable-next-line no-magic-numbers
20
- ["warn", 2],
21
- ["info", 1],
22
- ]);
23
- return pRules
24
- .map((pRule) => pRule.severity)
25
- .reduce((pMax, pCurrent) => {
26
- return (lSeverity2Number.get(pMax) ?? 0) >
27
- (lSeverity2Number.get(pCurrent) ?? 0)
28
- ? pMax
29
- : pCurrent;
30
- });
16
+ const lSeverity2Number = new Map([
17
+ // eslint-disable-next-line no-magic-numbers
18
+ ["error", 3],
19
+ // eslint-disable-next-line no-magic-numbers
20
+ ["warn", 2],
21
+ ["info", 1],
22
+ ]);
23
+ return pRules
24
+ .map((pRule) => pRule.severity)
25
+ .reduce((pMax, pCurrent) => {
26
+ return (lSeverity2Number.get(pMax) ?? 0) >
27
+ (lSeverity2Number.get(pCurrent) ?? 0)
28
+ ? pMax
29
+ : pCurrent;
30
+ });
31
31
  }
32
32
 
33
33
  /**
@@ -35,15 +35,15 @@ function getMaxSeverity(pRules) {
35
35
  * @return {string}
36
36
  */
37
37
  function getVertexName(pSource) {
38
- const lFolderName = dirname(pSource)
39
- .split("/")
40
- .map((pPart) => `"${pPart}"`)
41
- .join(".");
42
- const lBaseName = `"${basename(pSource)}"`;
43
- if (lFolderName === `"."`) {
44
- return lBaseName;
45
- }
46
- return `${lFolderName}.${lBaseName}`;
38
+ const lFolderName = dirname(pSource)
39
+ .split("/")
40
+ .map((pPart) => `"${pPart}"`)
41
+ .join(".");
42
+ const lBaseName = `"${basename(pSource)}"`;
43
+ if (lFolderName === `"."`) {
44
+ return lBaseName;
45
+ }
46
+ return `${lFolderName}.${lBaseName}`;
47
47
  }
48
48
 
49
49
  /**
@@ -54,38 +54,38 @@ function getVertexName(pSource) {
54
54
 
55
55
  // eslint-disable-next-line complexity
56
56
  function getModuleAttributes(pModule, pOptions) {
57
- let lReturnValue = "class: module";
58
- if (pModule.consolidated) {
59
- lReturnValue = `${lReturnValue}; style.multiple: true`;
60
- }
61
- if (
62
- pModule.matchesFocus ||
63
- pModule.matchesHighlight ||
64
- pModule.matchesReaches
65
- ) {
66
- lReturnValue = `${lReturnValue}; style.fill: yellow`;
67
- }
68
- if (pModule.valid === false) {
69
- lReturnValue = `${lReturnValue}; style.stroke: ${
70
- severity2color.get(getMaxSeverity(pModule.rules)) ?? "orange"
71
- }`;
72
- lReturnValue = `${lReturnValue}; tooltip: "${pModule.rules
73
- .map((pRule) => pRule.name)
74
- .join("\\n")}"`;
75
- }
76
- if (
77
- pModule.dependencyTypes?.some((pDependencyType) =>
78
- pDependencyType.includes("npm"),
79
- )
80
- ) {
81
- lReturnValue = `${lReturnValue}; shape: package`;
82
- }
83
- lReturnValue = `${lReturnValue}; link: "${getURLForModule(
84
- pModule,
85
- pOptions?.prefix,
86
- pOptions?.suffix,
87
- )}"`;
88
- return lReturnValue;
57
+ let lReturnValue = "class: module";
58
+ if (pModule.consolidated) {
59
+ lReturnValue = `${lReturnValue}; style.multiple: true`;
60
+ }
61
+ if (
62
+ pModule.matchesFocus ||
63
+ pModule.matchesHighlight ||
64
+ pModule.matchesReaches
65
+ ) {
66
+ lReturnValue = `${lReturnValue}; style.fill: yellow`;
67
+ }
68
+ if (pModule.valid === false) {
69
+ lReturnValue = `${lReturnValue}; style.stroke: ${
70
+ severity2color.get(getMaxSeverity(pModule.rules)) ?? "orange"
71
+ }`;
72
+ lReturnValue = `${lReturnValue}; tooltip: "${pModule.rules
73
+ .map((pRule) => pRule.name)
74
+ .join("\\n")}"`;
75
+ }
76
+ if (
77
+ pModule.dependencyTypes?.some((pDependencyType) =>
78
+ pDependencyType.includes("npm"),
79
+ )
80
+ ) {
81
+ lReturnValue = `${lReturnValue}; shape: package`;
82
+ }
83
+ lReturnValue = `${lReturnValue}; link: "${getURLForModule(
84
+ pModule,
85
+ pOptions?.prefix,
86
+ pOptions?.suffix,
87
+ )}"`;
88
+ return lReturnValue;
89
89
  }
90
90
 
91
91
  /**
@@ -94,25 +94,25 @@ function getModuleAttributes(pModule, pOptions) {
94
94
  */
95
95
 
96
96
  function getDependencyAttributes(pDependency) {
97
- let lThing = "";
98
- if (pDependency.valid === false) {
99
- lThing =
100
- `style: {stroke: ${
101
- severity2color.get(getMaxSeverity(pDependency.rules)) ?? "orange"
102
- }}; ` +
103
- `label: "${pDependency.rules.map((pRule) => pRule.name).join("\\n")}"`;
104
- }
105
- if (pDependency.circular) {
106
- lThing = `${
107
- lThing ? `${lThing};` : lThing
108
- } target-arrowhead: {shape: circle}`;
109
- }
110
- if (pDependency.dynamic) {
111
- lThing = `${
112
- lThing ? `${lThing};` : lThing
113
- } target-arrowhead: {shape: arrow}`;
114
- }
115
- return lThing ? `: {${lThing}}` : lThing;
97
+ let lThing = "";
98
+ if (pDependency.valid === false) {
99
+ lThing =
100
+ `style: {stroke: ${
101
+ severity2color.get(getMaxSeverity(pDependency.rules)) ?? "orange"
102
+ }}; ` +
103
+ `label: "${pDependency.rules.map((pRule) => pRule.name).join("\\n")}"`;
104
+ }
105
+ if (pDependency.circular) {
106
+ lThing = `${
107
+ lThing ? `${lThing};` : lThing
108
+ } target-arrowhead: {shape: circle}`;
109
+ }
110
+ if (pDependency.dynamic) {
111
+ lThing = `${
112
+ lThing ? `${lThing};` : lThing
113
+ } target-arrowhead: {shape: arrow}`;
114
+ }
115
+ return lThing ? `: {${lThing}}` : lThing;
116
116
  }
117
117
 
118
118
  /**
@@ -120,34 +120,34 @@ function getDependencyAttributes(pDependency) {
120
120
  * @return {string}
121
121
  */
122
122
  function renderD2Source(pCruiseResult) {
123
- const lVertices = pCruiseResult.modules
124
- .map((pModule) => {
125
- return `${getVertexName(pModule.source)}: {${getModuleAttributes(
126
- pModule,
127
- pCruiseResult.summary.optionsUsed,
128
- )}}`;
129
- })
130
- .join(EOL);
131
- const lEdges = pCruiseResult.modules
132
- .flatMap((pModule) => {
133
- return pModule.dependencies.map((pDependency) => {
134
- return `${getVertexName(pModule.source)} -> ${getVertexName(
135
- pDependency.resolved,
136
- )}${getDependencyAttributes(pDependency)}`;
137
- });
138
- })
139
- .join(EOL);
140
- const lStyles = `classes: {
123
+ const lVertices = pCruiseResult.modules
124
+ .map((pModule) => {
125
+ return `${getVertexName(pModule.source)}: {${getModuleAttributes(
126
+ pModule,
127
+ pCruiseResult.summary.optionsUsed,
128
+ )}}`;
129
+ })
130
+ .join(EOL);
131
+ const lEdges = pCruiseResult.modules
132
+ .flatMap((pModule) => {
133
+ return pModule.dependencies.map((pDependency) => {
134
+ return `${getVertexName(pModule.source)} -> ${getVertexName(
135
+ pDependency.resolved,
136
+ )}${getDependencyAttributes(pDependency)}`;
137
+ });
138
+ })
139
+ .join(EOL);
140
+ const lStyles = `classes: {
141
141
  module: {
142
142
  height: 30;
143
143
  style.border-radius: 10;
144
144
  }
145
145
  }`;
146
- return (
147
- `# modules${EOL}${EOL}${lVertices}${EOL}${EOL}` +
148
- `# dependencies${EOL}${EOL}${lEdges}${EOL}${EOL}` +
149
- `# styling${EOL}${EOL}${lStyles}${EOL}`
150
- );
146
+ return (
147
+ `# modules${EOL}${EOL}${lVertices}${EOL}${EOL}` +
148
+ `# dependencies${EOL}${EOL}${lEdges}${EOL}${EOL}` +
149
+ `# styling${EOL}${EOL}${lStyles}${EOL}`
150
+ );
151
151
  }
152
152
  /**
153
153
  * d2 reporter
@@ -156,8 +156,8 @@ function renderD2Source(pCruiseResult) {
156
156
  * @return {import('../../types/dependency-cruiser').IReporterOutput}
157
157
  */
158
158
  export default function d2(pCruiseResult) {
159
- return {
160
- output: renderD2Source(pCruiseResult),
161
- exitCode: 0,
162
- };
159
+ return {
160
+ output: renderD2Source(pCruiseResult),
161
+ exitCode: 0,
162
+ };
163
163
  }