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,12 +1,12 @@
|
|
|
1
1
|
import { join } from "node:path/posix";
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
isRelativeModuleName,
|
|
4
|
+
isExternalModule,
|
|
5
|
+
getAliasTypes,
|
|
6
6
|
} from "./module-classifiers.mjs";
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
dependencyIsDeprecated,
|
|
9
|
+
getPackageRoot,
|
|
10
10
|
} from "./external-module-helpers.mjs";
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -17,69 +17,69 @@ import {
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
function dependencyKeyHasModuleName(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
pPackageDependencies,
|
|
21
|
+
pModuleName,
|
|
22
|
+
pPrefix,
|
|
23
23
|
) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
return (pKey) =>
|
|
25
|
+
pKey.includes("ependencies") &&
|
|
26
|
+
Object.hasOwn(pPackageDependencies[pKey], join(pPrefix, pModuleName));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const NPM2DEP_TYPE = new Map([
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
["dependencies", "npm"],
|
|
31
|
+
["devDependencies", "npm-dev"],
|
|
32
|
+
["optionalDependencies", "npm-optional"],
|
|
33
|
+
["peerDependencies", "npm-peer"],
|
|
34
34
|
]);
|
|
35
35
|
|
|
36
36
|
function findModuleInPackageDependencies(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
pPackageDependencies,
|
|
38
|
+
pModuleName,
|
|
39
|
+
pPrefix,
|
|
40
40
|
) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
return Object.keys(pPackageDependencies)
|
|
42
|
+
.filter(
|
|
43
|
+
dependencyKeyHasModuleName(pPackageDependencies, pModuleName, pPrefix),
|
|
44
|
+
)
|
|
45
|
+
.map((pKey) => NPM2DEP_TYPE.get(pKey) || "npm-no-pkg");
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function needToLookAtTypesToo(pResolverModulePaths) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
return (pResolverModulePaths || ["node_modules", "node_modules/@types"]).some(
|
|
50
|
+
(pPath) => pPath.includes("@types"),
|
|
51
|
+
);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
function determineManifestDependencyTypes(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
pModuleName,
|
|
56
|
+
pPackageDependencies,
|
|
57
|
+
pResolverModulePaths,
|
|
58
58
|
) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
59
|
+
/** @type {DependencyType[]} */
|
|
60
|
+
let lReturnValue = ["npm-unknown"];
|
|
61
|
+
|
|
62
|
+
if (pPackageDependencies) {
|
|
63
|
+
lReturnValue = findModuleInPackageDependencies(
|
|
64
|
+
pPackageDependencies,
|
|
65
|
+
pModuleName,
|
|
66
|
+
"",
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
if (
|
|
70
|
+
lReturnValue.length === 0 &&
|
|
71
|
+
needToLookAtTypesToo(pResolverModulePaths)
|
|
72
|
+
) {
|
|
73
|
+
lReturnValue = findModuleInPackageDependencies(
|
|
74
|
+
pPackageDependencies,
|
|
75
|
+
pModuleName,
|
|
76
|
+
"@types",
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
lReturnValue = lReturnValue.length === 0 ? ["npm-no-pkg"] : lReturnValue;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return lReturnValue;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/*
|
|
@@ -87,17 +87,17 @@ function determineManifestDependencyTypes(
|
|
|
87
87
|
* an array, and not an object, hence needs different treatment
|
|
88
88
|
*/
|
|
89
89
|
function dependencyIsBundled(pModule, pPackageDeps) {
|
|
90
|
-
|
|
90
|
+
let lReturnValue = false;
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
if (pPackageDeps) {
|
|
93
|
+
const lBundledDependencies =
|
|
94
|
+
pPackageDeps.bundledDependencies || pPackageDeps.bundleDependencies;
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
if (lBundledDependencies) {
|
|
97
|
+
lReturnValue = lBundledDependencies.includes(pModule);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return lReturnValue;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
/**
|
|
@@ -109,27 +109,27 @@ function dependencyIsBundled(pModule, pPackageDeps) {
|
|
|
109
109
|
* @returns {DependencyType[]}
|
|
110
110
|
*/
|
|
111
111
|
function determineNodeModuleDependencyTypes(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
pModuleName,
|
|
113
|
+
pPackageDeps,
|
|
114
|
+
pFileDirectory,
|
|
115
|
+
pResolveOptions,
|
|
116
116
|
) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
117
|
+
/** @type { DependencyType[] } */
|
|
118
|
+
let lReturnValue = determineManifestDependencyTypes(
|
|
119
|
+
getPackageRoot(pModuleName),
|
|
120
|
+
pPackageDeps,
|
|
121
|
+
pResolveOptions.modules,
|
|
122
|
+
);
|
|
123
|
+
if (
|
|
124
|
+
pResolveOptions.resolveDeprecations &&
|
|
125
|
+
dependencyIsDeprecated(pModuleName, pFileDirectory, pResolveOptions)
|
|
126
|
+
) {
|
|
127
|
+
lReturnValue.push("deprecated");
|
|
128
|
+
}
|
|
129
|
+
if (dependencyIsBundled(pModuleName, pPackageDeps)) {
|
|
130
|
+
lReturnValue.push("npm-bundled");
|
|
131
|
+
}
|
|
132
|
+
return lReturnValue;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
/**
|
|
@@ -143,29 +143,29 @@ function determineNodeModuleDependencyTypes(
|
|
|
143
143
|
* @returns {DependencyType[]}
|
|
144
144
|
*/
|
|
145
145
|
function determineExternalModuleDependencyTypes(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
146
|
+
pDependency,
|
|
147
|
+
pModuleName,
|
|
148
|
+
pPackageDeps,
|
|
149
|
+
pFileDirectory,
|
|
150
|
+
pResolveOptions,
|
|
151
|
+
pBaseDirectory,
|
|
152
152
|
) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
153
|
+
/** @type { DependencyType[] } */
|
|
154
|
+
let lReturnValue = [];
|
|
155
|
+
|
|
156
|
+
if (
|
|
157
|
+
isExternalModule(pDependency.resolved, ["node_modules"], pBaseDirectory)
|
|
158
|
+
) {
|
|
159
|
+
lReturnValue = determineNodeModuleDependencyTypes(
|
|
160
|
+
pModuleName,
|
|
161
|
+
pPackageDeps,
|
|
162
|
+
pFileDirectory,
|
|
163
|
+
pResolveOptions,
|
|
164
|
+
);
|
|
165
|
+
} else {
|
|
166
|
+
lReturnValue = ["localmodule"];
|
|
167
|
+
}
|
|
168
|
+
return lReturnValue;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
/* eslint max-params:0, complexity:0 */
|
|
@@ -183,72 +183,69 @@ function determineExternalModuleDependencyTypes(
|
|
|
183
183
|
*/
|
|
184
184
|
// eslint-disable-next-line max-lines-per-function
|
|
185
185
|
export default function determineDependencyTypes(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
186
|
+
pDependency,
|
|
187
|
+
pModuleName,
|
|
188
|
+
pManifest,
|
|
189
|
+
pFileDirectory,
|
|
190
|
+
pResolveOptions,
|
|
191
|
+
pBaseDirectory,
|
|
192
|
+
pTranspileOptions,
|
|
193
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
|
-
return lReturnValue.concat(pDependency.dependencyTypes || []);
|
|
194
|
+
/** @type {DependencyType[]}*/
|
|
195
|
+
let lReturnValue = [];
|
|
196
|
+
const lResolveOptions = pResolveOptions || {};
|
|
197
|
+
|
|
198
|
+
if (pDependency.couldNotResolve) {
|
|
199
|
+
return ["unknown"];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const lAliases = getAliasTypes(
|
|
203
|
+
pModuleName,
|
|
204
|
+
pDependency.resolved,
|
|
205
|
+
lResolveOptions,
|
|
206
|
+
pManifest,
|
|
207
|
+
pTranspileOptions,
|
|
208
|
+
);
|
|
209
|
+
if (lAliases.length > 0) {
|
|
210
|
+
lReturnValue = lAliases;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (pDependency.coreModule) {
|
|
214
|
+
// keeping coreModule for backwards compatibility
|
|
215
|
+
// would prefer using only the core dependency-type, though
|
|
216
|
+
lReturnValue.push("core");
|
|
217
|
+
} else if (
|
|
218
|
+
isRelativeModuleName(pModuleName) ||
|
|
219
|
+
(lAliases.length > 0 &&
|
|
220
|
+
!isExternalModule(
|
|
221
|
+
pDependency.resolved,
|
|
222
|
+
lResolveOptions.modules,
|
|
223
|
+
pBaseDirectory,
|
|
224
|
+
))
|
|
225
|
+
) {
|
|
226
|
+
lReturnValue.push("local");
|
|
227
|
+
} else if (
|
|
228
|
+
isExternalModule(
|
|
229
|
+
pDependency.resolved,
|
|
230
|
+
lResolveOptions.modules,
|
|
231
|
+
pBaseDirectory,
|
|
232
|
+
)
|
|
233
|
+
) {
|
|
234
|
+
lReturnValue = lReturnValue.concat(
|
|
235
|
+
determineExternalModuleDependencyTypes(
|
|
236
|
+
pDependency,
|
|
237
|
+
pModuleName,
|
|
238
|
+
pManifest,
|
|
239
|
+
pFileDirectory,
|
|
240
|
+
lResolveOptions,
|
|
241
|
+
pBaseDirectory,
|
|
242
|
+
),
|
|
243
|
+
);
|
|
244
|
+
} else {
|
|
245
|
+
lReturnValue.push("undetermined");
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return lReturnValue.concat(pDependency.dependencyTypes || []);
|
|
252
249
|
}
|
|
253
250
|
|
|
254
251
|
/* eslint security/detect-object-injection: 0*/
|
|
@@ -32,26 +32,26 @@ import { isScoped, isRelativeModuleName } from "./module-classifiers.mjs";
|
|
|
32
32
|
* @return {string} the module name root
|
|
33
33
|
*/
|
|
34
34
|
export function getPackageRoot(pModule) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
if (!pModule || isRelativeModuleName(pModule)) {
|
|
36
|
+
return pModule;
|
|
37
|
+
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
let lPathElements = pModule.split("/");
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
if (isScoped(pModule)) {
|
|
42
|
+
// '@imdoingweirdvoodoo'
|
|
43
|
+
if (lPathElements.length === 1) {
|
|
44
|
+
return pModule;
|
|
45
|
+
}
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
// @scope/package
|
|
48
|
+
// @scope/package/some/thing
|
|
49
|
+
return `${lPathElements[0]}/${lPathElements[1]}`;
|
|
50
|
+
}
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
// godash
|
|
53
|
+
// godash/fp
|
|
54
|
+
return lPathElements[0];
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/**
|
|
@@ -63,7 +63,7 @@ export function getPackageRoot(pModule) {
|
|
|
63
63
|
*
|
|
64
64
|
* The pBaseDirectory parameter is necessary because dependency-cruiser/ this module
|
|
65
65
|
* will have a different base dir, and will hence resolve either to the
|
|
66
|
-
* wrong package or
|
|
66
|
+
* wrong package or to no package.
|
|
67
67
|
*
|
|
68
68
|
* @param {string} pModuleName The name of the module to get the package.json of
|
|
69
69
|
* @param {string} pFileDirectory The folder the module resides in. Defaults to the current working directory
|
|
@@ -73,40 +73,40 @@ export function getPackageRoot(pModule) {
|
|
|
73
73
|
* not be found
|
|
74
74
|
*/
|
|
75
75
|
function bareGetPackageJson(pModuleName, pFileDirectory, pResolveOptions) {
|
|
76
|
-
|
|
76
|
+
let lReturnValue = null;
|
|
77
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
|
-
|
|
78
|
+
try {
|
|
79
|
+
const lPackageJsonFilename = resolve(
|
|
80
|
+
join(getPackageRoot(pModuleName), "package.json"),
|
|
81
|
+
pFileDirectory ?? process.cwd(),
|
|
82
|
+
{
|
|
83
|
+
...pResolveOptions,
|
|
84
|
+
// if a module has exports fields _and_ does not expose package.json
|
|
85
|
+
// in those exports, enhanced-resolve (nr node!) won't be able to
|
|
86
|
+
// resolve the package.json if it actually heeds those exports fields.
|
|
87
|
+
// We can instruct enhanced-resolve to ignore them by passing
|
|
88
|
+
// it the empty array for exports fields (overriding anything in
|
|
89
|
+
// the pResvolveOptions)
|
|
90
|
+
exportsFields: [],
|
|
91
|
+
// we don't need to try any extensions; we already
|
|
92
|
+
// know it as we have passed the complete module name to resolve =>
|
|
93
|
+
// override whatever the default is with [""] ('use no extensions please')
|
|
94
|
+
extensions: [""],
|
|
95
|
+
},
|
|
96
|
+
// we need a separate caching context so as not to **** up the regular
|
|
97
|
+
// cruise, which might actually want to utilize the exportsFields
|
|
98
|
+
// and an array of extensions
|
|
99
|
+
"manifest-resolution",
|
|
100
|
+
);
|
|
101
|
+
lReturnValue = JSON.parse(readFileSync(lPackageJsonFilename, "utf8"));
|
|
102
|
+
} catch (pError) {
|
|
103
|
+
// left empty on purpose
|
|
104
|
+
}
|
|
105
|
+
return lReturnValue;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
export const getPackageJson = memoize(bareGetPackageJson, {
|
|
109
|
-
|
|
109
|
+
cacheKey: (pArguments) => `${pArguments[0]}|${pArguments[1]}`,
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
/**
|
|
@@ -118,22 +118,22 @@ export const getPackageJson = memoize(bareGetPackageJson, {
|
|
|
118
118
|
* @return {boolean} true when deprecated, false in all other cases
|
|
119
119
|
*/
|
|
120
120
|
export function dependencyIsDeprecated(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
pModuleName,
|
|
122
|
+
pFileDirectory,
|
|
123
|
+
pResolveOptions,
|
|
124
124
|
) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
let lReturnValue = false;
|
|
126
|
+
let lPackageJson = getPackageJson(
|
|
127
|
+
pModuleName,
|
|
128
|
+
pFileDirectory,
|
|
129
|
+
pResolveOptions,
|
|
130
|
+
);
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
132
|
+
if (lPackageJson) {
|
|
133
|
+
lReturnValue =
|
|
134
|
+
Object.hasOwn(lPackageJson, "deprecated") && lPackageJson.deprecated;
|
|
135
|
+
}
|
|
136
|
+
return lReturnValue;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
/**
|
|
@@ -146,23 +146,23 @@ export function dependencyIsDeprecated(
|
|
|
146
146
|
* there is no package.json or no license field
|
|
147
147
|
*/
|
|
148
148
|
export function getLicense(pModuleName, pFileDirectory, pResolveOptions) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
let lReturnValue = "";
|
|
150
|
+
let lPackageJson = getPackageJson(
|
|
151
|
+
pModuleName,
|
|
152
|
+
pFileDirectory,
|
|
153
|
+
pResolveOptions,
|
|
154
|
+
);
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
156
|
+
if (
|
|
157
|
+
lPackageJson &&
|
|
158
|
+
Object.hasOwn(lPackageJson, "license") &&
|
|
159
|
+
typeof lPackageJson.license === "string"
|
|
160
|
+
) {
|
|
161
|
+
lReturnValue = lPackageJson.license;
|
|
162
|
+
}
|
|
163
|
+
return lReturnValue;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
export function clearCache() {
|
|
167
|
-
|
|
167
|
+
memoizeClear(getPackageJson);
|
|
168
168
|
}
|