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
@@ -3,28 +3,28 @@ import tryImport from "#utl/try-import.mjs";
3
3
  import meta from "#meta.cjs";
4
4
 
5
5
  const typescript = await tryImport(
6
- "typescript",
7
- meta.supportedTranspilers.typescript,
6
+ "typescript",
7
+ meta.supportedTranspilers.typescript,
8
8
  );
9
9
 
10
10
  const FORMAT_DIAGNOSTICS_HOST = {
11
- getCanonicalFileName(pFileName) {
12
- let lReturnValue = pFileName.toLowerCase();
11
+ getCanonicalFileName(pFileName) {
12
+ let lReturnValue = pFileName.toLowerCase();
13
13
 
14
- // depends on the platform which branch is taken, hence the c8 ignore
15
- /* c8 ignore start */
16
- if (typescript?.sys?.useCaseSensitiveFileNames ?? false) {
17
- lReturnValue = pFileName;
18
- }
19
- /* c8 ignore stop */
20
- return lReturnValue;
21
- },
22
- getCurrentDirectory() {
23
- return process.cwd();
24
- },
25
- getNewLine() {
26
- return "\n";
27
- },
14
+ // depends on the platform which branch is taken, hence the c8 ignore
15
+ /* c8 ignore start */
16
+ if (typescript?.sys?.useCaseSensitiveFileNames ?? false) {
17
+ lReturnValue = pFileName;
18
+ }
19
+ /* c8 ignore stop */
20
+ return lReturnValue;
21
+ },
22
+ getCurrentDirectory() {
23
+ return process.cwd();
24
+ },
25
+ getNewLine() {
26
+ return "\n";
27
+ },
28
28
  };
29
29
 
30
30
  /**
@@ -39,38 +39,36 @@ const FORMAT_DIAGNOSTICS_HOST = {
39
39
  * @throws {TypeError} when the tsconfig is unreadable
40
40
  */
41
41
  export default function extractTSConfig(pTSConfigFileName) {
42
- let lReturnValue = {};
42
+ let lReturnValue = {};
43
43
 
44
- if (typescript) {
45
- const lConfig = typescript.readConfigFile(
46
- pTSConfigFileName,
47
- typescript.sys.readFile,
48
- );
44
+ if (typescript) {
45
+ const lConfig = typescript.readConfigFile(
46
+ pTSConfigFileName,
47
+ typescript.sys.readFile,
48
+ );
49
49
 
50
- if (typeof lConfig.error !== "undefined") {
51
- throw new TypeError(
52
- typescript.formatDiagnostics([lConfig.error], FORMAT_DIAGNOSTICS_HOST),
53
- );
54
- }
55
- lReturnValue = typescript.parseJsonConfigFileContent(
56
- lConfig.config,
57
- typescript.sys,
58
- dirname(resolve(pTSConfigFileName)),
59
- {},
60
- pTSConfigFileName,
61
- );
50
+ if (typeof lConfig.error !== "undefined") {
51
+ throw new TypeError(
52
+ typescript.formatDiagnostics([lConfig.error], FORMAT_DIAGNOSTICS_HOST),
53
+ );
54
+ }
55
+ lReturnValue = typescript.parseJsonConfigFileContent(
56
+ lConfig.config,
57
+ typescript.sys,
58
+ dirname(resolve(pTSConfigFileName)),
59
+ {},
60
+ pTSConfigFileName,
61
+ );
62
62
 
63
- if (lReturnValue.errors.length > 0) {
64
- throw new Error(
65
- typescript.formatDiagnostics(
66
- lReturnValue.errors,
67
- FORMAT_DIAGNOSTICS_HOST,
68
- ),
69
- );
70
- }
71
- // lRetval.fileNames; // all files included in the project
72
- // lRetval.options; // CompilerOptions
73
- }
63
+ if (lReturnValue.errors.length > 0) {
64
+ throw new Error(
65
+ typescript.formatDiagnostics(
66
+ lReturnValue.errors,
67
+ FORMAT_DIAGNOSTICS_HOST,
68
+ ),
69
+ );
70
+ }
71
+ }
74
72
 
75
- return lReturnValue;
73
+ return lReturnValue;
76
74
  }
