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
@@ -2,15 +2,15 @@ import { statSync } from "node:fs";
2
2
  import { toSourceLocationArray } from "./environment-helpers.mjs";
3
3
 
4
4
  export function validateLocation(pLocations) {
5
- for (const lLocation of toSourceLocationArray(pLocations)) {
6
- try {
7
- if (!statSync(lLocation).isDirectory()) {
8
- return `'${lLocation}' doesn't seem to be a folder - please try again`;
9
- }
10
- } catch (pError) {
11
- return `'${lLocation}' doesn't seem to exist - please try again`;
12
- }
13
- }
5
+ for (const lLocation of toSourceLocationArray(pLocations)) {
6
+ try {
7
+ if (!statSync(lLocation).isDirectory()) {
8
+ return `'${lLocation}' doesn't seem to be a folder - please try again`;
9
+ }
10
+ } catch (pError) {
11
+ return `'${lLocation}' doesn't seem to exist - please try again`;
12
+ }
13
+ }
14
14
 
15
- return true;
15
+ return true;
16
16
  }
@@ -1,8 +1,8 @@
1
1
  import { writeFileSync } from "node:fs";
2
2
  import { styleText } from "node:util";
3
3
  import {
4
- fileExists,
5
- getDefaultConfigFileName,
4
+ fileExists,
5
+ getDefaultConfigFileName,
6
6
  } from "./environment-helpers.mjs";
7
7
 
8
8
  /**
@@ -19,24 +19,24 @@ import {
19
19
  *
20
20
  */
21
21
  export default function writeConfig(
22
- pConfig,
23
- pFileName = getDefaultConfigFileName(),
24
- pOutStream = process.stdout,
22
+ pConfig,
23
+ pFileName = getDefaultConfigFileName(),
24
+ pOutStream = process.stdout,
25
25
  ) {
26
- if (fileExists(pFileName)) {
27
- throw new Error(`A '${pFileName}' already exists here - leaving it be.\n`);
28
- } else {
29
- try {
30
- writeFileSync(pFileName, pConfig);
31
- pOutStream.write(
32
- `\n ${styleText("green", "✔")} Successfully created '${pFileName}'\n\n`,
33
- );
34
- /* c8 ignore start */
35
- } catch (pError) {
36
- throw new Error(
37
- `ERROR: Writing to '${pFileName}' didn't work. ${pError}\n`,
38
- );
39
- }
40
- /* c8 ignore stop */
41
- }
26
+ if (fileExists(pFileName)) {
27
+ throw new Error(`A '${pFileName}' already exists here - leaving it be.\n`);
28
+ } else {
29
+ try {
30
+ writeFileSync(pFileName, pConfig);
31
+ pOutStream.write(
32
+ `\n ${styleText("green", "✔")} Successfully created '${pFileName}'\n\n`,
33
+ );
34
+ /* c8 ignore start */
35
+ } catch (pError) {
36
+ throw new Error(
37
+ `ERROR: Writing to '${pFileName}' didn't work. ${pError}\n`,
38
+ );
39
+ }
40
+ /* c8 ignore stop */
41
+ }
42
42
  }
@@ -10,52 +10,52 @@ import { folderNameArrayToRE } from "./utl.mjs";
10
10
  const PACKAGE_MANIFEST = `./${_PACKAGE_MANIFEST}`;
11
11
 
