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,154 +1,154 @@
1
1
  export default {
2
- graph: {
3
- rankdir: "LR",
4
- splines: "true",
5
- overlap: "false",
6
- nodesep: "0.16",
7
- ranksep: "0.18",
8
- fontname: "Helvetica-bold",
9
- fontsize: "9",
10
- style: "rounded,bold,filled",
11
- fillcolor: "#ffffff",
12
- compound: "true",
13
- },
14
- node: {
15
- shape: "box",
16
- style: "rounded, filled",
17
- height: "0.2",
18
- color: "black",
19
- fillcolor: "#ffffcc",
20
- fontcolor: "black",
21
- fontname: "Helvetica",
22
- fontsize: 9,
23
- },
24
- edge: {
25
- arrowhead: "normal",
26
- arrowsize: "0.6",
27
- penwidth: "2.0",
28
- color: "#00000033",
29
- fontname: "Helvetica",
30
- fontsize: "9",
31
- },
32
- modules: [
33
- {
34
- criteria: { consolidated: true },
35
- attributes: { shape: "box3d" },
36
- },
37
- {
38
- criteria: { "rules[0].severity": "error" },
39
- attributes: { fontcolor: "red", color: "red" },
40
- },
41
- {
42
- criteria: { "rules[0].severity": "warn" },
43
- attributes: { fontcolor: "orange", color: "orange" },
44
- },
45
- {
46
- criteria: { "rules[0].severity": "info" },
47
- attributes: { fontcolor: "blue", color: "blue" },
48
- },
49
- {
50
- criteria: { coreModule: true },
51
- attributes: { color: "grey", fontcolor: "grey" },
52
- },
53
- {
54
- criteria: { source: "node_modules" },
55
- attributes: { fillcolor: "#c40b0a1a", fontcolor: "#c40b0a" },
56
- },
57
- {
58
- criteria: { matchesDoNotFollow: true },
59
- attributes: { shape: "folder" },
60
- },
61
- {
62
- criteria: { orphan: true },
63
- attributes: { fillcolor: "#ccffcc" },
64
- },
65
- {
66
- criteria: { source: "\\.json$" },
67
- attributes: { fillcolor: "#ffee44" },
68
- },
69
- {
70
- criteria: { source: "\\.jsx$" },
71
- attributes: { fillcolor: "#ffff77" },
72
- },
73
- {
74
- criteria: { source: "\\.vue$" },
75
- attributes: { fillcolor: "#41f083" },
76
- },
77
- {
78
- criteria: { source: "\\.([cm]?ts)$" },
79
- attributes: { fillcolor: "#ddfeff" },
80
- },
81
- {
82
- criteria: { source: "\\.tsx$" },
83
- attributes: { fillcolor: "#bbfeff" },
84
- },
85
- {
86
- criteria: { source: "\\.svelte$" },
87
- attributes: { fillcolor: "#febbff" },
88
- },
89
- {
90
- criteria: { source: "(\\.coffee|\\.litcoffee|\\.coffee\\.md)$" },
91
- attributes: { fillcolor: "#eeccaa" },
92
- },
93
- {
94
- criteria: { source: "(\\.csx|\\.cjsx)$" },
95
- attributes: { fillcolor: "#eebb77" },
96
- },
97
- {
98
- criteria: { source: "\\.ls$/g" },
99
- attributes: { fillcolor: "pink" },
100
- },
101
- {
102
- criteria: { matchesHighlight: true },
103
- attributes: {
104
- fillcolor: "lime",
105
- penwidth: 2,
106
- },
107
- },
108
- ],
109
- dependencies: [
110
- {
111
- criteria: { "rules[0].severity": "error" },
112
- attributes: { fontcolor: "red", color: "red" },
113
- },
114
- {
115
- criteria: { "rules[0].severity": "warn" },
116
- attributes: { fontcolor: "orange", color: "orange" },
117
- },
118
- {
119
- criteria: { "rules[0].severity": "info" },
120
- attributes: { fontcolor: "blue", color: "blue" },
121
- },
122
- {
123
- criteria: { dynamic: true },
124
- attributes: { style: "dashed" },
125
- },
126
- {
127
- criteria: { circular: true },
128
- attributes: { arrowhead: "normalnoneodot" },
129
- },
130
- {
131
- criteria: {
132
- dependencyTypes: [
133
- "pre-compilation-only",
134
- "triple-slash-type-reference",
135
- "type-import",
136
- "type-only",
137
- ],
138
- },
139
- attributes: { arrowhead: "onormal", penwidth: "1.0" },
140
- },
141
- {
142
- criteria: { dependencyTypes: ["export"] },
143
- attributes: { arrowhead: "inv" },
144
- },
145
- {
146
- criteria: { dependencyTypes: "core" },
147
- attributes: { style: "dashed", penwidth: "1.0" },
148
- },
149
- {
150
- criteria: { dependencyTypes: "npm" },
151
- attributes: { penwidth: "1.0" },
152
- },
153
- ],
2
+ graph: {
3
+ rankdir: "LR",
4
+ splines: "true",
5
+ overlap: "false",
6
+ nodesep: "0.16",
7
+ ranksep: "0.18",
8
+ fontname: "Helvetica-bold",
9
+ fontsize: "9",
10
+ style: "rounded,bold,filled",
11
+ fillcolor: "#ffffff",
12
+ compound: "true",
13
+ },
14
+ node: {
15
+ shape: "box",
16
+ style: "rounded, filled",
17
+ height: "0.2",
18
+ color: "black",
19
+ fillcolor: "#ffffcc",
20
+ fontcolor: "black",
21
+ fontname: "Helvetica",
22
+ fontsize: 9,
23
+ },
24
+ edge: {
25
+ arrowhead: "normal",
26
+ arrowsize: "0.6",
27
+ penwidth: "2.0",
28
+ color: "#00000033",
29
+ fontname: "Helvetica",
30
+ fontsize: "9",
31
+ },
32
+ modules: [
33
+ {
34
+ criteria: { consolidated: true },
35
+ attributes: { shape: "box3d" },
36
+ },
37
+ {
38
+ criteria: { "rules[0].severity": "error" },
39
+ attributes: { fontcolor: "red", color: "red" },
40
+ },
41
+ {
42
+ criteria: { "rules[0].severity": "warn" },
43
+ attributes: { fontcolor: "orange", color: "orange" },
44
+ },
45
+ {
46
+ criteria: { "rules[0].severity": "info" },
47
+ attributes: { fontcolor: "blue", color: "blue" },
48
+ },
49
+ {
50
+ criteria: { coreModule: true },
51
+ attributes: { color: "grey", fontcolor: "grey" },
52
+ },
53
+ {
54
+ criteria: { source: "node_modules" },
55
+ attributes: { fillcolor: "#c40b0a1a", fontcolor: "#c40b0a" },
56
+ },
57
+ {
58
+ criteria: { matchesDoNotFollow: true },
59
+ attributes: { shape: "folder" },
60
+ },
61
+ {
62
+ criteria: { orphan: true },
63
+ attributes: { fillcolor: "#ccffcc" },
64
+ },
65
+ {
66
+ criteria: { source: "\\.json$" },
67
+ attributes: { fillcolor: "#ffee44" },
68
+ },
69
+ {
70
+ criteria: { source: "\\.jsx$" },
71
+ attributes: { fillcolor: "#ffff77" },
72
+ },
73
+ {
74
+ criteria: { source: "\\.vue$" },
75
+ attributes: { fillcolor: "#41f083" },
76
+ },
77
+ {
78
+ criteria: { source: "\\.([cm]?ts)$" },
79
+ attributes: { fillcolor: "#ddfeff" },
80
+ },
81
+ {
82
+ criteria: { source: "\\.tsx$" },
83
+ attributes: { fillcolor: "#bbfeff" },
84
+ },
85
+ {
86
+ criteria: { source: "\\.svelte$" },
87
+ attributes: { fillcolor: "#febbff" },
88
+ },
89
+ {
90
+ criteria: { source: "(\\.coffee|\\.litcoffee|\\.coffee\\.md)$" },
91
+ attributes: { fillcolor: "#eeccaa" },
92
+ },
93
+ {
94
+ criteria: { source: "(\\.csx|\\.cjsx)$" },
95
+ attributes: { fillcolor: "#eebb77" },
96
+ },
97
+ {
98
+ criteria: { source: "\\.ls$/g" },
99
+ attributes: { fillcolor: "pink" },
100
+ },
101
+ {
102
+ criteria: { matchesHighlight: true },
103
+ attributes: {
104
+ fillcolor: "lime",
105
+ penwidth: 2,
106
+ },
107
+ },
108
+ ],
109
+ dependencies: [
110
+ {
111
+ criteria: { "rules[0].severity": "error" },
112
+ attributes: { fontcolor: "red", color: "red" },
113
+ },
114
+ {
115
+ criteria: { "rules[0].severity": "warn" },
116
+ attributes: { fontcolor: "orange", color: "orange" },
117
+ },
118
+ {
119
+ criteria: { "rules[0].severity": "info" },
120
+ attributes: { fontcolor: "blue", color: "blue" },
121
+ },
122
+ {
123
+ criteria: { dynamic: true },
124
+ attributes: { style: "dashed" },
125
+ },
126
+ {
127
+ criteria: { circular: true },
128
+ attributes: { arrowhead: "normalnoneodot" },
129
+ },
130
+ {
131
+ criteria: {
132
+ dependencyTypes: [
133
+ "pre-compilation-only",
134
+ "triple-slash-type-reference",
135
+ "type-import",
136
+ "type-only",
137
+ ],
138
+ },
139
+ attributes: { arrowhead: "onormal", penwidth: "1.0" },
140
+ },
141
+ {
142
+ criteria: { dependencyTypes: ["export"] },
143
+ attributes: { arrowhead: "inv" },
144
+ },
145
+ {
146
+ criteria: { dependencyTypes: "core" },
147
+ attributes: { style: "dashed", penwidth: "1.0" },
148
+ },
149
+ {
150
+ criteria: { dependencyTypes: "npm" },
151
+ attributes: { penwidth: "1.0" },
152
+ },
153
+ ],
154
154
  };