@@ -6,99 +6,99 @@ import makeAbsolute from "./make-absolute.mjs";
6
6
  const require = createRequire(import.meta.url);
7
7
 
8
8
  function pryConfigFromTheConfig(
9
- pWebpackConfigModule,
10
- pEnvironment,
11
- pArguments,
9
+ pWebpackConfigModule,
10
+ pEnvironment,
11
+ pArguments,
12
12
  ) {
13
- let lReturnValue = pWebpackConfigModule;
13
+ let lReturnValue = pWebpackConfigModule;
14
14
 
15
- if (typeof pWebpackConfigModule === "function") {
16
- lReturnValue = pWebpackConfigModule(pEnvironment, pArguments);
17
- }
15
+ if (typeof pWebpackConfigModule === "function") {
16
+ lReturnValue = pWebpackConfigModule(pEnvironment, pArguments);
17
+ }
18
18
 
19
- if (Array.isArray(pWebpackConfigModule)) {
20
- lReturnValue = pryConfigFromTheConfig(
21
- pWebpackConfigModule[0],
22
- pEnvironment,
23
- pArguments,
24
- );
25
- }
19
+ if (Array.isArray(pWebpackConfigModule)) {
20
+ lReturnValue = pryConfigFromTheConfig(
21
+ pWebpackConfigModule[0],
22
+ pEnvironment,
23
+ pArguments,
24
+ );
25
+ }
26
26
 
27
- return lReturnValue;
27
+ return lReturnValue;
28
28
  }
29
29
 
30
30
  function suggestModules(pSuggestionList, pWebpackConfigFilename) {
31
- let lReturnValue = "";
32
- let lSuggestionList = pSuggestionList;
31
+ let lReturnValue = "";
32
+ let lSuggestionList = pSuggestionList;
33
33
 
34
- if (pSuggestionList && typeof pSuggestionList === "string") {
35
- lSuggestionList = [pSuggestionList];
36
- }
34
+ if (pSuggestionList && typeof pSuggestionList === "string") {
35
+ lSuggestionList = [pSuggestionList];
36
+ }
37
37
 
38
- if (Array.isArray(lSuggestionList) && lSuggestionList.length > 0) {
39
- lReturnValue = lSuggestionList.reduce(
40
- (pAll, pCurrent) => `${pAll} - ${pCurrent.module || pCurrent}\n`,
41
- `\n Some npm modules that might fix that problem (one of which you'll` +
42
- `\n need so '${pWebpackConfigFilename}' works with webpack anyway):\n`,
43
- );
44
- }
45
- return lReturnValue;
38
+ if (Array.isArray(lSuggestionList) && lSuggestionList.length > 0) {
39
+ lReturnValue = lSuggestionList.reduce(
40
+ (pAll, pCurrent) => `${pAll} - ${pCurrent.module || pCurrent}\n`,
41
+ `\n Some npm modules that might fix that problem (one of which you'll` +
42
+ `\n need so '${pWebpackConfigFilename}' works with webpack anyway):\n`,
43
+ );
44
+ }
45
+ return lReturnValue;
46
46
  }
47
47
 
