@szabadkai/graphite 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +427 -0
  2. package/dist/cli/formatters.d.ts +3 -0
  3. package/dist/cli/formatters.js +61 -0
  4. package/dist/cli/formatters.js.map +1 -0
  5. package/dist/cli/index.d.ts +2 -0
  6. package/dist/cli/index.js +186 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/index.d.ts +6 -0
  9. package/dist/index.js +23 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/indexer/call-resolver.d.ts +8 -0
  12. package/dist/indexer/call-resolver.js +161 -0
  13. package/dist/indexer/call-resolver.js.map +1 -0
  14. package/dist/indexer/extractors/calls.d.ts +17 -0
  15. package/dist/indexer/extractors/calls.js +206 -0
  16. package/dist/indexer/extractors/calls.js.map +1 -0
  17. package/dist/indexer/extractors/classes.d.ts +35 -0
  18. package/dist/indexer/extractors/classes.js +209 -0
  19. package/dist/indexer/extractors/classes.js.map +1 -0
  20. package/dist/indexer/extractors/exports.d.ts +12 -0
  21. package/dist/indexer/extractors/exports.js +267 -0
  22. package/dist/indexer/extractors/exports.js.map +1 -0
  23. package/dist/indexer/extractors/functions.d.ts +12 -0
  24. package/dist/indexer/extractors/functions.js +169 -0
  25. package/dist/indexer/extractors/functions.js.map +1 -0
  26. package/dist/indexer/extractors/imports.d.ts +12 -0
  27. package/dist/indexer/extractors/imports.js +195 -0
  28. package/dist/indexer/extractors/imports.js.map +1 -0
  29. package/dist/indexer/extractors/index.d.ts +7 -0
  30. package/dist/indexer/extractors/index.js +24 -0
  31. package/dist/indexer/extractors/index.js.map +1 -0
  32. package/dist/indexer/extractors/types.d.ts +12 -0
  33. package/dist/indexer/extractors/types.js +138 -0
  34. package/dist/indexer/extractors/types.js.map +1 -0
  35. package/dist/indexer/extractors/variables.d.ts +10 -0
  36. package/dist/indexer/extractors/variables.js +134 -0
  37. package/dist/indexer/extractors/variables.js.map +1 -0
  38. package/dist/indexer/file-discovery.d.ts +7 -0
  39. package/dist/indexer/file-discovery.js +92 -0
  40. package/dist/indexer/file-discovery.js.map +1 -0
  41. package/dist/indexer/file-indexer.d.ts +2 -0
  42. package/dist/indexer/file-indexer.js +267 -0
  43. package/dist/indexer/file-indexer.js.map +1 -0
  44. package/dist/indexer/graph-contract.d.ts +25 -0
  45. package/dist/indexer/graph-contract.js +7 -0
  46. package/dist/indexer/graph-contract.js.map +1 -0
  47. package/dist/indexer/hasher.d.ts +1 -0
  48. package/dist/indexer/hasher.js +11 -0
  49. package/dist/indexer/hasher.js.map +1 -0
  50. package/dist/indexer/import-resolver.d.ts +11 -0
  51. package/dist/indexer/import-resolver.js +131 -0
  52. package/dist/indexer/import-resolver.js.map +1 -0
  53. package/dist/indexer/index.d.ts +11 -0
  54. package/dist/indexer/index.js +28 -0
  55. package/dist/indexer/index.js.map +1 -0
  56. package/dist/indexer/inheritance-resolver.d.ts +7 -0
  57. package/dist/indexer/inheritance-resolver.js +119 -0
  58. package/dist/indexer/inheritance-resolver.js.map +1 -0
  59. package/dist/indexer/parser.d.ts +5 -0
  60. package/dist/indexer/parser.js +48 -0
  61. package/dist/indexer/parser.js.map +1 -0
  62. package/dist/indexer/path-utils.d.ts +3 -0
  63. package/dist/indexer/path-utils.js +20 -0
  64. package/dist/indexer/path-utils.js.map +1 -0
  65. package/dist/indexer/project-indexer.d.ts +14 -0
  66. package/dist/indexer/project-indexer.js +167 -0
  67. package/dist/indexer/project-indexer.js.map +1 -0
  68. package/dist/indexer/property-parsers.d.ts +20 -0
  69. package/dist/indexer/property-parsers.js +81 -0
  70. package/dist/indexer/property-parsers.js.map +1 -0
  71. package/dist/mcp/index.d.ts +3 -0
  72. package/dist/mcp/index.js +20 -0
  73. package/dist/mcp/index.js.map +1 -0
  74. package/dist/mcp/response-formatter.d.ts +10 -0
  75. package/dist/mcp/response-formatter.js +47 -0
  76. package/dist/mcp/response-formatter.js.map +1 -0
  77. package/dist/mcp/server.d.ts +10 -0
  78. package/dist/mcp/server.js +118 -0
  79. package/dist/mcp/server.js.map +1 -0
  80. package/dist/mcp/tools-list.d.ts +9 -0
  81. package/dist/mcp/tools-list.js +12 -0
  82. package/dist/mcp/tools-list.js.map +1 -0
  83. package/dist/mcp/tools.d.ts +13 -0
  84. package/dist/mcp/tools.js +163 -0
  85. package/dist/mcp/tools.js.map +1 -0
  86. package/dist/query/analyze-impact.d.ts +18 -0
  87. package/dist/query/analyze-impact.js +58 -0
  88. package/dist/query/analyze-impact.js.map +1 -0
  89. package/dist/query/find-callees.d.ts +12 -0
  90. package/dist/query/find-callees.js +46 -0
  91. package/dist/query/find-callees.js.map +1 -0
  92. package/dist/query/find-callers.d.ts +12 -0
  93. package/dist/query/find-callers.js +46 -0
  94. package/dist/query/find-callers.js.map +1 -0
  95. package/dist/query/find-definition.d.ts +3 -0
  96. package/dist/query/find-definition.js +41 -0
  97. package/dist/query/find-definition.js.map +1 -0
  98. package/dist/query/find-dependency-path.d.ts +2 -0
  99. package/dist/query/find-dependency-path.js +39 -0
  100. package/dist/query/find-dependency-path.js.map +1 -0
  101. package/dist/query/find-implementations.d.ts +10 -0
  102. package/dist/query/find-implementations.js +34 -0
  103. package/dist/query/find-implementations.js.map +1 -0
  104. package/dist/query/get-exports.d.ts +3 -0
  105. package/dist/query/get-exports.js +82 -0
  106. package/dist/query/get-exports.js.map +1 -0
  107. package/dist/query/get-file-structure.d.ts +3 -0
  108. package/dist/query/get-file-structure.js +58 -0
  109. package/dist/query/get-file-structure.js.map +1 -0
  110. package/dist/query/get-graph-stats.d.ts +21 -0
  111. package/dist/query/get-graph-stats.js +42 -0
  112. package/dist/query/get-graph-stats.js.map +1 -0
  113. package/dist/query/index.d.ts +11 -0
  114. package/dist/query/index.js +28 -0
  115. package/dist/query/index.js.map +1 -0
  116. package/dist/query/search-symbols.d.ts +6 -0
  117. package/dist/query/search-symbols.js +75 -0
  118. package/dist/query/search-symbols.js.map +1 -0
  119. package/dist/query/types.d.ts +41 -0
  120. package/dist/query/types.js +36 -0
  121. package/dist/query/types.js.map +1 -0
  122. package/dist/storage/database.d.ts +13 -0
  123. package/dist/storage/database.js +49 -0
  124. package/dist/storage/database.js.map +1 -0
  125. package/dist/storage/index.d.ts +7 -0
  126. package/dist/storage/index.js +24 -0
  127. package/dist/storage/index.js.map +1 -0
  128. package/dist/storage/migrations/001_initial.sql +59 -0
  129. package/dist/storage/migrations/002_add_name_index.sql +9 -0
  130. package/dist/storage/migrator.d.ts +9 -0
  131. package/dist/storage/migrator.js +86 -0
  132. package/dist/storage/migrator.js.map +1 -0
  133. package/dist/storage/paths.d.ts +5 -0
  134. package/dist/storage/paths.js +25 -0
  135. package/dist/storage/paths.js.map +1 -0
  136. package/dist/storage/reader.d.ts +10 -0
  137. package/dist/storage/reader.js +103 -0
  138. package/dist/storage/reader.js.map +1 -0
  139. package/dist/storage/schema.d.ts +14 -0
  140. package/dist/storage/schema.js +18 -0
  141. package/dist/storage/schema.js.map +1 -0
  142. package/dist/storage/types.d.ts +42 -0
  143. package/dist/storage/types.js +3 -0
  144. package/dist/storage/types.js.map +1 -0
  145. package/dist/storage/writer.d.ts +13 -0
  146. package/dist/storage/writer.js +160 -0
  147. package/dist/storage/writer.js.map +1 -0
  148. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./storage/index";
