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,12 +1,12 @@
1
1
  import type { IBaselineViolations } from "./baseline-violations.mjs";
2
2
  import type { ICacheOptions } from "./cache-options.mjs";
3
3
  import type {
4
- IDoNotFollowType,
5
- IExcludeType,
6
- IFocusType,
7
- IHighlightType,
8
- IIncludeOnlyType,
9
- IReachesType,
4
+ IDoNotFollowType,
5
+ IExcludeType,
6
+ IFocusType,
7
+ IHighlightType,
8
+ IIncludeOnlyType,
9
+ IReachesType,
10
10
  } from "./filter-types.mjs";
11
11
  import type { IReporterOptions } from "./reporter-options.mjs";
12
12
  import type { IFlattenedRuleSet } from "./rule-set.mjs";
@@ -14,18 +14,18 @@ import type { ModuleSystemType, OutputType } from "./shared-types.mjs";
14
14
 
15
15
  export type ExternalModuleResolutionStrategyType = "node_modules" | "yarn-pnp";
16
16
  export type ProgressType =
17
- | "cli-feedback"
18
- | "performance-log"
19
- | "ndjson"
20
- | "none";
17
+ | "cli-feedback"
18
+ | "performance-log"
19
+ | "ndjson"
20
+ | "none";
21
21
  export type ParserType = "acorn" | "tsc" | "swc";
22
22
 
23
23
  export interface ITsConfig {
24
- fileName?: string;
24
+ fileName?: string;
25
25
  }
26
26
 
27
27
  export interface IBabelConfig {
28
- fileName?: string;
28
+ fileName?: string;
29
29
  }
30
30
 
31
31
  /**
@@ -37,438 +37,438 @@ export type WebpackEnvType = { [key: string]: any } | string;
37
37
  * The webpack configuration options used for the cruise
38
38
  */
39
39
  export interface IWebpackConfig {
40
- /**
41
- * The arguments used
42
- */
43
- arguments?: { [key: string]: any };
44
- /**
45
- * The 'env' parameters passed
46
- */
47
- env?: WebpackEnvType;
48
- /**
49
- * The name of the webpack configuration file used
50
- */
51
- fileName?: string;
40
+ /**
41
+ * The arguments used
42
+ */
43
+ arguments?: { [key: string]: any };
44
+ /**
45
+ * The 'env' parameters passed
46
+ */
47
+ env?: WebpackEnvType;
48
+ /**
49
+ * The name of the webpack configuration file used
50
+ */
51
+ fileName?: string;
52
52
  }
53
53
 
