dependency-cruiser 16.0.0-beta-5 → 16.0.0

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