dependency-cruiser 17.2.0 → 17.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +54 -53
- package/src/cache/options-compatible.mjs +2 -0
- package/src/cli/init-config/build-config.mjs +15 -0
- package/src/cli/init-config/config-template.mjs +7 -0
- package/src/cli/init-config/get-user-input.mjs +8 -1
- package/src/cli/init-config/index.mjs +1 -0
- package/src/enrich/derive/folders/aggregate-to-folders.mjs +7 -7
- package/src/enrich/summarize/summarize-options.mjs +1 -0
- package/src/extract/acorn/estree-helpers.mjs +44 -22
- package/src/extract/acorn/extract-amd-deps.mjs +24 -18
- package/src/extract/acorn/extract-cjs-deps.mjs +43 -15
- package/src/extract/acorn/extract-es6-deps.mjs +6 -3
- package/src/extract/acorn/extract.mjs +13 -2
- package/src/extract/index.mjs +38 -42
- package/src/extract/resolve/module-classifiers.mjs +3 -3
- package/src/extract/tsc/extract-typescript-deps.mjs +81 -11
- package/src/extract/tsc/extract.mjs +8 -1
- package/src/graph-utl/consolidate-module-dependencies.mjs +18 -21
- package/src/graph-utl/consolidate-modules.mjs +19 -19
- package/src/graph-utl/filter-bank.mjs +11 -8
- package/src/main/options/defaults.mjs +1 -0
- package/src/main/resolve-options/normalize.mjs +4 -1
- package/src/meta.cjs +1 -1
- package/src/report/d2.mjs +1 -0
- package/src/report/mermaid.mjs +7 -6
- 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/types/options.d.mts +6 -0
- package/types/shared-types.d.mts +1 -0
package/src/extract/index.mjs
CHANGED
|
@@ -28,43 +28,38 @@ function extractRecursive(
|
|
|
28
28
|
pTranspileOptions,
|
|
29
29
|
)
|
|
30
30
|
: [];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (!pVisited.has(resolved)) {
|
|
39
|
-
return pAll.concat(
|
|
40
|
-
extractRecursive(
|
|
41
|
-
resolved,
|
|
31
|
+
const lReturnValue = [
|
|
32
|
+
{
|
|
33
|
+
source: pFileName,
|
|
34
|
+
...(pCruiseOptions.experimentalStats
|
|
35
|
+
? {
|
|
36
|
+
experimentalStats: extractStats(
|
|
37
|
+
pFileName,
|
|
42
38
|
pCruiseOptions,
|
|
43
|
-
pVisited,
|
|
44
|
-
pDepth + 1,
|
|
45
|
-
pResolveOptions,
|
|
46
39
|
pTranspileOptions,
|
|
47
40
|
),
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
41
|
+
}
|
|
42
|
+
: {}),
|
|
43
|
+
dependencies: lDependencies,
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
// eslint-disable-next-line budapestian/local-variable-pattern
|
|
48
|
+
for (const { resolved, followable, matchesDoNotFollow } of lDependencies) {
|
|
49
|
+
if (followable && !matchesDoNotFollow && !pVisited.has(resolved)) {
|
|
50
|
+
lReturnValue.push(
|
|
51
|
+
...extractRecursive(
|
|
52
|
+
resolved,
|
|
53
|
+
pCruiseOptions,
|
|
54
|
+
pVisited,
|
|
55
|
+
pDepth + 1,
|
|
56
|
+
pResolveOptions,
|
|
57
|
+
pTranspileOptions,
|
|
58
|
+
),
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return lReturnValue;
|
|
68
63
|
}
|
|
69
64
|
|
|
70
65
|
function extractFileDirectoryArray(
|
|
@@ -82,12 +77,13 @@ function extractFileDirectoryArray(
|
|
|
82
77
|
);
|
|
83
78
|
|
|
84
79
|
bus.info("read files: visit dependencies");
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
const lResult = [];
|
|
81
|
+
for (const lFilename of lInitialSources) {
|
|
82
|
+
if (!lVisited.has(lFilename)) {
|
|
83
|
+
lVisited.add(lFilename);
|
|
84
|
+
lResult.push(
|
|
85
|
+
...extractRecursive(
|
|
86
|
+
lFilename,
|
|
91
87
|
pCruiseOptions,
|
|
92
88
|
lVisited,
|
|
93
89
|
0,
|
|
@@ -96,8 +92,8 @@ function extractFileDirectoryArray(
|
|
|
96
92
|
),
|
|
97
93
|
);
|
|
98
94
|
}
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
}
|
|
96
|
+
return lResult;
|
|
101
97
|
}
|
|
102
98
|
|
|
103
99
|
function isNotFollowable({ followable }) {
|
|
@@ -74,9 +74,9 @@ function determineFollowableExtensions(pResolveOptions) {
|
|
|
74
74
|
".less",
|
|
75
75
|
];
|
|
76
76
|
|
|
77
|
-
lKnownUnfollowables
|
|
78
|
-
lReturnValue.delete(
|
|
79
|
-
}
|
|
77
|
+
for (const lUnfollowable of lKnownUnfollowables) {
|
|
78
|
+
lReturnValue.delete(lUnfollowable);
|
|
79
|
+
}
|
|
80
80
|
return lReturnValue;
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -229,6 +229,37 @@ function isCompositeExoticRequire(pASTNode, pObjectName, pPropertyName) {
|
|
|
229
229
|
);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
+
function isTripleCursedCompositeExoticRequire(
|
|
233
|
+
pASTNode,
|
|
234
|
+
pObjectName1,
|
|
235
|
+
pObjectName2,
|
|
236
|
+
pPropertyName,
|
|
237
|
+
) {
|
|
238
|
+
return (
|
|
239
|
+
typescript.SyntaxKind[pASTNode.kind] === "CallExpression" &&
|
|
240
|
+
pASTNode.expression &&
|
|
241
|
+
typescript.SyntaxKind[pASTNode.expression.kind] ===
|
|
242
|
+
"PropertyAccessExpression" &&
|
|
243
|
+
pASTNode.expression.expression &&
|
|
244
|
+
typescript.SyntaxKind[pASTNode.expression.expression.kind] ===
|
|
245
|
+
"PropertyAccessExpression" &&
|
|
246
|
+
// globalThis
|
|
247
|
+
pASTNode.expression.expression.expression &&
|
|
248
|
+
typescript.SyntaxKind[pASTNode.expression.expression.expression.kind] ===
|
|
249
|
+
"Identifier" &&
|
|
250
|
+
pASTNode.expression.expression.expression.escapedText === pObjectName1 &&
|
|
251
|
+
// process
|
|
252
|
+
typescript.SyntaxKind[pASTNode.expression.expression.name.kind] ===
|
|
253
|
+
"Identifier" &&
|
|
254
|
+
pASTNode.expression.expression.name.escapedText === pObjectName2 &&
|
|
255
|
+
// getBuiltinModule
|
|
256
|
+
pASTNode.expression.name &&
|
|
257
|
+
typescript.SyntaxKind[pASTNode.expression.name.kind] === "Identifier" &&
|
|
258
|
+
pASTNode.expression.name.escapedText === pPropertyName &&
|
|
259
|
+
firstArgumentIsAString(pASTNode)
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
|
|
232
263
|
function isExoticRequire(pASTNode, pString) {
|
|
233
264
|
const lRequireStringElements = pString.split(".");
|
|
234
265
|
|
|
@@ -307,7 +338,9 @@ export function walkJSDoc(pObject, pCollection = new Set()) {
|
|
|
307
338
|
if (isJSDocImport(pObject)) {
|
|
308
339
|
pCollection.add(pObject.argument.literal.text);
|
|
309
340
|
} else if (Array.isArray(pObject)) {
|
|
310
|
-
|
|
341
|
+
for (const lValue of pObject) {
|
|
342
|
+
walkJSDoc(lValue, pCollection);
|
|
343
|
+
}
|
|
311
344
|
} else if (typeof pObject === "object") {
|
|
312
345
|
for (const lKey in pObject) {
|
|
313
346
|
if (!keyInJSDocIsIgnorable(lKey) && pObject[lKey]) {
|
|
@@ -363,7 +396,12 @@ function extractJSDocImports(pJSDocNodes) {
|
|
|
363
396
|
* @returns {(pASTNode: Node) => void} - the walker function
|
|
364
397
|
*/
|
|
365
398
|
// eslint-disable-next-line max-lines-per-function
|
|
366
|
-
function walk(
|
|
399
|
+
function walk(
|
|
400
|
+
pResult,
|
|
401
|
+
pExoticRequireStrings,
|
|
402
|
+
pDetectJSDocImports,
|
|
403
|
+
pDetectProcessBuiltinModuleCalls,
|
|
404
|
+
) {
|
|
367
405
|
// eslint-disable-next-line max-lines-per-function
|
|
368
406
|
return (pASTNode) => {
|
|
369
407
|
// require('a-string'), require(`a-template-literal`)
|
|
@@ -377,17 +415,36 @@ function walk(pResult, pExoticRequireStrings, pDetectJSDocImports) {
|
|
|
377
415
|
}
|
|
378
416
|
|
|
379
417
|
// const want = require; {lalala} = want('yudelyo'), window.require('elektron')
|
|
380
|
-
pExoticRequireStrings
|
|
381
|
-
if (isExoticRequire(pASTNode,
|
|
418
|
+
for (const lExoticRequireString of pExoticRequireStrings) {
|
|
419
|
+
if (isExoticRequire(pASTNode, lExoticRequireString)) {
|
|
382
420
|
pResult.push({
|
|
383
421
|
module: pASTNode.arguments[0].text,
|
|
384
422
|
moduleSystem: "cjs",
|
|
385
423
|
exoticallyRequired: true,
|
|
386
|
-
exoticRequire:
|
|
424
|
+
exoticRequire: lExoticRequireString,
|
|
387
425
|
dependencyTypes: ["exotic-require"],
|
|
388
426
|
});
|
|
389
427
|
}
|
|
390
|
-
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// const path = process.getBuiltinModule('node:path'); const fs = globalThis.process.getBuiltinModule(`node:fs`);
|
|
431
|
+
if (
|
|
432
|
+
pDetectProcessBuiltinModuleCalls &&
|
|
433
|
+
(isCompositeExoticRequire(pASTNode, "process", "getBuiltinModule") ||
|
|
434
|
+
isTripleCursedCompositeExoticRequire(
|
|
435
|
+
pASTNode,
|
|
436
|
+
"globalThis",
|
|
437
|
+
"process",
|
|
438
|
+
"getBuiltinModule",
|
|
439
|
+
))
|
|
440
|
+
) {
|
|
441
|
+
pResult.push({
|
|
442
|
+
module: pASTNode.arguments[0].text,
|
|
443
|
+
moduleSystem: "cjs",
|
|
444
|
+
exoticallyRequired: false,
|
|
445
|
+
dependencyTypes: ["process-get-builtin-module"],
|
|
446
|
+
});
|
|
447
|
+
}
|
|
391
448
|
|
|
392
449
|
// import('a-string'), import(`a-template-literal`)
|
|
393
450
|
if (isDynamicImportExpression(pASTNode)) {
|
|
@@ -418,13 +475,18 @@ function walk(pResult, pExoticRequireStrings, pDetectJSDocImports) {
|
|
|
418
475
|
|
|
419
476
|
// pResult = pResult.concat(lJSDocImports) looks like the more obvious
|
|
420
477
|
// way to do this, but it re-assigns the pResult parameter
|
|
421
|
-
lJSDocImports
|
|
422
|
-
pResult.push(
|
|
423
|
-
}
|
|
478
|
+
for (const lImport of lJSDocImports) {
|
|
479
|
+
pResult.push(lImport);
|
|
480
|
+
}
|
|
424
481
|
}
|
|
425
482
|
typescript.forEachChild(
|
|
426
483
|
pASTNode,
|
|
427
|
-
walk(
|
|
484
|
+
walk(
|
|
485
|
+
pResult,
|
|
486
|
+
pExoticRequireStrings,
|
|
487
|
+
pDetectJSDocImports,
|
|
488
|
+
pDetectProcessBuiltinModuleCalls,
|
|
489
|
+
),
|
|
428
490
|
);
|
|
429
491
|
};
|
|
430
492
|
}
|
|
@@ -442,10 +504,16 @@ function extractNestedDependencies(
|
|
|
442
504
|
pAST,
|
|
443
505
|
pExoticRequireStrings,
|
|
444
506
|
pDetectJSDocImports,
|
|
507
|
+
pDetectProcessBuiltinModuleCalls,
|
|
445
508
|
) {
|
|
446
509
|
let lResult = [];
|
|
447
510
|
|
|
448
|
-
walk(
|
|
511
|
+
walk(
|
|
512
|
+
lResult,
|
|
513
|
+
pExoticRequireStrings,
|
|
514
|
+
pDetectJSDocImports,
|
|
515
|
+
pDetectProcessBuiltinModuleCalls,
|
|
516
|
+
)(pAST);
|
|
449
517
|
|
|
450
518
|
return lResult;
|
|
451
519
|
}
|
|
@@ -459,6 +527,7 @@ export default function extractTypeScriptDependencies(
|
|
|
459
527
|
pTypeScriptAST,
|
|
460
528
|
pExoticRequireStrings,
|
|
461
529
|
pDetectJSDocImports,
|
|
530
|
+
pDetectProcessBuiltinModuleCalls,
|
|
462
531
|
) {
|
|
463
532
|
// console.dir(pTypeScriptAST, { depth: 100 });
|
|
464
533
|
return typescript
|
|
@@ -471,6 +540,7 @@ export default function extractTypeScriptDependencies(
|
|
|
471
540
|
pTypeScriptAST,
|
|
472
541
|
pExoticRequireStrings,
|
|
473
542
|
pDetectJSDocImports,
|
|
543
|
+
pDetectProcessBuiltinModuleCalls,
|
|
474
544
|
),
|
|
475
545
|
)
|
|
476
546
|
.map((pModule) => ({ dynamic: false, ...pModule }))
|
|
@@ -13,7 +13,13 @@ export function shouldUse({ tsPreCompilationDeps, parser }, pFileName) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export function extract(
|
|
16
|
-
{
|
|
16
|
+
{
|
|
17
|
+
baseDir,
|
|
18
|
+
exoticRequireStrings,
|
|
19
|
+
moduleSystems,
|
|
20
|
+
detectJSDocImports,
|
|
21
|
+
detectProcessBuiltinModuleCalls,
|
|
22
|
+
},
|
|
17
23
|
pFileName,
|
|
18
24
|
pTranspileOptions,
|
|
19
25
|
) {
|
|
@@ -21,6 +27,7 @@ export function extract(
|
|
|
21
27
|
getASTCached(join(baseDir, pFileName), pTranspileOptions),
|
|
22
28
|
exoticRequireStrings,
|
|
23
29
|
detectJSDocImports,
|
|
30
|
+
detectProcessBuiltinModuleCalls,
|
|
24
31
|
).filter(({ moduleSystem }) => moduleSystems.includes(moduleSystem));
|
|
25
32
|
}
|
|
26
33
|
|
|
@@ -20,17 +20,17 @@ function mergeDependency(pLeftDependency, pRightDependency) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
function mergeDependencies(pResolvedName, pDependencies) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
let lReturnValue = {
|
|
24
|
+
dependencyTypes: [],
|
|
25
|
+
rules: [],
|
|
26
|
+
valid: true,
|
|
27
|
+
};
|
|
28
|
+
for (const lDependency of pDependencies) {
|
|
29
|
+
if (lDependency.resolved === pResolvedName) {
|
|
30
|
+
lReturnValue = mergeDependency(lReturnValue, lDependency);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return lReturnValue;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/**
|
|
@@ -38,17 +38,14 @@ function mergeDependencies(pResolvedName, pDependencies) {
|
|
|
38
38
|
* @returns {IDependency[]}
|
|
39
39
|
*/
|
|
40
40
|
function consolidateDependencies(pDependencies) {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const lProcessed = new Set();
|
|
42
|
+
const lReturnValue = [];
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
mergeDependencies(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// eslint-disable-next-line no-loop-func
|
|
50
|
-
(pDependency) => pDependency.resolved !== lDependencies[0].resolved,
|
|
51
|
-
);
|
|
44
|
+
for (const lDependency of pDependencies) {
|
|
45
|
+
if (!lProcessed.has(lDependency.resolved)) {
|
|
46
|
+
lReturnValue.push(mergeDependencies(lDependency.resolved, pDependencies));
|
|
47
|
+
lProcessed.add(lDependency.resolved);
|
|
48
|
+
}
|
|
52
49
|
}
|
|
53
50
|
|
|
54
51
|
return lReturnValue;
|
|
@@ -18,29 +18,29 @@ function mergeModule(pLeftModule, pRightModule) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function mergeModules(pSourceString, pModules) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
let lReturnValue = {
|
|
22
|
+
dependencies: [],
|
|
23
|
+
rules: [],
|
|
24
|
+
valid: true,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
for (const lModule of pModules) {
|
|
28
|
+
if (lModule.source === pSourceString) {
|
|
29
|
+
lReturnValue = mergeModule(lReturnValue, lModule);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return lReturnValue;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export default function consolidateModules(pModules) {
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const lProcessed = new Set();
|
|
37
|
+
const lReturnValue = [];
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
);
|
|
39
|
+
for (const lModule of pModules) {
|
|
40
|
+
if (!lProcessed.has(lModule.source)) {
|
|
41
|
+
lReturnValue.push(mergeModules(lModule.source, pModules));
|
|
42
|
+
lProcessed.add(lModule.source);
|
|
43
|
+
}
|
|
44
44
|
}
|
|
45
45
|
return lReturnValue;
|
|
46
46
|
}
|
|
@@ -47,22 +47,25 @@ function filterReaches(pModules, pReachesFilter) {
|
|
|
47
47
|
.filter((pModule) => moduleMatchesFilter(pModule, pReachesFilter))
|
|
48
48
|
.map(({ source }) => source);
|
|
49
49
|
|
|
50
|
-
/** @type {
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
/** @type {Set<string>} */
|
|
51
|
+
const lReachingModules = new Set();
|
|
52
|
+
const lIndexedModules = new IndexedModuleGraph(pModules);
|
|
53
53
|
|
|
54
54
|
for (let lModuleToReach of lModuleNamesToReach) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
)
|
|
55
|
+
for (let lDependent of lIndexedModules.findTransitiveDependents(
|
|
56
|
+
lModuleToReach,
|
|
57
|
+
)) {
|
|
58
|
+
lReachingModules.add(lDependent);
|
|
59
|
+
}
|
|
58
60
|
}
|
|
61
|
+
|
|
59
62
|
return pModules
|
|
60
|
-
.filter(({ source }) => lReachingModules.
|
|
63
|
+
.filter(({ source }) => lReachingModules.has(source))
|
|
61
64
|
.map((pModule) => ({
|
|
62
65
|
...pModule,
|
|
63
66
|
matchesReaches: lModuleNamesToReach.includes(pModule.source),
|
|
64
67
|
dependencies: pModule.dependencies.filter(({ resolved }) =>
|
|
65
|
-
lReachingModules.
|
|
68
|
+
lReachingModules.has(resolved),
|
|
66
69
|
),
|
|
67
70
|
}));
|
|
68
71
|
}
|
|
@@ -157,7 +157,10 @@ export default async function normalizeResolveOptions(
|
|
|
157
157
|
// - true => symlinks are NOT followed (vv)
|
|
158
158
|
// => symlinks = !preserveSymlinks
|
|
159
159
|
symlinks: !pOptions?.preserveSymlinks,
|
|
160
|
-
tsConfig:
|
|
160
|
+
tsConfig:
|
|
161
|
+
pOptions?.tsConfig?.fileName ??
|
|
162
|
+
pOptions?.ruleSet?.options?.tsConfig?.fileName ??
|
|
163
|
+
null,
|
|
161
164
|
|
|
162
165
|
/* squirrel the externalModuleResolutionStrategy and combinedDependencies
|
|
163
166
|
thing into the resolve options
|
package/src/meta.cjs
CHANGED
package/src/report/d2.mjs
CHANGED
package/src/report/mermaid.mjs
CHANGED
|
@@ -65,8 +65,8 @@ function renderSubgraphs(pSource, pOptions, pDepth = 0) {
|
|
|
65
65
|
function convertSubgraphSources(pCruiseResult, pNamesHashMap) {
|
|
66
66
|
let lTree = {};
|
|
67
67
|
|
|
68
|
-
pCruiseResult.modules
|
|
69
|
-
const lPaths =
|
|
68
|
+
for (const lModule of pCruiseResult.modules) {
|
|
69
|
+
const lPaths = lModule.source.split("/");
|
|
70
70
|
|
|
71
71
|
lPaths.reduce((pChildren, pCurrentPath, pIndex) => {
|
|
72
72
|
if (!pChildren[pCurrentPath]) {
|
|
@@ -79,7 +79,7 @@ function convertSubgraphSources(pCruiseResult, pNamesHashMap) {
|
|
|
79
79
|
}
|
|
80
80
|
return pChildren[pCurrentPath].children;
|
|
81
81
|
}, lTree);
|
|
82
|
-
}
|
|
82
|
+
}
|
|
83
83
|
|
|
84
84
|
return lTree;
|
|
85
85
|
}
|
|
@@ -121,12 +121,13 @@ function hashModuleNames(pModules, pMinify) {
|
|
|
121
121
|
const lNamesHashMap = new Map();
|
|
122
122
|
let lCount = 0;
|
|
123
123
|
|
|
124
|
-
pModules
|
|
125
|
-
const lPaths =
|
|
124
|
+
for (const lModule of pModules) {
|
|
125
|
+
const lPaths = lModule.source.split("/");
|
|
126
126
|
|
|
127
127
|
for (let lIndex = 0; lIndex < lPaths.length; lIndex += 1) {
|
|
128
128
|
const lName = lPaths.slice(0, lIndex + 1).join("/");
|
|
129
129
|
if (!lNamesHashMap.has(lName)) {
|
|
130
|
+
// eslint-disable-next-line max-depth
|
|
130
131
|
if (pMinify) {
|
|
131
132
|
// toUpperCase because otherwise we generate e.g. o-->a and x-->a
|
|
132
133
|
// which are ambiguous in mermaid (o--> and x--> are edge shapes
|
|
@@ -145,7 +146,7 @@ function hashModuleNames(pModules, pMinify) {
|
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
|
-
}
|
|
149
|
+
}
|
|
149
150
|
|
|
150
151
|
return lNamesHashMap;
|
|
151
152
|
}
|
|
@@ -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:{$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","jsdoc","jsdoc-bracket-import","jsdoc-import-tag","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
|
+
/* 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","jsdoc","jsdoc-bracket-import","jsdoc-import-tag","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","pre-compilation-only","process-get-builtin-module","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"}}},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"},ancestor:{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"},reachable:{type:"boolean"}}},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","jsdoc","jsdoc-bracket-import","jsdoc-import-tag","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"}]},affected:{oneOf:[{type:"string"},{type:"boolean"}]},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"},detectJSDocImports:{type:"boolean"},prefix:{type:"string"},suffix:{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",deprecated:true},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","tsc","swc"]},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"},experimentalStats:{type:"boolean"},skipAnalysisNotInRules:{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","size","topLevelStatementCount"]},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
|
+
/* 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"},ancestor:{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"},reachable:{type:"boolean"}}},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","jsdoc","jsdoc-bracket-import","jsdoc-import-tag","local","localmodule","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","npm","pre-compilation-only","process-get-builtin-module","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"}]},affected:{oneOf:[{type:"string"},{type:"boolean"}]},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"},detectJSDocImports:{type:"boolean"},detectProcessBuiltinModuleCalls:{type:"boolean"},prefix:{type:"string"},suffix:{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",deprecated:true},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","tsc","swc"]},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"},experimentalStats:{type:"boolean"},skipAnalysisNotInRules:{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","size","topLevelStatementCount"]},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"}}]}}};
|