12
12
  const EXPERIMENTAL_SCRIPT_DOC = [
13
- {
14
- name: "depcruise",
15
- headline: "npm run depcruise",
16
- description:
17
- " validates against the rules in .dependency-cruiser.js and writes the" +
18
- EOL +
19
- " outcome to stdout",
20
- },
21
- {
22
- name: "depcruise:html",
23
- headline: "npm run depcruise:html",
24
- description:
25
- " validates against the rules in .dependency-cruiser.js and writes it to" +
26
- EOL +
27
- " 'dependency-violation-report.html' with a friendly layout",
28
- },
29
- {
30
- name: "depcruise:graph",
31
- headline: "npm run depcruise:graph",
32
- description:
33
- " writes a detailed internal graph of your app to 'dependency-graph.html'",
34
- },
35
- {
36
- name: "depcruise:graph:dev",
37
- headline: "npm run depcruise:graph:dev",
38
- description:
39
- " opens a detailed internal graph of your app in your default browser" +
40
- EOL +
41
- " (uses the 'browser' command line program)",
42
- },
43
- {
44
- name: "depcruise:graph:archi",
45
- headline: "depcruise:graph:archi",
46
- description:
47
- " writes a high-level internal graph of your app to" +
48
- EOL +
49
- " 'high-level-dependency-graph.html",
50
- },
51
- {
52
- name: "depcruise:focus",
53
- headline: "npm run depcruise:focus <regex>",
54
- description:
55
- " writes all dependencies to and from modules matching the given <regex>" +
56
- EOL +
57
- " to stdout - in simple text",
58
- },
13
+ {
14
+ name: "depcruise",
15
+ headline: "npm run depcruise",
16
+ description:
17
+ " validates against the rules in .dependency-cruiser.js and writes the" +
18
+ EOL +
19
+ " outcome to stdout",
20
+ },
21
+ {
22
+ name: "depcruise:html",
23
+ headline: "npm run depcruise:html",
24
+ description:
25
+ " validates against the rules in .dependency-cruiser.js and writes it to" +
26
+ EOL +
27
+ " 'dependency-violation-report.html' with a friendly layout",
28
+ },
29
+ {
30
+ name: "depcruise:graph",
31
+ headline: "npm run depcruise:graph",
32
+ description:
33
+ " writes a detailed internal graph of your app to 'dependency-graph.html'",
34
+ },
35
+ {
36
+ name: "depcruise:graph:dev",
37
+ headline: "npm run depcruise:graph:dev",
38
+ description:
39
+ " opens a detailed internal graph of your app in your default browser" +
40
+ EOL +
41
+ " (uses the 'browser' command line program)",
42
+ },
43
+ {
44
+ name: "depcruise:graph:archi",
45
+ headline: "depcruise:graph:archi",
46
+ description:
47
+ " writes a high-level internal graph of your app to" +
48
+ EOL +
49
+ " 'high-level-dependency-graph.html",
50
+ },
51
+ {
52
+ name: "depcruise:focus",
53
+ headline: "npm run depcruise:focus <regex>",
54
+ description:
55
+ " writes all dependencies to and from modules matching the given <regex>" +
56
+ EOL +
57
+ " to stdout - in simple text",
58
+ },
59
59
  ];
60
60
 
61
61
  /**
@@ -63,25 +63,25 @@ const EXPERIMENTAL_SCRIPT_DOC = [
63
63
  * @return {any} an bunch of key value pairs that can be plonked into a `scripts` attribute in a package.json
64
64
  */
