cli-node-graph 1.0.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 (180) hide show
  1. package/README.md +69 -0
  2. package/dist/analysis/CircularDependencyAnalyzer.d.ts +13 -0
  3. package/dist/analysis/CircularDependencyAnalyzer.d.ts.map +1 -0
  4. package/dist/analysis/CircularDependencyAnalyzer.js +15 -0
  5. package/dist/analysis/CircularDependencyAnalyzer.js.map +1 -0
  6. package/dist/analysis/DeadCodeAnalyzer.d.ts +13 -0
  7. package/dist/analysis/DeadCodeAnalyzer.d.ts.map +1 -0
  8. package/dist/analysis/DeadCodeAnalyzer.js +37 -0
  9. package/dist/analysis/DeadCodeAnalyzer.js.map +1 -0
  10. package/dist/analysis/DependencyAnalyzer.d.ts +16 -0
  11. package/dist/analysis/DependencyAnalyzer.d.ts.map +1 -0
  12. package/dist/analysis/DependencyAnalyzer.js +26 -0
  13. package/dist/analysis/DependencyAnalyzer.js.map +1 -0
  14. package/dist/analysis/ImpactAnalyzer.d.ts +16 -0
  15. package/dist/analysis/ImpactAnalyzer.d.ts.map +1 -0
  16. package/dist/analysis/ImpactAnalyzer.js +26 -0
  17. package/dist/analysis/ImpactAnalyzer.js.map +1 -0
  18. package/dist/analysis/LayerViolationAnalyzer.d.ts +31 -0
  19. package/dist/analysis/LayerViolationAnalyzer.d.ts.map +1 -0
  20. package/dist/analysis/LayerViolationAnalyzer.js +71 -0
  21. package/dist/analysis/LayerViolationAnalyzer.js.map +1 -0
  22. package/dist/cli/ProjectLoader.d.ts +13 -0
  23. package/dist/cli/ProjectLoader.d.ts.map +1 -0
  24. package/dist/cli/ProjectLoader.js +48 -0
  25. package/dist/cli/ProjectLoader.js.map +1 -0
  26. package/dist/cli/index.d.ts +3 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +139 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/config/AnalysisConfig.d.ts +22 -0
  31. package/dist/config/AnalysisConfig.d.ts.map +1 -0
  32. package/dist/config/AnalysisConfig.js +6 -0
  33. package/dist/config/AnalysisConfig.js.map +1 -0
  34. package/dist/exporters/CytoscapeExporter.d.ts +18 -0
  35. package/dist/exporters/CytoscapeExporter.d.ts.map +1 -0
  36. package/dist/exporters/CytoscapeExporter.js +85 -0
  37. package/dist/exporters/CytoscapeExporter.js.map +1 -0
  38. package/dist/exporters/DotExporter.d.ts +13 -0
  39. package/dist/exporters/DotExporter.d.ts.map +1 -0
  40. package/dist/exporters/DotExporter.js +38 -0
  41. package/dist/exporters/DotExporter.js.map +1 -0
  42. package/dist/exporters/GraphExporter.d.ts +7 -0
  43. package/dist/exporters/GraphExporter.d.ts.map +1 -0
  44. package/dist/exporters/GraphExporter.js +2 -0
  45. package/dist/exporters/GraphExporter.js.map +1 -0
  46. package/dist/exporters/GraphMLExporter.d.ts +8 -0
  47. package/dist/exporters/GraphMLExporter.d.ts.map +1 -0
  48. package/dist/exporters/GraphMLExporter.js +30 -0
  49. package/dist/exporters/GraphMLExporter.js.map +1 -0
  50. package/dist/exporters/JsonExporter.d.ts +8 -0
  51. package/dist/exporters/JsonExporter.d.ts.map +1 -0
  52. package/dist/exporters/JsonExporter.js +16 -0
  53. package/dist/exporters/JsonExporter.js.map +1 -0
  54. package/dist/graph/EdgeFactory.d.ts +13 -0
  55. package/dist/graph/EdgeFactory.d.ts.map +1 -0
  56. package/dist/graph/EdgeFactory.js +15 -0
  57. package/dist/graph/EdgeFactory.js.map +1 -0
  58. package/dist/graph/Graph.d.ts +37 -0
  59. package/dist/graph/Graph.d.ts.map +1 -0
  60. package/dist/graph/Graph.js +137 -0
  61. package/dist/graph/Graph.js.map +1 -0
  62. package/dist/graph/GraphAlgorithms.d.ts +28 -0
  63. package/dist/graph/GraphAlgorithms.d.ts.map +1 -0
  64. package/dist/graph/GraphAlgorithms.js +233 -0
  65. package/dist/graph/GraphAlgorithms.js.map +1 -0
  66. package/dist/graph/GraphBuilder.d.ts +10 -0
  67. package/dist/graph/GraphBuilder.d.ts.map +1 -0
  68. package/dist/graph/GraphBuilder.js +71 -0
  69. package/dist/graph/GraphBuilder.js.map +1 -0
  70. package/dist/graph/NodeFactory.d.ts +21 -0
  71. package/dist/graph/NodeFactory.d.ts.map +1 -0
  72. package/dist/graph/NodeFactory.js +53 -0
  73. package/dist/graph/NodeFactory.js.map +1 -0
  74. package/dist/index.d.ts +35 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +24 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/model/EdgeKind.d.ts +22 -0
  79. package/dist/model/EdgeKind.d.ts.map +1 -0
  80. package/dist/model/EdgeKind.js +23 -0
  81. package/dist/model/EdgeKind.js.map +1 -0
  82. package/dist/model/GraphEdge.d.ts +22 -0
  83. package/dist/model/GraphEdge.d.ts.map +1 -0
  84. package/dist/model/GraphEdge.js +2 -0
  85. package/dist/model/GraphEdge.js.map +1 -0
  86. package/dist/model/GraphNode.d.ts +22 -0
  87. package/dist/model/GraphNode.d.ts.map +1 -0
  88. package/dist/model/GraphNode.js +2 -0
  89. package/dist/model/GraphNode.js.map +1 -0
  90. package/dist/model/NodeKind.d.ts +21 -0
  91. package/dist/model/NodeKind.d.ts.map +1 -0
  92. package/dist/model/NodeKind.js +22 -0
  93. package/dist/model/NodeKind.js.map +1 -0
  94. package/dist/parser/ASTWalker.d.ts +21 -0
  95. package/dist/parser/ASTWalker.d.ts.map +1 -0
  96. package/dist/parser/ASTWalker.js +23 -0
  97. package/dist/parser/ASTWalker.js.map +1 -0
  98. package/dist/parser/ProgramFactory.d.ts +15 -0
  99. package/dist/parser/ProgramFactory.d.ts.map +1 -0
  100. package/dist/parser/ProgramFactory.js +65 -0
  101. package/dist/parser/ProgramFactory.js.map +1 -0
  102. package/dist/parser/visitors/CallVisitor.d.ts +17 -0
  103. package/dist/parser/visitors/CallVisitor.d.ts.map +1 -0
  104. package/dist/parser/visitors/CallVisitor.js +111 -0
  105. package/dist/parser/visitors/CallVisitor.js.map +1 -0
  106. package/dist/parser/visitors/ClassVisitor.d.ts +14 -0
  107. package/dist/parser/visitors/ClassVisitor.d.ts.map +1 -0
  108. package/dist/parser/visitors/ClassVisitor.js +87 -0
  109. package/dist/parser/visitors/ClassVisitor.js.map +1 -0
  110. package/dist/parser/visitors/DecoratorVisitor.d.ts +13 -0
  111. package/dist/parser/visitors/DecoratorVisitor.d.ts.map +1 -0
  112. package/dist/parser/visitors/DecoratorVisitor.js +65 -0
  113. package/dist/parser/visitors/DecoratorVisitor.js.map +1 -0
  114. package/dist/parser/visitors/EnumVisitor.d.ts +11 -0
  115. package/dist/parser/visitors/EnumVisitor.d.ts.map +1 -0
  116. package/dist/parser/visitors/EnumVisitor.js +26 -0
  117. package/dist/parser/visitors/EnumVisitor.js.map +1 -0
  118. package/dist/parser/visitors/ExportVisitor.d.ts +16 -0
  119. package/dist/parser/visitors/ExportVisitor.d.ts.map +1 -0
  120. package/dist/parser/visitors/ExportVisitor.js +95 -0
  121. package/dist/parser/visitors/ExportVisitor.js.map +1 -0
  122. package/dist/parser/visitors/FunctionVisitor.d.ts +14 -0
  123. package/dist/parser/visitors/FunctionVisitor.d.ts.map +1 -0
  124. package/dist/parser/visitors/FunctionVisitor.js +74 -0
  125. package/dist/parser/visitors/FunctionVisitor.js.map +1 -0
  126. package/dist/parser/visitors/HeritageVisitor.d.ts +14 -0
  127. package/dist/parser/visitors/HeritageVisitor.d.ts.map +1 -0
  128. package/dist/parser/visitors/HeritageVisitor.js +87 -0
  129. package/dist/parser/visitors/HeritageVisitor.js.map +1 -0
  130. package/dist/parser/visitors/ImportVisitor.d.ts +14 -0
  131. package/dist/parser/visitors/ImportVisitor.d.ts.map +1 -0
  132. package/dist/parser/visitors/ImportVisitor.js +96 -0
  133. package/dist/parser/visitors/ImportVisitor.js.map +1 -0
  134. package/dist/parser/visitors/InterfaceVisitor.d.ts +11 -0
  135. package/dist/parser/visitors/InterfaceVisitor.d.ts.map +1 -0
  136. package/dist/parser/visitors/InterfaceVisitor.js +28 -0
  137. package/dist/parser/visitors/InterfaceVisitor.js.map +1 -0
  138. package/dist/parser/visitors/MethodVisitor.d.ts +11 -0
  139. package/dist/parser/visitors/MethodVisitor.d.ts.map +1 -0
  140. package/dist/parser/visitors/MethodVisitor.js +30 -0
  141. package/dist/parser/visitors/MethodVisitor.js.map +1 -0
  142. package/dist/parser/visitors/TypeReferenceVisitor.d.ts +15 -0
  143. package/dist/parser/visitors/TypeReferenceVisitor.d.ts.map +1 -0
  144. package/dist/parser/visitors/TypeReferenceVisitor.js +85 -0
  145. package/dist/parser/visitors/TypeReferenceVisitor.js.map +1 -0
  146. package/dist/parser/visitors/VariableVisitor.d.ts +11 -0
  147. package/dist/parser/visitors/VariableVisitor.d.ts.map +1 -0
  148. package/dist/parser/visitors/VariableVisitor.js +27 -0
  149. package/dist/parser/visitors/VariableVisitor.js.map +1 -0
  150. package/dist/parser/visitors/context.d.ts +54 -0
  151. package/dist/parser/visitors/context.d.ts.map +1 -0
  152. package/dist/parser/visitors/context.js +117 -0
  153. package/dist/parser/visitors/context.js.map +1 -0
  154. package/dist/resolver/ModuleResolver.d.ts +16 -0
  155. package/dist/resolver/ModuleResolver.d.ts.map +1 -0
  156. package/dist/resolver/ModuleResolver.js +40 -0
  157. package/dist/resolver/ModuleResolver.js.map +1 -0
  158. package/dist/resolver/SymbolResolver.d.ts +15 -0
  159. package/dist/resolver/SymbolResolver.d.ts.map +1 -0
  160. package/dist/resolver/SymbolResolver.js +62 -0
  161. package/dist/resolver/SymbolResolver.js.map +1 -0
  162. package/dist/resolver/TypeResolver.d.ts +13 -0
  163. package/dist/resolver/TypeResolver.d.ts.map +1 -0
  164. package/dist/resolver/TypeResolver.js +32 -0
  165. package/dist/resolver/TypeResolver.js.map +1 -0
  166. package/dist/utils/cache.d.ts +12 -0
  167. package/dist/utils/cache.d.ts.map +1 -0
  168. package/dist/utils/cache.js +38 -0
  169. package/dist/utils/cache.js.map +1 -0
  170. package/dist/utils/id.d.ts +7 -0
  171. package/dist/utils/id.d.ts.map +1 -0
  172. package/dist/utils/id.js +15 -0
  173. package/dist/utils/id.js.map +1 -0
  174. package/dist/utils/path.d.ts +9 -0
  175. package/dist/utils/path.d.ts.map +1 -0
  176. package/dist/utils/path.js +18 -0
  177. package/dist/utils/path.js.map +1 -0
  178. package/docs/ARCHITECTURE.md +100 -0
  179. package/docs/CLI.md +62 -0
  180. package/package.json +58 -0