48
48
  function tryRegisterNonNative(pWebpackConfigFilename) {
49
- const lConfigExtension = extname(pWebpackConfigFilename);
50
- const interpret = require("interpret");
51
- const rechoir = require("rechoir");
49
+ const lConfigExtension = extname(pWebpackConfigFilename);
50
+ const interpret = require("interpret");
51
+ const rechoir = require("rechoir");
52
52
 
53
- try {
54
- rechoir.prepare(interpret.extensions, pWebpackConfigFilename);
55
- } catch (pError) {
56
- throw new Error(
57
- `${pError.message}` +
58
- `\n${suggestModules(
59
- // eslint-disable-next-line security/detect-object-injection
60
- interpret.extensions[lConfigExtension],
61
- pWebpackConfigFilename,
62
- )}`,
63
- );
64
- }
53
+ try {
54
+ rechoir.prepare(interpret.extensions, pWebpackConfigFilename);
55
+ } catch (pError) {
56
+ throw new Error(
57
+ `${pError.message}` +
58
+ `\n${suggestModules(
59
+ // eslint-disable-next-line security/detect-object-injection
60
+ interpret.extensions[lConfigExtension],
61
+ pWebpackConfigFilename,
62
+ )}`,
63
+ );
64
+ }
65
65
  }
66
66
 
67
67
  function isNativelySupported(pWebpackConfigFilename) {
68
- const lNativelySupportedExtensions = [
69
- ".js",
70
- ".cjs",
71
- ".mjs",
72
- ".json",
73
- ".node",
74
- ];
75
- const lWebpackConfigExtension = extname(pWebpackConfigFilename);
76
- return lNativelySupportedExtensions.includes(lWebpackConfigExtension);
68
+ const lNativelySupportedExtensions = [
69
+ ".js",
70
+ ".cjs",
71
+ ".mjs",
72
+ ".json",
73
+ ".node",
74
+ ];
75
+ const lWebpackConfigExtension = extname(pWebpackConfigFilename);
76
+ return lNativelySupportedExtensions.includes(lWebpackConfigExtension);
77
77
  }
78
78
 
79
79
  async function attemptImport(pAbsoluteWebpackConfigFileName) {
80
- try {
81
- if (isNativelySupported(pAbsoluteWebpackConfigFileName)) {
82
- const { default: lModule } = await import(
83
- `file://${pAbsoluteWebpackConfigFileName}`
84
- );
85
- return lModule;
86
- } else {
87
- tryRegisterNonNative(pAbsoluteWebpackConfigFileName);
88
- /* we're using still using require instead of dynamic imports here because
89
- * the modules webpack uses for non-native formats monkey-patch on the commonjs
90
- * module system. If we'd use a dynamic import, these monkey-patches wouldn't
91
- * be used.
92
- */
93
- /* eslint n/global-require:0, security/detect-non-literal-require:0, import/no-dynamic-require:0 */
94
- return require(pAbsoluteWebpackConfigFileName);
95
- }
96
- } catch (pError) {
97
- throw new Error(
98
- `The webpack config '${pAbsoluteWebpackConfigFileName}' seems to be not quite valid for use:` +
99
- `\n\n "${pError}"\n`,
100
- );
101
- }
80
+ try {
81
+ if (isNativelySupported(pAbsoluteWebpackConfigFileName)) {
82
+ const { default: lModule } = await import(
83
+ `file://${pAbsoluteWebpackConfigFileName}`
84
+ );
85
+ return lModule;
86
+ } else {
87
+ tryRegisterNonNative(pAbsoluteWebpackConfigFileName);
88
+ /* we're using still using require instead of dynamic imports here because
89
+ * the modules webpack uses for non-native formats monkey-patch on the commonjs
90
+ * module system. If we'd use a dynamic import, these monkey-patches wouldn't
91
+ * be used.
92
+ */
93
+ /* eslint n/global-require:0, security/detect-non-literal-require:0, import/no-dynamic-require:0 */
94
+ return require(pAbsoluteWebpackConfigFileName);
95
+ }
96
+ } catch (pError) {
97
+ throw new Error(
98
+ `The webpack config '${pAbsoluteWebpackConfigFileName}' seems to be not quite valid for use:` +
99
+ `\n\n "${pError}"\n`,
100
+ );
101
+ }
102
102
  }
103
103
 