54
54
  export interface ICruiseOptions {
55
- /**
56
- * if true, will attempt to validate with the rules in ruleSet.
57
- * Default false.
58
- */
59
- validate?: boolean;
60
- /**
61
- * An object containing the rules to validate against.
62
- *
63
- * This ain't in none of the json schemas, but is used internally _instead_
64
- * of the rule set defined on global configuration level. Judo
65
- * (a.o. flattening out extended rule sets) done in ../src/cli/normalize-cli-options.mjs
66
- */
67
- ruleSet?: IFlattenedRuleSet;
68
- /**
69
- * The (root) configuration file the cruise options came from.
70
- */
71
- rulesFile?: string;
72
- /**
73
- * regular expression describing which dependencies the function
74
- * should cruise, but not resolve or follow any further
75
- *
76
- * ... or conditions that describe what dependencies not to follow
77
- */
78
- doNotFollow?: string | string[] | IDoNotFollowType;
79
- /**
80
- * regular expression describing which dependencies the function
81
- * should not cruise
82
- */
83
- exclude?: string | string[] | IExcludeType;
84
- /**
85
- * regular expression describing which dependencies the function
86
- * should cruise - anything not matching this will be skipped
87
- */
88
- includeOnly?: string | string[] | IIncludeOnlyType;
89
- /**
90
- * dependency-cruiser will include modules matching this regular expression
91
- * in its output, as well as their neighbours (direct dependencies and
92
- * dependents)
93
- */
94
- focus?: string | string[] | IFocusType;
95
- /**
96
- * dependency-cruiser will include modules matching this regular expression
97
- * in its output, as well as _any_ module that reaches them - either directly
98
- * or via via.
99
- */
100
- reaches?: string | string[] | IReachesType;
101
- /**
102
- * dependency-cruiser will mark modules that have changed since the
103
- * specified revision (or 'main', when not specified) in its output,
104
- * as well as _any_ module that reaches them - either directly or via via.
105
- *
106
- * NOTE: this is currently a command line _only_ option, so if you pass this
107
- * to the API or in a configuration file it will be ignored.
108
- */
109
- affected?: string | boolean;
110
- /**
111
- * dependency-cruiser will mark modules matching this regular expression
112
- * as 'highlighted' in its output
113
- */
114
- highlight?: string | string[] | IHighlightType;
115
- /*
116
- * baseline of known validations. Typically you'd specify these in a file called
117
- * .dependency-cruiser-known-violations.json (which you'd generate with the --outputType
118
- * 'baseline') - and which is easy to keep up to date. In a pinch you can specify
119
- * them here as well. The known violations in .dependency-cruiser-known-violations.json
120
- * always take precedence.
121
- */
122
- knownViolations?: IBaselineViolations;
123
- /**
124
- * collapse a to a folder depth by passing a single digit (e.g. 2).
125
- * When passed a regex collapse to that pattern
126
- *
127
- * E.g. ^packages/[^/]+/ would collapse to modules/ folders directly under
128
- * your packages folder.
129
- */
130
- collapse?: string | number;
131
- /**
132
- * the maximum depth to cruise; 0 <= n <= 99
133
- * (default: 0, which means 'infinite depth')
134
- * While it might look attractive to regulate the size of the output, this is
135
- * not the best option to do so.
136
- *
137
- * Filters (exclude, includeOnly, focus), the dot and archi reporter's collapsePattern
138
- * and the collapse options offer better, more reliable and more
139
- * understandable results.
140
- */
141
- maxDepth?: number | string;
142
- /**
143
- * an array of module systems to use for following dependencies;
144
- * defaults to ["es6", "cjs", "amd"]
145
- */
146
- moduleSystems?: ModuleSystemType[];
147
- /**
148
- * When true, dependency-cruiser will detect dependencies in JSDoc-style
149
- * import statements. Implies `"parser": "tsc"`. Defaults to false.'
150
- */
151
- detectJSDocImports?: boolean;
152
- /**
153
- * When true, dependency-cruiser will detect calls to `process.getBuiltinModule`/
154
- * `globalThis.process.getBuiltinModule` as imports.
155
- * Defaults to false.
156
- */
157
- detectProcessBuiltinModuleCalls?: boolean;
158
- /**
159
- * one of "json", "html", "dot", "csv" or "err". When left
160
- * out the function will return a javascript object as dependencies
161
- */
162
- outputType?: OutputType;
163
- /**
164
- * Where the output of the cruise is to be sent to. '-' (the default)
165
- * denotes stdout.
166
- *
167
- * Echoed in the result schema, but not used internally otherwise.
168
- */
169
- outputTo?: string;
170
- /**
171
- * The arguments used on the command line
172
- *
173
- * Echoed in the result schema, but not used internally otherwise.
174
- */
175
- args?: string;
176
- /**
177
- * The directory dependency-cruiser should run its cruise from. Defaults
178
- * to the current working directory.
179
- */
180
- baseDir?: string;
181
- /**
182
- * a string to insert before links (in dot/ svg output) so with
183
- * cruising local dependencies it is possible to point to sources
184
- * elsewhere (e.g. in an online repository)
185
- */
186
- prefix?: string;
187
- /**
188
- * if true detect dependencies that only exist before
189
- * typescript-to-javascript compilation.
190
- */
191
- tsPreCompilationDeps?: boolean | "specify";
192
- /**
193
- * List of extensions to scan _in addition_ to the extensions already
194
- * covered by any available parser. Dependency-cruiser will consider files
195
- * ending in these extensions but it will _not_ examine its content or
196
- * derive any of their dependencies
197
- * Sample value: [".jpg", ".png", ".json"]
198
- */
199
- extraExtensionsToScan?: string[];
200
- /**
201
- * if true leave symlinks untouched, otherwise use the realpath.
202
- * Defaults to `false` (which is also nodejs's default behavior
203
- * since version 6)
204
- */
205
- preserveSymlinks?: boolean;
206
- /**
207
- * The way to resolve external modules - either via node_modules
208
- * ('node_modules') or yarn plug and play ('yarn-pnp').
209
- *
210
- * Defaults to 'node_modules'
211
- * @deprecated now works automatically
212
- */
213
- externalModuleResolutionStrategy?: ExternalModuleResolutionStrategyType;
214
- /**
215
- * Options to tweak what dependency-cruiser considers 'built-in' modules. If
216
- * you're targeting nodejs, or don't use any built-in modules you can probably
217
- * leave this alone.
218
- */
219
- builtInModules?: {
220
- /**
221
- * List of module names that are to be considered as 'built-in'. By default dependency-cruiser
222
- * uses the list of built-ins from nodejs. If you code for another environment (e.g. the
223
- * browser) and you use shims for nodejs builtins like 'path' from node_modules, you could
224
- * pass an empty array here. If you want to just add a couple of extra built-ins to
225
- * the default list, use the 'add' attribute instead.
226
- */
227
- override: string[];
228
- /**
229
- * List of module names that are to be considered as 'built-in' in addition to the default
230
- * list of the environment you're currently in. Use this e.g. if you're writing
231
- * electron code and want to add 'electron' as built-in.
232
- */
233
- add: string[];
234
- };
235
- /**
236
- * @deprecated
237
- *
238
- * Hasn't had any effect on dependency-cruiser's behaviour since a few major
239
- * versions ago. If there's a need to manipulate this use the `skipAnalysisNotInRules`
240
- * option in stead.
241
- *
242
- * Previously documented behavior:
243
- * > When true includes denormalized dependents in the cruise-result, even
244
- * > though there's no rule in the rule set that requires them. Defaults to false.
245
- */
246
- forceDeriveDependents?: boolean;
247
- /**
248
- * if true combines the package.jsons found from the module up to the base
249
- * folder the cruise is initiated from. Useful for how (some) mono-repos
250
- * manage dependencies & dependency definitions.
251
- *
252
- * Defaults to `false`.
253
- */
254
- combinedDependencies?: boolean;
255
- /*
256
- * List of strings you have in use in addition to cjs/ es6 requires
257
- * & imports to declare module dependencies. Use this e.g. if you've
258
- * re-declared require (`const want = require`), use a require-wrapper
259
- * (like semver-try-require) or use window.require as a hack
260
- *
261
- * Defaults to `[]`
262
- */
263
- exoticRequireStrings?: string[];
264
- /**
265
- * Options to tweak the output of reporters
266
- */
267
- reporterOptions?: IReporterOptions;
55
+ /**
56
+ * if true, will attempt to validate with the rules in ruleSet.
57
+ * Default false.
58
+ */
59
+ validate?: boolean;
60
+ /**
61
+ * An object containing the rules to validate against.
62
+ *
63
+ * This ain't in none of the json schemas, but is used internally _instead_
64
+ * of the rule set defined on global configuration level. Judo
65
+ * (a.o. flattening out extended rule sets) done in ../src/cli/normalize-cli-options.mjs
66
+ */
67
+ ruleSet?: IFlattenedRuleSet;
68
+ /**
69
+ * The (root) configuration file the cruise options came from.
70
+ */
71
+ rulesFile?: string;
72
+ /**
73
+ * regular expression describing which dependencies the function
74
+ * should cruise, but not resolve or follow any further
75
+ *
76
+ * ... or conditions that describe what dependencies not to follow
77
+ */
78
+ doNotFollow?: string | string[] | IDoNotFollowType;
79
+ /**
80
+ * regular expression describing which dependencies the function
81
+ * should not cruise
82
+ */
83
+ exclude?: string | string[] | IExcludeType;
84
+ /**
85
+ * regular expression describing which dependencies the function
86
+ * should cruise - anything not matching this will be skipped
87
+ */
88
+ includeOnly?: string | string[] | IIncludeOnlyType;
89
+ /**
90
+ * dependency-cruiser will include modules matching this regular expression
91
+ * in its output, as well as their neighbours (direct dependencies and
92
+ * dependents)
93
+ */
94
+ focus?: string | string[] | IFocusType;
95
+ /**
96
+ * dependency-cruiser will include modules matching this regular expression
97
+ * in its output, as well as _any_ module that reaches them - either directly
98
+ * or via via.
99
+ */
100
+ reaches?: string | string[] | IReachesType;
101
+ /**
102
+ * dependency-cruiser will mark modules that have changed since the
103
+ * specified revision (or 'main', when not specified) in its output,
104
+ * as well as _any_ module that reaches them - either directly or via via.
105
+ *
106
+ * NOTE: this is currently a command line _only_ option, so if you pass this
107
+ * to the API or in a configuration file it will be ignored.
108
+ */
109
+ affected?: string | boolean;
110
+ /**
111
+ * dependency-cruiser will mark modules matching this regular expression
112
+ * as 'highlighted' in its output
113
+ */
114
+ highlight?: string | string[] | IHighlightType;
115
+ /*
116
+ * baseline of known validations. Typically you'd specify these in a file called
117
+ * .dependency-cruiser-known-violations.json (which you'd generate with the --outputType
118
+ * 'baseline') - and which is easy to keep up to date. In a pinch you can specify
119
+ * them here as well. The known violations in .dependency-cruiser-known-violations.json
120
+ * always take precedence.
121
+ */
122
+ knownViolations?: IBaselineViolations;
123
+ /**
124
+ * collapse a to a folder depth by passing a single digit (e.g. 2).
125
+ * When passed a regex collapse to that pattern
126
+ *
127
+ * E.g. ^packages/[^/]+/ would collapse to modules/ folders directly under
128
+ * your packages folder.
129
+ */
130
+ collapse?: string | number;
131
+ /**
132
+ * the maximum depth to cruise; 0 <= n <= 99
133
+ * (default: 0, which means 'infinite depth')
134
+ * While it might look attractive to regulate the size of the output, this is
135
+ * not the best option to do so.
136
+ *
137
+ * Filters (exclude, includeOnly, focus), the dot and archi reporter's collapsePattern
138
+ * and the collapse options offer better, more reliable and more
139
+ * understandable results.
140
+ */
141
+ maxDepth?: number | string;
142
+ /**
143
+ * an array of module systems to use for following dependencies;
144
+ * defaults to ["es6", "cjs", "amd"]
145
+ */
146
+ moduleSystems?: ModuleSystemType[];
147
+ /**
148
+ * When true, dependency-cruiser will detect dependencies in JSDoc-style
149
+ * import statements. Implies `"parser": "tsc"`. Defaults to false.'
150
+ */
151
+ detectJSDocImports?: boolean;
152
+ /**
153
+ * When true, dependency-cruiser will detect calls to `process.getBuiltinModule`/
154
+ * `globalThis.process.getBuiltinModule` as imports.
155
+ * Defaults to false.
156
+ */
157
+ detectProcessBuiltinModuleCalls?: boolean;
158
+ /**
159
+ * one of "json", "html", "dot", "csv" or "err". When left
160
+ * out the function will return a javascript object as dependencies
161
+ */
162
+ outputType?: OutputType;
163
+ /**
164
+ * Where the output of the cruise is to be sent to. '-' (the default)
165
+ * denotes stdout.
166
+ *
167
+ * Echoed in the result schema, but not used internally otherwise.
168
+ */
169
+ outputTo?: string;
170
+ /**
171
+ * The arguments used on the command line
172
+ *
173
+ * Echoed in the result schema, but not used internally otherwise.
174
+ */
175
+ args?: string;
176
+ /**
177
+ * The directory dependency-cruiser should run its cruise from. Defaults
178
+ * to the current working directory.
179
+ */
180
+ baseDir?: string;
181
+ /**
182
+ * a string to insert before links (in dot/ svg output) so with
183
+ * cruising local dependencies it is possible to point to sources
184
+ * elsewhere (e.g. in an online repository)
185
+ */
186
+ prefix?: string;
187
+ /**
188
+ * if true detect dependencies that only exist before
189
+ * typescript-to-javascript compilation.
190
+ */
191
+ tsPreCompilationDeps?: boolean | "specify";
192
+ /**
193
+ * List of extensions to scan _in addition_ to the extensions already
194
+ * covered by any available parser. Dependency-cruiser will consider files
195
+ * ending in these extensions but it will _not_ examine its content or
196
+ * derive any of their dependencies
197
+ * Sample value: [".jpg", ".png", ".json"]
198
+ */
199
+ extraExtensionsToScan?: string[];
200
+ /**
201
+ * if true leave symlinks untouched, otherwise use the realpath.
202
+ * Defaults to `false` (which is also nodejs's default behavior
203
+ * since version 6)
204
+ */
205
+ preserveSymlinks?: boolean;
206
+ /**
207
+ * The way to resolve external modules - either via node_modules
208
+ * ('node_modules') or yarn plug and play ('yarn-pnp').
209
+ *
210
+ * Defaults to 'node_modules'
211
+ * @deprecated now works automatically
212
+ */
213
+ externalModuleResolutionStrategy?: ExternalModuleResolutionStrategyType;
214
+ /**
215
+ * Options to tweak what dependency-cruiser considers 'built-in' modules. If
216
+ * you're targeting nodejs, or don't use any built-in modules you can probably
217
+ * leave this alone.
218
+ */
219
+ builtInModules?: {
220
+ /**
221
+ * List of module names that are to be considered as 'built-in'. By default dependency-cruiser
222
+ * uses the list of built-ins from nodejs. If you code for another environment (e.g. the
223
+ * browser) and you use shims for nodejs builtins like 'path' from node_modules, you could
224
+ * pass an empty array here. If you want to just add a couple of extra built-ins to
225
+ * the default list, use the 'add' attribute instead.
226
+ */
227
+ override: string[];
228
+ /**
229
+ * List of module names that are to be considered as 'built-in' in addition to the default
230
+ * list of the environment you're currently in. Use this e.g. if you're writing
231
+ * electron code and want to add 'electron' as built-in.
232
+ */
233
+ add: string[];
234
+ };
235
+ /**
236
+ * @deprecated
237
+ *
238
+ * Hasn't had any effect on dependency-cruiser's behaviour since a few major
239
+ * versions ago. If there's a need to manipulate this use the `skipAnalysisNotInRules`
240
+ * option in stead.
241
+ *
242
+ * Previously documented behavior:
243
+ * > When true includes denormalized dependents in the cruise-result, even
244
+ * > though there's no rule in the rule set that requires them. Defaults to false.
245
+ */
246
+ forceDeriveDependents?: boolean;
247
+ /**
248
+ * if true combines the package.jsons found from the module up to the base
249
+ * folder the cruise is initiated from. Useful for how (some) mono-repos
250
+ * manage dependencies & dependency definitions.
251
+ *
252
+ * Defaults to `false`.
253
+ */
254
+ combinedDependencies?: boolean;
255
+ /*
256
+ * List of strings you have in use in addition to cjs/ es6 requires
257
+ * & imports to declare module dependencies. Use this e.g. if you've
258
+ * re-declared require (`const want = require`), use a require-wrapper
259
+ * (like semver-try-require) or use window.require as a hack
260
+ *
261
+ * Defaults to `[]`
262
+ */
263
+ exoticRequireStrings?: string[];
264
+ /**
265
+ * Options to tweak the output of reporters
266
+ */
267
+ reporterOptions?: IReporterOptions;
268
268
 
269
- /**
270
- * TypeScript project file ('tsconfig.json') to use for (1) compilation
271
- * and (2) resolution (e.g. with the paths property)",
272
- */
273
- tsConfig?: ITsConfig;
269
+ /**
270
+ * TypeScript project file ('tsconfig.json') to use for (1) compilation
271
+ * and (2) resolution (e.g. with the paths property)",
272
+ */
273
+ tsConfig?: ITsConfig;
274
274
 
275
- /**
276
- * Webpack configuration to use to get resolve options from
277
- */
278
- webpackConfig?: IWebpackConfig;
275
+ /**
276
+ * Webpack configuration to use to get resolve options from
277
+ */
278
+ webpackConfig?: IWebpackConfig;
279
279
 
280
- /**
281
- * Babel configuration (e.g. '.babelrc.json') to use.
282
- */
283
- babelConfig?: IBabelConfig;
280
+ /**
281
+ * Babel configuration (e.g. '.babelrc.json') to use.
282
+ */
283
+ babelConfig?: IBabelConfig;
284
284
 
285
- /**
286
- * Overrides the parser dependency-cruiser will use - EXPERIMENTAL
287
- *
288
- * Note that you'll _very_ likely not need this - dependency-cruiser will
289
- * typically sort out what the best parser for the job is out of the ones
290
- * available
291
- */
292
- parser?: ParserType;
285
+ /**
286
+ * Overrides the parser dependency-cruiser will use - EXPERIMENTAL
287
+ *
288
+ * Note that you'll _very_ likely not need this - dependency-cruiser will
289
+ * typically sort out what the best parser for the job is out of the ones
290
+ * available
291
+ */
292
+ parser?: ParserType;
293
293
 
294
- /**
295
- * Options used in module resolution that for dependency-cruiser's
296
- * use cannot go in a webpack config.
297
- */
298
- enhancedResolveOptions?: {
299
- /**
300
- * "List of strings to consider as 'exports' fields in package.json. Use
301
- * `['exports']` when you use packages that use such a field and your environment
302
- * supports it (e.g. node ^12.19 || >=14.7 or recent versions of webpack).
303
- */
304
- exportsFields?: string[];
305
- /**
306
- * List of conditions to check for in the exports field. e.g. use `['imports']`
307
- * if you're only interested in exposed es6 modules, `['require']` for commonjs,
308
- * or all conditions at once (`['import', 'require', 'node', 'default']`)
309
- * if anything goes for you. Only works when the 'exportsFields' array is non-empty
310
- */
311
- conditionNames?: string[];
312
- /**
313
- * List of extensions to scan for when resolving. Typically you want to leave
314
- * this alone as dependency-cruiser figures out what extensions to scan based
315
- * on
316
- * 1. what is available in your environment,
317
- * 2. in the order your environment (nodejs, typescript) applies the resolution itself.
318
- *
319
- * However if you want it to scan less you can specify so with the extensions
320
- * attribute. E.g. when you're 100% sure you _only_ have typescript & json
321
- * and nothing else you can pass `['.ts', '.json']` - which can lead to performance
322
- * gains on systems with slow i/o (like ms-windows), especially when your
323
- * tsconfig contains paths/ aliases.
324
- */
325
- extensions?: string[];
326
- /**
327
- * A list of main fields in manifests (package.json s). Typically you'd want
328
- * to keep leave this this on its default (['main']) , but if you e.g. use
329
- * external packages that only expose types, and you still want references
330
- * to these types to be resolved you could expand this to
331
- * ['main', 'types', 'typings']
332
- */
333
- mainFields?: string[];
334
- /**
335
- * A list of files to consider 'main' files, defaults to ['index']. Only set
336
- * this when you have really special needs that warrant it.
337
- */
338
- mainFiles?: string[];
339
- /**
340
- * A list of alias fields in manifests (package.jsons).
341
- * Specify a field, such as browser, to be parsed according to
342
- * [this specification](https://github.com/defunctzombie/package-browser-field-spec).
343
- * Also see [resolve.alias](https://webpack.js.org/configuration/resolve/#resolvealiasfields)
344
- * in the webpack docs.
345
- *
346
- * Defaults to an empty array (don't use any alias fields).
347
- */
348
- aliasFields?: string[];
349
- /**
350
- * Options to pass to the resolver (webpack's 'enhanced resolve') regarding
351
- * caching.
352
- */
353
- cachedInputFileSystem?: {
354
- /**
355
- * The number of milliseconds [enhanced-resolve](webpack/enhanced-resolve)'s
356
- * cached file system should use for cache duration. Typically you won't
357
- * have to touch this - the default works well for repos up to 5000 modules/
358
- * 20000 dependencies, and likely for numbers above as well.
359
- *
360
- * If you experience memory problems on a (humongous) repository you can
361
- * use the cacheDuration attribute to tame enhanced-resolve's memory
362
- * usage by lowering the cache duration trading off against some (for
363
- * values over 1000ms) or significant (for values below 500ms) performance.
364
- *
365
- * Dependency-cruiser currently uses 1000ms, and in the past has
366
- * used 4000ms - both with good results.
367
- */
368
- cacheDuration: number;
369
- };
370
- };
294
+ /**
295
+ * Options used in module resolution that for dependency-cruiser's
296
+ * use cannot go in a webpack config.
297
+ */
298
+ enhancedResolveOptions?: {
299
+ /**
300
+ * "List of strings to consider as 'exports' fields in package.json. Use
301
+ * `['exports']` when you use packages that use such a field and your environment
302
+ * supports it (e.g. node ^12.19 || >=14.7 or recent versions of webpack).
303
+ */
304
+ exportsFields?: string[];
305
+ /**
306
+ * List of conditions to check for in the exports field. e.g. use `['imports']`
307
+ * if you're only interested in exposed es6 modules, `['require']` for commonjs,
308
+ * or all conditions at once (`['import', 'require', 'node', 'default']`)
309
+ * if anything goes for you. Only works when the 'exportsFields' array is non-empty
310
+ */
311
+ conditionNames?: string[];
312
+ /**
313
+ * List of extensions to scan for when resolving. Typically you want to leave
314
+ * this alone as dependency-cruiser figures out what extensions to scan based
315
+ * on
316
+ * 1. what is available in your environment,
317
+ * 2. in the order your environment (nodejs, typescript) applies the resolution itself.
318
+ *
319
+ * However if you want it to scan less you can specify so with the extensions
320
+ * attribute. E.g. when you're 100% sure you _only_ have typescript & json
321
+ * and nothing else you can pass `['.ts', '.json']` - which can lead to performance
322
+ * gains on systems with slow i/o (like ms-windows), especially when your
323
+ * tsconfig contains paths/ aliases.
324
+ */
325
+ extensions?: string[];
326
+ /**
327
+ * A list of main fields in manifests (package.json s). Typically you'd want
328
+ * to keep leave this this on its default (['main']) , but if you e.g. use
329
+ * external packages that only expose types, and you still want references
330
+ * to these types to be resolved you could expand this to
331
+ * ['main', 'types', 'typings']
332
+ */
333
+ mainFields?: string[];
334
+ /**
335
+ * A list of files to consider 'main' files, defaults to ['index']. Only set
336
+ * this when you have really special needs that warrant it.
337
+ */
338
+ mainFiles?: string[];
339
+ /**
340
+ * A list of alias fields in manifests (package.jsons).
341
+ * Specify a field, such as browser, to be parsed according to
342
+ * [this specification](https://github.com/defunctzombie/package-browser-field-spec).
343
+ * Also see [resolve.alias](https://webpack.js.org/configuration/resolve/#resolvealiasfields)
344
+ * in the webpack docs.
345
+ *
346
+ * Defaults to an empty array (don't use any alias fields).
347
+ */
348
+ aliasFields?: string[];
349
+ /**
350
+ * Options to pass to the resolver (webpack's 'enhanced resolve') regarding
351
+ * caching.
352
+ */
353
+ cachedInputFileSystem?: {
354
+ /**
355
+ * The number of milliseconds [enhanced-resolve](webpack/enhanced-resolve)'s
356
+ * cached file system should use for cache duration. Typically you won't
357
+ * have to touch this - the default works well for repos up to 5000 modules/
358
+ * 20000 dependencies, and likely for numbers above as well.
359
+ *
360
+ * If you experience memory problems on a (humongous) repository you can
361
+ * use the cacheDuration attribute to tame enhanced-resolve's memory
362
+ * usage by lowering the cache duration trading off against some (for
363
+ * values over 1000ms) or significant (for values below 500ms) performance.
364
+ *
365
+ * Dependency-cruiser currently uses 1000ms, and in the past has
366
+ * used 4000ms - both with good results.
367
+ */
368
+ cacheDuration: number;
369
+ };
370
+ };
371
371
 
372
- /**
373
- * Whether or not to show progress feedback when the command line
374
- * app is running.
375
- */
376
- progress?: {
377
- /**
378
- * The type of progress to show; `none` to not show anything at all;
379
- * `cli-feedback` to show a progress bar on stderr that disappears when
380
- * processing is done or `performance-log` to print timings and memory usage
381
- * of each major step to stderr.
382
- */
383
- type: ProgressType;
384
- /**
385
- * The maximum log level to emit messages at. Ranges from OFF (-1, don't " +
386
- * show any messages), via SUMMARY (40), INFO (50), DEBUG (60) all the " +
387
- * way to show ALL messages (99)."
388
- */
389
- maximumLevel?: -1 | 40 | 50 | 60 | 70 | 80 | 99;
390
- };
372
+ /**
373
+ * Whether or not to show progress feedback when the command line
374
+ * app is running.
375
+ */
376
+ progress?: {
377
+ /**
378
+ * The type of progress to show; `none` to not show anything at all;
379
+ * `cli-feedback` to show a progress bar on stderr that disappears when
380
+ * processing is done or `performance-log` to print timings and memory usage
381
+ * of each major step to stderr.
382
+ */
383
+ type: ProgressType;
384
+ /**
385
+ * The maximum log level to emit messages at. Ranges from OFF (-1, don't " +
386
+ * show any messages), via SUMMARY (40), INFO (50), DEBUG (60) all the " +
387
+ * way to show ALL messages (99)."
388
+ */
389
+ maximumLevel?: -1 | 40 | 50 | 60 | 70 | 80 | 99;
390
+ };
391
391
 
392
- /**
393
- * When this flag is set to true, dependency-cruiser will calculate (stability) metrics
394
- * for all modules and folders. Defaults to false.
395
- */
396
- metrics?: boolean;
392
+ /**
393
+ * When this flag is set to true, dependency-cruiser will calculate (stability) metrics
394
+ * for all modules and folders. Defaults to false.
395
+ */
396
+ metrics?: boolean;
397
397
 
398
- /**
399
- * When this flag is set to true, dependency-cruiser will calculate some
400
- * stats for each module. Has some performance impact. EXPERIMENTAL
401
- * Will be renamed when the 'experimental' state is lifted.
402
- *
403
- * Defaults to false.
404
- */
405
- experimentalStats?: boolean;
398
+ /**
399
+ * When this flag is set to true, dependency-cruiser will calculate some
400
+ * stats for each module. Has some performance impact. EXPERIMENTAL
401
+ * Will be renamed when the 'experimental' state is lifted.
402
+ *
403
+ * Defaults to false.
404
+ */
405
+ experimentalStats?: boolean;
406
406
 
407
- /**
408
- * When this flag is set to true, dependency-cruiser will skip all analysis
409
- * that don't serve a rule. E.g. if there's no 'circular' rule in the rule set
410
- * it won't analyse cycles. This flag affects cycle, dependents, orphan, and
411
- * reachability analysis. If you have a rule set that doesn't use one of these
412
- * features, switching it to true will make cruises faster.
413
- *
414
- * Defaults to false for backwards compatibility - for most uses of
415
- * dependency-cruiser we recommend to switch this option to true, though.
416
- */
417
- skipAnalysisNotInRules?: boolean;
407
+ /**
408
+ * When this flag is set to true, dependency-cruiser will skip all analysis
409
+ * that don't serve a rule. E.g. if there's no 'circular' rule in the rule set
410
+ * it won't analyse cycles. This flag affects cycle, dependents, orphan, and
411
+ * reachability analysis. If you have a rule set that doesn't use one of these
412
+ * features, switching it to true will make cruises faster.
413
+ *
414
+ * Defaults to false for backwards compatibility - for most uses of
415
+ * dependency-cruiser we recommend to switch this option to true, though.
416
+ */
417
+ skipAnalysisNotInRules?: boolean;
418
418
 
419
- /**
420
- * - false: don't use caching.
421
- * - true or empty object: use caching with the default settings
422
- * - a string (deprecated): cache in the folder denoted by the string & use the
423
- * default caching strategy. This is deprecated - instead pass a cache object
424
- * e.g. ```{ folder: 'your/cache/location' }```
425
- *
426
- * Defaults to false.
427
- * When caching is switched on the default cache folder is 'node_modules/.cache/dependency-cruiser/'
428
- */
429
- cache?: boolean | string | Partial<ICacheOptions>;
419
+ /**
420
+ * - false: don't use caching.
421
+ * - true or empty object: use caching with the default settings
422
+ * - a string (deprecated): cache in the folder denoted by the string & use the
423
+ * default caching strategy. This is deprecated - instead pass a cache object
424
+ * e.g. ```{ folder: 'your/cache/location' }```
425
+ *
426
+ * Defaults to false.
427
+ * When caching is switched on the default cache folder is 'node_modules/.cache/dependency-cruiser/'
428
+ */
429
+ cache?: boolean | string | Partial<ICacheOptions>;
430
430
  }
