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
@@ -1,11 +1,11 @@
1
1
  export function filenameMatchesPattern(pFullPathToFile, pPattern) {
2
- return RegExp(pPattern, "g").test(pFullPathToFile);
2
+ return RegExp(pPattern, "g").test(pFullPathToFile);
3
3
  }
4
4
 
5
5
  export function moduleMatchesFilter(pModule, pFilter) {
6
- return filenameMatchesPattern(pModule.source, pFilter.path);
6
+ return filenameMatchesPattern(pModule.source, pFilter.path);
7
7
  }
8
8
 
9
9
  export function dependencyMatchesFilter(pDependency, pFilter) {
10
- return filenameMatchesPattern(pDependency.resolved, pFilter.path);
10
+ return filenameMatchesPattern(pDependency.resolved, pFilter.path);
11
11
  }
@@ -14,17 +14,17 @@
14
14
  * @return {IForbiddenRuleType|undefined} - a rule (or 'undefined' if nothing found)
15
15
  */
16
16
  export function findRuleByName(pRuleSet, pName) {
17
- const lNamedRules = (pRuleSet?.forbidden ?? []).concat(
18
- pRuleSet?.required ?? [],
19
- );
20
- return lNamedRules.find((pRule) => pRule.name === pName);
17
+ const lNamedRules = (pRuleSet?.forbidden ?? []).concat(
18
+ pRuleSet?.required ?? [],
19
+ );
20
+ return lNamedRules.find((pRule) => pRule.name === pName);
21
21
  }
22
22
 
23
23
  function ruleHasALicenseLikeAttribute(pRule) {
24
- return (
25
- Object.hasOwn(pRule?.to ?? {}, "license") ||
26
- Object.hasOwn(pRule?.to ?? {}, "licenseNot")
27
- );
24
+ return (
25
+ Object.hasOwn(pRule?.to ?? {}, "license") ||
26
+ Object.hasOwn(pRule?.to ?? {}, "licenseNot")
27
+ );
28
28
  }
29
29
 
30
30
  /**
@@ -37,10 +37,10 @@ function ruleHasALicenseLikeAttribute(pRule) {
37
37
  * @return {boolean}
38
38
  */
39
39
  export function ruleSetHasLicenseRule(pRuleSet) {
40
- return (
41
- (pRuleSet?.forbidden ?? []).some(ruleHasALicenseLikeAttribute) ||
42
- (pRuleSet?.allowed ?? []).some(ruleHasALicenseLikeAttribute)
43
- );
40
+ return (
41
+ (pRuleSet?.forbidden ?? []).some(ruleHasALicenseLikeAttribute) ||
42
+ (pRuleSet?.allowed ?? []).some(ruleHasALicenseLikeAttribute)
43
+ );
44
44
  }
45
45
 
46
46
  /**
@@ -48,12 +48,12 @@ export function ruleSetHasLicenseRule(pRuleSet) {
48
48
  * @return {boolean}
49
49
  */
50
50
  export function ruleSetHasDeprecationRule(pRuleSet) {
51
- return (
52
- (pRuleSet?.forbidden ?? []).some((pRule) =>
53
- (pRule?.to?.dependencyTypes ?? []).includes("deprecated"),
54
- ) ||
55
- (pRuleSet?.allowed ?? []).some((pRule) =>
56
- (pRule?.to?.dependencyTypes ?? []).includes("deprecated"),
57
- )
58
- );
51
+ return (
52
+ (pRuleSet?.forbidden ?? []).some((pRule) =>
53
+ (pRule?.to?.dependencyTypes ?? []).includes("deprecated"),
54
+ ) ||
55
+ (pRuleSet?.allowed ?? []).some((pRule) =>
56
+ (pRule?.to?.dependencyTypes ?? []).includes("deprecated"),
57
+ )
58
+ );
59
59
  }
@@ -1,8 +1,8 @@
1
1
  export default function stripSelfTransitions(pModule) {
2
- return {
3
- ...pModule,
4
- dependencies: pModule.dependencies.filter(
5
- (pDependency) => pModule.source !== pDependency.resolved,
6
- ),
7
- };
2
+ return {
3
+ ...pModule,
4
+ dependencies: pModule.dependencies.filter(
5
+ (pDependency) => pModule.source !== pDependency.resolved,
6
+ ),
7
+ };
8
8
  }
@@ -7,102 +7,102 @@ import { bus } from "#utl/bus.mjs";
7
7
  const TOTAL_STEPS = 10;
8
8
 
9
9
  export function c(pComplete, pTotal = TOTAL_STEPS) {
10
- return { complete: pComplete / pTotal };
10
+ return { complete: pComplete / pTotal };
11
11
  }
12
12
 
