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
@@ -12,26 +12,26 @@ import { formatPercentage, formatViolation } from "./utl/index.mjs";
12
12
  * @return {String}
13
13
  */
14
14
  function escape(pMessageString) {
15
- if (pMessageString === null) {
16
- return "";
17
- }
15
+ if (pMessageString === null) {
16
+ return "";
17
+ }
18
18
 
19
- return (
20
- pMessageString
21
- .toString()
22
- .replace(/\|/g, "||")
23
- .replace(/\n/g, "|n")
24
- .replace(/\r/g, "|r")
25
- .replace(/\[/g, "|[")
26
- .replace(/\]/g, "|]")
27
- // next line
28
- .replace(/\u0085/g, "|x")
29
- // line separator
30
- .replace(/\u2028/g, "|l")
31
- // paragraph separator
32
- .replace(/\u2029/g, "|p")
33
- .replace(/'/g, "|'")
34
- );
19
+ return (
20
+ pMessageString
21
+ .toString()
22
+ .replace(/\|/g, "||")
23
+ .replace(/\n/g, "|n")
24
+ .replace(/\r/g, "|r")
25
+ .replace(/\[/g, "|[")
26
+ .replace(/\]/g, "|]")
27
+ // next line
28
+ .replace(/\u0085/g, "|x")
29
+ // line separator
30
+ .replace(/\u2028/g, "|l")
31
+ // paragraph separator
32
+ .replace(/\u2029/g, "|p")
33
+ .replace(/'/g, "|'")
34
+ );
35
35
  }
36
36
 
37
37
  /**
@@ -43,11 +43,11 @@ function escape(pMessageString) {
43
43
  * @return {string} a random flowId consisting of 10 numeric digits
44
44
  */
45
45
  function getRandomFlowIdBare() {
46
- const lFlowIdLength = 10;
47
- // eslint-disable-next-line no-magic-numbers
48
- const lFlowIdMax = 10 ** lFlowIdLength;
46
+ const lFlowIdLength = 10;
47
+ // eslint-disable-next-line no-magic-numbers
48
+ const lFlowIdMax = 10 ** lFlowIdLength;
49
49
 
50
- return randomInt(1, lFlowIdMax).toString().padStart(lFlowIdLength, "0");
50
+ return randomInt(1, lFlowIdMax).toString().padStart(lFlowIdLength, "0");
51
51
  }
52
52
 
53
53
  const getRandomFlowId = memoize(getRandomFlowIdBare);
@@ -56,178 +56,178 @@ const getRandomFlowId = memoize(getRandomFlowIdBare);
56
56
  * Returns a timestamp in ISO format without the trailing 'Z'. It used to be
57
57
  * an issue with TeamCity that it didn't use the trailing 'Z' (this is
58
58
  * documented in the teamcity-service-messages source code) - not sure whether
59
- * this is still the case, but this is what we do to be on the safe side.
59
+ * this is still the case, but better safe than sorry.
60
60
  *
61
61
  * @returns {string} a timestamp in ISO format without the trailing 'Z'
62
62
  */
63
63
  function getTimeStamp() {
64
- return new Date().toISOString().slice(0, -1);
64
+ return new Date().toISOString().slice(0, -1);
65
65
  }
66
66
 
67
67
  function inspectionType(pData) {
68
- const lAttributes = [];
69
- lAttributes.push(
70
- `id='${pData.id}'`,
71
- `name='${pData.name}'`,
72
- `description='${escape(pData.description)}'`,
73
- `category='${pData.category}'`,
74
- `flowId='${getRandomFlowId()}'`,
75
- `timestamp='${getTimeStamp()}'`,
76
- );
77
- return `##teamcity[inspectionType ${lAttributes.join(" ")}]`;
68
+ const lAttributes = [];
69
+ lAttributes.push(
70
+ `id='${pData.id}'`,
71
+ `name='${pData.name}'`,
72
+ `description='${escape(pData.description)}'`,
73
+ `category='${pData.category}'`,
74
+ `flowId='${getRandomFlowId()}'`,
75
+ `timestamp='${getTimeStamp()}'`,
76
+ );
77
+ return `##teamcity[inspectionType ${lAttributes.join(" ")}]`;
78
78
  }
79
79
 
80
80
  function inspection(pData) {
81
- const lAttributes = [];
82
- lAttributes.push(
83
- `typeId='${pData.typeId}'`,
84
- `message='${escape(pData.message)}'`,
85
- );
86
- if (pData.file) {
87
- lAttributes.push(`file='${pData.file}'`);
88
- }
89
- lAttributes.push(
90
- `SEVERITY='${pData.SEVERITY}'`,
91
- `flowId='${getRandomFlowId()}'`,
92
- `timestamp='${getTimeStamp()}'`,
93
- );
81
+ const lAttributes = [];
82
+ lAttributes.push(
83
+ `typeId='${pData.typeId}'`,
84
+ `message='${escape(pData.message)}'`,
85
+ );
86
+ if (pData.file) {
87
+ lAttributes.push(`file='${pData.file}'`);
88
+ }
89
+ lAttributes.push(
90
+ `SEVERITY='${pData.SEVERITY}'`,
91
+ `flowId='${getRandomFlowId()}'`,
92
+ `timestamp='${getTimeStamp()}'`,
93
+ );
94
94
 
95
- return `##teamcity[inspection ${lAttributes.join(" ")}]`;
95
+ return `##teamcity[inspection ${lAttributes.join(" ")}]`;
96
96
  }
97
97
 
98
98
  const CATEGORY = "dependency-cruiser";
99
99
  const SEVERITY2TEAMCITY_SEVERITY = new Map([
100
- ["error", "ERROR"],
101
- ["warn", "WARNING"],
102
- ["info", "INFO"],
100
+ ["error", "ERROR"],
101
+ ["warn", "WARNING"],
102
+ ["info", "INFO"],
103
103
  ]);
104
104
  const EOL = "\n";
105
105
 
106
106
  function severity2teamcitySeverity(pSeverity) {
107
- return SEVERITY2TEAMCITY_SEVERITY.get(pSeverity) || "INFO";
107
+ return SEVERITY2TEAMCITY_SEVERITY.get(pSeverity) || "INFO";
108
108
  }
109
109
 
110
110
  function reportRules(pRules, pViolations) {
111
- return pRules
112
- .filter((pRule) =>
113
- pViolations.some((pViolation) => pRule.name === pViolation.rule.name),
114
- )
115
- .map((pRule) =>
116
- inspectionType({
117
- id: pRule.name,
118
- name: pRule.name,
119
- description: pRule.comment || pRule.name,
120
- category: CATEGORY,
121
- }),
122
- );
111
+ return pRules
112
+ .filter((pRule) =>
113
+ pViolations.some((pViolation) => pRule.name === pViolation.rule.name),
114
+ )
115
+ .map((pRule) =>
116
+ inspectionType({
117
+ id: pRule.name,
118
+ name: pRule.name,
119
+ description: pRule.comment || pRule.name,
120
+ category: CATEGORY,
121
+ }),
122
+ );
123
123
  }
124
124
 
125
125
  function reportAllowedRule(pAllowedRule, pViolations) {
126
- let lReturnValue = [];
126
+ let lReturnValue = [];
127
127
 
128
- if (
129
- pAllowedRule.length > 0 &&
130
- pViolations.some((pViolation) => pViolation.rule.name === "not-in-allowed")
131
- ) {
132
- lReturnValue = inspectionType({
133
- id: "not-in-allowed",
134
- name: "not-in-allowed",
135
- description: "dependency is not in the 'allowed' set of rules",
136
- category: CATEGORY,
137
- });
138
- }
139
- return lReturnValue;
128
+ if (
129
+ pAllowedRule.length > 0 &&
130
+ pViolations.some((pViolation) => pViolation.rule.name === "not-in-allowed")
131
+ ) {
132
+ lReturnValue = inspectionType({
133
+ id: "not-in-allowed",
134
+ name: "not-in-allowed",
135
+ description: "dependency is not in the 'allowed' set of rules",
136
+ category: CATEGORY,
137
+ });
138
+ }
139
+ return lReturnValue;
140
140
  }
141
141
 
142
142
  function reportIgnoredRules(pIgnoredCount) {
143
- let lReturnValue = [];
143
+ let lReturnValue = [];
144
144
 
145
- if (pIgnoredCount > 0) {
146
- lReturnValue = inspectionType({
147
- id: "ignored-known-violations",
148
- name: "ignored-known-violations",
149
- description:
150
- "some dependency violations were ignored; run with --no-ignore-known to see them",
151
- category: CATEGORY,
152
- });
153
- }
154
- return lReturnValue;
145
+ if (pIgnoredCount > 0) {
146
+ lReturnValue = inspectionType({
147
+ id: "ignored-known-violations",
148
+ name: "ignored-known-violations",
149
+ description:
150
+ "some dependency violations were ignored; run with --no-ignore-known to see them",
151
+ category: CATEGORY,
152
+ });
153
+ }
154
+ return lReturnValue;
155
155
  }
156
156
 
157
157
  function reportViolatedRules(pRuleSetUsed, pViolations, pIgnoredCount) {
158
- return reportRules(pRuleSetUsed?.forbidden ?? [], pViolations)
159
- .concat(reportAllowedRule(pRuleSetUsed?.allowed ?? [], pViolations))
160
- .concat(reportRules(pRuleSetUsed?.required ?? [], pViolations))
161
- .concat(reportIgnoredRules(pIgnoredCount));
158
+ return reportRules(pRuleSetUsed?.forbidden ?? [], pViolations)
159
+ .concat(reportAllowedRule(pRuleSetUsed?.allowed ?? [], pViolations))
160
+ .concat(reportRules(pRuleSetUsed?.required ?? [], pViolations))
161
+ .concat(reportIgnoredRules(pIgnoredCount));
162
162
  }
163
163
 
164
164
  function formatModuleViolation(pViolation) {
165
- return pViolation.from;
165
+ return pViolation.from;
166
166
  }
167
167
 
168
168
  function formatDependencyViolation(pViolation) {
169
- return `${pViolation.from} -> ${pViolation.to}`;
169
+ return `${pViolation.from} -> ${pViolation.to}`;
170
170
  }
171
171
 
172
172
  function formatCycleViolation(pViolation) {
173
- return `${pViolation.from} -> ${pViolation.cycle
174
- .map(({ name }) => name)
175
- .join(" -> ")}`;
173
+ return `${pViolation.from} -> ${pViolation.cycle
174
+ .map(({ name }) => name)
175
+ .join(" -> ")}`;
176
176
  }
177
177
 
178
178
  function formatReachabilityViolation(pViolation) {
179
- return `${formatDependencyViolation(pViolation)} ${pViolation.via
180
- .map(({ name }) => name)
181
- .join(" -> ")}`;
179
+ return `${formatDependencyViolation(pViolation)} ${pViolation.via
180
+ .map(({ name }) => name)
181
+ .join(" -> ")}`;
182
182
  }
183
183
 
184
184
  function formatInstabilityViolation(pViolation) {
185
- return `${formatDependencyViolation(
186
- pViolation,
187
- )} (instability: ${formatPercentage(
188
- pViolation.metrics.from.instability,
189
- )} -> ${formatPercentage(pViolation.metrics.to.instability)})`;
185
+ return `${formatDependencyViolation(
186
+ pViolation,
187
+ )} (instability: ${formatPercentage(
188
+ pViolation.metrics.from.instability,
189
+ )} -> ${formatPercentage(pViolation.metrics.to.instability)})`;
190
190
  }
191
191
 
192
192
  function bakeViolationMessage(pViolation) {
193
- const lViolationType2Formatter = {
194
- module: formatModuleViolation,
195
- dependency: formatDependencyViolation,
196
- cycle: formatCycleViolation,
197
- reachability: formatReachabilityViolation,
198
- instability: formatInstabilityViolation,
199
- };
200
- return formatViolation(
201
- pViolation,
202
- lViolationType2Formatter,
203
- formatDependencyViolation,
204
- );
193
+ const lViolationType2Formatter = {
194
+ module: formatModuleViolation,
195
+ dependency: formatDependencyViolation,
196
+ cycle: formatCycleViolation,
197
+ reachability: formatReachabilityViolation,
198
+ instability: formatInstabilityViolation,
199
+ };
200
+ return formatViolation(
201
+ pViolation,
202
+ lViolationType2Formatter,
203
+ formatDependencyViolation,
204
+ );
205
205
  }
206
206
 
207
207
  function reportIgnoredViolation(pIgnoredCount) {
208
- let lReturnValue = [];
208
+ let lReturnValue = [];
209
209
 
210
- if (pIgnoredCount > 0) {
211
- lReturnValue = inspection({
212
- typeId: "ignored-known-violations",
213
- message: `${pIgnoredCount} known violations ignored. Run with --no-ignore-known to see them.`,
214
- SEVERITY: "WARNING",
215
- });
216
- }
217
- return lReturnValue;
210
+ if (pIgnoredCount > 0) {
211
+ lReturnValue = inspection({
212
+ typeId: "ignored-known-violations",
213
+ message: `${pIgnoredCount} known violations ignored. Run with --no-ignore-known to see them.`,
214
+ SEVERITY: "WARNING",
215
+ });
216
+ }
217
+ return lReturnValue;
218
218
  }
219
219
 
220
220
  function reportViolations(pViolations, pIgnoredCount) {
221
- return pViolations
222
- .map((pViolation) =>
223
- inspection({
224
- typeId: pViolation.rule.name,
225
- message: bakeViolationMessage(pViolation),
226
- file: pViolation.from,
227
- SEVERITY: severity2teamcitySeverity(pViolation.rule.severity),
228
- }),
229
- )
230
- .concat(reportIgnoredViolation(pIgnoredCount));
221
+ return pViolations
222
+ .map((pViolation) =>
223
+ inspection({
224
+ typeId: pViolation.rule.name,
225
+ message: bakeViolationMessage(pViolation),
226
+ file: pViolation.from,
227
+ SEVERITY: severity2teamcitySeverity(pViolation.rule.severity),
228
+ }),
229
+ )
230
+ .concat(reportIgnoredViolation(pIgnoredCount));
231
231
  }
232
232
 
233
233
  /**
@@ -242,19 +242,19 @@ function reportViolations(pViolations, pIgnoredCount) {
242
242
  */
243
243
  // eslint-disable-next-line complexity
244
244
  export default function teamcity(pResults) {
245
- memoizeClear(getRandomFlowId);
245
+ memoizeClear(getRandomFlowId);
246
246
 
247
- const lRuleSet = pResults?.summary?.ruleSetUsed ?? [];
248
- const lViolations = (pResults?.summary?.violations ?? []).filter(
249
- (pViolation) => pViolation.rule.severity !== "ignore",
250
- );
251
- const lIgnoredCount = pResults?.summary?.ignore ?? 0;
247
+ const lRuleSet = pResults?.summary?.ruleSetUsed ?? [];
248
+ const lViolations = (pResults?.summary?.violations ?? []).filter(
249
+ (pViolation) => pViolation.rule.severity !== "ignore",
250
+ );
251
+ const lIgnoredCount = pResults?.summary?.ignore ?? 0;
252
252
 
253
- return {
254
- output:
255
- reportViolatedRules(lRuleSet, lViolations, lIgnoredCount)
256
- .concat(reportViolations(lViolations, lIgnoredCount))
257
- .reduce((pAll, pCurrent) => `${pAll}${pCurrent}\n`, "") || EOL,
258
- exitCode: pResults.summary.error,
259
- };
253
+ return {
254
+ output:
255
+ reportViolatedRules(lRuleSet, lViolations, lIgnoredCount)
256
+ .concat(reportViolations(lViolations, lIgnoredCount))
257
+ .reduce((pAll, pCurrent) => `${pAll}${pCurrent}\n`, "") || EOL,
258
+ exitCode: pResults.summary.error,
259
+ };
260
260
  }
@@ -1,7 +1,7 @@
1
1
  import { styleText } from "node:util";
2
2
 
3
3
  const DEFAULT_OPTIONS = {
4
- highlightFocused: false,
4
+ highlightFocused: false,
5
5
  };
6
6
  const EOL = "\n";
7
7
 
@@ -13,36 +13,36 @@ const EOL = "\n";
13
13
  * @returns {any}
14
14
  */
15
15
  function toFlatModuleDependencies(pModule, pModulesInFocus, pHighlightFocused) {
16
- return pModule.dependencies.map((pDependency) => ({
17
- from: {
18
- name: pModule.source,
19
- highlight: pHighlightFocused && pModule.matchesFocus,
20
- },
21
- to: {
22
- name: pDependency.resolved,
23
- highlight: pHighlightFocused && pModulesInFocus.has(pDependency.resolved),
24
- },
25
- }));
16
+ return pModule.dependencies.map((pDependency) => ({
17
+ from: {
18
+ name: pModule.source,
19
+ highlight: pHighlightFocused && pModule.matchesFocus,
20
+ },
21
+ to: {
22
+ name: pDependency.resolved,
23
+ highlight: pHighlightFocused && pModulesInFocus.has(pDependency.resolved),
24
+ },
25
+ }));
26
26
  }
27
27
 
28
28
  function toFlatDependencies(pModules, pModulesInFocus, pHighlightFocused) {
29
- return pModules.reduce(
30
- (pAll, pModule) =>
31
- pAll.concat(
32
- toFlatModuleDependencies(pModule, pModulesInFocus, pHighlightFocused),
33
- ),
34
- [],
35
- );
29
+ return pModules.reduce(
30
+ (pAll, pModule) =>
31
+ pAll.concat(
32
+ toFlatModuleDependencies(pModule, pModulesInFocus, pHighlightFocused),
33
+ ),
34
+ [],
35
+ );
36
36
  }
37
37
 
38
38
  function stringifyModule(pModule) {
39
- return pModule.highlight
40
- ? styleText("underline", pModule.name)
41
- : pModule.name;
39
+ return pModule.highlight
40
+ ? styleText("underline", pModule.name)
41
+ : pModule.name;
42
42
  }
43
43
 
44
44
  function stringify(pFlatDependency) {
45
- return `${stringifyModule(pFlatDependency.from)} → ${stringifyModule(pFlatDependency.to)}`;
45
+ return `${stringifyModule(pFlatDependency.from)} → ${stringifyModule(pFlatDependency.to)}`;
46
46
  }
47
47
 
48
48
  /**
@@ -51,11 +51,11 @@ function stringify(pFlatDependency) {
51
51
  * @returns {Set<string>}
52
52
  */
53
53
  function getModulesInFocus(pModules) {
54
- return new Set(
55
- pModules
56
- .filter((pModule) => pModule.matchesFocus || pModule.matchesReaches)
57
- .map((pModule) => pModule.source),
58
- );
54
+ return new Set(
55
+ pModules
56
+ .filter((pModule) => pModule.matchesFocus || pModule.matchesReaches)
57
+ .map((pModule) => pModule.source),
58
+ );
59
59
  }
60
60
 
61
61
  /**
@@ -65,18 +65,18 @@ function getModulesInFocus(pModules) {
65
65
  * @returns {string}
66
66
  */
67
67
  function report(pResults, pOptions) {
68
- const lOptions = { ...DEFAULT_OPTIONS, ...pOptions };
68
+ const lOptions = { ...DEFAULT_OPTIONS, ...pOptions };
69
69
 
70
- return (
71
- toFlatDependencies(
72
- pResults.modules,
73
- getModulesInFocus(pResults.modules),
74
- lOptions.highlightFocused === true,
75
- ).reduce(
76
- (pAll, pDependency) => pAll.concat(stringify(pDependency)).concat(EOL),
77
- "",
78
- ) || EOL
79
- );
70
+ return (
71
+ toFlatDependencies(
72
+ pResults.modules,
73
+ getModulesInFocus(pResults.modules),
74
+ lOptions.highlightFocused === true,
75
+ ).reduce(
76
+ (pAll, pDependency) => pAll.concat(stringify(pDependency)).concat(EOL),
77
+ "",
78
+ ) || EOL
79
+ );
80
80
  }
81
81
 
82
82
  /**
@@ -87,8 +87,8 @@ function report(pResults, pOptions) {
87
87
  * @returns {import("../../types/dependency-cruiser").IReporterOutput}
88
88
  */
89
89
  export default function text(pResults, pOptions) {
90
- return {
91
- output: report(pResults, pOptions || {}),
92
- exitCode: 0,
93
- };
90
+ return {
91
+ output: report(pResults, pOptions || {}),
92
+ exitCode: 0,
93
+ };
94
94
  }
@@ -1,50 +1,50 @@
1
1
  function deriveSortKey(pModule) {
2
- return `${pModule.coreModule ? "1" : "0"}-${pModule.source}`;
2
+ return `${pModule.coreModule ? "1" : "0"}-${pModule.source}`;
3
3
  }
4
4
 
5
5
  function compareOnSource(pOne, pTwo) {
6
- return deriveSortKey(pOne) > deriveSortKey(pTwo) ? 1 : -1;
6
+ return deriveSortKey(pOne) > deriveSortKey(pTwo) ? 1 : -1;
7
7
  }
8
8
 
9
9
  function determineIncidenceType(pFromListEntry) {
10
- return (pModule) => {
11
- let lDependency = pModule.dependencies.find(
12
- (pDependency) => pDependency.resolved === pFromListEntry.source,
13
- );
10
+ return (pModule) => {
11
+ let lDependency = pModule.dependencies.find(
12
+ (pDependency) => pDependency.resolved === pFromListEntry.source,
13
+ );
14
14
 
15
- if (lDependency) {
16
- return lDependency.valid
17
- ? {
18
- incidence: "true",
19
- }
20
- : {
21
- incidence: lDependency.rules[0].severity,
22
- rule: `${lDependency.rules[0].name}${
23
- lDependency.rules.length > 1
24
- ? ` (+${lDependency.rules.length - 1} others)`
25
- : ""
26
- }`,
27
- };
28
- }
15
+ if (lDependency) {
16
+ return lDependency.valid
17
+ ? {
18
+ incidence: "true",
19
+ }
20
+ : {
21
+ incidence: lDependency.rules[0].severity,
22
+ rule: `${lDependency.rules[0].name}${
23
+ lDependency.rules.length > 1
24
+ ? ` (+${lDependency.rules.length - 1} others)`
25
+ : ""
26
+ }`,
27
+ };
28
+ }
29
29
 
30
- return {
31
- incidence: "false",
32
- };
33
- };
30
+ return {
31
+ incidence: "false",
32
+ };
33
+ };
34
34
  }
35
35
 
36
36
  function addIncidences(pFromList) {
37
- return (pDependency) => ({
38
- ...pDependency,
39
- incidences: pFromList.map((pFromListEntry) => ({
40
- to: pFromListEntry.source,
41
- ...determineIncidenceType(pFromListEntry)(pDependency),
42
- })),
43
- });
37
+ return (pDependency) => ({
38
+ ...pDependency,
39
+ incidences: pFromList.map((pFromListEntry) => ({
40
+ to: pFromListEntry.source,
41
+ ...determineIncidenceType(pFromListEntry)(pDependency),
42
+ })),
43
+ });
44
44
  }
45
45
  /*
46
46
 
47
47
  */
48
48
  export default function transformDependenciesToIncidences(pFromList) {
49
- return pFromList.sort(compareOnSource).map(addIncidences(pFromList));
49
+ return pFromList.sort(compareOnSource).map(addIncidences(pFromList));
50
50
  }