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
@@ -10,36 +10,36 @@ import _format from "#main/format.mjs";
10
10
  * @returns {Promise<Number>} an exitCode
11
11
  */
12
12
  export default async function format(pResultFile, pOptions) {
13
- const lOptions = await normalizeOptions(pOptions);
13
+ const lOptions = await normalizeOptions(pOptions);
14
14
 
15
- if (pResultFile !== "-") {
16
- assertFileExistence(pResultFile);
17
- }
15
+ if (pResultFile !== "-") {
16
+ assertFileExistence(pResultFile);
17
+ }
18
18
 
19
- return new Promise((pResolve, pReject) => {
20
- let lInputAsString = "";
21
- const lInStream = getInStream(pResultFile);
19
+ return new Promise((pResolve, pReject) => {
20
+ let lInputAsString = "";
21
+ const lInStream = getInStream(pResultFile);
22
22
 
23
- lInStream
24
- .on("data", (pChunk) => {
25
- lInputAsString += pChunk;
26
- })
27
- .on(
28
- "error",
29
- /* c8 ignore start */
30
- (pError) => {
31
- pReject(pError);
32
- },
33
- /* c8 ignore stop */
34
- )
35
- .on("end", async () => {
36
- const lReportingResult = await _format(
37
- JSON.parse(lInputAsString),
38
- lOptions,
39
- );
23
+ lInStream
24
+ .on("data", (pChunk) => {
25
+ lInputAsString += pChunk;
26
+ })
27
+ .on(
28
+ "error",
29
+ /* c8 ignore start */
30
+ (pError) => {
31
+ pReject(pError);
32
+ },
33
+ /* c8 ignore stop */
34
+ )
35
+ .on("end", async () => {
36
+ const lReportingResult = await _format(
37
+ JSON.parse(lInputAsString),
38
+ lOptions,
39
+ );
40
40
 
41
- write(lOptions.outputTo, lReportingResult.output);
42
- pResolve(lReportingResult.exitCode);
43
- });
44
- });
41
+ write(lOptions.outputTo, lReportingResult.output);
42
+ pResolve(lReportingResult.exitCode);
43
+ });
44
+ });
45
45
  }
package/src/cli/index.mjs CHANGED
@@ -15,121 +15,121 @@ import { INFO, bus } from "#utl/bus.mjs";
15
15
 
16
16
  // eslint-disable-next-line complexity
17
17
  async function extractResolveOptions(pCruiseOptions) {
18
- let lResolveOptions = {};
19
- const lWebPackConfigFileName =
20
- pCruiseOptions?.ruleSet?.options?.webpackConfig?.fileName ?? null;
21
-
22
- if (lWebPackConfigFileName) {
23
- const { default: extractWebpackResolveConfig } =
24
- await import("#config-utl/extract-webpack-resolve-config.mjs");
25
- lResolveOptions = await extractWebpackResolveConfig(
26
- lWebPackConfigFileName,
27
- pCruiseOptions?.ruleSet?.options?.webpackConfig?.env ?? null,
28
- pCruiseOptions?.ruleSet?.options?.webpackConfig?.arguments ?? null,
29
- );
30
- }
31
- return lResolveOptions;
18
+ let lResolveOptions = {};
19
+ const lWebPackConfigFileName =
20
+ pCruiseOptions?.ruleSet?.options?.webpackConfig?.fileName ?? null;
21
+
22
+ if (lWebPackConfigFileName) {
23
+ const { default: extractWebpackResolveConfig } =
24
+ await import("#config-utl/extract-webpack-resolve-config.mjs");
25
+ lResolveOptions = await extractWebpackResolveConfig(
26
+ lWebPackConfigFileName,
27
+ pCruiseOptions?.ruleSet?.options?.webpackConfig?.env ?? null,
28
+ pCruiseOptions?.ruleSet?.options?.webpackConfig?.arguments ?? null,
29
+ );
30
+ }
31
+ return lResolveOptions;
32
32
  }
33
33
 
