dependency-cruiser 11.13.0 → 11.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/depcruise-baseline.js +1 -0
- package/bin/dependency-cruise.js +5 -0
- package/package.json +10 -8
- package/src/cache/cache.js +56 -0
- package/src/cache/options-compatible.js +118 -0
- package/src/cache/revision-data.js +120 -0
- package/src/cache/utl.js +16 -0
- package/src/cli/defaults.js +1 -0
- package/src/cli/normalize-cli-options.js +15 -1
- package/src/enrich/summarize/summarize-options.js +4 -4
- package/src/extract/transpile/meta.d.ts +2 -2
- package/src/main/index.js +35 -5
- package/src/main/options/normalize.js +4 -1
- 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/validate/index.d.ts +6 -6
- package/types/cruise-result.d.ts +21 -2
- package/types/dependency-cruiser.d.ts +7 -7
- package/types/options.d.ts +5 -0
- package/types/reporter-options.d.ts +7 -1
package/bin/dependency-cruise.js
CHANGED
|
@@ -97,6 +97,11 @@ try {
|
|
|
97
97
|
"-P, --prefix <prefix>",
|
|
98
98
|
"prefix to use for links in the dot and err-html reporters"
|
|
99
99
|
)
|
|
100
|
+
.option(
|
|
101
|
+
"-C, --cache [cache-location]",
|
|
102
|
+
"(experimental) use a cache to speed up execution. " +
|
|
103
|
+
"Location defaults to node_modules/.cache/dependency-cruiser"
|
|
104
|
+
)
|
|
100
105
|
.option("--preserve-symlinks", `leave symlinks unchanged (off by default)`)
|
|
101
106
|
.option("-v, --validate [file]", `alias for --config`)
|
|
102
107
|
.option(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dependency-cruiser",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.14.0",
|
|
4
4
|
"description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"static analysis",
|
|
@@ -89,10 +89,11 @@
|
|
|
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",
|
|
92
93
|
"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",
|
|
93
94
|
"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",
|
|
94
|
-
"depcruise:focus": "node ./bin/dependency-cruise.js src bin test configs types tools --progress --config --output-type text --focus",
|
|
95
|
-
"depcruise:reaches": "node ./bin/dependency-cruise.js src bin test configs types tools --progress --config --output-type text --reaches",
|
|
95
|
+
"depcruise:focus": "node ./bin/dependency-cruise.js src bin test configs types tools --progress --config configs/.dependency-cruiser-show-metrics-config.json --output-type text --focus",
|
|
96
|
+
"depcruise:reaches": "node ./bin/dependency-cruise.js src bin test configs types tools --progress --config configs/.dependency-cruiser-show-metrics-config.json --output-type text --reaches",
|
|
96
97
|
"lint": "npm-run-all --parallel --aggregate-output lint:eslint lint:prettier lint:types",
|
|
97
98
|
"lint:eslint": "eslint bin/dependency-cruise.js src test configs tools/**/*.mjs --cache --cache-location node_modules/.cache/eslint/",
|
|
98
99
|
"lint:eslint:fix": "eslint --fix bin src test configs tools/**/*.mjs --cache --cache-location node_modules/.cache/eslint/",
|
|
@@ -158,18 +159,19 @@
|
|
|
158
159
|
"semver": "^7.3.7",
|
|
159
160
|
"semver-try-require": "^5.0.2",
|
|
160
161
|
"teamcity-service-messages": "0.1.14",
|
|
161
|
-
"tsconfig-paths-webpack-plugin": "
|
|
162
|
+
"tsconfig-paths-webpack-plugin": "4.0.0",
|
|
163
|
+
"watskeburt": "0.6.0",
|
|
162
164
|
"wrap-ansi": "^7.0.0"
|
|
163
165
|
},
|
|
164
166
|
"devDependencies": {
|
|
165
167
|
"@babel/core": "7.18.9",
|
|
166
168
|
"@babel/plugin-transform-modules-commonjs": "7.18.6",
|
|
167
169
|
"@babel/preset-typescript": "7.18.6",
|
|
168
|
-
"@swc/core": "1.2.
|
|
170
|
+
"@swc/core": "1.2.220",
|
|
169
171
|
"@types/lodash": "4.14.182",
|
|
170
|
-
"@types/node": "18.
|
|
171
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
172
|
-
"@typescript-eslint/parser": "5.
|
|
172
|
+
"@types/node": "18.6.2",
|
|
173
|
+
"@typescript-eslint/eslint-plugin": "5.31.0",
|
|
174
|
+
"@typescript-eslint/parser": "5.31.0",
|
|
173
175
|
"@vue/compiler-sfc": "3.2.37",
|
|
174
176
|
"c8": "7.12.0",
|
|
175
177
|
"chai": "4.3.6",
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const { readFileSync, mkdirSync, writeFileSync } = require("fs");
|
|
2
|
+
const { join } = require("path");
|
|
3
|
+
const { optionsAreCompatible } = require("./options-compatible");
|
|
4
|
+
const { revisionDataEqual } = require("./revision-data");
|
|
5
|
+
|
|
6
|
+
const CACHE_FILE_NAME = "cache.json";
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param {string} pCacheFolder
|
|
10
|
+
* @param {import("../../types/cruise-result").ICruiseResult} pCruiseResult
|
|
11
|
+
*/
|
|
12
|
+
function writeCache(pCacheFolder, pCruiseResult) {
|
|
13
|
+
mkdirSync(pCacheFolder, { recursive: true });
|
|
14
|
+
writeFileSync(
|
|
15
|
+
join(pCacheFolder, CACHE_FILE_NAME),
|
|
16
|
+
JSON.stringify(pCruiseResult),
|
|
17
|
+
"utf-8"
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* @param {string} pCacheFolder
|
|
24
|
+
* @returns {import("../../types/cruise-result").ICruiseResult}
|
|
25
|
+
*/
|
|
26
|
+
function readCache(pCacheFolder) {
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(
|
|
29
|
+
readFileSync(join(pCacheFolder, CACHE_FILE_NAME), "utf-8")
|
|
30
|
+
);
|
|
31
|
+
} catch (pError) {
|
|
32
|
+
return { modules: [], summary: {} };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param {import("../../types/strict-options").IStrictCruiseOptions} pOptions
|
|
39
|
+
* @param {import("../../types/cruise-result").IRevisionData} pRevisionData
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
function canServeFromCache(pOptions, pRevisionData) {
|
|
43
|
+
/** @type {import("../../types/cruise-result").ICruiseResult} */
|
|
44
|
+
const lCachedResults = readCache(pOptions.cache);
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
revisionDataEqual(lCachedResults.revisionData, pRevisionData) &&
|
|
48
|
+
optionsAreCompatible(lCachedResults.summary.optionsUsed, pOptions)
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
module.exports = {
|
|
53
|
+
writeCache,
|
|
54
|
+
readCache,
|
|
55
|
+
canServeFromCache,
|
|
56
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
const { objectsAreEqual } = require("./utl");
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
# command line options
|
|
5
|
+
## No influence on cache
|
|
6
|
+
-i, --info
|
|
7
|
+
-V, --version
|
|
8
|
+
-h, --help
|
|
9
|
+
-T, --output-type <type> unless counting implicit shizzle like dependendents, metrics calculation
|
|
10
|
+
-f, --output-to <file>
|
|
11
|
+
-p, --progress [type]
|
|
12
|
+
-P, --prefix <prefix>
|
|
13
|
+
-C, --cache [cache-location]
|
|
14
|
+
--init [oneshot]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## Influence on cache
|
|
18
|
+
### 100% invalidate when different
|
|
19
|
+
-c, --config [file]
|
|
20
|
+
--ignore-known [file]
|
|
21
|
+
--ts-config [file]
|
|
22
|
+
--webpack-config [file]
|
|
23
|
+
--ts-pre-compilation-deps
|
|
24
|
+
-v, --validate [file]
|
|
25
|
+
--preserve-symlinks
|
|
26
|
+
|
|
27
|
+
### Invalidates when in cache, not in command
|
|
28
|
+
(or more precise: when filters in cache yield a subset of command)
|
|
29
|
+
-I, --include-only <regex>
|
|
30
|
+
-F, --focus <regex>
|
|
31
|
+
-R, --reaches <regex>
|
|
32
|
+
-x, --exclude <regex>
|
|
33
|
+
-X, --do-not-follow <regex>
|
|
34
|
+
-S, --collapse <regex>
|
|
35
|
+
-d, --max-depth <n> (more precise: when cache.max-depth < command.max-depth OR cache.max-depth === 0)
|
|
36
|
+
-M, --module-systems <items> (more precise: )
|
|
37
|
+
|
|
38
|
+
### Invalidates when not in cache, but in command
|
|
39
|
+
-m, --metrics
|
|
40
|
+
|
|
41
|
+
# options that are not available on the command line
|
|
42
|
+
|
|
43
|
+
## no influence on cache
|
|
44
|
+
- Anything in reporterOptions
|
|
45
|
+
- externalModuleResolutionStrategy (as it's not really used anymore IIRC)
|
|
46
|
+
-
|
|
47
|
+
|
|
48
|
+
## influence on cache
|
|
49
|
+
|
|
50
|
+
- combinedDependencies
|
|
51
|
+
- enhancedResolveOptions
|
|
52
|
+
- exoticRequireStrings
|
|
53
|
+
- knownViolations
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
function includeOnlyIsCompatible(pExistingFilter, pNewFilter) {
|
|
57
|
+
return (
|
|
58
|
+
!pExistingFilter || objectsAreEqual({ path: pExistingFilter }, pNewFilter)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
function optionIsCompatible(pExistingFilter, pNewFilter) {
|
|
62
|
+
return !pExistingFilter || objectsAreEqual(pExistingFilter, pNewFilter);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function limitIsCompatible(pExistingLimit, pNewLimit) {
|
|
66
|
+
return !pExistingLimit || pExistingLimit >= (pNewLimit || pExistingLimit + 1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function metricsIsCompatible(pExistingMetrics, pNewMetrics) {
|
|
70
|
+
return pExistingMetrics || pExistingMetrics === pNewMetrics;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @param {import("../../types/strict-options").IStrictCruiseOptions} pOldOptions
|
|
76
|
+
* @param {import("../../types/strict-options").IStrictCruiseOptions} pNewOptions
|
|
77
|
+
* @returns {boolean}
|
|
78
|
+
*/
|
|
79
|
+
// eslint-disable-next-line complexity
|
|
80
|
+
function optionsAreCompatible(pOldOptions, pNewOptions) {
|
|
81
|
+
return (
|
|
82
|
+
pOldOptions.args === pNewOptions.args &&
|
|
83
|
+
pOldOptions.rulesFile === pNewOptions.rulesFile &&
|
|
84
|
+
pOldOptions.tsPreCompilationDeps === pNewOptions.tsPreCompilationDeps &&
|
|
85
|
+
pOldOptions.preserveSymlinks === pNewOptions.preserveSymlinks &&
|
|
86
|
+
pOldOptions.combinedDependencies === pNewOptions.combinedDependencies &&
|
|
87
|
+
metricsIsCompatible(pOldOptions.metrics, pNewOptions.metrics) &&
|
|
88
|
+
// includeOnly suffers from a backwards compatibility disease
|
|
89
|
+
includeOnlyIsCompatible(pOldOptions.includeOnly, pNewOptions.includeOnly) &&
|
|
90
|
+
optionIsCompatible(pOldOptions.doNotFollow, pNewOptions.doNotFollow) &&
|
|
91
|
+
optionIsCompatible(pOldOptions.moduleSystems, pNewOptions.moduleSystems) &&
|
|
92
|
+
optionIsCompatible(pOldOptions.exclude, pNewOptions.exclude) &&
|
|
93
|
+
optionIsCompatible(pOldOptions.focus, pNewOptions.focus) &&
|
|
94
|
+
optionIsCompatible(pOldOptions.reaches, pNewOptions.reaches) &&
|
|
95
|
+
optionIsCompatible(pOldOptions.collapse, pNewOptions.collapse) &&
|
|
96
|
+
limitIsCompatible(pOldOptions.maxDepth, pNewOptions.maxDepth) &&
|
|
97
|
+
optionIsCompatible(
|
|
98
|
+
pOldOptions.knownViolations,
|
|
99
|
+
pNewOptions.knownViolations
|
|
100
|
+
) &&
|
|
101
|
+
optionIsCompatible(
|
|
102
|
+
pOldOptions.enhancedResolveOptions,
|
|
103
|
+
pNewOptions.enhancedResolveOptions
|
|
104
|
+
) &&
|
|
105
|
+
optionIsCompatible(
|
|
106
|
+
pOldOptions.exoticRequireStrings,
|
|
107
|
+
pNewOptions.exoticRequireStrings
|
|
108
|
+
)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
module.exports = {
|
|
113
|
+
optionsAreCompatible,
|
|
114
|
+
filtersAreCompatible: optionIsCompatible,
|
|
115
|
+
limitsAreCompatible: limitIsCompatible,
|
|
116
|
+
metricsAreCompatible: metricsIsCompatible,
|
|
117
|
+
includeOnlyFiltersAreCompatible: includeOnlyIsCompatible,
|
|
118
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
const { createHash } = require("crypto");
|
|
2
|
+
const { readFileSync } = require("fs");
|
|
3
|
+
const { extname } = require("path");
|
|
4
|
+
const { getSHASync, listSync } = require("watskeburt");
|
|
5
|
+
const { objectsAreEqual } = require("./utl");
|
|
6
|
+
|
|
7
|
+
// skipping: "pairing broken", "unmodified", "unmerged", "type changed"
|
|
8
|
+
const DEFAULT_INTERESTING_CHANGE_TYPES = new Set([
|
|
9
|
+
"added",
|
|
10
|
+
"copied",
|
|
11
|
+
"deleted",
|
|
12
|
+
"ignored",
|
|
13
|
+
"modified",
|
|
14
|
+
"renamed",
|
|
15
|
+
"unmerged",
|
|
16
|
+
"untracked",
|
|
17
|
+
]);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {Set<string>} pExtensions
|
|
22
|
+
* @returns {(pChange: import("watskeburt").IChange) => boolean}
|
|
23
|
+
*/
|
|
24
|
+
function hasInterestingExtension(pExtensions) {
|
|
25
|
+
return (pChange) =>
|
|
26
|
+
pExtensions.has(extname(pChange.name)) ||
|
|
27
|
+
(pChange.oldName && pExtensions.has(extname(pChange.oldName)));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param {Set<import("watskeburt").changeTypeType>} pInterestingChangeTypes
|
|
33
|
+
* @returns {(pChange: import("watskeburt").IChange) => boolean}
|
|
34
|
+
*/
|
|
35
|
+
function isInterestingChangeType(pInterestingChangeTypes) {
|
|
36
|
+
return (pChange) => pInterestingChangeTypes.has(pChange.changeType);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function hash(pString) {
|
|
40
|
+
return createHash("sha1").update(pString).digest("base64");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function getFileHash(pFileName) {
|
|
44
|
+
try {
|
|
45
|
+
return hash(readFileSync(pFileName, "utf-8"));
|
|
46
|
+
} catch (pError) {
|
|
47
|
+
return "file not found";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @param {import("watskeburt").IChange} pChange
|
|
53
|
+
* @param {import("../../types/cruise-result").IRevisionChange}
|
|
54
|
+
*/
|
|
55
|
+
function addChecksum(pChange) {
|
|
56
|
+
return {
|
|
57
|
+
...pChange,
|
|
58
|
+
checksum: getFileHash(pChange.name),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @param {Set<string>} pExtensions
|
|
65
|
+
* @param {Set<import("watskeburt").changeTypeType>} pInterestingChangeTypes
|
|
66
|
+
* @param {Object} pOptions
|
|
67
|
+
* @param {() => string} pOptions.shaRetrievalFn
|
|
68
|
+
* @param {(pString:string) => Array<import("watskeburt").IChange>} pOptions.diffListFn
|
|
69
|
+
* @param {(import("watskeburt").IChange) => import("../../types/cruise-result").IRevisionChange} pOptions.checkSumFn
|
|
70
|
+
* @returns {import("../../types/cruise-result").IRevisionData}
|
|
71
|
+
*/
|
|
72
|
+
function getRevisionData(
|
|
73
|
+
pExtensions,
|
|
74
|
+
pInterestingChangeTypes = DEFAULT_INTERESTING_CHANGE_TYPES,
|
|
75
|
+
pOptions
|
|
76
|
+
) {
|
|
77
|
+
const lOptions = {
|
|
78
|
+
shaRetrievalFn: getSHASync,
|
|
79
|
+
diffListFn: listSync,
|
|
80
|
+
checkSumFn: addChecksum,
|
|
81
|
+
...pOptions,
|
|
82
|
+
};
|
|
83
|
+
try {
|
|
84
|
+
const lSHA = lOptions.shaRetrievalFn();
|
|
85
|
+
return {
|
|
86
|
+
SHA1: lSHA,
|
|
87
|
+
changes: lOptions
|
|
88
|
+
.diffListFn(lSHA)
|
|
89
|
+
.filter(hasInterestingExtension(pExtensions))
|
|
90
|
+
.filter(isInterestingChangeType(pInterestingChangeTypes))
|
|
91
|
+
.map(lOptions.checkSumFn),
|
|
92
|
+
};
|
|
93
|
+
} catch (pError) {
|
|
94
|
+
throw new Error(
|
|
95
|
+
"The --cache option works in concert with git - and it seems either the " +
|
|
96
|
+
"current folder isn't version managed or git isn't installed. Error:" +
|
|
97
|
+
`\n\n ${pError}\n`
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
*
|
|
104
|
+
* @param {import("../../types/cruise-result").IRevisionData} pExistingRevisionData
|
|
105
|
+
* @param {import("../../types/cruise-result").IRevisionData} pNewRevisionData
|
|
106
|
+
* @returns {boolean}
|
|
107
|
+
*/
|
|
108
|
+
function revisionDataEqual(pExistingRevisionData, pNewRevisionData) {
|
|
109
|
+
return (
|
|
110
|
+
Boolean(pExistingRevisionData) &&
|
|
111
|
+
Boolean(pNewRevisionData) &&
|
|
112
|
+
pExistingRevisionData.SHA1 === pNewRevisionData.SHA1 &&
|
|
113
|
+
objectsAreEqual(pExistingRevisionData.changes, pNewRevisionData.changes)
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
module.exports = {
|
|
118
|
+
getRevisionData,
|
|
119
|
+
revisionDataEqual,
|
|
120
|
+
};
|
package/src/cache/utl.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const { deepEqual } = require("assert");
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {any} pLeftObject
|
|
6
|
+
* @param {any} pRightObject
|
|
7
|
+
*/
|
|
8
|
+
function objectsAreEqual(pLeftObject, pRightObject) {
|
|
9
|
+
try {
|
|
10
|
+
deepEqual(pLeftObject, pRightObject);
|
|
11
|
+
return true;
|
|
12
|
+
} catch (pError) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
module.exports = { objectsAreEqual };
|
package/src/cli/defaults.js
CHANGED
|
@@ -10,6 +10,7 @@ const defaults = require("./defaults");
|
|
|
10
10
|
const KNOWN_DEPCRUISE_CLI_OPTIONS = [
|
|
11
11
|
"babelConfig",
|
|
12
12
|
"baseDir",
|
|
13
|
+
"cache",
|
|
13
14
|
"collapse",
|
|
14
15
|
"config",
|
|
15
16
|
"doNotFollow",
|
|
@@ -195,6 +196,19 @@ function normalizeProgress(pCliOptions) {
|
|
|
195
196
|
return lProgress ? { progress: lProgress } : {};
|
|
196
197
|
}
|
|
197
198
|
|
|
199
|
+
function normalizeCacheFolderName(pCliOptions) {
|
|
200
|
+
const lCache = get(pCliOptions, "cache", false);
|
|
201
|
+
let lReturnValue = clone(pCliOptions);
|
|
202
|
+
|
|
203
|
+
if (lCache === true) {
|
|
204
|
+
lReturnValue = {
|
|
205
|
+
...lReturnValue,
|
|
206
|
+
cache: defaults.CACHE_FOLDER,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return lReturnValue;
|
|
210
|
+
}
|
|
211
|
+
|
|
198
212
|
/**
|
|
199
213
|
* returns the pOptionsAsPassedFromCommander, so that the returned value contains a
|
|
200
214
|
* valid value for each possible option
|
|
@@ -226,7 +240,7 @@ module.exports = function normalizeOptions(
|
|
|
226
240
|
lOptions = { ...lOptions, ...normalizeValidationOption(lOptions) };
|
|
227
241
|
lOptions = { ...lOptions, ...normalizeProgress(lOptions) };
|
|
228
242
|
lOptions = { ...lOptions, ...normalizeKnownViolationsOption(lOptions) };
|
|
229
|
-
|
|
243
|
+
lOptions = normalizeCacheFolderName(lOptions);
|
|
230
244
|
lOptions = normalizeConfigFileName(
|
|
231
245
|
lOptions,
|
|
232
246
|
"webpackConfig",
|
|
@@ -3,6 +3,7 @@ const has = require("lodash/has");
|
|
|
3
3
|
|
|
4
4
|
const SHAREABLE_OPTIONS = [
|
|
5
5
|
"babelConfig",
|
|
6
|
+
"cache",
|
|
6
7
|
"collapse",
|
|
7
8
|
"combinedDependencies",
|
|
8
9
|
"doNotFollow",
|
|
@@ -16,6 +17,7 @@ const SHAREABLE_OPTIONS = [
|
|
|
16
17
|
"includeOnly",
|
|
17
18
|
"knownViolations",
|
|
18
19
|
"maxDepth",
|
|
20
|
+
"metrics",
|
|
19
21
|
"moduleSystems",
|
|
20
22
|
"outputTo",
|
|
21
23
|
"outputType",
|
|
@@ -26,7 +28,6 @@ const SHAREABLE_OPTIONS = [
|
|
|
26
28
|
"rulesFile",
|
|
27
29
|
"tsPreCompilationDeps",
|
|
28
30
|
"webpackConfig",
|
|
29
|
-
// "metrics", TODO: should be enabled
|
|
30
31
|
// "progress", TODO: could be enabled
|
|
31
32
|
// "tsConfig", TODO: should be enabled
|
|
32
33
|
];
|
|
@@ -52,13 +53,12 @@ function makeOptionsPresentable(pOptions) {
|
|
|
52
53
|
pOptions.knownViolations.length > 0
|
|
53
54
|
)
|
|
54
55
|
.reduce((pAll, pShareableOptionKey) => {
|
|
55
|
-
// console.error(pOption);
|
|
56
56
|
pAll[pShareableOptionKey] = pOptions[pShareableOptionKey];
|
|
57
57
|
return pAll;
|
|
58
58
|
}, {});
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
function
|
|
61
|
+
function makeIncludeOnlyBackwardsCompatible(pOptions) {
|
|
62
62
|
return pOptions.includeOnly
|
|
63
63
|
? {
|
|
64
64
|
...pOptions,
|
|
@@ -70,7 +70,7 @@ function makeIncludOnlyBackwardsCompatible(pOptions) {
|
|
|
70
70
|
module.exports = function summarizeOptions(pFileDirectoryArray, pOptions) {
|
|
71
71
|
return {
|
|
72
72
|
optionsUsed: {
|
|
73
|
-
...makeOptionsPresentable(
|
|
73
|
+
...makeOptionsPresentable(makeIncludeOnlyBackwardsCompatible(pOptions)),
|
|
74
74
|
args: pFileDirectoryArray.join(" "),
|
|
75
75
|
},
|
|
76
76
|
};
|
|
@@ -7,7 +7,7 @@ export interface ITranspilerWrapper {
|
|
|
7
7
|
) => string;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export
|
|
10
|
+
export type getWrapper = (pExtension, pTranspileOptions) => ITranspilerWrapper;
|
|
11
11
|
|
|
12
12
|
export const scannableExtensions: string[];
|
|
13
13
|
|
|
@@ -19,4 +19,4 @@ export interface IAvailableTranspiler {
|
|
|
19
19
|
available: boolean;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export
|
|
22
|
+
export type getAvailableTranspilers = () => IAvailableTranspiler[];
|
package/src/main/index.js
CHANGED
|
@@ -6,6 +6,8 @@ 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 { canServeFromCache, readCache, writeCache } = require("../cache/cache");
|
|
10
|
+
const { getRevisionData } = require("../cache/revision-data");
|
|
9
11
|
const normalizeFilesAndDirectories = require("./files-and-dirs/normalize");
|
|
10
12
|
const validateRuleSet = require("./rule-set/validate");
|
|
11
13
|
const normalizeRuleSet = require("./rule-set/normalize");
|
|
@@ -29,7 +31,7 @@ function validateResultAgainstSchema(pResult) {
|
|
|
29
31
|
);
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
/** @type {import("../../types/dependency-cruiser").format} */
|
|
33
35
|
function format(pResult, pFormatOptions = {}) {
|
|
34
36
|
const lFormatOptions = normalizeFormatOptions(pFormatOptions);
|
|
35
37
|
validateFormatOptions(lFormatOptions);
|
|
@@ -44,26 +46,48 @@ const TOTAL_STEPS = 8;
|
|
|
44
46
|
function c(pComplete, pTotal = TOTAL_STEPS) {
|
|
45
47
|
return { complete: pComplete / pTotal };
|
|
46
48
|
}
|
|
49
|
+
|
|
50
|
+
/** @type {import("../../types/dependency-cruiser").futureCruise} */
|
|
51
|
+
// eslint-disable-next-line max-lines-per-function, complexity, max-statements
|
|
47
52
|
function futureCruise(
|
|
48
53
|
pFileAndDirectoryArray,
|
|
49
54
|
pCruiseOptions,
|
|
50
55
|
pResolveOptions,
|
|
51
56
|
pTranspileOptions
|
|
52
57
|
) {
|
|
58
|
+
/** @type {import("../../types/cruise-result").IRevisionData|null} */
|
|
59
|
+
let lRevisionData = null;
|
|
60
|
+
|
|
53
61
|
bus.emit("progress", "parsing options", c(1));
|
|
54
62
|
/** @type {import("../../types/strict-options").IStrictCruiseOptions} */
|
|
55
63
|
let lCruiseOptions = normalizeCruiseOptions(
|
|
56
|
-
validateCruiseOptions(pCruiseOptions)
|
|
64
|
+
validateCruiseOptions(pCruiseOptions),
|
|
65
|
+
pFileAndDirectoryArray
|
|
57
66
|
);
|
|
58
67
|
|
|
68
|
+
if (lCruiseOptions.cache) {
|
|
69
|
+
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
|
+
|
|
79
|
+
bus.emit("progress", "cache: reporting from cache", c(4));
|
|
80
|
+
return reportWrap(lCachedResults, lCruiseOptions);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
59
84
|
if (Boolean(lCruiseOptions.ruleSet)) {
|
|
60
|
-
bus.emit("progress", "parsing rule set", c(
|
|
85
|
+
bus.emit("progress", "parsing rule set", c(3));
|
|
61
86
|
lCruiseOptions.ruleSet = normalizeRuleSet(
|
|
62
87
|
validateRuleSet(lCruiseOptions.ruleSet)
|
|
63
88
|
);
|
|
64
89
|
}
|
|
65
90
|
|
|
66
|
-
bus.emit("progress", "making sense of files and directories", c(3));
|
|
67
91
|
const lNormalizedFileAndDirectoryArray = normalizeFilesAndDirectories(
|
|
68
92
|
pFileAndDirectoryArray
|
|
69
93
|
);
|
|
@@ -90,12 +114,18 @@ function futureCruise(
|
|
|
90
114
|
lNormalizedFileAndDirectoryArray
|
|
91
115
|
);
|
|
92
116
|
|
|
117
|
+
if (lCruiseOptions.cache && lRevisionData) {
|
|
118
|
+
lCruiseResult.revisionData = lRevisionData;
|
|
119
|
+
writeCache(lCruiseOptions.cache, lCruiseResult);
|
|
120
|
+
}
|
|
121
|
+
|
|
93
122
|
bus.emit("progress", "reporting", c(7));
|
|
94
123
|
return reportWrap(lCruiseResult, lCruiseOptions);
|
|
95
124
|
}
|
|
96
125
|
|
|
97
126
|
// see [api.md](../../doc/api.md) and/ or the
|
|
98
|
-
// [type definition](../../types/
|
|
127
|
+
// [type definition](../../types/dependency-cruiser.d.ts) for details
|
|
128
|
+
/** @type {import("../../types/dependency-cruiser").cruise} */
|
|
99
129
|
function cruise(pFileAndDirectoryArray, pOptions, pResolveOptions, pTSConfig) {
|
|
100
130
|
return futureCruise(pFileAndDirectoryArray, pOptions, pResolveOptions, {
|
|
101
131
|
tsConfig: pTSConfig,
|
|
@@ -142,13 +142,16 @@ function shouldCalculateMetrics(pOptions) {
|
|
|
142
142
|
/**
|
|
143
143
|
*
|
|
144
144
|
* @param {import('../../../types/options').ICruiseOptions} pOptions
|
|
145
|
+
* @param {string[]} pFileAndDirectoryArray
|
|
145
146
|
* @returns {import('../../../types/strict-options').IStrictCruiseOptions}
|
|
146
147
|
*/
|
|
147
|
-
function normalizeCruiseOptions(pOptions) {
|
|
148
|
+
function normalizeCruiseOptions(pOptions, pFileAndDirectoryArray = []) {
|
|
149
|
+
/** @type {import('../../../types/strict-options').IStrictCruiseOptions} */
|
|
148
150
|
let lReturnValue = {
|
|
149
151
|
baseDir: process.cwd(),
|
|
150
152
|
...defaults,
|
|
151
153
|
...pOptions,
|
|
154
|
+
args: pFileAndDirectoryArray.join(" "),
|
|
152
155
|
};
|
|
153
156
|
|
|
154
157
|
// @ts-ignore the idea of normalizing maxDepth to number is that after
|
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"}]},"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"},"depth":{"type":"number","minimum":1,"maximum":4}}},"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"}}]}}}
|
|
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"},"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"}}},"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"}}]}}}
|
|
@@ -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"}},"definitions":{"ModulesType":{"type":"array","items":{"$ref":"#/definitions/ModuleType"}},"ModuleType":{"type":"object","required":["source","dependencies","valid"],"additionalProperties":false,"properties":{"source":{"type":"string"},"valid":{"type":"boolean"},"dependencies":{"$ref":"#/definitions/DependenciesType"},"dependents":{"type":"array","items":{"type":"string"}},"followable":{"type":"boolean"},"matchesDoNotFollow":{"type":"boolean"},"matchesFocus":{"type":"boolean"},"matchesReaches":{"type":"boolean"},"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"},"depth":{"type":"number","minimum":1,"maximum":4}}},"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"}}}}}
|
|
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"},"matchesReaches":{"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"},"cache":{"oneOf":[{"type":"boolean","enum":[false]},{"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"},"depth":{"type":"number","minimum":1,"maximum":4}}},"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"}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"SHA1":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["name","changeType"],"properties":{"name":{"type":"string"},"changeType":{"type":"string","enum":["added","copied","deleted","modified","renamed","type changed","unmerged","pairing broken","unknown","unmodified","untracked","ignored"]},"oldName":{"type":"string"},"checksum":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"rulesFile":{"type":"string"}}}}}}}}
|
package/src/validate/index.d.ts
CHANGED
|
@@ -34,27 +34,27 @@ export interface IValidationResult {
|
|
|
34
34
|
* Validates the pModule module against the given
|
|
35
35
|
* ruleset pRuleSet
|
|
36
36
|
*/
|
|
37
|
-
export
|
|
37
|
+
export type module = (
|
|
38
38
|
pRuleSet: IFlattenedRuleSet,
|
|
39
39
|
pModule: IModule
|
|
40
|
-
)
|
|
40
|
+
) => IValidationResult;
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
43
|
* Validates the pFrom and pTo dependency pair against the given
|
|
44
44
|
* ruleset pRuleSet
|
|
45
45
|
*/
|
|
46
|
-
export
|
|
46
|
+
export type dependency = (
|
|
47
47
|
pRuleSet: IFlattenedRuleSet,
|
|
48
48
|
pFrom: IModule,
|
|
49
49
|
pTo: IDependency
|
|
50
|
-
)
|
|
50
|
+
) => IValidationResult;
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Validates the pFrom and pTo dependency pair against the given
|
|
54
54
|
* ruleset pRuleSet
|
|
55
55
|
*/
|
|
56
|
-
export
|
|
56
|
+
export type folder = (
|
|
57
57
|
pRuleSet: IFlattenedRuleSet,
|
|
58
58
|
pFromFolder: IFolder,
|
|
59
59
|
pToFolder: IFolderDependency
|
|
60
|
-
)
|
|
60
|
+
) => IValidationResult;
|
package/types/cruise-result.d.ts
CHANGED
|
@@ -3,6 +3,21 @@ 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
|
+
}
|
|
6
21
|
|
|
7
22
|
export interface ICruiseResult {
|
|
8
23
|
/**
|
|
@@ -22,6 +37,10 @@ export interface ICruiseResult {
|
|
|
22
37
|
* Data summarizing the found dependencies
|
|
23
38
|
*/
|
|
24
39
|
summary: ISummary;
|
|
40
|
+
/**
|
|
41
|
+
* caching revisionData. doc and proper naming will follow
|
|
42
|
+
*/
|
|
43
|
+
revisionData?: IRevisionData;
|
|
25
44
|
}
|
|
26
45
|
|
|
27
46
|
export interface IModule {
|
|
@@ -54,7 +73,7 @@ export interface IModule {
|
|
|
54
73
|
couldNotResolve?: boolean;
|
|
55
74
|
/**
|
|
56
75
|
* the type of inclusion - local, core, unknown (= we honestly don't know), undetermined (=
|
|
57
|
-
* we didn't bother determining it) or one of the npm dependencies defined in a package.
|
|
76
|
+
* we didn't bother determining it) or one of the npm dependencies defined in a package.json
|
|
58
77
|
* ('npm' for 'dependencies', 'npm-dev', 'npm-optional', 'npm-peer', 'npm-no-pkg' for
|
|
59
78
|
* development, optional, peer dependencies and dependencies in node_modules but not in
|
|
60
79
|
* package.json respectively)
|
|
@@ -130,7 +149,7 @@ export interface IDependency {
|
|
|
130
149
|
*/
|
|
131
150
|
coreModule: boolean;
|
|
132
151
|
/**
|
|
133
|
-
* 'true' if dependency-cruiser could not
|
|
152
|
+
* 'true' if dependency-cruiser could not resolve the module name in the source code to a
|
|
134
153
|
* file name or core module. 'false' in all other cases.
|
|
135
154
|
*/
|
|
136
155
|
couldNotResolve: boolean;
|
|
@@ -73,12 +73,12 @@ export interface IReporterOutput {
|
|
|
73
73
|
* before calling make sure to flatten them out if you want them
|
|
74
74
|
* used (e.g. with 'dependency-cruiser/config-utl/extract-ts-config')
|
|
75
75
|
*/
|
|
76
|
-
export
|
|
76
|
+
export type cruise = (
|
|
77
77
|
pFileAndDirectoryArray: string[],
|
|
78
78
|
pCruiseOptions?: ICruiseOptions,
|
|
79
79
|
pResolveOptions?: IResolveOptions,
|
|
80
80
|
pTSConfig?: any
|
|
81
|
-
)
|
|
81
|
+
) => IReporterOutput;
|
|
82
82
|
|
|
83
83
|
export interface ITranspileOptions {
|
|
84
84
|
/**
|
|
@@ -113,12 +113,12 @@ export interface ITranspileOptions {
|
|
|
113
113
|
* @param pTranspileOptions Object to hold options to pass to underlying transpilers
|
|
114
114
|
* like TypeScript or Babel
|
|
115
115
|
*/
|
|
116
|
-
export
|
|
116
|
+
export type futureCruise = (
|
|
117
117
|
pFileAndDirectoryArray: string[],
|
|
118
118
|
pCruiseOptions?: ICruiseOptions,
|
|
119
119
|
pResolveOptions?: IResolveOptions,
|
|
120
120
|
pTranspileOptions?: ITranspileOptions
|
|
121
|
-
)
|
|
121
|
+
) => IReporterOutput;
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
124
|
* Given a cruise result, formats it with the given reporter (pOutputType)
|
|
@@ -127,10 +127,10 @@ export function futureCruise(
|
|
|
127
127
|
* to the [dependency-cruiser results schema](https://github.com/sverweij/dependency-cruiser/blob/develop/src/schema/cruise-result.json)
|
|
128
128
|
* @param pOutputType Which reporter to use to format the cruise result with
|
|
129
129
|
*/
|
|
130
|
-
export
|
|
130
|
+
export type format = (
|
|
131
131
|
pResult: ICruiseResult,
|
|
132
132
|
pFormatOptions: IFormatOptions
|
|
133
|
-
)
|
|
133
|
+
) => IReporterOutput;
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
136
|
* Returns an array of supported transpilers and for each of the transpilers
|
|
@@ -138,4 +138,4 @@ export function format(
|
|
|
138
138
|
* - the supported version range (semver version range)
|
|
139
139
|
* - whether or not the transpiler is available in the current environment
|
|
140
140
|
*/
|
|
141
|
-
export
|
|
141
|
+
export type getAvailableTranspilers = () => IAvailableTranspiler[];
|
package/types/options.d.ts
CHANGED
|
@@ -247,6 +247,11 @@ export interface ICruiseOptions {
|
|
|
247
247
|
* for all modules and folders. Defaults to false.
|
|
248
248
|
*/
|
|
249
249
|
metrics?: boolean;
|
|
250
|
+
/**
|
|
251
|
+
* Location dependency-cruiser will store its cache. 'false' means: don't use
|
|
252
|
+
* caching. Defaults to false.
|
|
253
|
+
*/
|
|
254
|
+
cache?: false | string;
|
|
250
255
|
}
|
|
251
256
|
|
|
252
257
|
export interface IFormatOptions {
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
IExcludeType,
|
|
3
|
+
IFocusType,
|
|
4
|
+
IIncludeOnlyType,
|
|
5
|
+
IReachesType,
|
|
6
|
+
} from "./filter-types";
|
|
2
7
|
|
|
3
8
|
export interface IReporterOptions {
|
|
4
9
|
/**
|
|
@@ -44,6 +49,7 @@ export interface IReporterFiltersType {
|
|
|
44
49
|
exclude: IExcludeType;
|
|
45
50
|
includeOnly: IIncludeOnlyType;
|
|
46
51
|
focus: IFocusType;
|
|
52
|
+
reaches: IReachesType;
|
|
47
53
|
}
|
|
48
54
|
|
|
49
55
|
export interface IAnonReporterOptions {
|