@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.
- package/README.md +427 -0
- package/dist/cli/formatters.d.ts +3 -0
- package/dist/cli/formatters.js +61 -0
- package/dist/cli/formatters.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +186 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/call-resolver.d.ts +8 -0
- package/dist/indexer/call-resolver.js +161 -0
- package/dist/indexer/call-resolver.js.map +1 -0
- package/dist/indexer/extractors/calls.d.ts +17 -0
- package/dist/indexer/extractors/calls.js +206 -0
- package/dist/indexer/extractors/calls.js.map +1 -0
- package/dist/indexer/extractors/classes.d.ts +35 -0
- package/dist/indexer/extractors/classes.js +209 -0
- package/dist/indexer/extractors/classes.js.map +1 -0
- package/dist/indexer/extractors/exports.d.ts +12 -0
- package/dist/indexer/extractors/exports.js +267 -0
- package/dist/indexer/extractors/exports.js.map +1 -0
- package/dist/indexer/extractors/functions.d.ts +12 -0
- package/dist/indexer/extractors/functions.js +169 -0
- package/dist/indexer/extractors/functions.js.map +1 -0
- package/dist/indexer/extractors/imports.d.ts +12 -0
- package/dist/indexer/extractors/imports.js +195 -0
- package/dist/indexer/extractors/imports.js.map +1 -0
- package/dist/indexer/extractors/index.d.ts +7 -0
- package/dist/indexer/extractors/index.js +24 -0
- package/dist/indexer/extractors/index.js.map +1 -0
- package/dist/indexer/extractors/types.d.ts +12 -0
- package/dist/indexer/extractors/types.js +138 -0
- package/dist/indexer/extractors/types.js.map +1 -0
- package/dist/indexer/extractors/variables.d.ts +10 -0
- package/dist/indexer/extractors/variables.js +134 -0
- package/dist/indexer/extractors/variables.js.map +1 -0
- package/dist/indexer/file-discovery.d.ts +7 -0
- package/dist/indexer/file-discovery.js +92 -0
- package/dist/indexer/file-discovery.js.map +1 -0
- package/dist/indexer/file-indexer.d.ts +2 -0
- package/dist/indexer/file-indexer.js +267 -0
- package/dist/indexer/file-indexer.js.map +1 -0
- package/dist/indexer/graph-contract.d.ts +25 -0
- package/dist/indexer/graph-contract.js +7 -0
- package/dist/indexer/graph-contract.js.map +1 -0
- package/dist/indexer/hasher.d.ts +1 -0
- package/dist/indexer/hasher.js +11 -0
- package/dist/indexer/hasher.js.map +1 -0
- package/dist/indexer/import-resolver.d.ts +11 -0
- package/dist/indexer/import-resolver.js +131 -0
- package/dist/indexer/import-resolver.js.map +1 -0
- package/dist/indexer/index.d.ts +11 -0
- package/dist/indexer/index.js +28 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/inheritance-resolver.d.ts +7 -0
- package/dist/indexer/inheritance-resolver.js +119 -0
- package/dist/indexer/inheritance-resolver.js.map +1 -0
- package/dist/indexer/parser.d.ts +5 -0
- package/dist/indexer/parser.js +48 -0
- package/dist/indexer/parser.js.map +1 -0
- package/dist/indexer/path-utils.d.ts +3 -0
- package/dist/indexer/path-utils.js +20 -0
- package/dist/indexer/path-utils.js.map +1 -0
- package/dist/indexer/project-indexer.d.ts +14 -0
- package/dist/indexer/project-indexer.js +167 -0
- package/dist/indexer/project-indexer.js.map +1 -0
- package/dist/indexer/property-parsers.d.ts +20 -0
- package/dist/indexer/property-parsers.js +81 -0
- package/dist/indexer/property-parsers.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.js +20 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/response-formatter.d.ts +10 -0
- package/dist/mcp/response-formatter.js +47 -0
- package/dist/mcp/response-formatter.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.js +118 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools-list.d.ts +9 -0
- package/dist/mcp/tools-list.js +12 -0
- package/dist/mcp/tools-list.js.map +1 -0
- package/dist/mcp/tools.d.ts +13 -0
- package/dist/mcp/tools.js +163 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/query/analyze-impact.d.ts +18 -0
- package/dist/query/analyze-impact.js +58 -0
- package/dist/query/analyze-impact.js.map +1 -0
- package/dist/query/find-callees.d.ts +12 -0
- package/dist/query/find-callees.js +46 -0
- package/dist/query/find-callees.js.map +1 -0
- package/dist/query/find-callers.d.ts +12 -0
- package/dist/query/find-callers.js +46 -0
- package/dist/query/find-callers.js.map +1 -0
- package/dist/query/find-definition.d.ts +3 -0
- package/dist/query/find-definition.js +41 -0
- package/dist/query/find-definition.js.map +1 -0
- package/dist/query/find-dependency-path.d.ts +2 -0
- package/dist/query/find-dependency-path.js +39 -0
- package/dist/query/find-dependency-path.js.map +1 -0
- package/dist/query/find-implementations.d.ts +10 -0
- package/dist/query/find-implementations.js +34 -0
- package/dist/query/find-implementations.js.map +1 -0
- package/dist/query/get-exports.d.ts +3 -0
- package/dist/query/get-exports.js +82 -0
- package/dist/query/get-exports.js.map +1 -0
- package/dist/query/get-file-structure.d.ts +3 -0
- package/dist/query/get-file-structure.js +58 -0
- package/dist/query/get-file-structure.js.map +1 -0
- package/dist/query/get-graph-stats.d.ts +21 -0
- package/dist/query/get-graph-stats.js +42 -0
- package/dist/query/get-graph-stats.js.map +1 -0
- package/dist/query/index.d.ts +11 -0
- package/dist/query/index.js +28 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/search-symbols.d.ts +6 -0
- package/dist/query/search-symbols.js +75 -0
- package/dist/query/search-symbols.js.map +1 -0
- package/dist/query/types.d.ts +41 -0
- package/dist/query/types.js +36 -0
- package/dist/query/types.js.map +1 -0
- package/dist/storage/database.d.ts +13 -0
- package/dist/storage/database.js +49 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.js +24 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/migrations/001_initial.sql +59 -0
- package/dist/storage/migrations/002_add_name_index.sql +9 -0
- package/dist/storage/migrator.d.ts +9 -0
- package/dist/storage/migrator.js +86 -0
- package/dist/storage/migrator.js.map +1 -0
- package/dist/storage/paths.d.ts +5 -0
- package/dist/storage/paths.js +25 -0
- package/dist/storage/paths.js.map +1 -0
- package/dist/storage/reader.d.ts +10 -0
- package/dist/storage/reader.js +103 -0
- package/dist/storage/reader.js.map +1 -0
- package/dist/storage/schema.d.ts +14 -0
- package/dist/storage/schema.js +18 -0
- package/dist/storage/schema.js.map +1 -0
- package/dist/storage/types.d.ts +42 -0
- package/dist/storage/types.js +3 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/writer.d.ts +13 -0
- package/dist/storage/writer.js +160 -0
- package/dist/storage/writer.js.map +1 -0
- 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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"}
|
package/dist/index.d.ts
ADDED
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,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;
|