431
431
 
432
432
  export interface IFormatOptions {
433
- /**
434
- * regular expression describing which dependencies the function
435
- * should not cruise
436
- */
437
- exclude?: string | string[] | IExcludeType;
438
- /**
439
- * regular expression describing which dependencies the function
440
- * should cruise - anything not matching this will be skipped
441
- */
442
- includeOnly?: string | string[] | IIncludeOnlyType;
443
- /**
444
- * dependency-cruiser will include modules matching this regular expression
445
- * in its output, as well as their neighbours (direct dependencies and
446
- * dependents)
447
- */
448
- focus?: string | string[] | IFocusType;
449
- /**
450
- * dependency-cruiser will include modules matching this regular expression
451
- * in its output, as well as _any_ module that reaches them - either directly
452
- * or via via.
453
- */
454
- reaches?: string | string[] | IReachesType;
455
- /**
456
- * collapse a to a folder depth by passing a single digit (e.g. 2).
457
- * When passed a regex collapse to that pattern
458
- *
459
- * E.g. ^packages/[^/]+/ would collapse to modules/ folders directly under
460
- * your packages folder.
461
- */
462
- collapse?: string | number;
463
- /**
464
- * one of "json", "html", "dot", "csv" or "err". When left
465
- * out the function will return a javascript object as dependencies
466
- */
467
- outputType?: OutputType;
468
- /**
469
- * a string to insert before links (in dot/ svg output) so with
470
- * cruising local dependencies it is possible to point to sources
471
- * elsewhere (e.g. in an online repository)
472
- */
473
- prefix?: string;
433
+ /**
434
+ * regular expression describing which dependencies the function
435
+ * should not cruise
436
+ */
437
+ exclude?: string | string[] | IExcludeType;
438
+ /**
439
+ * regular expression describing which dependencies the function
440
+ * should cruise - anything not matching this will be skipped
441
+ */
442
+ includeOnly?: string | string[] | IIncludeOnlyType;
443
+ /**
444
+ * dependency-cruiser will include modules matching this regular expression
445
+ * in its output, as well as their neighbours (direct dependencies and
446
+ * dependents)
447
+ */
448
+ focus?: string | string[] | IFocusType;
449
+ /**
450
+ * dependency-cruiser will include modules matching this regular expression
451
+ * in its output, as well as _any_ module that reaches them - either directly
452
+ * or via via.
453
+ */
454
+ reaches?: string | string[] | IReachesType;
455
+ /**
456
+ * collapse a to a folder depth by passing a single digit (e.g. 2).
457
+ * When passed a regex collapse to that pattern
458
+ *
459
+ * E.g. ^packages/[^/]+/ would collapse to modules/ folders directly under
460
+ * your packages folder.
461
+ */
462
+ collapse?: string | number;
463
+ /**
464
+ * one of "json", "html", "dot", "csv" or "err". When left
465
+ * out the function will return a javascript object as dependencies
466
+ */
467
+ outputType?: OutputType;
468
+ /**
469
+ * a string to insert before links (in dot/ svg output) so with
470
+ * cruising local dependencies it is possible to point to sources
471
+ * elsewhere (e.g. in an online repository)
472
+ */
473
+ prefix?: string;
474
474
  }