dependency-cruiser 12.4.0 → 12.5.0-beta-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dependency-cruiser",
3
- "version": "12.4.0",
3
+ "version": "12.5.0-beta-1",
4
4
  "description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
5
5
  "keywords": [
6
6
  "static analysis",
@@ -2,73 +2,86 @@ const { readFileSync, mkdirSync, writeFileSync } = require("fs");
2
2
  const { join } = require("path");
3
3
  const meta = require("../extract/transpile/meta");
4
4
  const { optionsAreCompatible } = require("./options-compatible");
5
- const { getRevisionData, revisionDataEqual } = require("./git-revision-data");
5
+ const metadataStrategy = require("./metadata-strategy");
6
+ const contentStrategy = require("./content-strategy");
6
7
 
7
8
  const CACHE_FILE_NAME = "cache.json";
8
- let gRevisionData = null;
9
9
 
10
- /**
11
- * @param {string} pCacheFolder
12
- * @param {import("../..").ICruiseResult} pCruiseResult
13
- * @param {import("../..").IRevisionData=} pRevisionData
14
- */
15
- function writeCache(pCacheFolder, pCruiseResult, pRevisionData) {
16
- const lRevisionData = pRevisionData ?? gRevisionData;
17
-
18
- mkdirSync(pCacheFolder, { recursive: true });
19
- writeFileSync(
20
- join(pCacheFolder, CACHE_FILE_NAME),
21
- JSON.stringify(
22
- lRevisionData
23
- ? {
24
- ...pCruiseResult,
25
- revisionData: lRevisionData,
26
- }
27
- : pCruiseResult
28
- ),
29
- "utf8"
30
- );
31
- }
10
+ module.exports = class Cache {
11
+ /**
12
+ * @param {import("../../types/cache-options").cacheStrategyType=} pCacheStrategy
13
+ */
14
+ constructor(pCacheStrategy) {
15
+ this.revisionData = null;
16
+ this.cacheStrategy =
17
+ pCacheStrategy === "content" ? contentStrategy : metadataStrategy;
18
+ }
32
19
 
33
- /**
34
- * @param {string} pCacheFolder
35
- * @returns {import("../..").ICruiseResult}
36
- */
37
- function readCache(pCacheFolder) {
38
- try {
39
- return JSON.parse(
40
- readFileSync(join(pCacheFolder, CACHE_FILE_NAME), "utf8")
20
+ /**
21
+ * @param {import("../../types/strict-options").IStrictCruiseOptions} pCruiseOptions
22
+ * @param {import("../..").ICruiseResult} pCachedCruiseResult
23
+ * @param {import("../..").IRevisionData=} pRevisionData
24
+ * @returns {boolean}
25
+ */
26
+ canServeFromCache(pCruiseOptions, pCachedCruiseResult, pRevisionData) {
27
+ this.revisionData =
28
+ pRevisionData ??
29
+ this.cacheStrategy.getRevisionData(
30
+ ".",
31
+ pCachedCruiseResult,
32
+ pCruiseOptions,
33
+ {
34
+ extensions: new Set(
35
+ meta.scannableExtensions.concat(
36
+ pCruiseOptions.extraExtensionsToScan
37
+ )
38
+ ),
39
+ }
40
+ );
41
+ return (
42
+ this.cacheStrategy.revisionDataEqual(
43
+ pCachedCruiseResult.revisionData,
44
+ this.revisionData
45
+ ) &&
46
+ optionsAreCompatible(
47
+ pCachedCruiseResult.summary.optionsUsed,
48
+ pCruiseOptions
49
+ )
41
50
  );
42
- } catch (pError) {
43
- return { modules: [], summary: {} };
44
51
  }
45
- }
46
52
 
47
- /**
48
- * @param {import("../../types/strict-options").IStrictCruiseOptions} pOptions
49
- * @param {import("../..").ICruiseResult} pCachedCruiseResult
50
- * @param {import("../..").IRevisionData=} pRevisionData
51
- * @returns {boolean}
52
- */
53
- function canServeFromCache(pOptions, pCachedCruiseResult, pRevisionData) {
54
- gRevisionData =
55
- pRevisionData ??
56
- getRevisionData(
57
- new Set(meta.scannableExtensions.concat(pOptions.extraExtensionsToScan))
58
- );
59
- return (
60
- revisionDataEqual(pCachedCruiseResult.revisionData, gRevisionData) &&
61
- optionsAreCompatible(pCachedCruiseResult.summary.optionsUsed, pOptions)
62
- );
63
- }
53
+ /**
54
+ * @param {string} pCacheFolder
55
+ * @returns {import("../..").ICruiseResult}
56
+ */
57
+ read(pCacheFolder) {
58
+ try {
59
+ return JSON.parse(
60
+ readFileSync(join(pCacheFolder, CACHE_FILE_NAME), "utf8")
61
+ );
62
+ } catch (pError) {
63
+ return { modules: [], summary: {} };
64
+ }
65
+ }
64
66
 
65
- function clearCache() {
66
- gRevisionData = null;
67
- }
67
+ /**
68
+ * @param {string} pCacheFolder
69
+ * @param {import("../..").ICruiseResult} pCruiseResult
70
+ * @param {import("../..").IRevisionData=} pRevisionData
71
+ */
72
+ write(pCacheFolder, pCruiseResult, pRevisionData) {
73
+ const lRevisionData = pRevisionData ?? this.revisionData;
68
74
 
69
- module.exports = {
70
- writeCache,
71
- readCache,
72
- canServeFromCache,
73
- clearCache,
75
+ mkdirSync(pCacheFolder, { recursive: true });
76
+ writeFileSync(
77
+ join(pCacheFolder, CACHE_FILE_NAME),
78
+ JSON.stringify(
79
+ this.cacheStrategy.prepareRevisionDataForSaving(
80
+ pCruiseResult,
81
+ lRevisionData
82
+ )
83
+ ),
84
+ "utf8"
85
+ );
86
+ }
74
87
  };
@@ -0,0 +1,265 @@
1
+ const path = require("path");
2
+ const { isDeepStrictEqual } = require("util");
3
+ const { filenameMatchesPattern } = require("../graph-utl/match-facade");
4
+ const bus = require("../utl/bus");
5
+ const { DEBUG } = require("../utl/bus-log-levels");
6
+ const findAllFiles = require("../utl/find-all-files");
7
+ const { getFileHash } = require("./utl");
8
+
9
+ // skipping: "pairing broken", "unmodified", "unmerged", "type changed"
10
+ const DEFAULT_INTERESTING_CHANGE_TYPES = new Set([
11
+ "added",
12
+ "copied",
13
+ "deleted",
14
+ "ignored",
15
+ "modified",
16
+ "renamed",
17
+ "unmerged",
18
+ "untracked",
19
+ ]);
20
+
21
+ /**
22
+ * @param {Set<string>} pExtensions
23
+ * @returns {(pChange: import("watskeburt").IChange) => boolean}
24
+ */
25
+ function hasInterestingExtension(pExtensions) {
26
+ return (pChange) => pExtensions.has(path.extname(pChange.name));
27
+ }
28
+
29
+ /**
30
+ * @param {Set<import("watskeburt").changeTypeType>} pInterestingChangeTypes
31
+ * @returns {(pChange: import("watskeburt").IChange) => boolean}
32
+ */
33
+ function isInterestingChangeType(pInterestingChangeTypes) {
34
+ return (pChange) => pInterestingChangeTypes.has(pChange.changeType);
35
+ }
36
+
37
+ /**
38
+ * @param {import("watskeburt").IChange} pChange
39
+ * @param {import("../..").IRevisionChange}
40
+ */
41
+ function addCheckSumToChange(pChange) {
42
+ return {
43
+ ...pChange,
44
+ checkSum: getFileHash(pChange.name),
45
+ };
46
+ }
47
+ /**
48
+ *
49
+ * @param {import("../../types/strict-filter-types").IStrictExcludeType} pExcludeOption
50
+ * @returns {(pFileName: string) => boolean}
51
+ */
52
+ function excludeFilter(pExcludeOption) {
53
+ return (pFileName) => {
54
+ if (pExcludeOption.path) {
55
+ return !filenameMatchesPattern(pFileName, pExcludeOption.path);
56
+ }
57
+ return true;
58
+ };
59
+ }
60
+
61
+ /**
62
+ * @param {import("../../types/strict-filter-types").IStrictIncludeOnlyType} pIncludeOnlyFilter
63
+ * @returns {(pFileName: string) => boolean}
64
+ */
65
+ function includeOnlyFilter(pIncludeOnlyFilter) {
66
+ return (pFileName) => {
67
+ if (pIncludeOnlyFilter) {
68
+ return filenameMatchesPattern(pFileName, pIncludeOnlyFilter.path);
69
+ }
70
+ return true;
71
+ };
72
+ }
73
+
74
+ function diffCachedModuleAgainstFileSet(
75
+ pFileSet,
76
+ pFileHashFunction = getFileHash
77
+ ) {
78
+ // eslint-disable-next-line complexity
79
+ return (pModule) => {
80
+ if (
81
+ !pModule.consolidated &&
82
+ !pModule.coreModule &&
83
+ !pModule.couldNotResolve &&
84
+ !pModule.matchesDoNotFollow
85
+ ) {
86
+ if (!pFileSet.has(pModule.source)) {
87
+ return { name: pModule.source, changeType: "deleted" };
88
+ }
89
+ const lNewCheckSum = pFileHashFunction(pModule.source);
90
+ if (lNewCheckSum !== pModule.checkSum) {
91
+ return {
92
+ name: pModule.source,
93
+ changeType: "modified",
94
+ checkSum: lNewCheckSum,
95
+ };
96
+ }
97
+ }
98
+ return {
99
+ name: pModule.source,
100
+ changeType: "unmodified",
101
+ checkSum: pModule.checkSum,
102
+ };
103
+ };
104
+ }
105
+
106
+ /**
107
+ - there is no cache yet:
108
+ modules will === []; all files will be marked as 'added'
109
+ - there is a cache and it contains checksums:
110
+ - existing files that are not in the cache => added
111
+ - modules that are in the cache:
112
+ - don't exist anymore => deleted TODO:
113
+ we might wrongly bump into this for files that are gitignored and that don't have an interesting extension
114
+ - cached checksum === current checksum => not a change; left out
115
+ - cached checksum !== current checksum => modified
116
+ - there is a cache, but it doesn't contain checksums => same as before, except
117
+ all files will be marked as 'modified'
118
+ * @param {string} pDirectory
119
+ * @param {import("../..").ICruiseResult} pCachedCruiseResult
120
+ * @param {Object} pOptions
121
+ * @param {Set<string>} pOptions.extensions
122
+ * @param {string} pOptions.baseDir
123
+ * @returns {{source: string; changeType: import("watskeburt").changeTypeType; checkSum: string}[]}
124
+ */
125
+ function findChanges(pDirectory, pCachedCruiseResult, pOptions) {
126
+ bus.emit("progress", "cache: - hauling revision data", { level: DEBUG });
127
+ const lFileSet = new Set(
128
+ findAllFiles(pDirectory, {
129
+ baseDir: pOptions.baseDir,
130
+ })
131
+ .filter(excludeFilter(pOptions.exclude))
132
+ .filter(includeOnlyFilter(pOptions.includeOnly))
133
+ );
134
+
135
+ bus.emit("progress", "cache: - determining cached vs new", { level: DEBUG });
136
+ const lDiffCachedVsNew = pCachedCruiseResult.modules.map(
137
+ diffCachedModuleAgainstFileSet(lFileSet)
138
+ );
139
+
140
+ bus.emit("progress", "cache: - determining new vs cached", { level: DEBUG });
141
+ lDiffCachedVsNew.forEach(({ name }) => lFileSet.delete(name));
142
+
143
+ const lDiffNewVsCached = [];
144
+ for (let lFileName of lFileSet) {
145
+ lDiffNewVsCached.push({
146
+ name: lFileName,
147
+ changeType: "added",
148
+ checkSum: getFileHash(lFileName),
149
+ });
150
+ }
151
+
152
+ bus.emit("progress", "cache: - returning revision data", { level: DEBUG });
153
+ return lDiffCachedVsNew
154
+ .concat(lDiffNewVsCached)
155
+ .filter(hasInterestingExtension(pOptions.extensions));
156
+ }
157
+
158
+ /**
159
+ *
160
+ * @param {string} pDirectory
161
+ * @param {import("../..").ICruiseResult} pCachedCruiseResult
162
+ * @param {import("../../types/strict-options").IStrictCruiseOptions} pCruiseOptions
163
+ * @param {Object} pOptions
164
+ * @param {Set<string>} pOptions.extensions
165
+ * @param {Set<import("watskeburt").changeTypeType>} pOptions.interestingChangeTypes
166
+ * @param {string} pOptions.baseDir
167
+ * @param {(pString:string) => Array<import("watskeburt").IChange>} pOptions.diffListFn
168
+ * @param {(import("watskeburt").IChange) => import("../..").IRevisionChange} pOptions.checkSumFn
169
+ * @returns {import("../..").IRevisionData}
170
+ */
171
+ function getRevisionData(
172
+ pDirectory,
173
+ pCachedCruiseResult,
174
+ pCruiseOptions,
175
+ pOptions
176
+ ) {
177
+ const lOptions = {
178
+ diffListFn: findChanges,
179
+ checkSumFn: addCheckSumToChange,
180
+ interestingChangeTypes: DEFAULT_INTERESTING_CHANGE_TYPES,
181
+ baseDir: process.cwd(),
182
+ ...pOptions,
183
+ };
184
+ return {
185
+ SHA1: "unknown-in-content-cache-strategy",
186
+ changes: lOptions
187
+ .diffListFn(pDirectory, pCachedCruiseResult, {
188
+ baseDir: lOptions.baseDir,
189
+ extensions: lOptions.extensions,
190
+ includeOnly: pCruiseOptions.includeOnly,
191
+ exclude: pCruiseOptions.exclude,
192
+ })
193
+ .filter(isInterestingChangeType(lOptions.interestingChangeTypes)),
194
+ };
195
+ }
196
+
197
+ /**
198
+ * @param {import("../..").IRevisionData} pExistingRevisionData
199
+ * @param {import("../..").IRevisionData} pNewRevisionData
200
+ * @returns {boolean}
201
+ */
202
+ function revisionDataEqual(pExistingRevisionData, pNewRevisionData) {
203
+ return (
204
+ Boolean(pExistingRevisionData) &&
205
+ Boolean(pNewRevisionData) &&
206
+ isDeepStrictEqual(pExistingRevisionData.changes, pNewRevisionData.changes)
207
+ );
208
+ }
209
+
210
+ /**
211
+ * @param {import("../..").IModule} pModule
212
+ * @param {import("../..").IRevisionChange}
213
+ */
214
+ function addCheckSumToModule(pModule) {
215
+ if (
216
+ !pModule.consolidated &&
217
+ !pModule.coreModule &&
218
+ !pModule.couldNotResolve &&
219
+ !pModule.matchesDoNotFollow
220
+ ) {
221
+ return {
222
+ ...pModule,
223
+ checkSum: getFileHash(pModule.source),
224
+ };
225
+ }
226
+ return pModule;
227
+ }
228
+
229
+ /**
230
+ * @param {import("../..").IRevisionChange[]} pChanges
231
+ * @param {import("../..").IModule[]} pModules
232
+ * @returns {import("../..").IRevisionChange[]}
233
+ */
234
+ function refreshChanges(pChanges, pModules) {
235
+ return pChanges.filter(
236
+ (pChange) =>
237
+ !pModules.some(
238
+ (pModule) =>
239
+ pModule.source === pChange.name &&
240
+ pModule.checkSum === pChange.checkSum
241
+ )
242
+ );
243
+ }
244
+
245
+ function prepareRevisionDataForSaving(pCruiseResult, pRevisionData) {
246
+ const lModules = pCruiseResult.modules.map(addCheckSumToModule);
247
+ const lRevisionData = {
248
+ ...pRevisionData,
249
+ changes: refreshChanges(pRevisionData.changes, lModules),
250
+ };
251
+
252
+ return pRevisionData
253
+ ? {
254
+ ...pCruiseResult,
255
+ modules: lModules,
256
+ revisionData: lRevisionData,
257
+ }
258
+ : pCruiseResult;
259
+ }
260
+
261
+ module.exports = {
262
+ getRevisionData,
263
+ revisionDataEqual,
264
+ prepareRevisionDataForSaving,
265
+ };
@@ -16,7 +16,6 @@ const DEFAULT_INTERESTING_CHANGE_TYPES = new Set([
16
16
  ]);
17
17
 
18
18
  /**
19
- *
20
19
  * @param {Set<string>} pExtensions
21
20
  * @returns {(pChange: import("watskeburt").IChange) => boolean}
22
21
  */
@@ -42,7 +41,7 @@ function isInterestingChangeType(pInterestingChangeTypes) {
42
41
  function addChecksum(pChange) {
43
42
  return {
44
43
  ...pChange,
45
- checksum: getFileHash(pChange.name),
44
+ checkSum: getFileHash(pChange.name),
46
45
  };
47
46
  }
48
47
 
@@ -50,21 +49,26 @@ function addChecksum(pChange) {
50
49
  *
51
50
  * @param {Set<string>} pExtensions
52
51
  * @param {Set<import("watskeburt").changeTypeType>} pInterestingChangeTypes
52
+ * @param {import("../../types/strict-options").IStrictCruiseOptions} pCruiseOptions
53
53
  * @param {Object} pOptions
54
+ * @param {Set<string>} pOptions.extensions
55
+ * @param {Set<import("watskeburt").changeTypeType>} pOptions.interestingChangeTypes
54
56
  * @param {() => string} pOptions.shaRetrievalFn
55
57
  * @param {(pString:string) => Array<import("watskeburt").IChange>} pOptions.diffListFn
56
58
  * @param {(import("watskeburt").IChange) => import("../..").IRevisionChange} pOptions.checkSumFn
57
59
  * @returns {import("../../types/dependency-cruiser").IRevisionData}
58
60
  */
59
61
  function getRevisionData(
60
- pExtensions,
61
- pInterestingChangeTypes = DEFAULT_INTERESTING_CHANGE_TYPES,
62
+ pDirectory,
63
+ pCachedCruiseResult,
64
+ pCruiseOptions,
62
65
  pOptions
63
66
  ) {
64
67
  const lOptions = {
65
68
  shaRetrievalFn: getSHASync,
66
69
  diffListFn: listSync,
67
70
  checkSumFn: addChecksum,
71
+ interestingChangeTypes: DEFAULT_INTERESTING_CHANGE_TYPES,
68
72
  ...pOptions,
69
73
  };
70
74
  try {
@@ -73,8 +77,9 @@ function getRevisionData(
73
77
  SHA1: lSHA,
74
78
  changes: lOptions
75
79
  .diffListFn(lSHA)
76
- .filter(hasInterestingExtension(pExtensions))
77
- .filter(isInterestingChangeType(pInterestingChangeTypes))
80
+ // TODO: optimize - also apply filters for exclude and includeOnly (see content strategy)
81
+ .filter(hasInterestingExtension(lOptions.extensions))
82
+ .filter(isInterestingChangeType(lOptions.interestingChangeTypes))
78
83
  .map(lOptions.checkSumFn),
79
84
  };
80
85
  } catch (pError) {
@@ -100,7 +105,23 @@ function revisionDataEqual(pExistingRevisionData, pNewRevisionData) {
100
105
  );
101
106
  }
102
107
 
108
+ /**
109
+ *
110
+ * @param {import("../..").ICruiseResult} pCruiseResult
111
+ * @param {*} pRevisionData
112
+ * @returns {import("../..").ICruiseResult}
113
+ */
114
+ function prepareRevisionDataForSaving(pCruiseResult, pRevisionData) {
115
+ return pRevisionData
116
+ ? {
117
+ ...pCruiseResult,
118
+ revisionData: pRevisionData,
119
+ }
120
+ : pCruiseResult;
121
+ }
122
+
103
123
  module.exports = {
104
124
  getRevisionData,
105
125
  revisionDataEqual,
126
+ prepareRevisionDataForSaving,
106
127
  };
@@ -6,7 +6,7 @@ const { isDeepStrictEqual } = require("util");
6
6
  -i, --info
7
7
  -V, --version
8
8
  -h, --help
9
- -T, --output-type <type> unless counting implicit shizzle like dependendents, metrics calculation
9
+ -T, --output-type <type> unless counting implicit shizzle like dependents, metrics calculation
10
10
  -f, --output-to <file>
11
11
  -p, --progress [type]
12
12
  -P, --prefix <prefix>
@@ -123,9 +123,9 @@ function optionsAreCompatible(pOldOptions, pNewOptions) {
123
123
 
124
124
  module.exports = {
125
125
  optionsAreCompatible,
126
- filtersAreCompatible: optionIsCompatible,
127
- limitsAreCompatible: limitIsCompatible,
128
- metricsAreCompatible: metricsIsCompatible,
129
- includeOnlyFiltersAreCompatible: includeOnlyIsCompatible,
126
+ optionIsCompatible,
127
+ limitIsCompatible,
128
+ metricsIsCompatible,
129
+ includeOnlyIsCompatible,
130
130
  cacheOptionIsCompatible,
131
131
  };
package/src/cache/utl.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const { createHash } = require("crypto");
2
2
  const { readFileSync } = require("fs");
3
+ const memoize = require("lodash/memoize");
3
4
 
4
5
  /**
5
6
  * @param {string} pString
@@ -13,7 +14,7 @@ function hash(pString) {
13
14
  * @param {import("fs").PathOrFileDescriptor} pFileName
14
15
  * @returns {string}
15
16
  */
16
- function getFileHash(pFileName) {
17
+ function _getFileHash(pFileName) {
17
18
  try {
18
19
  return hash(readFileSync(pFileName, "utf8"));
19
20
  } catch (pError) {
@@ -21,4 +22,4 @@ function getFileHash(pFileName) {
21
22
  }
22
23
  }
23
24
 
24
- module.exports = { getFileHash };
25
+ module.exports = { getFileHash: memoize(_getFileHash) };
package/src/main/index.js CHANGED
@@ -6,12 +6,7 @@ const enrich = require("../enrich");
6
6
  const cruiseResultSchema = require("../schema/cruise-result.schema.js");
7
7
  const meta = require("../extract/transpile/meta");
8
8
  const bus = require("../utl/bus");
9
- const {
10
- canServeFromCache,
11
- readCache,
12
- writeCache,
13
- clearCache,
14
- } = require("../cache/cache");
9
+ const Cache = require("../cache/cache");
15
10
  const normalizeFilesAndDirectories = require("./files-and-dirs/normalize");
16
11
  const validateRuleSet = require("./rule-set/validate");
17
12
  const normalizeRuleSet = require("./rule-set/normalize");
@@ -65,13 +60,15 @@ function futureCruise(
65
60
  validateCruiseOptions(pCruiseOptions),
66
61
  pFileAndDirectoryArray
67
62
  );
63
+ let lCache = null;
68
64
 
69
65
  if (lCruiseOptions.cache) {
70
66
  bus.emit("progress", "cache: checking freshness", c(2));
71
67
 
72
- const lCachedResults = readCache(lCruiseOptions.cache.folder);
68
+ lCache = new Cache(lCruiseOptions?.cache.strategy);
69
+ const lCachedResults = lCache.read(lCruiseOptions.cache.folder);
73
70
 
74
- if (canServeFromCache(lCruiseOptions, lCachedResults)) {
71
+ if (lCache.canServeFromCache(lCruiseOptions, lCachedResults)) {
75
72
  bus.emit("progress", "cache: reporting from cache", c(8));
76
73
  return reportWrap(lCachedResults, lCruiseOptions);
77
74
  }
@@ -112,8 +109,7 @@ function futureCruise(
112
109
 
113
110
  if (lCruiseOptions.cache) {
114
111
  bus.emit("progress", "cache: saving", c(7));
115
- writeCache(lCruiseOptions.cache.folder, lCruiseResult);
116
- clearCache();
112
+ lCache.write(lCruiseOptions.cache.folder, lCruiseResult);
117
113
  }
118
114
 
119
115
  bus.emit("progress", "reporting", c(8));
package/src/meta.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /* generated - don't edit */
2
2
 
3
3
  module.exports = {
4
- version: "12.4.0",
4
+ version: "12.5.0-beta-1",
5
5
  engines: {
6
6
  node: "^14||^16||>=18",
7
7
  },
@@ -1,2 +1,2 @@
1
1
  /* generated - don't edit */
2
- module.exports={"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"}}},"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"}},"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","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"]},{"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"}}}}}}}}
2
+ module.exports={"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"}}},"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"}},"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","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"]},{"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"}}}}}}}}
@@ -12,9 +12,9 @@ export interface ICacheOptions {
12
12
  * - 'metadata': use git metadata to detect changes;
13
13
  * - 'content': use (a checksum of) the contents of files to detect changes.
14
14
  *
15
- * The last one is useful if you're not on git or work on partial clones
16
- * (which is typical on CI's). Trade-of: might be a bit slower, will not
17
- * detect changes on files that are entirely new.
15
+ * 'content'is useful if you're not on git or work on partial clones
16
+ * (which is typical on CI's). Trade-of: the 'content' strategy is typically
17
+ * slower.
18
18
  *
19
19
  * Defaults to 'metadata'
20
20
  */
@@ -6,7 +6,7 @@ import { IRuleSummary } from "./rule-summary";
6
6
  import { IChange } from "watskeburt";
7
7
 
8
8
  export interface IRevisionChange extends IChange {
9
- checksum: string;
9
+ checkSum: string;
10
10
  }
11
11
 
12
12
  /**