@@ -11,201 +11,201 @@ import { get } from "#utl/object-util.mjs";
11
11
  const EOL = "\n";
12
12
 
13
13
  const GRANULARITY2FUNCTION = new Map([
14
- ["module", prepareCustomLevel],
15
- ["folder", prepareFolderLevel],
16
- ["custom", prepareCustomLevel],
17
- ["flat", prepareFlatLevel],
14
+ ["module", prepareCustomLevel],
15
+ ["folder", prepareFolderLevel],
16
+ ["custom", prepareCustomLevel],
17
+ ["flat", prepareFlatLevel],
18
18
  ]);
19
19
 
20
20
  const GRANULARITY2REPORTER_OPTIONS = new Map([
21
- ["module", "summary.optionsUsed.reporterOptions.dot"],
22
- ["folder", "summary.optionsUsed.reporterOptions.ddot"],
23
- ["custom", "summary.optionsUsed.reporterOptions.archi"],
24
- ["flat", "summary.optionsUsed.reporterOptions.flat"],
21
+ ["module", "summary.optionsUsed.reporterOptions.dot"],
22
+ ["folder", "summary.optionsUsed.reporterOptions.ddot"],
23
+ ["custom", "summary.optionsUsed.reporterOptions.archi"],
24
+ ["flat", "summary.optionsUsed.reporterOptions.flat"],
25
25
  ]);