13
13
  /** @type {import("../../types/dependency-cruiser.js").cruise} */
14
14
  // eslint-disable-next-line max-lines-per-function, max-statements
15
15
  export default async function cruise(
16
- pFileAndDirectoryArray,
17
- pCruiseOptions,
18
- pResolveOptions,
19
- pTranspileOptions,
16
+ pFileAndDirectoryArray,
17
+ pCruiseOptions,
18
+ pResolveOptions,
19
+ pTranspileOptions,
20
20
  ) {
21
- bus.summary("parse options", c(1));
22
- const lCruiseOptionsValid = assertCruiseOptionsValid(pCruiseOptions);
23
- /** @type {import("../../types/strict-options.js").IStrictCruiseOptions} */
24
- let lCruiseOptions = normalizeCruiseOptions(
25
- lCruiseOptionsValid,
26
- pFileAndDirectoryArray,
27
- );
28
- let lCache = null;
21
+ bus.summary("parse options", c(1));
22
+ const lCruiseOptionsValid = assertCruiseOptionsValid(pCruiseOptions);
23
+ /** @type {import("../../types/strict-options.js").IStrictCruiseOptions} */
24
+ let lCruiseOptions = normalizeCruiseOptions(
25
+ lCruiseOptionsValid,
26
+ pFileAndDirectoryArray,
27
+ );
28
+ let lCache = null;
29
29
 
30
- if (lCruiseOptions.cache) {
31
- bus.summary(
32
- `cache: check freshness with ${lCruiseOptions.cache.strategy}`,
33
- c(2),
34
- );
30
+ if (lCruiseOptions.cache) {
31
+ bus.summary(
32
+ `cache: check freshness with ${lCruiseOptions.cache.strategy}`,
33
+ c(2),
34
+ );
35
35
 
36
- const { default: Cache } = await import("#cache/cache.mjs");
37
- lCache = new Cache(
38
- lCruiseOptions.cache.strategy,
39
- lCruiseOptions.cache.compress,
40
- );
41
- const lCachedResults = await lCache.read(lCruiseOptions.cache.folder);
36
+ const { default: Cache } = await import("#cache/cache.mjs");
37
+ lCache = new Cache(
38
+ lCruiseOptions.cache.strategy,
39
+ lCruiseOptions.cache.compress,
40
+ );
41
+ const lCachedResults = await lCache.read(lCruiseOptions.cache.folder);
42
42
 
43
- if (await lCache.canServeFromCache(lCruiseOptions, lCachedResults)) {
44
- bus.summary("cache: report from cache", c(8));
45
- return await reportWrap(lCachedResults, lCruiseOptions);
46
- }
47
- }
43
+ if (await lCache.canServeFromCache(lCruiseOptions, lCachedResults)) {
44
+ bus.summary("cache: report from cache", c(8));
45
+ return await reportWrap(lCachedResults, lCruiseOptions);
46
+ }
47
+ }
48
48
 
49
- bus.summary("import analytical modules", c(3));
50
- const [
51
- { default: normalizeRuleSet },
52
- { default: assertRuleSetValid },
53
- { default: normalizeFilesAndDirectories },
54
- { default: normalizeResolveOptions },
55
- { default: extract },
56
- { default: enrich },
57
- ] = await Promise.all([
58
- // despite rule set parsing being behind an if, it's the 'normal' use case
59
- // for dependency-cruiser, so import it unconditionally nonetheless
60
- import("./rule-set/normalize.mjs"),
61
- import("./rule-set/assert-validity.mjs"),
62
- import("./files-and-dirs/normalize.mjs"),
63
- import("./resolve-options/normalize.mjs"),
64
- import("#extract/index.mjs"),
65
- import("#enrich/index.mjs"),
66
- ]);
49
+ bus.summary("import analytical modules", c(3));
50
+ const [
51
+ { default: normalizeRuleSet },
52
+ { default: assertRuleSetValid },
53
+ { default: normalizeFilesAndDirectories },
54
+ { default: normalizeResolveOptions },
55
+ { default: extract },
56
+ { default: enrich },
57
+ ] = await Promise.all([
58
+ // despite rule set parsing being behind an if, it's the 'normal' use case
59
+ // for dependency-cruiser, so import it unconditionally nonetheless
60
+ import("./rule-set/normalize.mjs"),
61
+ import("./rule-set/assert-validity.mjs"),
62
+ import("./files-and-dirs/normalize.mjs"),
63
+ import("./resolve-options/normalize.mjs"),
64
+ import("#extract/index.mjs"),
65
+ import("#enrich/index.mjs"),
66
+ ]);
67
67
 
68
- if (lCruiseOptions.ruleSet) {
69
- bus.summary("parse rule set", c(4));
70
- lCruiseOptions.ruleSet = normalizeRuleSet(
71
- assertRuleSetValid(lCruiseOptions.ruleSet),
72
- );
73
- }
68
+ if (lCruiseOptions.ruleSet) {
69
+ bus.summary("parse rule set", c(4));
70
+ lCruiseOptions.ruleSet = normalizeRuleSet(
71
+ assertRuleSetValid(lCruiseOptions.ruleSet),
72
+ );
73
+ }
74
74
 
75
- const lNormalizedFileAndDirectoryArray = normalizeFilesAndDirectories(
76
- pFileAndDirectoryArray,
77
- );
75
+ const lNormalizedFileAndDirectoryArray = normalizeFilesAndDirectories(
76
+ pFileAndDirectoryArray,
77
+ );
78
78
 
79
- bus.summary("determine how to resolve", c(5));
80
- const lNormalizedResolveOptions = await normalizeResolveOptions(
81
- pResolveOptions,
82
- lCruiseOptions,
83
- pTranspileOptions?.tsConfig,
84
- );
79
+ bus.summary("determine how to resolve", c(5));
80
+ const lNormalizedResolveOptions = await normalizeResolveOptions(
81
+ pResolveOptions,
82
+ lCruiseOptions,
83
+ pTranspileOptions?.tsConfig,
84
+ );
85
85
 
86
- bus.summary("read files", c(6));
87
- const lExtractionResult = extract(
88
- lNormalizedFileAndDirectoryArray,
89
- lCruiseOptions,
90
- lNormalizedResolveOptions,
91
- pTranspileOptions,
92
- );
86
+ bus.summary("read files", c(6));
87
+ const lExtractionResult = extract(
88
+ lNormalizedFileAndDirectoryArray,
89
+ lCruiseOptions,
90
+ lNormalizedResolveOptions,
91
+ pTranspileOptions,
92
+ );
93
93
 
94
- bus.summary("analyze", c(7));
95
- const lCruiseResult = enrich(
96
- lExtractionResult,
97
- lCruiseOptions,
98
- lNormalizedFileAndDirectoryArray,
99
- );
94
+ bus.summary("analyze", c(7));
95
+ const lCruiseResult = enrich(
96
+ lExtractionResult,
97
+ lCruiseOptions,
98
+ lNormalizedFileAndDirectoryArray,
99
+ );
100
100
 
101
- if (lCruiseOptions.cache) {
102
- bus.summary("cache: save", c(8));
103
- await lCache.write(lCruiseOptions.cache.folder, lCruiseResult);
104
- }
101
+ if (lCruiseOptions.cache) {
102
+ bus.summary("cache: save", c(8));
103
+ await lCache.write(lCruiseOptions.cache.folder, lCruiseResult);
104
+ }
105
105
 
106
- bus.summary("report", c(9));
107
- return await reportWrap(lCruiseResult, lCruiseOptions);
106
+ bus.summary("report", c(9));
107
+ return await reportWrap(lCruiseResult, lCruiseOptions);
108
108
  }