@@ -0,0 +1,233 @@
1
+ import { EdgeKind } from '../model/EdgeKind.js';
2
+ /** Graph algorithms for dependency analysis. */
3
+ export class GraphAlgorithms {
4
+ graph;
5
+ constructor(graph) {
6
+ this.graph = graph;
7
+ }
8
+ /** Kahn's algorithm topological sort. Returns empty if cycles exist. */
9
+ topologicalSort(nodeIds) {
10
+ const ids = nodeIds ?? this.graph.getNodes().map((n) => n.id);
11
+ const idSet = new Set(ids);
12
+ const inDegree = new Map();
13
+ const adjacency = new Map();
14
+ for (const id of ids) {
15
+ inDegree.set(id, 0);
16
+ adjacency.set(id, []);
17
+ }
18
+ for (const edge of this.graph.getEdges()) {
19
+ if (!idSet.has(edge.source) || !idSet.has(edge.target))
20
+ continue;
21
+ if (this.isDependencyEdge(edge)) {
22
+ adjacency.get(edge.source)?.push(edge.target);
23
+ inDegree.set(edge.target, (inDegree.get(edge.target) ?? 0) + 1);
24
+ }
25
+ }
26
+ const queue = [...ids].filter((id) => (inDegree.get(id) ?? 0) === 0);
27
+ const result = [];
28
+ while (queue.length > 0) {
29
+ const current = queue.shift();
30
+ result.push(current);
31
+ for (const neighbor of adjacency.get(current) ?? []) {
32
+ const deg = (inDegree.get(neighbor) ?? 1) - 1;
33
+ inDegree.set(neighbor, deg);
34
+ if (deg === 0)
35
+ queue.push(neighbor);
36
+ }
37
+ }
38
+ return result.length === ids.length ? result : [];
39
+ }
40
+ /** Tarjan's algorithm for strongly connected components. */
41
+ stronglyConnectedComponents(nodeIds) {
42
+ const ids = nodeIds ?? this.graph.getNodes().map((n) => n.id);
43
+ const idSet = new Set(ids);
44
+ const adjacency = this.buildAdjacencyList(idSet, true);
45
+ let index = 0;
46
+ const stack = [];
47
+ const onStack = new Set();
48
+ const indices = new Map();
49
+ const lowLink = new Map();
50
+ const components = [];
51
+ const strongConnect = (v) => {
52
+ indices.set(v, index);
53
+ lowLink.set(v, index);
54
+ index++;
55
+ stack.push(v);
56
+ onStack.add(v);
57
+ for (const w of adjacency.get(v) ?? []) {
58
+ if (!indices.has(w)) {
59
+ strongConnect(w);
60
+ lowLink.set(v, Math.min(lowLink.get(v), lowLink.get(w)));
61
+ }
62
+ else if (onStack.has(w)) {
63
+ lowLink.set(v, Math.min(lowLink.get(v), indices.get(w)));
64
+ }
65
+ }
66
+ if (lowLink.get(v) === indices.get(v)) {
67
+ const component = [];
68
+ let w;
69
+ do {
70
+ w = stack.pop();
71
+ onStack.delete(w);
72
+ component.push(w);
73
+ } while (w !== v);
74
+ components.push(component);
75
+ }
76
+ };
77
+ for (const id of ids) {
78
+ if (!indices.has(id))
79
+ strongConnect(id);
80
+ }
81
+ return components;
82
+ }
83
+ /** Detect all cycles (SCCs with more than one node or self-loops). */
84
+ detectCycles() {
85
+ const selfLoops = this.graph
86
+ .getEdges()
87
+ .filter((e) => e.source === e.target)
88
+ .map((e) => [e.source]);
89
+ const sccs = this.stronglyConnectedComponents().filter((c) => c.length > 1);
90
+ return [...selfLoops, ...sccs];
91
+ }
92
+ /** BFS shortest path between two nodes. */
93
+ shortestPath(from, to) {
94
+ if (from === to)
95
+ return [from];
96
+ const adjacency = this.buildAdjacencyList(new Set(this.graph.getNodes().map((n) => n.id)), true);
97
+ const visited = new Set([from]);
98
+ const queue = [{ node: from, path: [from] }];
99
+ while (queue.length > 0) {
100
+ const { node, path } = queue.shift();
101
+ for (const neighbor of adjacency.get(node) ?? []) {
102
+ if (neighbor === to)
103
+ return [...path, neighbor];
104
+ if (!visited.has(neighbor)) {
105
+ visited.add(neighbor);
106
+ queue.push({ node: neighbor, path: [...path, neighbor] });
107
+ }
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ /** Maximum dependency depth from a node. */
113
+ dependencyDepth(nodeId) {
114
+ const adjacency = this.buildAdjacencyList(new Set(this.graph.getNodes().map((n) => n.id)), true);
115
+ const memo = new Map();
116
+ const depth = (id, visiting) => {
117
+ if (memo.has(id))
118
+ return memo.get(id);
119
+ if (visiting.has(id))
120
+ return 0;
121
+ visiting.add(id);
122
+ let max = 0;
123
+ for (const neighbor of adjacency.get(id) ?? []) {
124
+ max = Math.max(max, 1 + depth(neighbor, visiting));
125
+ }
126
+ visiting.delete(id);
127
+ memo.set(id, max);
128
+ return max;
129
+ };
130
+ return depth(nodeId, new Set());
131
+ }
132
+ /** Get all nodes reachable downstream from a starting node. */
133
+ downstream(nodeId) {
134
+ const adjacency = this.buildAdjacencyList(new Set(this.graph.getNodes().map((n) => n.id)), true);
135
+ const result = new Set();
136
+ const stack = [nodeId];
137
+ while (stack.length > 0) {
138
+ const current = stack.pop();
139
+ for (const neighbor of adjacency.get(current) ?? []) {
140
+ if (!result.has(neighbor)) {
141
+ result.add(neighbor);
142
+ stack.push(neighbor);
143
+ }
144
+ }
145
+ }
146
+ return result;
147
+ }
148
+ /** Get all nodes that depend on a given node (reverse lookup). */
149
+ reverseDependencies(nodeId) {
150
+ const adjacency = this.buildAdjacencyList(new Set(this.graph.getNodes().map((n) => n.id)), false);
151
+ const result = new Set();
152
+ const stack = [nodeId];
153
+ while (stack.length > 0) {
154
+ const current = stack.pop();
155
+ for (const neighbor of adjacency.get(current) ?? []) {
156
+ if (!result.has(neighbor)) {
157
+ result.add(neighbor);
158
+ stack.push(neighbor);
159
+ }
160
+ }
161
+ }
162
+ return result;
163
+ }
164
+ /** Expand neighborhood to N hops. */
165
+ neighborhood(nodeId, hops) {
166
+ const result = new Set([nodeId]);
167
+ let frontier = new Set([nodeId]);
168
+ for (let i = 0; i < hops; i++) {
169
+ const next = new Set();
170
+ for (const id of frontier) {
171
+ for (const edge of [...this.graph.getOutgoingEdges(id), ...this.graph.getIncomingEdges(id)]) {
172
+ const neighbor = edge.source === id ? edge.target : edge.source;
173
+ if (!result.has(neighbor)) {
174
+ result.add(neighbor);
175
+ next.add(neighbor);
176
+ }
177
+ }
178
+ }
179
+ frontier = next;
180
+ }
181
+ return result;
182
+ }
183
+ /** Compute transitive closure for dependency edges. */
184
+ transitiveClosure(nodeIds) {
185
+ const idSet = new Set(nodeIds);
186
+ const adjacency = this.buildAdjacencyList(idSet, true);
187
+ const closure = new Set();
188
+ for (const start of nodeIds) {
189
+ const reachable = this.downstreamFromAdjacency(start, adjacency);
190
+ for (const node of reachable) {
191
+ closure.add(`${start}->${node}`);
192
+ }
193
+ }
194
+ return closure;
195
+ }
196
+ downstreamFromAdjacency(start, adjacency) {
197
+ const result = new Set();
198
+ const stack = [start];
199
+ while (stack.length > 0) {
200
+ const current = stack.pop();
201
+ for (const neighbor of adjacency.get(current) ?? []) {
202
+ if (!result.has(neighbor)) {
203
+ result.add(neighbor);
204
+ stack.push(neighbor);
205
+ }
206
+ }
207
+ }
208
+ return result;
209
+ }
210
+ buildAdjacencyList(nodeIds, forward) {
211
+ const adjacency = new Map();
212
+ for (const id of nodeIds)
213
+ adjacency.set(id, []);
214
+ for (const edge of this.graph.getEdges()) {
215
+ if (!this.isDependencyEdge(edge))
216
+ continue;
217
+ const src = forward ? edge.source : edge.target;
218
+ const tgt = forward ? edge.target : edge.source;
219
+ if (nodeIds.has(src) && nodeIds.has(tgt)) {
220
+ adjacency.get(src)?.push(tgt);
221
+ }
222
+ }
223
+ return adjacency;
224
+ }
225
+ isDependencyEdge(edge) {
226
+ return (edge.kind === EdgeKind.DEPENDS_ON ||
227
+ edge.kind === EdgeKind.IMPORTS ||
228
+ edge.kind === EdgeKind.CALLS ||
229
+ edge.kind === EdgeKind.EXTENDS ||
230
+ edge.kind === EdgeKind.IMPLEMENTS);
231
+ }
232
+ }
233
+ //# sourceMappingURL=GraphAlgorithms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphAlgorithms.js","sourceRoot":"","sources":["../../src/graph/GraphAlgorithms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { AnalysisConfig } from '../config/AnalysisConfig.js';
2
+ import { Graph } from './Graph.js';
3
+ /** Orchestrates the full graph construction pipeline. */
4
+ export declare class GraphBuilder {
5
+ private readonly programFactory;
6
+ private readonly nodeFactory;
7
+ private readonly edgeFactory;
8
+ build(config: AnalysisConfig): Graph;
9
+ }
10
+ //# sourceMappingURL=GraphBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../src/graph/GraphBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAsBnC,yDAAyD;AACzD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK;CAoDrC"}
@@ -0,0 +1,71 @@
1
+ import { EdgeFactory } from './EdgeFactory.js';
2
+ import { Graph } from './Graph.js';
3
+ import { NodeFactory } from './NodeFactory.js';
4
+ import { ASTWalker } from '../parser/ASTWalker.js';
5
+ import { ProgramFactory } from '../parser/ProgramFactory.js';
6
+ import { ModuleResolver, PathResolver } from '../resolver/ModuleResolver.js';
7
+ import { SymbolResolver } from '../resolver/SymbolResolver.js';
8
+ import { TypeResolver } from '../resolver/TypeResolver.js';
9
+ import { CallVisitor } from '../parser/visitors/CallVisitor.js';
10
+ import { ClassVisitor } from '../parser/visitors/ClassVisitor.js';
11
+ import { DecoratorVisitor } from '../parser/visitors/DecoratorVisitor.js';
12
+ import { EnumVisitor } from '../parser/visitors/EnumVisitor.js';
13
+ import { ExportVisitor } from '../parser/visitors/ExportVisitor.js';
14
+ import { FunctionVisitor } from '../parser/visitors/FunctionVisitor.js';
15
+ import { HeritageVisitor } from '../parser/visitors/HeritageVisitor.js';
16
+ import { ImportVisitor } from '../parser/visitors/ImportVisitor.js';
17
+ import { InterfaceVisitor } from '../parser/visitors/InterfaceVisitor.js';
18
+ import { MethodVisitor } from '../parser/visitors/MethodVisitor.js';
19
+ import { TypeReferenceVisitor } from '../parser/visitors/TypeReferenceVisitor.js';
20
+ import { VariableVisitor } from '../parser/visitors/VariableVisitor.js';
21
+ import { toPosixPath } from '../utils/path.js';
22
+ /** Orchestrates the full graph construction pipeline. */
23
+ export class GraphBuilder {
24
+ programFactory = new ProgramFactory();
25
+ nodeFactory = new NodeFactory();
26
+ edgeFactory = new EdgeFactory();
27
+ build(config) {
28
+ const programResult = this.programFactory.create(config);
29
+ const graph = new Graph();
30
+ const projectNode = this.nodeFactory.project(toPosixPath(programResult.projectRoot).split('/').pop() ?? 'project', toPosixPath(programResult.projectRoot));
31
+ graph.addNode(projectNode);
32
+ const pathResolver = new PathResolver(programResult.projectRoot);
33
+ const moduleResolver = new ModuleResolver();
34
+ const symbolResolver = new SymbolResolver(programResult.checker);
35
+ const typeResolver = new TypeResolver(programResult.checker);
36
+ const ctx = {
37
+ graph,
38
+ nodeFactory: this.nodeFactory,
39
+ edgeFactory: this.edgeFactory,
40
+ symbolResolver,
41
+ typeResolver,
42
+ moduleResolver,
43
+ pathResolver,
44
+ projectRoot: programResult.projectRoot,
45
+ symbolNodeMap: new Map(),
46
+ fileNodeMap: new Map(),
47
+ };
48
+ const visitors = [
49
+ new ImportVisitor(ctx),
50
+ new ExportVisitor(ctx),
51
+ new ClassVisitor(ctx),
52
+ new InterfaceVisitor(ctx),
53
+ new EnumVisitor(ctx),
54
+ new FunctionVisitor(ctx),
55
+ new MethodVisitor(ctx),
56
+ new VariableVisitor(ctx),
57
+ new CallVisitor(ctx),
58
+ new DecoratorVisitor(ctx),
59
+ new TypeReferenceVisitor(ctx),
60
+ new HeritageVisitor(ctx),
61
+ ];
62
+ const walker = new ASTWalker(visitors);
63
+ walker.walk(programResult.sourceFiles, {
64
+ checker: programResult.checker,
65
+ program: programResult.program,
66
+ projectRoot: programResult.projectRoot,
67
+ });
68
+ return graph;
69
+ }
70
+ }
71
+ //# sourceMappingURL=GraphBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../src/graph/GraphBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { SourceRange } from '../model/GraphNode.js';
2
+ import { NodeKind } from '../model/NodeKind.js';
3
+ import type { GraphNode, NodeMetadata } from '../model/GraphNode.js';
4
+ /** Factory for creating consistently structured graph nodes. */
5
+ export declare class NodeFactory {
6
+ create(params: {
7
+ kind: NodeKind;
8
+ label: string;
9
+ file?: string;
10
+ line?: number;
11
+ column?: number;
12
+ range?: SourceRange;
13
+ metadata?: NodeMetadata;
14
+ idOverride?: string;
15
+ }): GraphNode;
16
+ project(label: string, rootPath: string): GraphNode;
17
+ folder(label: string, path: string): GraphNode;
18
+ file(label: string, filePath: string): GraphNode;
19
+ package(label: string, packageName: string): GraphNode;
20
+ }
21
+ //# sourceMappingURL=NodeFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFactory.d.ts","sourceRoot":"","sources":["../../src/graph/NodeFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrE,gEAAgE;AAChE,qBAAa,WAAW;IACtB,MAAM,CAAC,MAAM,EAAE;QACb,IAAI,EAAE,QAAQ,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,SAAS;IAiBb,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;IASnD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;IAS9C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;IAUhD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS;CAQvD"}
@@ -0,0 +1,53 @@
1
+ import { NodeKind } from '../model/NodeKind.js';
2
+ import { nodeId } from '../utils/id.js';
3
+ /** Factory for creating consistently structured graph nodes. */
4
+ export class NodeFactory {
5
+ create(params) {
6
+ const file = params.file ?? '';
7
+ const id = params.idOverride ?? nodeId(params.kind, file, params.label, params.line);
8
+ return {
9
+ id,
10
+ label: params.label,
11
+ kind: params.kind,
12
+ file: params.file,
13
+ line: params.line,
14
+ column: params.column,
15
+ range: params.range,
16
+ metadata: params.metadata ?? {},
17
+ };
18
+ }
19
+ project(label, rootPath) {
20
+ return this.create({
21
+ kind: NodeKind.Project,
22
+ label,
23
+ idOverride: `Project:${rootPath}`,
24
+ metadata: { rootPath },
25
+ });
26
+ }
27
+ folder(label, path) {
28
+ return this.create({
29
+ kind: NodeKind.Folder,
30
+ label,
31
+ idOverride: `Folder:${path}`,
32
+ metadata: { path },
33
+ });
34
+ }
35
+ file(label, filePath) {
36
+ return this.create({
37
+ kind: NodeKind.File,
38
+ label,
39
+ file: filePath,
40
+ idOverride: `File:${filePath}`,
41
+ metadata: { path: filePath },
42
+ });
43
+ }
44
+ package(label, packageName) {
45
+ return this.create({
46
+ kind: NodeKind.Package,
47
+ label,
48
+ idOverride: `Package:${packageName}`,
49
+ metadata: { packageName },
50
+ });
51
+ }
52
+ }
53
+ //# sourceMappingURL=NodeFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFactory.js","sourceRoot":"","sources":["../../src/graph/NodeFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,gEAAgE;AAChE,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,MASN;QACC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,EAAE,GACN,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE5E,OAAO;YACL,EAAE;YACF,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,QAAgB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,QAAQ,CAAC,OAAO;YACtB,KAAK;YACL,UAAU,EAAE,WAAW,QAAQ,EAAE;YACjC,QAAQ,EAAE,EAAE,QAAQ,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,IAAY;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,QAAQ,CAAC,MAAM;YACrB,KAAK;YACL,UAAU,EAAE,UAAU,IAAI,EAAE;YAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,QAAgB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ,QAAQ,EAAE;YAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,WAAmB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,QAAQ,CAAC,OAAO;YACtB,KAAK;YACL,UAAU,EAAE,WAAW,WAAW,EAAE;YACpC,QAAQ,EAAE,EAAE,WAAW,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ export type { AnalysisConfig, LayerRule } from './config/AnalysisConfig.js';
2
+ export { DEFAULT_CONFIG } from './config/AnalysisConfig.js';
3
+ export { NodeKind } from './model/NodeKind.js';
4
+ export { EdgeKind } from './model/EdgeKind.js';
5
+ export type { GraphNode, SourceRange, NodeMetadata } from './model/GraphNode.js';
6
+ export type { GraphEdge, EdgeMetadata, EdgeConfidence } from './model/GraphEdge.js';
7
+ export { Graph } from './graph/Graph.js';
8
+ export { GraphBuilder } from './graph/GraphBuilder.js';
9
+ export { GraphAlgorithms } from './graph/GraphAlgorithms.js';
10
+ export { NodeFactory } from './graph/NodeFactory.js';
11
+ export { EdgeFactory } from './graph/EdgeFactory.js';
12
+ export { ProgramFactory } from './parser/ProgramFactory.js';
13
+ export type { ProgramResult } from './parser/ProgramFactory.js';
14
+ export { ASTWalker } from './parser/ASTWalker.js';
15
+ export type { ASTVisitor, VisitorContext } from './parser/ASTWalker.js';
16
+ export { ModuleResolver, PathResolver } from './resolver/ModuleResolver.js';
17
+ export { SymbolResolver } from './resolver/SymbolResolver.js';
18
+ export { TypeResolver } from './resolver/TypeResolver.js';
19
+ export { CircularDependencyAnalyzer } from './analysis/CircularDependencyAnalyzer.js';
20
+ export type { CycleReport } from './analysis/CircularDependencyAnalyzer.js';
21
+ export { DeadCodeAnalyzer } from './analysis/DeadCodeAnalyzer.js';
22
+ export type { DeadCodeReport } from './analysis/DeadCodeAnalyzer.js';
23
+ export { ImpactAnalyzer } from './analysis/ImpactAnalyzer.js';
24
+ export type { ImpactReport } from './analysis/ImpactAnalyzer.js';
25
+ export { DependencyAnalyzer } from './analysis/DependencyAnalyzer.js';
26
+ export type { DependencyReport } from './analysis/DependencyAnalyzer.js';
27
+ export { LayerViolationAnalyzer, computeStats } from './analysis/LayerViolationAnalyzer.js';
28
+ export type { LayerViolationReport, GraphStats } from './analysis/LayerViolationAnalyzer.js';
29
+ export type { GraphExporter } from './exporters/GraphExporter.js';
30
+ export { JsonExporter } from './exporters/JsonExporter.js';
31
+ export { DotExporter, MermaidExporter } from './exporters/DotExporter.js';
32
+ export { GraphMLExporter } from './exporters/GraphMLExporter.js';
33
+ export { CytoscapeExporter, ReactFlowExporter, Neo4jExporter } from './exporters/CytoscapeExporter.js';
34
+ export { ProjectLoader } from './cli/ProjectLoader.js';
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAC5F,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAE7F,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEvG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ export { DEFAULT_CONFIG } from './config/AnalysisConfig.js';
2
+ export { NodeKind } from './model/NodeKind.js';
3
+ export { EdgeKind } from './model/EdgeKind.js';
4
+ export { Graph } from './graph/Graph.js';
5
+ export { GraphBuilder } from './graph/GraphBuilder.js';
6
+ export { GraphAlgorithms } from './graph/GraphAlgorithms.js';
7
+ export { NodeFactory } from './graph/NodeFactory.js';
8
+ export { EdgeFactory } from './graph/EdgeFactory.js';
9
+ export { ProgramFactory } from './parser/ProgramFactory.js';
10
+ export { ASTWalker } from './parser/ASTWalker.js';
11
+ export { ModuleResolver, PathResolver } from './resolver/ModuleResolver.js';
12
+ export { SymbolResolver } from './resolver/SymbolResolver.js';
13
+ export { TypeResolver } from './resolver/TypeResolver.js';
14
+ export { CircularDependencyAnalyzer } from './analysis/CircularDependencyAnalyzer.js';
15
+ export { DeadCodeAnalyzer } from './analysis/DeadCodeAnalyzer.js';
16
+ export { ImpactAnalyzer } from './analysis/ImpactAnalyzer.js';
17
+ export { DependencyAnalyzer } from './analysis/DependencyAnalyzer.js';
18
+ export { LayerViolationAnalyzer, computeStats } from './analysis/LayerViolationAnalyzer.js';
19
+ export { JsonExporter } from './exporters/JsonExporter.js';
20
+ export { DotExporter, MermaidExporter } from './exporters/DotExporter.js';
21
+ export { GraphMLExporter } from './exporters/GraphMLExporter.js';
22
+ export { CytoscapeExporter, ReactFlowExporter, Neo4jExporter } from './exporters/CytoscapeExporter.js';
23
+ export { ProjectLoader } from './cli/ProjectLoader.js';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAI5F,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEvG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** All supported edge kinds in the knowledge graph. */
2
+ export declare enum EdgeKind {
3
+ IMPORTS = "IMPORTS",
4
+ EXPORTS = "EXPORTS",
5
+ CALLS = "CALLS",
6
+ REFERENCES = "REFERENCES",
7
+ EXTENDS = "EXTENDS",
8
+ IMPLEMENTS = "IMPLEMENTS",
9
+ CREATES = "CREATES",
10
+ USES = "USES",
11
+ RETURNS = "RETURNS",
12
+ ACCEPTS = "ACCEPTS",
13
+ DECLARES = "DECLARES",
14
+ BELONGS_TO = "BELONGS_TO",
15
+ CONTAINS = "CONTAINS",
16
+ DEPENDS_ON = "DEPENDS_ON",
17
+ INJECTS = "INJECTS",
18
+ DECORATED_BY = "DECORATED_BY",
19
+ DYNAMIC_IMPORT = "DYNAMIC_IMPORT",
20
+ TYPE_REFERENCE = "TYPE_REFERENCE"
21
+ }
22
+ //# sourceMappingURL=EdgeKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeKind.d.ts","sourceRoot":"","sources":["../../src/model/EdgeKind.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;CAClC"}
@@ -0,0 +1,23 @@
1
+ /** All supported edge kinds in the knowledge graph. */
2
+ export var EdgeKind;
3
+ (function (EdgeKind) {
4
+ EdgeKind["IMPORTS"] = "IMPORTS";
5
+ EdgeKind["EXPORTS"] = "EXPORTS";
6
+ EdgeKind["CALLS"] = "CALLS";
7
+ EdgeKind["REFERENCES"] = "REFERENCES";
8
+ EdgeKind["EXTENDS"] = "EXTENDS";
9
+ EdgeKind["IMPLEMENTS"] = "IMPLEMENTS";
10
+ EdgeKind["CREATES"] = "CREATES";
11
+ EdgeKind["USES"] = "USES";
12
+ EdgeKind["RETURNS"] = "RETURNS";
13
+ EdgeKind["ACCEPTS"] = "ACCEPTS";
14
+ EdgeKind["DECLARES"] = "DECLARES";
15
+ EdgeKind["BELONGS_TO"] = "BELONGS_TO";
16
+ EdgeKind["CONTAINS"] = "CONTAINS";
17
+ EdgeKind["DEPENDS_ON"] = "DEPENDS_ON";
18
+ EdgeKind["INJECTS"] = "INJECTS";
19
+ EdgeKind["DECORATED_BY"] = "DECORATED_BY";
20
+ EdgeKind["DYNAMIC_IMPORT"] = "DYNAMIC_IMPORT";
21
+ EdgeKind["TYPE_REFERENCE"] = "TYPE_REFERENCE";
22
+ })(EdgeKind || (EdgeKind = {}));
23
+ //# sourceMappingURL=EdgeKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeKind.js","sourceRoot":"","sources":["../../src/model/EdgeKind.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,CAAN,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,2BAAe,CAAA;IACf,qCAAyB,CAAA;IACzB,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;IACzB,+BAAmB,CAAA;IACnB,yBAAa,CAAA;IACb,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,qCAAyB,CAAA;IACzB,iCAAqB,CAAA;IACrB,qCAAyB,CAAA;IACzB,+BAAmB,CAAA;IACnB,yCAA6B,CAAA;IAC7B,6CAAiC,CAAA;IACjC,6CAAiC,CAAA;AACnC,CAAC,EAnBW,QAAQ,KAAR,QAAQ,QAmBnB"}
@@ -0,0 +1,22 @@
1
+ import type { EdgeKind } from './EdgeKind.js';
2
+ /** Confidence level for inferred relationships. */
3
+ export type EdgeConfidence = 'high' | 'medium' | 'low';
4
+ /** Arbitrary metadata attached to a graph edge. */
5
+ export type EdgeMetadata = Record<string, string | number | boolean | string[] | undefined>;
6
+ /** An edge in the codebase knowledge graph. */
7
+ export interface GraphEdge {
8
+ id: string;
9
+ source: string;
10
+ target: string;
11
+ kind: EdgeKind;
12
+ metadata: EdgeMetadata;
13
+ }
14
+ /** Standard edge metadata fields. */
15
+ export interface EdgeLocationMetadata extends EdgeMetadata {
16
+ file?: string;
17
+ line?: number;
18
+ column?: number;
19
+ confidence?: EdgeConfidence;
20
+ static?: boolean;
21
+ }
22
+ //# sourceMappingURL=GraphEdge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphEdge.d.ts","sourceRoot":"","sources":["../../src/model/GraphEdge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,mDAAmD;AACnD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAE5F,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,qCAAqC;AACrC,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GraphEdge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphEdge.js","sourceRoot":"","sources":["../../src/model/GraphEdge.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { NodeKind } from './NodeKind.js';
2
+ /** Source location range within a file. */
3
+ export interface SourceRange {
4
+ startLine: number;
5
+ startColumn: number;
6
+ endLine: number;
7
+ endColumn: number;
8
+ }
9
+ /** Arbitrary metadata attached to a graph node. */
10
+ export type NodeMetadata = Record<string, string | number | boolean | string[] | undefined>;
11
+ /** A node in the codebase knowledge graph. */
12
+ export interface GraphNode {
13
+ id: string;
14
+ label: string;
15
+ kind: NodeKind;
16
+ file?: string;
17
+ line?: number;
18
+ column?: number;
19
+ range?: SourceRange;
20
+ metadata: NodeMetadata;
21
+ }
22
+ //# sourceMappingURL=GraphNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphNode.d.ts","sourceRoot":"","sources":["../../src/model/GraphNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAE5F,8CAA8C;AAC9C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GraphNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphNode.js","sourceRoot":"","sources":["../../src/model/GraphNode.ts"],"names":[],"mappings":""}