104
104
  /**
@@ -117,21 +117,21 @@ async function attemptImport(pAbsoluteWebpackConfigFileName) {
117
117
  * doesn't exist, or because it's invalid)
118
118
  */
119
119
  export default async function extractWebpackResolveConfig(
120
- pWebpackConfigFilename,
121
- pEnvironment,
122
- pArguments,
120
+ pWebpackConfigFilename,
121
+ pEnvironment,
122
+ pArguments,
123
123
  ) {
124
- let lReturnValue = {};
125
- const lAbsoluteConfigFilename = makeAbsolute(pWebpackConfigFilename);
126
- const lWebpackConfig = pryConfigFromTheConfig(
127
- await attemptImport(lAbsoluteConfigFilename),
128
- pEnvironment,
129
- pArguments,
130
- );
124
+ let lReturnValue = {};
125
+ const lAbsoluteConfigFilename = makeAbsolute(pWebpackConfigFilename);
126
+ const lWebpackConfig = pryConfigFromTheConfig(
127
+ await attemptImport(lAbsoluteConfigFilename),
128
+ pEnvironment,
129
+ pArguments,
130
+ );
131
131
 
132
- if (lWebpackConfig.resolve) {
133
- lReturnValue = lWebpackConfig.resolve;
134
- }
132
+ if (lWebpackConfig.resolve) {
133
+ lReturnValue = lWebpackConfig.resolve;
134
+ }
135
135
 
136
- return lReturnValue;
136
+ return lReturnValue;
137
137
  }
@@ -1,10 +1,10 @@
1
1
  import { join, isAbsolute } from "node:path";
2
2
 
3
3
  export default function makeAbsolute(pFilename) {
4
- let lReturnValue = pFilename;
4
+ let lReturnValue = pFilename;
5
5
 
6
- if (!isAbsolute(pFilename)) {
7
- lReturnValue = join(process.cwd(), pFilename);
8
- }
9
- return lReturnValue;
6
+ if (!isAbsolute(pFilename)) {
7
+ lReturnValue = join(process.cwd(), pFilename);
8
+ }
9
+ return lReturnValue;
10
10
  }
@@ -1,12 +1,12 @@
1
1
  import { validateDependency, validateModule } from "#validate/index.mjs";
2
2
 
3
3
  function addDependencyViolations(pModule, pDependency, pRuleSet, pValidate) {
4
- return {
5
- ...pDependency,
6
- ...(pValidate
7
- ? validateDependency(pRuleSet, pModule, pDependency)
8
- : { valid: true }),
9
- };
4
+ return {
5
+ ...pDependency,
6
+ ...(pValidate
7
+ ? validateDependency(pRuleSet, pModule, pDependency)
8
+ : { valid: true }),
9
+ };
10
10
  }
11
11
 
12
12
  /**
@@ -22,11 +22,11 @@ function addDependencyViolations(pModule, pDependency, pRuleSet, pValidate) {
22
22
  * valid and if not which rules were violated
23
23
  */
24
24
  export default function addValidations(pModules, pRuleSet, pValidate) {
25
- return pModules.map((pModule) => ({
26
- ...pModule,
27
- ...(pValidate ? validateModule(pRuleSet, pModule) : { valid: true }),
28
- dependencies: pModule.dependencies.map((pDependency) =>
29
- addDependencyViolations(pModule, pDependency, pRuleSet, pValidate),
30
- ),
31
- }));
25
+ return pModules.map((pModule) => ({
26
+ ...pModule,
27
+ ...(pValidate ? validateModule(pRuleSet, pModule) : { valid: true }),
28
+ dependencies: pModule.dependencies.map((pDependency) =>
29
+ addDependencyViolations(pModule, pDependency, pRuleSet, pValidate),
30
+ ),
31
+ }));
32
32
  }
@@ -3,44 +3,44 @@
3
3
  /** @import { IFlattenedRuleSet } from "../../../types/rule-set.mjs" */
4
4
 