65
65
  export function compileRunScripts(pInitOptions) {
66
- let lReturnValue = {};
66
+ let lReturnValue = {};
67
67
 
68
- if (pInitOptions && (pInitOptions.sourceLocation || []).length > 0) {
69
- const lSourceLocations = pInitOptions.sourceLocation.join(" ");
70
- const lSourceLocationRE = folderNameArrayToRE(pInitOptions.sourceLocation);
71
- const lTestLocations = (pInitOptions.testLocation || []).join(" ");
68
+ if (pInitOptions && (pInitOptions.sourceLocation || []).length > 0) {
69
+ const lSourceLocations = pInitOptions.sourceLocation.join(" ");
70
+ const lSourceLocationRE = folderNameArrayToRE(pInitOptions.sourceLocation);
71
+ const lTestLocations = (pInitOptions.testLocation || []).join(" ");
72
72
 
73
- lReturnValue = {
74
- depcruise: `depcruise ${lSourceLocations} ${lTestLocations}`,
75
- "depcruise:graph": `depcruise ${lSourceLocations} --include-only '${lSourceLocationRE}' --output-type dot | dot -T svg | depcruise-wrap-stream-in-html > dependency-graph.html`,
76
- "depcruise:graph:dev": `depcruise ${lSourceLocations} --include-only '${lSourceLocationRE}' --prefix vscode://file/$(pwd)/ --output-type dot | dot -T svg | depcruise-wrap-stream-in-html | browser`,
77
- "depcruise:graph:archi": `depcruise ${lSourceLocations} --include-only '${lSourceLocationRE}' --output-type archi | dot -T svg | depcruise-wrap-stream-in-html > high-level-dependency-graph.html`,
78
- "depcruise:html": `depcruise ${lSourceLocations} ${lTestLocations} --progress --output-type err-html --output-to dependency-violation-report.html`,
79
- "depcruise:text": `depcruise ${lSourceLocations} ${lTestLocations} --progress --output-type text`,
80
- "depcruise:focus": `depcruise ${lSourceLocations} ${lTestLocations} --progress --output-type text --focus`,
81
- };
82
- }
73
+ lReturnValue = {
74
+ depcruise: `depcruise ${lSourceLocations} ${lTestLocations}`,
75
+ "depcruise:graph": `depcruise ${lSourceLocations} --include-only '${lSourceLocationRE}' --output-type dot | dot -T svg | depcruise-wrap-stream-in-html > dependency-graph.html`,
76
+ "depcruise:graph:dev": `depcruise ${lSourceLocations} --include-only '${lSourceLocationRE}' --prefix vscode://file/$(pwd)/ --output-type dot | dot -T svg | depcruise-wrap-stream-in-html | browser`,
77
+ "depcruise:graph:archi": `depcruise ${lSourceLocations} --include-only '${lSourceLocationRE}' --output-type archi | dot -T svg | depcruise-wrap-stream-in-html > high-level-dependency-graph.html`,
78
+ "depcruise:html": `depcruise ${lSourceLocations} ${lTestLocations} --progress --output-type err-html --output-to dependency-violation-report.html`,
79
+ "depcruise:text": `depcruise ${lSourceLocations} ${lTestLocations} --progress --output-type text`,
80
+ "depcruise:focus": `depcruise ${lSourceLocations} ${lTestLocations} --progress --output-type text --focus`,
81
+ };
82
+ }
83
83
 
84
- return lReturnValue;
84
+ return lReturnValue;
85
85
  }
86
86
 
87
87
  /**
@@ -95,41 +95,37 @@ export function compileRunScripts(pInitOptions) {
95
95
  * pExistingRunScripts
96
96
  */
97
97
  function filterNewScriptEntries(pExistingRunScripts, pAdditionalRunScripts) {
98
- return Object.keys(pAdditionalRunScripts || {})
99
- .filter((pKey) => !pExistingRunScripts[pKey])
100
- .reduce((pAll, pKey) => {
101
- pAll[pKey] = pAdditionalRunScripts[pKey];
102
- return pAll;
103
- }, {});
98
+ return Object.keys(pAdditionalRunScripts || {})
99
+ .filter((pKey) => !pExistingRunScripts[pKey])
100
+ .reduce((pAll, pKey) => {
101
+ pAll[pKey] = pAdditionalRunScripts[pKey];
102
+ return pAll;
103
+ }, {});
104
104
  }
105
105
 
106
106
  export function addRunScriptsToManifest(pManifest, pAdditionalRunScripts) {
107
- const lManifest = { ...(pManifest || {}) };
108
- const lExistingRunScripts = lManifest.scripts || {};
107
+ const lManifest = { ...(pManifest || {}) };
108
+ const lExistingRunScripts = lManifest.scripts || {};
109
109
 
110
- // This could instead be done with
111
- // {...pAdditionalScriptEntries, ...lManifest} and no logic at all,
112
- // but that'd add the new scripts on top, which doesn't feel right
113
- //
114
- // An alternative would be to sort the keys - but that'd be rude
115
- lManifest.scripts = {
116
- ...lExistingRunScripts,
117
- ...filterNewScriptEntries(lExistingRunScripts, pAdditionalRunScripts),
118
- };
110
+ // This ensures the new scripts are added _below_ the ones currently in the manifest
111
+ lManifest.scripts = {
112
+ ...lExistingRunScripts,
113
+ ...filterNewScriptEntries(lExistingRunScripts, pAdditionalRunScripts),
114
+ };
119
115
 
120
- return lManifest;
116
+ return lManifest;
121
117
  }
122
118
 
