@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.
Files changed (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +641 -0
  3. package/dist/bin/codegraph.d.ts +20 -0
  4. package/dist/bin/codegraph.d.ts.map +1 -0
  5. package/dist/bin/codegraph.js +704 -0
  6. package/dist/bin/codegraph.js.map +1 -0
  7. package/dist/config.d.ts +51 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +291 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/context/formatter.d.ts +30 -0
  12. package/dist/context/formatter.d.ts.map +1 -0
  13. package/dist/context/formatter.js +244 -0
  14. package/dist/context/formatter.js.map +1 -0
  15. package/dist/context/index.d.ts +86 -0
  16. package/dist/context/index.d.ts.map +1 -0
  17. package/dist/context/index.js +402 -0
  18. package/dist/context/index.js.map +1 -0
  19. package/dist/db/index.d.ts +64 -0
  20. package/dist/db/index.d.ts.map +1 -0
  21. package/dist/db/index.js +170 -0
  22. package/dist/db/index.js.map +1 -0
  23. package/dist/db/migrations.d.ts +44 -0
  24. package/dist/db/migrations.d.ts.map +1 -0
  25. package/dist/db/migrations.js +105 -0
  26. package/dist/db/migrations.js.map +1 -0
  27. package/dist/db/queries.d.ts +148 -0
  28. package/dist/db/queries.d.ts.map +1 -0
  29. package/dist/db/queries.js +669 -0
  30. package/dist/db/queries.js.map +1 -0
  31. package/dist/directory.d.ts +45 -0
  32. package/dist/directory.d.ts.map +1 -0
  33. package/dist/directory.js +191 -0
  34. package/dist/directory.js.map +1 -0
  35. package/dist/errors.d.ts +136 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +219 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/extraction/grammars.d.ts +36 -0
  40. package/dist/extraction/grammars.d.ts.map +1 -0
  41. package/dist/extraction/grammars.js +181 -0
  42. package/dist/extraction/grammars.js.map +1 -0
  43. package/dist/extraction/index.d.ts +91 -0
  44. package/dist/extraction/index.d.ts.map +1 -0
  45. package/dist/extraction/index.js +493 -0
  46. package/dist/extraction/index.js.map +1 -0
  47. package/dist/extraction/tree-sitter.d.ts +176 -0
  48. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  49. package/dist/extraction/tree-sitter.js +1798 -0
  50. package/dist/extraction/tree-sitter.js.map +1 -0
  51. package/dist/graph/index.d.ts +8 -0
  52. package/dist/graph/index.d.ts.map +1 -0
  53. package/dist/graph/index.js +13 -0
  54. package/dist/graph/index.js.map +1 -0
  55. package/dist/graph/queries.d.ts +106 -0
  56. package/dist/graph/queries.d.ts.map +1 -0
  57. package/dist/graph/queries.js +355 -0
  58. package/dist/graph/queries.js.map +1 -0
  59. package/dist/graph/traversal.d.ts +127 -0
  60. package/dist/graph/traversal.d.ts.map +1 -0
  61. package/dist/graph/traversal.js +465 -0
  62. package/dist/graph/traversal.js.map +1 -0
  63. package/dist/index.d.ts +496 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +818 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/installer/banner.d.ts +40 -0
  68. package/dist/installer/banner.d.ts.map +1 -0
  69. package/dist/installer/banner.js +162 -0
  70. package/dist/installer/banner.js.map +1 -0
  71. package/dist/installer/claude-md-template.d.ts +10 -0
  72. package/dist/installer/claude-md-template.d.ts.map +1 -0
  73. package/dist/installer/claude-md-template.js +46 -0
  74. package/dist/installer/claude-md-template.js.map +1 -0
  75. package/dist/installer/config-writer.d.ts +36 -0
  76. package/dist/installer/config-writer.d.ts.map +1 -0
  77. package/dist/installer/config-writer.js +282 -0
  78. package/dist/installer/config-writer.js.map +1 -0
  79. package/dist/installer/index.d.ts +13 -0
  80. package/dist/installer/index.d.ts.map +1 -0
  81. package/dist/installer/index.js +155 -0
  82. package/dist/installer/index.js.map +1 -0
  83. package/dist/installer/prompts.d.ts +18 -0
  84. package/dist/installer/prompts.d.ts.map +1 -0
  85. package/dist/installer/prompts.js +113 -0
  86. package/dist/installer/prompts.js.map +1 -0
  87. package/dist/mcp/index.d.ts +64 -0
  88. package/dist/mcp/index.d.ts.map +1 -0
  89. package/dist/mcp/index.js +207 -0
  90. package/dist/mcp/index.js.map +1 -0
  91. package/dist/mcp/tools.d.ts +93 -0
  92. package/dist/mcp/tools.d.ts.map +1 -0
  93. package/dist/mcp/tools.js +442 -0
  94. package/dist/mcp/tools.js.map +1 -0
  95. package/dist/mcp/transport.d.ts +89 -0
  96. package/dist/mcp/transport.d.ts.map +1 -0
  97. package/dist/mcp/transport.js +170 -0
  98. package/dist/mcp/transport.js.map +1 -0
  99. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  100. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  101. package/dist/resolution/frameworks/csharp.js +274 -0
  102. package/dist/resolution/frameworks/csharp.js.map +1 -0
  103. package/dist/resolution/frameworks/express.d.ts +8 -0
  104. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  105. package/dist/resolution/frameworks/express.js +208 -0
  106. package/dist/resolution/frameworks/express.js.map +1 -0
  107. package/dist/resolution/frameworks/go.d.ts +8 -0
  108. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  109. package/dist/resolution/frameworks/go.js +225 -0
  110. package/dist/resolution/frameworks/go.js.map +1 -0
  111. package/dist/resolution/frameworks/index.d.ts +33 -0
  112. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  113. package/dist/resolution/frameworks/index.js +113 -0
  114. package/dist/resolution/frameworks/index.js.map +1 -0
  115. package/dist/resolution/frameworks/java.d.ts +8 -0
  116. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  117. package/dist/resolution/frameworks/java.js +239 -0
  118. package/dist/resolution/frameworks/java.js.map +1 -0
  119. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  120. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  121. package/dist/resolution/frameworks/laravel.js +198 -0
  122. package/dist/resolution/frameworks/laravel.js.map +1 -0
  123. package/dist/resolution/frameworks/python.d.ts +10 -0
  124. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  125. package/dist/resolution/frameworks/python.js +331 -0
  126. package/dist/resolution/frameworks/python.js.map +1 -0
  127. package/dist/resolution/frameworks/react.d.ts +8 -0
  128. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  129. package/dist/resolution/frameworks/react.js +294 -0
  130. package/dist/resolution/frameworks/react.js.map +1 -0
  131. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  132. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  133. package/dist/resolution/frameworks/ruby.js +262 -0
  134. package/dist/resolution/frameworks/ruby.js.map +1 -0
  135. package/dist/resolution/frameworks/rust.d.ts +8 -0
  136. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  137. package/dist/resolution/frameworks/rust.js +222 -0
  138. package/dist/resolution/frameworks/rust.js.map +1 -0
  139. package/dist/resolution/frameworks/swift.d.ts +10 -0
  140. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  141. package/dist/resolution/frameworks/swift.js +486 -0
  142. package/dist/resolution/frameworks/swift.js.map +1 -0
  143. package/dist/resolution/import-resolver.d.ts +20 -0
  144. package/dist/resolution/import-resolver.d.ts.map +1 -0
  145. package/dist/resolution/import-resolver.js +445 -0
  146. package/dist/resolution/import-resolver.js.map +1 -0
  147. package/dist/resolution/index.d.ts +72 -0
  148. package/dist/resolution/index.d.ts.map +1 -0
  149. package/dist/resolution/index.js +301 -0
  150. package/dist/resolution/index.js.map +1 -0
  151. package/dist/resolution/name-matcher.d.ts +27 -0
  152. package/dist/resolution/name-matcher.d.ts.map +1 -0
  153. package/dist/resolution/name-matcher.js +210 -0
  154. package/dist/resolution/name-matcher.js.map +1 -0
  155. package/dist/resolution/types.d.ts +108 -0
  156. package/dist/resolution/types.d.ts.map +1 -0
  157. package/dist/resolution/types.js +8 -0
  158. package/dist/resolution/types.js.map +1 -0
  159. package/dist/sync/git-hooks.d.ts +66 -0
  160. package/dist/sync/git-hooks.d.ts.map +1 -0
  161. package/dist/sync/git-hooks.js +281 -0
  162. package/dist/sync/git-hooks.js.map +1 -0
  163. package/dist/sync/index.d.ts +13 -0
  164. package/dist/sync/index.d.ts.map +1 -0
  165. package/dist/sync/index.js +18 -0
  166. package/dist/sync/index.js.map +1 -0
  167. package/dist/types.d.ts +410 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/types.js +165 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/utils.d.ts +116 -0
  172. package/dist/utils.d.ts.map +1 -0
  173. package/dist/utils.js +295 -0
  174. package/dist/utils.js.map +1 -0
  175. package/dist/vectors/embedder.d.ts +140 -0
  176. package/dist/vectors/embedder.d.ts.map +1 -0
  177. package/dist/vectors/embedder.js +336 -0
  178. package/dist/vectors/embedder.js.map +1 -0
  179. package/dist/vectors/index.d.ts +9 -0
  180. package/dist/vectors/index.d.ts.map +1 -0
  181. package/dist/vectors/index.js +20 -0
  182. package/dist/vectors/index.js.map +1 -0
  183. package/dist/vectors/manager.d.ts +119 -0
  184. package/dist/vectors/manager.d.ts.map +1 -0
  185. package/dist/vectors/manager.js +274 -0
  186. package/dist/vectors/manager.js.map +1 -0
  187. package/dist/vectors/search.d.ts +134 -0
  188. package/dist/vectors/search.d.ts.map +1 -0
  189. package/dist/vectors/search.js +409 -0
  190. package/dist/vectors/search.js.map +1 -0
  191. package/package.json +67 -0
  192. 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"}