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.
Files changed (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +212 -116
  3. package/dist/api/analyze.d.ts +8 -68
  4. package/dist/api/analyze.js +33 -108
  5. package/dist/api/analyze.js.map +1 -1
  6. package/dist/api/explain.d.ts +22 -0
  7. package/dist/api/explain.js +38 -0
  8. package/dist/api/explain.js.map +1 -0
  9. package/dist/api/export.d.ts +4 -47
  10. package/dist/api/export.js +6 -45
  11. package/dist/api/export.js.map +1 -1
  12. package/dist/api/serialization.d.ts +6 -26
  13. package/dist/api/serialization.js +68 -58
  14. package/dist/api/serialization.js.map +1 -1
  15. package/dist/cli/index.js +11 -129
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/run.d.ts +12 -0
  18. package/dist/cli/run.js +112 -0
  19. package/dist/cli/run.js.map +1 -0
  20. package/dist/config/loadConfig.d.ts +10 -10
  21. package/dist/config/loadConfig.js +73 -36
  22. package/dist/config/loadConfig.js.map +1 -1
  23. package/dist/config/schema.d.ts +59 -29
  24. package/dist/config/schema.js +45 -51
  25. package/dist/config/schema.js.map +1 -1
  26. package/dist/errors.d.ts +9 -0
  27. package/dist/errors.js +21 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/files/collectFiles.d.ts +21 -0
  30. package/dist/files/collectFiles.js +189 -0
  31. package/dist/files/collectFiles.js.map +1 -0
  32. package/dist/fs.d.ts +16 -0
  33. package/dist/fs.js +50 -0
  34. package/dist/fs.js.map +1 -0
  35. package/dist/graph/buildFileGraph.d.ts +33 -0
  36. package/dist/graph/buildFileGraph.js +163 -0
  37. package/dist/graph/buildFileGraph.js.map +1 -0
  38. package/dist/graph/fileGraph.d.ts +20 -0
  39. package/dist/graph/fileGraph.js +75 -0
  40. package/dist/graph/fileGraph.js.map +1 -0
  41. package/dist/index.d.ts +10 -21
  42. package/dist/index.js +6 -29
  43. package/dist/index.js.map +1 -1
  44. package/dist/output/analyzeText.d.ts +7 -0
  45. package/dist/output/analyzeText.js +91 -0
  46. package/dist/output/analyzeText.js.map +1 -0
  47. package/dist/parser/extractSites.d.ts +3 -0
  48. package/dist/parser/extractSites.js +704 -0
  49. package/dist/parser/extractSites.js.map +1 -0
  50. package/dist/parser/loadsTarget.d.ts +10 -0
  51. package/dist/parser/loadsTarget.js +304 -0
  52. package/dist/parser/loadsTarget.js.map +1 -0
  53. package/dist/parser/types.d.ts +30 -0
  54. package/dist/{types/graph.js → parser/types.js} +1 -1
  55. package/dist/parser/types.js.map +1 -0
  56. package/dist/project/discoverProject.d.ts +2 -0
  57. package/dist/project/discoverProject.js +477 -0
  58. package/dist/project/discoverProject.js.map +1 -0
  59. package/dist/project/gitignore.d.ts +13 -0
  60. package/dist/project/gitignore.js +138 -0
  61. package/dist/project/gitignore.js.map +1 -0
  62. package/dist/project/types.d.ts +44 -0
  63. package/dist/{types/parser.js → project/types.js} +1 -1
  64. package/dist/project/types.js.map +1 -0
  65. package/dist/resolver/createResolver.d.ts +4 -0
  66. package/dist/resolver/createResolver.js +276 -0
  67. package/dist/resolver/createResolver.js.map +1 -0
  68. package/dist/resolver/types.d.ts +28 -0
  69. package/dist/resolver/types.js +3 -0
  70. package/dist/resolver/types.js.map +1 -0
  71. package/dist/resolver/workspaceHost.d.ts +12 -0
  72. package/dist/resolver/workspaceHost.js +253 -0
  73. package/dist/resolver/workspaceHost.js.map +1 -0
  74. package/dist/types/api.d.ts +71 -64
  75. package/package.json +24 -25
  76. package/dist/analysis/reporter.d.ts +0 -22
  77. package/dist/analysis/reporter.js +0 -116
  78. package/dist/analysis/reporter.js.map +0 -1
  79. package/dist/graph/cycleDetector.d.ts +0 -2
  80. package/dist/graph/cycleDetector.js +0 -56
  81. package/dist/graph/cycleDetector.js.map +0 -1
  82. package/dist/graph/dependencyGraph.d.ts +0 -10
  83. package/dist/graph/dependencyGraph.js +0 -41
  84. package/dist/graph/dependencyGraph.js.map +0 -1
  85. package/dist/metrics/abstractness.d.ts +0 -2
  86. package/dist/metrics/abstractness.js +0 -10
  87. package/dist/metrics/abstractness.js.map +0 -1
  88. package/dist/metrics/distance.d.ts +0 -1
  89. package/dist/metrics/distance.js +0 -7
  90. package/dist/metrics/distance.js.map +0 -1
  91. package/dist/metrics/index.d.ts +0 -4
  92. package/dist/metrics/index.js +0 -30
  93. package/dist/metrics/index.js.map +0 -1
  94. package/dist/metrics/instability.d.ts +0 -1
  95. package/dist/metrics/instability.js +0 -8
  96. package/dist/metrics/instability.js.map +0 -1
  97. package/dist/parser/fileScanner.d.ts +0 -8
  98. package/dist/parser/fileScanner.js +0 -22
  99. package/dist/parser/fileScanner.js.map +0 -1
  100. package/dist/parser/tsParser.d.ts +0 -18
  101. package/dist/parser/tsParser.js +0 -158
  102. package/dist/parser/tsParser.js.map +0 -1
  103. package/dist/types/graph.d.ts +0 -14
  104. package/dist/types/graph.js.map +0 -1
  105. package/dist/types/parser.d.ts +0 -26
  106. package/dist/types/parser.js.map +0 -1
  107. package/dist/utils/deepMerge.d.ts +0 -1
  108. package/dist/utils/deepMerge.js +0 -23
  109. package/dist/utils/deepMerge.js.map +0 -1
  110. package/dist/utils/log.d.ts +0 -2
  111. package/dist/utils/log.js +0 -9
  112. package/dist/utils/log.js.map +0 -1
  113. package/dist/utils/pathUtils.d.ts +0 -12
  114. package/dist/utils/pathUtils.js +0 -27
  115. 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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"}
@@ -1,74 +1,81 @@
1
- import type { DependencyGraph } from '../graph/dependencyGraph';
2
- import type { ParsedModule } from './parser';
3
- import type { ModuleMetrics } from './graph';
4
- import type { AnalysisReport } from '../analysis/reporter';
5
- import type { TDependConfig } from '../config/schema';
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
- * Main result returned by the analyze() function.
8
- * Contains rich objects (DependencyGraph with Sets) suitable for programmatic use.
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
- /** Parsed modules with imports, exports, classes, etc. */
12
- modules: ParsedModule[];
13
- /** Dependency graph with Set-based relationships */
14
- graph: DependencyGraph;
15
- /** Detected dependency cycles */
16
- cycles: string[][];
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
- * Serializable version of DependencyNode with Arrays instead of Sets.
26
- */
27
- export interface SerializableDependencyNode {
28
- /** File path of this module */
29
- filePath: string;
30
- /** Modules that this module depends on (outgoing dependencies) */
31
- dependencies: string[];
32
- /** Modules that depend on this module (incoming dependencies) */
33
- dependents: string[];
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
- * Serializable dependency graph with array-based relationships.
37
- */
38
- export interface SerializableDependencyGraph {
39
- /** All nodes in the dependency graph */
40
- nodes: SerializableDependencyNode[];
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
- * Normalized cycle with stable identification.
44
- */
45
- export interface SerializableCycle {
46
- /** Unique identifier (hash of sorted file paths) */
47
- id: string;
48
- /** File paths forming the cycle (normalized to start with lexicographically smallest) */
49
- nodes: string[];
50
- /** Number of nodes in the cycle */
51
- length: number;
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
- * Complete serializable analysis result suitable for JSON export.
55
- * All Sets are converted to Arrays for proper JSON serialization.
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 SerializableAnalysisResult {
58
- /** Format version for compatibility checking */
59
- version: string;
60
- /** ISO 8601 timestamp of when this analysis was generated */
61
- timestamp: string;
62
- /** Configuration used for this analysis */
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.2.0",
4
- "description": "JDepend-inspired dependency analysis tool for TypeScript",
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@8.15.4",
56
+ "packageManager": "pnpm@10.34.8",
52
57
  "engines": {
53
- "node": ">=20.0.0"
58
+ "node": ">=22.12"
54
59
  },
55
60
  "dependencies": {
56
- "commander": "^12.0.0",
57
- "glob": "^13.0.0",
58
- "ts-morph": "^27.0.2",
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
- "@types/glob": "^9.0.0",
63
- "@types/node": "^20.11.30",
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
- "ts-node": "^10.9.2",
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,2 +0,0 @@
1
- import type { DependencyGraph } from './dependencyGraph';
2
- export declare function detectCycles(graph: DependencyGraph): string[][];
@@ -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,2 +0,0 @@
1
- import type { ParsedModule } from '../types/parser';
2
- export declare function computeAbstractness(module: ParsedModule): number;
@@ -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;
@@ -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"}
@@ -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[];
@@ -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[]>;