5
5
  function isCycleRule(pRule) {
6
- return (
7
- /* c8 ignore start */
8
- Object.hasOwn(pRule?.to ?? {}, "circular")
9
- /* c8 ignore stop */
10
- );
6
+ return (
7
+ /* c8 ignore start */
8
+ Object.hasOwn(pRule?.to ?? {}, "circular")
9
+ /* c8 ignore stop */
10
+ );
11
11
  }
12
12
  /**
13
13
  * @param {IFlattenedRuleSet} pRuleSet
14
14
  * @returns {boolean}
15
15
  */
16
16
  export function hasCycleRule(pRuleSet) {
17
- return (
18
- (pRuleSet?.forbidden ?? []).some(isCycleRule) ||
19
- (pRuleSet?.allowed ?? []).some(isCycleRule)
20
- );
17
+ return (
18
+ (pRuleSet?.forbidden ?? []).some(isCycleRule) ||
19
+ (pRuleSet?.allowed ?? []).some(isCycleRule)
20
+ );
21
21
  }
22
22
 
23
23
  function addCircularityCheckToDependency(
24
- pIndexedGraph,
25
- pFrom,
26
- pToDep,
27
- pDependencyName,
24
+ pIndexedGraph,
25
+ pFrom,
26
+ pToDep,
27
+ pDependencyName,
28
28
  ) {
29
- let lReturnValue = {
30
- ...pToDep,
31
- circular: false,
32
- };
33
- const lCycle = pIndexedGraph.getCycle(pFrom, pToDep[pDependencyName]);
29
+ let lReturnValue = {
30
+ ...pToDep,
31
+ circular: false,
32
+ };
33
+ const lCycle = pIndexedGraph.getCycle(pFrom, pToDep[pDependencyName]);
34
34
 
35
- if (lCycle.length > 0) {
36
- lReturnValue = {
37
- ...lReturnValue,
38
- circular: true,
39
- cycle: lCycle,
40
- };
41
- }
35
+ if (lCycle.length > 0) {
36
+ lReturnValue = {
37
+ ...lReturnValue,
38
+ circular: true,
39
+ cycle: lCycle,
40
+ };
41
+ }
42
42
 
43
- return lReturnValue;
43
+ return lReturnValue;
44
44
  }
45
45
 
46
46
  /**
@@ -49,28 +49,28 @@ function addCircularityCheckToDependency(
49
49
  * dependencies with that added.
50
50
  */
51
51
  export default function detectAndAddCycles(
52
- pNodes,
53
- pIndexedNodes,
54
- { pSourceAttribute, pDependencyName, pSkipAnalysisNotInRules, pRuleSet },
52
+ pNodes,
53
+ pIndexedNodes,
54
+ { pSourceAttribute, pDependencyName, pSkipAnalysisNotInRules, pRuleSet },
55
55
  ) {
56
- if (!pSkipAnalysisNotInRules || hasCycleRule(pRuleSet)) {
57
- return pNodes.map((pModule) => ({
58
- ...pModule,
59
- dependencies: pModule.dependencies.map((pToDep) =>
60
- addCircularityCheckToDependency(
61
- pIndexedNodes,
62
- pModule[pSourceAttribute],
63
- pToDep,
64
- pDependencyName,
65
- ),
66
- ),
67
- }));
68
- }
69
- return pNodes.map((pModule) => ({
70
- ...pModule,
71
- dependencies: pModule.dependencies.map((pToDep) => ({
72
- ...pToDep,
73
- circular: false,
74
- })),
75
- }));
56
+ if (!pSkipAnalysisNotInRules || hasCycleRule(pRuleSet)) {
57
+ return pNodes.map((pModule) => ({
58
+ ...pModule,
59
+ dependencies: pModule.dependencies.map((pToDep) =>
60
+ addCircularityCheckToDependency(
61
+ pIndexedNodes,
62
+ pModule[pSourceAttribute],
63
+ pToDep,
64
+ pDependencyName,
65
+ ),
66
+ ),
67
+ }));
68
+ }
69
+ return pNodes.map((pModule) => ({
70
+ ...pModule,
71
+ dependencies: pModule.dependencies.map((pToDep) => ({
72
+ ...pToDep,
73
+ circular: false,
74
+ })),
75
+ }));
76
76
  }
