tdepend 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +212 -116
- package/dist/api/analyze.d.ts +8 -68
- package/dist/api/analyze.js +33 -108
- package/dist/api/analyze.js.map +1 -1
- package/dist/api/explain.d.ts +22 -0
- package/dist/api/explain.js +38 -0
- package/dist/api/explain.js.map +1 -0
- package/dist/api/export.d.ts +4 -47
- package/dist/api/export.js +6 -45
- package/dist/api/export.js.map +1 -1
- package/dist/api/serialization.d.ts +6 -26
- package/dist/api/serialization.js +68 -58
- package/dist/api/serialization.js.map +1 -1
- package/dist/cli/index.js +11 -129
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run.d.ts +12 -0
- package/dist/cli/run.js +112 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/config/loadConfig.d.ts +10 -10
- package/dist/config/loadConfig.js +73 -36
- package/dist/config/loadConfig.js.map +1 -1
- package/dist/config/schema.d.ts +59 -29
- package/dist/config/schema.js +45 -51
- package/dist/config/schema.js.map +1 -1
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -0
- package/dist/files/collectFiles.d.ts +21 -0
- package/dist/files/collectFiles.js +189 -0
- package/dist/files/collectFiles.js.map +1 -0
- package/dist/fs.d.ts +16 -0
- package/dist/fs.js +50 -0
- package/dist/fs.js.map +1 -0
- package/dist/graph/buildFileGraph.d.ts +33 -0
- package/dist/graph/buildFileGraph.js +163 -0
- package/dist/graph/buildFileGraph.js.map +1 -0
- package/dist/graph/fileGraph.d.ts +20 -0
- package/dist/graph/fileGraph.js +75 -0
- package/dist/graph/fileGraph.js.map +1 -0
- package/dist/index.d.ts +10 -21
- package/dist/index.js +6 -29
- package/dist/index.js.map +1 -1
- package/dist/output/analyzeText.d.ts +7 -0
- package/dist/output/analyzeText.js +91 -0
- package/dist/output/analyzeText.js.map +1 -0
- package/dist/parser/extractSites.d.ts +3 -0
- package/dist/parser/extractSites.js +704 -0
- package/dist/parser/extractSites.js.map +1 -0
- package/dist/parser/loadsTarget.d.ts +10 -0
- package/dist/parser/loadsTarget.js +304 -0
- package/dist/parser/loadsTarget.js.map +1 -0
- package/dist/parser/types.d.ts +30 -0
- package/dist/{types/graph.js → parser/types.js} +1 -1
- package/dist/parser/types.js.map +1 -0
- package/dist/project/discoverProject.d.ts +2 -0
- package/dist/project/discoverProject.js +477 -0
- package/dist/project/discoverProject.js.map +1 -0
- package/dist/project/gitignore.d.ts +13 -0
- package/dist/project/gitignore.js +138 -0
- package/dist/project/gitignore.js.map +1 -0
- package/dist/project/types.d.ts +44 -0
- package/dist/{types/parser.js → project/types.js} +1 -1
- package/dist/project/types.js.map +1 -0
- package/dist/resolver/createResolver.d.ts +4 -0
- package/dist/resolver/createResolver.js +276 -0
- package/dist/resolver/createResolver.js.map +1 -0
- package/dist/resolver/types.d.ts +28 -0
- package/dist/resolver/types.js +3 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/resolver/workspaceHost.d.ts +12 -0
- package/dist/resolver/workspaceHost.js +253 -0
- package/dist/resolver/workspaceHost.js.map +1 -0
- package/dist/types/api.d.ts +71 -64
- package/package.json +24 -25
- package/dist/analysis/reporter.d.ts +0 -22
- package/dist/analysis/reporter.js +0 -116
- package/dist/analysis/reporter.js.map +0 -1
- package/dist/graph/cycleDetector.d.ts +0 -2
- package/dist/graph/cycleDetector.js +0 -56
- package/dist/graph/cycleDetector.js.map +0 -1
- package/dist/graph/dependencyGraph.d.ts +0 -10
- package/dist/graph/dependencyGraph.js +0 -41
- package/dist/graph/dependencyGraph.js.map +0 -1
- package/dist/metrics/abstractness.d.ts +0 -2
- package/dist/metrics/abstractness.js +0 -10
- package/dist/metrics/abstractness.js.map +0 -1
- package/dist/metrics/distance.d.ts +0 -1
- package/dist/metrics/distance.js +0 -7
- package/dist/metrics/distance.js.map +0 -1
- package/dist/metrics/index.d.ts +0 -4
- package/dist/metrics/index.js +0 -30
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/instability.d.ts +0 -1
- package/dist/metrics/instability.js +0 -8
- package/dist/metrics/instability.js.map +0 -1
- package/dist/parser/fileScanner.d.ts +0 -8
- package/dist/parser/fileScanner.js +0 -22
- package/dist/parser/fileScanner.js.map +0 -1
- package/dist/parser/tsParser.d.ts +0 -18
- package/dist/parser/tsParser.js +0 -158
- package/dist/parser/tsParser.js.map +0 -1
- package/dist/types/graph.d.ts +0 -14
- package/dist/types/graph.js.map +0 -1
- package/dist/types/parser.d.ts +0 -26
- package/dist/types/parser.js.map +0 -1
- package/dist/utils/deepMerge.d.ts +0 -1
- package/dist/utils/deepMerge.js +0 -23
- package/dist/utils/deepMerge.js.map +0 -1
- package/dist/utils/log.d.ts +0 -2
- package/dist/utils/log.js +0 -9
- package/dist/utils/log.js.map +0 -1
- package/dist/utils/pathUtils.d.ts +0 -12
- package/dist/utils/pathUtils.js +0 -27
- package/dist/utils/pathUtils.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceHost.js","sourceRoot":"","sources":["../../src/resolver/workspaceHost.ts"],"names":[],"mappings":"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"}
|
package/dist/types/api.d.ts
CHANGED
|
@@ -1,74 +1,81 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
1
|
+
import type { UserConfig } from '../config/schema';
|
|
2
|
+
import type { CollectResult, SkipReason } from '../files/collectFiles';
|
|
3
|
+
import type { ResolutionReport, SiteRecord } from '../graph/buildFileGraph';
|
|
4
|
+
import type { FileGraph } from '../graph/fileGraph';
|
|
5
|
+
import type { EdgeKind, LoadReason, SiteForm, UnsupportedReason } from '../parser/types';
|
|
6
|
+
import type { ProjectContext } from '../project/types';
|
|
7
|
+
import type { ResolutionClass, Target, WorkspaceRequest } from '../resolver/types';
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* The live result an analysis returns. It holds rich objects (the project
|
|
10
|
+
* context with its lookup functions, parsed files and resolver nodes) that are
|
|
11
|
+
* not serialisable, so `toSerializable` projects it into the export shape.
|
|
9
12
|
*/
|
|
10
13
|
export interface AnalysisResult {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/** Computed metrics for each module */
|
|
18
|
-
metrics: ModuleMetrics[];
|
|
19
|
-
/** Generated analysis report with summary and violations */
|
|
20
|
-
report: AnalysisReport;
|
|
21
|
-
/** Configuration used for this analysis */
|
|
22
|
-
config: TDependConfig;
|
|
14
|
+
ctx: ProjectContext;
|
|
15
|
+
files: CollectResult;
|
|
16
|
+
graph: FileGraph;
|
|
17
|
+
sites: SiteRecord[];
|
|
18
|
+
report: ResolutionReport;
|
|
19
|
+
config: UserConfig;
|
|
23
20
|
}
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
/** One import site in the versioned JSON export. */
|
|
22
|
+
export interface SerializableSite {
|
|
23
|
+
file: string;
|
|
24
|
+
specifier: string;
|
|
25
|
+
line: number;
|
|
26
|
+
column: number;
|
|
27
|
+
kind: EdgeKind;
|
|
28
|
+
form: SiteForm;
|
|
29
|
+
deferred: boolean;
|
|
30
|
+
unsupported: UnsupportedReason | null;
|
|
31
|
+
loadsTarget: boolean;
|
|
32
|
+
loadsTargetBy: LoadReason | null;
|
|
33
|
+
class: ResolutionClass;
|
|
34
|
+
reason: string | null;
|
|
35
|
+
target: Target | null;
|
|
36
|
+
mapped: string | null;
|
|
37
|
+
requested: WorkspaceRequest | null;
|
|
34
38
|
}
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
/** One edge of the file graph: the pair, its runtime/mapped flags and kinds. */
|
|
40
|
+
export interface SerializableEdge {
|
|
41
|
+
from: string;
|
|
42
|
+
to: string;
|
|
43
|
+
runtime: boolean;
|
|
44
|
+
mapped: boolean;
|
|
45
|
+
kinds: EdgeKind[];
|
|
41
46
|
}
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
/** A site reduced to where it is and what it names. */
|
|
48
|
+
export interface SerializableSiteLocation {
|
|
49
|
+
file: string;
|
|
50
|
+
line: number;
|
|
51
|
+
column: number;
|
|
52
|
+
specifier: string;
|
|
53
|
+
}
|
|
54
|
+
/** An unsupported site with the reason it could not be classified. */
|
|
55
|
+
export interface SerializableUnsupported extends SerializableSiteLocation {
|
|
56
|
+
reason: string;
|
|
57
|
+
}
|
|
58
|
+
export interface SerializableReport {
|
|
59
|
+
stats: Record<ResolutionClass, number>;
|
|
60
|
+
unresolved: SerializableSiteLocation[];
|
|
61
|
+
ignoredByDir: Record<string, number>;
|
|
62
|
+
unsupported: SerializableUnsupported[];
|
|
63
|
+
selfImports: string[];
|
|
64
|
+
uncovered: string[];
|
|
65
|
+
skipped: Array<{
|
|
66
|
+
file: string;
|
|
67
|
+
reason: SkipReason;
|
|
68
|
+
}>;
|
|
69
|
+
warnings: string[];
|
|
52
70
|
}
|
|
53
71
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
72
|
+
* The versioned JSON export. It carries data only, is fully sorted and has no
|
|
73
|
+
* timestamp, so two runs on the same inputs produce byte-identical output.
|
|
56
74
|
*/
|
|
57
|
-
export interface
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
config: TDependConfig;
|
|
64
|
-
/** Parsed modules with imports, exports, classes, etc. */
|
|
65
|
-
modules: ParsedModule[];
|
|
66
|
-
/** Serializable dependency graph */
|
|
67
|
-
graph: SerializableDependencyGraph;
|
|
68
|
-
/** Normalized cycles with unique IDs */
|
|
69
|
-
cycles: SerializableCycle[];
|
|
70
|
-
/** Computed metrics for each module */
|
|
71
|
-
metrics: ModuleMetrics[];
|
|
72
|
-
/** Generated analysis report with summary and violations */
|
|
73
|
-
report: AnalysisReport;
|
|
75
|
+
export interface SerializableResult {
|
|
76
|
+
version: 1;
|
|
77
|
+
files: string[];
|
|
78
|
+
edges: SerializableEdge[];
|
|
79
|
+
sites: SerializableSite[];
|
|
80
|
+
report: SerializableReport;
|
|
74
81
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tdepend",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "A TypeScript import graph that matches the compiler, the foundation for executable architecture contracts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -22,6 +22,15 @@
|
|
|
22
22
|
"dist",
|
|
23
23
|
"README.md"
|
|
24
24
|
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
27
|
+
"build": "pnpm run clean && tsc -p tsconfig.json",
|
|
28
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
|
|
29
|
+
"cli": "node dist/cli/index.js",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"format": "prettier --write .",
|
|
32
|
+
"prepublishOnly": "pnpm test && pnpm run build"
|
|
33
|
+
},
|
|
25
34
|
"keywords": [
|
|
26
35
|
"dependency",
|
|
27
36
|
"analysis",
|
|
@@ -30,11 +39,7 @@
|
|
|
30
39
|
"library",
|
|
31
40
|
"api",
|
|
32
41
|
"jdepend",
|
|
33
|
-
"metrics",
|
|
34
42
|
"architecture",
|
|
35
|
-
"coupling",
|
|
36
|
-
"abstractness",
|
|
37
|
-
"instability",
|
|
38
43
|
"dependency-analysis",
|
|
39
44
|
"code-quality"
|
|
40
45
|
],
|
|
@@ -48,30 +53,24 @@
|
|
|
48
53
|
"homepage": "https://github.com/dvmhmdsd/tdepend#readme",
|
|
49
54
|
"author": "Mohamed Saad <mohamed.tarif999@gmail.com>",
|
|
50
55
|
"license": "MIT",
|
|
51
|
-
"packageManager": "pnpm@
|
|
56
|
+
"packageManager": "pnpm@10.34.8",
|
|
52
57
|
"engines": {
|
|
53
|
-
"node": ">=
|
|
58
|
+
"node": ">=22.12"
|
|
54
59
|
},
|
|
55
60
|
"dependencies": {
|
|
56
|
-
"commander": "^
|
|
57
|
-
"
|
|
58
|
-
"
|
|
61
|
+
"commander": "^15.0.0",
|
|
62
|
+
"picomatch": "^4.0.0",
|
|
63
|
+
"typescript": "5.9.3",
|
|
64
|
+
"yaml": "^2.0.0",
|
|
59
65
|
"zod": "^4.1.13"
|
|
60
66
|
},
|
|
61
67
|
"devDependencies": {
|
|
62
|
-
"@
|
|
63
|
-
"@types/node": "^
|
|
68
|
+
"@swc/core": "1.16.20",
|
|
69
|
+
"@types/node": "^22.0.0",
|
|
70
|
+
"@types/picomatch": "^4.0.0",
|
|
71
|
+
"@vitest/coverage-v8": "^5.0.0",
|
|
72
|
+
"esbuild": "0.28.2",
|
|
64
73
|
"prettier": "^3.1.1",
|
|
65
|
-
"
|
|
66
|
-
"typescript": "^5.6.3",
|
|
67
|
-
"vitest": "^1.6.0"
|
|
68
|
-
},
|
|
69
|
-
"scripts": {
|
|
70
|
-
"build": "tsc -p tsconfig.json",
|
|
71
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
72
|
-
"dev": "ts-node src/cli/index.ts analyze --help",
|
|
73
|
-
"cli": "node dist/cli/index.js",
|
|
74
|
-
"test": "vitest run",
|
|
75
|
-
"format": "prettier --write ."
|
|
74
|
+
"vitest": "^5.0.0"
|
|
76
75
|
}
|
|
77
|
-
}
|
|
76
|
+
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { ParsedModule } from '../types/parser';
|
|
2
|
-
import type { ModuleMetrics } from '../types/graph';
|
|
3
|
-
import type { TDependConfig } from '../config/schema';
|
|
4
|
-
export interface AnalysisReport {
|
|
5
|
-
summary: {
|
|
6
|
-
totalModules: number;
|
|
7
|
-
totalImports: number;
|
|
8
|
-
totalExports: number;
|
|
9
|
-
totalClasses: number;
|
|
10
|
-
totalInterfaces: number;
|
|
11
|
-
cyclesDetected: number;
|
|
12
|
-
};
|
|
13
|
-
metrics: ModuleMetrics[];
|
|
14
|
-
violations: {
|
|
15
|
-
cycles: string[][];
|
|
16
|
-
thresholdExceeded: ModuleMetrics[];
|
|
17
|
-
};
|
|
18
|
-
success: boolean;
|
|
19
|
-
}
|
|
20
|
-
export declare function generateReport(modules: ParsedModule[], metrics: ModuleMetrics[], cycles: string[][], config: TDependConfig): AnalysisReport;
|
|
21
|
-
export declare function formatConsoleOutput(report: AnalysisReport, config: TDependConfig): void;
|
|
22
|
-
export declare function formatJsonOutput(report: AnalysisReport): string;
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateReport = generateReport;
|
|
4
|
-
exports.formatConsoleOutput = formatConsoleOutput;
|
|
5
|
-
exports.formatJsonOutput = formatJsonOutput;
|
|
6
|
-
function generateReport(modules, metrics, cycles, config) {
|
|
7
|
-
const totalImports = modules.reduce((sum, m) => sum + m.imports.length, 0);
|
|
8
|
-
const totalExports = modules.reduce((sum, m) => sum + m.exports.length, 0);
|
|
9
|
-
const totalClasses = modules.reduce((sum, m) => sum + m.classes.length, 0);
|
|
10
|
-
const totalInterfaces = modules.reduce((sum, m) => sum + m.interfaces, 0);
|
|
11
|
-
const thresholdViolations = metrics.filter((m) => m.distance > config.metrics.thresholds.distance);
|
|
12
|
-
const hasCycleViolation = cycles.length > 0 && config.ci.failOnCycle;
|
|
13
|
-
const hasThresholdViolation = thresholdViolations.length > 0 && config.ci.failOnThreshold;
|
|
14
|
-
return {
|
|
15
|
-
summary: {
|
|
16
|
-
totalModules: modules.length,
|
|
17
|
-
totalImports,
|
|
18
|
-
totalExports,
|
|
19
|
-
totalClasses,
|
|
20
|
-
totalInterfaces,
|
|
21
|
-
cyclesDetected: cycles.length,
|
|
22
|
-
},
|
|
23
|
-
metrics,
|
|
24
|
-
violations: {
|
|
25
|
-
cycles,
|
|
26
|
-
thresholdExceeded: thresholdViolations,
|
|
27
|
-
},
|
|
28
|
-
success: !hasCycleViolation && !hasThresholdViolation,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function getZoneLabel(abstractness, instability) {
|
|
32
|
-
if (abstractness < 0.5 && instability < 0.5)
|
|
33
|
-
return ' (Zone of Pain)';
|
|
34
|
-
if (abstractness > 0.5 && instability > 0.5)
|
|
35
|
-
return ' (Zone of Uselessness)';
|
|
36
|
-
return '';
|
|
37
|
-
}
|
|
38
|
-
function displaySummary(summary) {
|
|
39
|
-
console.log('\n📊 Summary:');
|
|
40
|
-
console.log(` Total imports: ${summary.totalImports}`);
|
|
41
|
-
console.log(` Total exports: ${summary.totalExports}`);
|
|
42
|
-
console.log(` Total classes: ${summary.totalClasses}`);
|
|
43
|
-
console.log(` Total interfaces: ${summary.totalInterfaces}`);
|
|
44
|
-
console.log(` Cycles detected: ${summary.cyclesDetected}`);
|
|
45
|
-
}
|
|
46
|
-
function displayCycles(cycles) {
|
|
47
|
-
if (cycles.length === 0)
|
|
48
|
-
return;
|
|
49
|
-
console.log('\n⚠️ Cycles:');
|
|
50
|
-
for (const cycle of cycles) {
|
|
51
|
-
const fileNames = cycle.map((p) => p.split('/').pop()).join(' → ');
|
|
52
|
-
console.log(` - ${fileNames}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function displayTopMetrics(metrics) {
|
|
56
|
-
const sortedByCa = [...metrics].sort((a, b) => b.Ca - a.Ca);
|
|
57
|
-
const sortedByCe = [...metrics].sort((a, b) => b.Ce - a.Ce);
|
|
58
|
-
const sortedByDistance = [...metrics].sort((a, b) => b.distance - a.distance);
|
|
59
|
-
if (sortedByCa.length > 0) {
|
|
60
|
-
console.log('\n📥 Top modules by Ca (Afferent Coupling):');
|
|
61
|
-
for (const m of sortedByCa.slice(0, 3)) {
|
|
62
|
-
const fileName = m.filePath.split('/').pop();
|
|
63
|
-
console.log(` - ${fileName}: Ca=${m.Ca}, Ce=${m.Ce}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (sortedByCe.length > 0) {
|
|
67
|
-
console.log('\n📤 Top modules by Ce (Efferent Coupling):');
|
|
68
|
-
for (const m of sortedByCe.slice(0, 3)) {
|
|
69
|
-
const fileName = m.filePath.split('/').pop();
|
|
70
|
-
console.log(` - ${fileName}: Ca=${m.Ca}, Ce=${m.Ce}`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (sortedByDistance.length > 0) {
|
|
74
|
-
console.log('\n📏 Modules by Distance from Main Sequence:');
|
|
75
|
-
for (const m of sortedByDistance.slice(0, 5)) {
|
|
76
|
-
const fileName = m.filePath.split('/').pop();
|
|
77
|
-
const zone = getZoneLabel(m.abstractness, m.instability);
|
|
78
|
-
console.log(` - ${fileName}: D=${m.distance.toFixed(2)}, A=${m.abstractness.toFixed(2)}, I=${m.instability.toFixed(2)}${zone}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function displayThresholdViolations(violations, threshold) {
|
|
83
|
-
if (violations.length === 0)
|
|
84
|
-
return;
|
|
85
|
-
console.log(`\n⚠️ ${violations.length} module(s) exceed distance threshold (${threshold}):`);
|
|
86
|
-
for (const m of violations.slice(0, 5)) {
|
|
87
|
-
const fileName = m.filePath.split('/').pop();
|
|
88
|
-
console.log(` - ${fileName}: D=${m.distance.toFixed(2)}`);
|
|
89
|
-
}
|
|
90
|
-
if (violations.length > 5) {
|
|
91
|
-
console.log(` ... and ${violations.length - 5} more`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function formatConsoleOutput(report, config) {
|
|
95
|
-
displaySummary(report.summary);
|
|
96
|
-
displayCycles(report.violations.cycles);
|
|
97
|
-
displayTopMetrics(report.metrics);
|
|
98
|
-
displayThresholdViolations(report.violations.thresholdExceeded, config.metrics.thresholds.distance);
|
|
99
|
-
}
|
|
100
|
-
function formatJsonOutput(report) {
|
|
101
|
-
return JSON.stringify({
|
|
102
|
-
success: report.success,
|
|
103
|
-
summary: report.summary,
|
|
104
|
-
metrics: report.metrics,
|
|
105
|
-
violations: {
|
|
106
|
-
cycles: report.violations.cycles,
|
|
107
|
-
thresholdExceeded: report.violations.thresholdExceeded.map((m) => ({
|
|
108
|
-
filePath: m.filePath,
|
|
109
|
-
distance: m.distance,
|
|
110
|
-
abstractness: m.abstractness,
|
|
111
|
-
instability: m.instability,
|
|
112
|
-
})),
|
|
113
|
-
},
|
|
114
|
-
}, null, 2);
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=reporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/analysis/reporter.ts"],"names":[],"mappings":";;AAqBA,wCAmCC;AA2ED,kDAQC;AAED,4CAmBC;AA3ID,SAAgB,cAAc,CAC5B,OAAuB,EACvB,OAAwB,EACxB,MAAkB,EAClB,MAAqB;IAErB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAE1E,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CACvD,CAAC;IAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC;IACrE,MAAM,qBAAqB,GACzB,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC;IAE9D,OAAO;QACL,OAAO,EAAE;YACP,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc,EAAE,MAAM,CAAC,MAAM;SAC9B;QACD,OAAO;QACP,UAAU,EAAE;YACV,MAAM;YACN,iBAAiB,EAAE,mBAAmB;SACvC;QACD,OAAO,EAAE,CAAC,iBAAiB,IAAI,CAAC,qBAAqB;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,YAAoB,EAAE,WAAmB;IAC7D,IAAI,YAAY,GAAG,GAAG,IAAI,WAAW,GAAG,GAAG;QAAE,OAAO,iBAAiB,CAAC;IACtE,IAAI,YAAY,GAAG,GAAG,IAAI,WAAW,GAAG,GAAG;QAAE,OAAO,wBAAwB,CAAC;IAC7E,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,OAAkC;IACxD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,MAAkB;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAwB;IACjD,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE9E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CACT,OAAO,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CACpH,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,UAA2B,EAAE,SAAiB;IAChF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,OAAO,CAAC,GAAG,CACT,SAAS,UAAU,CAAC,MAAM,yCAAyC,SAAS,IAAI,CACjF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAsB,EAAE,MAAqB;IAC/E,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,0BAA0B,CACxB,MAAM,CAAC,UAAU,CAAC,iBAAiB,EACnC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CACnC,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAsB;IACrD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;YAChC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC;SACJ;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectCycles = detectCycles;
|
|
4
|
-
function strongConnect(node, graph, state) {
|
|
5
|
-
state.indices.set(node, state.index);
|
|
6
|
-
state.lowLinks.set(node, state.index);
|
|
7
|
-
state.index++;
|
|
8
|
-
state.stack.push(node);
|
|
9
|
-
state.onStack.add(node);
|
|
10
|
-
const graphNode = graph.getNode(node);
|
|
11
|
-
if (graphNode) {
|
|
12
|
-
for (const dependency of graphNode.dependencies) {
|
|
13
|
-
if (!state.indices.has(dependency)) {
|
|
14
|
-
strongConnect(dependency, graph, state);
|
|
15
|
-
const currentLow = state.lowLinks.get(node);
|
|
16
|
-
const depLow = state.lowLinks.get(dependency);
|
|
17
|
-
state.lowLinks.set(node, Math.min(currentLow, depLow));
|
|
18
|
-
}
|
|
19
|
-
else if (state.onStack.has(dependency)) {
|
|
20
|
-
const currentLow = state.lowLinks.get(node);
|
|
21
|
-
const depIndex = state.indices.get(dependency);
|
|
22
|
-
state.lowLinks.set(node, Math.min(currentLow, depIndex));
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (state.lowLinks.get(node) === state.indices.get(node)) {
|
|
27
|
-
const component = [];
|
|
28
|
-
let w;
|
|
29
|
-
do {
|
|
30
|
-
w = state.stack.pop();
|
|
31
|
-
state.onStack.delete(w);
|
|
32
|
-
component.push(w);
|
|
33
|
-
} while (w !== node);
|
|
34
|
-
if (component.length > 1) {
|
|
35
|
-
state.components.push(component);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function detectCycles(graph) {
|
|
40
|
-
const state = {
|
|
41
|
-
index: 0,
|
|
42
|
-
stack: [],
|
|
43
|
-
indices: new Map(),
|
|
44
|
-
lowLinks: new Map(),
|
|
45
|
-
onStack: new Set(),
|
|
46
|
-
components: [],
|
|
47
|
-
};
|
|
48
|
-
const allNodes = graph.getAllNodes();
|
|
49
|
-
for (const node of allNodes) {
|
|
50
|
-
if (!state.indices.has(node.filePath)) {
|
|
51
|
-
strongConnect(node.filePath, graph, state);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return state.components;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=cycleDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cycleDetector.js","sourceRoot":"","sources":["../../src/graph/cycleDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ParsedModule } from '../types/parser';
|
|
2
|
-
import type { DependencyNode } from '../types/graph';
|
|
3
|
-
export declare class DependencyGraph {
|
|
4
|
-
private readonly nodes;
|
|
5
|
-
constructor(modules: ParsedModule[]);
|
|
6
|
-
private addNode;
|
|
7
|
-
private addEdge;
|
|
8
|
-
getNode(filePath: string): DependencyNode | undefined;
|
|
9
|
-
getAllNodes(): DependencyNode[];
|
|
10
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DependencyGraph = void 0;
|
|
4
|
-
class DependencyGraph {
|
|
5
|
-
constructor(modules) {
|
|
6
|
-
this.nodes = new Map();
|
|
7
|
-
for (const module of modules) {
|
|
8
|
-
this.addNode(module.filePath);
|
|
9
|
-
}
|
|
10
|
-
for (const module of modules) {
|
|
11
|
-
for (const importPath of module.imports) {
|
|
12
|
-
this.addEdge(module.filePath, importPath);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
addNode(filePath) {
|
|
17
|
-
if (!this.nodes.has(filePath)) {
|
|
18
|
-
this.nodes.set(filePath, {
|
|
19
|
-
filePath,
|
|
20
|
-
dependencies: new Set(),
|
|
21
|
-
dependents: new Set(),
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
addEdge(from, to) {
|
|
26
|
-
this.addNode(from);
|
|
27
|
-
this.addNode(to);
|
|
28
|
-
const fromNode = this.nodes.get(from);
|
|
29
|
-
const toNode = this.nodes.get(to);
|
|
30
|
-
fromNode.dependencies.add(to);
|
|
31
|
-
toNode.dependents.add(from);
|
|
32
|
-
}
|
|
33
|
-
getNode(filePath) {
|
|
34
|
-
return this.nodes.get(filePath);
|
|
35
|
-
}
|
|
36
|
-
getAllNodes() {
|
|
37
|
-
return Array.from(this.nodes.values());
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.DependencyGraph = DependencyGraph;
|
|
41
|
-
//# sourceMappingURL=dependencyGraph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyGraph.js","sourceRoot":"","sources":["../../src/graph/dependencyGraph.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;IAG1B,YAAY,OAAuB;QAFlB,UAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;QAG9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,QAAgB;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACvB,QAAQ;gBACR,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,UAAU,EAAE,IAAI,GAAG,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,EAAU;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QAEnC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;CACF;AA3CD,0CA2CC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.computeAbstractness = computeAbstractness;
|
|
4
|
-
function computeAbstractness(module) {
|
|
5
|
-
const abstractClasses = module.classes.filter((c) => c.isAbstract).length;
|
|
6
|
-
const abstractTypes = module.interfaces + abstractClasses;
|
|
7
|
-
const totalTypes = module.totalTypes;
|
|
8
|
-
return totalTypes === 0 ? 0 : abstractTypes / totalTypes;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=abstractness.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstractness.js","sourceRoot":"","sources":["../../src/metrics/abstractness.ts"],"names":[],"mappings":";;AAEA,kDAMC;AAND,SAAgB,mBAAmB,CAAC,MAAoB;IACtD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,UAAU,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function computeDistance(abstractness: number, instability: number): number;
|
package/dist/metrics/distance.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.computeDistance = computeDistance;
|
|
4
|
-
function computeDistance(abstractness, instability) {
|
|
5
|
-
return Math.abs(abstractness + instability - 1);
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=distance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"distance.js","sourceRoot":"","sources":["../../src/metrics/distance.ts"],"names":[],"mappings":";;AAAA,0CAEC;AAFD,SAAgB,eAAe,CAAC,YAAoB,EAAE,WAAmB;IACvE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/metrics/index.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { DependencyGraph } from '../graph/dependencyGraph';
|
|
2
|
-
import type { ParsedModule } from '../types/parser';
|
|
3
|
-
import type { ModuleMetrics } from '../types/graph';
|
|
4
|
-
export declare function computeAllMetrics(graph: DependencyGraph, modules: ParsedModule[], cycles: string[][]): ModuleMetrics[];
|
package/dist/metrics/index.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.computeAllMetrics = computeAllMetrics;
|
|
4
|
-
const abstractness_1 = require("./abstractness");
|
|
5
|
-
const distance_1 = require("./distance");
|
|
6
|
-
const instability_1 = require("./instability");
|
|
7
|
-
function computeAllMetrics(graph, modules, cycles) {
|
|
8
|
-
const moduleMap = new Map(modules.map((m) => [m.filePath, m]));
|
|
9
|
-
const metrics = [];
|
|
10
|
-
for (const node of graph.getAllNodes()) {
|
|
11
|
-
const module = moduleMap.get(node.filePath);
|
|
12
|
-
const moduleCycles = cycles.filter((cycle) => cycle.includes(node.filePath));
|
|
13
|
-
const Ca = node.dependents.size;
|
|
14
|
-
const Ce = node.dependencies.size;
|
|
15
|
-
const abstractness = module ? (0, abstractness_1.computeAbstractness)(module) : 0;
|
|
16
|
-
const instability = (0, instability_1.computeInstability)(Ca, Ce);
|
|
17
|
-
const distance = (0, distance_1.computeDistance)(abstractness, instability);
|
|
18
|
-
metrics.push({
|
|
19
|
-
filePath: node.filePath,
|
|
20
|
-
Ca,
|
|
21
|
-
Ce,
|
|
22
|
-
cycles: moduleCycles,
|
|
23
|
-
abstractness,
|
|
24
|
-
instability,
|
|
25
|
-
distance,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
return metrics;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":";;AAOA,8CA8BC;AAlCD,iDAAqD;AACrD,yCAA6C;AAC7C,+CAAmD;AAEnD,SAAgB,iBAAiB,CAC/B,KAAsB,EACtB,OAAuB,EACvB,MAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE7E,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,kCAAmB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAA,gCAAkB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAA,0BAAe,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE5D,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,EAAE;YACF,EAAE;YACF,MAAM,EAAE,YAAY;YACpB,YAAY;YACZ,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function computeInstability(Ca: number, Ce: number): number;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.computeInstability = computeInstability;
|
|
4
|
-
function computeInstability(Ca, Ce) {
|
|
5
|
-
const total = Ca + Ce;
|
|
6
|
-
return total === 0 ? 0 : Ce / total;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=instability.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instability.js","sourceRoot":"","sources":["../../src/metrics/instability.ts"],"names":[],"mappings":";;AAAA,gDAGC;AAHD,SAAgB,kBAAkB,CAAC,EAAU,EAAE,EAAU;IACvD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;AACtC,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { TDependConfig } from '../config/schema';
|
|
2
|
-
/**
|
|
3
|
-
* Scan files based on include/exclude patterns from config
|
|
4
|
-
*
|
|
5
|
-
* @param config - TDepend configuration with include/exclude patterns
|
|
6
|
-
* @returns Array of normalized absolute file paths
|
|
7
|
-
*/
|
|
8
|
-
export declare function scanFiles(config: TDependConfig): Promise<string[]>;
|