dependency-cruiser 16.0.0-beta-5 → 16.0.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/package.json +19 -19
- package/src/cli/init-config/config-template.mjs +4 -7
- package/src/config-utl/extract-known-violations.mjs +17 -2
- package/src/enrich/derive/reachable.mjs +10 -12
- package/src/extract/helpers.mjs +7 -1
- package/src/graph-utl/indexed-module-graph.mjs +36 -32
- package/src/main/helpers.mjs +0 -4
- package/src/main/rule-set/assert-validity.mjs +6 -1
- package/src/main/rule-set/normalize.mjs +64 -13
- package/src/meta.js +1 -1
- package/src/report/anon/index.mjs +16 -9
- package/src/report/azure-devops.mjs +3 -3
- package/src/report/dot/default-theme.mjs +10 -3
- package/src/report/error-html/utl.mjs +3 -1
- package/src/report/error.mjs +6 -13
- package/src/report/teamcity.mjs +3 -3
- package/src/schema/baseline-violations.schema.mjs +1 -1
- package/src/schema/configuration.schema.mjs +1 -1
- package/src/schema/cruise-result.schema.mjs +1 -1
- package/src/validate/match-dependency-rule.mjs +6 -6
- package/src/validate/matchers.mjs +59 -47
- package/types/cruise-result.d.mts +1 -1
- package/types/restrictions.d.mts +38 -8
- package/types/shared-types.d.mts +1 -0
- package/types/strict-restrictions.d.mts +9 -3
- package/types/violations.d.mts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dependency-cruiser",
|
|
3
|
-
"version": "16.0.0
|
|
3
|
+
"version": "16.0.0",
|
|
4
4
|
"description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"static analysis",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"acorn-jsx": "5.3.2",
|
|
168
168
|
"acorn-jsx-walk": "2.0.0",
|
|
169
169
|
"acorn-loose": "8.4.0",
|
|
170
|
-
"acorn-walk": "8.3.
|
|
170
|
+
"acorn-walk": "8.3.1",
|
|
171
171
|
"ajv": "8.12.0",
|
|
172
172
|
"chalk": "5.3.0",
|
|
173
173
|
"commander": "11.1.0",
|
|
@@ -187,46 +187,46 @@
|
|
|
187
187
|
"semver-try-require": "6.2.3",
|
|
188
188
|
"teamcity-service-messages": "0.1.14",
|
|
189
189
|
"tsconfig-paths-webpack-plugin": "4.1.0",
|
|
190
|
-
"watskeburt": "2.0.
|
|
190
|
+
"watskeburt": "2.0.4",
|
|
191
191
|
"wrap-ansi": "9.0.0"
|
|
192
192
|
},
|
|
193
193
|
"devDependencies": {
|
|
194
|
-
"@babel/core": "7.23.
|
|
194
|
+
"@babel/core": "7.23.6",
|
|
195
195
|
"@babel/plugin-transform-modules-commonjs": "7.23.3",
|
|
196
196
|
"@babel/preset-typescript": "7.23.3",
|
|
197
|
-
"@swc/core": "1.3.
|
|
197
|
+
"@swc/core": "1.3.101",
|
|
198
198
|
"@types/lodash": "4.14.202",
|
|
199
|
-
"@types/node": "20.10.
|
|
199
|
+
"@types/node": "20.10.5",
|
|
200
200
|
"@types/prompts": "2.4.9",
|
|
201
|
-
"@typescript-eslint/eslint-plugin": "6.
|
|
202
|
-
"@typescript-eslint/parser": "6.
|
|
203
|
-
"@vue/compiler-sfc": "3.3.
|
|
201
|
+
"@typescript-eslint/eslint-plugin": "6.16.0",
|
|
202
|
+
"@typescript-eslint/parser": "6.16.0",
|
|
203
|
+
"@vue/compiler-sfc": "3.3.13",
|
|
204
204
|
"c8": "8.0.1",
|
|
205
205
|
"coffeescript": "2.7.0",
|
|
206
|
-
"eslint": "8.
|
|
206
|
+
"eslint": "8.56.0",
|
|
207
207
|
"eslint-config-moving-meadow": "4.0.2",
|
|
208
|
-
"eslint-config-prettier": "9.
|
|
208
|
+
"eslint-config-prettier": "9.1.0",
|
|
209
209
|
"eslint-plugin-budapestian": "6.0.0",
|
|
210
210
|
"eslint-plugin-eslint-comments": "3.2.0",
|
|
211
|
-
"eslint-plugin-import": "2.29.
|
|
211
|
+
"eslint-plugin-import": "2.29.1",
|
|
212
212
|
"eslint-plugin-mocha": "10.2.0",
|
|
213
213
|
"eslint-plugin-node": "11.1.0",
|
|
214
|
-
"eslint-plugin-security": "1.
|
|
215
|
-
"eslint-plugin-unicorn": "^
|
|
214
|
+
"eslint-plugin-security": "2.1.0",
|
|
215
|
+
"eslint-plugin-unicorn": "^50.0.1",
|
|
216
216
|
"husky": "8.0.3",
|
|
217
217
|
"intercept-stdout": "0.1.2",
|
|
218
|
-
"lint-staged": "15.
|
|
218
|
+
"lint-staged": "15.2.0",
|
|
219
219
|
"mocha": "10.2.0",
|
|
220
220
|
"normalize-newline": "4.1.0",
|
|
221
221
|
"npm-run-all": "4.1.5",
|
|
222
|
-
"prettier": "3.1.
|
|
222
|
+
"prettier": "3.1.1",
|
|
223
223
|
"proxyquire": "2.1.3",
|
|
224
224
|
"shx": "0.3.4",
|
|
225
225
|
"svelte": "3.59.1",
|
|
226
|
-
"symlink-dir": "5.2.
|
|
227
|
-
"typescript": "5.3.
|
|
226
|
+
"symlink-dir": "5.2.1",
|
|
227
|
+
"typescript": "5.3.3",
|
|
228
228
|
"upem": "9.0.2",
|
|
229
|
-
"vue-template-compiler": "2.7.
|
|
229
|
+
"vue-template-compiler": "2.7.16",
|
|
230
230
|
"yarn": "1.22.21"
|
|
231
231
|
},
|
|
232
232
|
"overrides": {
|
|
@@ -231,18 +231,15 @@ module.exports = {
|
|
|
231
231
|
|
|
232
232
|
/* List of module systems to cruise.
|
|
233
233
|
When left out dependency-cruiser will fall back to the list of _all_
|
|
234
|
-
module systems it knows of. It's the
|
|
235
|
-
performance penalty
|
|
234
|
+
module systems it knows of. It's the default because it's the safe option
|
|
235
|
+
It might come at a performance penalty, though.
|
|
236
236
|
moduleSystems: ['amd', 'cjs', 'es6', 'tsd']
|
|
237
237
|
|
|
238
238
|
As in practice only commonjs ('cjs') and ecmascript modules ('es6')
|
|
239
|
-
are widely used,
|
|
240
|
-
asynchronous module definitions ('amd' - require.js style), or typescript's
|
|
241
|
-
legacy triple slash directives ('tsd') you can add these to the array
|
|
242
|
-
yourself or comment the moduleSystems entry out.
|
|
239
|
+
are widely used, you can limit the moduleSystems to those.
|
|
243
240
|
*/
|
|
244
241
|
|
|
245
|
-
moduleSystems: ['cjs', 'es6'],
|
|
242
|
+
// moduleSystems: ['cjs', 'es6'],
|
|
246
243
|
|
|
247
244
|
/* prefix for links in html and svg output (e.g. 'https://github.com/you/yourrepo/blob/develop/'
|
|
248
245
|
to open it on your online repo or \`vscode://file/$\{process.cwd()}/\` to
|
|
@@ -20,8 +20,9 @@ import makeAbsolute from "./make-absolute.mjs";
|
|
|
20
20
|
* @returns {IViolation}
|
|
21
21
|
*/
|
|
22
22
|
function makeForwardCompatible(pKnownViolation) {
|
|
23
|
+
let lReturnValue = pKnownViolation;
|
|
23
24
|
if (Boolean(pKnownViolation.cycle)) {
|
|
24
|
-
|
|
25
|
+
lReturnValue = {
|
|
25
26
|
...pKnownViolation,
|
|
26
27
|
cycle: pKnownViolation.cycle.map((pModule) => {
|
|
27
28
|
if (Boolean(pModule.name)) {
|
|
@@ -34,7 +35,21 @@ function makeForwardCompatible(pKnownViolation) {
|
|
|
34
35
|
}),
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
if (Boolean(pKnownViolation.via)) {
|
|
39
|
+
lReturnValue = {
|
|
40
|
+
...pKnownViolation,
|
|
41
|
+
via: pKnownViolation.via.map((pModule) => {
|
|
42
|
+
if (Boolean(pModule.name)) {
|
|
43
|
+
return pModule;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
name: pModule,
|
|
47
|
+
dependencyTypes: [],
|
|
48
|
+
};
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return lReturnValue;
|
|
38
53
|
}
|
|
39
54
|
|
|
40
55
|
export default async function extractKnownViolations(pKnownViolationsFileName) {
|
|
@@ -34,19 +34,18 @@ function mergeReachableProperties(pModule, pRule, pPath, pModuleFrom) {
|
|
|
34
34
|
const lIndexExistingReachable = lReachables.findIndex(
|
|
35
35
|
(pReachable) => pReachable.asDefinedInRule === pRule.name,
|
|
36
36
|
);
|
|
37
|
-
const lIsReachable = pPath.length >
|
|
37
|
+
const lIsReachable = pPath.length > 0;
|
|
38
38
|
|
|
39
39
|
if (lIndexExistingReachable > -1) {
|
|
40
40
|
lReachables[lIndexExistingReachable].value =
|
|
41
41
|
lReachables[lIndexExistingReachable].value || lIsReachable;
|
|
42
42
|
return lReachables;
|
|
43
|
-
} else {
|
|
44
|
-
return lReachables.concat({
|
|
45
|
-
value: lIsReachable,
|
|
46
|
-
asDefinedInRule: pRule.name,
|
|
47
|
-
matchedFrom: pModuleFrom,
|
|
48
|
-
});
|
|
49
43
|
}
|
|
44
|
+
return lReachables.concat({
|
|
45
|
+
value: lIsReachable,
|
|
46
|
+
asDefinedInRule: pRule.name,
|
|
47
|
+
matchedFrom: pModuleFrom,
|
|
48
|
+
});
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
function mergeReachesProperties(pFromModule, pToModule, pRule, pPath) {
|
|
@@ -63,12 +62,11 @@ function mergeReachesProperties(pFromModule, pToModule, pRule, pPath) {
|
|
|
63
62
|
via: pPath,
|
|
64
63
|
});
|
|
65
64
|
return lReaches;
|
|
66
|
-
} else {
|
|
67
|
-
return lReaches.concat({
|
|
68
|
-
asDefinedInRule: pRule.name,
|
|
69
|
-
modules: [{ source: pToModule.source, via: pPath }],
|
|
70
|
-
});
|
|
71
65
|
}
|
|
66
|
+
return lReaches.concat({
|
|
67
|
+
asDefinedInRule: pRule.name,
|
|
68
|
+
modules: [{ source: pToModule.source, via: pPath }],
|
|
69
|
+
});
|
|
72
70
|
}
|
|
73
71
|
|
|
74
72
|
function shouldAddReaches(pRule, pModule) {
|
package/src/extract/helpers.mjs
CHANGED
|
@@ -16,7 +16,13 @@ export function detectPreCompilationNess(pTSDependencies, pJSDependencies) {
|
|
|
16
16
|
return pTSDependencies.map((pTSDependency) =>
|
|
17
17
|
pJSDependencies.some(dependenciesEqual(pTSDependency))
|
|
18
18
|
? { ...pTSDependency, preCompilationOnly: false }
|
|
19
|
-
: {
|
|
19
|
+
: {
|
|
20
|
+
...pTSDependency,
|
|
21
|
+
preCompilationOnly: true,
|
|
22
|
+
dependencyTypes: (pTSDependency.dependencyTypes || []).concat(
|
|
23
|
+
"pre-compilation-only",
|
|
24
|
+
),
|
|
25
|
+
},
|
|
20
26
|
);
|
|
21
27
|
}
|
|
22
28
|
|
|
@@ -139,38 +139,6 @@ export default class IndexedModuleGraph {
|
|
|
139
139
|
return lReturnValue;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
/**
|
|
143
|
-
* @param {string} pFrom
|
|
144
|
-
* @param {string} pTo
|
|
145
|
-
* @param {Set<string>} pVisited
|
|
146
|
-
* @returns {string[]}
|
|
147
|
-
*/
|
|
148
|
-
getPath(pFrom, pTo, pVisited = new Set()) {
|
|
149
|
-
let lReturnValue = [];
|
|
150
|
-
const lFromNode = this.findVertexByName(pFrom);
|
|
151
|
-
|
|
152
|
-
pVisited.add(pFrom);
|
|
153
|
-
|
|
154
|
-
if (lFromNode) {
|
|
155
|
-
const lDirectUnvisitedDependencies = lFromNode.dependencies
|
|
156
|
-
.filter((pDependency) => !pVisited.has(pDependency.name))
|
|
157
|
-
.map((pDependency) => pDependency.name);
|
|
158
|
-
if (lDirectUnvisitedDependencies.includes(pTo)) {
|
|
159
|
-
lReturnValue = [pFrom, pTo];
|
|
160
|
-
} else {
|
|
161
|
-
for (const lFrom of lDirectUnvisitedDependencies) {
|
|
162
|
-
let lCandidatePath = this.getPath(lFrom, pTo, pVisited);
|
|
163
|
-
// eslint-disable-next-line max-depth
|
|
164
|
-
if (lCandidatePath.length > 0) {
|
|
165
|
-
lReturnValue = [pFrom].concat(lCandidatePath);
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return lReturnValue;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
142
|
/**
|
|
175
143
|
*
|
|
176
144
|
* @param {IEdge} pEdge
|
|
@@ -185,6 +153,42 @@ export default class IndexedModuleGraph {
|
|
|
185
153
|
return lReturnValue;
|
|
186
154
|
}
|
|
187
155
|
|
|
156
|
+
/**
|
|
157
|
+
* @param {string} pFrom
|
|
158
|
+
* @param {string} pTo
|
|
159
|
+
* @param {Set<string>} pVisited
|
|
160
|
+
* @returns {Array<IMiniDependency>}
|
|
161
|
+
*/
|
|
162
|
+
getPath(pFrom, pTo, pVisited = new Set()) {
|
|
163
|
+
const lFromNode = this.findVertexByName(pFrom);
|
|
164
|
+
|
|
165
|
+
pVisited.add(pFrom);
|
|
166
|
+
|
|
167
|
+
if (!lFromNode) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const lDirectUnvisitedDependencies = lFromNode.dependencies
|
|
172
|
+
.filter((pDependency) => !pVisited.has(pDependency.name))
|
|
173
|
+
.map(this.#geldEdge);
|
|
174
|
+
const lFoundDependency = lDirectUnvisitedDependencies.find(
|
|
175
|
+
(pDependency) => pDependency.name === pTo,
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
if (lFoundDependency) {
|
|
179
|
+
return [lFoundDependency];
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
for (const lNewFrom of lDirectUnvisitedDependencies) {
|
|
183
|
+
let lCandidatePath = this.getPath(lNewFrom.name, pTo, pVisited);
|
|
184
|
+
|
|
185
|
+
if (lCandidatePath.length > 0) {
|
|
186
|
+
return [lNewFrom].concat(lCandidatePath);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return [];
|
|
190
|
+
}
|
|
191
|
+
|
|
188
192
|
/**
|
|
189
193
|
* Returns the first non-zero length path from pInitialSource to pInitialSource
|
|
190
194
|
* Returns the empty array if there is no such path
|
package/src/main/helpers.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
2
|
import safeRegex from "safe-regex";
|
|
3
3
|
import has from "lodash/has.js";
|
|
4
|
+
import get from "lodash/get.js";
|
|
4
5
|
import { assertCruiseOptionsValid } from "../options/assert-validity.mjs";
|
|
5
6
|
import { normalizeToREAsString } from "../helpers.mjs";
|
|
6
7
|
import configurationSchema from "#configuration-schema";
|
|
@@ -34,7 +35,7 @@ function hasPath(pObject, pSection, pCondition) {
|
|
|
34
35
|
function safeRule(pRule, pSection, pCondition) {
|
|
35
36
|
return (
|
|
36
37
|
!hasPath(pRule, pSection, pCondition) ||
|
|
37
|
-
safeRegex(normalizeToREAsString(pRule[pSection]
|
|
38
|
+
safeRegex(normalizeToREAsString(get(pRule[pSection], pCondition)), {
|
|
38
39
|
limit: MAX_SAFE_REGEX_STAR_REPEAT_LIMIT,
|
|
39
40
|
})
|
|
40
41
|
);
|
|
@@ -49,9 +50,13 @@ function assertRuleSafety(pRule) {
|
|
|
49
50
|
{ section: "to", condition: "license" },
|
|
50
51
|
{ section: "to", condition: "licenseNot" },
|
|
51
52
|
{ section: "to", condition: "via" },
|
|
53
|
+
{ section: "to", condition: "via.path" },
|
|
52
54
|
{ section: "to", condition: "viaNot" },
|
|
55
|
+
{ section: "to", condition: "viaNot.path" },
|
|
53
56
|
{ section: "to", condition: "viaOnly" },
|
|
57
|
+
{ section: "to", condition: "viaOnly.path" },
|
|
54
58
|
{ section: "to", condition: "viaSomeNot" },
|
|
59
|
+
{ section: "to", condition: "viaSomeNot.path" },
|
|
55
60
|
];
|
|
56
61
|
|
|
57
62
|
if (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import has from "lodash/has.js";
|
|
2
|
-
import { normalizeREProperties } from "../helpers.mjs";
|
|
2
|
+
import { normalizeREProperties, normalizeToREAsString } from "../helpers.mjs";
|
|
3
3
|
|
|
4
4
|
const VALID_SEVERITIES = /^(error|warn|info|ignore)$/;
|
|
5
5
|
const DEFAULT_SEVERITY = "warn";
|
|
@@ -23,26 +23,74 @@ function normalizeName(pRuleName) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
* @
|
|
28
|
-
* @returns {import("../../../types/shared-types.js").RuleScopeType}
|
|
26
|
+
* @param {import("../../../types/shared-types.mjs").RuleScopeType} pScope?
|
|
27
|
+
* @returns {import("../../../types/shared-types.mjs").RuleScopeType}
|
|
29
28
|
*/
|
|
30
29
|
function normalizeScope(pScope) {
|
|
31
30
|
return pScope ? pScope : DEFAULT_SCOPE;
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
/**
|
|
35
|
-
*
|
|
34
|
+
* @param {import("../../../types/restrictions.mjs").MiniDependencyRestrictionType} pVia
|
|
35
|
+
* @returns {import("../../../types/strict-restrictions.mjs").IStrictMiniDependencyRestriction}
|
|
36
|
+
*/
|
|
37
|
+
function normalizeVia(pVia) {
|
|
38
|
+
let lReturnValue = {};
|
|
39
|
+
|
|
40
|
+
if (typeof pVia === "string" || Array.isArray(pVia)) {
|
|
41
|
+
lReturnValue.path = pVia;
|
|
42
|
+
} else {
|
|
43
|
+
lReturnValue = structuredClone(pVia);
|
|
44
|
+
}
|
|
45
|
+
if (has(lReturnValue, "path")) {
|
|
46
|
+
lReturnValue.path = normalizeToREAsString(lReturnValue.path);
|
|
47
|
+
}
|
|
48
|
+
return lReturnValue;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// eslint-disable-next-line complexity
|
|
52
|
+
function normalizeVias(pRuleTo) {
|
|
53
|
+
const lRuleTo = structuredClone(pRuleTo);
|
|
54
|
+
|
|
55
|
+
if (has(lRuleTo, "via")) {
|
|
56
|
+
lRuleTo.via = normalizeVia(lRuleTo.via);
|
|
57
|
+
}
|
|
58
|
+
if (has(lRuleTo, "viaOnly")) {
|
|
59
|
+
lRuleTo.viaOnly = normalizeVia(lRuleTo.viaOnly);
|
|
60
|
+
}
|
|
61
|
+
if (has(lRuleTo, "viaNot")) {
|
|
62
|
+
if (!has(lRuleTo, "viaOnly.pathNot")) {
|
|
63
|
+
lRuleTo.viaOnly = {
|
|
64
|
+
...lRuleTo.viaOnly,
|
|
65
|
+
pathNot: normalizeToREAsString(lRuleTo.viaNot),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
delete lRuleTo.viaNot;
|
|
69
|
+
}
|
|
70
|
+
if (has(lRuleTo, "viaSomeNot")) {
|
|
71
|
+
if (!has(lRuleTo, "via.pathNot")) {
|
|
72
|
+
lRuleTo.via = {
|
|
73
|
+
...lRuleTo.via,
|
|
74
|
+
pathNot: normalizeToREAsString(lRuleTo.viaSomeNot),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
delete lRuleTo.viaSomeNot;
|
|
78
|
+
}
|
|
79
|
+
return lRuleTo;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
36
83
|
* @param {import("../../../types/rule-set.mjs").IAnyRuleType} pRule
|
|
37
|
-
* @returns {import("../../../types/strict-rule-set.
|
|
84
|
+
* @returns {import("../../../types/strict-rule-set.mjs").IStrictAnyRuleType}
|
|
38
85
|
*/
|
|
39
86
|
function normalizeRule(pRule) {
|
|
87
|
+
const lRuleTo = normalizeVias(pRule.to);
|
|
40
88
|
return {
|
|
41
89
|
...pRule,
|
|
42
90
|
severity: normalizeSeverity(pRule.severity),
|
|
43
91
|
name: normalizeName(pRule.name),
|
|
44
92
|
from: normalizeREProperties(pRule.from),
|
|
45
|
-
to: normalizeREProperties(
|
|
93
|
+
to: normalizeREProperties(lRuleTo),
|
|
46
94
|
scope: normalizeScope(pRule.scope),
|
|
47
95
|
...(pRule.module ? { module: normalizeREProperties(pRule.module) } : {}),
|
|
48
96
|
};
|
|
@@ -66,12 +114,15 @@ export default function normalizeRuleSet(pRuleSet) {
|
|
|
66
114
|
Reflect.deleteProperty(lRuleSet, "allowed");
|
|
67
115
|
Reflect.deleteProperty(lRuleSet, "allowedSeverity");
|
|
68
116
|
} else {
|
|
69
|
-
lRuleSet.allowed = lRuleSet.allowed.map((pRule) =>
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
117
|
+
lRuleSet.allowed = lRuleSet.allowed.map((pRule) => {
|
|
118
|
+
const lRuleTo = normalizeVias(pRule.to);
|
|
119
|
+
return {
|
|
120
|
+
...pRule,
|
|
121
|
+
name: "not-in-allowed",
|
|
122
|
+
from: normalizeREProperties(pRule.from),
|
|
123
|
+
to: normalizeREProperties(lRuleTo),
|
|
124
|
+
};
|
|
125
|
+
});
|
|
75
126
|
}
|
|
76
127
|
}
|
|
77
128
|
|
package/src/meta.js
CHANGED
|
@@ -9,10 +9,14 @@ function anonymizePathArray(pPathArray, pWordList) {
|
|
|
9
9
|
return (pPathArray || []).map((pPath) => anonymizePath(pPath, pWordList));
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
function anonymizeMiniDependencyArray(
|
|
13
|
+
pMiniDependencyArray,
|
|
14
|
+
pWordList,
|
|
15
|
+
pAttribute = "name",
|
|
16
|
+
) {
|
|
17
|
+
return (pMiniDependencyArray || []).map((pMiniDependency) => ({
|
|
18
|
+
...pMiniDependency,
|
|
19
|
+
[pAttribute]: anonymizePath(pMiniDependency.name, pWordList),
|
|
16
20
|
}));
|
|
17
21
|
}
|
|
18
22
|
|
|
@@ -21,7 +25,7 @@ function anonymizeDependencies(pDependencies, pWordList) {
|
|
|
21
25
|
...pDependency,
|
|
22
26
|
resolved: anonymizePath(pDependency.resolved, pWordList),
|
|
23
27
|
module: anonymizePath(pDependency.module, pWordList),
|
|
24
|
-
cycle:
|
|
28
|
+
cycle: anonymizeMiniDependencyArray(pDependency.cycle, pWordList),
|
|
25
29
|
}));
|
|
26
30
|
}
|
|
27
31
|
|
|
@@ -29,7 +33,7 @@ function anonymizeReachesModule(pWordList) {
|
|
|
29
33
|
return (pModule) => ({
|
|
30
34
|
...pModule,
|
|
31
35
|
source: anonymizePath(pModule.source, pWordList),
|
|
32
|
-
via:
|
|
36
|
+
via: anonymizeMiniDependencyArray(pModule.via, pWordList),
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
39
|
|
|
@@ -85,7 +89,7 @@ function anonymizeFolders(pFolders, pWordList) {
|
|
|
85
89
|
name: anonymizePath(pDependency.name, pWordList),
|
|
86
90
|
};
|
|
87
91
|
if (lReturnDependencies.cycle) {
|
|
88
|
-
lReturnDependencies.cycle =
|
|
92
|
+
lReturnDependencies.cycle = anonymizeMiniDependencyArray(
|
|
89
93
|
pDependency.cycle,
|
|
90
94
|
pWordList,
|
|
91
95
|
);
|
|
@@ -109,10 +113,13 @@ function anonymizeViolations(pViolations, pWordList) {
|
|
|
109
113
|
...pViolation,
|
|
110
114
|
from: anonymizePath(pViolation.from, pWordList),
|
|
111
115
|
to: anonymizePath(pViolation.to, pWordList),
|
|
112
|
-
cycle:
|
|
116
|
+
cycle: anonymizeMiniDependencyArray(pViolation.cycle, pWordList),
|
|
113
117
|
};
|
|
114
118
|
if (pViolation.via) {
|
|
115
|
-
lReturnValue.via =
|
|
119
|
+
lReturnValue.via = anonymizeMiniDependencyArray(
|
|
120
|
+
pViolation.via,
|
|
121
|
+
pWordList,
|
|
122
|
+
);
|
|
116
123
|
}
|
|
117
124
|
return lReturnValue;
|
|
118
125
|
});
|
|
@@ -52,9 +52,9 @@ function formatCycleViolation(pViolation) {
|
|
|
52
52
|
* @returns {string}
|
|
53
53
|
*/
|
|
54
54
|
function formatReachabilityViolation(pViolation) {
|
|
55
|
-
return `${pViolation.from} -> ${pViolation.to} (via ${pViolation.via
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
return `${pViolation.from} -> ${pViolation.to} (via ${pViolation.via
|
|
56
|
+
.map(({ name }) => name)
|
|
57
|
+
.join(" -> ")})`;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/**
|
|
@@ -128,15 +128,22 @@ export default {
|
|
|
128
128
|
attributes: { arrowhead: "normalnoneodot" },
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
|
-
criteria: {
|
|
131
|
+
criteria: {
|
|
132
|
+
dependencyTypes: [
|
|
133
|
+
"pre-compilation-only",
|
|
134
|
+
"triple-slash-type-reference",
|
|
135
|
+
"type-import",
|
|
136
|
+
"type-only",
|
|
137
|
+
],
|
|
138
|
+
},
|
|
132
139
|
attributes: { arrowhead: "onormal", penwidth: "1.0" },
|
|
133
140
|
},
|
|
134
141
|
{
|
|
135
|
-
criteria: {
|
|
142
|
+
criteria: { dependencyTypes: "core" },
|
|
136
143
|
attributes: { style: "dashed", penwidth: "1.0" },
|
|
137
144
|
},
|
|
138
145
|
{
|
|
139
|
-
criteria: {
|
|
146
|
+
criteria: { dependencyTypes: "npm" },
|
|
140
147
|
attributes: { penwidth: "1.0" },
|
|
141
148
|
},
|
|
142
149
|
],
|
|
@@ -34,7 +34,9 @@ function formatCycleTo(pViolation) {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
function formatReachabilityTo(pViolation) {
|
|
37
|
-
return `${pViolation.to}<br/>${pViolation.via
|
|
37
|
+
return `${pViolation.to}<br/>${pViolation.via
|
|
38
|
+
.map(({ name }) => name)
|
|
39
|
+
.join(" →<br/>")}`;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
function formatDependencyTo(pViolation) {
|
package/src/report/error.mjs
CHANGED
|
@@ -17,19 +17,12 @@ const SEVERITY2CHALK = new Map([
|
|
|
17
17
|
|
|
18
18
|
const EXTRA_PATH_INFORMATION_INDENT = 6;
|
|
19
19
|
|
|
20
|
-
function
|
|
20
|
+
function formatMiniDependency(pMiniDependency) {
|
|
21
21
|
return EOL.concat(
|
|
22
22
|
wrapAndIndent(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function formatExtraPathInformation(pExtra) {
|
|
30
|
-
return EOL.concat(
|
|
31
|
-
wrapAndIndent(
|
|
32
|
-
pExtra.join(` ${figures.arrowRight} ${EOL}`),
|
|
23
|
+
pMiniDependency
|
|
24
|
+
.map(({ name }) => name)
|
|
25
|
+
.join(` ${figures.arrowRight} ${EOL}`),
|
|
33
26
|
EXTRA_PATH_INFORMATION_INDENT,
|
|
34
27
|
),
|
|
35
28
|
);
|
|
@@ -48,13 +41,13 @@ function formatDependencyViolation(pViolation) {
|
|
|
48
41
|
function formatCycleViolation(pViolation) {
|
|
49
42
|
return `${chalk.bold(pViolation.from)} ${
|
|
50
43
|
figures.arrowRight
|
|
51
|
-
} ${
|
|
44
|
+
} ${formatMiniDependency(pViolation.cycle)}`;
|
|
52
45
|
}
|
|
53
46
|
|
|
54
47
|
function formatReachabilityViolation(pViolation) {
|
|
55
48
|
return `${chalk.bold(pViolation.from)} ${figures.arrowRight} ${chalk.bold(
|
|
56
49
|
pViolation.to,
|
|
57
|
-
)}${
|
|
50
|
+
)}${formatMiniDependency(pViolation.via)}`;
|
|
58
51
|
}
|
|
59
52
|
|
|
60
53
|
function formatInstabilityViolation(pViolation) {
|
package/src/report/teamcity.mjs
CHANGED
|
@@ -81,9 +81,9 @@ function formatCycleViolation(pViolation) {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
function formatReachabilityViolation(pViolation) {
|
|
84
|
-
return `${formatDependencyViolation(pViolation)} ${pViolation.via
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
return `${formatDependencyViolation(pViolation)} ${pViolation.via
|
|
85
|
+
.map(({ name }) => name)
|
|
86
|
+
.join(" -> ")}`;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
function formatInstabilityViolation(pViolation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/* generated - don't edit */export default {"title":"dependency-cruiser baseline ('known errors') format","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/baseline-violations.schema.json","$ref":"#/definitions/ViolationsType","definitions":{"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":{"$ref":"#/definitions/MiniDependency"}},"via":{"type":"array","items":{"
|
|
1
|
+
/* generated - don't edit */export default {"title":"dependency-cruiser baseline ('known errors') format","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/baseline-violations.schema.json","$ref":"#/definitions/ViolationsType","definitions":{"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":{"$ref":"#/definitions/MiniDependency"}},"via":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"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"}}},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"MiniDependency":{"type":"object","required":["name","dependencyTypes"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"DependencyTypeType":{"type":"string","enum":["aliased-subpath-import","aliased-tsconfig-base-url","aliased-tsconfig-paths","aliased-tsconfig","aliased-webpack","aliased-workspace","aliased","amd-define","amd-require","amd-exotic-require","core","deprecated","dynamic-import","exotic-require","export","import-equals","import","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","pre-compilation-only","require","triple-slash-amd-dependency","triple-slash-directive","triple-slash-file-reference","triple-slash-type-reference","type-import","type-only","undetermined","unknown"]}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/* generated - don't edit */export default {"title":"dependency-cruiser configuration","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/configuration.schema.json","type":"object","additionalProperties":false,"properties":{"$schema":{"type":"string"},"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}},"options":{"$ref":"#/definitions/OptionsType"},"extends":{"$ref":"#/definitions/ExtendsType"}},"definitions":{"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/REAsStringsType"},"viaOnly":{"$ref":"#/definitions/REAsStringsType"},"viaNot":{"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"DependencyTypeType":{"type":"string","enum":["aliased-subpath-import","aliased-tsconfig-base-url","aliased-tsconfig-paths","aliased-tsconfig","aliased-webpack","aliased-workspace","aliased","amd-define","amd-require","amd-exotic-require","core","deprecated","dynamic-import","exotic-require","export","import-equals","import","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","require","triple-slash-amd-dependency","triple-slash-directive","triple-slash-file-reference","triple-slash-type-reference","type-import","type-only","undetermined","unknown"]},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"OptionsType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundDoNotFollowType"}]},"exclude":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundExcludeType"}]},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundFocusType"}]},"reaches":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundReachesType"}]},"highlight":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundHighlightType"}]},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1,"maximum":9}]},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"builtInModules":{"type":"object","additionalProperties":false,"properties":{"override":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}}}},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array","items":{"type":"string"}},"mainFiles":{"type":"array"},"aliasFields":{"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","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"},{"$ref":"#/definitions/CacheOptionsType"}]}}},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"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"]},"MiniDependency":{"type":"object","required":["name","dependencyTypes"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"},"compress":{"type":"boolean","default":false}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|
|
1
|
+
/* generated - don't edit */export default {"title":"dependency-cruiser configuration","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/configuration.schema.json","type":"object","additionalProperties":false,"properties":{"$schema":{"type":"string"},"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}},"options":{"$ref":"#/definitions/OptionsType"},"extends":{"$ref":"#/definitions/ExtendsType"}},"definitions":{"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"MiniDependencyRestrictionType":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}}]},"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/MiniDependencyRestrictionType"},"viaOnly":{"$ref":"#/definitions/MiniDependencyRestrictionType"},"viaNot":{"deprecated":true,"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"deprecated":true,"$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-subpath-import","aliased-tsconfig-base-url","aliased-tsconfig-paths","aliased-tsconfig","aliased-webpack","aliased-workspace","aliased","amd-define","amd-require","amd-exotic-require","core","deprecated","dynamic-import","exotic-require","export","import-equals","import","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","pre-compilation-only","require","triple-slash-amd-dependency","triple-slash-directive","triple-slash-file-reference","triple-slash-type-reference","type-import","type-only","undetermined","unknown"]},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"SeverityType":{"type":"string","enum":["error","warn","info","ignore"]},"OptionsType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundDoNotFollowType"}]},"exclude":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundExcludeType"}]},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundFocusType"}]},"reaches":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundReachesType"}]},"highlight":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundHighlightType"}]},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"oneOf":[{"type":"string"},{"type":"integer","minimum":1,"maximum":9}]},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"builtInModules":{"type":"object","additionalProperties":false,"properties":{"override":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}}}},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array","items":{"type":"string"}},"mainFiles":{"type":"array"},"aliasFields":{"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","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"deprecated":true,"type":"string"},{"$ref":"#/definitions/CacheOptionsType"}]}}},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"via":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"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"]},"MiniDependency":{"type":"object","required":["name","dependencyTypes"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"},"compress":{"type":"boolean","default":false}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/* generated - don't edit */export default {"title":"dependency-cruiser output format","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/cruise-result.schema.json","type":"object","required":["summary","modules"],"additionalProperties":false,"properties":{"modules":{"$ref":"#/definitions/ModulesType"},"folders":{"$ref":"#/definitions/FoldersType"},"summary":{"$ref":"#/definitions/SummaryType"},"revisionData":{"$ref":"#/definitions/RevisionDataType"}},"definitions":{"ModulesType":{"type":"array","items":{"$ref":"#/definitions/ModuleType"}},"ModuleType":{"type":"object","required":["source","dependencies","valid"],"additionalProperties":false,"properties":{"source":{"type":"string"},"valid":{"type":"boolean"},"dependencies":{"$ref":"#/definitions/DependenciesType"},"dependents":{"type":"array","items":{"type":"string"}},"followable":{"type":"boolean"},"matchesDoNotFollow":{"type":"boolean"},"matchesFocus":{"type":"boolean"},"matchesReaches":{"type":"boolean"},"matchesHighlight":{"type":"boolean"},"coreModule":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"orphan":{"type":"boolean"},"reachable":{"type":"array","items":{"$ref":"#/definitions/ReachableType"}},"reaches":{"type":"array","items":{"$ref":"#/definitions/ReachesType"}},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"consolidated":{"type":"boolean"},"instability":{"type":"number"},"checksum":{"type":"string"}}},"ReachableType":{"type":"object","required":["value","asDefinedInRule","matchedFrom"],"additionalProperties":false,"properties":{"value":{"type":"boolean"},"asDefinedInRule":{"type":"string"},"matchedFrom":{"type":"string"}}},"ReachesType":{"type":"object","required":["modules","asDefinedInRule"],"additionalProperties":false,"properties":{"modules":{"type":"array","items":{"type":"object","required":["source","via"],"additionalProperties":false,"properties":{"source":{"type":"string"},"via":{"type":"array","items":{"type":"string"}}}}},"asDefinedInRule":{"type":"string"}}},"DependenciesType":{"type":"array","items":{"$ref":"#/definitions/DependencyType"}},"DependencyType":{"type":"object","required":["circular","coreModule","couldNotResolve","dependencyTypes","exoticallyRequired","dynamic","followable","module","moduleSystem","resolved","valid"],"additionalProperties":false,"properties":{"module":{"type":"string"},"protocol":{"type":"string","enum":["data:","file:","node:"]},"mimeType":{"type":"string"},"resolved":{"type":"string"},"coreModule":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"followable":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"type":"string"},"matchesDoNotFollow":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"preCompilationOnly":{"type":"boolean"},"typeOnly":{"type":"boolean"},"circular":{"type":"boolean"},"cycle":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"moduleSystem":{"$ref":"#/definitions/ModuleSystemType"},"valid":{"type":"boolean"},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"instability":{"type":"number"}}},"DependencyTypeType":{"type":"string","enum":["aliased-subpath-import","aliased-tsconfig-base-url","aliased-tsconfig-paths","aliased-tsconfig","aliased-webpack","aliased-workspace","aliased","amd-define","amd-require","amd-exotic-require","core","deprecated","dynamic-import","exotic-require","export","import-equals","import","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","require","triple-slash-amd-dependency","triple-slash-directive","triple-slash-file-reference","triple-slash-type-reference","type-import","type-only","undetermined","unknown"]},"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"]},"MiniDependency":{"type":"object","required":["name","dependencyTypes"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"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":{"$ref":"#/definitions/MiniDependency"}},"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":{"$ref":"#/definitions/MiniDependency"}},"via":{"type":"array","items":{"type":"string"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/REAsStringsType"},"viaOnly":{"$ref":"#/definitions/REAsStringsType"},"viaNot":{"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"OptionsUsedType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"$ref":"#/definitions/CompoundDoNotFollowType"},"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"},"highlight":{"$ref":"#/definitions/CompoundHighlightType"},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"type":"string"},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"builtInModules":{"type":"object","additionalProperties":false,"properties":{"override":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}}}},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array","items":{"type":"string"}},"mainFiles":{"type":"array"},"aliasFields":{"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","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean","enum":[false]},{"$ref":"#/definitions/CacheOptionsType"}]},"args":{"type":"string"},"rulesFile":{"type":"string"},"outputTo":{"type":"string"},"outputType":{"$ref":"#/definitions/OutputType"}}},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"OutputType":{"oneOf":[{"type":"string","enum":["json","html","dot","ddot","cdot","archi","fdot","flat","csv","err","err-long","err-html","teamcity","anon","text","metrics","markdown","mermaid","d2","null"]},{"type":"string","pattern":"^plugin:[^:]+$"}]},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"},"compress":{"type":"boolean","default":false}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"cacheFormatVersion":{"type":"number"},"SHA1":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["name","changeType"],"properties":{"name":{"type":"string"},"changeType":{"type":"string","enum":["added","copied","deleted","modified","renamed","type changed","unmerged","pairing broken","unknown","unmodified","untracked","ignored"]},"oldName":{"type":"string"},"checksum":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"rulesFile":{"type":"string"}}}}}}}}
|
|
1
|
+
/* generated - don't edit */export default {"title":"dependency-cruiser output format","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/cruise-result.schema.json","type":"object","required":["summary","modules"],"additionalProperties":false,"properties":{"modules":{"$ref":"#/definitions/ModulesType"},"folders":{"$ref":"#/definitions/FoldersType"},"summary":{"$ref":"#/definitions/SummaryType"},"revisionData":{"$ref":"#/definitions/RevisionDataType"}},"definitions":{"ModulesType":{"type":"array","items":{"$ref":"#/definitions/ModuleType"}},"ModuleType":{"type":"object","required":["source","dependencies","valid"],"additionalProperties":false,"properties":{"source":{"type":"string"},"valid":{"type":"boolean"},"dependencies":{"$ref":"#/definitions/DependenciesType"},"dependents":{"type":"array","items":{"type":"string"}},"followable":{"type":"boolean"},"matchesDoNotFollow":{"type":"boolean"},"matchesFocus":{"type":"boolean"},"matchesReaches":{"type":"boolean"},"matchesHighlight":{"type":"boolean"},"coreModule":{"type":"boolean"},"couldNotResolve":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"license":{"type":"string"},"orphan":{"type":"boolean"},"reachable":{"type":"array","items":{"$ref":"#/definitions/ReachableType"}},"reaches":{"type":"array","items":{"$ref":"#/definitions/ReachesType"}},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"consolidated":{"type":"boolean"},"instability":{"type":"number"},"checksum":{"type":"string"}}},"ReachableType":{"type":"object","required":["value","asDefinedInRule","matchedFrom"],"additionalProperties":false,"properties":{"value":{"type":"boolean"},"asDefinedInRule":{"type":"string"},"matchedFrom":{"type":"string"}}},"ReachesType":{"type":"object","required":["modules","asDefinedInRule"],"additionalProperties":false,"properties":{"modules":{"type":"array","items":{"type":"object","required":["source","via"],"additionalProperties":false,"properties":{"source":{"type":"string"},"via":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}}}}},"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":{"$ref":"#/definitions/MiniDependency"}},"moduleSystem":{"$ref":"#/definitions/ModuleSystemType"},"valid":{"type":"boolean"},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"instability":{"type":"number"}}},"DependencyTypeType":{"type":"string","enum":["aliased-subpath-import","aliased-tsconfig-base-url","aliased-tsconfig-paths","aliased-tsconfig","aliased-webpack","aliased-workspace","aliased","amd-define","amd-require","amd-exotic-require","core","deprecated","dynamic-import","exotic-require","export","import-equals","import","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","pre-compilation-only","require","triple-slash-amd-dependency","triple-slash-directive","triple-slash-file-reference","triple-slash-type-reference","type-import","type-only","undetermined","unknown"]},"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"]},"MiniDependency":{"type":"object","required":["name","dependencyTypes"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"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":{"$ref":"#/definitions/MiniDependency"}},"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":{"$ref":"#/definitions/MiniDependency"}},"via":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"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"}}},"MiniDependencyRestrictionType":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}}]},"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/MiniDependencyRestrictionType"},"viaOnly":{"$ref":"#/definitions/MiniDependencyRestrictionType"},"viaNot":{"deprecated":true,"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"deprecated":true,"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"DependentsModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"numberOfDependentsLessThan":{"type":"integer","minimum":0,"maximum":100},"numberOfDependentsMoreThan":{"type":"integer","minimum":0,"maximum":100}}},"DependentsFromRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ReachabilityToRestrictionType":{"required":["reachable"],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"reachable":{"type":"boolean"}}},"RequiredModuleRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"RequiredToRestrictionType":{"required":[],"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"REAsStringsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"OptionsUsedType":{"type":"object","additionalProperties":false,"properties":{"doNotFollow":{"$ref":"#/definitions/CompoundDoNotFollowType"},"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"$ref":"#/definitions/CompoundIncludeOnlyType"}]},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"},"highlight":{"$ref":"#/definitions/CompoundHighlightType"},"knownViolations":{"$ref":"#/definitions/ViolationsType"},"collapse":{"type":"string"},"maxDepth":{"type":"integer","minimum":0,"maximum":99},"moduleSystems":{"$ref":"#/definitions/ModuleSystemsType"},"prefix":{"type":"string"},"preserveSymlinks":{"type":"boolean"},"combinedDependencies":{"type":"boolean"},"tsConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"}}},"tsPreCompilationDeps":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["specify"]}]},"extraExtensionsToScan":{"type":"array","items":{"type":"string"}},"externalModuleResolutionStrategy":{"type":"string","enum":["node_modules","yarn-pnp"]},"builtInModules":{"type":"object","additionalProperties":false,"properties":{"override":{"type":"array","items":{"type":"string"}},"add":{"type":"array","items":{"type":"string"}}}},"forceDeriveDependents":{"type":"boolean"},"webpackConfig":{"type":"object","additionalProperties":false,"properties":{"fileName":{"type":"string"},"env":{"oneOf":[{"type":"object"},{"type":"string"}]},"arguments":{"type":"object"}}},"enhancedResolveOptions":{"type":"object","additionalProperties":false,"properties":{"exportsFields":{"type":"array","items":{"type":"string"}},"conditionNames":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}},"mainFields":{"type":"array","items":{"type":"string"}},"mainFiles":{"type":"array"},"aliasFields":{"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","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean","enum":[false]},{"$ref":"#/definitions/CacheOptionsType"}]},"args":{"type":"string"},"rulesFile":{"type":"string"},"outputTo":{"type":"string"},"outputType":{"$ref":"#/definitions/OutputType"}}},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"OutputType":{"oneOf":[{"type":"string","enum":["json","html","dot","ddot","cdot","archi","fdot","flat","csv","err","err-long","err-html","teamcity","anon","text","metrics","markdown","mermaid","d2","null"]},{"type":"string","pattern":"^plugin:[^:]+$"}]},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"},"compress":{"type":"boolean","default":false}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"cacheFormatVersion":{"type":"number"},"SHA1":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["name","changeType"],"properties":{"name":{"type":"string"},"changeType":{"type":"string","enum":["added","copied","deleted","modified","renamed","type changed","unmerged","pairing broken","unknown","unmodified","untracked","ignored"]},"oldName":{"type":"string"},"checksum":{"type":"string"},"args":{"type":"array","items":{"type":"string"}},"rulesFile":{"type":"string"}}}}}}}}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { isModuleOnlyRule, isFolderScope } from "./rule-classifiers.mjs";
|
|
2
3
|
import matchers from "./matchers.mjs";
|
|
4
|
+
// @ts-expect-error ts(2307) - apparently tsc doesn't understand subpath imports yet
|
|
3
5
|
import { extractGroups } from "#utl/regex-util.mjs";
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
*
|
|
7
|
-
* @param {import("../../types/dependency-cruiser.
|
|
8
|
-
* @param {import("../../types/dependency-cruiser.
|
|
9
|
+
* @param {import("../../types/dependency-cruiser.mjs").IModule} pFrom
|
|
10
|
+
* @param {import("../../types/dependency-cruiser.mjs").IDependency} pTo
|
|
9
11
|
* @returns {(pRule) => boolean}
|
|
10
12
|
*/
|
|
11
13
|
function match(pFrom, pTo) {
|
|
@@ -41,15 +43,13 @@ function match(pFrom, pTo) {
|
|
|
41
43
|
) &&
|
|
42
44
|
matchers.toVia(pRule, pTo, lGroups) &&
|
|
43
45
|
matchers.toViaOnly(pRule, pTo, lGroups) &&
|
|
44
|
-
matchers.toViaNot(pRule, pTo, lGroups) &&
|
|
45
|
-
matchers.toviaSomeNot(pRule, pTo, lGroups) &&
|
|
46
46
|
matchers.toIsMoreUnstable(pRule, pFrom, pTo)
|
|
47
47
|
);
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
+
|
|
50
51
|
/**
|
|
51
|
-
*
|
|
52
|
-
* @param {any} pRule
|
|
52
|
+
* @param {import("../../types/rule-set.d.mts").IAnyRuleType} pRule
|
|
53
53
|
* @returns boolean
|
|
54
54
|
*/
|
|
55
55
|
const isInteresting = (pRule) =>
|
|
@@ -107,55 +107,69 @@ function toDependencyTypesNot(pRule, pDependency) {
|
|
|
107
107
|
!intersects(pDependency.dependencyTypes, pRule.to.dependencyTypesNot),
|
|
108
108
|
);
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
110
|
+
|
|
111
|
+
// eslint-disable-next-line complexity
|
|
113
112
|
function toVia(pRule, pDependency, pGroups) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
113
|
+
let lReturnValue = true;
|
|
114
|
+
if (pRule.to.via && pDependency.cycle) {
|
|
115
|
+
if (pRule.to.via.path) {
|
|
116
|
+
lReturnValue = pDependency.cycle.some(({ name }) =>
|
|
117
|
+
name.match(replaceGroupPlaceholders(pRule.to.via.path, pGroups)),
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
if (pRule.to.via.pathNot) {
|
|
121
|
+
lReturnValue = !pDependency.cycle.every(({ name }) =>
|
|
122
|
+
name.match(replaceGroupPlaceholders(pRule.to.via.pathNot, pGroups)),
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
if (pRule.to.via.dependencyTypes) {
|
|
126
|
+
lReturnValue &&= pDependency.cycle.some(({ dependencyTypes }) =>
|
|
127
|
+
pRule.to.via.dependencyTypes.some((pRuleDependencyType) =>
|
|
128
|
+
dependencyTypes.includes(pRuleDependencyType),
|
|
129
|
+
),
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
if (pRule.to.via.dependencyTypesNot) {
|
|
133
|
+
lReturnValue &&= !pDependency.cycle.every(({ dependencyTypes }) =>
|
|
134
|
+
pRule.to.via.dependencyTypesNot.some((pRuleDependencyType) =>
|
|
135
|
+
dependencyTypes.includes(pRuleDependencyType),
|
|
136
|
+
),
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return lReturnValue;
|
|
123
141
|
}
|
|
124
142
|
|
|
143
|
+
// eslint-disable-next-line complexity
|
|
125
144
|
function toViaOnly(pRule, pDependency, pGroups) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
.map(pluckName)
|
|
155
|
-
.every((pVia) =>
|
|
156
|
-
pVia.match(replaceGroupPlaceholders(pRule.to.viaSomeNot, pGroups)),
|
|
157
|
-
)),
|
|
158
|
-
);
|
|
145
|
+
let lReturnValue = true;
|
|
146
|
+
if (pRule.to.viaOnly && pDependency.cycle) {
|
|
147
|
+
if (pRule.to.viaOnly.path) {
|
|
148
|
+
lReturnValue = pDependency.cycle.every(({ name }) =>
|
|
149
|
+
name.match(replaceGroupPlaceholders(pRule.to.viaOnly.path, pGroups)),
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
if (pRule.to.viaOnly.pathNot) {
|
|
153
|
+
lReturnValue = !pDependency.cycle.some(({ name }) =>
|
|
154
|
+
name.match(replaceGroupPlaceholders(pRule.to.viaOnly.pathNot, pGroups)),
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
if (pRule.to.viaOnly.dependencyTypes) {
|
|
158
|
+
lReturnValue &&= pDependency.cycle.every(({ dependencyTypes }) =>
|
|
159
|
+
pRule.to.viaOnly.dependencyTypes.some((pRuleDependencyType) =>
|
|
160
|
+
dependencyTypes.includes(pRuleDependencyType),
|
|
161
|
+
),
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
if (pRule.to.viaOnly.dependencyTypesNot) {
|
|
165
|
+
lReturnValue &&= !pDependency.cycle.some(({ dependencyTypes }) =>
|
|
166
|
+
pRule.to.viaOnly.dependencyTypesNot.some((pRuleDependencyType) =>
|
|
167
|
+
dependencyTypes.includes(pRuleDependencyType),
|
|
168
|
+
),
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return lReturnValue;
|
|
159
173
|
}
|
|
160
174
|
|
|
161
175
|
function toIsMoreUnstable(pRule, pModule, pDependency) {
|
|
@@ -213,8 +227,6 @@ export default {
|
|
|
213
227
|
toDependencyTypesNot,
|
|
214
228
|
toVia,
|
|
215
229
|
toViaOnly,
|
|
216
|
-
toViaNot,
|
|
217
|
-
toviaSomeNot,
|
|
218
230
|
toIsMoreUnstable,
|
|
219
231
|
matchesMoreThanOneDependencyType,
|
|
220
232
|
};
|
package/types/restrictions.d.mts
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
import type { DependencyType } from "./shared-types.mjs";
|
|
2
2
|
|
|
3
|
+
export type MiniDependencyRestrictionType =
|
|
4
|
+
| string
|
|
5
|
+
| string[]
|
|
6
|
+
| {
|
|
7
|
+
/**
|
|
8
|
+
* A regular expression or an array of regular expressions the
|
|
9
|
+
* 'via' module should match to be caught by this rule.
|
|
10
|
+
*/
|
|
11
|
+
path?: string | string[];
|
|
12
|
+
/**
|
|
13
|
+
* A regular expression or an array of regular expressions the
|
|
14
|
+
* 'via' module should match to be caught by this rule.
|
|
15
|
+
*/
|
|
16
|
+
pathNot?: string | string[];
|
|
17
|
+
/**
|
|
18
|
+
* Which dependency types the dependency between this via and the
|
|
19
|
+
* previous one in the 'via chain' should have to be caught by
|
|
20
|
+
* this rule
|
|
21
|
+
*/
|
|
22
|
+
dependencyTypes?: DependencyType[];
|
|
23
|
+
/**
|
|
24
|
+
* Which dependency types the dependency between this via and the
|
|
25
|
+
* previous one in the 'via chain' should _not_ have to be caught by
|
|
26
|
+
* this rule
|
|
27
|
+
*/
|
|
28
|
+
dependencyTypesNot?: DependencyType[];
|
|
29
|
+
};
|
|
30
|
+
|
|
3
31
|
export interface IBaseRestrictionType {
|
|
4
32
|
/**
|
|
5
33
|
* A regular expression or an array of regular expressions that select
|
|
@@ -33,13 +61,6 @@ export interface IToRestriction extends IBaseRestrictionType {
|
|
|
33
61
|
* Whether or not to match when following to the to will ultimately end up in the from.
|
|
34
62
|
*/
|
|
35
63
|
circular?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* "For circular dependencies - whether or not to match cycles that include
|
|
38
|
-
* exclusively modules with this regular expression. This is different from
|
|
39
|
-
* the regular via that already matches when only some of the modules in the
|
|
40
|
-
* cycle satisfy the regular expression
|
|
41
|
-
*/
|
|
42
|
-
via?: string | string[];
|
|
43
64
|
/**
|
|
44
65
|
* For circular dependencies - whether or not to match cycles that include
|
|
45
66
|
* some modules with this regular expression. If you want to match cycles that
|
|
@@ -50,17 +71,26 @@ export interface IToRestriction extends IBaseRestrictionType {
|
|
|
50
71
|
* disallow some cycles with a lower severity - setting up a rule with a via
|
|
51
72
|
* that ignores them in an 'allowed' section.
|
|
52
73
|
*/
|
|
53
|
-
|
|
74
|
+
via?: MiniDependencyRestrictionType;
|
|
75
|
+
/**
|
|
76
|
+
* "For circular dependencies - whether or not to match cycles that include
|
|
77
|
+
* exclusively modules with this regular expression. This is different from
|
|
78
|
+
* the regular via that already matches when only some of the modules in the
|
|
79
|
+
* cycle satisfy the regular expression
|
|
80
|
+
*/
|
|
81
|
+
viaOnly?: MiniDependencyRestrictionType;
|
|
54
82
|
/**
|
|
55
83
|
* For circular dependencies - whether or not to match cycles that include
|
|
56
84
|
* _only_ modules that don't satisfy this regular expression. E.g. to disallow all cycles,
|
|
57
85
|
* except when they go through one specific module. Typically to temporarily
|
|
58
86
|
* allow some cycles until they're removed.
|
|
87
|
+
* @deprecated use viaOnly.pathNot in stead
|
|
59
88
|
*/
|
|
60
89
|
viaNot?: string | string[];
|
|
61
90
|
/**
|
|
62
91
|
* "For circular dependencies - whether or not to match cycles that include
|
|
63
92
|
* _some_ modules that don't satisfy this regular expression.
|
|
93
|
+
* @deprecated use via.pathNot in stead
|
|
64
94
|
*/
|
|
65
95
|
viaSomeNot?: string | string[];
|
|
66
96
|
/**
|
package/types/shared-types.d.mts
CHANGED
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
IRequiredToRestrictionType,
|
|
7
7
|
IDependentsModuleRestrictionType,
|
|
8
8
|
} from "./restrictions.mjs";
|
|
9
|
+
import type { DependencyType } from "./shared-types.mjs";
|
|
9
10
|
|
|
10
11
|
export interface IStrictBaseRestrictionType extends IBaseRestrictionType {
|
|
11
12
|
path?: string;
|
|
@@ -17,12 +18,17 @@ export interface IStrictFromRestriction extends IFromRestriction {
|
|
|
17
18
|
pathNot?: string;
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
export interface IStrictMiniDependencyRestriction
|
|
22
|
+
extends IStrictBaseRestrictionType {
|
|
23
|
+
dependencyTypes?: DependencyType[];
|
|
24
|
+
dependencyTypesNot?: DependencyType[];
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
interface IStrictToRestriction extends IToRestriction {
|
|
21
28
|
path?: string;
|
|
22
29
|
pathNot?: string;
|
|
23
|
-
via?:
|
|
24
|
-
|
|
25
|
-
viaSomeNot?: string;
|
|
30
|
+
via?: IStrictMiniDependencyRestriction;
|
|
31
|
+
viaOnly?: IStrictMiniDependencyRestriction;
|
|
26
32
|
exoticRequire?: string;
|
|
27
33
|
exoticRequireNot?: string;
|
|
28
34
|
license?: string;
|
package/types/violations.d.mts
CHANGED