@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,131 @@
|
|
|
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.createImportResolver = createImportResolver;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const path_utils_1 = require("./path-utils");
|
|
10
|
+
const CANDIDATE_EXTENSIONS = ["", ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
|
|
11
|
+
function loadTsConfigPaths(projectRoot) {
|
|
12
|
+
const tsConfigPath = node_path_1.default.join(projectRoot, "tsconfig.json");
|
|
13
|
+
if (!node_fs_1.default.existsSync(tsConfigPath)) {
|
|
14
|
+
return { baseUrl: projectRoot, paths: {} };
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const raw = node_fs_1.default.readFileSync(tsConfigPath, "utf8");
|
|
18
|
+
// Strip single-line and multi-line comments (tsconfig.json is JSONC, not strict JSON)
|
|
19
|
+
const stripped = raw
|
|
20
|
+
.replace(/\/\/.*$/gm, "")
|
|
21
|
+
.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
22
|
+
// Also strip trailing commas before } or ]
|
|
23
|
+
const cleaned = stripped.replace(/,\s*([}\]])/g, "$1");
|
|
24
|
+
const parsed = JSON.parse(cleaned);
|
|
25
|
+
const baseUrl = parsed.compilerOptions?.baseUrl
|
|
26
|
+
? node_path_1.default.resolve(projectRoot, parsed.compilerOptions.baseUrl)
|
|
27
|
+
: projectRoot;
|
|
28
|
+
return {
|
|
29
|
+
baseUrl,
|
|
30
|
+
paths: parsed.compilerOptions?.paths ?? {}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return { baseUrl: projectRoot, paths: {} };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function toCandidatePaths(resolvedBasePath) {
|
|
38
|
+
const candidates = [];
|
|
39
|
+
for (const extension of CANDIDATE_EXTENSIONS) {
|
|
40
|
+
candidates.push(`${resolvedBasePath}${extension}`);
|
|
41
|
+
}
|
|
42
|
+
for (const extension of CANDIDATE_EXTENSIONS.slice(1)) {
|
|
43
|
+
candidates.push(node_path_1.default.join(resolvedBasePath, `index${extension}`));
|
|
44
|
+
}
|
|
45
|
+
return [...new Set(candidates)];
|
|
46
|
+
}
|
|
47
|
+
function resolveFromBase(projectRoot, candidateBasePath, knownFileSet) {
|
|
48
|
+
for (const candidateAbsolutePath of toCandidatePaths(candidateBasePath)) {
|
|
49
|
+
const normalizedAbsolute = node_path_1.default.resolve(candidateAbsolutePath);
|
|
50
|
+
if (!normalizedAbsolute.startsWith(projectRoot)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const relative = (0, path_utils_1.normalizeToPosixPath)((0, path_utils_1.toProjectRelativePath)(projectRoot, normalizedAbsolute));
|
|
54
|
+
if (knownFileSet.has(relative)) {
|
|
55
|
+
return relative;
|
|
56
|
+
}
|
|
57
|
+
if (node_fs_1.default.existsSync(normalizedAbsolute) && node_fs_1.default.statSync(normalizedAbsolute).isFile()) {
|
|
58
|
+
return relative;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function resolveAliasPath(sourcePath, projectRoot, knownFileSet, tsConfigPaths) {
|
|
64
|
+
for (const [pattern, targets] of Object.entries(tsConfigPaths.paths)) {
|
|
65
|
+
const wildcardIndex = pattern.indexOf("*");
|
|
66
|
+
if (wildcardIndex === -1) {
|
|
67
|
+
if (pattern !== sourcePath) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
for (const target of targets) {
|
|
71
|
+
const candidate = resolveFromBase(projectRoot, node_path_1.default.resolve(tsConfigPaths.baseUrl, target), knownFileSet);
|
|
72
|
+
if (candidate) {
|
|
73
|
+
return candidate;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const prefix = pattern.slice(0, wildcardIndex);
|
|
79
|
+
const suffix = pattern.slice(wildcardIndex + 1);
|
|
80
|
+
if (!sourcePath.startsWith(prefix) || !sourcePath.endsWith(suffix)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const wildcardValue = sourcePath.slice(prefix.length, sourcePath.length - suffix.length);
|
|
84
|
+
for (const target of targets) {
|
|
85
|
+
const replacedTarget = target.replace("*", wildcardValue);
|
|
86
|
+
const candidate = resolveFromBase(projectRoot, node_path_1.default.resolve(tsConfigPaths.baseUrl, replacedTarget), knownFileSet);
|
|
87
|
+
if (candidate) {
|
|
88
|
+
return candidate;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
function createImportResolver(projectRoot, knownFilePaths) {
|
|
95
|
+
const resolvedRoot = node_path_1.default.resolve(projectRoot);
|
|
96
|
+
const knownFileSet = new Set([...knownFilePaths].map((item) => (0, path_utils_1.normalizeToPosixPath)(item)));
|
|
97
|
+
const tsConfigPaths = loadTsConfigPaths(resolvedRoot);
|
|
98
|
+
const resolveImport = (fromFilePath, sourcePath) => {
|
|
99
|
+
const normalizedSourcePath = sourcePath.trim();
|
|
100
|
+
const fromAbsolutePath = node_path_1.default.resolve(resolvedRoot, fromFilePath);
|
|
101
|
+
if (normalizedSourcePath.startsWith(".")) {
|
|
102
|
+
const candidateBase = node_path_1.default.resolve(node_path_1.default.dirname(fromAbsolutePath), normalizedSourcePath);
|
|
103
|
+
const resolvedPath = resolveFromBase(resolvedRoot, candidateBase, knownFileSet);
|
|
104
|
+
return {
|
|
105
|
+
sourcePath: normalizedSourcePath,
|
|
106
|
+
resolvedPath,
|
|
107
|
+
isExternal: false
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const aliasResolvedPath = resolveAliasPath(normalizedSourcePath, resolvedRoot, knownFileSet, tsConfigPaths);
|
|
111
|
+
if (aliasResolvedPath) {
|
|
112
|
+
return {
|
|
113
|
+
sourcePath: normalizedSourcePath,
|
|
114
|
+
resolvedPath: aliasResolvedPath,
|
|
115
|
+
isExternal: false
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
sourcePath: normalizedSourcePath,
|
|
120
|
+
resolvedPath: null,
|
|
121
|
+
isExternal: true
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
resolveImport,
|
|
126
|
+
resolveImports: (fromFilePath, imports) => {
|
|
127
|
+
return imports.map((item) => resolveImport(fromFilePath, item.sourcePath));
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=import-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/indexer/import-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./parser";
|
|
2
|
+
export * from "./extractors";
|
|
3
|
+
export * from "./graph-contract";
|
|
4
|
+
export * from "./file-indexer";
|
|
5
|
+
export * from "./path-utils";
|
|
6
|
+
export * from "./hasher";
|
|
7
|
+
export * from "./file-discovery";
|
|
8
|
+
export * from "./import-resolver";
|
|
9
|
+
export * from "./project-indexer";
|
|
10
|
+
export * from "./call-resolver";
|
|
11
|
+
export * from "./inheritance-resolver";
|
|
@@ -0,0 +1,28 @@
|
|
|
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("./parser"), exports);
|
|
18
|
+
__exportStar(require("./extractors"), exports);
|
|
19
|
+
__exportStar(require("./graph-contract"), exports);
|
|
20
|
+
__exportStar(require("./file-indexer"), exports);
|
|
21
|
+
__exportStar(require("./path-utils"), exports);
|
|
22
|
+
__exportStar(require("./hasher"), exports);
|
|
23
|
+
__exportStar(require("./file-discovery"), exports);
|
|
24
|
+
__exportStar(require("./import-resolver"), exports);
|
|
25
|
+
__exportStar(require("./project-indexer"), exports);
|
|
26
|
+
__exportStar(require("./call-resolver"), exports);
|
|
27
|
+
__exportStar(require("./inheritance-resolver"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,mDAAiC;AACjC,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,mDAAiC;AACjC,oDAAkC;AAClC,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveInheritanceEdges = resolveInheritanceEdges;
|
|
4
|
+
const storage_1 = require("../storage");
|
|
5
|
+
const property_parsers_1 = require("./property-parsers");
|
|
6
|
+
function toFileNodeId(filePath) {
|
|
7
|
+
return `${filePath}::File::${filePath}::1`;
|
|
8
|
+
}
|
|
9
|
+
function resolveInheritanceEdges(options) {
|
|
10
|
+
const writer = (0, storage_1.createStorageWriter)(options.db);
|
|
11
|
+
const availablePaths = new Set(options.indexedFilePaths);
|
|
12
|
+
const deleteExtendsEdges = options.db.prepare("DELETE FROM edges WHERE type = 'EXTENDS'");
|
|
13
|
+
const deleteImplementsEdges = options.db.prepare("DELETE FROM edges WHERE type = 'IMPLEMENTS'");
|
|
14
|
+
const selectImportEdges = options.db.prepare("SELECT source_id, target_id, properties FROM edges WHERE type = 'IMPORTS'");
|
|
15
|
+
const selectExportEdgesForFile = 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 = ?");
|
|
16
|
+
const selectSymbolsByFile = options.db.prepare("SELECT id, type, name, properties FROM nodes WHERE file_path = ? AND type IN ('Class', 'Interface')");
|
|
17
|
+
deleteExtendsEdges.run();
|
|
18
|
+
deleteImplementsEdges.run();
|
|
19
|
+
const importsBySource = new Map();
|
|
20
|
+
const importRows = selectImportEdges.all();
|
|
21
|
+
for (const row of importRows) {
|
|
22
|
+
const sourceFilePath = row.source_id.split("::")[0];
|
|
23
|
+
const targetFilePath = row.target_id.split("::")[0];
|
|
24
|
+
if (!availablePaths.has(sourceFilePath) || !availablePaths.has(targetFilePath)) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const bindings = (0, property_parsers_1.parseBindingsFromStoredImportEdge)(row.properties);
|
|
28
|
+
if (bindings.length === 0) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const list = importsBySource.get(sourceFilePath) ?? [];
|
|
32
|
+
for (const binding of bindings) {
|
|
33
|
+
list.push({ targetFilePath, binding });
|
|
34
|
+
}
|
|
35
|
+
importsBySource.set(sourceFilePath, list);
|
|
36
|
+
}
|
|
37
|
+
let created = 0;
|
|
38
|
+
for (const sourceFilePath of options.indexedFilePaths) {
|
|
39
|
+
const symbols = selectSymbolsByFile.all(sourceFilePath);
|
|
40
|
+
const localByName = new Map(symbols.map((item) => [item.name, item.id]));
|
|
41
|
+
const importMappings = importsBySource.get(sourceFilePath) ?? [];
|
|
42
|
+
const findExportInFile = (fileNodeId, exportName, visited) => {
|
|
43
|
+
if (visited.has(fileNodeId))
|
|
44
|
+
return undefined;
|
|
45
|
+
visited.add(fileNodeId);
|
|
46
|
+
if (visited.size > 10)
|
|
47
|
+
return undefined;
|
|
48
|
+
const exports = selectExportEdgesForFile.all(fileNodeId);
|
|
49
|
+
// First try direct (non-re-export) matches
|
|
50
|
+
const direct = exports.find((item) => {
|
|
51
|
+
const info = (0, property_parsers_1.parseExportInfo)(item.properties);
|
|
52
|
+
if (info.reExport || item.target_type === "Module")
|
|
53
|
+
return false;
|
|
54
|
+
return info.exportedName === exportName;
|
|
55
|
+
});
|
|
56
|
+
if (direct)
|
|
57
|
+
return direct;
|
|
58
|
+
// Then follow re-exports
|
|
59
|
+
for (const item of exports) {
|
|
60
|
+
const info = (0, property_parsers_1.parseExportInfo)(item.properties);
|
|
61
|
+
if (!info.reExport || item.target_type !== "Module")
|
|
62
|
+
continue;
|
|
63
|
+
if (info.exportedName === exportName || info.exportedName === "*" || info.exportedName === null) {
|
|
64
|
+
const reExportTargetFile = item.target_id.split("::")[0];
|
|
65
|
+
if (!availablePaths.has(reExportTargetFile))
|
|
66
|
+
continue;
|
|
67
|
+
const result = findExportInFile(toFileNodeId(reExportTargetFile), exportName, visited);
|
|
68
|
+
if (result)
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
};
|
|
74
|
+
const resolveImportedSymbol = (localName) => {
|
|
75
|
+
for (const mapping of importMappings) {
|
|
76
|
+
if (mapping.binding.localName !== localName || !mapping.binding.importedName) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const match = findExportInFile(toFileNodeId(mapping.targetFilePath), mapping.binding.importedName, new Set());
|
|
80
|
+
if (match) {
|
|
81
|
+
return match.target_id;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
};
|
|
86
|
+
for (const symbol of symbols) {
|
|
87
|
+
if (symbol.type !== "Class") {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const metadata = (0, property_parsers_1.parseClassMetadata)(symbol.properties);
|
|
91
|
+
if (metadata.extendsName) {
|
|
92
|
+
const targetId = localByName.get(metadata.extendsName) ?? resolveImportedSymbol(metadata.extendsName);
|
|
93
|
+
if (targetId) {
|
|
94
|
+
writer.upsertEdge({
|
|
95
|
+
sourceId: symbol.id,
|
|
96
|
+
targetId,
|
|
97
|
+
type: "EXTENDS",
|
|
98
|
+
properties: null
|
|
99
|
+
});
|
|
100
|
+
created += 1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
for (const implementedName of metadata.implementsNames) {
|
|
104
|
+
const targetId = localByName.get(implementedName) ?? resolveImportedSymbol(implementedName);
|
|
105
|
+
if (targetId) {
|
|
106
|
+
writer.upsertEdge({
|
|
107
|
+
sourceId: symbol.id,
|
|
108
|
+
targetId,
|
|
109
|
+
type: "IMPLEMENTS",
|
|
110
|
+
properties: null
|
|
111
|
+
});
|
|
112
|
+
created += 1;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return created;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=inheritance-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inheritance-resolver.js","sourceRoot":"","sources":["../../src/indexer/inheritance-resolver.ts"],"names":[],"mappings":";;AAeA,0DA+IE;AA7JF,wCAAiD;AACjD,yDAA2H;AAQ3H,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,GAAG,QAAQ,WAAW,QAAQ,KAAK,CAAC;AAC7C,CAAC;AAGD,SAAgB,uBAAuB,CAAC,OAAmC;IACzE,MAAM,MAAM,GAAG,IAAA,6BAAmB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEzD,MAAM,kBAAkB,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IAC1F,MAAM,qBAAqB,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAChG,MAAM,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAC1C,2EAA2E,CAC5E,CAAC;IACF,MAAM,wBAAwB,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CACjD,8KAA8K,CAC/K,CAAC;IACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAC5C,qGAAqG,CACtG,CAAC;IAEF,kBAAkB,CAAC,GAAG,EAAE,CAAC;IACzB,qBAAqB,CAAC,GAAG,EAAE,CAAC;IAE5B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAqE,CAAC;IACrG,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,EAItC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/E,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,oDAAiC,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACvD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,cAAc,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAKpD,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAKjE,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,UAAyB,EAAE,OAAoB,EAAyB,EAAE;YACtH,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,IAAI,GAAG,EAAE;gBAAE,OAAO,SAAS,CAAC;YAExC,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC;YAExE,2CAA2C;YAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnC,MAAM,IAAI,GAAG,IAAA,kCAAe,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBACjE,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,yBAAyB;YACzB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAA,kCAAe,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ;oBAAE,SAAS;gBAC9D,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;oBAChG,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC;wBAAE,SAAS;oBACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBACvF,IAAI,MAAM;wBAAE,OAAO,MAAM,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAiB,EAAE;YACjE,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;gBACrC,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC7E,SAAS;gBACX,CAAC;gBAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC9G,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,KAAK,CAAC,SAAS,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAA,qCAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEvD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACtG,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,UAAU,CAAC;wBAChB,QAAQ,EAAE,MAAM,CAAC,EAAE;wBACnB,QAAQ;wBACR,IAAI,EAAE,SAAS;wBACf,UAAU,EAAE,IAAI;qBACjB,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;gBACf,CAAC;YACH,CAAC;YAED,KAAK,MAAM,eAAe,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBAC3F,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,UAAU,CAAC;wBAChB,QAAQ,EAAE,MAAM,CAAC,EAAE;wBACnB,QAAQ;wBACT,IAAI,EAAE,YAAY;wBACjB,UAAU,EAAE,IAAI;qBACjB,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Parser from "tree-sitter";
|
|
2
|
+
export type IndexLanguage = "typescript" | "tsx" | "javascript" | "jsx";
|
|
3
|
+
export declare function detectLanguageFromFilePath(filePath: string): IndexLanguage | null;
|
|
4
|
+
export declare function parseFile(content: string, language: IndexLanguage): Parser.Tree;
|
|
5
|
+
export declare function parseFileByPath(filePath: string, content: string): Parser.Tree;
|
|
@@ -0,0 +1,48 @@
|
|
|
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.detectLanguageFromFilePath = detectLanguageFromFilePath;
|
|
7
|
+
exports.parseFile = parseFile;
|
|
8
|
+
exports.parseFileByPath = parseFileByPath;
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
11
|
+
const tree_sitter_javascript_1 = __importDefault(require("tree-sitter-javascript"));
|
|
12
|
+
const tree_sitter_typescript_1 = __importDefault(require("tree-sitter-typescript"));
|
|
13
|
+
const parser = new tree_sitter_1.default();
|
|
14
|
+
const LANGUAGE_BY_EXTENSION = {
|
|
15
|
+
".ts": "typescript",
|
|
16
|
+
".tsx": "tsx",
|
|
17
|
+
".js": "javascript",
|
|
18
|
+
".jsx": "jsx",
|
|
19
|
+
".mjs": "javascript",
|
|
20
|
+
".cjs": "javascript"
|
|
21
|
+
};
|
|
22
|
+
const TREE_SITTER_LANGUAGE_BY_INDEX_LANGUAGE = {
|
|
23
|
+
typescript: tree_sitter_typescript_1.default.typescript,
|
|
24
|
+
tsx: tree_sitter_typescript_1.default.tsx,
|
|
25
|
+
javascript: tree_sitter_javascript_1.default,
|
|
26
|
+
jsx: tree_sitter_javascript_1.default
|
|
27
|
+
};
|
|
28
|
+
const SUPPORTED_EXTENSIONS = Object.keys(LANGUAGE_BY_EXTENSION).join(", ");
|
|
29
|
+
function detectLanguageFromFilePath(filePath) {
|
|
30
|
+
const extension = node_path_1.default.extname(filePath).toLowerCase();
|
|
31
|
+
return LANGUAGE_BY_EXTENSION[extension] ?? null;
|
|
32
|
+
}
|
|
33
|
+
function parseFile(content, language) {
|
|
34
|
+
const treeSitterLanguage = TREE_SITTER_LANGUAGE_BY_INDEX_LANGUAGE[language];
|
|
35
|
+
if (!treeSitterLanguage) {
|
|
36
|
+
throw new Error(`Unsupported language '${language}'.`);
|
|
37
|
+
}
|
|
38
|
+
parser.setLanguage(treeSitterLanguage);
|
|
39
|
+
return parser.parse(content);
|
|
40
|
+
}
|
|
41
|
+
function parseFileByPath(filePath, content) {
|
|
42
|
+
const language = detectLanguageFromFilePath(filePath);
|
|
43
|
+
if (!language) {
|
|
44
|
+
throw new Error(`Unsupported file extension for '${filePath}'. Supported: ${SUPPORTED_EXTENSIONS}`);
|
|
45
|
+
}
|
|
46
|
+
return parseFile(content, language);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/indexer/parser.ts"],"names":[],"mappings":";;;;;AA+BA,gEAGC;AAED,8BAQC;AAED,0CASC;AAvDD,0DAA6B;AAC7B,8DAAiC;AACjC,oFAAwD;AACxD,oFAAyD;AAKzD,MAAM,MAAM,GAAG,IAAI,qBAAM,EAAE,CAAC;AAE5B,MAAM,qBAAqB,GAAkC;IAC3D,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,MAAM,sCAAsC,GAGxC;IACF,UAAU,EAAE,gCAAmB,CAAC,UAAU;IAC1C,GAAG,EAAE,gCAAmB,CAAC,GAAG;IAC5B,UAAU,EAAE,gCAAkB;IAC9B,GAAG,EAAE,gCAAkB;CACxB,CAAC;AAEF,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3E,SAAgB,0BAA0B,CAAC,QAAgB;IACzD,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,OAAO,qBAAqB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,SAAgB,SAAS,CAAC,OAAe,EAAE,QAAuB;IAChE,MAAM,kBAAkB,GAAG,sCAAsC,CAAC,QAAQ,CAAC,CAAC;IAC5E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,eAAe,CAAC,QAAgB,EAAE,OAAe;IAC/D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,iBAAiB,oBAAoB,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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.normalizeToPosixPath = normalizeToPosixPath;
|
|
7
|
+
exports.toProjectRelativePath = toProjectRelativePath;
|
|
8
|
+
exports.toAbsolutePath = toAbsolutePath;
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
function normalizeToPosixPath(inputPath) {
|
|
11
|
+
return inputPath.replace(/\\/g, "/");
|
|
12
|
+
}
|
|
13
|
+
function toProjectRelativePath(projectRoot, absolutePath) {
|
|
14
|
+
const relativePath = node_path_1.default.relative(projectRoot, absolutePath);
|
|
15
|
+
return normalizeToPosixPath(relativePath);
|
|
16
|
+
}
|
|
17
|
+
function toAbsolutePath(projectRoot, maybeRelativePath) {
|
|
18
|
+
return node_path_1.default.resolve(projectRoot, maybeRelativePath);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=path-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/indexer/path-utils.ts"],"names":[],"mappings":";;;;;AAEA,oDAEC;AAED,sDAGC;AAED,wCAEC;AAbD,0DAA6B;AAE7B,SAAgB,oBAAoB,CAAC,SAAiB;IACpD,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,qBAAqB,CAAC,WAAmB,EAAE,YAAoB;IAC7E,MAAM,YAAY,GAAG,mBAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc,CAAC,WAAmB,EAAE,iBAAyB;IAC3E,OAAO,mBAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ProjectIndexerSummary {
|
|
2
|
+
total: number;
|
|
3
|
+
newFiles: number;
|
|
4
|
+
updatedFiles: number;
|
|
5
|
+
deletedFiles: number;
|
|
6
|
+
skippedFiles: number;
|
|
7
|
+
failedFiles: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ProjectIndexerOptions {
|
|
10
|
+
projectRoot: string;
|
|
11
|
+
db: import("better-sqlite3").Database;
|
|
12
|
+
}
|
|
13
|
+
export declare function indexProject(options: ProjectIndexerOptions): ProjectIndexerSummary;
|
|
14
|
+
export declare function printIndexSummary(summary: ProjectIndexerSummary): string;
|
|
@@ -0,0 +1,167 @@
|
|
|
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.indexProject = indexProject;
|
|
7
|
+
exports.printIndexSummary = printIndexSummary;
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const file_discovery_1 = require("./file-discovery");
|
|
11
|
+
const hasher_1 = require("./hasher");
|
|
12
|
+
const file_indexer_1 = require("./file-indexer");
|
|
13
|
+
const import_resolver_1 = require("./import-resolver");
|
|
14
|
+
const call_resolver_1 = require("./call-resolver");
|
|
15
|
+
const inheritance_resolver_1 = require("./inheritance-resolver");
|
|
16
|
+
const property_parsers_1 = require("./property-parsers");
|
|
17
|
+
const storage_1 = require("../storage");
|
|
18
|
+
function toFileNodeId(filePath) {
|
|
19
|
+
return `${filePath}::File::${filePath}::1`;
|
|
20
|
+
}
|
|
21
|
+
function indexProject(options) {
|
|
22
|
+
const projectRoot = node_path_1.default.resolve(options.projectRoot);
|
|
23
|
+
const writer = (0, storage_1.createStorageWriter)(options.db);
|
|
24
|
+
const reader = (0, storage_1.createStorageReader)(options.db);
|
|
25
|
+
const discoveredFiles = (0, file_discovery_1.discoverFiles)(projectRoot);
|
|
26
|
+
const discoveredPathSet = new Set(discoveredFiles.map((item) => item.path));
|
|
27
|
+
const indexedFiles = reader.getIndexedFiles();
|
|
28
|
+
const indexedByPath = new Map(indexedFiles.map((item) => [item.path, item]));
|
|
29
|
+
const deletedFilePaths = indexedFiles
|
|
30
|
+
.filter((item) => !discoveredPathSet.has(item.path))
|
|
31
|
+
.map((item) => item.path);
|
|
32
|
+
let newFiles = 0;
|
|
33
|
+
let updatedFiles = 0;
|
|
34
|
+
let skippedFiles = 0;
|
|
35
|
+
let failedFiles = 0;
|
|
36
|
+
const sourceImportsByFile = new Map();
|
|
37
|
+
const writeActions = [];
|
|
38
|
+
const selectExistingImportEdgesForSource = options.db.prepare("SELECT properties FROM edges WHERE type = 'IMPORTS' AND source_id = ?");
|
|
39
|
+
for (const file of discoveredFiles) {
|
|
40
|
+
try {
|
|
41
|
+
const content = node_fs_1.default.readFileSync(file.absolutePath, "utf8");
|
|
42
|
+
const hash = (0, hasher_1.hashContent)(content);
|
|
43
|
+
const existing = indexedByPath.get(file.path);
|
|
44
|
+
if (existing && existing.contentHash === hash) {
|
|
45
|
+
skippedFiles += 1;
|
|
46
|
+
const sourceNodeId = toFileNodeId(file.path);
|
|
47
|
+
const existingImportRows = selectExistingImportEdgesForSource.all(sourceNodeId);
|
|
48
|
+
const bindings = existingImportRows.flatMap((row) => (0, property_parsers_1.parseBindingsFromStoredImportEdge)(row.properties));
|
|
49
|
+
sourceImportsByFile.set(file.path, bindings);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const indexed = (0, file_indexer_1.indexFile)(file.path, content);
|
|
53
|
+
const fileRecord = {
|
|
54
|
+
path: file.path,
|
|
55
|
+
contentHash: hash,
|
|
56
|
+
language: indexed.language,
|
|
57
|
+
indexedAt: Date.now()
|
|
58
|
+
};
|
|
59
|
+
const nodes = indexed.nodes;
|
|
60
|
+
const edgesWithoutImports = indexed.edges.filter((edge) => edge.type !== "IMPORTS");
|
|
61
|
+
const mappedNodes = nodes.map((node) => ({
|
|
62
|
+
id: node.id,
|
|
63
|
+
type: node.type,
|
|
64
|
+
name: node.name,
|
|
65
|
+
filePath: node.filePath,
|
|
66
|
+
startLine: node.startLine,
|
|
67
|
+
endLine: node.endLine,
|
|
68
|
+
startCol: node.startCol,
|
|
69
|
+
endCol: node.endCol,
|
|
70
|
+
properties: node.properties
|
|
71
|
+
}));
|
|
72
|
+
const mappedEdges = edgesWithoutImports.map((edge) => ({
|
|
73
|
+
sourceId: edge.sourceId,
|
|
74
|
+
targetId: edge.targetId,
|
|
75
|
+
type: edge.type,
|
|
76
|
+
properties: edge.properties
|
|
77
|
+
}));
|
|
78
|
+
writeActions.push({
|
|
79
|
+
filePath: file.path,
|
|
80
|
+
fileRecord,
|
|
81
|
+
nodes: mappedNodes,
|
|
82
|
+
edgesWithoutImports: mappedEdges,
|
|
83
|
+
importBindings: (0, property_parsers_1.extractImportBindingsFromIndexedEdges)(indexed.edges)
|
|
84
|
+
});
|
|
85
|
+
sourceImportsByFile.set(file.path, (0, property_parsers_1.extractImportBindingsFromIndexedEdges)(indexed.edges));
|
|
86
|
+
if (existing) {
|
|
87
|
+
updatedFiles += 1;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
newFiles += 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
failedFiles += 1;
|
|
95
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
96
|
+
// eslint-disable-next-line no-console
|
|
97
|
+
console.error(`[indexer] Failed to index file: ${file.path}\n${errorMsg}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const resolver = (0, import_resolver_1.createImportResolver)(projectRoot, discoveredFiles.map((item) => item.path));
|
|
101
|
+
const availableFilePaths = new Set(indexedFiles.map((item) => item.path));
|
|
102
|
+
for (const deletedPath of deletedFilePaths) {
|
|
103
|
+
availableFilePaths.delete(deletedPath);
|
|
104
|
+
}
|
|
105
|
+
for (const action of writeActions) {
|
|
106
|
+
availableFilePaths.add(action.filePath);
|
|
107
|
+
}
|
|
108
|
+
const deleteFileImportsStatement = options.db.prepare("DELETE FROM edges WHERE source_id = ? AND type = 'IMPORTS'");
|
|
109
|
+
const tx = options.db.transaction(() => {
|
|
110
|
+
for (const action of writeActions) {
|
|
111
|
+
writer.replaceFileGraph(action.fileRecord, action.nodes, action.edgesWithoutImports);
|
|
112
|
+
}
|
|
113
|
+
for (const deletedPath of deletedFilePaths) {
|
|
114
|
+
writer.deleteFileGraph(deletedPath);
|
|
115
|
+
}
|
|
116
|
+
for (const [filePath, bindings] of sourceImportsByFile.entries()) {
|
|
117
|
+
if (!availableFilePaths.has(filePath)) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const sourceFileNodeId = toFileNodeId(filePath);
|
|
121
|
+
deleteFileImportsStatement.run(sourceFileNodeId);
|
|
122
|
+
const groupedByTarget = new Map();
|
|
123
|
+
for (const binding of bindings) {
|
|
124
|
+
const resolved = resolver.resolveImport(filePath, binding.sourcePath);
|
|
125
|
+
if (!resolved.resolvedPath || !availableFilePaths.has(resolved.resolvedPath)) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const list = groupedByTarget.get(resolved.resolvedPath) ?? [];
|
|
129
|
+
list.push(binding);
|
|
130
|
+
groupedByTarget.set(resolved.resolvedPath, list);
|
|
131
|
+
}
|
|
132
|
+
for (const [targetPath, targetBindings] of groupedByTarget.entries()) {
|
|
133
|
+
const targetFileNodeId = toFileNodeId(targetPath);
|
|
134
|
+
writer.upsertEdge({
|
|
135
|
+
sourceId: sourceFileNodeId,
|
|
136
|
+
targetId: targetFileNodeId,
|
|
137
|
+
type: "IMPORTS",
|
|
138
|
+
properties: JSON.stringify({
|
|
139
|
+
bindings: targetBindings
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
(0, call_resolver_1.resolveCrossFileCalls)({
|
|
145
|
+
projectRoot,
|
|
146
|
+
db: options.db,
|
|
147
|
+
indexedFilePaths: [...availableFilePaths]
|
|
148
|
+
});
|
|
149
|
+
(0, inheritance_resolver_1.resolveInheritanceEdges)({
|
|
150
|
+
db: options.db,
|
|
151
|
+
indexedFilePaths: [...availableFilePaths]
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
tx();
|
|
155
|
+
return {
|
|
156
|
+
total: discoveredFiles.length,
|
|
157
|
+
newFiles,
|
|
158
|
+
updatedFiles,
|
|
159
|
+
deletedFiles: deletedFilePaths.length,
|
|
160
|
+
skippedFiles,
|
|
161
|
+
failedFiles
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function printIndexSummary(summary) {
|
|
165
|
+
return `Indexed ${summary.total}/${summary.total} files (${summary.newFiles} new, ${summary.updatedFiles} updated, ${summary.deletedFiles} deleted, ${summary.skippedFiles} skipped, ${summary.failedFiles} failed)`;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=project-indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-indexer.js","sourceRoot":"","sources":["../../src/indexer/project-indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface ImportBinding {
|
|
2
|
+
sourcePath: string;
|
|
3
|
+
importedName: string | null;
|
|
4
|
+
localName: string | null;
|
|
5
|
+
isTypeOnly: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function extractImportBindingsFromIndexedEdges(edges: Array<{
|
|
8
|
+
type: string;
|
|
9
|
+
properties: string | null;
|
|
10
|
+
}>): ImportBinding[];
|
|
11
|
+
export declare function parseBindingsFromStoredImportEdge(properties: string | null): ImportBinding[];
|
|
12
|
+
export declare function parseBindings(properties: string | null): ImportBinding[];
|
|
13
|
+
export declare function parseExportInfo(properties: string | null): {
|
|
14
|
+
exportedName: string | null;
|
|
15
|
+
reExport: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare function parseClassMetadata(properties: string | null): {
|
|
18
|
+
extendsName: string | null;
|
|
19
|
+
implementsNames: string[];
|
|
20
|
+
};
|