2
+ export * from "./indexer/index";
3
+ export * from "./query/index";
4
+ export * from "./cli/index";
5
+ export * from "./cli/formatters";
6
+ export * from "./mcp/index";
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./storage/index"), exports);
18
+ __exportStar(require("./indexer/index"), exports);
19
+ __exportStar(require("./query/index"), exports);
20
+ __exportStar(require("./cli/index"), exports);
21
+ __exportStar(require("./cli/formatters"), exports);
22
+ __exportStar(require("./mcp/index"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,mDAAiC;AACjC,8CAA4B"}
@@ -0,0 +1,8 @@
1
+ import type Database from "better-sqlite3";
2
+ interface CallResolverOptions {
3
+ projectRoot: string;
4
+ db: Database.Database;
5
+ indexedFilePaths: string[];
6
+ }
7
+ export declare function resolveCrossFileCalls(options: CallResolverOptions): number;
8
+ export {};
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveCrossFileCalls = resolveCrossFileCalls;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const storage_1 = require("../storage");
10
+ const extractors_1 = require("./extractors");
11
+ const parser_1 = require("./parser");
12
+ const property_parsers_1 = require("./property-parsers");
13
+ function toFileNodeId(filePath) {
14
+ return `${filePath}::File::${filePath}::1`;
15
+ }
16
+ function resolveCrossFileCalls(options) {
17
+ const writer = (0, storage_1.createStorageWriter)(options.db);
18
+ const availablePaths = new Set(options.indexedFilePaths);
19
+ const selectImportEdges = options.db.prepare("SELECT source_id, target_id, properties FROM edges WHERE type = 'IMPORTS'");
20
+ const selectExportsByFile = options.db.prepare("SELECT edges.target_id, edges.properties, nodes.type as target_type FROM edges JOIN nodes ON nodes.id = edges.target_id WHERE edges.type = 'EXPORTS' AND edges.source_id = ?");
21
+ const selectSourceNodes = options.db.prepare("SELECT id, name, start_line, type FROM nodes WHERE file_path = ?");
22
+ const deleteCrossFileCalls = options.db.prepare("DELETE FROM edges WHERE type = 'CALLS' AND properties LIKE '%\"crossFile\":true%'");
23
+ const importRows = selectImportEdges.all();
24
+ const importsBySourceFile = new Map();
25
+ for (const row of importRows) {
26
+ const sourceFilePath = row.source_id.split("::")[0];
27
+ const targetFilePath = row.target_id.split("::")[0];
28
+ if (!availablePaths.has(sourceFilePath) || !availablePaths.has(targetFilePath)) {
29
+ continue;
30
+ }
31
+ const bindings = (0, property_parsers_1.parseBindingsFromStoredImportEdge)(row.properties);
32
+ if (bindings.length === 0) {
33
+ continue;
34
+ }
35
+ const list = importsBySourceFile.get(sourceFilePath) ?? [];
36
+ for (const binding of bindings) {
37
+ list.push({ targetFilePath, binding });
38
+ }
39
+ importsBySourceFile.set(sourceFilePath, list);
40
+ }
41
+ deleteCrossFileCalls.run();
42
+ let created = 0;
43
+ const aggregatedEdges = new Map();
44
+ for (const [sourceFilePath, importedItems] of importsBySourceFile.entries()) {
45
+ const sourceAbsolutePath = node_path_1.default.resolve(options.projectRoot, sourceFilePath);
46
+ if (!node_fs_1.default.existsSync(sourceAbsolutePath)) {
47
+ continue;
48
+ }
49
+ const content = node_fs_1.default.readFileSync(sourceAbsolutePath, "utf8");
50
+ const language = (0, parser_1.detectLanguageFromFilePath)(sourceFilePath);
51
+ if (!language) {
52
+ continue;
53
+ }
54
+ const tree = (0, parser_1.parseFile)(content, language);
55
+ const localBindings = new Map();
56
+ for (const importedItem of importedItems) {
57
+ const localName = importedItem.binding.localName;
58
+ const importedName = importedItem.binding.importedName;
59
+ if (!localName || !importedName || importedItem.binding.isTypeOnly) {
60
+ continue;
61
+ }
62
+ localBindings.set(localName, {
63
+ targetFilePath: importedItem.targetFilePath,
64
+ importedName
65
+ });
66
+ }
67
+ if (localBindings.size === 0) {
68
+ continue;
69
+ }
70
+ const sourceNodes = selectSourceNodes.all(sourceFilePath);
71
+ const ownerNodeMap = new Map();
72
+ for (const node of sourceNodes) {
73
+ if (node.type !== "Function" && node.type !== "Method") {
74
+ continue;
75
+ }
76
+ ownerNodeMap.set(`${node.name}:${node.start_line}`, node.id);
77
+ }
78
+ const calls = (0, extractors_1.extractCalls)(tree, new Set(localBindings.keys()));
79
+ for (const call of calls) {
80
+ let binding = localBindings.get(call.calleeName);
81
+ let requestedExportName = binding?.importedName ?? null;
82
+ if (!binding && call.receiverKind === "identifier" && call.receiverName) {
83
+ const namespaceBinding = localBindings.get(call.receiverName);
84
+ if (namespaceBinding?.importedName === "*") {
85
+ binding = namespaceBinding;
86
+ requestedExportName = call.calleeName;
87
+ }
88
+ }
89
+ if (!binding) {
90
+ continue;
91
+ }
92
+ const sourceOwnerId = ownerNodeMap.get(call.ownerLocalId);
93
+ if (!sourceOwnerId) {
94
+ continue;
95
+ }
96
+ const reExportVisited = new Set();
97
+ const findExportInFile = (fileNodeId, exportName) => {
98
+ if (reExportVisited.has(fileNodeId))
99
+ return undefined;
100
+ reExportVisited.add(fileNodeId);
101
+ if (reExportVisited.size > 10)
102
+ return undefined;
103
+ const exports = selectExportsByFile.all(fileNodeId);
104
+ // First try direct (non-re-export) matches
105
+ const direct = exports.find((item) => {
106
+ const info = (0, property_parsers_1.parseExportInfo)(item.properties);
107
+ if (info.reExport || item.target_type === "Module")
108
+ return false;
109
+ return info.exportedName === exportName;
110
+ });
111
+ if (direct)
112
+ return direct;
113
+ // Then follow re-exports
114
+ for (const item of exports) {
115
+ const info = (0, property_parsers_1.parseExportInfo)(item.properties);
116
+ if (!info.reExport || item.target_type !== "Module")
117
+ continue;
118
+ // Namespace re-export (export * from) or matching named re-export
119
+ if (info.exportedName === exportName || info.exportedName === "*" || info.exportedName === null) {
120
+ const reExportTargetFile = item.target_id.split("::")[0];
121
+ if (!availablePaths.has(reExportTargetFile))
122
+ continue;
123
+ const result = findExportInFile(toFileNodeId(reExportTargetFile), exportName);
124
+ if (result)
125
+ return result;
126
+ }
127
+ }
128
+ return undefined;
129
+ };
130
+ const matchingExport = findExportInFile(toFileNodeId(binding.targetFilePath), requestedExportName);
131
+ if (!matchingExport) {
132
+ continue;
133
+ }
134
+ const key = `${sourceOwnerId}|${matchingExport.target_id}`;
135
+ const existing = aggregatedEdges.get(key) ?? {
136
+ sourceId: sourceOwnerId,
137
+ targetId: matchingExport.target_id,
138
+ calls: []
139
+ };
140
+ existing.calls.push({
141
+ localName: call.calleeName,
142
+ importedName: requestedExportName ?? binding.importedName
143
+ });
144
+ aggregatedEdges.set(key, existing);
145
+ }
146
+ }
147
+ for (const edge of aggregatedEdges.values()) {
148
+ writer.upsertEdge({
149
+ sourceId: edge.sourceId,
150
+ targetId: edge.targetId,
151
+ type: "CALLS",
152
+ properties: JSON.stringify({
153
+ crossFile: true,
154
+ calls: edge.calls
155
+ })
156
+ });
157
+ created += 1;
158
+ }
159
+ return created;
160
+ }
161
+ //# sourceMappingURL=call-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-resolver.js","sourceRoot":"","sources":["../../src/indexer/call-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type Parser from "tree-sitter";
2
+ export interface CallOwner {
3
+ localId: string;
4
+ name: string;
5
+ startIndex: number;
6
+ endIndex: number;
7
+ }
8
+ export interface ExtractedCall {
9
+ ownerLocalId: string;
10
+ calleeName: string;
11
+ receiverName: string | null;
12
+ receiverKind: "this" | "identifier" | null;
13
+ startLine: number;
14
+ endLine: number;
15
+ isResolvedInFile: boolean;
16
+ }
17
+ export declare function extractCalls(tree: Parser.Tree, knownSymbolNames: Set<string>): ExtractedCall[];
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractCalls = extractCalls;
4
+ function walkTree(root) {
5
+ const nodes = [];
6
+ const stack = [root];
7
+ while (stack.length > 0) {
8
+ const current = stack.pop();
9
+ if (!current) {
10
+ continue;
11
+ }
12
+ nodes.push(current);
13
+ for (let index = current.namedChildren.length - 1; index >= 0; index -= 1) {
14
+ stack.push(current.namedChildren[index]);
15
+ }
16
+ }
17
+ return nodes;
18
+ }
19
+ function extractArrowOwnerName(node) {
20
+ const declaratorNode = node.parent;
21
+ if (!declaratorNode || declaratorNode.type !== "variable_declarator") {
22
+ return null;
23
+ }
24
+ const nameNode = declaratorNode.childForFieldName("name");
25
+ if (!nameNode?.text.trim()) {
26
+ return null;
27
+ }
28
+ return nameNode.text.trim();
29
+ }
30
+ function findOwners(tree) {
31
+ const owners = [];
32
+ for (const node of walkTree(tree.rootNode)) {
33
+ if (node.type === "function_declaration" || node.type === "generator_function_declaration") {
34
+ const nameNode = node.childForFieldName("name");
35
+ if (!nameNode?.text.trim()) {
36
+ continue;
37
+ }
38
+ owners.push({
39
+ localId: `${nameNode.text.trim()}:${node.startPosition.row + 1}`,
40
+ name: nameNode.text.trim(),
41
+ startIndex: node.startIndex,
42
+ endIndex: node.endIndex
43
+ });
44
+ continue;
45
+ }
46
+ if (node.type === "method_definition") {
47
+ const nameNode = node.childForFieldName("name");
48
+ if (!nameNode?.text.trim()) {
49
+ continue;
50
+ }
51
+ owners.push({
52
+ localId: `${nameNode.text.trim()}:${node.startPosition.row + 1}`,
53
+ name: nameNode.text.trim(),
54
+ startIndex: node.startIndex,
55
+ endIndex: node.endIndex
56
+ });
57
+ continue;
58
+ }
59
+ if (node.type === "arrow_function") {
60
+ const ownerName = extractArrowOwnerName(node);
61
+ if (!ownerName) {
62
+ continue;
63
+ }
64
+ owners.push({
65
+ localId: `${ownerName}:${node.startPosition.row + 1}`,
66
+ name: ownerName,
67
+ startIndex: node.startIndex,
68
+ endIndex: node.endIndex
69
+ });
70
+ continue;
71
+ }
72
+ // H4: Function expressions can also own calls
73
+ if (node.type === "function_expression" || node.type === "generator_function") {
74
+ const nameNode = node.childForFieldName("name");
75
+ let ownerName = nameNode?.text.trim() || null;
76
+ if (!ownerName) {
77
+ ownerName = extractArrowOwnerName(node);
78
+ }
79
+ if (ownerName) {
80
+ owners.push({
81
+ localId: `${ownerName}:${node.startPosition.row + 1}`,
82
+ name: ownerName,
83
+ startIndex: node.startIndex,
84
+ endIndex: node.endIndex
85
+ });
86
+ }
87
+ }
88
+ }
89
+ return owners;
90
+ }
91
+ function findOwnerForIndex(owners, index) {
92
+ let best = null;
93
+ for (const owner of owners) {
94
+ if (index < owner.startIndex || index > owner.endIndex) {
95
+ continue;
96
+ }
97
+ if (!best) {
98
+ best = owner;
99
+ continue;
100
+ }
101
+ const bestSpan = best.endIndex - best.startIndex;
102
+ const nextSpan = owner.endIndex - owner.startIndex;
103
+ if (nextSpan < bestSpan) {
104
+ best = owner;
105
+ }
106
+ }
107
+ return best;
108
+ }
109
+ function extractCallee(callNode) {
110
+ const functionNode = callNode.childForFieldName("function");
111
+ if (!functionNode) {
112
+ return null;
113
+ }
114
+ if (functionNode.type === "identifier") {
115
+ const calleeName = functionNode.text.trim();
116
+ if (!calleeName) {
117
+ return null;
118
+ }
119
+ return {
120
+ calleeName,
121
+ receiverName: null,
122
+ receiverKind: null
123
+ };
124
+ }
125
+ if (functionNode.type === "member_expression") {
126
+ const propertyNode = functionNode.childForFieldName("property");
127
+ const objectNode = functionNode.childForFieldName("object");
128
+ if (!propertyNode?.text.trim()) {
129
+ return null;
130
+ }
131
+ if (objectNode?.type === "this") {
132
+ return {
133
+ calleeName: propertyNode.text.trim(),
134
+ receiverName: "this",
135
+ receiverKind: "this"
136
+ };
137
+ }
138
+ if (objectNode?.type === "identifier") {
139
+ return {
140
+ calleeName: propertyNode.text.trim(),
141
+ receiverName: objectNode.text.trim(),
142
+ receiverKind: "identifier"
143
+ };
144
+ }
145
+ }
146
+ return null;
147
+ }
148
+ function extractCalls(tree, knownSymbolNames) {
149
+ const calls = [];
150
+ const owners = findOwners(tree);
151
+ for (const node of walkTree(tree.rootNode)) {
152
+ // H5: Handle both call_expression (foo()) and new_expression (new Foo())
153
+ if (node.type !== "call_expression" && node.type !== "new_expression") {
154
+ continue;
155
+ }
156
+ const owner = findOwnerForIndex(owners, node.startIndex);
157
+ if (!owner) {
158
+ continue;
159
+ }
160
+ let callee = null;
161
+ if (node.type === "new_expression") {
162
+ // new Foo() or new ns.Foo()
163
+ const constructorNode = node.childForFieldName("constructor");
164
+ if (constructorNode?.type === "identifier" && constructorNode.text.trim()) {
165
+ callee = {
166
+ calleeName: constructorNode.text.trim(),
167
+ receiverName: null,
168
+ receiverKind: null
169
+ };
170
+ }
171
+ else if (constructorNode?.type === "member_expression") {
172
+ const propertyNode = constructorNode.childForFieldName("property");
173
+ const objectNode = constructorNode.childForFieldName("object");
174
+ if (propertyNode?.text.trim() && objectNode?.type === "identifier") {
175
+ callee = {
176
+ calleeName: propertyNode.text.trim(),
177
+ receiverName: objectNode.text.trim(),
178
+ receiverKind: "identifier"
179
+ };
180
+ }
181
+ }
182
+ }
183
+ else {
184
+ callee = extractCallee(node);
185
+ }
186
+ if (!callee) {
187
+ continue;
188
+ }
189
+ const isResolvedInFile = callee.receiverKind === null
190
+ ? knownSymbolNames.has(callee.calleeName)
191
+ : callee.receiverKind === "this"
192
+ ? knownSymbolNames.has(callee.calleeName)
193
+ : false;
194
+ calls.push({
195
+ ownerLocalId: owner.localId,
196
+ calleeName: callee.calleeName,
197
+ receiverName: callee.receiverName,
198
+ receiverKind: callee.receiverKind,
199
+ startLine: node.startPosition.row + 1,
200
+ endLine: node.endPosition.row + 1,
201
+ isResolvedInFile
202
+ });
203
+ }
204
+ return calls;
205
+ }
206
+ //# sourceMappingURL=calls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../src/indexer/extractors/calls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type Parser from "tree-sitter";
2
+ export type ClassDeclarationKind = "class_declaration" | "abstract_class_declaration";
3
+ export type ClassMemberKind = "method" | "property";
4
+ export interface ExtractedClass {
5
+ localId: string;
6
+ name: string;
7
+ kind: ClassDeclarationKind;
8
+ startLine: number;
9
+ endLine: number;
10
+ isAbstract: boolean;
11
+ isExported: boolean;
12
+ extendsName: string | null;
13
+ implementsNames: string[];
14
+ }
15
+ export interface ExtractedClassMember {
16
+ localId: string;
17
+ ownerClassLocalId: string;
18
+ name: string;
19
+ kind: ClassMemberKind;
20
+ startLine: number;
21
+ endLine: number;
22
+ isAsync: boolean;
23
+ isStatic: boolean;
24
+ }
25
+ export interface ContainsRelation {
26
+ type: "CONTAINS";
27
+ sourceClassLocalId: string;
28
+ targetMemberLocalId: string;
29
+ }
30
+ export interface ExtractedClassesResult {
31
+ classes: ExtractedClass[];
32
+ members: ExtractedClassMember[];
33
+ contains: ContainsRelation[];
34
+ }
35
+ export declare function extractClasses(tree: Parser.Tree): ExtractedClassesResult;