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.
- package/bin/depcruise-baseline.mjs +43 -43
- package/bin/depcruise-fmt.mjs +89 -89
- package/bin/dependency-cruise.mjs +171 -171
- package/configs/plugins/3d-reporter-plugin.mjs +36 -36
- package/configs/plugins/stats-reporter-plugin.mjs +51 -51
- package/configs/recommended-strict.cjs +5 -5
- package/configs/recommended-warn-only.cjs +5 -5
- package/configs/recommended.cjs +22 -22
- package/configs/rules/no-circular.cjs +10 -10
- package/configs/rules/no-deprecated-core.cjs +10 -10
- package/configs/rules/no-duplicate-dependency-types.cjs +17 -17
- package/configs/rules/no-non-package-json.cjs +11 -11
- package/configs/rules/no-orphans.cjs +18 -18
- package/configs/rules/not-to-deprecated.cjs +10 -10
- package/configs/rules/not-to-unresolvable.cjs +10 -10
- package/package.json +170 -170
- package/src/cache/cache.mjs +139 -139
- package/src/cache/content-strategy.mjs +88 -88
- package/src/cache/find-content-changes.mjs +58 -58
- package/src/cache/helpers.mjs +52 -52
- package/src/cache/metadata-strategy.mjs +83 -83
- package/src/cache/options-compatible.mjs +56 -109
- package/src/cli/assert-node-environment-suitable.mjs +7 -7
- package/src/cli/defaults.mjs +5 -5
- package/src/cli/format-meta-info.mjs +22 -22
- package/src/cli/format.mjs +28 -28
- package/src/cli/index.mjs +145 -145
- package/src/cli/init-config/build-config.mjs +94 -94
- package/src/cli/init-config/environment-helpers.mjs +77 -77
- package/src/cli/init-config/find-extensions.mjs +27 -27
- package/src/cli/init-config/get-user-input.mjs +151 -151
- package/src/cli/init-config/index.mjs +88 -88
- package/src/cli/init-config/normalize-init-options.mjs +47 -47
- package/src/cli/init-config/utl.mjs +4 -4
- package/src/cli/init-config/validators.mjs +10 -10
- package/src/cli/init-config/write-config.mjs +21 -21
- package/src/cli/init-config/write-run-scripts-to-manifest.mjs +103 -107
- package/src/cli/listeners/cli-feedback.mjs +49 -49
- package/src/cli/listeners/ndjson.mjs +66 -66
- package/src/cli/listeners/performance-log/format-helpers.mjs +63 -63
- package/src/cli/listeners/performance-log/handlers.mjs +56 -56
- package/src/cli/listeners/performance-log/index.mjs +37 -37
- package/src/cli/normalize-cli-options.mjs +182 -182
- package/src/cli/tools/wrap-stream-in-html.mjs +37 -37
- package/src/cli/utl/assert-file-existence.mjs +7 -7
- package/src/cli/utl/io.mjs +28 -31
- package/src/config-utl/extract-babel-config.mjs +69 -69
- package/src/config-utl/extract-depcruise-config/index.mjs +54 -54
- package/src/config-utl/extract-depcruise-config/merge-configs.mjs +63 -63
- package/src/config-utl/extract-depcruise-config/read-config.mjs +9 -9
- package/src/config-utl/extract-depcruise-options.mjs +9 -9
- package/src/config-utl/extract-known-violations.mjs +49 -49
- package/src/config-utl/extract-ts-config.mjs +46 -48
- package/src/config-utl/extract-webpack-resolve-config.mjs +88 -88
- package/src/config-utl/make-absolute.mjs +5 -5
- package/src/enrich/add-validations.mjs +13 -13
- package/src/enrich/derive/circular.mjs +49 -49
- package/src/enrich/derive/dependents.mjs +27 -27
- package/src/enrich/derive/folders/aggregate-to-folders.mjs +104 -104
- package/src/enrich/derive/folders/index.mjs +19 -19
- package/src/enrich/derive/folders/utl.mjs +18 -18
- package/src/enrich/derive/metrics/get-module-metrics.mjs +27 -27
- package/src/enrich/derive/metrics/index.mjs +8 -8
- package/src/enrich/derive/module-utl.mjs +18 -18
- package/src/enrich/derive/orphan/index.mjs +18 -18
- package/src/enrich/derive/orphan/is-orphan.mjs +9 -9
- package/src/enrich/derive/reachable.mjs +165 -168
- package/src/enrich/enrich-modules.mjs +25 -25
- package/src/enrich/index.mjs +15 -15
- package/src/enrich/soften-known-violations.mjs +90 -90
- package/src/enrich/summarize/add-rule-set-used.mjs +13 -13
- package/src/enrich/summarize/get-stats.mjs +17 -17
- package/src/enrich/summarize/index.mjs +18 -18
- package/src/enrich/summarize/is-same-violation.mjs +30 -30
- package/src/enrich/summarize/summarize-folders.mjs +35 -35
- package/src/enrich/summarize/summarize-modules.mjs +97 -97
- package/src/enrich/summarize/summarize-options.mjs +71 -71
- package/src/extract/acorn/estree-helpers.mjs +66 -66
- package/src/extract/acorn/extract-amd-deps.mjs +63 -64
- package/src/extract/acorn/extract-cjs-deps.mjs +83 -83
- package/src/extract/acorn/extract-es6-deps.mjs +54 -54
- package/src/extract/acorn/extract-stats.mjs +4 -4
- package/src/extract/acorn/extract.mjs +28 -28
- package/src/extract/acorn/parse.mjs +37 -37
- package/src/extract/clear-caches.mjs +7 -7
- package/src/extract/extract-dependencies.mjs +109 -109
- package/src/extract/extract-stats.mjs +21 -21
- package/src/extract/gather-initial-sources.mjs +64 -64
- package/src/extract/helpers.mjs +73 -71
- package/src/extract/index.mjs +120 -120
- package/src/extract/resolve/determine-dependency-types.mjs +166 -169
- package/src/extract/resolve/external-module-helpers.mjs +76 -76
- package/src/extract/resolve/get-manifest.mjs +79 -79
- package/src/extract/resolve/index.mjs +175 -164
- package/src/extract/resolve/is-built-in.mjs +22 -24
- package/src/extract/resolve/merge-manifests.mjs +43 -43
- package/src/extract/resolve/module-classifiers.mjs +229 -229
- package/src/extract/resolve/resolve-amd.mjs +44 -44
- package/src/extract/resolve/resolve-cjs.mjs +40 -40
- package/src/extract/resolve/resolve-helpers.mjs +20 -20
- package/src/extract/resolve/resolve.mjs +26 -26
- package/src/extract/swc/dependency-visitor.mjs +211 -211
- package/src/extract/swc/extract-swc-deps.mjs +4 -4
- package/src/extract/swc/extract.mjs +7 -7
- package/src/extract/swc/parse.mjs +12 -12
- package/src/extract/transpile/babel-wrap.mjs +9 -9
- package/src/extract/transpile/coffeescript-wrap.mjs +21 -21
- package/src/extract/transpile/index.mjs +47 -47
- package/src/extract/transpile/javascript-wrap.mjs +6 -6
- package/src/extract/transpile/livescript-wrap.mjs +5 -5
- package/src/extract/transpile/meta.mjs +80 -80
- package/src/extract/transpile/svelte-preprocess.mjs +73 -73
- package/src/extract/transpile/svelte-wrap.mjs +19 -19
- package/src/extract/transpile/try-import-available.mjs +26 -27
- package/src/extract/transpile/typescript-wrap.mjs +39 -39
- package/src/extract/transpile/vue-template-wrap.cjs +43 -43
- package/src/extract/tsc/extract-stats.mjs +4 -4
- package/src/extract/tsc/extract-typescript-deps.mjs +429 -398
- package/src/extract/tsc/extract.mjs +22 -22
- package/src/extract/tsc/parse.mjs +21 -21
- package/src/graph-utl/add-focus.mjs +35 -35
- package/src/graph-utl/compare.mjs +24 -24
- package/src/graph-utl/consolidate-module-dependencies.mjs +35 -35
- package/src/graph-utl/consolidate-modules.mjs +33 -33
- package/src/graph-utl/consolidate-to-folder.mjs +13 -13
- package/src/graph-utl/consolidate-to-pattern.mjs +34 -34
- package/src/graph-utl/filter-bank.mjs +74 -69
- package/src/graph-utl/indexed-module-graph.mjs +227 -225
- package/src/graph-utl/match-facade.mjs +3 -3
- package/src/graph-utl/rule-set.mjs +20 -20
- package/src/graph-utl/strip-self-transitions.mjs +6 -6
- package/src/main/cruise.mjs +81 -81
- package/src/main/files-and-dirs/normalize.mjs +7 -7
- package/src/main/format.mjs +11 -14
- package/src/main/helpers.mjs +25 -25
- package/src/main/index.mjs +8 -8
- package/src/main/options/assert-validity.mjs +100 -100
- package/src/main/options/defaults.mjs +11 -11
- package/src/main/options/normalize.mjs +158 -160
- package/src/main/report-wrap.mjs +37 -37
- package/src/main/resolve-options/normalize.mjs +127 -128
- package/src/main/rule-set/assert-validity.mjs +67 -73
- package/src/main/rule-set/normalize.mjs +81 -79
- package/src/meta.cjs +15 -16
- package/src/report/anon/anonymize-path-element.mjs +20 -34
- package/src/report/anon/anonymize-path.mjs +11 -11
- package/src/report/anon/index.mjs +119 -119
- package/src/report/anon/random-string.mjs +23 -23
- package/src/report/azure-devops.mjs +75 -99
- package/src/report/baseline.mjs +9 -9
- package/src/report/csv.mjs +13 -13
- package/src/report/d2.mjs +105 -105
- package/src/report/dot/default-theme.mjs +152 -152
- package/src/report/dot/index.mjs +146 -146
- package/src/report/dot/module-utl.mjs +72 -72
- package/src/report/dot/prepare-custom-level.mjs +20 -20
- package/src/report/dot/prepare-flat-level.mjs +11 -11
- package/src/report/dot/prepare-folder-level.mjs +12 -13
- package/src/report/dot/theming.mjs +73 -73
- package/src/report/dot-webpage/dot-module.mjs +36 -36
- package/src/report/dot-webpage/svg-in-html-snippets/script.cjs +208 -210
- package/src/report/dot-webpage/svg-in-html-snippets/style.css +51 -51
- package/src/report/dot-webpage/wrap-in-html.mjs +7 -7
- package/src/report/error-html/index.mjs +49 -49
- package/src/report/error-html/utl.mjs +99 -99
- package/src/report/error-long.mjs +1 -1
- package/src/report/error.mjs +93 -93
- package/src/report/html/index.mjs +48 -48
- package/src/report/identity.mjs +4 -4
- package/src/report/index.mjs +33 -33
- package/src/report/json.mjs +4 -4
- package/src/report/markdown.mjs +120 -120
- package/src/report/mermaid.mjs +111 -111
- package/src/report/metrics.mjs +185 -185
- package/src/report/null.mjs +4 -4
- package/src/report/plugins.mjs +41 -41
- package/src/report/teamcity.mjs +150 -150
- package/src/report/text.mjs +42 -42
- package/src/report/utl/dependency-to-incidence-transformer.mjs +32 -32
- package/src/report/utl/index.mjs +53 -53
- package/src/schema/configuration.validate.mjs +1 -0
- package/src/schema/cruise-result.validate.mjs +1 -0
- package/src/schema/utl.mjs +6 -0
- package/src/utl/array-util.mjs +25 -25
- package/src/utl/bus.mjs +12 -12
- package/src/utl/extract-root-module-name.cjs +8 -8
- package/src/utl/find-all-files.mjs +54 -54
- package/src/utl/get-extension.mjs +2 -2
- package/src/utl/object-util.mjs +21 -22
- package/src/utl/path-to-posix.mjs +5 -5
- package/src/utl/regex-util.mjs +20 -20
- package/src/utl/try-import.mjs +42 -41
- package/src/utl/try-require.cjs +23 -23
- package/src/utl/wrap-and-indent.mjs +33 -33
- package/src/validate/index.mjs +65 -65
- package/src/validate/match-dependency-rule.mjs +47 -47
- package/src/validate/match-folder-dependency-rule.mjs +27 -27
- package/src/validate/match-module-rule-helpers.mjs +76 -76
- package/src/validate/match-module-rule.mjs +12 -12
- package/src/validate/matchers.mjs +162 -162
- package/src/validate/rule-classifiers.mjs +9 -9
- package/src/validate/violates-required-rule.mjs +23 -23
- package/types/cache-options.d.mts +27 -27
- package/types/config-utl/extract-babel-config.d.mts +1 -1
- package/types/config-utl/extract-depcruise-config.d.mts +3 -3
- package/types/config-utl/extract-depcruise-options.d.mts +1 -1
- package/types/config-utl/extract-ts-config.d.mts +1 -1
- package/types/config-utl/extract-webpack-resolve-config.d.mts +3 -3
- package/types/configuration.d.mts +10 -10
- package/types/cruise-result.d.mts +414 -414
- package/types/dependency-cruiser.d.mts +52 -52
- package/types/filter-types.d.mts +45 -45
- package/types/options.d.mts +430 -430
- package/types/plugins/3d-reporter-plugin.d.mts +9 -9
- package/types/plugins/mermaid-reporter-plugin.d.mts +10 -10
- package/types/plugins/stats-reporter-plugin.d.mts +9 -9
- package/types/reporter-options.d.mts +196 -196
- package/types/resolve-options.d.mts +23 -23
- package/types/restrictions.d.mts +174 -174
- package/types/rule-set.d.mts +132 -132
- package/types/rule-summary.d.mts +14 -14
- package/types/shared-types.d.mts +89 -89
- package/types/strict-filter-types.d.mts +52 -52
- package/types/strict-options.d.mts +34 -34
- package/types/strict-restrictions.d.mts +25 -25
- package/types/strict-rule-set.d.mts +36 -36
- package/types/violations.d.mts +40 -40
- package/src/schema/README.md +0 -5
- package/src/schema/baseline-violations.schema.mjs +0 -1
- package/src/schema/configuration.schema.mjs +0 -1
- package/src/schema/cruise-result.schema.mjs +0 -1
- package/types/README.md +0 -1
|
@@ -1,471 +1,471 @@
|
|
|
1
1
|
import type { ICruiseOptions } from "./options.mjs";
|
|
2
2
|
import type { IFlattenedRuleSet } from "./rule-set.mjs";
|
|
3
3
|
import type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
IMiniDependency,
|
|
5
|
+
DependencyType,
|
|
6
|
+
ModuleSystemType,
|
|
7
|
+
ProtocolType,
|
|
8
|
+
ExperimentalStatsType,
|
|
9
9
|
} from "./shared-types.mjs";
|
|
10
10
|
import type { IViolation } from "./violations.mjs";
|
|
11
11
|
import type { IRuleSummary } from "./rule-summary.mjs";
|
|
12
12
|
import type { IChange } from "watskeburt";
|
|
13
13
|
|
|
14
14
|
export interface IRevisionChange extends IChange {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
// optional because
|
|
16
|
+
// - in content strategy 'ignored' and 'deleted' files can't have a checksum
|
|
17
|
+
// - in metadata strategy we don't calculate a checksum because ~we're lazy~
|
|
18
|
+
// it's an unnecessary expense
|
|
19
|
+
checksum?: string;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* caching revisionData. doc and proper naming will follow
|
|
24
24
|
*/
|
|
25
25
|
export interface IRevisionData {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
/**
|
|
27
|
+
* The version of the cache format. If the version number found in
|
|
28
|
+
* the cache is < the version number in the code, the cache is
|
|
29
|
+
* considered stale and won't be used (and overwritten on next run).
|
|
30
|
+
*/
|
|
31
|
+
cacheFormatVersion?: number;
|
|
32
|
+
SHA1: string;
|
|
33
|
+
changes: IRevisionChange[];
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export interface ICruiseResult {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
37
|
+
/**
|
|
38
|
+
* A list of modules, with for each module the modules it depends upon
|
|
39
|
+
*/
|
|
40
|
+
modules: IModule[];
|
|
41
|
+
/**
|
|
42
|
+
* A list of folders, as derived from the detected modules, with for each
|
|
43
|
+
* folder a bunch of metrics (adapted from 'Agile software development:
|
|
44
|
+
* principles, patterns, and practices' by Robert C Martin (ISBN 0-13-597444-5).
|
|
45
|
+
* Note: these metrics substitute 'components' and 'classes' from that book
|
|
46
|
+
* with 'folders' and 'modules'; the closest relatives that work for the most
|
|
47
|
+
* programming styles in JavaScript (and its derivative languages).
|
|
48
|
+
*/
|
|
49
|
+
folders?: IFolder[];
|
|
50
|
+
/**
|
|
51
|
+
* Data summarizing the found dependencies
|
|
52
|
+
*/
|
|
53
|
+
summary: ISummary;
|
|
54
|
+
/**
|
|
55
|
+
* caching revisionData. doc and proper naming will follow
|
|
56
|
+
*/
|
|
57
|
+
revisionData?: IRevisionData;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
export interface IModule {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
61
|
+
/**
|
|
62
|
+
* The (resolved) file name of the module, e.g. 'src/main/index.js'
|
|
63
|
+
*/
|
|
64
|
+
source: string;
|
|
65
|
+
/**
|
|
66
|
+
* 'true' if this module violated a rule; 'false' in all other cases. The violated rule will
|
|
67
|
+
* be in the 'rule' object at the same level.
|
|
68
|
+
*/
|
|
69
|
+
valid: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* list of modules this module depends on
|
|
72
|
+
*/
|
|
73
|
+
dependencies: IDependency[];
|
|
74
|
+
/**
|
|
75
|
+
* list of modules that depend on this module (values are _resolved_ names of
|
|
76
|
+
* those modules)
|
|
77
|
+
*/
|
|
78
|
+
dependents: string[];
|
|
79
|
+
/**
|
|
80
|
+
* Whether or not this is a node.js core module
|
|
81
|
+
*/
|
|
82
|
+
coreModule?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* 'true' if dependency-cruiser could not resolve the module name in the source code to a
|
|
85
|
+
* file name or core module. 'false' in all other cases.
|
|
86
|
+
*/
|
|
87
|
+
couldNotResolve?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* the type of inclusion - local, core, unknown (= we honestly don't know), undetermined (=
|
|
90
|
+
* we didn't bother determining it) or one of the npm dependencies defined in a package.json
|
|
91
|
+
* ('npm' for 'dependencies', 'npm-dev', 'npm-optional', 'npm-peer', 'npm-no-pkg' for
|
|
92
|
+
* development, optional, peer dependencies and dependencies in node_modules but not in
|
|
93
|
+
* package.json respectively)
|
|
94
|
+
*/
|
|
95
|
+
dependencyTypes?: DependencyType[];
|
|
96
|
+
/**
|
|
97
|
+
* Whether or not this is a dependency that can be followed any further. This will be
|
|
98
|
+
* 'false' for for core modules, json, modules that could not be resolved to a file and
|
|
99
|
+
* modules that weren't followed because it matches the doNotFollow expression.
|
|
100
|
+
*/
|
|
101
|
+
followable?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* the license, if known (usually known for modules pulled from npm, not for local ones)
|
|
104
|
+
*/
|
|
105
|
+
license?: string;
|
|
106
|
+
/**
|
|
107
|
+
* 'true' if the file name of this module matches the 'doNotFollow' regular expression
|
|
108
|
+
*/
|
|
109
|
+
matchesDoNotFollow?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* 'true' if the file name of this module matches the 'focus' filter regular expression
|
|
112
|
+
*/
|
|
113
|
+
matchesFocus?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* 'true' if the file name of this module matches the 'reaches' filter regular expression
|
|
116
|
+
*/
|
|
117
|
+
matchesReaches?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* 'true' if the file name of this module matches the 'highlight' regular expression
|
|
120
|
+
*/
|
|
121
|
+
matchesHighlight?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* 'true' if this module does not have dependencies, and no module has it as a dependency
|
|
124
|
+
*/
|
|
125
|
+
orphan?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* An array of objects that tell whether this module is 'reachable', and according to rule
|
|
128
|
+
* in which this reachability was defined
|
|
129
|
+
*/
|
|
130
|
+
reachable?: IReachable[];
|
|
131
|
+
/**
|
|
132
|
+
* An array of objects that tell which other modules it reaches,
|
|
133
|
+
* and that falls within the definition of the passed rule.
|
|
134
|
+
*/
|
|
135
|
+
reaches?: IReaches[];
|
|
136
|
+
/**
|
|
137
|
+
* an array of rules violated by this module - left out if the module is valid
|
|
138
|
+
*/
|
|
139
|
+
rules?: IRuleSummary[];
|
|
140
|
+
/**
|
|
141
|
+
* true if the module was 'consolidated'. Consolidating implies the
|
|
142
|
+
* entity a Module represents might be several modules at the same time.
|
|
143
|
+
* This attribute is set by tools that consolidate modules for reporting
|
|
144
|
+
* purposes - it will not be present after a regular cruise.
|
|
145
|
+
*/
|
|
146
|
+
consolidated?: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* "number of dependents/ (number of dependents + number of dependencies)
|
|
149
|
+
* A measure for how stable the module is; ranging between 0 (completely
|
|
150
|
+
* stable module) to 1 (completely instable module). Derived from Uncle
|
|
151
|
+
* Bob's instability metric - but applied to a single module instead of
|
|
152
|
+
* to a group of them. This attribute is only present when dependency-cruiser
|
|
153
|
+
* was asked to calculate metrics.
|
|
154
|
+
*/
|
|
155
|
+
instability?: number;
|
|
156
|
+
/**
|
|
157
|
+
* a collection of stats that are not part of the regular output, but
|
|
158
|
+
* might be interesting for further analysis
|
|
159
|
+
*/
|
|
160
|
+
experimentalStats?: ExperimentalStatsType;
|
|
161
|
+
/**
|
|
162
|
+
* checksum of the contents of the module. This attribute is currently only
|
|
163
|
+
* available when the cruise was executed with caching and the cache strategy
|
|
164
|
+
* is 'content'.
|
|
165
|
+
*/
|
|
166
|
+
checksum?: string;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
export interface IDependency {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
170
|
+
/**
|
|
171
|
+
* 'true' if following this dependency will ultimately return to the source, false in all
|
|
172
|
+
* other cases
|
|
173
|
+
*/
|
|
174
|
+
circular: boolean;
|
|
175
|
+
/**
|
|
176
|
+
* Whether or not this is a node.js core module - deprecated in favor of dependencyType ===
|
|
177
|
+
* core
|
|
178
|
+
*/
|
|
179
|
+
coreModule: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* 'true' if dependency-cruiser could not resolve the module name in the source code to a
|
|
182
|
+
* file name or core module. 'false' in all other cases.
|
|
183
|
+
*/
|
|
184
|
+
couldNotResolve: boolean;
|
|
185
|
+
/**
|
|
186
|
+
* 'true' if the dependency between this dependency and its parent only
|
|
187
|
+
* exists before compilation takes place. 'false in all other cases.
|
|
188
|
+
* Dependency-cruiser will only specify this attribute for TypeScript and
|
|
189
|
+
* then only when the option 'tsPreCompilationDeps' has the value 'specify'.
|
|
190
|
+
*/
|
|
191
|
+
preCompilationOnly?: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* 'true' when the module included the module explicitly as type only with the
|
|
194
|
+
* `type` keyword e.g. `import type { IThingus } from 'thing'`. Dependency-cruiser
|
|
195
|
+
* will only specify this attribute for TypeScript and when the 'tsPreCompilationDeps'
|
|
196
|
+
* option has either the value `true` or `"specify"`.
|
|
197
|
+
*/
|
|
198
|
+
typeOnly?: boolean;
|
|
199
|
+
/**
|
|
200
|
+
* If following this dependency will ultimately return to the source (circular === true),
|
|
201
|
+
* this attribute will contain an (ordered) array of module names that shows (one of) the
|
|
202
|
+
* circular path(s)
|
|
203
|
+
*/
|
|
204
|
+
cycle?: IMiniDependency[];
|
|
205
|
+
/**
|
|
206
|
+
* the type of inclusion - local, core, unknown (= we honestly don't know), undetermined (=
|
|
207
|
+
* we didn't bother determining it) or one of the npm dependencies defined in a package.json
|
|
208
|
+
* ('npm' for 'dependencies', 'npm-dev', 'npm-optional', 'npm-peer', 'npm-no-pkg' for
|
|
209
|
+
* development, optional, peer dependencies and dependencies in node_modules but not in
|
|
210
|
+
* package.json respectively)
|
|
211
|
+
*/
|
|
212
|
+
dependencyTypes: DependencyType[];
|
|
213
|
+
/**
|
|
214
|
+
* true if this dependency is dynamic, false in all other cases
|
|
215
|
+
*/
|
|
216
|
+
dynamic: boolean;
|
|
217
|
+
/**
|
|
218
|
+
* true if the dependency was defined by a require not named 'require'
|
|
219
|
+
* false in all other cases
|
|
220
|
+
*/
|
|
221
|
+
exoticallyRequired: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* If this dependency was defined by a require not named require (as defined in the
|
|
224
|
+
* exoticRequireStrings option): the string that was used
|
|
225
|
+
*/
|
|
226
|
+
exoticRequire?: string;
|
|
227
|
+
/**
|
|
228
|
+
* Whether or not this is a dependency that can be followed any further. This will be
|
|
229
|
+
* 'false' for for core modules, json, modules that could not be resolved to a file and
|
|
230
|
+
* modules that weren't followed because it matches the doNotFollow expression.
|
|
231
|
+
*/
|
|
232
|
+
followable: boolean;
|
|
233
|
+
/**
|
|
234
|
+
* the license, if known (usually known for modules pulled from npm, not for local ones)
|
|
235
|
+
*/
|
|
236
|
+
license?: string;
|
|
237
|
+
/**
|
|
238
|
+
* 'true' if the file name of this module matches the doNotFollow regular expression
|
|
239
|
+
*/
|
|
240
|
+
matchesDoNotFollow?: boolean;
|
|
241
|
+
/**
|
|
242
|
+
* The name of the module as it appeared in the source code, e.g. './main'
|
|
243
|
+
*/
|
|
244
|
+
module: string;
|
|
245
|
+
/**
|
|
246
|
+
* If the module specification is an URI with a protocol in it (e.g.
|
|
247
|
+
* `import * as fs from 'node:fs'` or
|
|
248
|
+
* `import stuff from 'data:application/json,some-thing'`) -
|
|
249
|
+
* this attribute holds the protocol part (e.g. 'node:', 'data:', 'file:').
|
|
250
|
+
*
|
|
251
|
+
* Also see https://nodejs.org/api/esm.html#esm_urls
|
|
252
|
+
*/
|
|
253
|
+
protocol: ProtocolType;
|
|
254
|
+
/**
|
|
255
|
+
* If the module specification is an URI and contains a mime type, this
|
|
256
|
+
* attribute holds the mime type (e.g. in `import stuff from 'data:application/json,some-thing'
|
|
257
|
+
* `this would be data:application/json)
|
|
258
|
+
*
|
|
259
|
+
* Also see https://nodejs.org/api/esm.html#esm_urls
|
|
260
|
+
*/
|
|
261
|
+
mimeType: string;
|
|
262
|
+
moduleSystem: ModuleSystemType;
|
|
263
|
+
/**
|
|
264
|
+
* The (resolved) file name of the module, e.g. 'src/main//index.js'
|
|
265
|
+
*/
|
|
266
|
+
resolved: string;
|
|
267
|
+
/**
|
|
268
|
+
* an array of rules violated by this dependency - left out if the dependency is valid
|
|
269
|
+
*/
|
|
270
|
+
rules?: IRuleSummary[];
|
|
271
|
+
/**
|
|
272
|
+
* 'true' if this dependency violated a rule; 'false' in all other cases. The violated rule
|
|
273
|
+
* will be in the 'rule' object at the same level.
|
|
274
|
+
*/
|
|
275
|
+
valid: boolean;
|
|
276
|
+
/**
|
|
277
|
+
* the (de-normalized) instability of the dependency - also available in
|
|
278
|
+
* the module on the 'to' side of this dependency
|
|
279
|
+
*/
|
|
280
|
+
instability: number;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
export interface IReachable {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
284
|
+
/**
|
|
285
|
+
* The name of the rule where the reachability was defined
|
|
286
|
+
*/
|
|
287
|
+
asDefinedInRule: string;
|
|
288
|
+
/**
|
|
289
|
+
* The matchedFrom attribute shows what the 'from' module that causes the 'reachable'
|
|
290
|
+
* information to be what it is. Sometimes the 'asDefinedInRule' is not specific enough -
|
|
291
|
+
* e.g. when the from part can be many modules and/ or contains capturing groups used
|
|
292
|
+
* in the to part of the rule.
|
|
293
|
+
*/
|
|
294
|
+
matchedFrom: string;
|
|
295
|
+
/**
|
|
296
|
+
* 'true' if this module is reachable from any of the modules matched by the from part of a
|
|
297
|
+
* reachability-rule in 'asDefinedInRule', 'false' if not.
|
|
298
|
+
*/
|
|
299
|
+
value: boolean;
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
export interface IReachesModule {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
303
|
+
/**
|
|
304
|
+
* The (resolved) file name of the module, e.g. 'src/main/index.js'
|
|
305
|
+
*/
|
|
306
|
+
source: string;
|
|
307
|
+
/**
|
|
308
|
+
* The path along which the 'to' module is reachable from this one.
|
|
309
|
+
*/
|
|
310
|
+
via: IMiniDependency[];
|
|
311
311
|
}
|
|
312
312
|
|
|
313
313
|
export interface IReaches {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
314
|
+
/**
|
|
315
|
+
* The name of the rule where the reachability was defined
|
|
316
|
+
*/
|
|
317
|
+
asDefinedInRule: string;
|
|
318
|
+
/**
|
|
319
|
+
* An array of modules that is (transitively) reachable from this module.
|
|
320
|
+
*/
|
|
321
|
+
modules: IReachesModule[];
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
/**
|
|
325
325
|
* Data summarizing the found dependencies
|
|
326
326
|
*/
|
|
327
327
|
export interface ISummary {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
328
|
+
/**
|
|
329
|
+
* the number of errors in the dependencies
|
|
330
|
+
*/
|
|
331
|
+
error: number;
|
|
332
|
+
/**
|
|
333
|
+
* the number of ignored notices in the dependencies
|
|
334
|
+
*/
|
|
335
|
+
ignore: number;
|
|
336
|
+
/**
|
|
337
|
+
* the number of informational level notices in the dependencies
|
|
338
|
+
*/
|
|
339
|
+
info: number;
|
|
340
|
+
optionsUsed: IOptions;
|
|
341
|
+
/**
|
|
342
|
+
* rules used in the cruise
|
|
343
|
+
*/
|
|
344
|
+
ruleSetUsed?: IFlattenedRuleSet;
|
|
345
|
+
/**
|
|
346
|
+
* the number of modules cruised
|
|
347
|
+
*/
|
|
348
|
+
totalCruised: number;
|
|
349
|
+
/**
|
|
350
|
+
* the number of dependencies cruised
|
|
351
|
+
*/
|
|
352
|
+
totalDependenciesCruised?: number;
|
|
353
|
+
/**
|
|
354
|
+
* A list of violations found in the dependencies. The dependencies themselves also contain
|
|
355
|
+
* this information, this summary is here for convenience.
|
|
356
|
+
*/
|
|
357
|
+
violations: IViolation[];
|
|
358
|
+
/**
|
|
359
|
+
* the number of warnings in the dependencies
|
|
360
|
+
*/
|
|
361
|
+
warn: number;
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
/**
|
|
365
365
|
* the (command line) options used to generate the dependency-tree
|
|
366
366
|
*/
|
|
367
367
|
export interface IOptions extends ICruiseOptions {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
368
|
+
/**
|
|
369
|
+
* arguments passed on the command line
|
|
370
|
+
*/
|
|
371
|
+
args?: string;
|
|
372
|
+
/**
|
|
373
|
+
* File the output was written to ('-' for stdout)
|
|
374
|
+
*/
|
|
375
|
+
outputTo?: string;
|
|
376
|
+
/**
|
|
377
|
+
* The rules file used to validate the dependencies (if any)
|
|
378
|
+
*/
|
|
379
|
+
rulesFile?: string;
|
|
380
380
|
}
|
|
381
381
|
|
|
382
382
|
export interface IFolderDependency {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
383
|
+
/**
|
|
384
|
+
* the (resolved) name of the dependency
|
|
385
|
+
*/
|
|
386
|
+
name: string;
|
|
387
|
+
/**
|
|
388
|
+
* 'true' if this folder dependency violated a rule; 'false' in all other
|
|
389
|
+
* cases. The violated rule will be in the 'rules' object at the same level.
|
|
390
|
+
*/
|
|
391
|
+
valid: boolean;
|
|
392
|
+
/**
|
|
393
|
+
* the instability of the dependency (de-normalized - this is a duplicate of
|
|
394
|
+
* the one found in the instability of the folder with the same name)
|
|
395
|
+
*/
|
|
396
|
+
instability?: number;
|
|
397
|
+
/**
|
|
398
|
+
* 'true' if following this dependency will ultimately return to the source, false in all
|
|
399
|
+
* other cases
|
|
400
|
+
*/
|
|
401
|
+
circular: boolean;
|
|
402
|
+
/**
|
|
403
|
+
* If following this dependency will ultimately return to the source (circular === true),
|
|
404
|
+
* this attribute will contain an (ordered) array of module names that shows (one of) the
|
|
405
|
+
* circular path(s)
|
|
406
|
+
*/
|
|
407
|
+
cycle?: IMiniDependency[];
|
|
408
|
+
/**
|
|
409
|
+
* an array of rules violated by this dependency - left out if the dependency
|
|
410
|
+
* is valid
|
|
411
|
+
*/
|
|
412
|
+
rules?: IRuleSummary[];
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
export interface IFolderDependent {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
416
|
+
/**
|
|
417
|
+
* name ('path') of the dependent
|
|
418
|
+
*/
|
|
419
|
+
name: string;
|
|
420
420
|
}
|
|
421
421
|
|
|
422
422
|
export interface IFolder {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
423
|
+
/**
|
|
424
|
+
* The name of the folder. FOlder names are normalized to posix (so
|
|
425
|
+
* separated by forward slashes e.g.: src/things/morethings)
|
|
426
|
+
*/
|
|
427
|
+
name: string;
|
|
428
|
+
/**
|
|
429
|
+
* List of folders depending on this folder
|
|
430
|
+
*/
|
|
431
|
+
dependents?: IFolderDependent[];
|
|
432
|
+
/**
|
|
433
|
+
* List of folders this folder depends upon
|
|
434
|
+
*/
|
|
435
|
+
dependencies?: IFolderDependency[];
|
|
436
|
+
/**
|
|
437
|
+
* The total number of modules detected in this folder and its sub-folders
|
|
438
|
+
*/
|
|
439
|
+
moduleCount: number;
|
|
440
|
+
/**
|
|
441
|
+
* The number of modules outside this folder that depend on modules
|
|
442
|
+
* within this folder. Only present when dependency-cruiser was
|
|
443
|
+
* "asked to calculate it.
|
|
444
|
+
*/
|
|
445
|
+
afferentCouplings?: number;
|
|
446
|
+
/**
|
|
447
|
+
* The number of modules inside this folder that depend on modules
|
|
448
|
+
* outside this folder. Only present when dependency-cruiser was
|
|
449
|
+
* asked to calculate it.
|
|
450
|
+
*/
|
|
451
|
+
efferentCouplings?: number;
|
|
452
|
+
/**
|
|
453
|
+
* efferentCouplings/ (afferentCouplings + efferentCouplings)
|
|
454
|
+
*
|
|
455
|
+
* A measure for how stable the folder is; ranging between 0
|
|
456
|
+
* (completely stable folder) to 1 (completely instable folder)
|
|
457
|
+
* Note that while 'instability' has a negative connotation it's also
|
|
458
|
+
* (unavoidable in any meaningful system. It's the basis of Martin's
|
|
459
|
+
* variable component stability principle: 'the instability of a folder
|
|
460
|
+
* should be larger than the folders it depends on'. Only present when
|
|
461
|
+
* dependency-cruiser was asked to calculate it.,
|
|
462
|
+
*/
|
|
463
|
+
instability?: number;
|
|
464
|
+
/**
|
|
465
|
+
* a collection of stats that are not part of the regular output, but
|
|
466
|
+
* might be interesting for further analysis
|
|
467
|
+
*/
|
|
468
|
+
experimentalStats?: ExperimentalStatsType;
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
export type * from "./violations.mjs";
|