123
119
  function getSuccessMessage(pDestinationManifestFileName) {
124
- return EXPERIMENTAL_SCRIPT_DOC.reduce(
125
- (pAll, pScript) => {
126
- return `${pAll}${
127
- `\n ${styleText("green", "►")} ${pScript.headline}` +
128
- `\n${pScript.description}\n\n`
129
- }`;
130
- },
131
- ` ${styleText("green", "✔")} Run scripts added to '${pDestinationManifestFileName}':\n`,
132
- );
120
+ return EXPERIMENTAL_SCRIPT_DOC.reduce(
121
+ (pAll, pScript) => {
122
+ return `${pAll}${
123
+ `\n ${styleText("green", "►")} ${pScript.headline}` +
124
+ `\n${pScript.description}\n\n`
125
+ }`;
126
+ },
127
+ ` ${styleText("green", "✔")} Run scripts added to '${pDestinationManifestFileName}':\n`,
128
+ );
133
129
  }
134
130
 
135
131
  /**
@@ -138,24 +134,24 @@ function getSuccessMessage(pDestinationManifestFileName) {
138
134
  * @param {{manifest?: string, destinationManifestFileName?: string, outStream?: NodeJS.WritableStream}} pOptions
139
135
  */
140
136
  export function writeRunScriptsToManifest(pNormalizedInitOptions, pOptions) {
141
- const lOptions = {
142
- manifest: readManifest(),
143
- destinationManifestFileName: PACKAGE_MANIFEST,
144
- outStream: process.stdout,
145
- ...pOptions,
146
- };
147
- const lUpdatedManifest = addRunScriptsToManifest(
148
- lOptions.manifest,
149
- compileRunScripts(pNormalizedInitOptions),
150
- );
137
+ const lOptions = {
138
+ manifest: readManifest(),
139
+ destinationManifestFileName: PACKAGE_MANIFEST,
140
+ outStream: process.stdout,
141
+ ...pOptions,
142
+ };
143
+ const lUpdatedManifest = addRunScriptsToManifest(
144
+ lOptions.manifest,
145
+ compileRunScripts(pNormalizedInitOptions),
146
+ );
151
147
 
152
- writeFileSync(
153
- lOptions.destinationManifestFileName,
154
- JSON.stringify(lUpdatedManifest, null, " "),
155
- "utf8",
156
- );
148
+ writeFileSync(
149
+ lOptions.destinationManifestFileName,
150
+ JSON.stringify(lUpdatedManifest, null, " "),
151
+ "utf8",
152
+ );
157
153
 
158
- lOptions.outStream.write(
159
- getSuccessMessage(lOptions.destinationManifestFileName),
160
- );
154
+ lOptions.outStream.write(
155
+ getSuccessMessage(lOptions.destinationManifestFileName),
156
+ );
161
157
  }
@@ -4,70 +4,70 @@ import { SUMMARY } from "#utl/bus.mjs";
4
4
  const FULL_ON = 100;
5
5
 
6
6
  function normalizeParameters(pParameters) {
7
- return {
8
- barSize: 10,
9
- block: "■",
10
- blank: "□",
11
- ...(pParameters || {}),
12
- };
7
+ return {
8
+ barSize: 10,
9
+ block: "■",
10
+ blank: "□",
11
+ ...(pParameters || {}),
12
+ };
13
13
  }
14
14
  function getPercentageBar(pPercentage, pParameters) {
15
- const lParameters = normalizeParameters(pParameters);
16
- const lPercentage = Math.min(pPercentage || 0, 1);
17
- const lBlocks = Math.floor(lParameters.barSize * lPercentage);
18
- const lBlanks = lParameters.barSize - lBlocks;
15
+ const lParameters = normalizeParameters(pParameters);
16
+ const lPercentage = Math.min(pPercentage || 0, 1);
17
+ const lBlocks = Math.floor(lParameters.barSize * lPercentage);
18
+ const lBlanks = lParameters.barSize - lBlocks;
19
19
 
20
- return `${styleText("green", lParameters.block.repeat(lBlocks))}${styleText(
21
- "green",
22
- lParameters.blank.repeat(lBlanks),
23
- )} ${Math.round(FULL_ON * lPercentage)}%`;
20
+ return `${styleText("green", lParameters.block.repeat(lBlocks))}${styleText(
21
+ "green",
22
+ lParameters.blank.repeat(lBlanks),
23
+ )} ${Math.round(FULL_ON * lPercentage)}%`;
24
24
  }
25
25
 
