dependency-cruiser 14.0.0 → 14.1.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.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { program } from "commander";
3
- import validateNodeEnvironment from "../src/cli/validate-node-environment.mjs";
3
+ import assertNodeEnvironmentSuitable from "../src/cli/assert-node-environment-suitable.mjs";
4
4
  import meta from "../src/meta.js";
5
5
  import cli from "../src/cli/index.mjs";
6
6
 
@@ -10,7 +10,7 @@ function formatError(pError) {
10
10
  }
11
11
 
12
12
  try {
13
- validateNodeEnvironment();
13
+ assertNodeEnvironmentSuitable();
14
14
 
15
15
  program
16
16
  .description(
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { program } from "commander";
4
- import validateNodeEnvironment from "../src/cli/validate-node-environment.mjs";
4
+ import assertNodeEnvironmentSuitable from "../src/cli/assert-node-environment-suitable.mjs";
5
5
  import meta from "../src/meta.js";
6
6
  import format from "../src/cli/format.mjs";
7
7
 
@@ -11,7 +11,7 @@ function formatError(pError) {
11
11
  }
12
12
 
13
13
  try {
14
- validateNodeEnvironment();
14
+ assertNodeEnvironmentSuitable();
15
15
 
16
16
  program
17
17
  .description(
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { EOL } from "node:os";
3
3
  import { program } from "commander";
4
- import validateNodeEnvironment from "../src/cli/validate-node-environment.mjs";
4
+ import assertNodeEnvironmentSuitable from "../src/cli/assert-node-environment-suitable.mjs";
5
5
  import meta from "../src/meta.js";
6
6
  import cli from "../src/cli/index.mjs";
7
7
 
8
8
  try {
9
- validateNodeEnvironment();
9
+ assertNodeEnvironmentSuitable();
10
10
 
11
11
  program
12
12
  .description(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dependency-cruiser",
3
- "version": "14.0.0",
3
+ "version": "14.1.0",
4
4
  "description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
5
5
  "keywords": [
6
6
  "static analysis",
@@ -176,15 +176,15 @@
176
176
  "wrap-ansi": "8.1.0"
177
177
  },
178
178
  "devDependencies": {
179
- "@babel/core": "7.22.20",
180
- "@babel/plugin-transform-modules-commonjs": "7.22.15",
181
- "@babel/preset-typescript": "7.22.15",
182
- "@swc/core": "1.3.87",
179
+ "@babel/core": "7.23.0",
180
+ "@babel/plugin-transform-modules-commonjs": "7.23.0",
181
+ "@babel/preset-typescript": "7.23.0",
182
+ "@swc/core": "1.3.90",
183
183
  "@types/lodash": "4.14.199",
184
- "@types/node": "20.6.3",
185
- "@types/prompts": "2.4.4",
186
- "@typescript-eslint/eslint-plugin": "6.7.2",
187
- "@typescript-eslint/parser": "6.7.2",
184
+ "@types/node": "20.8.0",
185
+ "@types/prompts": "2.4.5",
186
+ "@typescript-eslint/eslint-plugin": "6.7.3",
187
+ "@typescript-eslint/parser": "6.7.3",
188
188
  "@vue/compiler-sfc": "3.3.4",
189
189
  "c8": "8.0.1",
190
190
  "coffeescript": "2.7.0",
@@ -194,7 +194,7 @@
194
194
  "eslint-plugin-budapestian": "5.0.1",
195
195
  "eslint-plugin-eslint-comments": "3.2.0",
196
196
  "eslint-plugin-import": "2.28.1",
197
- "eslint-plugin-mocha": "10.1.0",
197
+ "eslint-plugin-mocha": "10.2.0",
198
198
  "eslint-plugin-node": "11.1.0",
199
199
  "eslint-plugin-security": "1.7.1",
200
200
  "eslint-plugin-unicorn": "^48.0.1",
@@ -1,7 +1,7 @@
1
1
  import satisfies from "semver/functions/satisfies.js";
2
2
  import meta from "../meta.js";
3
3
 
4
- export default function validateNodeEnvironment(pNodeVersion) {
4
+ export default function assertNodeEnvironmentSuitable(pNodeVersion) {
5
5
  // not using default parameter here because the check should run
6
6
  // run on node 4 as well
7
7
  const lNodeVersion = pNodeVersion || process.versions.node;
@@ -135,9 +135,10 @@ function buildExtensionsAttribute(pInitOptions) {
135
135
  * @returns {string}
136
136
  */
137
137
  function buildMainFieldsAttribute(pInitOptions) {
138
- return pInitOptions.usesTypeScript
139
- ? `mainFields: ["main", "types", "typings"],`
140
- : `// mainFields: ["main", "types", "typings"],`;
138
+ if (pInitOptions.isTypeModule) {
139
+ return `mainFields: ["module", "main", "types", "typings"],`;
140
+ }
141
+ return `mainFields: ["main", "types", "typings"],`;
141
142
  }
142
143
 
143
144
  /**
@@ -2,6 +2,7 @@
2
2
  import prompts from "prompts";
3
3
  import {
4
4
  isLikelyMonoRepo,
5
+ isTypeModule,
5
6
  getMonoRepoPackagesCandidates,
6
7
  getSourceFolderCandidates,
7
8
  getTestFolderCandidates,
@@ -33,6 +34,12 @@ const QUESTIONS = [
33
34
  message: "This looks like mono repo. Is that correct?",
34
35
  initial: isLikelyMonoRepo(),
35
36
  },
37
+ {
38
+ name: "isTypeModule",
39
+ type: () => (isTypeModule() ? "confirm" : false),
40
+ message: "It looks like this is an ESM package. Is that correct?",
41
+ initial: isTypeModule(),
42
+ },
36
43
  {
37
44
  name: "sourceLocation",
38
45
  type: (_, pAnswers) => (pAnswers.isMonoRepo ? "list" : false),
@@ -61,7 +68,7 @@ const QUESTIONS = [
61
68
  initial: (_, pAnswers) => {
62
69
  return !hasTestsWithinSource(
63
70
  getTestFolderCandidates(),
64
- toSourceLocationArray(pAnswers.sourceLocation)
71
+ toSourceLocationArray(pAnswers.sourceLocation),
65
72
  );
66
73
  },
67
74
  },
@@ -16,6 +16,7 @@ import {
16
16
  getDefaultConfigFileName,
17
17
  hasJSConfigCandidates,
18
18
  getJSConfigCandidates,
19
+ isTypeModule,
19
20
  } from "./environment-helpers.mjs";
20
21
  import { writeRunScriptsToManifest } from "./write-run-scripts-to-manifest.mjs";
21
22
 
@@ -32,6 +33,7 @@ function getOneShotConfig(pOneShotConfigId) {
32
33
  /** @type {import("./types").IPartialInitConfig} */
33
34
  const lBaseConfig = {
34
35
  isMonoRepo: isLikelyMonoRepo(),
36
+ isTypeModule: isTypeModule(),
35
37
  combinedDependencies: false,
36
38
  useJsConfig: hasJSConfigCandidates() && !hasTSConfigCandidates(),
37
39
  jsConfig: getJSConfigCandidates().shift(),
@@ -5,6 +5,12 @@ export interface IInitConfig {
5
5
  * Whether or not the current folder houses a mono repo
6
6
  */
7
7
  isMonoRepo: boolean;
8
+ /**
9
+ * Whether or not the current folder is a package is an ESM package
10
+ * by default (and resolutions of external dependencies should be
11
+ * treated as such)
12
+ */
13
+ isTypeModule: boolean;
8
14
  /**
9
15
  * Whether or not you allow usage of external dependencies declared in
10
16
  * package.jsons of parent folders
@@ -10,7 +10,7 @@ function extendNamedRule(pExtendedRule, pForbiddenArrayBase) {
10
10
  ...pBaseRule,
11
11
  ...pAll,
12
12
  }),
13
- pExtendedRule
13
+ pExtendedRule,
14
14
  );
15
15
  }
16
16
 
@@ -23,7 +23,7 @@ function extendNamedRule(pExtendedRule, pForbiddenArrayBase) {
23
23
  * rules get merged, where individual attributes of the named rules
24
24
  * in pForbiddenArrayExtended win)
25
25
  *
26
- * @param {*} pRuleArrayExtended - array of 'fobidden' rules that extend the ...
26
+ * @param {*} pRuleArrayExtended - array of 'forbidden' rules that extend the ...
27
27
  * @param {*} pRuleArrayBase - array of 'forbidden' rules to extend
28
28
  *
29
29
  * @return {Array} - the merged array
@@ -32,7 +32,7 @@ function mergeRules(pRuleArrayExtended, pRuleArrayBase) {
32
32
  // merge anonymous on 100% equality
33
33
  let lAnonymousRules = uniqWith(
34
34
  pRuleArrayExtended.concat(pRuleArrayBase).filter(({ name }) => !name),
35
- isDeepStrictEqual
35
+ isDeepStrictEqual,
36
36
  );
37
37
 
38
38
  let lNamedRules = pRuleArrayExtended
@@ -48,7 +48,7 @@ function mergeRules(pRuleArrayExtended, pRuleArrayBase) {
48
48
  // the other concats (anonymous, allowed) don't need it
49
49
  // but have it to be consistent with this
50
50
  lNamedRules.concat(pRuleArrayBase).filter(({ name }) => name),
51
- ({ name }) => name
51
+ ({ name }) => name,
52
52
  );
53
53
 
54
54
  return lNamedRules.concat(lAnonymousRules);
@@ -67,7 +67,7 @@ function mergeRules(pRuleArrayExtended, pRuleArrayBase) {
67
67
  function mergeAllowedRules(pAllowedArrayExtended, pAllowedArrayBase) {
68
68
  return uniqWith(
69
69
  pAllowedArrayExtended.concat(pAllowedArrayBase),
70
- isDeepStrictEqual
70
+ isDeepStrictEqual,
71
71
  );
72
72
  }
73
73
 
@@ -109,15 +109,15 @@ function mergeAllowedSeverities(pConfigExtended, pConfigBase) {
109
109
  export default (pConfigExtended, pConfigBase) => {
110
110
  const lForbidden = mergeRules(
111
111
  pConfigExtended?.forbidden ?? [],
112
- pConfigBase?.forbidden ?? []
112
+ pConfigBase?.forbidden ?? [],
113
113
  );
114
114
  const lRequired = mergeRules(
115
115
  pConfigExtended?.required ?? [],
116
- pConfigBase?.required ?? []
116
+ pConfigBase?.required ?? [],
117
117
  );
118
118
  const lAllowed = mergeAllowedRules(
119
119
  pConfigExtended?.allowed ?? [],
120
- pConfigBase?.allowed ?? []
120
+ pConfigBase?.allowed ?? [],
121
121
  );
122
122
 
123
123
  return {
@@ -131,7 +131,7 @@ export default (pConfigExtended, pConfigBase) => {
131
131
  : {}),
132
132
  options: mergeOptions(
133
133
  pConfigExtended?.options ?? {},
134
- pConfigBase?.options ?? {}
134
+ pConfigBase?.options ?? {},
135
135
  ),
136
136
  };
137
137
  };
@@ -47,23 +47,21 @@ function gatherScannableFilesFromDirectory(pDirectoryName, pOptions) {
47
47
  .filter((pFullPathToFile) =>
48
48
  shouldNotBeExcluded(pathToPosix(pFullPathToFile), pOptions),
49
49
  )
50
- .reduce((pSum, pFullPathToFile) => {
50
+ .flatMap((pFullPathToFile) => {
51
51
  let lStat = statSync(join(pOptions.baseDir, pFullPathToFile), {
52
52
  throwIfNoEntry: false,
53
53
  });
54
54
 
55
55
  if (lStat) {
56
56
  if (lStat.isDirectory()) {
57
- return pSum.concat(
58
- gatherScannableFilesFromDirectory(pFullPathToFile, pOptions),
59
- );
57
+ return gatherScannableFilesFromDirectory(pFullPathToFile, pOptions);
60
58
  }
61
59
  if (fileIsScannable(pOptions, pFullPathToFile)) {
62
- return pSum.concat(pFullPathToFile);
60
+ return pFullPathToFile;
63
61
  }
64
62
  }
65
- return pSum;
66
- }, [])
63
+ return [];
64
+ })
67
65
  .map((pFullPathToFile) => pathToPosix(pFullPathToFile))
68
66
  .filter((pFullPathToFile) => shouldBeIncluded(pFullPathToFile, pOptions));
69
67
  }
@@ -108,7 +106,7 @@ export default function gatherInitialSources(
108
106
  if (lScannedGlob.isGlob) {
109
107
  return expandGlob(lOptions.baseDir, lScannedGlob);
110
108
  }
111
- return pathToPosix(normalize(pFileDirectoryOrGlob));
109
+ return normalize(pFileDirectoryOrGlob);
112
110
  })
113
111
  .flatMap((pFileOrDirectory) => {
114
112
  if (statSync(join(lOptions.baseDir, pFileOrDirectory)).isDirectory()) {
@@ -21,7 +21,7 @@ function resolveModule(
21
21
  pModule,
22
22
  pBaseDirectory,
23
23
  pFileDirectory,
24
- pResolveOptions
24
+ pResolveOptions,
25
25
  ) {
26
26
  let lReturnValue = null;
27
27
 
@@ -34,13 +34,14 @@ function resolveModule(
34
34
  lStrippedModuleName,
35
35
  pBaseDirectory,
36
36
  pFileDirectory,
37
- pResolveOptions
37
+ pResolveOptions,
38
38
  );
39
39
  } else {
40
40
  lReturnValue = resolveAMD(
41
41
  lStrippedModuleName,
42
42
  pBaseDirectory,
43
- pFileDirectory
43
+ pFileDirectory,
44
+ pResolveOptions,
44
45
  );
45
46
  }
46
47
  return lReturnValue;
@@ -89,13 +90,13 @@ function resolveWithRetry(
89
90
  pModule,
90
91
  pBaseDirectory,
91
92
  pFileDirectory,
92
- pResolveOptions
93
+ pResolveOptions,
93
94
  ) {
94
95
  let lReturnValue = resolveModule(
95
96
  pModule,
96
97
  pBaseDirectory,
97
98
  pFileDirectory,
98
- pResolveOptions
99
+ pResolveOptions,
99
100
  );
100
101
  const lStrippedModuleName = stripToModuleName(pModule.module);
101
102
 
@@ -123,17 +124,17 @@ function resolveWithRetry(
123
124
  ) {
124
125
  const lModuleWithoutExtension = lStrippedModuleName.replace(
125
126
  /\.(js|jsx|cjs|mjs)$/g,
126
- ""
127
+ "",
127
128
  );
128
129
  const lExtensionsToTry = getTypeScriptExtensionsToTry(
129
- extname(lStrippedModuleName)
130
+ extname(lStrippedModuleName),
130
131
  );
131
132
 
132
133
  const lReturnValueCandidate = resolveModule(
133
134
  { ...pModule, module: lModuleWithoutExtension },
134
135
  pBaseDirectory,
135
136
  pFileDirectory,
136
- { ...pResolveOptions, extensions: lExtensionsToTry }
137
+ { ...pResolveOptions, extensions: lExtensionsToTry },
137
138
  );
138
139
 
139
140
  if (isTypeScriptIshExtension(lReturnValueCandidate.resolved)) {
@@ -160,13 +161,13 @@ export default function resolve(
160
161
  pDependency,
161
162
  pBaseDirectory,
162
163
  pFileDirectory,
163
- pResolveOptions
164
+ pResolveOptions,
164
165
  ) {
165
166
  let lResolvedDependency = resolveWithRetry(
166
167
  pDependency,
167
168
  pBaseDirectory,
168
169
  pFileDirectory,
169
- pResolveOptions
170
+ pResolveOptions,
170
171
  );
171
172
  const lStrippedModuleName = stripToModuleName(pDependency.module);
172
173
 
@@ -176,7 +177,7 @@ export default function resolve(
176
177
  lStrippedModuleName,
177
178
  lResolvedDependency.resolved,
178
179
  { baseDirectory: pBaseDirectory, fileDirectory: pFileDirectory },
179
- pResolveOptions
180
+ pResolveOptions,
180
181
  ),
181
182
  dependencyTypes: determineDependencyTypes(
182
183
  { ...pDependency, ...lResolvedDependency },
@@ -184,11 +185,11 @@ export default function resolve(
184
185
  getManifest(
185
186
  pFileDirectory,
186
187
  pBaseDirectory,
187
- pResolveOptions.combinedDependencies
188
+ pResolveOptions.combinedDependencies,
188
189
  ),
189
190
  pFileDirectory,
190
191
  pResolveOptions,
191
- pBaseDirectory
192
+ pBaseDirectory,
192
193
  ),
193
194
  };
194
195
 
@@ -210,11 +211,11 @@ export default function resolve(
210
211
  again corresponds with a real file on disk
211
212
  */
212
213
  // eslint-disable-next-line no-control-regex
213
- lResolvedDependency.resolved.replace(/\u0000#/g, "#")
214
- )
215
- )
216
- )
217
- )
214
+ lResolvedDependency.resolved.replace(/\u0000#/g, "#"),
215
+ ),
216
+ ),
217
+ ),
218
+ ),
218
219
  );
219
220
  } catch (pError) {
220
221
  lResolvedDependency.couldNotResolve = true;
@@ -0,0 +1,28 @@
1
+ import { builtinModules } from "node:module";
2
+
3
+ function getBuiltIns(pResolveOptions) {
4
+ // builtinModules does not expose all builtin modules for #reasons -
5
+ // see https://github.com/nodejs/node/issues/42785. In stead we could use
6
+ // isBuiltin, but that is not available in node 16.14, the lowest version
7
+ // of node dependency-cruiser currently supports. So we add the missing
8
+ // modules here.
9
+ let lReturnValue = builtinModules.concat(["test", "node:test"]);
10
+
11
+ if (pResolveOptions?.builtInModules?.override) {
12
+ lReturnValue = pResolveOptions?.builtInModules?.override;
13
+ }
14
+ if (pResolveOptions?.builtInModules?.add) {
15
+ lReturnValue = lReturnValue.concat(pResolveOptions.builtInModules.add);
16
+ }
17
+ return lReturnValue;
18
+ }
19
+
20
+ /**
21
+ *
22
+ * @param {string} pModuleName - the unresolved module name
23
+ * @param {*} pResolveOptions
24
+ * @returns {boolean} - true if the module is a built-in module
25
+ */
26
+ export function isBuiltin(pModuleName, pResolveOptions) {
27
+ return getBuiltIns(pResolveOptions).includes(pModuleName);
28
+ }
@@ -1,16 +1,8 @@
1
1
  import { accessSync, R_OK } from "node:fs";
2
2
  import { relative, join } from "node:path";
3
- import { builtinModules } from "node:module";
4
3
  import memoize from "lodash/memoize.js";
5
4
  import pathToPosix from "../../utl/path-to-posix.mjs";
6
-
7
- // builtinModules does not expose all builtin modules for #reasons -
8
- // see https://github.com/nodejs/node/issues/42785. In stead we could use
9
- // isBuiltin, but that is not available in node 16.14, the lowest version
10
- // of node dependency-cruiser currently supports. So we add the missing
11
- // modules here.
12
- // b.t.w. code is duplicated in resolve-cjs.mjs
13
- const REALLY_BUILTIN_MODULES = builtinModules.concat(["test", "node:test"]);
5
+ import { isBuiltin } from "./is-built-in.mjs";
14
6
 
15
7
  const fileExists = memoize((pFile) => {
16
8
  try {
@@ -46,6 +38,7 @@ export function resolveAMD(
46
38
  pStrippedModuleName,
47
39
  pBaseDirectory,
48
40
  pFileDirectory,
41
+ pResolveOptions,
49
42
  ) {
50
43
  // lookups:
51
44
  // - [x] could be relative in the end (implemented)
@@ -61,10 +54,10 @@ export function resolveAMD(
61
54
 
62
55
  return {
63
56
  resolved: lResolvedPath,
64
- coreModule: REALLY_BUILTIN_MODULES.includes(pStrippedModuleName),
57
+ coreModule: isBuiltin(pStrippedModuleName, pResolveOptions),
65
58
  followable: fileExists(lResolvedPath) && lResolvedPath.endsWith(".js"),
66
59
  couldNotResolve:
67
- !REALLY_BUILTIN_MODULES.includes(pStrippedModuleName) &&
60
+ !isBuiltin(pStrippedModuleName, pResolveOptions) &&
68
61
  !fileExists(lResolvedPath),
69
62
  };
70
63
  }
@@ -1,16 +1,8 @@
1
1
  import { relative } from "node:path";
2
- import { builtinModules } from "node:module";
3
2
  import pathToPosix from "../../utl/path-to-posix.mjs";
4
3
  import { isFollowable } from "./module-classifiers.mjs";
5
4
  import { resolve } from "./resolve.mjs";
6
-
7
- // builtinModules does not expose all builtin modules for #reasons -
8
- // see https://github.com/nodejs/node/issues/42785. In stead we could use
9
- // isBuiltin, but that is not available in node 16.14, the lowest version
10
- // of node dependency-cruiser currently supports. So we add the missing
11
- // modules here.
12
- // b.t.w. code is duplicated in resolve-amd.mjs
13
- const REALLY_BUILTIN_MODULES = builtinModules.concat(["test", "node:test"]);
5
+ import { isBuiltin } from "./is-built-in.mjs";
14
6
 
15
7
  function addResolutionAttributes(
16
8
  pBaseDirectory,
@@ -20,7 +12,7 @@ function addResolutionAttributes(
20
12
  ) {
21
13
  let lReturnValue = {};
22
14
 
23
- if (REALLY_BUILTIN_MODULES.includes(pModuleName)) {
15
+ if (isBuiltin(pModuleName, pResolveOptions)) {
24
16
  lReturnValue.coreModule = true;
25
17
  } else {
26
18
  try {
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable no-return-await */
2
2
  /* eslint-disable no-magic-numbers */
3
3
  import { bus } from "../utl/bus.mjs";
4
- import { validateCruiseOptions } from "./options/validate.mjs";
4
+ import { assertCruiseOptionsValid } from "./options/assert-validity.mjs";
5
5
  import { normalizeCruiseOptions } from "./options/normalize.mjs";
6
6
  import reportWrap from "./report-wrap.mjs";
7
7
 
@@ -17,20 +17,20 @@ export default async function cruise(
17
17
  pFileAndDirectoryArray,
18
18
  pCruiseOptions,
19
19
  pResolveOptions,
20
- pTranspileOptions
20
+ pTranspileOptions,
21
21
  ) {
22
22
  bus.summary("parsing options", c(1));
23
23
  /** @type {import("../../types/strict-options.js").IStrictCruiseOptions} */
24
24
  let lCruiseOptions = normalizeCruiseOptions(
25
- validateCruiseOptions(pCruiseOptions),
26
- pFileAndDirectoryArray
25
+ assertCruiseOptionsValid(pCruiseOptions),
26
+ pFileAndDirectoryArray,
27
27
  );
28
28
  let lCache = null;
29
29
 
30
30
  if (lCruiseOptions.cache) {
31
31
  bus.summary(
32
32
  `cache: checking freshness with ${lCruiseOptions.cache.strategy}`,
33
- c(2)
33
+ c(2),
34
34
  );
35
35
 
36
36
  const { default: Cache } = await import("../cache/cache.mjs");
@@ -46,7 +46,7 @@ export default async function cruise(
46
46
  bus.summary("importing analytical modules", c(3));
47
47
  const [
48
48
  { default: normalizeRuleSet },
49
- { default: validateRuleSet },
49
+ { default: assertRuleSetValid },
50
50
  { default: normalizeFilesAndDirectories },
51
51
  { default: normalizeResolveOptions },
52
52
  { default: extract },
@@ -55,7 +55,7 @@ export default async function cruise(
55
55
  // despite rule set parsing being behind an if, it's the 'normal' use case
56
56
  // for dependency-cruiser, so import it unconditionally nonetheless
57
57
  import("./rule-set/normalize.mjs"),
58
- import("./rule-set/validate.mjs"),
58
+ import("./rule-set/assert-validity.mjs"),
59
59
  import("./files-and-dirs/normalize.mjs"),
60
60
  import("./resolve-options/normalize.mjs"),
61
61
  import("../extract/index.mjs"),
@@ -65,19 +65,19 @@ export default async function cruise(
65
65
  if (Boolean(lCruiseOptions.ruleSet)) {
66
66
  bus.summary("parsing rule set", c(4));
67
67
  lCruiseOptions.ruleSet = normalizeRuleSet(
68
- validateRuleSet(lCruiseOptions.ruleSet)
68
+ assertRuleSetValid(lCruiseOptions.ruleSet),
69
69
  );
70
70
  }
71
71
 
72
72
  const lNormalizedFileAndDirectoryArray = normalizeFilesAndDirectories(
73
- pFileAndDirectoryArray
73
+ pFileAndDirectoryArray,
74
74
  );
75
75
 
76
76
  bus.summary("determining how to resolve", c(5));
77
77
  const lNormalizedResolveOptions = await normalizeResolveOptions(
78
78
  pResolveOptions,
79
79
  lCruiseOptions,
80
- pTranspileOptions?.tsConfig
80
+ pTranspileOptions?.tsConfig,
81
81
  );
82
82
 
83
83
  bus.summary("reading files", c(6));
@@ -85,14 +85,14 @@ export default async function cruise(
85
85
  lNormalizedFileAndDirectoryArray,
86
86
  lCruiseOptions,
87
87
  lNormalizedResolveOptions,
88
- pTranspileOptions
88
+ pTranspileOptions,
89
89
  );
90
90
 
91
91
  bus.summary("analyzing", c(7));
92
92
  const lCruiseResult = enrich(
93
93
  lExtractionResult,
94
94
  lCruiseOptions,
95
- lNormalizedFileAndDirectoryArray
95
+ lNormalizedFileAndDirectoryArray,
96
96
  );
97
97
 
98
98
  if (lCruiseOptions.cache) {
@@ -1,7 +1,7 @@
1
1
  import Ajv from "ajv";
2
2
 
3
3
  import cruiseResultSchema from "../schema/cruise-result.schema.mjs";
4
- import { validateFormatOptions } from "./options/validate.mjs";
4
+ import { assertFormatOptionsValid } from "./options/assert-validity.mjs";
5
5
  import { normalizeFormatOptions } from "./options/normalize.mjs";
6
6
  import reportWrap from "./report-wrap.mjs";
7
7
 
@@ -10,14 +10,14 @@ function validateResultAgainstSchema(pResult) {
10
10
 
11
11
  if (!ajv.validate(cruiseResultSchema, pResult)) {
12
12
  throw new Error(
13
- `The supplied dependency-cruiser result is not valid: ${ajv.errorsText()}.\n`
13
+ `The supplied dependency-cruiser result is not valid: ${ajv.errorsText()}.\n`,
14
14
  );
15
15
  }
16
16
  }
17
17
  /** @type {import("../../types/dependency-cruiser.js").format} */
18
18
  export default async function format(pResult, pFormatOptions = {}) {
19
19
  const lFormatOptions = normalizeFormatOptions(pFormatOptions);
20
- validateFormatOptions(lFormatOptions);
20
+ assertFormatOptionsValid(lFormatOptions);
21
21
 
22
22
  validateResultAgainstSchema(pResult);
23
23
 
@@ -6,29 +6,29 @@ import report from "../../report/index.mjs";
6
6
  const MODULE_SYSTEM_LIST_RE = /^((cjs|amd|es6|tsd)(,|$))+$/gi;
7
7
  const VALID_DEPTH_RE = /^\d{1,2}$/g;
8
8
 
9
- function validateSystems(pModuleSystems) {
9
+ function assertModuleSystemsValid(pModuleSystems) {
10
10
  if (
11
11
  Boolean(pModuleSystems) &&
12
12
  Array.isArray(pModuleSystems) &&
13
13
  !pModuleSystems.every((pModuleSystem) =>
14
- Boolean(pModuleSystem.match(MODULE_SYSTEM_LIST_RE))
14
+ Boolean(pModuleSystem.match(MODULE_SYSTEM_LIST_RE)),
15
15
  )
16
16
  ) {
17
17
  throw new Error(
18
- `Invalid module system list: '${pModuleSystems.join(", ")}'\n`
18
+ `Invalid module system list: '${pModuleSystems.join(", ")}'\n`,
19
19
  );
20
20
  }
21
21
  }
22
22
 
23
- function validateRegExpSafety(pPattern) {
23
+ function assertRegExpSafety(pPattern) {
24
24
  if (Boolean(pPattern) && !safeRegex(pPattern)) {
25
25
  throw new Error(
26
- `The pattern '${pPattern}' will probably run very slowly - cowardly refusing to run.\n`
26
+ `The pattern '${pPattern}' will probably run very slowly - cowardly refusing to run.\n`,
27
27
  );
28
28
  }
29
29
  }
30
30
 
31
- function validateOutputType(pOutputType) {
31
+ function assertOutputTypeValid(pOutputType) {
32
32
  if (
33
33
  Boolean(pOutputType) &&
34
34
  !report.getAvailableReporters().includes(pOutputType) &&
@@ -38,15 +38,15 @@ function validateOutputType(pOutputType) {
38
38
  }
39
39
  }
40
40
 
41
- function validateMaxDepth(pDepth) {
41
+ function assertMaxDepthValid(pDepth) {
42
42
  if (Boolean(pDepth) && !pDepth.toString().match(VALID_DEPTH_RE)) {
43
43
  throw new Error(
44
- `'${pDepth}' is not a valid depth - use an integer between 0 and 99`
44
+ `'${pDepth}' is not a valid depth - use an integer between 0 and 99`,
45
45
  );
46
46
  }
47
47
  }
48
48
 
49
- function validateFocusDepth(pFocusDepth) {
49
+ function assertFocusDepthValid(pFocusDepth) {
50
50
  const lFocusDepth = Number.parseInt(pFocusDepth, 10);
51
51
  const lMaxFocusDepth = 99;
52
52
 
@@ -57,18 +57,18 @@ function validateFocusDepth(pFocusDepth) {
57
57
  lFocusDepth > lMaxFocusDepth)
58
58
  ) {
59
59
  throw new Error(
60
- `'${pFocusDepth}' is not a valid focus depth - use an integer between 0 and ${lMaxFocusDepth}`
60
+ `'${pFocusDepth}' is not a valid focus depth - use an integer between 0 and ${lMaxFocusDepth}`,
61
61
  );
62
62
  }
63
63
  }
64
64
 
65
- function validatePathsSafety(pFilterOption) {
65
+ function assertPathsSafety(pFilterOption) {
66
66
  if (typeof pFilterOption === "string") {
67
- validateRegExpSafety(pFilterOption);
67
+ assertRegExpSafety(pFilterOption);
68
68
  }
69
69
 
70
- validateRegExpSafety(pFilterOption?.path ?? "");
71
- validateRegExpSafety(pFilterOption?.pathNot ?? "");
70
+ assertRegExpSafety(pFilterOption?.path ?? "");
71
+ assertRegExpSafety(pFilterOption?.pathNot ?? "");
72
72
  }
73
73
 
74
74
  /**
@@ -76,32 +76,32 @@ function validatePathsSafety(pFilterOption) {
76
76
  * @throws {Error}
77
77
  * @returns {import("../../../types/dependency-cruiser.js").ICruiseOptions}
78
78
  */
79
- export function validateCruiseOptions(pOptions) {
79
+ export function assertCruiseOptionsValid(pOptions) {
80
80
  let lReturnValue = {};
81
81
 
82
82
  if (Boolean(pOptions)) {
83
83
  // necessary because can slip through the cracks when passed as a cli parameter
84
- validateSystems(pOptions.moduleSystems);
84
+ assertModuleSystemsValid(pOptions.moduleSystems);
85
85
 
86
86
  // necessary because this safety check can't be done in json schema (a.f.a.i.k.)
87
- validatePathsSafety(pOptions.doNotFollow);
88
- validatePathsSafety(pOptions.exclude);
89
- validateRegExpSafety(pOptions.includeOnly);
90
- validateRegExpSafety(pOptions.focus);
91
- validateRegExpSafety(pOptions.reaches);
92
- validateRegExpSafety(pOptions.highlight);
93
- validateRegExpSafety(pOptions.collapse);
87
+ assertPathsSafety(pOptions.doNotFollow);
88
+ assertPathsSafety(pOptions.exclude);
89
+ assertRegExpSafety(pOptions.includeOnly);
90
+ assertRegExpSafety(pOptions.focus);
91
+ assertRegExpSafety(pOptions.reaches);
92
+ assertRegExpSafety(pOptions.highlight);
93
+ assertRegExpSafety(pOptions.collapse);
94
94
 
95
95
  // necessary because not in the config schema
96
- validateOutputType(pOptions.outputType);
96
+ assertOutputTypeValid(pOptions.outputType);
97
97
 
98
98
  // necessary because not found a way to do this properly in JSON schema
99
- validateMaxDepth(pOptions.maxDepth);
99
+ assertMaxDepthValid(pOptions.maxDepth);
100
100
 
101
- validateFocusDepth(pOptions.focusDepth);
101
+ assertFocusDepthValid(pOptions.focusDepth);
102
102
 
103
103
  if (has(pOptions, "ruleSet.options")) {
104
- lReturnValue = validateCruiseOptions(pOptions.ruleSet.options);
104
+ lReturnValue = assertCruiseOptionsValid(pOptions.ruleSet.options);
105
105
  }
106
106
  return merge({}, lReturnValue, pOptions);
107
107
  }
@@ -113,12 +113,12 @@ export function validateCruiseOptions(pOptions) {
113
113
  * @param {import("../../../types/dependency-cruiser.js").IFormatOptions} pFormatOptions
114
114
  * @throws {Error}
115
115
  */
116
- export function validateFormatOptions(pFormatOptions) {
117
- validatePathsSafety(pFormatOptions.exclude);
118
- validatePathsSafety(pFormatOptions.focus);
119
- validatePathsSafety(pFormatOptions.reaches);
120
- validatePathsSafety(pFormatOptions.includeOnly);
121
- validateRegExpSafety(pFormatOptions.collapse);
122
- validateOutputType(pFormatOptions.outputType);
123
- validateFocusDepth(pFormatOptions.focusDepth);
116
+ export function assertFormatOptionsValid(pFormatOptions) {
117
+ assertPathsSafety(pFormatOptions.exclude);
118
+ assertPathsSafety(pFormatOptions.focus);
119
+ assertPathsSafety(pFormatOptions.reaches);
120
+ assertPathsSafety(pFormatOptions.includeOnly);
121
+ assertRegExpSafety(pFormatOptions.collapse);
122
+ assertOutputTypeValid(pFormatOptions.outputType);
123
+ assertFocusDepthValid(pFormatOptions.focusDepth);
124
124
  }
@@ -66,7 +66,7 @@ function pushPlugin(pPlugins, pPluginToPush) {
66
66
  async function compileResolveOptions(
67
67
  pResolveOptions,
68
68
  pTSConfig,
69
- pResolveOptionsFromDCConfig
69
+ pResolveOptionsFromDCConfig,
70
70
  ) {
71
71
  let lResolveOptions = {};
72
72
 
@@ -113,7 +113,7 @@ async function compileResolveOptions(
113
113
  // or with the supported ones.
114
114
  extensions:
115
115
  pResolveOptions.extensions || DEFAULT_RESOLVE_OPTIONS.extensions,
116
- })
116
+ }),
117
117
  );
118
118
  }
119
119
 
@@ -124,7 +124,7 @@ async function compileResolveOptions(
124
124
  ...pResolveOptions,
125
125
  ...getNonOverridableResolveOptions(
126
126
  pResolveOptionsFromDCConfig?.cachedInputFileSystem?.cacheDuration ??
127
- DEFAULT_CACHE_DURATION
127
+ DEFAULT_CACHE_DURATION,
128
128
  ),
129
129
  };
130
130
  }
@@ -139,7 +139,7 @@ async function compileResolveOptions(
139
139
  export default async function normalizeResolveOptions(
140
140
  pResolveOptions,
141
141
  pOptions,
142
- pTSConfig
142
+ pTSConfig,
143
143
  ) {
144
144
  const lRuleSet = pOptions?.ruleSet ?? {};
145
145
  // eslint-disable-next-line no-return-await
@@ -160,11 +160,15 @@ export default async function normalizeResolveOptions(
160
160
  resolve options ...
161
161
  */
162
162
  combinedDependencies: pOptions?.combinedDependencies ?? false,
163
+ /* Same for the builtInModules override/ add option ...*/
164
+ ...(pOptions?.builtInModules?.override || pOptions?.builtInModules?.add
165
+ ? { builtInModules: pOptions?.builtInModules }
166
+ : {}),
163
167
  resolveLicenses: ruleSetHasLicenseRule(lRuleSet),
164
168
  resolveDeprecations: ruleSetHasDeprecationRule(lRuleSet),
165
169
  ...(pResolveOptions || {}),
166
170
  },
167
171
  pTSConfig || {},
168
- pOptions?.enhancedResolveOptions ?? {}
172
+ pOptions?.enhancedResolveOptions ?? {},
169
173
  );
170
174
  }
@@ -1,7 +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 { validateCruiseOptions } from "../options/validate.mjs";
4
+ import { assertCruiseOptionsValid } from "../options/assert-validity.mjs";
5
5
  import configurationSchema from "../../schema/configuration.schema.mjs";
6
6
  import { normalizeToREAsString } from "../helpers.mjs";
7
7
 
@@ -19,10 +19,10 @@ const ajv = new Ajv();
19
19
  // of the safe-regex package.
20
20
  const MAX_SAFE_REGEX_STAR_REPEAT_LIMIT = 10000;
21
21
 
22
- function validateAgainstSchema(pSchema, pConfiguration) {
22
+ function assertSchemaCompliance(pSchema, pConfiguration) {
23
23
  if (!ajv.validate(pSchema, pConfiguration)) {
24
24
  throw new Error(
25
- `The supplied configuration is not valid: ${ajv.errorsText()}.\n`
25
+ `The supplied configuration is not valid: ${ajv.errorsText()}.\n`,
26
26
  );
27
27
  }
28
28
  }
@@ -40,7 +40,7 @@ function safeRule(pRule, pSection, pCondition) {
40
40
  );
41
41
  }
42
42
 
43
- function checkRuleSafety(pRule) {
43
+ function assertRuleSafety(pRule) {
44
44
  const lRegexConditions = [
45
45
  { section: "from", condition: "path" },
46
46
  { section: "to", condition: "path" },
@@ -56,15 +56,16 @@ function checkRuleSafety(pRule) {
56
56
 
57
57
  if (
58
58
  lRegexConditions.some(
59
- (pCondition) => !safeRule(pRule, pCondition.section, pCondition.condition)
59
+ (pCondition) =>
60
+ !safeRule(pRule, pCondition.section, pCondition.condition),
60
61
  )
61
62
  ) {
62
63
  throw new Error(
63
64
  `rule ${JSON.stringify(
64
65
  pRule,
65
66
  null,
66
- ""
67
- )} has an unsafe regular expression. Bailing out.\n`
67
+ "",
68
+ )} has an unsafe regular expression. Bailing out.\n`,
68
69
  );
69
70
  }
70
71
  }
@@ -74,7 +75,7 @@ function checkRuleSafety(pRule) {
74
75
  * Throws an Error in all other cases.
75
76
  *
76
77
  * Validations:
77
- * - the ruleset adheres to the [config json schema](../../schema/configuration.schema.json)
78
+ * - the rule set adheres to the [config json schema](../../schema/configuration.schema.json)
78
79
  * - any regular expression in the rule set is 'safe' (~= won't be too slow)
79
80
  *
80
81
  * @param {import("../../../types/configuration.js").IConfiguration} pConfiguration The configuration to validate
@@ -82,12 +83,12 @@ function checkRuleSafety(pRule) {
82
83
  * @throws {Error} An error with the reason for the error as
83
84
  * a message
84
85
  */
85
- export default function validateConfiguration(pConfiguration) {
86
- validateAgainstSchema(configurationSchema, pConfiguration);
87
- (pConfiguration.allowed || []).forEach(checkRuleSafety);
88
- (pConfiguration.forbidden || []).forEach(checkRuleSafety);
86
+ export default function assertRuleSetValid(pConfiguration) {
87
+ assertSchemaCompliance(configurationSchema, pConfiguration);
88
+ (pConfiguration.allowed || []).forEach(assertRuleSafety);
89
+ (pConfiguration.forbidden || []).forEach(assertRuleSafety);
89
90
  if (has(pConfiguration, "options")) {
90
- validateCruiseOptions(pConfiguration.options);
91
+ assertCruiseOptionsValid(pConfiguration.options);
91
92
  }
92
93
  return pConfiguration;
93
94
  }
package/src/meta.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /* generated - don't edit */
2
2
 
3
3
  module.exports = {
4
- version: "14.0.0",
4
+ version: "14.1.0",
5
5
  engines: {
6
6
  node: "^18.17||>=20",
7
7
  },
@@ -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","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"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"]},"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"},"mainFiles":{"type":"array"},"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":{"type":"string"}},"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"]},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"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"}}},"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","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"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"},"mainFiles":{"type":"array"},"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":{"type":"string"}},"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"]},"CacheOptionsType":{"type":"object","additionalProperties":false,"properties":{"folder":{"type":"string"},"strategy":{"$ref":"#/definitions/CacheStrategyType"}}},"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":{"type":"string"}},"moduleSystem":{"$ref":"#/definitions/ModuleSystemType"},"valid":{"type":"boolean"},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"instability":{"type":"number"}}},"DependencyTypeType":{"type":"string","enum":["aliased","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"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"]},"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":{"type":"string"}},"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":{"type":"string"}},"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"]},"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"},"mainFiles":{"type":"array"},"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","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"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"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":{"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":{"type":"string"}},"moduleSystem":{"$ref":"#/definitions/ModuleSystemType"},"valid":{"type":"boolean"},"rules":{"type":"array","items":{"$ref":"#/definitions/RuleSummaryType"}},"instability":{"type":"number"}}},"DependencyTypeType":{"type":"string","enum":["aliased","core","deprecated","local","localmodule","npm","npm-bundled","npm-dev","npm-no-pkg","npm-optional","npm-peer","npm-unknown","undetermined","unknown","type-only"]},"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"]},"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":{"type":"string"}},"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":{"type":"string"}},"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"},"mainFiles":{"type":"array"},"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","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"}}},"CacheStrategyType":{"type":"string","enum":["metadata","content"]},"RevisionDataType":{"type":"object","required":["SHA1","changes"],"properties":{"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"}}}}}}}}
@@ -190,6 +190,27 @@ export interface ICruiseOptions {
190
190
  * @deprecated now works automatically
191
191
  */
192
192
  externalModuleResolutionStrategy?: ExternalModuleResolutionStrategyType;
193
+ /**
194
+ * Options to tweak what dependency-cruiser considers 'built-in' modules. If
195
+ * you're targeting nodejs, or don't use any built-in modules you can probably
196
+ * leave this alone.
197
+ */
198
+ builtInModules?: {
199
+ /**
200
+ * List of module names that are to be considered as 'built-in'. By default dependency-cruiser
201
+ * uses the list of built-ins from nodejs. If you code for another environment (e.g. the
202
+ * browser) and you use shims for nodejs builtins like 'path' from node_modules, you could
203
+ * pass an empty array here. If you want to just add a couple of extra built-ins to
204
+ * the default list, use the 'add' attribute instead.
205
+ */
206
+ override: string[];
207
+ /**
208
+ * List of module names that are to be considered as 'built-in' in addition to the default
209
+ * list of the environment you're currently in. Use this e.g. if you're writing
210
+ * electron code and want to add 'electron' as built-in.
211
+ */
212
+ add: string[];
213
+ };
193
214
  /**
194
215
  * When true includes denormalized dependents in the cruise-result, even
195
216
  * though there's no rule in the rule set that requires them. Defaults to false.