26
26
 
27
27
  function buildGraphAttributes(pGraph) {
28
- return pGraph ? ` ${attributizeObject(pGraph)}` : "";
28
+ return pGraph ? ` ${attributizeObject(pGraph)}` : "";
29
29
  }
30
30
 
31
31
  function buildNodeAttributes(pNode) {
32
- return pNode ? ` node [${attributizeObject(pNode)}]` : "";
32
+ return pNode ? ` node [${attributizeObject(pNode)}]` : "";
33
33
  }
34
34
 
35
35
  function buildEdgeAttributes(pEdge) {
36
- return pEdge ? ` edge [${attributizeObject(pEdge)}]` : "";
36
+ return pEdge ? ` edge [${attributizeObject(pEdge)}]` : "";
37
37
  }
38
38
 
39
39
  function buildGeneralAttributes(pTheme) {
40
- return (
41
- buildGraphAttributes(pTheme.graph) +
42
- EOL +
43
- buildNodeAttributes(pTheme.node) +
44
- EOL +
45
- buildEdgeAttributes(pTheme.edge) +
46
- EOL
47
- );
40
+ return (
41
+ buildGraphAttributes(pTheme.graph) +
42
+ EOL +
43
+ buildNodeAttributes(pTheme.node) +
44
+ EOL +
45
+ buildEdgeAttributes(pTheme.edge) +
46
+ EOL
47
+ );
48
48
  }
