@mduenas/codegraph 0.4.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/LICENSE +21 -0
- package/README.md +641 -0
- package/dist/bin/codegraph.d.ts +20 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +704 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +291 -0
- package/dist/config.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +244 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +86 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +402 -0
- package/dist/context/index.js.map +1 -0
- package/dist/db/index.d.ts +64 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +170 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +105 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +148 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +669 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/directory.d.ts +45 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +191 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/grammars.d.ts +36 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +181 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +91 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +493 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +176 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +1798 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +355 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +465 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +496 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +818 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/banner.d.ts +40 -0
- package/dist/installer/banner.d.ts.map +1 -0
- package/dist/installer/banner.js +162 -0
- package/dist/installer/banner.js.map +1 -0
- package/dist/installer/claude-md-template.d.ts +10 -0
- package/dist/installer/claude-md-template.d.ts.map +1 -0
- package/dist/installer/claude-md-template.js +46 -0
- package/dist/installer/claude-md-template.js.map +1 -0
- package/dist/installer/config-writer.d.ts +36 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +282 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +13 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +155 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/prompts.d.ts +18 -0
- package/dist/installer/prompts.d.ts.map +1 -0
- package/dist/installer/prompts.js +113 -0
- package/dist/installer/prompts.js.map +1 -0
- package/dist/mcp/index.d.ts +64 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +207 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +93 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +442 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +89 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +170 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +274 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +208 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +225 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +33 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +113 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +239 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +198 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +331 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +294 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +262 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +222 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +486 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +20 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +445 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +72 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +301 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +27 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +210 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/types.d.ts +108 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/sync/git-hooks.d.ts +66 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +281 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +13 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +18 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/types.d.ts +410 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +165 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +116 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +295 -0
- package/dist/utils.js.map +1 -0
- package/dist/vectors/embedder.d.ts +140 -0
- package/dist/vectors/embedder.d.ts.map +1 -0
- package/dist/vectors/embedder.js +336 -0
- package/dist/vectors/embedder.js.map +1 -0
- package/dist/vectors/index.d.ts +9 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +20 -0
- package/dist/vectors/index.js.map +1 -0
- package/dist/vectors/manager.d.ts +119 -0
- package/dist/vectors/manager.d.ts.map +1 -0
- package/dist/vectors/manager.js +274 -0
- package/dist/vectors/manager.js.map +1 -0
- package/dist/vectors/search.d.ts +134 -0
- package/dist/vectors/search.d.ts.map +1 -0
- package/dist/vectors/search.js +409 -0
- package/dist/vectors/search.js.map +1 -0
- package/package.json +67 -0
- package/scripts/postinstall.js +68 -0
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Import Resolver
|
|
4
|
+
*
|
|
5
|
+
* Resolves import paths to actual files and symbols.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.resolveImportPath = resolveImportPath;
|
|
42
|
+
exports.extractImportMappings = extractImportMappings;
|
|
43
|
+
exports.resolveViaImport = resolveViaImport;
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
/**
|
|
46
|
+
* Extension resolution order by language
|
|
47
|
+
*/
|
|
48
|
+
const EXTENSION_RESOLUTION = {
|
|
49
|
+
typescript: ['.ts', '.tsx', '.d.ts', '.js', '.jsx', '/index.ts', '/index.tsx', '/index.js'],
|
|
50
|
+
javascript: ['.js', '.jsx', '.mjs', '.cjs', '/index.js', '/index.jsx'],
|
|
51
|
+
tsx: ['.tsx', '.ts', '.d.ts', '.js', '.jsx', '/index.tsx', '/index.ts', '/index.js'],
|
|
52
|
+
jsx: ['.jsx', '.js', '/index.jsx', '/index.js'],
|
|
53
|
+
python: ['.py', '/__init__.py'],
|
|
54
|
+
go: ['.go'],
|
|
55
|
+
rust: ['.rs', '/mod.rs'],
|
|
56
|
+
java: ['.java'],
|
|
57
|
+
csharp: ['.cs'],
|
|
58
|
+
php: ['.php'],
|
|
59
|
+
ruby: ['.rb'],
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Resolve an import path to an actual file
|
|
63
|
+
*/
|
|
64
|
+
function resolveImportPath(importPath, fromFile, language, context) {
|
|
65
|
+
// Skip external/npm packages
|
|
66
|
+
if (isExternalImport(importPath, language)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const projectRoot = context.getProjectRoot();
|
|
70
|
+
const fromDir = path.dirname(path.join(projectRoot, fromFile));
|
|
71
|
+
// Handle relative imports
|
|
72
|
+
if (importPath.startsWith('.')) {
|
|
73
|
+
return resolveRelativeImport(importPath, fromDir, language, context);
|
|
74
|
+
}
|
|
75
|
+
// Handle absolute/aliased imports (like @/ or src/)
|
|
76
|
+
return resolveAliasedImport(importPath, projectRoot, language, context);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if an import is external (npm package, etc.)
|
|
80
|
+
*/
|
|
81
|
+
function isExternalImport(importPath, language) {
|
|
82
|
+
// Relative imports are not external
|
|
83
|
+
if (importPath.startsWith('.')) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
// Common external patterns
|
|
87
|
+
if (language === 'typescript' || language === 'javascript' || language === 'tsx' || language === 'jsx') {
|
|
88
|
+
// Node built-ins
|
|
89
|
+
if (['fs', 'path', 'os', 'crypto', 'http', 'https', 'url', 'util', 'events', 'stream', 'child_process', 'buffer'].includes(importPath)) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
// Scoped packages or bare specifiers that don't start with aliases
|
|
93
|
+
if (!importPath.startsWith('@/') && !importPath.startsWith('~/') && !importPath.startsWith('src/')) {
|
|
94
|
+
// Likely an npm package
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (language === 'python') {
|
|
99
|
+
// Standard library modules
|
|
100
|
+
const stdLibs = ['os', 'sys', 'json', 're', 'math', 'datetime', 'collections', 'typing', 'pathlib', 'logging'];
|
|
101
|
+
if (stdLibs.includes(importPath.split('.')[0])) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (language === 'go') {
|
|
106
|
+
// Standard library or external packages
|
|
107
|
+
if (!importPath.startsWith('.') && !importPath.includes('/internal/')) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Resolve a relative import
|
|
115
|
+
*/
|
|
116
|
+
function resolveRelativeImport(importPath, fromDir, language, context) {
|
|
117
|
+
const projectRoot = context.getProjectRoot();
|
|
118
|
+
const extensions = EXTENSION_RESOLUTION[language] || [];
|
|
119
|
+
// Try the path as-is first
|
|
120
|
+
const basePath = path.resolve(fromDir, importPath);
|
|
121
|
+
const relativePath = path.relative(projectRoot, basePath);
|
|
122
|
+
// Try each extension
|
|
123
|
+
for (const ext of extensions) {
|
|
124
|
+
const candidatePath = relativePath + ext;
|
|
125
|
+
if (context.fileExists(candidatePath)) {
|
|
126
|
+
return candidatePath;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Try without extension (might already have one)
|
|
130
|
+
if (context.fileExists(relativePath)) {
|
|
131
|
+
return relativePath;
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Resolve an aliased/absolute import
|
|
137
|
+
*/
|
|
138
|
+
function resolveAliasedImport(importPath, _projectRoot, language, context) {
|
|
139
|
+
const extensions = EXTENSION_RESOLUTION[language] || [];
|
|
140
|
+
// Common aliases
|
|
141
|
+
const aliases = {
|
|
142
|
+
'@/': 'src/',
|
|
143
|
+
'~/': 'src/',
|
|
144
|
+
'@src/': 'src/',
|
|
145
|
+
'src/': 'src/',
|
|
146
|
+
'@app/': 'app/',
|
|
147
|
+
'app/': 'app/',
|
|
148
|
+
};
|
|
149
|
+
// Try each alias
|
|
150
|
+
for (const [alias, replacement] of Object.entries(aliases)) {
|
|
151
|
+
if (importPath.startsWith(alias)) {
|
|
152
|
+
const resolvedPath = importPath.replace(alias, replacement);
|
|
153
|
+
// Try with extensions
|
|
154
|
+
for (const ext of extensions) {
|
|
155
|
+
const candidatePath = resolvedPath + ext;
|
|
156
|
+
if (context.fileExists(candidatePath)) {
|
|
157
|
+
return candidatePath;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Try as-is
|
|
161
|
+
if (context.fileExists(resolvedPath)) {
|
|
162
|
+
return resolvedPath;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Try direct path
|
|
167
|
+
for (const ext of extensions) {
|
|
168
|
+
const candidatePath = importPath + ext;
|
|
169
|
+
if (context.fileExists(candidatePath)) {
|
|
170
|
+
return candidatePath;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Extract import mappings from a file
|
|
177
|
+
*/
|
|
178
|
+
function extractImportMappings(_filePath, content, language) {
|
|
179
|
+
const mappings = [];
|
|
180
|
+
if (language === 'typescript' || language === 'javascript' || language === 'tsx' || language === 'jsx') {
|
|
181
|
+
mappings.push(...extractJSImports(content));
|
|
182
|
+
}
|
|
183
|
+
else if (language === 'python') {
|
|
184
|
+
mappings.push(...extractPythonImports(content));
|
|
185
|
+
}
|
|
186
|
+
else if (language === 'go') {
|
|
187
|
+
mappings.push(...extractGoImports(content));
|
|
188
|
+
}
|
|
189
|
+
else if (language === 'php') {
|
|
190
|
+
mappings.push(...extractPHPImports(content));
|
|
191
|
+
}
|
|
192
|
+
return mappings;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Extract JS/TS import mappings
|
|
196
|
+
*/
|
|
197
|
+
function extractJSImports(content) {
|
|
198
|
+
const mappings = [];
|
|
199
|
+
// ES6 imports
|
|
200
|
+
const importRegex = /import\s+(?:(\w+)\s*,?\s*)?(?:\{([^}]+)\})?\s*(?:(\*)\s+as\s+(\w+))?\s*from\s*['"]([^'"]+)['"]/g;
|
|
201
|
+
let match;
|
|
202
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
203
|
+
const [, defaultImport, namedImports, star, namespaceAlias, source] = match;
|
|
204
|
+
// Default import
|
|
205
|
+
if (defaultImport) {
|
|
206
|
+
mappings.push({
|
|
207
|
+
localName: defaultImport,
|
|
208
|
+
exportedName: 'default',
|
|
209
|
+
source: source,
|
|
210
|
+
isDefault: true,
|
|
211
|
+
isNamespace: false,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
// Named imports
|
|
215
|
+
if (namedImports) {
|
|
216
|
+
const names = namedImports.split(',').map((s) => s.trim());
|
|
217
|
+
for (const name of names) {
|
|
218
|
+
const aliasMatch = name.match(/(\w+)\s+as\s+(\w+)/);
|
|
219
|
+
if (aliasMatch) {
|
|
220
|
+
mappings.push({
|
|
221
|
+
localName: aliasMatch[2],
|
|
222
|
+
exportedName: aliasMatch[1],
|
|
223
|
+
source: source,
|
|
224
|
+
isDefault: false,
|
|
225
|
+
isNamespace: false,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
else if (name) {
|
|
229
|
+
mappings.push({
|
|
230
|
+
localName: name,
|
|
231
|
+
exportedName: name,
|
|
232
|
+
source: source,
|
|
233
|
+
isDefault: false,
|
|
234
|
+
isNamespace: false,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Namespace import
|
|
240
|
+
if (star && namespaceAlias) {
|
|
241
|
+
mappings.push({
|
|
242
|
+
localName: namespaceAlias,
|
|
243
|
+
exportedName: '*',
|
|
244
|
+
source: source,
|
|
245
|
+
isDefault: false,
|
|
246
|
+
isNamespace: true,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Require statements
|
|
251
|
+
const requireRegex = /(?:const|let|var)\s+(?:(\w+)|{([^}]+)})\s*=\s*require\(['"]([^'"]+)['"]\)/g;
|
|
252
|
+
while ((match = requireRegex.exec(content)) !== null) {
|
|
253
|
+
const [, defaultName, destructured, source] = match;
|
|
254
|
+
if (defaultName) {
|
|
255
|
+
mappings.push({
|
|
256
|
+
localName: defaultName,
|
|
257
|
+
exportedName: 'default',
|
|
258
|
+
source: source,
|
|
259
|
+
isDefault: true,
|
|
260
|
+
isNamespace: false,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
if (destructured) {
|
|
264
|
+
const names = destructured.split(',').map((s) => s.trim());
|
|
265
|
+
for (const name of names) {
|
|
266
|
+
const aliasMatch = name.match(/(\w+)\s*:\s*(\w+)/);
|
|
267
|
+
if (aliasMatch) {
|
|
268
|
+
mappings.push({
|
|
269
|
+
localName: aliasMatch[2],
|
|
270
|
+
exportedName: aliasMatch[1],
|
|
271
|
+
source: source,
|
|
272
|
+
isDefault: false,
|
|
273
|
+
isNamespace: false,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
else if (name) {
|
|
277
|
+
mappings.push({
|
|
278
|
+
localName: name,
|
|
279
|
+
exportedName: name,
|
|
280
|
+
source: source,
|
|
281
|
+
isDefault: false,
|
|
282
|
+
isNamespace: false,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return mappings;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Extract Python import mappings
|
|
292
|
+
*/
|
|
293
|
+
function extractPythonImports(content) {
|
|
294
|
+
const mappings = [];
|
|
295
|
+
// from X import Y
|
|
296
|
+
const fromImportRegex = /from\s+([\w.]+)\s+import\s+([^#\n]+)/g;
|
|
297
|
+
let match;
|
|
298
|
+
while ((match = fromImportRegex.exec(content)) !== null) {
|
|
299
|
+
const [, source, imports] = match;
|
|
300
|
+
const names = imports.split(',').map((s) => s.trim());
|
|
301
|
+
for (const name of names) {
|
|
302
|
+
const aliasMatch = name.match(/(\w+)\s+as\s+(\w+)/);
|
|
303
|
+
if (aliasMatch) {
|
|
304
|
+
mappings.push({
|
|
305
|
+
localName: aliasMatch[2],
|
|
306
|
+
exportedName: aliasMatch[1],
|
|
307
|
+
source: source,
|
|
308
|
+
isDefault: false,
|
|
309
|
+
isNamespace: false,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
else if (name && name !== '*') {
|
|
313
|
+
mappings.push({
|
|
314
|
+
localName: name,
|
|
315
|
+
exportedName: name,
|
|
316
|
+
source: source,
|
|
317
|
+
isDefault: false,
|
|
318
|
+
isNamespace: false,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// import X
|
|
324
|
+
const importRegex = /^import\s+([\w.]+)(?:\s+as\s+(\w+))?/gm;
|
|
325
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
326
|
+
const [, source, alias] = match;
|
|
327
|
+
const localName = alias || source.split('.').pop();
|
|
328
|
+
mappings.push({
|
|
329
|
+
localName,
|
|
330
|
+
exportedName: '*',
|
|
331
|
+
source: source,
|
|
332
|
+
isDefault: false,
|
|
333
|
+
isNamespace: true,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return mappings;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Extract Go import mappings
|
|
340
|
+
*/
|
|
341
|
+
function extractGoImports(content) {
|
|
342
|
+
const mappings = [];
|
|
343
|
+
// import "path" or import alias "path"
|
|
344
|
+
const singleImportRegex = /import\s+(?:(\w+)\s+)?["']([^"']+)["']/g;
|
|
345
|
+
let match;
|
|
346
|
+
while ((match = singleImportRegex.exec(content)) !== null) {
|
|
347
|
+
const [, alias, source] = match;
|
|
348
|
+
const packageName = source.split('/').pop();
|
|
349
|
+
mappings.push({
|
|
350
|
+
localName: alias || packageName,
|
|
351
|
+
exportedName: '*',
|
|
352
|
+
source: source,
|
|
353
|
+
isDefault: false,
|
|
354
|
+
isNamespace: true,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
// import ( ... ) block
|
|
358
|
+
const blockImportRegex = /import\s*\(\s*([^)]+)\s*\)/gs;
|
|
359
|
+
while ((match = blockImportRegex.exec(content)) !== null) {
|
|
360
|
+
const block = match[1];
|
|
361
|
+
const lineRegex = /(?:(\w+)\s+)?["']([^"']+)["']/g;
|
|
362
|
+
let lineMatch;
|
|
363
|
+
while ((lineMatch = lineRegex.exec(block)) !== null) {
|
|
364
|
+
const [, alias, source] = lineMatch;
|
|
365
|
+
const packageName = source.split('/').pop();
|
|
366
|
+
mappings.push({
|
|
367
|
+
localName: alias || packageName,
|
|
368
|
+
exportedName: '*',
|
|
369
|
+
source: source,
|
|
370
|
+
isDefault: false,
|
|
371
|
+
isNamespace: true,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return mappings;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Extract PHP import mappings (use statements)
|
|
379
|
+
*/
|
|
380
|
+
function extractPHPImports(content) {
|
|
381
|
+
const mappings = [];
|
|
382
|
+
// use Namespace\Class; or use Namespace\Class as Alias;
|
|
383
|
+
const useRegex = /use\s+([\w\\]+)(?:\s+as\s+(\w+))?;/g;
|
|
384
|
+
let match;
|
|
385
|
+
while ((match = useRegex.exec(content)) !== null) {
|
|
386
|
+
const [, fullPath, alias] = match;
|
|
387
|
+
const className = fullPath.split('\\').pop();
|
|
388
|
+
mappings.push({
|
|
389
|
+
localName: alias || className,
|
|
390
|
+
exportedName: className,
|
|
391
|
+
source: fullPath,
|
|
392
|
+
isDefault: false,
|
|
393
|
+
isNamespace: false,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
return mappings;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Resolve a reference using import mappings
|
|
400
|
+
*/
|
|
401
|
+
function resolveViaImport(ref, context) {
|
|
402
|
+
// Read the source file to extract imports
|
|
403
|
+
const content = context.readFile(ref.filePath);
|
|
404
|
+
if (!content) {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
const imports = extractImportMappings(ref.filePath, content, ref.language);
|
|
408
|
+
// Check if the reference name matches any import
|
|
409
|
+
for (const imp of imports) {
|
|
410
|
+
if (imp.localName === ref.referenceName || ref.referenceName.startsWith(imp.localName + '.')) {
|
|
411
|
+
// Resolve the import path
|
|
412
|
+
const resolvedPath = resolveImportPath(imp.source, ref.filePath, ref.language, context);
|
|
413
|
+
if (resolvedPath) {
|
|
414
|
+
// Find the exported symbol in the resolved file
|
|
415
|
+
const nodesInFile = context.getNodesInFile(resolvedPath);
|
|
416
|
+
const exportedName = imp.isDefault ? 'default' : imp.exportedName;
|
|
417
|
+
// Look for the symbol
|
|
418
|
+
let targetNode;
|
|
419
|
+
if (imp.isDefault) {
|
|
420
|
+
// Find default export or main class/function
|
|
421
|
+
targetNode = nodesInFile.find((n) => n.isExported && (n.kind === 'function' || n.kind === 'class'));
|
|
422
|
+
}
|
|
423
|
+
else if (imp.isNamespace) {
|
|
424
|
+
// Namespace import - look for the specific member
|
|
425
|
+
const memberName = ref.referenceName.replace(imp.localName + '.', '');
|
|
426
|
+
targetNode = nodesInFile.find((n) => n.name === memberName && n.isExported);
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
// Named import
|
|
430
|
+
targetNode = nodesInFile.find((n) => n.name === exportedName && n.isExported);
|
|
431
|
+
}
|
|
432
|
+
if (targetNode) {
|
|
433
|
+
return {
|
|
434
|
+
original: ref,
|
|
435
|
+
targetNodeId: targetNode.id,
|
|
436
|
+
confidence: 0.9,
|
|
437
|
+
resolvedBy: 'import',
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=import-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/resolution/import-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference Resolution Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Coordinates all reference resolution strategies.
|
|
5
|
+
*/
|
|
6
|
+
import { UnresolvedReference, Edge } from '../types';
|
|
7
|
+
import { QueryBuilder } from '../db/queries';
|
|
8
|
+
import { UnresolvedRef, ResolvedRef, ResolutionResult } from './types';
|
|
9
|
+
export * from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Reference Resolver
|
|
12
|
+
*
|
|
13
|
+
* Orchestrates reference resolution using multiple strategies.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ReferenceResolver {
|
|
16
|
+
private projectRoot;
|
|
17
|
+
private queries;
|
|
18
|
+
private context;
|
|
19
|
+
private frameworks;
|
|
20
|
+
private nodeCache;
|
|
21
|
+
private fileCache;
|
|
22
|
+
constructor(projectRoot: string, queries: QueryBuilder);
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the resolver (detect frameworks, etc.)
|
|
25
|
+
*/
|
|
26
|
+
initialize(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Clear internal caches
|
|
29
|
+
*/
|
|
30
|
+
clearCaches(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Create the resolution context
|
|
33
|
+
*/
|
|
34
|
+
private createContext;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve all unresolved references
|
|
37
|
+
*/
|
|
38
|
+
resolveAll(unresolvedRefs: UnresolvedReference[]): ResolutionResult;
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a single reference
|
|
41
|
+
*/
|
|
42
|
+
resolveOne(ref: UnresolvedRef): ResolvedRef | null;
|
|
43
|
+
/**
|
|
44
|
+
* Create edges from resolved references
|
|
45
|
+
*/
|
|
46
|
+
createEdges(resolved: ResolvedRef[]): Edge[];
|
|
47
|
+
/**
|
|
48
|
+
* Resolve and persist edges to database
|
|
49
|
+
*/
|
|
50
|
+
resolveAndPersist(unresolvedRefs: UnresolvedReference[]): ResolutionResult;
|
|
51
|
+
/**
|
|
52
|
+
* Get detected frameworks
|
|
53
|
+
*/
|
|
54
|
+
getDetectedFrameworks(): string[];
|
|
55
|
+
/**
|
|
56
|
+
* Check if reference is to a built-in or external symbol
|
|
57
|
+
*/
|
|
58
|
+
private isBuiltInOrExternal;
|
|
59
|
+
/**
|
|
60
|
+
* Get file path from node ID
|
|
61
|
+
*/
|
|
62
|
+
private getFilePathFromNodeId;
|
|
63
|
+
/**
|
|
64
|
+
* Get language from node ID
|
|
65
|
+
*/
|
|
66
|
+
private getLanguageFromNodeId;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a reference resolver instance
|
|
70
|
+
*/
|
|
71
|
+
export declare function createResolver(projectRoot: string, queries: QueryBuilder): ReferenceResolver;
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAQ,mBAAmB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,WAAW,EACX,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAOjB,cAAc,SAAS,CAAC;AAExB;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAyC;gBAE9C,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAMtD;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4DrB;;OAEG;IACH,UAAU,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,gBAAgB;IAuCnE;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI;IA6BlD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE;IAc5C;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,gBAAgB;IAc1E;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAI9B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,iBAAiB,CAI5F"}
|