34
34
  async function addKnownViolations(pCruiseOptions) {
35
- if (pCruiseOptions.knownViolationsFile) {
36
- const { default: extractKnownViolations } =
37
- await import("#config-utl/extract-known-violations.mjs");
38
- const lKnownViolations = await extractKnownViolations(
39
- pCruiseOptions.knownViolationsFile,
40
- );
41
-
42
- // Check against json schema is already done in src/main/options/validate
43
- // so here we can just concentrate on the io
44
- let lCruiseOptions = structuredClone(pCruiseOptions);
45
- set(lCruiseOptions, "ruleSet.options.knownViolations", lKnownViolations);
46
- return lCruiseOptions;
47
- }
48
- return pCruiseOptions;
35
+ if (pCruiseOptions.knownViolationsFile) {
36
+ const { default: extractKnownViolations } =
37
+ await import("#config-utl/extract-known-violations.mjs");
38
+ const lKnownViolations = await extractKnownViolations(
39
+ pCruiseOptions.knownViolationsFile,
40
+ );
41
+
42
+ // Check against json schema is already done in src/main/options/validate
43
+ // so here we can just concentrate on the io
44
+ let lCruiseOptions = structuredClone(pCruiseOptions);
45
+ set(lCruiseOptions, "ruleSet.options.knownViolations", lKnownViolations);
46
+ return lCruiseOptions;
47
+ }
48
+ return pCruiseOptions;
49
49
  }
50
50
 
51
51
  async function extractTSConfigOptions(pCruiseOptions) {
52
- let lReturnValue = {};
53
- const lTSConfigFileName =
54
- pCruiseOptions?.ruleSet?.options?.tsConfig?.fileName ?? null;
52
+ let lReturnValue = {};
53
+ const lTSConfigFileName =
54
+ pCruiseOptions?.ruleSet?.options?.tsConfig?.fileName ?? null;
55
55
 
56
- if (lTSConfigFileName) {
57
- const { default: extractTSConfig } =
58
- await import("#config-utl/extract-ts-config.mjs");
59
- lReturnValue = extractTSConfig(lTSConfigFileName);
60
- }
56
+ if (lTSConfigFileName) {
57
+ const { default: extractTSConfig } =
58
+ await import("#config-utl/extract-ts-config.mjs");
59
+ lReturnValue = extractTSConfig(lTSConfigFileName);
60
+ }
61
61
 
62
- return lReturnValue;
62
+ return lReturnValue;
63
63
  }
64
64
 
65
65
  async function extractBabelConfigOptions(pCruiseOptions) {
66
- let lReturnValue = {};
67
- const lBabelConfigFileName =
68
- pCruiseOptions?.ruleSet?.options?.babelConfig?.fileName ?? null;
69
- if (lBabelConfigFileName) {
70
- const { default: extractBabelConfig } =
71
- await import("#config-utl/extract-babel-config.mjs");
72
- lReturnValue = extractBabelConfig(lBabelConfigFileName);
73
- }
74
-
75
- return lReturnValue;
66
+ let lReturnValue = {};
67
+ const lBabelConfigFileName =
68
+ pCruiseOptions?.ruleSet?.options?.babelConfig?.fileName ?? null;
69
+ if (lBabelConfigFileName) {
70
+ const { default: extractBabelConfig } =
71
+ await import("#config-utl/extract-babel-config.mjs");
72
+ lReturnValue = extractBabelConfig(lBabelConfigFileName);
73
+ }
74
+
75
+ return lReturnValue;
76
76
  }
77
77
 
78
78
  // eslint-disable-next-line complexity