@@ -5,12 +5,12 @@ import { isAbsolute, normalize, relative } from "node:path";
5
5
  * @returns {string}
6
6
  */
7
7
  function relativize(pFileDirectory) {
8
- // if pFileDirectory === process.cwd() path.relative will yield an empty string
9
- // whereas we actually want something non-empty => hence normalize
10
- // the thing
11
- return isAbsolute(pFileDirectory)
12
- ? normalize(relative(process.cwd(), pFileDirectory))
13
- : pFileDirectory;
8
+ // if pFileDirectory === process.cwd() path.relative will yield an empty string
9
+ // whereas we actually want something non-empty => hence normalize
10
+ // the thing
11
+ return isAbsolute(pFileDirectory)
12
+ ? normalize(relative(process.cwd(), pFileDirectory))
13
+ : pFileDirectory;
14
14
  }
15
15
 
16
16
  /**
@@ -18,5 +18,5 @@ function relativize(pFileDirectory) {
18
18
  * @returns {string[]}
19
19
  */
20
20
  export default function normalizeFileAndDirectoryArray(pFileAndDirectoryArray) {
21
- return pFileAndDirectoryArray.map(relativize);
21
+ return pFileAndDirectoryArray.map(relativize);
22
22
  }
@@ -1,25 +1,22 @@
1
- import Ajv from "ajv";
2
-
3
1
  import { assertFormatOptionsValid } from "./options/assert-validity.mjs";
4
2
  import { normalizeFormatOptions } from "./options/normalize.mjs";
5
3
  import reportWrap from "./report-wrap.mjs";
6
- import cruiseResultSchema from "#cruise-result-schema";
4
+ import validateCruiseResultSchema from "#schema/cruise-result.validate.mjs";
5
+ import { validateErrorsToString } from "#schema/utl.mjs";
7
6
 
