dependency-cruiser 11.12.0-beta-1 → 11.12.0-beta-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/depcruise-fmt.js +4 -0
- package/bin/dependency-cruise.js +4 -5
- package/package.json +1 -3
- package/src/cli/defaults.js +0 -1
- package/src/cli/normalize-cli-options.js +1 -16
- package/src/enrich/derive/dependents/index.js +6 -0
- package/src/enrich/derive/module-utl.js +1 -0
- package/src/graph-utl/add-focus.js +18 -15
- package/src/graph-utl/filterbank.js +37 -2
- package/src/graph-utl/indexed-module-graph.js +48 -0
- package/src/main/index.js +4 -42
- package/src/main/options/normalize.js +7 -2
- package/src/main/options/validate.js +2 -0
- package/src/meta.js +1 -1
- package/src/schema/configuration.schema.js +1 -1
- package/src/schema/cruise-result.schema.js +1 -1
- package/types/cruise-result.d.ts +2 -21
- package/types/filter-types.d.ts +9 -0
- package/types/options.d.ts +13 -6
- package/src/cache/revision-data.js +0 -142
package/bin/depcruise-fmt.js
CHANGED
|
@@ -39,6 +39,10 @@ try {
|
|
|
39
39
|
"-F, --focus <regex>",
|
|
40
40
|
"only include modules matching the regex + their direct neighbours"
|
|
41
41
|
)
|
|
42
|
+
.option(
|
|
43
|
+
"-R, --reaches <regex>",
|
|
44
|
+
"only include modules matching the regex + all modules that can reach it"
|
|
45
|
+
)
|
|
42
46
|
.option("-x, --exclude <regex>", "exclude all modules matching the regex")
|
|
43
47
|
.option(
|
|
44
48
|
"-S, --collapse <regex>",
|
package/bin/dependency-cruise.js
CHANGED
|
@@ -42,6 +42,10 @@ try {
|
|
|
42
42
|
"-F, --focus <regex>",
|
|
43
43
|
"only include modules matching the regex + their direct neighbours"
|
|
44
44
|
)
|
|
45
|
+
.option(
|
|
46
|
+
"-R, --reaches <regex>",
|
|
47
|
+
"only include modules matching the regex + all modules that can reach it"
|
|
48
|
+
)
|
|
45
49
|
.option("-x, --exclude <regex>", "exclude all modules matching the regex")
|
|
46
50
|
.option(
|
|
47
51
|
"-X, --do-not-follow <regex>",
|
|
@@ -87,11 +91,6 @@ try {
|
|
|
87
91
|
"-P, --prefix <prefix>",
|
|
88
92
|
"prefix to use for links in the dot and err-html reporters"
|
|
89
93
|
)
|
|
90
|
-
.option(
|
|
91
|
-
"-C, --cache [cache-location]",
|
|
92
|
-
"(experimental) use a cache to speed up execution." +
|
|
93
|
-
"Location defaults to node_modules/.cache/dependency-cruiser"
|
|
94
|
-
)
|
|
95
94
|
.option("--preserve-symlinks", `leave symlinks unchanged (off by default)`)
|
|
96
95
|
.option("-v, --validate [file]", `alias for --config`)
|
|
97
96
|
.option(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dependency-cruiser",
|
|
3
|
-
"version": "11.12.0-beta-
|
|
3
|
+
"version": "11.12.0-beta-2",
|
|
4
4
|
"description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"static analysis",
|
|
@@ -89,7 +89,6 @@
|
|
|
89
89
|
"depcruise:graph:fdp": "node ./bin/dependency-cruise.js bin src --config --output-type dot | fdp -GK=0.1 -Gsplines=true -T svg > tmp_deps.svg",
|
|
90
90
|
"depcruise:graph:osage": "node ./bin/dependency-cruise.js bin src --config --output-type dot | osage -Gpack=32 -GpackMode=array2 -T svg > tmp_deps.svg",
|
|
91
91
|
"depcruise:graph:view": "node ./bin/dependency-cruise.js bin src --prefix vscode://file/$(pwd)/ --config configs/.dependency-cruiser-show-metrics-config.json --output-type dot --progress cli-feedback | dot -T svg | node ./bin/wrap-stream-in-html.js | browser",
|
|
92
|
-
"depcruise:graph:view:diff": "node ./bin/dependency-cruise.js bin src --prefix vscode://file/$(pwd)/ --config configs/.dependency-cruiser-show-metrics-config.json --output-type dot --progress cli-feedback --focus \"$(watskeburt develop)\" | dot -T svg | node ./bin/wrap-stream-in-html.js | browser",
|
|
93
92
|
"depcruise:report": "node ./bin/dependency-cruise.js src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.json --output-to dependency-violations.html",
|
|
94
93
|
"depcruise:report:view": "node ./bin/dependency-cruise.js src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.json --output-to - | browser",
|
|
95
94
|
"depcruise:focus": "node ./bin/dependency-cruise.js src bin test configs types --progress --config --output-type text --focus",
|
|
@@ -159,7 +158,6 @@
|
|
|
159
158
|
"semver-try-require": "^5.0.2",
|
|
160
159
|
"teamcity-service-messages": "0.1.14",
|
|
161
160
|
"tsconfig-paths-webpack-plugin": "3.5.2",
|
|
162
|
-
"watskeburt": "0.5.0",
|
|
163
161
|
"wrap-ansi": "^7.0.0"
|
|
164
162
|
},
|
|
165
163
|
"devDependencies": {
|
package/src/cli/defaults.js
CHANGED
|
@@ -10,7 +10,6 @@ const defaults = require("./defaults");
|
|
|
10
10
|
const KNOWN_DEPCRUISE_CLI_OPTIONS = [
|
|
11
11
|
"babelConfig",
|
|
12
12
|
"baseDir",
|
|
13
|
-
"cache",
|
|
14
13
|
"collapse",
|
|
15
14
|
"config",
|
|
16
15
|
"doNotFollow",
|
|
@@ -29,6 +28,7 @@ const KNOWN_DEPCRUISE_CLI_OPTIONS = [
|
|
|
29
28
|
"prefix",
|
|
30
29
|
"preserveSymlinks",
|
|
31
30
|
"progress",
|
|
31
|
+
"reaches",
|
|
32
32
|
"tsPreCompilationDeps",
|
|
33
33
|
"tsConfig",
|
|
34
34
|
"validate",
|
|
@@ -194,19 +194,6 @@ function normalizeProgress(pCliOptions) {
|
|
|
194
194
|
return lProgress ? { progress: lProgress } : {};
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
function normalizeCacheFolderName(pCliOptions) {
|
|
198
|
-
const lCache = get(pCliOptions, "cache", false);
|
|
199
|
-
let lReturnValue = clone(pCliOptions);
|
|
200
|
-
|
|
201
|
-
if (lCache === true) {
|
|
202
|
-
lReturnValue = {
|
|
203
|
-
...lReturnValue,
|
|
204
|
-
cache: path.join(defaults.CACHE_FOLDER),
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
return lReturnValue;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
197
|
/**
|
|
211
198
|
* returns the pOptionsAsPassedFromCommander, so that the returned value contains a
|
|
212
199
|
* valid value for each possible option
|
|
@@ -255,8 +242,6 @@ module.exports = function normalizeOptions(
|
|
|
255
242
|
defaults.BABEL_CONFIG
|
|
256
243
|
);
|
|
257
244
|
|
|
258
|
-
lOptions = normalizeCacheFolderName(lOptions);
|
|
259
|
-
|
|
260
245
|
return lOptions;
|
|
261
246
|
};
|
|
262
247
|
|
|
@@ -10,10 +10,16 @@ function hasDependentsRule(pOptions) {
|
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param {import("../../../../types/cruise-result").IOptions} pOptions
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
13
18
|
function shouldAddDependents(pOptions) {
|
|
14
19
|
return (
|
|
15
20
|
Boolean(pOptions.forceDeriveDependents) ||
|
|
16
21
|
Boolean(pOptions.metrics) ||
|
|
22
|
+
Boolean(pOptions.reaches) ||
|
|
17
23
|
pOptions.outputType === "metrics" ||
|
|
18
24
|
hasDependentsRule(pOptions)
|
|
19
25
|
);
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
1
|
+
const has = require("lodash/has");
|
|
2
|
+
const { moduleMatchesFilter } = require("./match-facade");
|
|
3
3
|
|
|
4
4
|
function getFocusModules(pModules, pFilter) {
|
|
5
5
|
return pModules
|
|
6
|
-
.filter((pModule) =>
|
|
6
|
+
.filter((pModule) => moduleMatchesFilter(pModule, pFilter))
|
|
7
7
|
.map((pModule) => ({ ...pModule, matchesFocus: true }));
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
function getCallingModules(pModules,
|
|
10
|
+
function getCallingModules(pModules, pFocusedModuleNames) {
|
|
11
11
|
return pModules
|
|
12
12
|
.filter(
|
|
13
13
|
(pModule) =>
|
|
14
|
-
!
|
|
14
|
+
!pFocusedModuleNames.has(pModule.source) &&
|
|
15
15
|
pModule.dependencies.some((pDependency) =>
|
|
16
|
-
|
|
16
|
+
pFocusedModuleNames.has(pDependency.resolved)
|
|
17
17
|
)
|
|
18
18
|
)
|
|
19
19
|
.map((pModule) => ({
|
|
20
20
|
...pModule,
|
|
21
21
|
matchesFocus: false,
|
|
22
22
|
dependencies: pModule.dependencies.filter((pDependency) =>
|
|
23
|
-
|
|
23
|
+
pFocusedModuleNames.has(pDependency.resolved)
|
|
24
24
|
),
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
function getCalledModules(pModules,
|
|
28
|
+
function getCalledModules(pModules, pFocusedModules, pFocusedModuleNames) {
|
|
29
29
|
const lCalledModuleNames = new Set(
|
|
30
|
-
|
|
30
|
+
pFocusedModules.reduce(
|
|
31
31
|
(pAll, pModule) =>
|
|
32
32
|
pAll.concat(pModule.dependencies.map(({ resolved }) => resolved)),
|
|
33
33
|
[]
|
|
@@ -37,19 +37,22 @@ function getCalledModules(pModules, pFilter, pFocusModules) {
|
|
|
37
37
|
return pModules
|
|
38
38
|
.filter(
|
|
39
39
|
(pModule) =>
|
|
40
|
-
!
|
|
40
|
+
!pFocusedModuleNames.has(pModule.source) &&
|
|
41
41
|
lCalledModuleNames.has(pModule.source)
|
|
42
42
|
)
|
|
43
43
|
.map((pModule) => ({ ...pModule, matchesFocus: false, dependencies: [] }));
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
module.exports = function addFocus(pModules, pFilter) {
|
|
47
|
-
if (
|
|
48
|
-
const
|
|
47
|
+
if (has(pFilter, "path")) {
|
|
48
|
+
const lFocusedModules = getFocusModules(pModules, pFilter);
|
|
49
|
+
const lFocusedModuleNames = new Set(
|
|
50
|
+
lFocusedModules.map(({ source }) => source)
|
|
51
|
+
);
|
|
49
52
|
|
|
50
|
-
return
|
|
51
|
-
.concat(getCallingModules(pModules,
|
|
52
|
-
.concat(getCalledModules(pModules,
|
|
53
|
+
return lFocusedModules
|
|
54
|
+
.concat(getCallingModules(pModules, lFocusedModuleNames))
|
|
55
|
+
.concat(getCalledModules(pModules, lFocusedModules, lFocusedModuleNames));
|
|
53
56
|
}
|
|
54
57
|
return pModules;
|
|
55
58
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const clone = require("lodash/clone");
|
|
2
|
-
const
|
|
2
|
+
const addFocus = require("./add-focus");
|
|
3
|
+
const IndexedModuleGraph = require("./indexed-module-graph");
|
|
3
4
|
const matchFacade = require("./match-facade");
|
|
4
5
|
|
|
5
6
|
function includeOnly(pModules, pIncludeFilter) {
|
|
@@ -32,6 +33,37 @@ function exclude(pModules, pExcludeFilter) {
|
|
|
32
33
|
}))
|
|
33
34
|
: pModules;
|
|
34
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param {import("../../types/cruise-result").IModule[]} pModules
|
|
39
|
+
* @param {import("../../types/filter-types").IReachesType} pReachesFilter
|
|
40
|
+
* @returns {import("../../types/cruise-result").IModule[]}
|
|
41
|
+
*/
|
|
42
|
+
function filterReaches(pModules, pReachesFilter) {
|
|
43
|
+
const lModuleNamesToReach = pModules
|
|
44
|
+
.filter((pModule) =>
|
|
45
|
+
matchFacade.moduleMatchesFilter(pModule, pReachesFilter)
|
|
46
|
+
)
|
|
47
|
+
.map(({ source }) => source);
|
|
48
|
+
|
|
49
|
+
/** @type {Array<string>} */
|
|
50
|
+
let lReachingModules = [];
|
|
51
|
+
let lIndexedModules = new IndexedModuleGraph(pModules);
|
|
52
|
+
|
|
53
|
+
for (let lModuleToReach of lModuleNamesToReach) {
|
|
54
|
+
lReachingModules = lReachingModules.concat(
|
|
55
|
+
lIndexedModules.findTransitiveDependents(lModuleToReach)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
return pModules
|
|
59
|
+
.filter(({ source }) => lReachingModules.includes(source))
|
|
60
|
+
.map((pModule) => ({
|
|
61
|
+
...pModule,
|
|
62
|
+
dependencies: pModule.dependencies.filter(({ resolved }) =>
|
|
63
|
+
lReachingModules.includes(resolved)
|
|
64
|
+
),
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
35
67
|
|
|
36
68
|
function applyFilters(pModules, pFilters) {
|
|
37
69
|
if (pFilters) {
|
|
@@ -44,7 +76,10 @@ function applyFilters(pModules, pFilters) {
|
|
|
44
76
|
lReturnValue = includeOnly(lReturnValue, pFilters.includeOnly);
|
|
45
77
|
}
|
|
46
78
|
if (pFilters.focus) {
|
|
47
|
-
lReturnValue =
|
|
79
|
+
lReturnValue = addFocus(lReturnValue, pFilters.focus);
|
|
80
|
+
}
|
|
81
|
+
if (pFilters.reaches) {
|
|
82
|
+
lReturnValue = filterReaches(lReturnValue, pFilters.reaches);
|
|
48
83
|
}
|
|
49
84
|
return lReturnValue;
|
|
50
85
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module.exports = class IndexedModuleGraph {
|
|
2
|
+
init(pModules) {
|
|
3
|
+
this.indexedGraph = new Map(
|
|
4
|
+
pModules.map((pModule) => [pModule.source, pModule])
|
|
5
|
+
);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
constructor(pModules) {
|
|
9
|
+
this.init(pModules);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {string} pName
|
|
15
|
+
* @return {import("../types/cruise-result").IModule}
|
|
16
|
+
*/
|
|
17
|
+
findModuleByName(pName) {
|
|
18
|
+
return this.indexedGraph.get(pName);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* @param {import("../types/cruise-result").IModule[]} pModules
|
|
24
|
+
* @param {string} pName
|
|
25
|
+
* @param {Set<string>} pVisited
|
|
26
|
+
* @returns {Array<string>}
|
|
27
|
+
*/
|
|
28
|
+
findTransitiveDependents(pName, pVisited = new Set()) {
|
|
29
|
+
/** @type {string[]} */
|
|
30
|
+
let lReturnValue = [];
|
|
31
|
+
const lModule = this.findModuleByName(pName);
|
|
32
|
+
|
|
33
|
+
if (lModule) {
|
|
34
|
+
let lDependents = lModule.dependents || [];
|
|
35
|
+
const lVisited = pVisited.add(pName);
|
|
36
|
+
|
|
37
|
+
if (lDependents.length > 0) {
|
|
38
|
+
lDependents
|
|
39
|
+
.filter((pDependent) => !lVisited.has(pDependent))
|
|
40
|
+
.forEach((pDependent) =>
|
|
41
|
+
this.findTransitiveDependents(pDependent, lVisited)
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
lReturnValue = Array.from(lVisited);
|
|
45
|
+
}
|
|
46
|
+
return lReturnValue;
|
|
47
|
+
}
|
|
48
|
+
};
|
package/src/main/index.js
CHANGED
|
@@ -6,12 +6,6 @@ const enrich = require("../enrich");
|
|
|
6
6
|
const cruiseResultSchema = require("../schema/cruise-result.schema.js");
|
|
7
7
|
const meta = require("../extract/transpile/meta");
|
|
8
8
|
const bus = require("../utl/bus");
|
|
9
|
-
const {
|
|
10
|
-
getRevisionData,
|
|
11
|
-
canServeFromCache,
|
|
12
|
-
readCache,
|
|
13
|
-
writeCache,
|
|
14
|
-
} = require("../cache/revision-data");
|
|
15
9
|
const normalizeFilesAndDirectories = require("./files-and-dirs/normalize");
|
|
16
10
|
const validateRuleSet = require("./rule-set/validate");
|
|
17
11
|
const normalizeRuleSet = require("./rule-set/normalize");
|
|
@@ -35,7 +29,7 @@ function validateResultAgainstSchema(pResult) {
|
|
|
35
29
|
);
|
|
36
30
|
}
|
|
37
31
|
}
|
|
38
|
-
|
|
32
|
+
|
|
39
33
|
function format(pResult, pFormatOptions = {}) {
|
|
40
34
|
const lFormatOptions = normalizeFormatOptions(pFormatOptions);
|
|
41
35
|
validateFormatOptions(lFormatOptions);
|
|
@@ -50,52 +44,26 @@ const TOTAL_STEPS = 8;
|
|
|
50
44
|
function c(pComplete, pTotal = TOTAL_STEPS) {
|
|
51
45
|
return { complete: pComplete / pTotal };
|
|
52
46
|
}
|
|
53
|
-
|
|
54
|
-
/** @type {import("../../types/dependency-cruiser").futureCruise} */
|
|
55
|
-
// eslint-disable-next-line max-lines-per-function, complexity, max-statements
|
|
56
47
|
function futureCruise(
|
|
57
48
|
pFileAndDirectoryArray,
|
|
58
49
|
pCruiseOptions,
|
|
59
50
|
pResolveOptions,
|
|
60
51
|
pTranspileOptions
|
|
61
52
|
) {
|
|
62
|
-
/** @type {import("../../types/cruise-result").IRevisionData|null} */
|
|
63
|
-
let lRevisionData = null;
|
|
64
|
-
|
|
65
53
|
bus.emit("progress", "parsing options", c(1));
|
|
66
54
|
/** @type {import("../../types/strict-options").IStrictCruiseOptions} */
|
|
67
55
|
let lCruiseOptions = normalizeCruiseOptions(
|
|
68
56
|
validateCruiseOptions(pCruiseOptions)
|
|
69
57
|
);
|
|
70
58
|
|
|
71
|
-
if (lCruiseOptions.cache) {
|
|
72
|
-
bus.emit("progress", "cache: checking freshness", c(2));
|
|
73
|
-
lRevisionData = getRevisionData(
|
|
74
|
-
meta.scannableExtensions.concat(
|
|
75
|
-
lCruiseOptions.extraExtensionsToScan || []
|
|
76
|
-
),
|
|
77
|
-
pFileAndDirectoryArray,
|
|
78
|
-
lCruiseOptions.rulesFile
|
|
79
|
-
);
|
|
80
|
-
if (
|
|
81
|
-
lRevisionData &&
|
|
82
|
-
canServeFromCache(lCruiseOptions.cache, lRevisionData)
|
|
83
|
-
) {
|
|
84
|
-
bus.emit("progress", "cache: retrieving from cache", c(3));
|
|
85
|
-
const lCachedResults = readCache(lCruiseOptions.cache);
|
|
86
|
-
|
|
87
|
-
bus.emit("progress", "cache: reporting from cache", c(4));
|
|
88
|
-
return reportWrap(lCachedResults, lCruiseOptions);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
59
|
if (Boolean(lCruiseOptions.ruleSet)) {
|
|
93
|
-
bus.emit("progress", "parsing rule set", c(
|
|
60
|
+
bus.emit("progress", "parsing rule set", c(2));
|
|
94
61
|
lCruiseOptions.ruleSet = normalizeRuleSet(
|
|
95
62
|
validateRuleSet(lCruiseOptions.ruleSet)
|
|
96
63
|
);
|
|
97
64
|
}
|
|
98
65
|
|
|
66
|
+
bus.emit("progress", "making sense of files and directories", c(3));
|
|
99
67
|
const lNormalizedFileAndDirectoryArray = normalizeFilesAndDirectories(
|
|
100
68
|
pFileAndDirectoryArray
|
|
101
69
|
);
|
|
@@ -122,18 +90,12 @@ function futureCruise(
|
|
|
122
90
|
lNormalizedFileAndDirectoryArray
|
|
123
91
|
);
|
|
124
92
|
|
|
125
|
-
if (lCruiseOptions.cache && lRevisionData) {
|
|
126
|
-
lCruiseResult.revisionData = lRevisionData;
|
|
127
|
-
writeCache(lCruiseOptions.cache, lCruiseResult);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
93
|
bus.emit("progress", "reporting", c(7));
|
|
131
94
|
return reportWrap(lCruiseResult, lCruiseOptions);
|
|
132
95
|
}
|
|
133
96
|
|
|
134
97
|
// see [api.md](../../doc/api.md) and/ or the
|
|
135
|
-
// [type definition](../../types/
|
|
136
|
-
/** @type {import("../../types/dependency-cruiser").cruise} */
|
|
98
|
+
// [type definition](../../types/depencency-cruiser.d.ts) for details
|
|
137
99
|
function cruise(pFileAndDirectoryArray, pOptions, pResolveOptions, pTSConfig) {
|
|
138
100
|
return futureCruise(pFileAndDirectoryArray, pOptions, pResolveOptions, {
|
|
139
101
|
tsConfig: pTSConfig,
|
|
@@ -146,12 +146,16 @@ function normalizeCruiseOptions(pOptions) {
|
|
|
146
146
|
}
|
|
147
147
|
// TODO: further down the execution path code still relies on .doNotFollow
|
|
148
148
|
// and .exclude existing. We should treat them the same as the
|
|
149
|
-
// other
|
|
149
|
+
// other filters (so either make all exist always or only
|
|
150
150
|
// when they're actually defined)
|
|
151
151
|
lReturnValue.doNotFollow = normalizeFilterOption(lReturnValue.doNotFollow);
|
|
152
152
|
lReturnValue.exclude = normalizeFilterOption(lReturnValue.exclude);
|
|
153
153
|
lReturnValue.extraExtensionsToScan = lReturnValue.extraExtensionsToScan || [];
|
|
154
|
-
lReturnValue = normalizeFilterOptions(lReturnValue, [
|
|
154
|
+
lReturnValue = normalizeFilterOptions(lReturnValue, [
|
|
155
|
+
"focus",
|
|
156
|
+
"includeOnly",
|
|
157
|
+
"reaches",
|
|
158
|
+
]);
|
|
155
159
|
|
|
156
160
|
lReturnValue.exoticRequireStrings = uniq(lReturnValue.exoticRequireStrings);
|
|
157
161
|
if (lReturnValue.reporterOptions) {
|
|
@@ -182,6 +186,7 @@ function normalizeFormatOptions(pFormatOptions) {
|
|
|
182
186
|
"exclude",
|
|
183
187
|
"focus",
|
|
184
188
|
"includeOnly",
|
|
189
|
+
"reaches",
|
|
185
190
|
]);
|
|
186
191
|
}
|
|
187
192
|
|
|
@@ -73,6 +73,7 @@ function validateCruiseOptions(pOptions) {
|
|
|
73
73
|
validatePathsSafety(pOptions.exclude);
|
|
74
74
|
validateRegExpSafety(pOptions.includeOnly);
|
|
75
75
|
validateRegExpSafety(pOptions.focus);
|
|
76
|
+
validateRegExpSafety(pOptions.reaches);
|
|
76
77
|
validateRegExpSafety(pOptions.collapse);
|
|
77
78
|
|
|
78
79
|
// necessary because not in the config schema
|
|
@@ -97,6 +98,7 @@ function validateCruiseOptions(pOptions) {
|
|
|
97
98
|
function validateFormatOptions(pFormatOptions) {
|
|
98
99
|
validatePathsSafety(pFormatOptions.exclude);
|
|
99
100
|
validatePathsSafety(pFormatOptions.focus);
|
|
101
|
+
validatePathsSafety(pFormatOptions.reaches);
|
|
100
102
|
validatePathsSafety(pFormatOptions.includeOnly);
|
|
101
103
|
validateRegExpSafety(pFormatOptions.collapse);
|
|
102
104
|
validateOutputType(pFormatOptions.outputType);
|
package/src/meta.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* generated - don't edit */
|
|
2
|
-
module.exports={"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"}]},"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"}},"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","none"]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"}]}}},"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"}}},"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"}}},"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"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|
|
2
|
+
module.exports={"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"}]},"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"}},"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","none"]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"}}},"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"}}},"CompoundReachesType":{"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"}}},"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"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* generated - don't edit */
|
|
2
|
-
module.exports={"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"},"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"}}},"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"},"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"}},"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","none"]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"}]},"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"]},{"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"}}},"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"}}},"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"}}}}}}}}
|
|
2
|
+
module.exports={"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"}},"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"},"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"}}},"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":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundReachesType"}]},"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"}},"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","none"]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"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"]},{"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"}}},"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"}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}}}}
|
package/types/cruise-result.d.ts
CHANGED
|
@@ -3,21 +3,6 @@ import { IFlattenedRuleSet } from "./rule-set";
|
|
|
3
3
|
import { DependencyType, ModuleSystemType, ProtocolType } from "./shared-types";
|
|
4
4
|
import { IViolation } from "./violations";
|
|
5
5
|
import { IRuleSummary } from "./rule-summary";
|
|
6
|
-
import { IChange } from "watskeburt";
|
|
7
|
-
|
|
8
|
-
export interface IRevisionChange extends IChange {
|
|
9
|
-
checksum: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* caching revisionData. doc and proper naming will follow
|
|
14
|
-
*/
|
|
15
|
-
export interface IRevisionData {
|
|
16
|
-
SHA1: string;
|
|
17
|
-
changes: IRevisionChange[];
|
|
18
|
-
args: string[];
|
|
19
|
-
rulesFile: string;
|
|
20
|
-
}
|
|
21
6
|
|
|
22
7
|
export interface ICruiseResult {
|
|
23
8
|
/**
|
|
@@ -37,10 +22,6 @@ export interface ICruiseResult {
|
|
|
37
22
|
* Data summarizing the found dependencies
|
|
38
23
|
*/
|
|
39
24
|
summary: ISummary;
|
|
40
|
-
/**
|
|
41
|
-
* caching revisionData. doc and proper naming will follow
|
|
42
|
-
*/
|
|
43
|
-
revisionData?: IRevisionData;
|
|
44
25
|
}
|
|
45
26
|
|
|
46
27
|
export interface IModule {
|
|
@@ -73,7 +54,7 @@ export interface IModule {
|
|
|
73
54
|
couldNotResolve?: boolean;
|
|
74
55
|
/**
|
|
75
56
|
* the type of inclusion - local, core, unknown (= we honestly don't know), undetermined (=
|
|
76
|
-
* we didn't bother determining it) or one of the npm dependencies defined in a package.
|
|
57
|
+
* we didn't bother determining it) or one of the npm dependencies defined in a package.jsom
|
|
77
58
|
* ('npm' for 'dependencies', 'npm-dev', 'npm-optional', 'npm-peer', 'npm-no-pkg' for
|
|
78
59
|
* development, optional, peer dependencies and dependencies in node_modules but not in
|
|
79
60
|
* package.json respectively)
|
|
@@ -145,7 +126,7 @@ export interface IDependency {
|
|
|
145
126
|
*/
|
|
146
127
|
coreModule: boolean;
|
|
147
128
|
/**
|
|
148
|
-
* 'true' if dependency-cruiser could not
|
|
129
|
+
* 'true' if dependency-cruiser could not resulve the module name in the source code to a
|
|
149
130
|
* file name or core module. 'false' in all other cases.
|
|
150
131
|
*/
|
|
151
132
|
couldNotResolve: boolean;
|
package/types/filter-types.d.ts
CHANGED
|
@@ -39,3 +39,12 @@ export interface IFocusType {
|
|
|
39
39
|
*/
|
|
40
40
|
path?: string | string[];
|
|
41
41
|
}
|
|
42
|
+
|
|
43
|
+
export interface IReachesType {
|
|
44
|
+
/**
|
|
45
|
+
* dependency-cruiser will include modules matching this regular expression
|
|
46
|
+
* in its output, as well as _any_ module that reaches them - either directly
|
|
47
|
+
* or via via.
|
|
48
|
+
*/
|
|
49
|
+
path?: string | string[];
|
|
50
|
+
}
|
package/types/options.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
IExcludeType,
|
|
7
7
|
IFocusType,
|
|
8
8
|
IIncludeOnlyType,
|
|
9
|
+
IReachesType,
|
|
9
10
|
} from "./filter-types";
|
|
10
11
|
import { IBaselineViolations } from "./baseline-violations";
|
|
11
12
|
|
|
@@ -53,6 +54,12 @@ export interface ICruiseOptions {
|
|
|
53
54
|
* dependents)
|
|
54
55
|
*/
|
|
55
56
|
focus?: string | string[] | IFocusType;
|
|
57
|
+
/**
|
|
58
|
+
* dependency-cruiser will include modules matching this regular expression
|
|
59
|
+
* in its output, as well as _any_ module that reaches them - either directly
|
|
60
|
+
* or via via.
|
|
61
|
+
*/
|
|
62
|
+
reaches?: string | string[] | IReachesType;
|
|
56
63
|
/*
|
|
57
64
|
* baseline of known validations. Typically you'd specify these in a file called
|
|
58
65
|
* .dependency-cruiser-known-violations.json (which you'd generate with the --outputType
|
|
@@ -240,12 +247,6 @@ export interface ICruiseOptions {
|
|
|
240
247
|
* for all modules and folders. Defaults to false.
|
|
241
248
|
*/
|
|
242
249
|
metrics?: boolean;
|
|
243
|
-
/**
|
|
244
|
-
* When set to true dependency-cruiser will cache its results in node_modules/.cache/dependency-cruiser.
|
|
245
|
-
* When passed a string dependency-cruiser will cache in the folder designated by the string.
|
|
246
|
-
* Defaults to false.
|
|
247
|
-
*/
|
|
248
|
-
cache?: boolean | string;
|
|
249
250
|
}
|
|
250
251
|
|
|
251
252
|
export interface IFormatOptions {
|
|
@@ -265,6 +266,12 @@ export interface IFormatOptions {
|
|
|
265
266
|
* dependents)
|
|
266
267
|
*/
|
|
267
268
|
focus?: string | string[] | IFocusType;
|
|
269
|
+
/**
|
|
270
|
+
* dependency-cruiser will include modules matching this regular expression
|
|
271
|
+
* in its output, as well as _any_ module that reaches them - either directly
|
|
272
|
+
* or via via.
|
|
273
|
+
*/
|
|
274
|
+
reaches?: string | string[] | IReachesType;
|
|
268
275
|
/**
|
|
269
276
|
* collapse a to a folder depth by passing a single digit (e.g. 2).
|
|
270
277
|
* When passed a regex collapse to that pattern
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
const { deepEqual } = require("assert");
|
|
2
|
-
const { createHash } = require("crypto");
|
|
3
|
-
const { readFileSync, mkdirSync, writeFileSync } = require("fs");
|
|
4
|
-
const { extname, join } = require("path");
|
|
5
|
-
const memoize = require("lodash/memoize");
|
|
6
|
-
const { getSHA, list } = require("watskeburt");
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param {string[]} pExtensions
|
|
11
|
-
* @returns {(pChange: import("watskeburt").IChange) => boolean}
|
|
12
|
-
*/
|
|
13
|
-
function hasInterestingExtension(pExtensions) {
|
|
14
|
-
return (pChange) =>
|
|
15
|
-
pExtensions.includes(extname(pChange.name)) ||
|
|
16
|
-
(pChange.oldName && pExtensions.includes(extname(pChange.oldName)));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
* @param {import("watskeburt").changeTypeType[]} pInterestingChangeTypes
|
|
22
|
-
* @returns {(pChange: import("watskeburt").IChange) => boolean}
|
|
23
|
-
*/
|
|
24
|
-
function isInterestingChangeType(pInterestingChangeTypes) {
|
|
25
|
-
return (pChange) => pInterestingChangeTypes.includes(pChange.changeType);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function hash(pString) {
|
|
29
|
-
return createHash("sha1").update(pString).digest("base64");
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @param {import("watskeburt").IChange} pChange
|
|
34
|
-
*/
|
|
35
|
-
function addChecksum(pChange) {
|
|
36
|
-
const lReturnValue = {
|
|
37
|
-
...pChange,
|
|
38
|
-
checksum: hash(readFileSync(pChange.name, "utf-8")),
|
|
39
|
-
};
|
|
40
|
-
return lReturnValue;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* @param {string[]} pExtensions
|
|
46
|
-
* @param {import("watskeburt").changeTypeType[]} pInterestingChangeTypes
|
|
47
|
-
* @returns {import("../../types/cruise-result").IRevisionData}
|
|
48
|
-
*/
|
|
49
|
-
function getRevisionData(
|
|
50
|
-
pExtensions,
|
|
51
|
-
pArguments,
|
|
52
|
-
pRulesFile,
|
|
53
|
-
// skipping: "pairing broken", "unmodified", "unmerged", "type changed"
|
|
54
|
-
pInterestingChangeTypes = [
|
|
55
|
-
"added",
|
|
56
|
-
"copied",
|
|
57
|
-
"deleted",
|
|
58
|
-
"ignored",
|
|
59
|
-
"modified",
|
|
60
|
-
"renamed",
|
|
61
|
-
"unmerged",
|
|
62
|
-
"untracked",
|
|
63
|
-
]
|
|
64
|
-
) {
|
|
65
|
-
try {
|
|
66
|
-
const lSHA = getSHA();
|
|
67
|
-
return {
|
|
68
|
-
SHA1: lSHA,
|
|
69
|
-
changes: list(lSHA)
|
|
70
|
-
.filter(hasInterestingExtension(pExtensions))
|
|
71
|
-
.filter(isInterestingChangeType(pInterestingChangeTypes))
|
|
72
|
-
.map(addChecksum),
|
|
73
|
-
args: pArguments,
|
|
74
|
-
rulesFile: pRulesFile,
|
|
75
|
-
};
|
|
76
|
-
} catch (pError) {
|
|
77
|
-
return {};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
*
|
|
82
|
-
* @param {import("watskeburt").IChange[]} pExistingChanges
|
|
83
|
-
* @param {import("watskeburt").IChange[]} pNewChanges
|
|
84
|
-
*/
|
|
85
|
-
function changesAreSame(pExistingChanges, pNewChanges) {
|
|
86
|
-
try {
|
|
87
|
-
deepEqual(pExistingChanges, pNewChanges);
|
|
88
|
-
return true;
|
|
89
|
-
} catch (pError) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
*
|
|
95
|
-
* @param {import("../../types/cruise-result").IRevisionData} pExistingRevisionData
|
|
96
|
-
* @param {import("../../types/cruise-result").IRevisionData} pNewRevisionData
|
|
97
|
-
* @returns {boolean}
|
|
98
|
-
*/
|
|
99
|
-
function revisionDataEqual(pExistingRevisionData, pNewRevisionData) {
|
|
100
|
-
return (
|
|
101
|
-
pExistingRevisionData &&
|
|
102
|
-
pNewRevisionData &&
|
|
103
|
-
pExistingRevisionData.SHA1 === pNewRevisionData.SHA1 &&
|
|
104
|
-
pExistingRevisionData.rulesFile === pNewRevisionData.rulesFile &&
|
|
105
|
-
pNewRevisionData.args.every((pArgument) =>
|
|
106
|
-
pExistingRevisionData.args.includes(pArgument)
|
|
107
|
-
) &&
|
|
108
|
-
changesAreSame(pExistingRevisionData.changes, pNewRevisionData.changes)
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function _readCache(pCacheFolder) {
|
|
113
|
-
try {
|
|
114
|
-
return JSON.parse(readFileSync(join(pCacheFolder, "cache.json"), "utf-8"));
|
|
115
|
-
} catch (pError) {
|
|
116
|
-
return { modules: [], summary: {} };
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const readCache = memoize(_readCache);
|
|
121
|
-
|
|
122
|
-
function canServeFromCache(pCacheFolder, pRevisionData) {
|
|
123
|
-
const lCachedResults = readCache(pCacheFolder);
|
|
124
|
-
return revisionDataEqual(lCachedResults.revisionData, pRevisionData);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
function writeCache(pCacheFolder, pCruiseResult) {
|
|
128
|
-
mkdirSync(pCacheFolder, { recursive: true });
|
|
129
|
-
writeFileSync(
|
|
130
|
-
join(pCacheFolder, "cache.json"),
|
|
131
|
-
JSON.stringify(pCruiseResult),
|
|
132
|
-
"utf-8"
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
module.exports = {
|
|
137
|
-
getRevisionData,
|
|
138
|
-
revisionDataEqual,
|
|
139
|
-
canServeFromCache,
|
|
140
|
-
readCache,
|
|
141
|
-
writeCache,
|
|
142
|
-
};
|