49
49
 
50
50
  function buildSingleFlatModule(pModule) {
51
- return `"${pModule.source}" [label=${pModule.label} tooltip="${
52
- pModule.tooltip
53
- }" ${pModule.URL ? 'URL="' + pModule.URL + '" ' : ""}${
54
- pModule.themeAttrs ?? ""
55
- }]`;
51
+ return `"${pModule.source}" [label=${pModule.label} tooltip="${
52
+ pModule.tooltip
53
+ }" ${pModule.URL ? 'URL="' + pModule.URL + '" ' : ""}${
54
+ pModule.themeAttrs ?? ""
55
+ }]`;
56
56
  }
57
57
 
58
58
  function buildSinglePath(pClustersHaveOwnNode) {
59
- return (pPath) => {
60
- let lReturnValue = `subgraph "cluster_${pPath.aggregateSnippet}" {label="${pPath.snippet}"`;
61
- if (pClustersHaveOwnNode) {
62
- lReturnValue += ` "${pPath.aggregateSnippet}" [width="0.05" shape="point" style="invis"]`;
63
- }
64
- return lReturnValue;
65
- };
59
+ return (pPath) => {
60
+ let lReturnValue = `subgraph "cluster_${pPath.aggregateSnippet}" {label="${pPath.snippet}"`;
61
+ if (pClustersHaveOwnNode) {
62
+ lReturnValue += ` "${pPath.aggregateSnippet}" [width="0.05" shape="point" style="invis"]`;
63
+ }
64
+ return lReturnValue;
65
+ };
66
66
  }
67
67
 
68
68
  function buildModuleHierarchy(pModule, pClustersHaveOwnNode) {
69
- return (
70
- pModule.path.map(buildSinglePath(pClustersHaveOwnNode)).join(" ") +
71
- " " +
72
- buildSingleFlatModule(pModule) +
73
- " }".repeat(pModule.path.length)
74
- );
69
+ return (
70
+ pModule.path.map(buildSinglePath(pClustersHaveOwnNode)).join(" ") +
71
+ " " +
72
+ buildSingleFlatModule(pModule) +
73
+ " }".repeat(pModule.path.length)
74
+ );
75
75
  }
76
76
 
77
77
  function buildDependency(pModuleSource) {
78
- return (pDependency) => {
79
- let lReturnValue = ` "${pModuleSource}" -> "${pDependency.resolved}"`;
80
- if (pDependency.hasExtraAttributes) {
81
- lReturnValue +=
82
- " [" +
83
- (pDependency?.rule?.name
84
- ? `xlabel="${pDependency.rule.name}" tooltip="${pDependency.rule.name}" `
85
- : "") +
86
- (pDependency?.themeAttrs ?? "") +
87
- "]";
88
- }
89
- return lReturnValue;
90
- };
78
+ return (pDependency) => {
79
+ let lReturnValue = ` "${pModuleSource}" -> "${pDependency.resolved}"`;
80
+ if (pDependency.hasExtraAttributes) {
81
+ lReturnValue +=
82
+ " [" +
83
+ (pDependency?.rule?.name
84
+ ? `xlabel="${pDependency.rule.name}" tooltip="${pDependency.rule.name}" `
85
+ : "") +
86
+ (pDependency?.themeAttrs ?? "") +
87
+ "]";
88
+ }
89
+ return lReturnValue;
90
+ };
91
91
  }
92
92
 