8
7
  function validateResultAgainstSchema(pResult) {
9
- const ajv = new Ajv();
10
-
11
- if (!ajv.validate(cruiseResultSchema, pResult)) {
12
- throw new Error(
13
- `The supplied dependency-cruiser result is not valid: ${ajv.errorsText()}.\n`,
14
- );
15
- }
8
+ if (!validateCruiseResultSchema(pResult)) {
9
+ throw new Error(
10
+ `The supplied dependency-cruiser result is not valid: ${validateErrorsToString(validateCruiseResultSchema.errors)}.\n`,
11
+ );
12
+ }
16
13
  }
17
14
  /** @type {import("../../types/dependency-cruiser.js").format} */
18
15
  export default async function format(pResult, pFormatOptions = {}) {
19
- const lFormatOptions = normalizeFormatOptions(pFormatOptions);
20
- assertFormatOptionsValid(lFormatOptions);
16
+ const lFormatOptions = normalizeFormatOptions(pFormatOptions);
17
+ assertFormatOptionsValid(lFormatOptions);
21
18
 
22
- validateResultAgainstSchema(pResult);
19
+ validateResultAgainstSchema(pResult);
23
20
 
24
- return await reportWrap(pResult, lFormatOptions);
21
+ return await reportWrap(pResult, lFormatOptions);
25
22
  }
@@ -1,12 +1,12 @@
1
1
  import { has, get, set } from "#utl/object-util.mjs";
2
2
 
3
3
  const RE_PROPERTIES = [
4
- "path",
5
- "pathNot",
6
- "license",
7
- "licenseNot",
8
- "exoticRequire",
9
- "exoticRequireNot",
4
+ "path",
5
+ "pathNot",
6
+ "license",
7
+ "licenseNot",
8
+ "exoticRequire",
9
+ "exoticRequireNot",
10
10
  ];
11
11
 
12
12
  /**
@@ -15,29 +15,29 @@ const RE_PROPERTIES = [
15
15
  * @returns {string}
16
16
  */
17
17
  export function normalizeToREAsString(pStringish) {
18
- if (Array.isArray(pStringish)) {
19
- return pStringish.join("|");
20
- }
21
- return pStringish;
18
+ if (Array.isArray(pStringish)) {
19
+ return pStringish.join("|");
20
+ }
21
+ return pStringish;
22
22
  }
23
23
 
24
24
  export function normalizeREProperties(
25
- pPropertyContainer,
26
- pREProperties = RE_PROPERTIES,
25
+ pPropertyContainer,
26
+ pREProperties = RE_PROPERTIES,
27
27
  ) {
28
- let lPropertyContainer = structuredClone(pPropertyContainer);
28
+ let lPropertyContainer = structuredClone(pPropertyContainer);
29
29
 
30
- for (const lProperty of pREProperties) {
31
- // lProperty can be nested properties, so we use _.has and _.get
32
- // instead of elvis operators
33
- if (has(lPropertyContainer, lProperty)) {
34
- set(
35
- lPropertyContainer,
36
- lProperty,
30
+ for (const lProperty of pREProperties) {
31
+ // lProperty can be nested properties, so we use _.has and _.get
32
+ // instead of elvis operators
33
+ if (has(lPropertyContainer, lProperty)) {
34
+ set(
35
+ lPropertyContainer,
36
+ lProperty,
37
37
 
38
- normalizeToREAsString(get(lPropertyContainer, lProperty)),
39
- );
40
- }
41
- }
42
- return lPropertyContainer;
38
+ normalizeToREAsString(get(lPropertyContainer, lProperty)),
39
+ );
40
+ }
41
+ }
42
+ return lPropertyContainer;
43
43
  }
@@ -1,20 +1,20 @@
1
1
  import format from "./format.mjs";
2
2
  import cruise from "./cruise.mjs";
3
3
  import {
4
- allExtensions,
5
- getAvailableTranspilers,
4
+ allExtensions,
5
+ getAvailableTranspilers,
6
6
  } from "#extract/transpile/meta.mjs";
7
7
 
8
8
  export {
9
- allExtensions,
10
- getAvailableTranspilers,
9
+ allExtensions,
10
+ getAvailableTranspilers,
11
11
  } from "#extract/transpile/meta.mjs";
12
12
  export { default as cruise } from "./cruise.mjs";
13
13
  export { default as format } from "./format.mjs";
14
14
 
15
15
  export default {
16
- cruise,
17
- format,
18
- allExtensions,
19
- getAvailableTranspilers,
16
+ cruise,
17
+ format,
18
+ allExtensions,
19
+ getAvailableTranspilers,
20
20
  };