dependency-cruiser 12.3.0 → 12.5.0-beta-1
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/LICENSE +1 -1
- package/package.json +14 -13
- package/src/cache/cache.js +75 -44
- package/src/cache/content-strategy.js +265 -0
- package/src/cache/{revision-data.js → metadata-strategy.js} +34 -34
- package/src/cache/options-compatible.js +22 -10
- package/src/cache/utl.js +18 -10
- package/src/cli/index.js +7 -3
- package/src/cli/init-config/find-extensions.js +8 -70
- package/src/cli/init-config/normalize-init-options.js +4 -1
- package/src/cli/listeners/{cli-feedback/index.js → cli-feedback.js} +1 -1
- package/src/cli/normalize-cli-options.js +0 -15
- package/src/main/index.js +14 -21
- package/src/main/options/normalize.js +33 -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/src/utl/find-all-files.js +79 -0
- package/types/cache-options.d.ts +22 -0
- package/types/cruise-result.d.ts +1 -1
- package/types/options.d.ts +23 -10
- package/types/strict-options.d.ts +2 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { isDeepStrictEqual } = require("util");
|
|
2
2
|
|
|
3
3
|
/*
|
|
4
4
|
# command line options
|
|
@@ -6,7 +6,7 @@ const { objectsAreEqual } = require("./utl");
|
|
|
6
6
|
-i, --info
|
|
7
7
|
-V, --version
|
|
8
8
|
-h, --help
|
|
9
|
-
-T, --output-type <type> unless counting implicit shizzle like
|
|
9
|
+
-T, --output-type <type> unless counting implicit shizzle like dependents, metrics calculation
|
|
10
10
|
-f, --output-to <file>
|
|
11
11
|
-p, --progress [type]
|
|
12
12
|
-P, --prefix <prefix>
|
|
@@ -55,11 +55,11 @@ const { objectsAreEqual } = require("./utl");
|
|
|
55
55
|
|
|
56
56
|
function includeOnlyIsCompatible(pExistingFilter, pNewFilter) {
|
|
57
57
|
return (
|
|
58
|
-
!pExistingFilter ||
|
|
58
|
+
!pExistingFilter || isDeepStrictEqual({ path: pExistingFilter }, pNewFilter)
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
|
-
function optionIsCompatible(
|
|
62
|
-
return !
|
|
61
|
+
function optionIsCompatible(pExistingOption, pNewOption) {
|
|
62
|
+
return !pExistingOption || isDeepStrictEqual(pExistingOption, pNewOption);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
function limitIsCompatible(pExistingLimit, pNewLimit) {
|
|
@@ -70,6 +70,16 @@ function metricsIsCompatible(pExistingMetrics, pNewMetrics) {
|
|
|
70
70
|
return pExistingMetrics || pExistingMetrics === pNewMetrics;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
function cacheOptionIsCompatible(pExistingCacheOption, pNewCacheOption) {
|
|
74
|
+
if (!pExistingCacheOption || !pNewCacheOption) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return (
|
|
78
|
+
pExistingCacheOption === pNewCacheOption ||
|
|
79
|
+
isDeepStrictEqual(pExistingCacheOption, pNewCacheOption)
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
73
83
|
/**
|
|
74
84
|
*
|
|
75
85
|
* @param {import("../../types/strict-options").IStrictCruiseOptions} pOldOptions
|
|
@@ -106,14 +116,16 @@ function optionsAreCompatible(pOldOptions, pNewOptions) {
|
|
|
106
116
|
optionIsCompatible(
|
|
107
117
|
pOldOptions.exoticRequireStrings,
|
|
108
118
|
pNewOptions.exoticRequireStrings
|
|
109
|
-
)
|
|
119
|
+
) &&
|
|
120
|
+
cacheOptionIsCompatible(pOldOptions.cache, pNewOptions.cache)
|
|
110
121
|
);
|
|
111
122
|
}
|
|
112
123
|
|
|
113
124
|
module.exports = {
|
|
114
125
|
optionsAreCompatible,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
126
|
+
optionIsCompatible,
|
|
127
|
+
limitIsCompatible,
|
|
128
|
+
metricsIsCompatible,
|
|
129
|
+
includeOnlyIsCompatible,
|
|
130
|
+
cacheOptionIsCompatible,
|
|
119
131
|
};
|
package/src/cache/utl.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { createHash } = require("crypto");
|
|
2
|
+
const { readFileSync } = require("fs");
|
|
3
|
+
const memoize = require("lodash/memoize");
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
6
|
-
* @param {any} pRightObject
|
|
7
|
-
* @returns {boolean}
|
|
6
|
+
* @param {string} pString
|
|
7
|
+
* @returns {string}
|
|
8
8
|
*/
|
|
9
|
-
function
|
|
9
|
+
function hash(pString) {
|
|
10
|
+
return createHash("sha1").update(pString).digest("base64");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @param {import("fs").PathOrFileDescriptor} pFileName
|
|
15
|
+
* @returns {string}
|
|
16
|
+
*/
|
|
17
|
+
function _getFileHash(pFileName) {
|
|
10
18
|
try {
|
|
11
|
-
|
|
12
|
-
return true;
|
|
19
|
+
return hash(readFileSync(pFileName, "utf8"));
|
|
13
20
|
} catch (pError) {
|
|
14
|
-
return
|
|
21
|
+
return "file not found";
|
|
15
22
|
}
|
|
16
23
|
}
|
|
17
|
-
|
|
24
|
+
|
|
25
|
+
module.exports = { getFileHash: memoize(_getFileHash) };
|
package/src/cli/index.js
CHANGED
|
@@ -12,6 +12,7 @@ const extractTSConfig = require("../config-utl/extract-ts-config");
|
|
|
12
12
|
const extractBabelConfig = require("../config-utl/extract-babel-config");
|
|
13
13
|
const extractWebpackResolveConfig = require("../config-utl/extract-webpack-resolve-config");
|
|
14
14
|
const extractKnownViolations = require("../config-utl/extract-known-violations");
|
|
15
|
+
const { INFO } = require("../utl/bus-log-levels");
|
|
15
16
|
const validateFileExistence = require("./utl/validate-file-existence");
|
|
16
17
|
const normalizeCliOptions = require("./normalize-cli-options");
|
|
17
18
|
const io = require("./utl/io");
|
|
@@ -83,9 +84,12 @@ function setUpListener(pCruiseOptions) {
|
|
|
83
84
|
pCruiseOptions?.ruleSet?.options?.progress?.type;
|
|
84
85
|
// eslint-disable-next-line security/detect-object-injection
|
|
85
86
|
const lListenerFunction = lString2Listener?.[lListenerID];
|
|
86
|
-
/* c8 ignore next
|
|
87
|
+
/* c8 ignore next 6 */
|
|
87
88
|
if (Boolean(lListenerFunction)) {
|
|
88
|
-
lListenerFunction(
|
|
89
|
+
lListenerFunction(
|
|
90
|
+
bus,
|
|
91
|
+
pCruiseOptions?.ruleSet?.options?.progress?.maximumLevel ?? INFO
|
|
92
|
+
);
|
|
89
93
|
}
|
|
90
94
|
}
|
|
91
95
|
|
|
@@ -116,7 +120,7 @@ function runCruise(pFileDirectoryArray, pCruiseOptions) {
|
|
|
116
120
|
}
|
|
117
121
|
);
|
|
118
122
|
|
|
119
|
-
bus.emit("progress", "cli: writing results");
|
|
123
|
+
bus.emit("progress", "cli: writing results", { complete: 1 });
|
|
120
124
|
bus.emit("write-start");
|
|
121
125
|
io.write(lCruiseOptions.outputTo, lReportingResult.output);
|
|
122
126
|
|
|
@@ -1,67 +1,8 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
/* eslint-disable security/detect-object-injection */
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const pathToPosix = require("../../utl/path-to-posix");
|
|
6
3
|
const getExtension = require("../../utl/get-extension.js");
|
|
7
4
|
const meta = require("../../extract/transpile/meta");
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @param {string[]} pIgnorablePathElements
|
|
11
|
-
* @returns {(string) => boolean}
|
|
12
|
-
*/
|
|
13
|
-
function notIgnorable(pIgnorablePathElements) {
|
|
14
|
-
return (pPath) => {
|
|
15
|
-
return !pIgnorablePathElements.includes(pPath);
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @param {string} pFullPathToFile
|
|
21
|
-
* @param {string} pBaseDirectory
|
|
22
|
-
* @returns {boolean}
|
|
23
|
-
*/
|
|
24
|
-
function fileIsDirectory(pFullPathToFile, pBaseDirectory) {
|
|
25
|
-
try {
|
|
26
|
-
const lStat = fs.statSync(path.join(pBaseDirectory, pFullPathToFile));
|
|
27
|
-
return lStat.isDirectory();
|
|
28
|
-
} catch (pError) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @param {string} pDirectoryName
|
|
35
|
-
* @param {{baseDir: string; ignorablePathElements: string[]}} pOptions
|
|
36
|
-
* @returns {string[]}
|
|
37
|
-
*/
|
|
38
|
-
function listAllModules(pDirectoryName, { baseDir, ignorablePathElements }) {
|
|
39
|
-
return fs
|
|
40
|
-
.readdirSync(path.join(baseDir, pDirectoryName))
|
|
41
|
-
.filter(notIgnorable(ignorablePathElements))
|
|
42
|
-
.map((pFileName) => path.join(pDirectoryName, pFileName))
|
|
43
|
-
.map((pFullPathToFile) => ({
|
|
44
|
-
fullPathToFile: pFullPathToFile,
|
|
45
|
-
isDirectory: fileIsDirectory(pFullPathToFile, baseDir),
|
|
46
|
-
}))
|
|
47
|
-
.reduce(
|
|
48
|
-
/**
|
|
49
|
-
* @param {string[]} pSum
|
|
50
|
-
* @param {{fullPathToFile: string; isDirectory: boolean}} pCurrentValue
|
|
51
|
-
* @returns {string[]}
|
|
52
|
-
*/
|
|
53
|
-
(pSum, { fullPathToFile, isDirectory }) => {
|
|
54
|
-
if (isDirectory) {
|
|
55
|
-
return pSum.concat(
|
|
56
|
-
listAllModules(fullPathToFile, { baseDir, ignorablePathElements })
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
return pSum.concat(fullPathToFile);
|
|
60
|
-
},
|
|
61
|
-
[]
|
|
62
|
-
)
|
|
63
|
-
.map((pFullPathToFile) => pathToPosix(pFullPathToFile));
|
|
64
|
-
}
|
|
5
|
+
const findAllFiles = require("../../utl/find-all-files");
|
|
65
6
|
|
|
66
7
|
/**
|
|
67
8
|
* @param {Record<string,number>} pAll
|
|
@@ -84,27 +25,24 @@ function compareByCount(pCountsObject) {
|
|
|
84
25
|
|
|
85
26
|
/**
|
|
86
27
|
* @param {string[]} pDirectories
|
|
87
|
-
* @param {{baseDir?: string;
|
|
28
|
+
* @param {{baseDir?: string; ignoreFileContents?: string}=} pOptions
|
|
88
29
|
* @returns {string[]}
|
|
89
30
|
*/
|
|
90
31
|
module.exports = function findExtensions(pDirectories, pOptions) {
|
|
91
32
|
const lOptions = {
|
|
92
33
|
baseDir: process.cwd(),
|
|
93
|
-
ignorablePathElements: [
|
|
94
|
-
".git",
|
|
95
|
-
".husky",
|
|
96
|
-
".vscode",
|
|
97
|
-
"coverage",
|
|
98
|
-
"node_nodules",
|
|
99
|
-
"nyc",
|
|
100
|
-
],
|
|
101
34
|
scannableExtensions: meta.scannableExtensions,
|
|
102
35
|
...pOptions,
|
|
103
36
|
};
|
|
104
37
|
|
|
105
38
|
const lExtensionsWithCounts = pDirectories
|
|
106
39
|
.flatMap((pDirectory) =>
|
|
107
|
-
|
|
40
|
+
findAllFiles(pDirectory, {
|
|
41
|
+
baseDir: lOptions.baseDir,
|
|
42
|
+
ignoreFileContents: lOptions?.ignoreFileContents,
|
|
43
|
+
})
|
|
44
|
+
.map(getExtension)
|
|
45
|
+
.filter(Boolean)
|
|
108
46
|
)
|
|
109
47
|
.reduce(reduceToCounts, {});
|
|
110
48
|
|
|
@@ -29,8 +29,11 @@ function populate(pInitOptions) {
|
|
|
29
29
|
),
|
|
30
30
|
};
|
|
31
31
|
if (lReturnValue.specifyResolutionExtensions) {
|
|
32
|
+
const lFoldersToScan = lReturnValue.sourceLocation.concat(
|
|
33
|
+
lReturnValue.testLocation
|
|
34
|
+
);
|
|
32
35
|
lReturnValue.resolutionExtensions = findExtensions(
|
|
33
|
-
|
|
36
|
+
lFoldersToScan.length > 0 ? lFoldersToScan : ["."]
|
|
34
37
|
);
|
|
35
38
|
}
|
|
36
39
|
return lReturnValue;
|
|
@@ -144,19 +144,6 @@ function normalizeProgress(pCliOptions) {
|
|
|
144
144
|
return lProgress ? { progress: lProgress } : {};
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
function normalizeCacheFolderName(pCliOptions) {
|
|
148
|
-
const lCache = get(pCliOptions, "cache", false);
|
|
149
|
-
let lReturnValue = clone(pCliOptions);
|
|
150
|
-
|
|
151
|
-
if (lCache === true) {
|
|
152
|
-
lReturnValue = {
|
|
153
|
-
...lReturnValue,
|
|
154
|
-
cache: defaults.CACHE_FOLDER,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
return lReturnValue;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
147
|
/**
|
|
161
148
|
* returns the pOptionsAsPassedFromCommander, so that the returned value contains a
|
|
162
149
|
* valid value for each possible option
|
|
@@ -170,7 +157,6 @@ module.exports = function normalizeOptions(pOptionsAsPassedFromCommander) {
|
|
|
170
157
|
outputTo: defaults.OUTPUT_TO,
|
|
171
158
|
outputType: defaults.OUTPUT_TYPE,
|
|
172
159
|
...pOptionsAsPassedFromCommander,
|
|
173
|
-
// ...ejectNonCLIOptions(pOptionsAsPassedFromCommander, pKnownCliOptions),
|
|
174
160
|
};
|
|
175
161
|
|
|
176
162
|
if (has(lOptions, "moduleSystems")) {
|
|
@@ -186,7 +172,6 @@ module.exports = function normalizeOptions(pOptionsAsPassedFromCommander) {
|
|
|
186
172
|
lOptions = { ...lOptions, ...normalizeValidationOption(lOptions) };
|
|
187
173
|
lOptions = { ...lOptions, ...normalizeProgress(lOptions) };
|
|
188
174
|
lOptions = { ...lOptions, ...normalizeKnownViolationsOption(lOptions) };
|
|
189
|
-
lOptions = normalizeCacheFolderName(lOptions);
|
|
190
175
|
lOptions = normalizeConfigFileName(
|
|
191
176
|
lOptions,
|
|
192
177
|
"webpackConfig",
|
package/src/main/index.js
CHANGED
|
@@ -6,8 +6,7 @@ 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
|
-
const { getRevisionData } = require("../cache/revision-data");
|
|
9
|
+
const Cache = require("../cache/cache");
|
|
11
10
|
const normalizeFilesAndDirectories = require("./files-and-dirs/normalize");
|
|
12
11
|
const validateRuleSet = require("./rule-set/validate");
|
|
13
12
|
const normalizeRuleSet = require("./rule-set/normalize");
|
|
@@ -41,42 +40,36 @@ function format(pResult, pFormatOptions = {}) {
|
|
|
41
40
|
return reportWrap(pResult, lFormatOptions);
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
const TOTAL_STEPS =
|
|
43
|
+
const TOTAL_STEPS = 9;
|
|
45
44
|
|
|
46
45
|
function c(pComplete, pTotal = TOTAL_STEPS) {
|
|
47
46
|
return { complete: pComplete / pTotal };
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
/** @type {import("../..").futureCruise} */
|
|
51
|
-
// eslint-disable-next-line max-lines-per-function,
|
|
50
|
+
// eslint-disable-next-line max-lines-per-function, max-statements
|
|
52
51
|
function futureCruise(
|
|
53
52
|
pFileAndDirectoryArray,
|
|
54
53
|
pCruiseOptions,
|
|
55
54
|
pResolveOptions,
|
|
56
55
|
pTranspileOptions
|
|
57
56
|
) {
|
|
58
|
-
/** @type {import("../../types/cruise-result").IRevisionData|null} */
|
|
59
|
-
let lRevisionData = null;
|
|
60
|
-
|
|
61
57
|
bus.emit("progress", "parsing options", c(1));
|
|
62
58
|
/** @type {import("../../types/strict-options").IStrictCruiseOptions} */
|
|
63
59
|
let lCruiseOptions = normalizeCruiseOptions(
|
|
64
60
|
validateCruiseOptions(pCruiseOptions),
|
|
65
61
|
pFileAndDirectoryArray
|
|
66
62
|
);
|
|
63
|
+
let lCache = null;
|
|
67
64
|
|
|
68
65
|
if (lCruiseOptions.cache) {
|
|
69
66
|
bus.emit("progress", "cache: checking freshness", c(2));
|
|
70
|
-
lRevisionData = getRevisionData(
|
|
71
|
-
new Set(
|
|
72
|
-
meta.scannableExtensions.concat(lCruiseOptions.extraExtensionsToScan)
|
|
73
|
-
)
|
|
74
|
-
);
|
|
75
|
-
if (lRevisionData && canServeFromCache(lCruiseOptions, lRevisionData)) {
|
|
76
|
-
bus.emit("progress", "cache: retrieving from cache", c(3));
|
|
77
|
-
const lCachedResults = readCache(lCruiseOptions.cache);
|
|
78
67
|
|
|
79
|
-
|
|
68
|
+
lCache = new Cache(lCruiseOptions?.cache.strategy);
|
|
69
|
+
const lCachedResults = lCache.read(lCruiseOptions.cache.folder);
|
|
70
|
+
|
|
71
|
+
if (lCache.canServeFromCache(lCruiseOptions, lCachedResults)) {
|
|
72
|
+
bus.emit("progress", "cache: reporting from cache", c(8));
|
|
80
73
|
return reportWrap(lCachedResults, lCruiseOptions);
|
|
81
74
|
}
|
|
82
75
|
}
|
|
@@ -114,17 +107,17 @@ function futureCruise(
|
|
|
114
107
|
lNormalizedFileAndDirectoryArray
|
|
115
108
|
);
|
|
116
109
|
|
|
117
|
-
if (lCruiseOptions.cache
|
|
118
|
-
|
|
119
|
-
|
|
110
|
+
if (lCruiseOptions.cache) {
|
|
111
|
+
bus.emit("progress", "cache: saving", c(7));
|
|
112
|
+
lCache.write(lCruiseOptions.cache.folder, lCruiseResult);
|
|
120
113
|
}
|
|
121
114
|
|
|
122
|
-
bus.emit("progress", "reporting", c(
|
|
115
|
+
bus.emit("progress", "reporting", c(8));
|
|
123
116
|
return reportWrap(lCruiseResult, lCruiseOptions);
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
// see [api.md](../../doc/api.md) and/ or the
|
|
127
|
-
// [type definition](
|
|
120
|
+
// [type definition](../../types/dependency-cruiser.d.ts) for details
|
|
128
121
|
/** @type {import("../..").cruise} */
|
|
129
122
|
function cruise(pFileAndDirectoryArray, pOptions, pResolveOptions, pTSConfig) {
|
|
130
123
|
return futureCruise(pFileAndDirectoryArray, pOptions, pResolveOptions, {
|
|
@@ -5,6 +5,9 @@ const has = require("lodash/has");
|
|
|
5
5
|
const { normalizeREProperties } = require("../utl/normalize-re-properties");
|
|
6
6
|
const defaults = require("./defaults.js");
|
|
7
7
|
|
|
8
|
+
const DEFAULT_CACHE_FOLDER = "node_modules/.cache/dependency-cruiser";
|
|
9
|
+
const DEFAULT_CACHE_STRATEGY = "metadata";
|
|
10
|
+
|
|
8
11
|
function uniq(pArray) {
|
|
9
12
|
return [...new Set(pArray)];
|
|
10
13
|
}
|
|
@@ -139,6 +142,33 @@ function shouldCalculateMetrics(pOptions) {
|
|
|
139
142
|
);
|
|
140
143
|
}
|
|
141
144
|
|
|
145
|
+
/**
|
|
146
|
+
* @param {string|boolean|Partial<import("../../../types/cache-options").ICacheOptions>} pCacheOptions
|
|
147
|
+
* @returns {import("../../../types/cache-options").ICacheOptions}
|
|
148
|
+
*/
|
|
149
|
+
function normalizeCacheOptions(pCacheOptions) {
|
|
150
|
+
let lNormalizedCacheOptions = pCacheOptions;
|
|
151
|
+
|
|
152
|
+
if (typeof pCacheOptions === "string") {
|
|
153
|
+
lNormalizedCacheOptions = {
|
|
154
|
+
folder: pCacheOptions,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (pCacheOptions === true) {
|
|
159
|
+
lNormalizedCacheOptions = {};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// TODO: put these values in a central spot as constants
|
|
163
|
+
// (folder is already in src/cli/defaults.js but depending on the UI (cli)
|
|
164
|
+
// is not OK. We might b.t.w. wanna deduplicate the defaulting)
|
|
165
|
+
return {
|
|
166
|
+
folder: DEFAULT_CACHE_FOLDER,
|
|
167
|
+
strategy: DEFAULT_CACHE_STRATEGY,
|
|
168
|
+
...lNormalizedCacheOptions,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
142
172
|
/**
|
|
143
173
|
*
|
|
144
174
|
* @param {import('../../../types/options').ICruiseOptions} pOptions
|
|
@@ -186,6 +216,9 @@ function normalizeCruiseOptions(pOptions, pFileAndDirectoryArray = []) {
|
|
|
186
216
|
// if (has(pOptions, "ruleSet")) {
|
|
187
217
|
// lReturnValue.ruleSet = normalizeRuleSet(pOptions.ruleSet);
|
|
188
218
|
// }
|
|
219
|
+
if (lReturnValue.cache) {
|
|
220
|
+
lReturnValue.cache = normalizeCacheOptions(lReturnValue.cache);
|
|
221
|
+
}
|
|
189
222
|
|
|
190
223
|
return normalizeFocusDepth(lReturnValue);
|
|
191
224
|
}
|
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"}]},"reaches":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundReachesType"}]},"highlight":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundHighlightType"}]},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1,"maximum":9}]},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"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","enum":[false]},{"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"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"type":"string"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"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"}]},"highlight":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundHighlightType"}]},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1,"maximum":9}]},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"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"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"},{"$ref":"#/definitions/CacheOptionsType"}]}}},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"type":"string"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|