dependency-cruiser 16.2.4 → 16.3.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.
Files changed (39) hide show
  1. package/package.json +2 -2
  2. package/src/cache/options-compatible.mjs +1 -0
  3. package/src/enrich/derive/folders/aggregate-to-folders.mjs +28 -10
  4. package/src/extract/{ast-extractors → acorn}/estree-helpers.mjs +3 -3
  5. package/src/extract/acorn/extract-stats.mjs +6 -0
  6. package/src/extract/acorn/extract.mjs +32 -0
  7. package/src/extract/clear-caches.mjs +6 -6
  8. package/src/extract/{get-dependencies.mjs → extract-dependencies.mjs} +37 -109
  9. package/src/extract/extract-stats.mjs +48 -0
  10. package/src/extract/helpers.mjs +20 -1
  11. package/src/extract/index.mjs +13 -3
  12. package/src/extract/resolve/merge-manifests.mjs +6 -8
  13. package/src/extract/{ast-extractors → swc}/extract-swc-deps.mjs +1 -1
  14. package/src/extract/swc/extract.mjs +20 -0
  15. package/src/extract/transpile/index.mjs +3 -3
  16. package/src/extract/tsc/extract-stats.mjs +6 -0
  17. package/src/extract/tsc/extract.mjs +29 -0
  18. package/src/graph-utl/consolidate-module-dependencies.mjs +3 -6
  19. package/src/main/options/normalize.mjs +1 -4
  20. package/src/main/report-wrap.mjs +7 -2
  21. package/src/meta.cjs +1 -1
  22. package/src/report/dot/default-theme.mjs +4 -0
  23. package/src/report/dot-webpage/dot-module.mjs +2 -3
  24. package/src/report/metrics.mjs +226 -72
  25. package/src/report/utl/index.mjs +3 -0
  26. package/src/schema/configuration.schema.mjs +1 -1
  27. package/src/schema/cruise-result.schema.mjs +1 -1
  28. package/src/utl/array-util.mjs +4 -0
  29. package/types/cruise-result.d.mts +11 -0
  30. package/types/options.d.mts +10 -1
  31. package/types/shared-types.d.mts +15 -0
  32. /package/src/extract/{ast-extractors → acorn}/extract-amd-deps.mjs +0 -0
  33. /package/src/extract/{ast-extractors → acorn}/extract-cjs-deps.mjs +0 -0
  34. /package/src/extract/{ast-extractors → acorn}/extract-es6-deps.mjs +0 -0
  35. /package/src/extract/{parse/to-javascript-ast.mjs → acorn/parse.mjs} +0 -0
  36. /package/src/extract/{ast-extractors/swc-dependency-visitor.mjs → swc/dependency-visitor.mjs} +0 -0
  37. /package/src/extract/{parse/to-swc-ast.mjs → swc/parse.mjs} +0 -0
  38. /package/src/extract/{ast-extractors → tsc}/extract-typescript-deps.mjs +0 -0
  39. /package/src/extract/{parse/to-typescript-ast.mjs → tsc/parse.mjs} +0 -0
package/src/meta.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /* generated - don't edit */
2
2
 
3
3
  module.exports = {
4
- version: "16.2.4",
4
+ version: "16.3.0",
5
5
  engines: {
6
6
  node: "^18.17||>=20",
7
7
  },
@@ -138,6 +138,10 @@ export default {
138
138
  },
139
139
  attributes: { arrowhead: "onormal", penwidth: "1.0" },
140
140
  },
141
+ {
142
+ criteria: { dependencyTypes: ["export"] },
143
+ attributes: { arrowhead: "inv" },
144
+ },
141
145
  {
142
146
  criteria: { dependencyTypes: "core" },
143
147
  attributes: { style: "dashed", penwidth: "1.0" },
@@ -24,7 +24,7 @@ function convert(pDot, pOptions) {
24
24
  },
25
25
  );