79
79
  function setUpListener(pCruiseOptions) {
80
- const lString2Listener = new Map([
81
- ["cli-feedback", setUpCliFeedbackListener],
82
- ["performance-log", setUpPerformanceLogListener],
83
- ["ndjson", setUpNDJSONListener],
84
- ]);
85
- const lListenerID =
86
- pCruiseOptions?.progress ??
87
- pCruiseOptions?.ruleSet?.options?.progress?.type;
88
-
89
- const lListenerFunction = lString2Listener.get(lListenerID);
90
- /* c8 ignore next 6 */
91
- if (lListenerFunction) {
92
- lListenerFunction(
93
- bus,
94
- pCruiseOptions?.ruleSet?.options?.progress?.maximumLevel ?? INFO,
95
- );
96
- }
80
+ const lString2Listener = new Map([
81
+ ["cli-feedback", setUpCliFeedbackListener],
82
+ ["performance-log", setUpPerformanceLogListener],
83
+ ["ndjson", setUpNDJSONListener],
84
+ ]);
85
+ const lListenerID =
86
+ pCruiseOptions?.progress ??
87
+ pCruiseOptions?.ruleSet?.options?.progress?.type;
88
+
89
+ const lListenerFunction = lString2Listener.get(lListenerID);
90
+ /* c8 ignore next 6 */
91
+ if (lListenerFunction) {
92
+ lListenerFunction(
93
+ bus,
94
+ pCruiseOptions?.ruleSet?.options?.progress?.maximumLevel ?? INFO,
95
+ );
96
+ }
97
97
  }
98
98
 
99
99
  async function runCruise(pFileDirectoryArray, pCruiseOptions) {
100
- const lCruiseOptions = await addKnownViolations(
101
- await normalizeCliOptions(pCruiseOptions),
102
- );
103
-
104
- pFileDirectoryArray
105
- .filter((pFileOrDirectory) => !picomatch.scan(pFileOrDirectory).isGlob)
106
- .map((pFileOrDirectory) =>
107
- lCruiseOptions?.ruleSet?.options?.baseDir
108
- ? join(lCruiseOptions.ruleSet.options.baseDir, pFileOrDirectory)
109
- : pFileOrDirectory,
110
- )
111
- .forEach(assertFileExistence);
112
-
113
- setUpListener(lCruiseOptions);
114
-
115
- bus.emit("start");
116
- const [lResolveOptions, tsConfig, babelConfig] = await Promise.all([
117
- extractResolveOptions(lCruiseOptions),
118
- extractTSConfigOptions(lCruiseOptions),
119
- extractBabelConfigOptions(lCruiseOptions),
120
- ]);
121
- const lReportingResult = await cruise(
122
- pFileDirectoryArray,
123
- lCruiseOptions,
124
- lResolveOptions,
125
- { tsConfig, babelConfig },
126
- );
127
-
128
- bus.progress("cli: writing results", { complete: 1 });
129
- bus.emit("write-start");
130
- write(lCruiseOptions.outputTo, lReportingResult.output);
131
-
132
- return lReportingResult.exitCode;
100
+ const lCruiseOptions = await addKnownViolations(
101
+ await normalizeCliOptions(pCruiseOptions),
102
+ );
103
+
104
+ pFileDirectoryArray
105
+ .filter((pFileOrDirectory) => !picomatch.scan(pFileOrDirectory).isGlob)
106
+ .map((pFileOrDirectory) =>
107
+ lCruiseOptions?.ruleSet?.options?.baseDir
108
+ ? join(lCruiseOptions.ruleSet.options.baseDir, pFileOrDirectory)
109
+ : pFileOrDirectory,
110
+ )
111
+ .forEach(assertFileExistence);
112
+
113
+ setUpListener(lCruiseOptions);
114
+
115
+ bus.emit("start");
116
+ const [lResolveOptions, tsConfig, babelConfig] = await Promise.all([
117
+ extractResolveOptions(lCruiseOptions),
118
+ extractTSConfigOptions(lCruiseOptions),
119
+ extractBabelConfigOptions(lCruiseOptions),
120
+ ]);
121
+ const lReportingResult = await cruise(
122
+ pFileDirectoryArray,
123
+ lCruiseOptions,
124
+ lResolveOptions,
125
+ { tsConfig, babelConfig },
126
+ );
127
+
128
+ bus.progress("cli: writing results", { complete: 1 });
129
+ bus.emit("write-start");
130
+ write(lCruiseOptions.outputTo, lReportingResult.output);
131
+
132
+ return lReportingResult.exitCode;
133
133
  }
134
134
 