@@ -3,24 +3,24 @@ import { isDependent } from "./module-utl.mjs";
3
3
  /** @import { IFlattenedRuleSet } from "../../../types/rule-set.mjs" */
4
4
 
5
5
  function isDependentsRule(pRule) {
6
- // used in folder rules and when moreUnstable is in the 'to' => governed by
7
- // the 'metrics' flag in options, sot not going to repeat that here
6
+ // used in folder rules and when moreUnstable is in the 'to' => governed by
7
+ // the 'metrics' flag in options, sot not going to repeat that here
8
8
 
9
- // dependents are used in the orphans analsys. hHwever, there is a fall back
10
- // where it does its own analysis, so not going to repeat that check here.
11
- return (
12
- /* c8 ignore start */
13
- Object.hasOwn(pRule?.module ?? {}, "numberOfDependentsLessThan") ||
14
- Object.hasOwn(pRule?.module ?? {}, "numberOfDependentsMoreThan")
15
- /* c8 ignore stop */
16
- );
9
+ // dependents are used in the orphans analsys. However, there is a fall back
10
+ // where it does its own analysis, so not going to repeat that check here.
11
+ return (
12
+ /* c8 ignore start */
13
+ Object.hasOwn(pRule?.module ?? {}, "numberOfDependentsLessThan") ||
14
+ Object.hasOwn(pRule?.module ?? {}, "numberOfDependentsMoreThan")
15
+ /* c8 ignore stop */
16
+ );
17
17
  }
18
18
 
19
19
  export function getDependents(pModule, pModules) {
20
- // perf between O(n) in an unconnected graph and O(n^2) in a fully connected one
21
- return pModules
22
- .filter(isDependent(pModule.source))
23
- .map((pDependentModule) => pDependentModule.source);
20
+ // perf between O(n) in an unconnected graph and O(n^2) in a fully connected one
21
+ return pModules
22
+ .filter(isDependent(pModule.source))
23
+ .map((pDependentModule) => pDependentModule.source);
24
24
  }
25
25
 
26
26
  /**
@@ -28,21 +28,21 @@ export function getDependents(pModule, pModules) {
28
28
  * @returns {boolean}
29
29
  */
30
30
  export function hasDependentsRule(pRuleSet) {
31
- return (
32
- (pRuleSet?.forbidden ?? []).some(isDependentsRule) ||
33
- (pRuleSet?.allowed ?? []).some(isDependentsRule)
34
- );
31
+ return (
32
+ (pRuleSet?.forbidden ?? []).some(isDependentsRule) ||
33
+ (pRuleSet?.allowed ?? []).some(isDependentsRule)
34
+ );
35
35
  }
36
36
 
37
37
  export default function addDependents(
38
- pModules,
39
- { skipAnalysisNotInRules, metrics, ruleSet },
38
+ pModules,
39
+ { skipAnalysisNotInRules, metrics, ruleSet },
40
40
  ) {
41
- if (!skipAnalysisNotInRules || metrics || hasDependentsRule(ruleSet)) {
42
- return pModules.map((pModule) => ({
43
- ...pModule,
44
- dependents: getDependents(pModule, pModules),
45
- }));
46
- }
47
- return pModules;
41
+ if (!skipAnalysisNotInRules || metrics || hasDependentsRule(ruleSet)) {
42
+ return pModules.map((pModule) => ({
43
+ ...pModule,
44
+ dependents: getDependents(pModule, pModules),
45
+ }));
46
+ }
47
+ return pModules;
48
48
  }