93
93
  function buildModule(pClustersHaveOwnNode) {
94
- return (pModule) => {
95
- let lReturnValue = pModule.folder
96
- ? ` ${buildModuleHierarchy(pModule, pClustersHaveOwnNode)}`
97
- : ` ${buildSingleFlatModule(pModule)}`;
98
- if (pModule.dependencies && pModule.dependencies.length > 0) {
99
- lReturnValue +=
100
- EOL +
101
- pModule.dependencies.map(buildDependency(pModule.source)).join(EOL);
102
- }
94
+ return (pModule) => {
95
+ let lReturnValue = pModule.folder
96
+ ? ` ${buildModuleHierarchy(pModule, pClustersHaveOwnNode)}`
97
+ : ` ${buildSingleFlatModule(pModule)}`;
98
+ if (pModule.dependencies && pModule.dependencies.length > 0) {
99
+ lReturnValue +=
100
+ EOL +
101
+ pModule.dependencies.map(buildDependency(pModule.source)).join(EOL);
102
+ }
103
103
 
104
- return lReturnValue;
105
- };
104
+ return lReturnValue;
105
+ };
106
106
  }
107
107
 
108
108
  function buildModules(pModules, pClustersHaveOwnNode) {
109
- return pModules.map(buildModule(pClustersHaveOwnNode)).join(EOL);
109
+ return pModules.map(buildModule(pClustersHaveOwnNode)).join(EOL);
110
110
  }
111
111
 
112
112
  function report(
113
- pResults,
114
- pGranularity,
115
- { theme, collapsePattern, filters, showMetrics },
113
+ pResults,
114
+ pGranularity,
115
+ { theme, collapsePattern, filters, showMetrics },
116
116
  ) {
117
- const lTheme = normalizeTheme(theme);
118
- const lResults = filters
119
- ? {
120
- ...pResults,
121
- modules: applyFilters(pResults.modules, filters),
122
- }
123
- : pResults;
124
-
125
- return (
126
- 'strict digraph "dependency-cruiser output"{' +
127
- EOL +
128
- buildGeneralAttributes(lTheme) +
129
- EOL +
130
- buildModules(
131
- (GRANULARITY2FUNCTION.get(pGranularity) || prepareCustomLevel)(
132
- lResults,
133
- lTheme,
134
- collapsePattern,
135
- showMetrics,
136
- ),
137
- pGranularity === "folder",
138
- ) +
139
- EOL +
140
- `}${EOL}`
141
- );
117
+ const lTheme = normalizeTheme(theme);
118
+ const lResults = filters
119
+ ? {
120
+ ...pResults,
121
+ modules: applyFilters(pResults.modules, filters),
122
+ }
123
+ : pResults;
124
+
125
+ return (
126
+ 'strict digraph "dependency-cruiser output"{' +
127
+ EOL +
128
+ buildGeneralAttributes(lTheme) +
129
+ EOL +
130
+ buildModules(
131
+ (GRANULARITY2FUNCTION.get(pGranularity) || prepareCustomLevel)(
132
+ lResults,
133
+ lTheme,
134
+ collapsePattern,
135
+ showMetrics,
136
+ ),
137
+ pGranularity === "folder",
138
+ ) +
139
+ EOL +
140
+ `}${EOL}`
141
+ );
142
142
  }
143
143
 
144
144
  function pryReporterOptionsFromResults(pGranularity, pResults) {
145
- const lFallbackReporterOptions =
146
- pResults?.summary?.optionsUsed?.reporterOptions?.dot;
145
+ const lFallbackReporterOptions =
146
+ pResults?.summary?.optionsUsed?.reporterOptions?.dot;
147
147
 
148
- // using a bespoke 'get' function here because the reporter options will
149
- // contain nested properties, which it handles for us
150
- return get(
151
- pResults,
152
- GRANULARITY2REPORTER_OPTIONS.get(pGranularity),
153
- lFallbackReporterOptions,
154
- );
148
+ // using a bespoke 'get' function here because the reporter options will
149
+ // contain nested properties, which it handles for us
150
+ return get(
151
+ pResults,
152
+ GRANULARITY2REPORTER_OPTIONS.get(pGranularity),
153
+ lFallbackReporterOptions,
154
+ );
155
155
  }
156
156
 
157
157
  function pryThemeFromResults(pGranularity, pResults) {
158
- const lFallbackTheme =
159
- pResults?.summary?.optionsUsed?.reporterOptions?.dot?.theme;
158
+ const lFallbackTheme =
159
+ pResults?.summary?.optionsUsed?.reporterOptions?.dot?.theme;
160
160
 
161
- return (
162
- pryReporterOptionsFromResults(pGranularity, pResults)?.theme ??
163
- lFallbackTheme
164
- );
161
+ return (
162
+ pryReporterOptionsFromResults(pGranularity, pResults)?.theme ??
163
+ lFallbackTheme
164
+ );
165
165
  }
