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.
@@ -28,43 +28,38 @@ function extractRecursive(
28
28
  pTranspileOptions,
29
29
  )
30
30
  : [];
31
-
32
- return lDependencies
33
- .filter(
34
- ({ followable, matchesDoNotFollow }) => followable && !matchesDoNotFollow,
35
- )
36
- .reduce(
37
- (pAll, { resolved }) => {
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
- return pAll;
51
- },
52
- [
53
- {
54
- source: pFileName,
55
- ...(pCruiseOptions.experimentalStats
56
- ? {
57
- experimentalStats: extractStats(
58
- pFileName,
59
- pCruiseOptions,
60
- pTranspileOptions,
61
- ),
62
- }
63
- : {}),
64
- dependencies: lDependencies,
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
- return lInitialSources.reduce((pDependencies, pFilename) => {
86
- if (!lVisited.has(pFilename)) {
87
- lVisited.add(pFilename);
88
- return pDependencies.concat(
89
- extractRecursive(
90
- pFilename,
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
- return pDependencies;
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.forEach((pUnfollowable) => {
78
- lReturnValue.delete(pUnfollowable);
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
- pObject.forEach((pValue) => walkJSDoc(pValue, pCollection));
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(pResult, pExoticRequireStrings, pDetectJSDocImports) {
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.forEach((pExoticRequireString) => {
381
- if (isExoticRequire(pASTNode, pExoticRequireString)) {
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: pExoticRequireString,
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.forEach((pImport) => {
422
- pResult.push(pImport);
423
- });
478
+ for (const lImport of lJSDocImports) {
479
+ pResult.push(lImport);
480
+ }
424
481
  }
425
482
  typescript.forEachChild(
426
483
  pASTNode,
427
- walk(pResult, pExoticRequireStrings, pDetectJSDocImports),
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(lResult, pExoticRequireStrings, pDetectJSDocImports)(pAST);
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
- { baseDir, exoticRequireStrings, moduleSystems, detectJSDocImports },
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
- return pDependencies
24
- .filter((pDependency) => pDependency.resolved === pResolvedName)
25
- .reduce(
26
- (pAllDependencies, pCurrentDependency) =>
27
- mergeDependency(pAllDependencies, pCurrentDependency),
28
- {
29
- dependencyTypes: [],
30
- rules: [],
31
- valid: true,
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
- let lDependencies = structuredClone(pDependencies);
42
- let lReturnValue = [];
41
+ const lProcessed = new Set();
42
+ const lReturnValue = [];
43
43
 
44
- while (lDependencies.length > 0) {
45
- lReturnValue.push(
46
- mergeDependencies(lDependencies[0].resolved, lDependencies),
47
- );
48
- lDependencies = lDependencies.filter(
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
- return pModules
22
- .filter((pModule) => pModule.source === pSourceString)
23
- .reduce(
24
- (pMergedModule, pCurrentModule) =>
25
- mergeModule(pMergedModule, pCurrentModule),
26
- {
27
- dependencies: [],
28
- rules: [],
29
- valid: true,
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
- let lModules = structuredClone(pModules);
36
- let lReturnValue = [];
36
+ const lProcessed = new Set();
37
+ const lReturnValue = [];
37
38
 
38
- while (lModules.length > 0) {
39
- lReturnValue.push(mergeModules(lModules[0].source, lModules));
40
- lModules = lModules.filter(
41
- // eslint-disable-next-line no-loop-func
42
- (pModule) => pModule.source !== lModules[0].source,
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 {Array<string>} */
51
- let lReachingModules = [];
52
- let lIndexedModules = new IndexedModuleGraph(pModules);
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
- lReachingModules = lReachingModules.concat(
56
- lIndexedModules.findTransitiveDependents(lModuleToReach),
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.includes(source))
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.includes(resolved),
68
+ lReachingModules.has(resolved),
66
69
  ),
67
70
  }));
68
71
  }
@@ -4,6 +4,7 @@ export default {
4
4
  maxDepth: 0,
5
5
  moduleSystems: ["es6", "cjs", "tsd", "amd"],
6
6
  detectJSDocImports: false,
7
+ detectProcessBuiltinModuleCalls: false,
7
8
  skipAnalysisNotInRules: false,
8
9
  tsPreCompilationDeps: false,
9
10
  preserveSymlinks: false,
@@ -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: pOptions?.ruleSet?.options?.tsConfig?.fileName ?? null,
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
@@ -1,7 +1,7 @@
1
1
  /* generated - don't edit */
2
2
 
3
3
  module.exports = {
4
- version: "17.2.0",
4
+ version: "17.3.1",
5
5
  engines: {
6
6
  node: "^20.12||^22||>=24",
7
7
  },
package/src/report/d2.mjs CHANGED
@@ -52,6 +52,7 @@ function getVertexName(pSource) {
52
52
  * @returns {string}
53
53
  */
54
54
 
55
+ // eslint-disable-next-line complexity
55
56
  function getModuleAttributes(pModule, pOptions) {
56
57
  let lReturnValue = "class: module";
57
58
  if (pModule.consolidated) {
@@ -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.forEach((pModule) => {
69
- const lPaths = pModule.source.split("/");
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.forEach((pModule) => {
125
- const lPaths = pModule.source.split("/");
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"}}]}}};