26
26
  function getProgressMessageWriter(pStream, pState, pMaxLogLevel) {
27
- return (pMessage, pOptions) => {
28
- const lOptions = {
29
- level: SUMMARY,
30
- complete: pState.complete,
31
- ...(pOptions || {}),
32
- };
27
+ return (pMessage, pOptions) => {
28
+ const lOptions = {
29
+ level: SUMMARY,
30
+ complete: pState.complete,
31
+ ...(pOptions || {}),
32
+ };
33
33
 
34
- pState.complete = lOptions.complete;
34
+ pState.complete = lOptions.complete;
35
35
 
36
- if (pStream.isTTY && lOptions.level <= pMaxLogLevel) {
37
- pStream.clearLine(1);
38
- pStream.write(
39
- ` ${getPercentageBar(lOptions.complete)} ${pMessage} ...\n`,
40
- );
41
- pStream.moveCursor(0, -1);
42
- }
43
- };
36
+ if (pStream.isTTY && lOptions.level <= pMaxLogLevel) {
37
+ pStream.clearLine(1);
38
+ pStream.write(
39
+ ` ${getPercentageBar(lOptions.complete)} ${pMessage} ...\n`,
40
+ );
41
+ pStream.moveCursor(0, -1);
42
+ }
43
+ };
44
44
  }
45
45
 
46
46
  function getStartWriter(pStream) {
47
- return () => {
48
- // before writing the real business output make a decent attempt
49
- // to clear the 'log' output so the cli behaviour looks more clean.
50
- if (pStream.isTTY) {
51
- pStream.moveCursor(0, 0);
52
- pStream.clearLine(1);
53
- }
54
- };
47
+ return () => {
48
+ // before writing the real business output make a decent attempt
49
+ // to clear the 'log' output so the cli behaviour looks more clean.
50
+ if (pStream.isTTY) {
51
+ pStream.moveCursor(0, 0);
52
+ pStream.clearLine(1);
53
+ }
54
+ };
55
55
  }
56
56
 
57
57
  export default function setUpCliFeedbackListener(
58
- pEventEmitter,
59
- pMaxLogLevel = SUMMARY,
60
- pStream = process.stderr,
58
+ pEventEmitter,
59
+ pMaxLogLevel = SUMMARY,
60
+ pStream = process.stderr,
61
61
  ) {
62
- const lState = {
63
- complete: 0,
64
- };
65
- pEventEmitter.on(
66
- "progress",
67
- getProgressMessageWriter(pStream, lState, pMaxLogLevel),
68
- );
62
+ const lState = {
63
+ complete: 0,
64
+ };
65
+ pEventEmitter.on(
66
+ "progress",
67
+ getProgressMessageWriter(pStream, lState, pMaxLogLevel),
68
+ );
69
69
 
70
- pEventEmitter.on("write-start", getStartWriter(pStream));
70
+ pEventEmitter.on("write-start", getStartWriter(pStream));
71
71
 
72
- pEventEmitter.on("end", () => pStream.end());
72
+ pEventEmitter.on("end", () => pStream.end());
73
73
  }
@@ -4,87 +4,87 @@ import { INFO, SUMMARY } from "#utl/bus.mjs";
4
4
  const MICRO_SECONDS_PER_SECOND = 1000000;
5
5
 
6
6
  function formatPerfLine({
7
- runStartTime,
8
- message,
9
- time,
10
- elapsedTime,
11
- elapsedUser,
12
- elapsedSystem,
13
- rss,
14
- heapUsed,
15
- heapTotal,
16
- external,
7
+ runStartTime,
8
+ message,
9
+ time,
10
+ elapsedTime,
11
+ elapsedUser,
12
+ elapsedSystem,
13
+ rss,
14
+ heapUsed,
15
+ heapTotal,
16
+ external,
17
17
  }) {
18
- return (
19
- JSON.stringify({
20
- runStartTime,
21
- message,
22
- time: Math.round(time * MICRO_SECONDS_PER_SECOND),
23
- elapsedTime: Math.round(elapsedTime * MICRO_SECONDS_PER_SECOND),
24
- elapsedUser,
25
- elapsedSystem,
26
- rss,
27
- heapUsed,
28
- heapTotal,
29
- external,
30
- }) + EOL
31
- );
18
+ return (
19
+ JSON.stringify({
20
+ runStartTime,
21
+ message,
22
+ time: Math.round(time * MICRO_SECONDS_PER_SECOND),
23
+ elapsedTime: Math.round(elapsedTime * MICRO_SECONDS_PER_SECOND),
24
+ elapsedUser,
25
+ elapsedSystem,
26
+ rss,
27
+ heapUsed,
28
+ heapTotal,
29
+ external,
30
+ }) + EOL
31
+ );
32
32
  }