166
166
 
167
167
  function pryFiltersFromResults(pGranularity, pResults) {
168
- const lFallbackFilters =
169
- pResults?.summary?.optionsUsed?.reporterOptions?.dot?.filters;
168
+ const lFallbackFilters =
169
+ pResults?.summary?.optionsUsed?.reporterOptions?.dot?.filters;
170
170
 
171
- return (
172
- pryReporterOptionsFromResults(pGranularity, pResults)?.filters ??
173
- lFallbackFilters
174
- );
171
+ return (
172
+ pryReporterOptionsFromResults(pGranularity, pResults)?.filters ??
173
+ lFallbackFilters
174
+ );
175
175
  }
176
176
 
177
177
  function getCollapseFallbackPattern(pGranularity) {
178
- if (pGranularity === "custom") {
179
- return "^(node_modules|packages|src|lib|app|test|spec)/[^/]+";
180
- }
181
- return null;
178
+ if (pGranularity === "custom") {
179
+ return "^(node_modules|packages|src|lib|app|test|spec)/[^/]+";
180
+ }
181
+ return null;
182
182
  }
183
183
 
184
184
  function pryCollapsePatternFromResults(pGranularity, pResults) {
185
- return (
186
- pryReporterOptionsFromResults(pGranularity, pResults)?.collapsePattern ??
187
- getCollapseFallbackPattern(pGranularity)
188
- );
185
+ return (
186
+ pryReporterOptionsFromResults(pGranularity, pResults)?.collapsePattern ??
187
+ getCollapseFallbackPattern(pGranularity)
188
+ );
189
189
  }
190
190
 
191
191
  function normalizeDotReporterOptions(
192
- pDotReporterOptions,
193
- pGranularity,
194
- pResults,
192
+ pDotReporterOptions,
193
+ pGranularity,
194
+ pResults,
195
195
  ) {
196
- let lDotReporterOptions = pDotReporterOptions || {};
196
+ let lDotReporterOptions = pDotReporterOptions || {};
197
197
 
198
- return {
199
- theme:
200
- lDotReporterOptions.theme || pryThemeFromResults(pGranularity, pResults),
201
- collapsePattern:
202
- lDotReporterOptions.collapsePattern ||
203
- pryCollapsePatternFromResults(pGranularity, pResults),
204
- filters:
205
- lDotReporterOptions.filters ||
206
- pryFiltersFromResults(pGranularity, pResults),
207
- ...lDotReporterOptions,
208
- };
198
+ return {
199
+ theme:
200
+ lDotReporterOptions.theme || pryThemeFromResults(pGranularity, pResults),
201
+ collapsePattern:
202
+ lDotReporterOptions.collapsePattern ||
203
+ pryCollapsePatternFromResults(pGranularity, pResults),
204
+ filters:
205
+ lDotReporterOptions.filters ||
206
+ pryFiltersFromResults(pGranularity, pResults),
207
+ ...lDotReporterOptions,
208
+ };
209
209
  }
210
210
 
211
211
  /**
@@ -217,16 +217,16 @@ function normalizeDotReporterOptions(
217
217
  * @returns {(pResults, pDotReporterOptions) => import("../../../types/dependency-cruiser.js").IReporterOutput}
218
218
  */
219
219
  export default function produceDotReporter(pGranularity) {
220
- return function dot(pResults, pDotReporterOptions) {
221
- const lDotReporterOptions = normalizeDotReporterOptions(
222
- pDotReporterOptions,
223
- pGranularity,
224
- pResults,
225
- );
226
-
227
- return {
228
- output: report(pResults, pGranularity, lDotReporterOptions),
229
- exitCode: 0,
230
- };
231
- };
220
+ return function dot(pResults, pDotReporterOptions) {
221
+ const lDotReporterOptions = normalizeDotReporterOptions(
222
+ pDotReporterOptions,
223
+ pGranularity,
224
+ pResults,
225
+ );
226
+
227
+ return {
228
+ output: report(pResults, pGranularity, lDotReporterOptions),
229
+ exitCode: 0,
230
+ };
231
+ };
232
232
  }