135
135
  /**
@@ -142,53 +142,53 @@ async function runCruise(pFileDirectoryArray, pCruiseOptions) {
142
142
 
143
143
  // eslint-disable-next-line max-lines-per-function
144
144
  export default async function executeCli(
145
- pFileDirectoryArray,
146
- pCruiseOptions,
147
- pStreams,
145
+ pFileDirectoryArray,
146
+ pCruiseOptions,
147
+ pStreams,
148
148
  ) {
149
- const lStreams = {
150
- stdout: process.stdout,
151
- stderr: process.stderr,
152
- ...(pStreams || {}),
153
- };
154
- let lCruiseOptions = pCruiseOptions || {};
155
- let lExitCode = 0;
156
-
157
- try {
158
- /* c8 ignore start */
159
- if (isInstalledGlobally) {
160
- lStreams.stderr.write(
161
- `\n ${styleText(
162
- "yellow",
163
- "WARNING",
164
- )}: You're running a globally installed dependency-cruiser.\n\n` +
165
- ` We recommend to ${styleText(
166
- "underline",
167
- "install and run it as a local devDependency",
168
- )} in\n` +
169
- ` your project instead. There it has your project's environment and\n` +
170
- ` transpilers at its disposal. That will ensure it can find e.g.\n` +
171
- ` TypeScript, Vue or Svelte modules and dependencies.\n\n`,
172
- );
173
- }
174
- /* c8 ignore stop */
175
- if (lCruiseOptions.info === true) {
176
- const { default: formatMetaInfo } =
177
- await import("./format-meta-info.mjs");
178
- lStreams.stdout.write(await formatMetaInfo());
179
- } else if (lCruiseOptions.init) {
180
- const { default: initConfig } = await import("./init-config/index.mjs");
181
- initConfig(lCruiseOptions.init, null, lStreams);
182
- } else {
183
- lExitCode = await runCruise(pFileDirectoryArray, lCruiseOptions);
184
- }
185
- } catch (pError) {
186
- lStreams.stderr.write(
187
- `\n ${styleText("red", "ERROR")}: ${pError.message}\n`,
188
- );
189
- bus.emit("end");
190
- lExitCode = 1;
191
- }
192
- bus.emit("end");
193
- return lExitCode;
149
+ const lStreams = {
150
+ stdout: process.stdout,
151
+ stderr: process.stderr,
152
+ ...(pStreams || {}),
153
+ };
154
+ let lCruiseOptions = pCruiseOptions || {};
155
+ let lExitCode = 0;
156
+
157
+ try {
158
+ /* c8 ignore start */
159
+ if (isInstalledGlobally) {
160
+ lStreams.stderr.write(
161
+ `\n ${styleText(
162
+ "yellow",
163
+ "WARNING",
164
+ )}: You're running a globally installed dependency-cruiser.\n\n` +
165
+ ` We recommend to ${styleText(
166
+ "underline",
167
+ "install and run it as a local devDependency",
168
+ )} in\n` +
169
+ ` your project instead. There it has your project's environment and\n` +
170
+ ` transpilers at its disposal. That will ensure it can find e.g.\n` +
171
+ ` TypeScript, Vue or Svelte modules and dependencies.\n\n`,
172
+ );
173
+ }
174
+ /* c8 ignore stop */
175
+ if (lCruiseOptions.info === true) {
176
+ const { default: formatMetaInfo } =
177
+ await import("./format-meta-info.mjs");
178
+ lStreams.stdout.write(await formatMetaInfo());
179
+ } else if (lCruiseOptions.init) {
180
+ const { default: initConfig } = await import("./init-config/index.mjs");
181
+ initConfig(lCruiseOptions.init, null, lStreams);
182
+ } else {
183
+ lExitCode = await runCruise(pFileDirectoryArray, lCruiseOptions);
184
+ }
185
+ } catch (pError) {
186
+ lStreams.stderr.write(
187
+ `\n ${styleText("red", "ERROR")}: ${pError.message}\n`,
188
+ );
189
+ bus.emit("end");
190
+ lExitCode = 1;
191
+ }
192
+ bus.emit("end");
193
+ return lExitCode;
194
194
  }