dependency-cruiser 14.0.0 → 14.1.0
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 +2 -2
- package/bin/depcruise-fmt.mjs +2 -2
- package/bin/dependency-cruise.mjs +2 -2
- package/package.json +10 -10
- package/src/cli/{validate-node-environment.mjs → assert-node-environment-suitable.mjs} +1 -1
- package/src/cli/init-config/build-config.mjs +4 -3
- package/src/cli/init-config/get-user-input.mjs +8 -1
- package/src/cli/init-config/index.mjs +2 -0
- package/src/cli/init-config/types.d.ts +6 -0
- package/src/config-utl/extract-depcruise-config/merge-configs.mjs +9 -9
- package/src/extract/gather-initial-sources.mjs +6 -8
- package/src/extract/resolve/index.mjs +19 -18
- package/src/extract/resolve/is-built-in.mjs +28 -0
- package/src/extract/resolve/resolve-amd.mjs +4 -11
- package/src/extract/resolve/resolve-cjs.mjs +2 -10
- package/src/main/cruise.mjs +12 -12
- package/src/main/format.mjs +3 -3
- package/src/main/options/{validate.mjs → assert-validity.mjs} +35 -35
- package/src/main/resolve-options/normalize.mjs +9 -5
- package/src/main/rule-set/{validate.mjs → assert-validity.mjs} +14 -13
- package/src/meta.js +1 -1
- package/src/schema/configuration.schema.mjs +1 -1
- package/src/schema/cruise-result.schema.mjs +1 -1
- package/types/options.d.ts +21 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { program } from "commander";
|
|
3
|
-
import
|
|
3
|
+
import assertNodeEnvironmentSuitable from "../src/cli/assert-node-environment-suitable.mjs";
|
|
4
4
|
import meta from "../src/meta.js";
|
|
5
5
|
import cli from "../src/cli/index.mjs";
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ function formatError(pError) {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
try {
|
|
13
|
-
|
|
13
|
+
assertNodeEnvironmentSuitable();
|
|
14
14
|
|
|
15
15
|
program
|
|
16
16
|
.description(
|
package/bin/depcruise-fmt.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { program } from "commander";
|
|
4
|
-
import
|
|
4
|
+
import assertNodeEnvironmentSuitable from "../src/cli/assert-node-environment-suitable.mjs";
|
|
5
5
|
import meta from "../src/meta.js";
|
|
6
6
|
import format from "../src/cli/format.mjs";
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@ function formatError(pError) {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
try {
|
|
14
|
-
|
|
14
|
+
assertNodeEnvironmentSuitable();
|
|
15
15
|
|
|
16
16
|
program
|
|
17
17
|
.description(
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { EOL } from "node:os";
|
|
3
3
|
import { program } from "commander";
|
|
4
|
-
import
|
|
4
|
+
import assertNodeEnvironmentSuitable from "../src/cli/assert-node-environment-suitable.mjs";
|
|
5
5
|
import meta from "../src/meta.js";
|
|
6
6
|
import cli from "../src/cli/index.mjs";
|
|
7
7
|
|
|
8
8
|
try {
|
|
9
|
-
|
|
9
|
+
assertNodeEnvironmentSuitable();
|
|
10
10
|
|
|
11
11
|
program
|
|
12
12
|
.description(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dependency-cruiser",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"static analysis",
|
|
@@ -176,15 +176,15 @@
|
|
|
176
176
|
"wrap-ansi": "8.1.0"
|
|
177
177
|
},
|
|
178
178
|
"devDependencies": {
|
|
179
|
-
"@babel/core": "7.
|
|
180
|
-
"@babel/plugin-transform-modules-commonjs": "7.
|
|
181
|
-
"@babel/preset-typescript": "7.
|
|
182
|
-
"@swc/core": "1.3.
|
|
179
|
+
"@babel/core": "7.23.0",
|
|
180
|
+
"@babel/plugin-transform-modules-commonjs": "7.23.0",
|
|
181
|
+
"@babel/preset-typescript": "7.23.0",
|
|
182
|
+
"@swc/core": "1.3.90",
|
|
183
183
|
"@types/lodash": "4.14.199",
|
|
184
|
-
"@types/node": "20.
|
|
185
|
-
"@types/prompts": "2.4.
|
|
186
|
-
"@typescript-eslint/eslint-plugin": "6.7.
|
|
187
|
-
"@typescript-eslint/parser": "6.7.
|
|
184
|
+
"@types/node": "20.8.0",
|
|
185
|
+
"@types/prompts": "2.4.5",
|
|
186
|
+
"@typescript-eslint/eslint-plugin": "6.7.3",
|
|
187
|
+
"@typescript-eslint/parser": "6.7.3",
|
|
188
188
|
"@vue/compiler-sfc": "3.3.4",
|
|
189
189
|
"c8": "8.0.1",
|
|
190
190
|
"coffeescript": "2.7.0",
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
"eslint-plugin-budapestian": "5.0.1",
|
|
195
195
|
"eslint-plugin-eslint-comments": "3.2.0",
|
|
196
196
|
"eslint-plugin-import": "2.28.1",
|
|
197
|
-
"eslint-plugin-mocha": "10.
|
|
197
|
+
"eslint-plugin-mocha": "10.2.0",
|
|
198
198
|
"eslint-plugin-node": "11.1.0",
|
|
199
199
|
"eslint-plugin-security": "1.7.1",
|
|
200
200
|
"eslint-plugin-unicorn": "^48.0.1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import satisfies from "semver/functions/satisfies.js";
|
|
2
2
|
import meta from "../meta.js";
|
|
3
3
|
|
|
4
|
-
export default function
|
|
4
|
+
export default function assertNodeEnvironmentSuitable(pNodeVersion) {
|
|
5
5
|
// not using default parameter here because the check should run
|
|
6
6
|
// run on node 4 as well
|
|
7
7
|
const lNodeVersion = pNodeVersion || process.versions.node;
|
|
@@ -135,9 +135,10 @@ function buildExtensionsAttribute(pInitOptions) {
|
|
|
135
135
|
* @returns {string}
|
|
136
136
|
*/
|
|
137
137
|
function buildMainFieldsAttribute(pInitOptions) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
if (pInitOptions.isTypeModule) {
|
|
139
|
+
return `mainFields: ["module", "main", "types", "typings"],`;
|
|
140
|
+
}
|
|
141
|
+
return `mainFields: ["main", "types", "typings"],`;
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
/**
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import prompts from "prompts";
|
|
3
3
|
import {
|
|
4
4
|
isLikelyMonoRepo,
|
|
5
|
+
isTypeModule,
|
|
5
6
|
getMonoRepoPackagesCandidates,
|
|
6
7
|
getSourceFolderCandidates,
|
|
7
8
|
getTestFolderCandidates,
|
|
@@ -33,6 +34,12 @@ const QUESTIONS = [
|
|
|
33
34
|
message: "This looks like mono repo. Is that correct?",
|
|
34
35
|
initial: isLikelyMonoRepo(),
|
|
35
36
|
},
|
|
37
|
+
{
|
|
38
|
+
name: "isTypeModule",
|
|
39
|
+
type: () => (isTypeModule() ? "confirm" : false),
|
|
40
|
+
message: "It looks like this is an ESM package. Is that correct?",
|
|
41
|
+
initial: isTypeModule(),
|
|
42
|
+
},
|
|
36
43
|
{
|
|
37
44
|
name: "sourceLocation",
|
|
38
45
|
type: (_, pAnswers) => (pAnswers.isMonoRepo ? "list" : false),
|
|
@@ -61,7 +68,7 @@ const QUESTIONS = [
|
|
|
61
68
|
initial: (_, pAnswers) => {
|
|
62
69
|
return !hasTestsWithinSource(
|
|
63
70
|
getTestFolderCandidates(),
|
|
64
|
-
toSourceLocationArray(pAnswers.sourceLocation)
|
|
71
|
+
toSourceLocationArray(pAnswers.sourceLocation),
|
|
65
72
|
);
|
|
66
73
|
},
|
|
67
74
|
},
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
getDefaultConfigFileName,
|
|
17
17
|
hasJSConfigCandidates,
|
|
18
18
|
getJSConfigCandidates,
|
|
19
|
+
isTypeModule,
|
|
19
20
|
} from "./environment-helpers.mjs";
|
|
20
21
|
import { writeRunScriptsToManifest } from "./write-run-scripts-to-manifest.mjs";
|
|
21
22
|
|
|
@@ -32,6 +33,7 @@ function getOneShotConfig(pOneShotConfigId) {
|
|
|
32
33
|
/** @type {import("./types").IPartialInitConfig} */
|
|
33
34
|
const lBaseConfig = {
|
|
34
35
|
isMonoRepo: isLikelyMonoRepo(),
|
|
36
|
+
isTypeModule: isTypeModule(),
|
|
35
37
|
combinedDependencies: false,
|
|
36
38
|
useJsConfig: hasJSConfigCandidates() && !hasTSConfigCandidates(),
|
|
37
39
|
jsConfig: getJSConfigCandidates().shift(),
|
|
@@ -5,6 +5,12 @@ export interface IInitConfig {
|
|
|
5
5
|
* Whether or not the current folder houses a mono repo
|
|
6
6
|
*/
|
|
7
7
|
isMonoRepo: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Whether or not the current folder is a package is an ESM package
|
|
10
|
+
* by default (and resolutions of external dependencies should be
|
|
11
|
+
* treated as such)
|
|
12
|
+
*/
|
|
13
|
+
isTypeModule: boolean;
|
|
8
14
|
/**
|
|
9
15
|
* Whether or not you allow usage of external dependencies declared in
|
|
10
16
|
* package.jsons of parent folders
|
|
@@ -10,7 +10,7 @@ function extendNamedRule(pExtendedRule, pForbiddenArrayBase) {
|
|
|
10
10
|
...pBaseRule,
|
|
11
11
|
...pAll,
|
|
12
12
|
}),
|
|
13
|
-
pExtendedRule
|
|
13
|
+
pExtendedRule,
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -23,7 +23,7 @@ function extendNamedRule(pExtendedRule, pForbiddenArrayBase) {
|
|
|
23
23
|
* rules get merged, where individual attributes of the named rules
|
|
24
24
|
* in pForbiddenArrayExtended win)
|
|
25
25
|
*
|
|
26
|
-
* @param {*} pRuleArrayExtended - array of '
|
|
26
|
+
* @param {*} pRuleArrayExtended - array of 'forbidden' rules that extend the ...
|
|
27
27
|
* @param {*} pRuleArrayBase - array of 'forbidden' rules to extend
|
|
28
28
|
*
|
|
29
29
|
* @return {Array} - the merged array
|
|
@@ -32,7 +32,7 @@ function mergeRules(pRuleArrayExtended, pRuleArrayBase) {
|
|
|
32
32
|
// merge anonymous on 100% equality
|
|
33
33
|
let lAnonymousRules = uniqWith(
|
|
34
34
|
pRuleArrayExtended.concat(pRuleArrayBase).filter(({ name }) => !name),
|
|
35
|
-
isDeepStrictEqual
|
|
35
|
+
isDeepStrictEqual,
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
let lNamedRules = pRuleArrayExtended
|
|
@@ -48,7 +48,7 @@ function mergeRules(pRuleArrayExtended, pRuleArrayBase) {
|
|
|
48
48
|
// the other concats (anonymous, allowed) don't need it
|
|
49
49
|
// but have it to be consistent with this
|
|
50
50
|
lNamedRules.concat(pRuleArrayBase).filter(({ name }) => name),
|
|
51
|
-
({ name }) => name
|
|
51
|
+
({ name }) => name,
|
|
52
52
|
);
|
|
53
53
|
|
|
54
54
|
return lNamedRules.concat(lAnonymousRules);
|
|
@@ -67,7 +67,7 @@ function mergeRules(pRuleArrayExtended, pRuleArrayBase) {
|
|
|
67
67
|
function mergeAllowedRules(pAllowedArrayExtended, pAllowedArrayBase) {
|
|
68
68
|
return uniqWith(
|
|
69
69
|
pAllowedArrayExtended.concat(pAllowedArrayBase),
|
|
70
|
-
isDeepStrictEqual
|
|
70
|
+
isDeepStrictEqual,
|
|
71
71
|
);
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -109,15 +109,15 @@ function mergeAllowedSeverities(pConfigExtended, pConfigBase) {
|
|
|
109
109
|
export default (pConfigExtended, pConfigBase) => {
|
|
110
110
|
const lForbidden = mergeRules(
|
|
111
111
|
pConfigExtended?.forbidden ?? [],
|
|
112
|
-
pConfigBase?.forbidden ?? []
|
|
112
|
+
pConfigBase?.forbidden ?? [],
|
|
113
113
|
);
|
|
114
114
|
const lRequired = mergeRules(
|
|
115
115
|
pConfigExtended?.required ?? [],
|
|
116
|
-
pConfigBase?.required ?? []
|
|
116
|
+
pConfigBase?.required ?? [],
|
|
117
117
|
);
|
|
118
118
|
const lAllowed = mergeAllowedRules(
|
|
119
119
|
pConfigExtended?.allowed ?? [],
|
|
120
|
-
pConfigBase?.allowed ?? []
|
|
120
|
+
pConfigBase?.allowed ?? [],
|
|
121
121
|
);
|
|
122
122
|
|
|
123
123
|
return {
|
|
@@ -131,7 +131,7 @@ export default (pConfigExtended, pConfigBase) => {
|
|
|
131
131
|
: {}),
|
|
132
132
|
options: mergeOptions(
|
|
133
133
|
pConfigExtended?.options ?? {},
|
|
134
|
-
pConfigBase?.options ?? {}
|
|
134
|
+
pConfigBase?.options ?? {},
|
|
135
135
|
),
|
|
136
136
|
};
|
|
137
137
|
};
|
|
@@ -47,23 +47,21 @@ function gatherScannableFilesFromDirectory(pDirectoryName, pOptions) {
|
|
|
47
47
|
.filter((pFullPathToFile) =>
|
|
48
48
|
shouldNotBeExcluded(pathToPosix(pFullPathToFile), pOptions),
|
|
49
49
|
)
|
|
50
|
-
.
|
|
50
|
+
.flatMap((pFullPathToFile) => {
|
|
51
51
|
let lStat = statSync(join(pOptions.baseDir, pFullPathToFile), {
|
|
52
52
|
throwIfNoEntry: false,
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
if (lStat) {
|
|
56
56
|
if (lStat.isDirectory()) {
|
|
57
|
-
return
|
|
58
|
-
gatherScannableFilesFromDirectory(pFullPathToFile, pOptions),
|
|
59
|
-
);
|
|
57
|
+
return gatherScannableFilesFromDirectory(pFullPathToFile, pOptions);
|
|
60
58
|
}
|
|
61
59
|
if (fileIsScannable(pOptions, pFullPathToFile)) {
|
|
62
|
-
return
|
|
60
|
+
return pFullPathToFile;
|
|
63
61
|
}
|
|
64
62
|
}
|
|
65
|
-
return
|
|
66
|
-
}
|
|
63
|
+
return [];
|
|
64
|
+
})
|
|
67
65
|
.map((pFullPathToFile) => pathToPosix(pFullPathToFile))
|
|
68
66
|
.filter((pFullPathToFile) => shouldBeIncluded(pFullPathToFile, pOptions));
|
|
69
67
|
}
|
|
@@ -108,7 +106,7 @@ export default function gatherInitialSources(
|
|
|
108
106
|
if (lScannedGlob.isGlob) {
|
|
109
107
|
return expandGlob(lOptions.baseDir, lScannedGlob);
|
|
110
108
|
}
|
|
111
|
-
return
|
|
109
|
+
return normalize(pFileDirectoryOrGlob);
|
|
112
110
|
})
|
|
113
111
|
.flatMap((pFileOrDirectory) => {
|
|
114
112
|
if (statSync(join(lOptions.baseDir, pFileOrDirectory)).isDirectory()) {
|
|
@@ -21,7 +21,7 @@ function resolveModule(
|
|
|
21
21
|
pModule,
|
|
22
22
|
pBaseDirectory,
|
|
23
23
|
pFileDirectory,
|
|
24
|
-
pResolveOptions
|
|
24
|
+
pResolveOptions,
|
|
25
25
|
) {
|
|
26
26
|
let lReturnValue = null;
|
|
27
27
|
|
|
@@ -34,13 +34,14 @@ function resolveModule(
|
|
|
34
34
|
lStrippedModuleName,
|
|
35
35
|
pBaseDirectory,
|
|
36
36
|
pFileDirectory,
|
|
37
|
-
pResolveOptions
|
|
37
|
+
pResolveOptions,
|
|
38
38
|
);
|
|
39
39
|
} else {
|
|
40
40
|
lReturnValue = resolveAMD(
|
|
41
41
|
lStrippedModuleName,
|
|
42
42
|
pBaseDirectory,
|
|
43
|
-
pFileDirectory
|
|
43
|
+
pFileDirectory,
|
|
44
|
+
pResolveOptions,
|
|
44
45
|
);
|
|
45
46
|
}
|
|
46
47
|
return lReturnValue;
|
|
@@ -89,13 +90,13 @@ function resolveWithRetry(
|
|
|
89
90
|
pModule,
|
|
90
91
|
pBaseDirectory,
|
|
91
92
|
pFileDirectory,
|
|
92
|
-
pResolveOptions
|
|
93
|
+
pResolveOptions,
|
|
93
94
|
) {
|
|
94
95
|
let lReturnValue = resolveModule(
|
|
95
96
|
pModule,
|
|
96
97
|
pBaseDirectory,
|
|
97
98
|
pFileDirectory,
|
|
98
|
-
pResolveOptions
|
|
99
|
+
pResolveOptions,
|
|
99
100
|
);
|
|
100
101
|
const lStrippedModuleName = stripToModuleName(pModule.module);
|
|
101
102
|
|
|
@@ -123,17 +124,17 @@ function resolveWithRetry(
|
|
|
123
124
|
) {
|
|
124
125
|
const lModuleWithoutExtension = lStrippedModuleName.replace(
|
|
125
126
|
/\.(js|jsx|cjs|mjs)$/g,
|
|
126
|
-
""
|
|
127
|
+
"",
|
|
127
128
|
);
|
|
128
129
|
const lExtensionsToTry = getTypeScriptExtensionsToTry(
|
|
129
|
-
extname(lStrippedModuleName)
|
|
130
|
+
extname(lStrippedModuleName),
|
|
130
131
|
);
|
|
131
132
|
|
|
132
133
|
const lReturnValueCandidate = resolveModule(
|
|
133
134
|
{ ...pModule, module: lModuleWithoutExtension },
|
|
134
135
|
pBaseDirectory,
|
|
135
136
|
pFileDirectory,
|
|
136
|
-
{ ...pResolveOptions, extensions: lExtensionsToTry }
|
|
137
|
+
{ ...pResolveOptions, extensions: lExtensionsToTry },
|
|
137
138
|
);
|
|
138
139
|
|
|
139
140
|
if (isTypeScriptIshExtension(lReturnValueCandidate.resolved)) {
|
|
@@ -160,13 +161,13 @@ export default function resolve(
|
|
|
160
161
|
pDependency,
|
|
161
162
|
pBaseDirectory,
|
|
162
163
|
pFileDirectory,
|
|
163
|
-
pResolveOptions
|
|
164
|
+
pResolveOptions,
|
|
164
165
|
) {
|
|
165
166
|
let lResolvedDependency = resolveWithRetry(
|
|
166
167
|
pDependency,
|
|
167
168
|
pBaseDirectory,
|
|
168
169
|
pFileDirectory,
|
|
169
|
-
pResolveOptions
|
|
170
|
+
pResolveOptions,
|
|
170
171
|
);
|
|
171
172
|
const lStrippedModuleName = stripToModuleName(pDependency.module);
|
|
172
173
|
|
|
@@ -176,7 +177,7 @@ export default function resolve(
|
|
|
176
177
|
lStrippedModuleName,
|
|
177
178
|
lResolvedDependency.resolved,
|
|
178
179
|
{ baseDirectory: pBaseDirectory, fileDirectory: pFileDirectory },
|
|
179
|
-
pResolveOptions
|
|
180
|
+
pResolveOptions,
|
|
180
181
|
),
|
|
181
182
|
dependencyTypes: determineDependencyTypes(
|
|
182
183
|
{ ...pDependency, ...lResolvedDependency },
|
|
@@ -184,11 +185,11 @@ export default function resolve(
|
|
|
184
185
|
getManifest(
|
|
185
186
|
pFileDirectory,
|
|
186
187
|
pBaseDirectory,
|
|
187
|
-
pResolveOptions.combinedDependencies
|
|
188
|
+
pResolveOptions.combinedDependencies,
|
|
188
189
|
),
|
|
189
190
|
pFileDirectory,
|
|
190
191
|
pResolveOptions,
|
|
191
|
-
pBaseDirectory
|
|
192
|
+
pBaseDirectory,
|
|
192
193
|
),
|
|
193
194
|
};
|
|
194
195
|
|
|
@@ -210,11 +211,11 @@ export default function resolve(
|
|
|
210
211
|
again corresponds with a real file on disk
|
|
211
212
|
*/
|
|
212
213
|
// eslint-disable-next-line no-control-regex
|
|
213
|
-
lResolvedDependency.resolved.replace(/\u0000#/g, "#")
|
|
214
|
-
)
|
|
215
|
-
)
|
|
216
|
-
)
|
|
217
|
-
)
|
|
214
|
+
lResolvedDependency.resolved.replace(/\u0000#/g, "#"),
|
|
215
|
+
),
|
|
216
|
+
),
|
|
217
|
+
),
|
|
218
|
+
),
|
|
218
219
|
);
|
|
219
220
|
} catch (pError) {
|
|
220
221
|
lResolvedDependency.couldNotResolve = true;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { builtinModules } from "node:module";
|
|
2
|
+
|
|
3
|
+
function getBuiltIns(pResolveOptions) {
|
|
4
|
+
// builtinModules does not expose all builtin modules for #reasons -
|
|
5
|
+
// see https://github.com/nodejs/node/issues/42785. In stead we could use
|
|
6
|
+
// isBuiltin, but that is not available in node 16.14, the lowest version
|
|
7
|
+
// of node dependency-cruiser currently supports. So we add the missing
|
|
8
|
+
// modules here.
|
|
9
|
+
let lReturnValue = builtinModules.concat(["test", "node:test"]);
|
|
10
|
+
|
|
11
|
+
if (pResolveOptions?.builtInModules?.override) {
|
|
12
|
+
lReturnValue = pResolveOptions?.builtInModules?.override;
|
|
13
|
+
}
|
|
14
|
+
if (pResolveOptions?.builtInModules?.add) {
|
|
15
|
+
lReturnValue = lReturnValue.concat(pResolveOptions.builtInModules.add);
|
|
16
|
+
}
|
|
17
|
+
return lReturnValue;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param {string} pModuleName - the unresolved module name
|
|
23
|
+
* @param {*} pResolveOptions
|
|
24
|
+
* @returns {boolean} - true if the module is a built-in module
|
|
25
|
+
*/
|
|
26
|
+
export function isBuiltin(pModuleName, pResolveOptions) {
|
|
27
|
+
return getBuiltIns(pResolveOptions).includes(pModuleName);
|
|
28
|
+
}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { accessSync, R_OK } from "node:fs";
|
|
2
2
|
import { relative, join } from "node:path";
|
|
3
|
-
import { builtinModules } from "node:module";
|
|
4
3
|
import memoize from "lodash/memoize.js";
|
|
5
4
|
import pathToPosix from "../../utl/path-to-posix.mjs";
|
|
6
|
-
|
|
7
|
-
// builtinModules does not expose all builtin modules for #reasons -
|
|
8
|
-
// see https://github.com/nodejs/node/issues/42785. In stead we could use
|
|
9
|
-
// isBuiltin, but that is not available in node 16.14, the lowest version
|
|
10
|
-
// of node dependency-cruiser currently supports. So we add the missing
|
|
11
|
-
// modules here.
|
|
12
|
-
// b.t.w. code is duplicated in resolve-cjs.mjs
|
|
13
|
-
const REALLY_BUILTIN_MODULES = builtinModules.concat(["test", "node:test"]);
|
|
5
|
+
import { isBuiltin } from "./is-built-in.mjs";
|
|
14
6
|
|
|
15
7
|
const fileExists = memoize((pFile) => {
|
|
16
8
|
try {
|
|
@@ -46,6 +38,7 @@ export function resolveAMD(
|
|
|
46
38
|
pStrippedModuleName,
|
|
47
39
|
pBaseDirectory,
|
|
48
40
|
pFileDirectory,
|
|
41
|
+
pResolveOptions,
|
|
49
42
|
) {
|
|
50
43
|
// lookups:
|
|
51
44
|
// - [x] could be relative in the end (implemented)
|
|
@@ -61,10 +54,10 @@ export function resolveAMD(
|
|
|
61
54
|
|
|
62
55
|
return {
|
|
63
56
|
resolved: lResolvedPath,
|
|
64
|
-
coreModule:
|
|
57
|
+
coreModule: isBuiltin(pStrippedModuleName, pResolveOptions),
|
|
65
58
|
followable: fileExists(lResolvedPath) && lResolvedPath.endsWith(".js"),
|
|
66
59
|
couldNotResolve:
|
|
67
|
-
!
|
|
60
|
+
!isBuiltin(pStrippedModuleName, pResolveOptions) &&
|
|
68
61
|
!fileExists(lResolvedPath),
|
|
69
62
|
};
|
|
70
63
|
}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { relative } from "node:path";
|
|
2
|
-
import { builtinModules } from "node:module";
|
|
3
2
|
import pathToPosix from "../../utl/path-to-posix.mjs";
|
|
4
3
|
import { isFollowable } from "./module-classifiers.mjs";
|
|
5
4
|
import { resolve } from "./resolve.mjs";
|
|
6
|
-
|
|
7
|
-
// builtinModules does not expose all builtin modules for #reasons -
|
|
8
|
-
// see https://github.com/nodejs/node/issues/42785. In stead we could use
|
|
9
|
-
// isBuiltin, but that is not available in node 16.14, the lowest version
|
|
10
|
-
// of node dependency-cruiser currently supports. So we add the missing
|
|
11
|
-
// modules here.
|
|
12
|
-
// b.t.w. code is duplicated in resolve-amd.mjs
|
|
13
|
-
const REALLY_BUILTIN_MODULES = builtinModules.concat(["test", "node:test"]);
|
|
5
|
+
import { isBuiltin } from "./is-built-in.mjs";
|
|
14
6
|
|
|
15
7
|
function addResolutionAttributes(
|
|
16
8
|
pBaseDirectory,
|
|
@@ -20,7 +12,7 @@ function addResolutionAttributes(
|
|
|
20
12
|
) {
|
|
21
13
|
let lReturnValue = {};
|
|
22
14
|
|
|
23
|
-
if (
|
|
15
|
+
if (isBuiltin(pModuleName, pResolveOptions)) {
|
|
24
16
|
lReturnValue.coreModule = true;
|
|
25
17
|
} else {
|
|
26
18
|
try {
|
package/src/main/cruise.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-return-await */
|
|
2
2
|
/* eslint-disable no-magic-numbers */
|
|
3
3
|
import { bus } from "../utl/bus.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { assertCruiseOptionsValid } from "./options/assert-validity.mjs";
|
|
5
5
|
import { normalizeCruiseOptions } from "./options/normalize.mjs";
|
|
6
6
|
import reportWrap from "./report-wrap.mjs";
|
|
7
7
|
|
|
@@ -17,20 +17,20 @@ export default async function cruise(
|
|
|
17
17
|
pFileAndDirectoryArray,
|
|
18
18
|
pCruiseOptions,
|
|
19
19
|
pResolveOptions,
|
|
20
|
-
pTranspileOptions
|
|
20
|
+
pTranspileOptions,
|
|
21
21
|
) {
|
|
22
22
|
bus.summary("parsing options", c(1));
|
|
23
23
|
/** @type {import("../../types/strict-options.js").IStrictCruiseOptions} */
|
|
24
24
|
let lCruiseOptions = normalizeCruiseOptions(
|
|
25
|
-
|
|
26
|
-
pFileAndDirectoryArray
|
|
25
|
+
assertCruiseOptionsValid(pCruiseOptions),
|
|
26
|
+
pFileAndDirectoryArray,
|
|
27
27
|
);
|
|
28
28
|
let lCache = null;
|
|
29
29
|
|
|
30
30
|
if (lCruiseOptions.cache) {
|
|
31
31
|
bus.summary(
|
|
32
32
|
`cache: checking freshness with ${lCruiseOptions.cache.strategy}`,
|
|
33
|
-
c(2)
|
|
33
|
+
c(2),
|
|
34
34
|
);
|
|
35
35
|
|
|
36
36
|
const { default: Cache } = await import("../cache/cache.mjs");
|
|
@@ -46,7 +46,7 @@ export default async function cruise(
|
|
|
46
46
|
bus.summary("importing analytical modules", c(3));
|
|
47
47
|
const [
|
|
48
48
|
{ default: normalizeRuleSet },
|
|
49
|
-
{ default:
|
|
49
|
+
{ default: assertRuleSetValid },
|
|
50
50
|
{ default: normalizeFilesAndDirectories },
|
|
51
51
|
{ default: normalizeResolveOptions },
|
|
52
52
|
{ default: extract },
|
|
@@ -55,7 +55,7 @@ export default async function cruise(
|
|
|
55
55
|
// despite rule set parsing being behind an if, it's the 'normal' use case
|
|
56
56
|
// for dependency-cruiser, so import it unconditionally nonetheless
|
|
57
57
|
import("./rule-set/normalize.mjs"),
|
|
58
|
-
import("./rule-set/
|
|
58
|
+
import("./rule-set/assert-validity.mjs"),
|
|
59
59
|
import("./files-and-dirs/normalize.mjs"),
|
|
60
60
|
import("./resolve-options/normalize.mjs"),
|
|
61
61
|
import("../extract/index.mjs"),
|
|
@@ -65,19 +65,19 @@ export default async function cruise(
|
|
|
65
65
|
if (Boolean(lCruiseOptions.ruleSet)) {
|
|
66
66
|
bus.summary("parsing rule set", c(4));
|
|
67
67
|
lCruiseOptions.ruleSet = normalizeRuleSet(
|
|
68
|
-
|
|
68
|
+
assertRuleSetValid(lCruiseOptions.ruleSet),
|
|
69
69
|
);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
const lNormalizedFileAndDirectoryArray = normalizeFilesAndDirectories(
|
|
73
|
-
pFileAndDirectoryArray
|
|
73
|
+
pFileAndDirectoryArray,
|
|
74
74
|
);
|
|
75
75
|
|
|
76
76
|
bus.summary("determining how to resolve", c(5));
|
|
77
77
|
const lNormalizedResolveOptions = await normalizeResolveOptions(
|
|
78
78
|
pResolveOptions,
|
|
79
79
|
lCruiseOptions,
|
|
80
|
-
pTranspileOptions?.tsConfig
|
|
80
|
+
pTranspileOptions?.tsConfig,
|
|
81
81
|
);
|
|
82
82
|
|
|
83
83
|
bus.summary("reading files", c(6));
|
|
@@ -85,14 +85,14 @@ export default async function cruise(
|
|
|
85
85
|
lNormalizedFileAndDirectoryArray,
|
|
86
86
|
lCruiseOptions,
|
|
87
87
|
lNormalizedResolveOptions,
|
|
88
|
-
pTranspileOptions
|
|
88
|
+
pTranspileOptions,
|
|
89
89
|
);
|
|
90
90
|
|
|
91
91
|
bus.summary("analyzing", c(7));
|
|
92
92
|
const lCruiseResult = enrich(
|
|
93
93
|
lExtractionResult,
|
|
94
94
|
lCruiseOptions,
|
|
95
|
-
lNormalizedFileAndDirectoryArray
|
|
95
|
+
lNormalizedFileAndDirectoryArray,
|
|
96
96
|
);
|
|
97
97
|
|
|
98
98
|
if (lCruiseOptions.cache) {
|
package/src/main/format.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
2
|
|
|
3
3
|
import cruiseResultSchema from "../schema/cruise-result.schema.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { assertFormatOptionsValid } from "./options/assert-validity.mjs";
|
|
5
5
|
import { normalizeFormatOptions } from "./options/normalize.mjs";
|
|
6
6
|
import reportWrap from "./report-wrap.mjs";
|
|
7
7
|
|
|
@@ -10,14 +10,14 @@ function validateResultAgainstSchema(pResult) {
|
|
|
10
10
|
|
|
11
11
|
if (!ajv.validate(cruiseResultSchema, pResult)) {
|
|
12
12
|
throw new Error(
|
|
13
|
-
`The supplied dependency-cruiser result is not valid: ${ajv.errorsText()}.\n
|
|
13
|
+
`The supplied dependency-cruiser result is not valid: ${ajv.errorsText()}.\n`,
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
/** @type {import("../../types/dependency-cruiser.js").format} */
|
|
18
18
|
export default async function format(pResult, pFormatOptions = {}) {
|
|
19
19
|
const lFormatOptions = normalizeFormatOptions(pFormatOptions);
|
|
20
|
-
|
|
20
|
+
assertFormatOptionsValid(lFormatOptions);
|
|
21
21
|
|
|
22
22
|
validateResultAgainstSchema(pResult);
|
|
23
23
|
|
|
@@ -6,29 +6,29 @@ import report from "../../report/index.mjs";
|
|
|
6
6
|
const MODULE_SYSTEM_LIST_RE = /^((cjs|amd|es6|tsd)(,|$))+$/gi;
|
|
7
7
|
const VALID_DEPTH_RE = /^\d{1,2}$/g;
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function assertModuleSystemsValid(pModuleSystems) {
|
|
10
10
|
if (
|
|
11
11
|
Boolean(pModuleSystems) &&
|
|
12
12
|
Array.isArray(pModuleSystems) &&
|
|
13
13
|
!pModuleSystems.every((pModuleSystem) =>
|
|
14
|
-
Boolean(pModuleSystem.match(MODULE_SYSTEM_LIST_RE))
|
|
14
|
+
Boolean(pModuleSystem.match(MODULE_SYSTEM_LIST_RE)),
|
|
15
15
|
)
|
|
16
16
|
) {
|
|
17
17
|
throw new Error(
|
|
18
|
-
`Invalid module system list: '${pModuleSystems.join(", ")}'\n
|
|
18
|
+
`Invalid module system list: '${pModuleSystems.join(", ")}'\n`,
|
|
19
19
|
);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
function
|
|
23
|
+
function assertRegExpSafety(pPattern) {
|
|
24
24
|
if (Boolean(pPattern) && !safeRegex(pPattern)) {
|
|
25
25
|
throw new Error(
|
|
26
|
-
`The pattern '${pPattern}' will probably run very slowly - cowardly refusing to run.\n
|
|
26
|
+
`The pattern '${pPattern}' will probably run very slowly - cowardly refusing to run.\n`,
|
|
27
27
|
);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
function
|
|
31
|
+
function assertOutputTypeValid(pOutputType) {
|
|
32
32
|
if (
|
|
33
33
|
Boolean(pOutputType) &&
|
|
34
34
|
!report.getAvailableReporters().includes(pOutputType) &&
|
|
@@ -38,15 +38,15 @@ function validateOutputType(pOutputType) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function
|
|
41
|
+
function assertMaxDepthValid(pDepth) {
|
|
42
42
|
if (Boolean(pDepth) && !pDepth.toString().match(VALID_DEPTH_RE)) {
|
|
43
43
|
throw new Error(
|
|
44
|
-
`'${pDepth}' is not a valid depth - use an integer between 0 and 99
|
|
44
|
+
`'${pDepth}' is not a valid depth - use an integer between 0 and 99`,
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
function
|
|
49
|
+
function assertFocusDepthValid(pFocusDepth) {
|
|
50
50
|
const lFocusDepth = Number.parseInt(pFocusDepth, 10);
|
|
51
51
|
const lMaxFocusDepth = 99;
|
|
52
52
|
|
|
@@ -57,18 +57,18 @@ function validateFocusDepth(pFocusDepth) {
|
|
|
57
57
|
lFocusDepth > lMaxFocusDepth)
|
|
58
58
|
) {
|
|
59
59
|
throw new Error(
|
|
60
|
-
`'${pFocusDepth}' is not a valid focus depth - use an integer between 0 and ${lMaxFocusDepth}
|
|
60
|
+
`'${pFocusDepth}' is not a valid focus depth - use an integer between 0 and ${lMaxFocusDepth}`,
|
|
61
61
|
);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
function
|
|
65
|
+
function assertPathsSafety(pFilterOption) {
|
|
66
66
|
if (typeof pFilterOption === "string") {
|
|
67
|
-
|
|
67
|
+
assertRegExpSafety(pFilterOption);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
assertRegExpSafety(pFilterOption?.path ?? "");
|
|
71
|
+
assertRegExpSafety(pFilterOption?.pathNot ?? "");
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/**
|
|
@@ -76,32 +76,32 @@ function validatePathsSafety(pFilterOption) {
|
|
|
76
76
|
* @throws {Error}
|
|
77
77
|
* @returns {import("../../../types/dependency-cruiser.js").ICruiseOptions}
|
|
78
78
|
*/
|
|
79
|
-
export function
|
|
79
|
+
export function assertCruiseOptionsValid(pOptions) {
|
|
80
80
|
let lReturnValue = {};
|
|
81
81
|
|
|
82
82
|
if (Boolean(pOptions)) {
|
|
83
83
|
// necessary because can slip through the cracks when passed as a cli parameter
|
|
84
|
-
|
|
84
|
+
assertModuleSystemsValid(pOptions.moduleSystems);
|
|
85
85
|
|
|
86
86
|
// necessary because this safety check can't be done in json schema (a.f.a.i.k.)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
assertPathsSafety(pOptions.doNotFollow);
|
|
88
|
+
assertPathsSafety(pOptions.exclude);
|
|
89
|
+
assertRegExpSafety(pOptions.includeOnly);
|
|
90
|
+
assertRegExpSafety(pOptions.focus);
|
|
91
|
+
assertRegExpSafety(pOptions.reaches);
|
|
92
|
+
assertRegExpSafety(pOptions.highlight);
|
|
93
|
+
assertRegExpSafety(pOptions.collapse);
|
|
94
94
|
|
|
95
95
|
// necessary because not in the config schema
|
|
96
|
-
|
|
96
|
+
assertOutputTypeValid(pOptions.outputType);
|
|
97
97
|
|
|
98
98
|
// necessary because not found a way to do this properly in JSON schema
|
|
99
|
-
|
|
99
|
+
assertMaxDepthValid(pOptions.maxDepth);
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
assertFocusDepthValid(pOptions.focusDepth);
|
|
102
102
|
|
|
103
103
|
if (has(pOptions, "ruleSet.options")) {
|
|
104
|
-
lReturnValue =
|
|
104
|
+
lReturnValue = assertCruiseOptionsValid(pOptions.ruleSet.options);
|
|
105
105
|
}
|
|
106
106
|
return merge({}, lReturnValue, pOptions);
|
|
107
107
|
}
|
|
@@ -113,12 +113,12 @@ export function validateCruiseOptions(pOptions) {
|
|
|
113
113
|
* @param {import("../../../types/dependency-cruiser.js").IFormatOptions} pFormatOptions
|
|
114
114
|
* @throws {Error}
|
|
115
115
|
*/
|
|
116
|
-
export function
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
export function assertFormatOptionsValid(pFormatOptions) {
|
|
117
|
+
assertPathsSafety(pFormatOptions.exclude);
|
|
118
|
+
assertPathsSafety(pFormatOptions.focus);
|
|
119
|
+
assertPathsSafety(pFormatOptions.reaches);
|
|
120
|
+
assertPathsSafety(pFormatOptions.includeOnly);
|
|
121
|
+
assertRegExpSafety(pFormatOptions.collapse);
|
|
122
|
+
assertOutputTypeValid(pFormatOptions.outputType);
|
|
123
|
+
assertFocusDepthValid(pFormatOptions.focusDepth);
|
|
124
124
|
}
|
|
@@ -66,7 +66,7 @@ function pushPlugin(pPlugins, pPluginToPush) {
|
|
|
66
66
|
async function compileResolveOptions(
|
|
67
67
|
pResolveOptions,
|
|
68
68
|
pTSConfig,
|
|
69
|
-
pResolveOptionsFromDCConfig
|
|
69
|
+
pResolveOptionsFromDCConfig,
|
|
70
70
|
) {
|
|
71
71
|
let lResolveOptions = {};
|
|
72
72
|
|
|
@@ -113,7 +113,7 @@ async function compileResolveOptions(
|
|
|
113
113
|
// or with the supported ones.
|
|
114
114
|
extensions:
|
|
115
115
|
pResolveOptions.extensions || DEFAULT_RESOLVE_OPTIONS.extensions,
|
|
116
|
-
})
|
|
116
|
+
}),
|
|
117
117
|
);
|
|
118
118
|
}
|
|
119
119
|
|
|
@@ -124,7 +124,7 @@ async function compileResolveOptions(
|
|
|
124
124
|
...pResolveOptions,
|
|
125
125
|
...getNonOverridableResolveOptions(
|
|
126
126
|
pResolveOptionsFromDCConfig?.cachedInputFileSystem?.cacheDuration ??
|
|
127
|
-
DEFAULT_CACHE_DURATION
|
|
127
|
+
DEFAULT_CACHE_DURATION,
|
|
128
128
|
),
|
|
129
129
|
};
|
|
130
130
|
}
|
|
@@ -139,7 +139,7 @@ async function compileResolveOptions(
|
|
|
139
139
|
export default async function normalizeResolveOptions(
|
|
140
140
|
pResolveOptions,
|
|
141
141
|
pOptions,
|
|
142
|
-
pTSConfig
|
|
142
|
+
pTSConfig,
|
|
143
143
|
) {
|
|
144
144
|
const lRuleSet = pOptions?.ruleSet ?? {};
|
|
145
145
|
// eslint-disable-next-line no-return-await
|
|
@@ -160,11 +160,15 @@ export default async function normalizeResolveOptions(
|
|
|
160
160
|
resolve options ...
|
|
161
161
|
*/
|
|
162
162
|
combinedDependencies: pOptions?.combinedDependencies ?? false,
|
|
163
|
+
/* Same for the builtInModules override/ add option ...*/
|
|
164
|
+
...(pOptions?.builtInModules?.override || pOptions?.builtInModules?.add
|
|
165
|
+
? { builtInModules: pOptions?.builtInModules }
|
|
166
|
+
: {}),
|
|
163
167
|
resolveLicenses: ruleSetHasLicenseRule(lRuleSet),
|
|
164
168
|
resolveDeprecations: ruleSetHasDeprecationRule(lRuleSet),
|
|
165
169
|
...(pResolveOptions || {}),
|
|
166
170
|
},
|
|
167
171
|
pTSConfig || {},
|
|
168
|
-
pOptions?.enhancedResolveOptions ?? {}
|
|
172
|
+
pOptions?.enhancedResolveOptions ?? {},
|
|
169
173
|
);
|
|
170
174
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
2
|
import safeRegex from "safe-regex";
|
|
3
3
|
import has from "lodash/has.js";
|
|
4
|
-
import {
|
|
4
|
+
import { assertCruiseOptionsValid } from "../options/assert-validity.mjs";
|
|
5
5
|
import configurationSchema from "../../schema/configuration.schema.mjs";
|
|
6
6
|
import { normalizeToREAsString } from "../helpers.mjs";
|
|
7
7
|
|
|
@@ -19,10 +19,10 @@ const ajv = new Ajv();
|
|
|
19
19
|
// of the safe-regex package.
|
|
20
20
|
const MAX_SAFE_REGEX_STAR_REPEAT_LIMIT = 10000;
|
|
21
21
|
|
|
22
|
-
function
|
|
22
|
+
function assertSchemaCompliance(pSchema, pConfiguration) {
|
|
23
23
|
if (!ajv.validate(pSchema, pConfiguration)) {
|
|
24
24
|
throw new Error(
|
|
25
|
-
`The supplied configuration is not valid: ${ajv.errorsText()}.\n
|
|
25
|
+
`The supplied configuration is not valid: ${ajv.errorsText()}.\n`,
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -40,7 +40,7 @@ function safeRule(pRule, pSection, pCondition) {
|
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
function
|
|
43
|
+
function assertRuleSafety(pRule) {
|
|
44
44
|
const lRegexConditions = [
|
|
45
45
|
{ section: "from", condition: "path" },
|
|
46
46
|
{ section: "to", condition: "path" },
|
|
@@ -56,15 +56,16 @@ function checkRuleSafety(pRule) {
|
|
|
56
56
|
|
|
57
57
|
if (
|
|
58
58
|
lRegexConditions.some(
|
|
59
|
-
(pCondition) =>
|
|
59
|
+
(pCondition) =>
|
|
60
|
+
!safeRule(pRule, pCondition.section, pCondition.condition),
|
|
60
61
|
)
|
|
61
62
|
) {
|
|
62
63
|
throw new Error(
|
|
63
64
|
`rule ${JSON.stringify(
|
|
64
65
|
pRule,
|
|
65
66
|
null,
|
|
66
|
-
""
|
|
67
|
-
)} has an unsafe regular expression. Bailing out.\n
|
|
67
|
+
"",
|
|
68
|
+
)} has an unsafe regular expression. Bailing out.\n`,
|
|
68
69
|
);
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -74,7 +75,7 @@ function checkRuleSafety(pRule) {
|
|
|
74
75
|
* Throws an Error in all other cases.
|
|
75
76
|
*
|
|
76
77
|
* Validations:
|
|
77
|
-
* - the
|
|
78
|
+
* - the rule set adheres to the [config json schema](../../schema/configuration.schema.json)
|
|
78
79
|
* - any regular expression in the rule set is 'safe' (~= won't be too slow)
|
|
79
80
|
*
|
|
80
81
|
* @param {import("../../../types/configuration.js").IConfiguration} pConfiguration The configuration to validate
|
|
@@ -82,12 +83,12 @@ function checkRuleSafety(pRule) {
|
|
|
82
83
|
* @throws {Error} An error with the reason for the error as
|
|
83
84
|
* a message
|
|
84
85
|
*/
|
|
85
|
-
export default function
|
|
86
|
-
|
|
87
|
-
(pConfiguration.allowed || []).forEach(
|
|
88
|
-
(pConfiguration.forbidden || []).forEach(
|
|
86
|
+
export default function assertRuleSetValid(pConfiguration) {
|
|
87
|
+
assertSchemaCompliance(configurationSchema, pConfiguration);
|
|
88
|
+
(pConfiguration.allowed || []).forEach(assertRuleSafety);
|
|
89
|
+
(pConfiguration.forbidden || []).forEach(assertRuleSafety);
|
|
89
90
|
if (has(pConfiguration, "options")) {
|
|
90
|
-
|
|
91
|
+
assertCruiseOptionsValid(pConfiguration.options);
|
|
91
92
|
}
|
|
92
93
|
return pConfiguration;
|
|
93
94
|
}
|
package/src/meta.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/* generated - don't edit */export default {"title":"dependency-cruiser configuration","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/configuration.schema.json","type":"object","additionalProperties":false,"properties":{"$schema":{"type":"string"},"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}},"options":{"$ref":"#/definitions/OptionsType"},"extends":{"$ref":"#/definitions/ExtendsType"}},"definitions":{"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/REAsStringsType"},"viaOnly":{"$ref":"#/definitions/REAsStringsType"},"viaNot":{"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"DependencyTypeType":{"type":"string","enum":["aliased","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"OptionsType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundDoNotFollowType"}]},"exclude":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundExcludeType"}]},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundFocusType"}]},"reaches":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundReachesType"}]},"highlight":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundHighlightType"}]},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1,"maximum":9}]},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array"},"mainFiles":{"type":"array"},"cachedInputFileSystem":{"type":"object","additionalProperties":false,"properties":{"cacheDuration":{"type":"integer","minimum":0,"maximum":1800000}}}}},"babelConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"parser":{"type":"string","enum":["acorn","swc","tsc"]},"exoticRequireStrings":{"type":"array","items":{"type":"string"}},"reporterOptions":{"$ref":"#/definitions/ReporterOptionsType"},"progress":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["cli-feedback","performance-log","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"},{"$ref":"#/definitions/CacheOptionsType"}]}}},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"type":"string"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|
|
1
|
+
/* generated - don't edit */export default {"title":"dependency-cruiser configuration","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/configuration.schema.json","type":"object","additionalProperties":false,"properties":{"$schema":{"type":"string"},"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}},"options":{"$ref":"#/definitions/OptionsType"},"extends":{"$ref":"#/definitions/ExtendsType"}},"definitions":{"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/REAsStringsType"},"viaOnly":{"$ref":"#/definitions/REAsStringsType"},"viaNot":{"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"DependencyTypeType":{"type":"string","enum":["aliased","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"OptionsType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundDoNotFollowType"}]},"exclude":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundExcludeType"}]},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundFocusType"}]},"reaches":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundReachesType"}]},"highlight":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundHighlightType"}]},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1,"maximum":9}]},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"builtInModules":{"type":"object","additionalProperties":false,"properties":{"override":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}}}},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array"},"mainFiles":{"type":"array"},"cachedInputFileSystem":{"type":"object","additionalProperties":false,"properties":{"cacheDuration":{"type":"integer","minimum":0,"maximum":1800000}}}}},"babelConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"parser":{"type":"string","enum":["acorn","swc","tsc"]},"exoticRequireStrings":{"type":"array","items":{"type":"string"}},"reporterOptions":{"$ref":"#/definitions/ReporterOptionsType"},"progress":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["cli-feedback","performance-log","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"},{"$ref":"#/definitions/CacheOptionsType"}]}}},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"type":"string"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/* generated - don't edit */export default {"title":"dependency-cruiser output format","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/cruise-result.schema.json","type":"object","required":["summary","modules"],"additionalProperties":false,"properties":{"modules":{"$ref":"#/definitions/ModulesType"},"folders":{"$ref":"#/definitions/FoldersType"},"summary":{"$ref":"#/definitions/SummaryType"},"revisionData":{"$ref":"#/definitions/RevisionDataType"}},"definitions":{"ModulesType":{"type":"array","items":{"$ref":"#/definitions/ModuleType"}},"ModuleType":{"type":"object","required":["source","dependencies","valid"],"additionalProperties":false,"properties":{"source":{"type":"string"},"valid":{"type":"boolean"},"dependencies":{"$ref":"#/definitions/DependenciesType"},"dependents":{"type":"array","items":{"type":"string"}},"followable":{"type":"boolean"},"matchesDoNotFollow":{"type":"boolean"},"matchesFocus":{"type":"boolean"},"matchesReaches":{"type":"boolean"},"matchesHighlight":{"type":"boolean"},"coreModule":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"orphan":{"type":"boolean"},"reachable":{"type":"array","items":{"$ref":"#/definitions/ReachableType"}},"reaches":{"type":"array","items":{"$ref":"#/definitions/ReachesType"}},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"consolidated":{"type":"boolean"},"instability":{"type":"number"},"checksum":{"type":"string"}}},"ReachableType":{"type":"object","required":["value","asDefinedInRule","matchedFrom"],"additionalProperties":false,"properties":{"value":{"type":"boolean"},"asDefinedInRule":{"type":"string"},"matchedFrom":{"type":"string"}}},"ReachesType":{"type":"object","required":["modules","asDefinedInRule"],"additionalProperties":false,"properties":{"modules":{"type":"array","items":{"type":"object","required":["source","via"],"additionalProperties":false,"properties":{"source":{"type":"string"},"via":{"type":"array","items":{"type":"string"}}}}},"asDefinedInRule":{"type":"string"}}},"DependenciesType":{"type":"array","items":{"$ref":"#/definitions/DependencyType"}},"DependencyType":{"type":"object","required":["circular","coreModule","couldNotResolve","dependencyTypes","exoticallyRequired","dynamic","followable","module","moduleSystem","resolved","valid"],"additionalProperties":false,"properties":{"module":{"type":"string"},"protocol":{"type":"string","enum":["data:","file:","node:"]},"mimeType":{"type":"string"},"resolved":{"type":"string"},"coreModule":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"followable":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"type":"string"},"matchesDoNotFollow":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"preCompilationOnly":{"type":"boolean"},"typeOnly":{"type":"boolean"},"circular":{"type":"boolean"},"cycle":{"type":"array","items":{"type":"string"}},"moduleSystem":{"$ref":"#/definitions/ModuleSystemType"},"valid":{"type":"boolean"},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"instability":{"type":"number"}}},"DependencyTypeType":{"type":"string","enum":["aliased","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"FoldersType":{"type":"array","items":{"$ref":"#/definitions/FolderType"}},"FolderType":{"type":"object","required":["name","moduleCount"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependents":{"type":"array","items":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string"}}}},"dependencies":{"type":"array","items":{"type":"object","required":["name","valid","circular"],"additionalProperties":false,"properties":{"name":{"type":"string"},"instability":{"type":"number"},"valid":{"type":"boolean"},"circular":{"type":"boolean"},"cycle":{"type":"array","items":{"type":"string"}},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}}}}},"moduleCount":{"type":"number"},"afferentCouplings":{"type":"number"},"efferentCouplings":{"type":"number"},"instability":{"type":"number"}}},"SummaryType":{"type":"object","required":["violations","error","warn","info","totalCruised","optionsUsed"],"additionalProperties":false,"properties":{"violations":{"$ref":"#/definitions/ViolationsType"},"error":{"type":"number"},"warn":{"type":"number"},"info":{"type":"number"},"ignore":{"type":"number"},"totalCruised":{"type":"number"},"totalDependenciesCruised":{"type":"number"},"ruleSetUsed":{"$ref":"#/definitions/RuleSetType"},"optionsUsed":{"$ref":"#/definitions/OptionsUsedType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"type":"string"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/REAsStringsType"},"viaOnly":{"$ref":"#/definitions/REAsStringsType"},"viaNot":{"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"OptionsUsedType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"$ref":"#/definitions/CompoundDoNotFollowType"},"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"},"highlight":{"$ref":"#/definitions/CompoundHighlightType"},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"type":"string"},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array"},"mainFiles":{"type":"array"},"cachedInputFileSystem":{"type":"object","additionalProperties":false,"properties":{"cacheDuration":{"type":"integer","minimum":0,"maximum":1800000}}}}},"babelConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"parser":{"type":"string","enum":["acorn","swc","tsc"]},"exoticRequireStrings":{"type":"array","items":{"type":"string"}},"reporterOptions":{"$ref":"#/definitions/ReporterOptionsType"},"progress":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["cli-feedback","performance-log","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean","enum":[false]},{"$ref":"#/definitions/CacheOptionsType"}]},"args":{"type":"string"},"rulesFile":{"type":"string"},"outputTo":{"type":"string"},"outputType":{"$ref":"#/definitions/OutputType"}}},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"OutputType":{"oneOf":[{"type":"string","enum":["json","html","dot","ddot","cdot","archi","fdot","flat","csv","err","err-long","err-html","teamcity","anon","text","metrics","markdown","mermaid","null"]},{"type":"string","pattern":"^plugin:[^:]+$"}]},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"SHA1":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["name","changeType"],"properties":{"name":{"type":"string"},"changeType":{"type":"string","enum":["added","copied","deleted","modified","renamed","type changed","unmerged","pairing broken","unknown","unmodified","untracked","ignored"]},"oldName":{"type":"string"},"checksum":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"rulesFile":{"type":"string"}}}}}}}}
|
|
1
|
+
/* generated - don't edit */export default {"title":"dependency-cruiser output format","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/cruise-result.schema.json","type":"object","required":["summary","modules"],"additionalProperties":false,"properties":{"modules":{"$ref":"#/definitions/ModulesType"},"folders":{"$ref":"#/definitions/FoldersType"},"summary":{"$ref":"#/definitions/SummaryType"},"revisionData":{"$ref":"#/definitions/RevisionDataType"}},"definitions":{"ModulesType":{"type":"array","items":{"$ref":"#/definitions/ModuleType"}},"ModuleType":{"type":"object","required":["source","dependencies","valid"],"additionalProperties":false,"properties":{"source":{"type":"string"},"valid":{"type":"boolean"},"dependencies":{"$ref":"#/definitions/DependenciesType"},"dependents":{"type":"array","items":{"type":"string"}},"followable":{"type":"boolean"},"matchesDoNotFollow":{"type":"boolean"},"matchesFocus":{"type":"boolean"},"matchesReaches":{"type":"boolean"},"matchesHighlight":{"type":"boolean"},"coreModule":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"orphan":{"type":"boolean"},"reachable":{"type":"array","items":{"$ref":"#/definitions/ReachableType"}},"reaches":{"type":"array","items":{"$ref":"#/definitions/ReachesType"}},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"consolidated":{"type":"boolean"},"instability":{"type":"number"},"checksum":{"type":"string"}}},"ReachableType":{"type":"object","required":["value","asDefinedInRule","matchedFrom"],"additionalProperties":false,"properties":{"value":{"type":"boolean"},"asDefinedInRule":{"type":"string"},"matchedFrom":{"type":"string"}}},"ReachesType":{"type":"object","required":["modules","asDefinedInRule"],"additionalProperties":false,"properties":{"modules":{"type":"array","items":{"type":"object","required":["source","via"],"additionalProperties":false,"properties":{"source":{"type":"string"},"via":{"type":"array","items":{"type":"string"}}}}},"asDefinedInRule":{"type":"string"}}},"DependenciesType":{"type":"array","items":{"$ref":"#/definitions/DependencyType"}},"DependencyType":{"type":"object","required":["circular","coreModule","couldNotResolve","dependencyTypes","exoticallyRequired","dynamic","followable","module","moduleSystem","resolved","valid"],"additionalProperties":false,"properties":{"module":{"type":"string"},"protocol":{"type":"string","enum":["data:","file:","node:"]},"mimeType":{"type":"string"},"resolved":{"type":"string"},"coreModule":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"followable":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"type":"string"},"matchesDoNotFollow":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"preCompilationOnly":{"type":"boolean"},"typeOnly":{"type":"boolean"},"circular":{"type":"boolean"},"cycle":{"type":"array","items":{"type":"string"}},"moduleSystem":{"$ref":"#/definitions/ModuleSystemType"},"valid":{"type":"boolean"},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"instability":{"type":"number"}}},"DependencyTypeType":{"type":"string","enum":["aliased","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"FoldersType":{"type":"array","items":{"$ref":"#/definitions/FolderType"}},"FolderType":{"type":"object","required":["name","moduleCount"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependents":{"type":"array","items":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string"}}}},"dependencies":{"type":"array","items":{"type":"object","required":["name","valid","circular"],"additionalProperties":false,"properties":{"name":{"type":"string"},"instability":{"type":"number"},"valid":{"type":"boolean"},"circular":{"type":"boolean"},"cycle":{"type":"array","items":{"type":"string"}},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}}}}},"moduleCount":{"type":"number"},"afferentCouplings":{"type":"number"},"efferentCouplings":{"type":"number"},"instability":{"type":"number"}}},"SummaryType":{"type":"object","required":["violations","error","warn","info","totalCruised","optionsUsed"],"additionalProperties":false,"properties":{"violations":{"$ref":"#/definitions/ViolationsType"},"error":{"type":"number"},"warn":{"type":"number"},"info":{"type":"number"},"ignore":{"type":"number"},"totalCruised":{"type":"number"},"totalDependenciesCruised":{"type":"number"},"ruleSetUsed":{"$ref":"#/definitions/RuleSetType"},"optionsUsed":{"$ref":"#/definitions/OptionsUsedType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"type":"string"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/REAsStringsType"},"viaOnly":{"$ref":"#/definitions/REAsStringsType"},"viaNot":{"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"OptionsUsedType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"$ref":"#/definitions/CompoundDoNotFollowType"},"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"},"highlight":{"$ref":"#/definitions/CompoundHighlightType"},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"type":"string"},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"builtInModules":{"type":"object","additionalProperties":false,"properties":{"override":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}}}},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array"},"mainFiles":{"type":"array"},"cachedInputFileSystem":{"type":"object","additionalProperties":false,"properties":{"cacheDuration":{"type":"integer","minimum":0,"maximum":1800000}}}}},"babelConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"parser":{"type":"string","enum":["acorn","swc","tsc"]},"exoticRequireStrings":{"type":"array","items":{"type":"string"}},"reporterOptions":{"$ref":"#/definitions/ReporterOptionsType"},"progress":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["cli-feedback","performance-log","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean","enum":[false]},{"$ref":"#/definitions/CacheOptionsType"}]},"args":{"type":"string"},"rulesFile":{"type":"string"},"outputTo":{"type":"string"},"outputType":{"$ref":"#/definitions/OutputType"}}},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"OutputType":{"oneOf":[{"type":"string","enum":["json","html","dot","ddot","cdot","archi","fdot","flat","csv","err","err-long","err-html","teamcity","anon","text","metrics","markdown","mermaid","null"]},{"type":"string","pattern":"^plugin:[^:]+$"}]},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"SHA1":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["name","changeType"],"properties":{"name":{"type":"string"},"changeType":{"type":"string","enum":["added","copied","deleted","modified","renamed","type changed","unmerged","pairing broken","unknown","unmodified","untracked","ignored"]},"oldName":{"type":"string"},"checksum":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"rulesFile":{"type":"string"}}}}}}}}
|
package/types/options.d.ts
CHANGED
|
@@ -190,6 +190,27 @@ export interface ICruiseOptions {
|
|
|
190
190
|
* @deprecated now works automatically
|
|
191
191
|
*/
|
|
192
192
|
externalModuleResolutionStrategy?: ExternalModuleResolutionStrategyType;
|
|
193
|
+
/**
|
|
194
|
+
* Options to tweak what dependency-cruiser considers 'built-in' modules. If
|
|
195
|
+
* you're targeting nodejs, or don't use any built-in modules you can probably
|
|
196
|
+
* leave this alone.
|
|
197
|
+
*/
|
|
198
|
+
builtInModules?: {
|
|
199
|
+
/**
|
|
200
|
+
* List of module names that are to be considered as 'built-in'. By default dependency-cruiser
|
|
201
|
+
* uses the list of built-ins from nodejs. If you code for another environment (e.g. the
|
|
202
|
+
* browser) and you use shims for nodejs builtins like 'path' from node_modules, you could
|
|
203
|
+
* pass an empty array here. If you want to just add a couple of extra built-ins to
|
|
204
|
+
* the default list, use the 'add' attribute instead.
|
|
205
|
+
*/
|
|
206
|
+
override: string[];
|
|
207
|
+
/**
|
|
208
|
+
* List of module names that are to be considered as 'built-in' in addition to the default
|
|
209
|
+
* list of the environment you're currently in. Use this e.g. if you're writing
|
|
210
|
+
* electron code and want to add 'electron' as built-in.
|
|
211
|
+
*/
|
|
212
|
+
add: string[];
|
|
213
|
+
};
|
|
193
214
|
/**
|
|
194
215
|
* When true includes denormalized dependents in the cruise-result, even
|
|
195
216
|
* though there's no rule in the rule set that requires them. Defaults to false.
|