33
33
 
34
34
  function getProgressLine(pMessage, pState, pLevel, pMaxLevel) {
35
- let lReturnValue = "";
35
+ let lReturnValue = "";
36
36
 
37
- if (pLevel <= pMaxLevel) {
38
- const lTime = process.uptime();
39
- const { user, system } = process.cpuUsage();
40
- const { rss, heapTotal, heapUsed, external } = process.memoryUsage();
41
- const lStats = {
42
- runStartTime: pState.runStartTime,
43
- message: pState.previousMessage,
44
- time: lTime,
45
- elapsedTime: lTime - pState.previousTime,
46
- elapsedUser: user - pState.previousUserUsage,
47
- elapsedSystem: system - pState.previousSystemUsage,
48
- rss,
49
- heapUsed,
50
- heapTotal,
51
- external,
52
- };
37
+ if (pLevel <= pMaxLevel) {
38
+ const lTime = process.uptime();
39
+ const { user, system } = process.cpuUsage();
40
+ const { rss, heapTotal, heapUsed, external } = process.memoryUsage();
41
+ const lStats = {
42
+ runStartTime: pState.runStartTime,
43
+ message: pState.previousMessage,
44
+ time: lTime,
45
+ elapsedTime: lTime - pState.previousTime,
46
+ elapsedUser: user - pState.previousUserUsage,
47
+ elapsedSystem: system - pState.previousSystemUsage,
48
+ rss,
49
+ heapUsed,
50
+ heapTotal,
51
+ external,
52
+ };
53
53
 
54
- pState.previousMessage = pMessage;
55
- pState.previousTime = lTime;
56
- pState.previousUserUsage = user;
57
- pState.previousSystemUsage = system;
54
+ pState.previousMessage = pMessage;
55
+ pState.previousTime = lTime;
56
+ pState.previousUserUsage = user;
57
+ pState.previousSystemUsage = system;
58
58
 
59
- lReturnValue = formatPerfLine(lStats);
60
- }
61
- return lReturnValue;
59
+ lReturnValue = formatPerfLine(lStats);
60
+ }
61
+ return lReturnValue;
62
62
  }
63
63
 
64
64
  function getProgressWriter(pStream, pState, pMaxLevel) {
65
- return (pMessage, pOptions) => {
66
- const lOptions = { level: SUMMARY, ...(pOptions || {}) };
65
+ return (pMessage, pOptions) => {
66
+ const lOptions = { level: SUMMARY, ...(pOptions || {}) };
67
67
 
68
- pStream.write(getProgressLine(pMessage, pState, lOptions.level, pMaxLevel));
69
- };
68
+ pStream.write(getProgressLine(pMessage, pState, lOptions.level, pMaxLevel));
69
+ };
70
70
  }
71
71
 
72
72
  export default function setUpNDJSONListener(
73
- pEventEmitter,
74
- pMaxLevel = INFO,
75
- pStream = process.stderr,
73
+ pEventEmitter,
74
+ pMaxLevel = INFO,
75
+ pStream = process.stderr,
76
76
  ) {
77
- let lState = {
78
- runStartTime: new Date(Date.now()).toISOString(),
79
- previousMessage: "nodejs starting",
80
- previousTime: 0,
81
- previousUserUsage: 0,
82
- previousSystemUsage: 0,
83
- };
77
+ let lState = {
78
+ runStartTime: new Date(Date.now()).toISOString(),
79
+ previousMessage: "nodejs starting",
80
+ previousTime: 0,
81
+ previousUserUsage: 0,
82
+ previousSystemUsage: 0,
83
+ };
84
84
 
85
- pEventEmitter.on("progress", getProgressWriter(pStream, lState, pMaxLevel));
85
+ pEventEmitter.on("progress", getProgressWriter(pStream, lState, pMaxLevel));
86
86
 
87
- pEventEmitter.on("end", () => {
88
- pStream.end();
89
- });
87
+ pEventEmitter.on("end", () => {
88
+ pStream.end();
89
+ });
90
90
  }