26
26
  if (status === 0) {
27
- return stdout.toString("binary");
27
+ return stdout.toString("utf8");
28
28
  } else if (error) {
29
29
  throw error;
30
30
  } else {
@@ -61,8 +61,6 @@ function isAvailable(pOptions) {
61
61
  * @returns {IReporterOutput}
62
62
  */
63
63
  export default function dotWebpage(pResults, pDotWebpageReporterOptions) {
64
- const { output } = dotModuleReporter(pResults, pDotWebpageReporterOptions);
65
-
66
64
  if (!isAvailable(pDotWebpageReporterOptions)) {
67
65
  throw new Error(
68
66
  "GraphViz dot, which is required for the 'x-dot-webpage' reporter doesn't " +
@@ -70,6 +68,7 @@ export default function dotWebpage(pResults, pDotWebpageReporterOptions) {
70
68
  "instruction on how to get it on your system: https://www.graphviz.org/download/",
71
69
  );
72
70
  }
71
+ const { output } = dotModuleReporter(pResults, pDotWebpageReporterOptions);
73
72
  return {
74
73
  output: wrapInHTML(convert(output, pDotWebpageReporterOptions)),
75
74
  exitCode: 0,
@@ -1,65 +1,164 @@
1
1
  import { EOL } from "node:os";
2
2
  import chalk from "chalk";
3
- import { formatPercentage } from "./utl/index.mjs";
3
+ import { formatNumber, formatPercentage } from "./utl/index.mjs";
4
4
 
5
- const DECIMAL_BASE = 10;
6
- const METRIC_WIDTH = 5;
7
- const COMPONENT_HEADER = "name";
8
-
9
- function getHeader(pMaxNameWidth) {
10
- return `${COMPONENT_HEADER.padEnd(pMaxNameWidth)} ${"N".padStart(
11
- METRIC_WIDTH + 1
12
- )} ${"Ca".padStart(METRIC_WIDTH + 1)} ${"Ce".padStart(
13
- METRIC_WIDTH + 1
14
- )} ${"I (%)".padStart(METRIC_WIDTH + 1)}`;
15
- }
5
+ /**
6
+ * @typedef {"string"|"integer"|"percent"} ColumnFormatType
7
+ * @typedef {{title: string; format: ColumnFormatType; width: string}} IColumnMetaData
8
+ * @typedef {Map<string,IColumnMetaData>} IMeta
9
+ * @typedef {{name: string; moduleCount: number; afferentCouplings:number; efferentCouplings:number; instability:number; size:number; topLevelStatementCount:number;}} IData
10
+ * @typedef {{meta: IMeta; data: IData[]}} ITableObject
11
+ */
16
12
 
17
- function getDemarcationLine(pMaxNameWidth) {
18
- return `${"-".repeat(pMaxNameWidth)} ${"-".repeat(
19
- METRIC_WIDTH + 1
20
- )} ${"-".repeat(METRIC_WIDTH + 1)} ${"-".repeat(
21
- METRIC_WIDTH + 1
22
- )} ${"-".repeat(METRIC_WIDTH + 1)}`;
23
- }
13
+ const METRIC_WIDTH = 5;
24
14
 
25
- function getMetricsTable(pMetrics, pMaxNameWidth) {
26
- return pMetrics.map(
27
- ({
28
- name,
29
- moduleCount,
30
- afferentCouplings,
31
- efferentCouplings,
32
- instability,
33
- }) =>
34
- `${name.padEnd(pMaxNameWidth, " ")} ${moduleCount
35
- .toString(DECIMAL_BASE)
36
- .padStart(METRIC_WIDTH)} ${afferentCouplings
37
- .toString(DECIMAL_BASE)
38
- .padStart(METRIC_WIDTH)} ${efferentCouplings
39
- .toString(DECIMAL_BASE)
40
- .padStart(METRIC_WIDTH)} ${formatPercentage(instability).padStart(
41
- METRIC_WIDTH
42
- )}`
43
- );
15
+ function getMetricsFromFolder({
16
+ name,
17
+ moduleCount,
18
+ afferentCouplings,
19
+ efferentCouplings,
20
+ instability,
21
+ experimentalStats,
22
+ }) {
23
+ const lReturnValue = {
24
+ type: "folder",
25
+ name,
26
+ moduleCount,
27
+ afferentCouplings,
28
+ efferentCouplings,
29
+ instability,
30
+ };
31
+ if (experimentalStats) {
32
+ lReturnValue.size = experimentalStats.size;
33
+ lReturnValue.topLevelStatementCount =
34
+ experimentalStats.topLevelStatementCount;
35
+ }
36
+ return lReturnValue;
44
37
  }
45
38
 
46
- function metricifyModule({ source, dependents, dependencies, instability }) {
47
- return {
39
+ /**
40
+ *
41
+ * @param {import("../../types/cruise-result.mjs").IModule} param0
42
+ * @returns
43
+ */
44
+ function getMetricsFromModule({
45
+ source,
46
+ dependents,
47
+ dependencies,
48
+ instability,
49
+ experimentalStats,
50
+ }) {
51
+ const lReturnValue = {
52
+ type: "module",
48
53
  name: source,
49
54
  moduleCount: 1,
50
55
  afferentCouplings: dependents.length,
51
56
  efferentCouplings: dependencies.length,
52
57
  instability,
53
58
  };
59
+ if (experimentalStats) {
60
+ lReturnValue.size = experimentalStats.size;
61
+ lReturnValue.topLevelStatementCount =
62
+ experimentalStats.topLevelStatementCount;
63
+ }
64
+ return lReturnValue;
54
65
  }
55
66
 
56
67
  function metricsAreCalculable(pModule) {
57
- return Object.prototype.hasOwnProperty.call(pModule, "instability");
68
+ return Object.hasOwn(pModule, "instability");
69
+ }
70
+
71
+ function componentIsCalculable(pComponent) {
72
+ return (
73
+ Number.isInteger(pComponent.moduleCount) && pComponent.moduleCount > -1
74
+ );
75
+ }
76
+
77
+ /**
78
+ *
79
+ * @param {{modules: import("../../types/cruise-result.mjs").IModule[]; folders: import("../../types/cruise-result.mjs").IFolder[];}} param0
80
+ * @param {smallIntegerWidth:number; largeIntegerWidth: number} param1
81
+ * @returns {ITableObject}
82
+ */
83
+ // eslint-disable-next-line max-lines-per-function
84
+ function transformToTableObject(
85
+ { modules, folders },
86
+ { smallIntegerWidth, largeIntegerWidth },
87
+ ) {
88
+ const lReturnValue = {
89
+ meta: new Map([
90
+ ["type", { width: 6, title: "type", format: "string" }],
91
+ ["name", { width: 0, title: "name", format: "string" }],
92
+ [
93
+ "moduleCount",
94
+ {
95
+ width: smallIntegerWidth,
96
+ title: "N",
97
+ format: "integer",
98
+ },
99
+ ],
100
+ [
101
+ "afferentCouplings",
102
+ {
103
+ width: smallIntegerWidth,
104
+ title: "Ca",
105
+ format: "integer",
106
+ },
107
+ ],
108
+ [
109
+ "efferentCouplings",
110
+ {
111
+ width: smallIntegerWidth,
112
+ title: "Ce",
113
+ format: "integer",
114
+ },
115
+ ],
116
+ [
117
+ "instability",
118
+ {
119
+ width: smallIntegerWidth,
120
+ title: "I (%)",
121
+ format: "percent",
122
+ },
123
+ ],
124
+ [
125
+ "size",
126
+ {
127
+ width: largeIntegerWidth,
128
+ title: "size",
129
+ format: "integer",
130
+ },
131
+ ],
132
+ [
133
+ "topLevelStatementCount",
134
+ {
135
+ width: smallIntegerWidth,
136
+ title: "#tls",
137
+ format: "integer",
138
+ },
139
+ ],
140
+ ]),
141
+ data: [],
142
+ };
143
+ lReturnValue.data = folders
144
+ .map(getMetricsFromFolder)
145
+ .concat(modules.filter(metricsAreCalculable).map(getMetricsFromModule))
146
+ .filter(componentIsCalculable);
147
+
148
+ const lMaxNameWidth = lReturnValue.data
149
+ .map(({ name }) => name.length)
150
+ .concat(lReturnValue.meta.get("name").title.length)
151
+ .sort((pLeft, pRight) => pLeft - pRight)
152
+ .pop();
153
+ lReturnValue.meta.get("name").width = lMaxNameWidth;
154
+
155
+ return lReturnValue;
58
156
  }
59
157
 
60
158
  function orderByNumber(pAttributeName) {
61
- // eslint-disable-next-line security/detect-object-injection
62
- return (pLeft, pRight) => pRight[pAttributeName] - pLeft[pAttributeName];
159
+ return (pLeft, pRight) =>
160
+ // eslint-disable-next-line security/detect-object-injection
161
+ (pRight[pAttributeName] || 0) - (pLeft[pAttributeName] || 0);
63
162
  }
64
163
 
65
164
  function orderByString(pAttributeName) {
@@ -67,43 +166,98 @@ function orderByString(pAttributeName) {
67
166
  // eslint-disable-next-line security/detect-object-injection
68
167
  pLeft[pAttributeName].localeCompare(pRight[pAttributeName]);
69
168
  }
169
+ /**
170
+ * @param {IMeta} pMetaData
171
+ * @returns {string}
172
+ */
173
+ function formatToTextHeader(pMetaData) {
174
+ return Array.from(pMetaData.values())
175
+ .map(({ title, width, format }) =>
176
+ format === "string" ? title.padEnd(width + 1) : title.padStart(width + 1),
177
+ )
178
+ .join(" ");
179
+ }
70
180
 
71
- function componentIsCalculable(pComponent) {
72
- return (
73
- Number.isInteger(pComponent.moduleCount) && pComponent.moduleCount > -1
74
- );
181
+ /**
182
+ * @param {IMeta} pMetaData
183
+ * @returns {string}
184
+ */
185
+ function formatToTextDemarcationLine(pMetaData) {
186
+ return Array.from(pMetaData.values())
187
+ .map(({ width }) => "-".repeat(width + 1))
188
+ .join(" ");
189
+ }
190
+
191
+ /**
192
+ * @param {IData[]} pData
193
+ * @param {IMeta} pMetaData
194
+ * @returns {string}
195
+ */
196
+ function formatToTextData(pData, pMetaData) {
197
+ return pData
198
+ .map((pRow) => {
199
+ return Object.keys(pRow)
200
+ .map((pKey) => {
201
+ const lMeta = pMetaData.get(pKey);
202
+ if (lMeta.format === "string") {
203
+ // eslint-disable-next-line security/detect-object-injection
204
+ return pRow[pKey].padEnd(lMeta.width + 1);
205
+ }
206
+ if (lMeta.format === "percent") {
207
+ // eslint-disable-next-line security/detect-object-injection
208
+ return formatPercentage(pRow[pKey]).padStart(lMeta.width + 1);
209
+ }
210
+ // eslint-disable-next-line security/detect-object-injection
211
+ return Number.isInteger(pRow[pKey])
212
+ ? // eslint-disable-next-line security/detect-object-injection
213
+ formatNumber(pRow[pKey]).padStart(lMeta.width + 1)
214
+ : "".padStart(lMeta.width + 1);
215
+ })
216
+ .join(" ");
217
+ })
218
+ .join(EOL);
219
+ }
220
+
221
+ /**
222
+ * @param {IData[]} pData
223
+ * @param {IMeta} pMetaData
224
+ * @returns {string}
225
+ */
226
+ function formatToTextTable(pData, pMetaData) {
227
+ return [chalk.bold(formatToTextHeader(pMetaData))]
228
+ .concat(formatToTextDemarcationLine(pMetaData))
229
+ .concat(formatToTextData(pData, pMetaData))
230
+ .join(EOL)
231
+ .concat(EOL);
75
232
  }
76
233
 
234
+ /**
235
+ *
236
+ * @param {{modules: import("../../types/cruise-result.mjs").IModule[]; folders: import("../../types/cruise-result.mjs").IFolder[];}} param0
237
+ * @param {{orderBy: string; hideFolders: boolean; hideModules: boolean; experimentalStats: boolean;}} param1
238
+ * @returns {string}
239
+ */
77
240
  function transformMetricsToTable(
78
241
  { modules, folders },
79
- { orderBy, hideFolders, hideModules }
242
+ { orderBy, hideFolders, hideModules },
80
243
  ) {
81
- // TODO: should probably use a table module for this (i.e. text-table)
82
- // to simplify this code
83
- let lComponents = [];
84
- lComponents = lComponents.concat(hideFolders ? [] : folders);
85
- lComponents = lComponents.concat(
86
- hideModules ? [] : modules.filter(metricsAreCalculable).map(metricifyModule)
244
+ /** @type {ITableObject} */
245
+ const lObject = transformToTableObject(
246
+ { modules, folders },
247
+ {
248
+ smallIntegerWidth: METRIC_WIDTH,
249
+ largeIntegerWidth: METRIC_WIDTH + METRIC_WIDTH,
250
+ },
87
251
  );
88
- const lMaxNameWidth = lComponents
89
- .map(({ name }) => name.length)
90
- .concat(COMPONENT_HEADER.length)
91
- .sort((pLeft, pRight) => pLeft - pRight)
92
- .pop();
93
-
94
- return [chalk.bold(getHeader(lMaxNameWidth))]
95
- .concat(getDemarcationLine(lMaxNameWidth))
96
- .concat(
97
- getMetricsTable(
98
- lComponents
99
- .filter(componentIsCalculable)
100
- .sort(orderByString("name"))
101
- .sort(orderByNumber(orderBy || "instability")),
102
- lMaxNameWidth
103
- )
252
+ let lComponents = lObject.data
253
+ .filter(
254
+ (pComponent) =>
255
+ (!hideModules && pComponent.type === "module") ||
256
+ (!hideFolders && pComponent.type === "folder"),
104
257
  )
105
- .join(EOL)
106
- .concat(EOL);
258
+ .sort(orderByString("name"))
259
+ .sort(orderByNumber(orderBy || "instability"));
260
+ return formatToTextTable(lComponents, lObject.meta);
107
261
  }
108
262
 
109
263
  /**
@@ -7,6 +7,9 @@ export const formatPercentage = new Intl.NumberFormat(undefined, {
7
7
  style: "percent",
8
8
  }).format;
9
9
 
10
+ // eslint-disable-next-line no-undefined
11
+ export const formatNumber = new Intl.NumberFormat(undefined).format;
12
+
10
13
  export function formatViolation(
11
14
  pViolation,
12
15
  pViolationType2Formatter,
@@ -1 +1 @@
1
- /* generated - don't edit */export default {"title":"dependency-cruiser configuration","$schema":"http://json-schema.org/draft-07/schema#","$id":"https://dependency-cruiser.js.org/schema/configuration.schema.json","type":"object","additionalProperties":false,"properties":{"$schema":{"type":"string"},"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}},"options":{"$ref":"#/definitions/OptionsType"},"extends":{"$ref":"#/definitions/ExtendsType"}},"definitions":{"RuleSetType":{"type":"object","additionalProperties":false,"properties":{"forbidden":{"type":"array","items":{"$ref":"#/definitions/ForbiddenRuleType"}},"allowed":{"type":"array","items":{"$ref":"#/definitions/AllowedRuleType"}},"allowedSeverity":{"$ref":"#/definitions/SeverityType"},"required":{"type":"array","items":{"$ref":"#/definitions/RequiredRuleType"}}}},"AllowedRuleType":{"oneOf":[{"$ref":"#/definitions/RegularAllowedRuleType"},{"$ref":"#/definitions/ReachabilityAllowedRuleType"}]},"RegularAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"ReachabilityAllowedRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"comment":{"type":"string"},"scope":{"type":"string","enum":["module","folder"]},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"ForbiddenRuleType":{"oneOf":[{"$ref":"#/definitions/RegularForbiddenRuleType"},{"$ref":"#/definitions/ReachabilityForbiddenRuleType"},{"$ref":"#/definitions/DependentsForbiddenRuleType"}]},"RegularForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/FromRestrictionType"},"to":{"$ref":"#/definitions/ToRestrictionType"}}},"DependentsForbiddenRuleType":{"type":"object","required":["module","from"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/DependentsModuleRestrictionType"},"from":{"$ref":"#/definitions/DependentsFromRestrictionType"}}},"ReachabilityForbiddenRuleType":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"from":{"$ref":"#/definitions/ReachabilityFromRestrictionType"},"to":{"$ref":"#/definitions/ReachabilityToRestrictionType"}}},"RequiredRuleType":{"type":"object","required":["module","to"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"},"scope":{"type":"string","enum":["module","folder"]},"comment":{"type":"string"},"module":{"$ref":"#/definitions/RequiredModuleRestrictionType"},"to":{"$ref":"#/definitions/RequiredToRestrictionType"}}},"MiniDependencyRestrictionType":{"oneOf":[{"$ref":"#/definitions/REAsStringsType"},{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}}]},"FromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"orphan":{"type":"boolean"}}},"ReachabilityFromRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"}}},"ToRestrictionType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"pathNot":{"$ref":"#/definitions/REAsStringsType"},"couldNotResolve":{"type":"boolean"},"circular":{"type":"boolean"},"dynamic":{"type":"boolean"},"exoticallyRequired":{"type":"boolean"},"exoticRequire":{"$ref":"#/definitions/REAsStringsType"},"exoticRequireNot":{"$ref":"#/definitions/REAsStringsType"},"preCompilationOnly":{"type":"boolean"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"dependencyTypesNot":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}},"moreThanOneDependencyType":{"type":"boolean"},"license":{"$ref":"#/definitions/REAsStringsType"},"licenseNot":{"$ref":"#/definitions/REAsStringsType"},"via":{"$ref":"#/definitions/MiniDependencyRestrictionType"},"viaOnly":{"$ref":"#/definitions/MiniDependencyRestrictionType"},"viaNot":{"deprecated":true,"$ref":"#/definitions/REAsStringsType"},"viaSomeNot":{"deprecated":true,"$ref":"#/definitions/REAsStringsType"},"moreUnstable":{"type":"boolean"}}},"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
+ /* 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","tsc","swc"]},"exoticRequireStrings":{"type":"array","items":{"type":"string"}},"reporterOptions":{"$ref":"#/definitions/ReporterOptionsType"},"progress":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["cli-feedback","performance-log","ndjson","none"]},"maximumLevel":{"type":"number","enum":[-1,40,50,60,70,80,99]}}},"metrics":{"type":"boolean"},"experimentalStats":{"type":"boolean"},"baseDir":{"type":"string"},"cache":{"oneOf":[{"type":"boolean"},{"deprecated":true,"type":"string"},{"$ref":"#/definitions/CacheOptionsType"}]}}},"ModuleSystemType":{"type":"string","enum":["cjs","es6","amd","tsd"]},"ModuleSystemsType":{"type":"array","items":{"$ref":"#/definitions/ModuleSystemType"}},"CompoundExcludeType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dynamic":{"type":"boolean"}}},"CompoundDoNotFollowType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CompoundIncludeOnlyType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundFocusType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"},"depth":{"type":"number","minimum":1,"maximum":4}}},"CompoundReachesType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"CompoundHighlightType":{"type":"object","additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/REAsStringsType"}}},"ReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"anon":{"$ref":"#/definitions/AnonReporterOptionsType"},"archi":{"$ref":"#/definitions/DotReporterOptionsType"},"dot":{"$ref":"#/definitions/DotReporterOptionsType"},"ddot":{"$ref":"#/definitions/DotReporterOptionsType"},"flat":{"$ref":"#/definitions/DotReporterOptionsType"},"markdown":{"$ref":"#/definitions/MarkdownReporterOptionsType"},"metrics":{"$ref":"#/definitions/MetricsReporterOptionsType"},"mermaid":{"$ref":"#/definitions/MermaidReporterOptionsType"},"text":{"$ref":"#/definitions/TextReporterOptionsType"}}},"AnonReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"wordlist":{"type":"array","items":{"type":"string"}}}},"MetricsReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"orderBy":{"type":"string","enum":["instability","moduleCount","afferentCouplings","efferentCouplings","name","size","topLevelStatementCount"]},"hideModules":{"type":"boolean"},"hideFolders":{"type":"boolean"}}},"MarkdownReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"showTitle":{"type":"boolean"},"title":{"type":"string"},"showSummary":{"type":"boolean"},"showSummaryHeader":{"type":"boolean"},"summaryHeader":{"type":"string"},"showStatsSummary":{"type":"boolean"},"showRulesSummary":{"type":"boolean"},"includeIgnoredInSummary":{"type":"boolean"},"showDetails":{"type":"boolean"},"includeIgnoredInDetails":{"type":"boolean"},"showDetailsHeader":{"type":"boolean"},"detailsHeader":{"type":"string"},"collapseDetails":{"type":"boolean"},"collapsedMessage":{"type":"string"},"noViolationsMessage":{"type":"string"},"showFooter":{"type":"boolean"}}},"MermaidReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"minify":{"type":"boolean"}}},"TextReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"highlightFocused":{"type":"boolean"}}},"DotReporterOptionsType":{"type":"object","additionalProperties":false,"properties":{"collapsePattern":{"$ref":"#/definitions/REAsStringsType"},"filters":{"$ref":"#/definitions/ReporterFiltersType"},"showMetrics":{"type":"boolean"},"theme":{"$ref":"#/definitions/DotThemeType"}}},"DotThemeType":{"type":"object","additionalProperties":false,"properties":{"replace":{"type":"boolean"},"graph":{"type":"object"},"node":{"type":"object"},"edge":{"type":"object"},"modules":{"$ref":"#/definitions/DotThemeArrayType"},"dependencies":{"$ref":"#/definitions/DotThemeArrayType"}}},"DotThemeArrayType":{"type":"array","items":{"$ref":"#/definitions/DotThemeEntryType"}},"DotThemeEntryType":{"type":"object","additionalProperties":false,"properties":{"criteria":{"type":"object"},"attributes":{"type":"object"}}},"ReporterFiltersType":{"type":"object","additionalProperties":false,"properties":{"exclude":{"$ref":"#/definitions/CompoundExcludeType"},"includeOnly":{"$ref":"#/definitions/CompoundIncludeOnlyType"},"focus":{"$ref":"#/definitions/CompoundFocusType"},"reaches":{"$ref":"#/definitions/CompoundReachesType"}}},"ViolationsType":{"type":"array","items":{"$ref":"#/definitions/ViolationType"}},"ViolationType":{"type":"object","required":["from","to","rule"],"additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"$ref":"#/definitions/ViolationTypeType"},"rule":{"$ref":"#/definitions/RuleSummaryType"},"cycle":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"via":{"type":"array","items":{"$ref":"#/definitions/MiniDependency"}},"metrics":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}},"to":{"type":"object","required":["instability"],"additionalProperties":false,"properties":{"instability":{"type":"number"}}}}},"comment":{"type":"string"}}},"RuleSummaryType":{"type":"object","required":["name","severity"],"additionalProperties":false,"properties":{"name":{"type":"string"},"severity":{"$ref":"#/definitions/SeverityType"}}},"ViolationTypeType":{"type":"string","enum":["dependency","module","reachability","cycle","instability","folder"]},"MiniDependency":{"type":"object","required":["name","dependencyTypes"],"additionalProperties":false,"properties":{"name":{"type":"string"},"dependencyTypes":{"type":"array","items":{"$ref":"#/definitions/DependencyTypeType"}}}},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"},"compress":{"type":"boolean","default":false}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"ExtendsType":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}