@saluzi/codegraph 0.1.0 → 0.2.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 (246) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +885 -0
  3. package/package.json +42 -10
  4. package/scripts/add-lang/bench.sh +60 -0
  5. package/scripts/add-lang/check-grammar.mjs +75 -0
  6. package/scripts/add-lang/dump-ast.mjs +103 -0
  7. package/scripts/add-lang/verify-extraction.mjs +70 -0
  8. package/scripts/agent-eval/ab-adoption.sh +91 -0
  9. package/scripts/agent-eval/ab-hook.sh +86 -0
  10. package/scripts/agent-eval/ab-impl.sh +78 -0
  11. package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -0
  12. package/scripts/agent-eval/ab-sufficiency.sh +78 -0
  13. package/scripts/agent-eval/arms-F.sh +21 -0
  14. package/scripts/agent-eval/arms-matrix.sh +37 -0
  15. package/scripts/agent-eval/audit.sh +68 -0
  16. package/scripts/agent-eval/bench-readme.sh +28 -0
  17. package/scripts/agent-eval/bench-why-repo.sh +22 -0
  18. package/scripts/agent-eval/block-read-hook.sh +19 -0
  19. package/scripts/agent-eval/hook-settings.json +15 -0
  20. package/scripts/agent-eval/itrun.sh +120 -0
  21. package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
  22. package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
  23. package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
  24. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
  25. package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
  26. package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
  27. package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
  28. package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
  29. package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
  30. package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
  31. package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
  32. package/scripts/agent-eval/offload-eval-setup.sh +24 -0
  33. package/scripts/agent-eval/offload-eval-styles.sh +72 -0
  34. package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
  35. package/scripts/agent-eval/offload-eval.md +76 -0
  36. package/scripts/agent-eval/parse-arms.mjs +116 -0
  37. package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
  38. package/scripts/agent-eval/parse-run.mjs +45 -0
  39. package/scripts/agent-eval/parse-session.mjs +93 -0
  40. package/scripts/agent-eval/probe-context.mjs +21 -0
  41. package/scripts/agent-eval/probe-explore.mjs +40 -0
  42. package/scripts/agent-eval/probe-node.mjs +20 -0
  43. package/scripts/agent-eval/probe-sweep.mjs +119 -0
  44. package/scripts/agent-eval/probe-trace.mjs +20 -0
  45. package/scripts/agent-eval/redirect-read-hook.sh +38 -0
  46. package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -0
  47. package/scripts/agent-eval/repro-daemon-clients.mjs +125 -0
  48. package/scripts/agent-eval/run-agent.sh +34 -0
  49. package/scripts/agent-eval/run-all.sh +75 -0
  50. package/scripts/agent-eval/run-arms.sh +56 -0
  51. package/scripts/agent-eval/seq-matrix.mjs +137 -0
  52. package/scripts/build-bundle.sh +123 -0
  53. package/scripts/extract-release-notes.mjs +130 -0
  54. package/scripts/local-install.sh +41 -0
  55. package/scripts/npm-sdk.js +75 -0
  56. package/scripts/npm-shim.js +275 -0
  57. package/scripts/pack-npm.sh +119 -0
  58. package/scripts/prepare-release.mjs +270 -0
  59. package/dist/bin/codegraph.d.ts +0 -25
  60. package/dist/bin/node-version-check.d.ts +0 -37
  61. package/dist/bin/uninstall.d.ts +0 -14
  62. package/dist/context/formatter.d.ts +0 -33
  63. package/dist/context/formatter.js +0 -244
  64. package/dist/context/index.d.ts +0 -117
  65. package/dist/context/index.js +0 -1050
  66. package/dist/db/index.d.ts +0 -101
  67. package/dist/db/index.js +0 -250
  68. package/dist/db/migrations.d.ts +0 -47
  69. package/dist/db/migrations.js +0 -131
  70. package/dist/db/queries.d.ts +0 -291
  71. package/dist/db/queries.js +0 -1349
  72. package/dist/db/schema.sql +0 -151
  73. package/dist/db/sqlite-adapter.d.ts +0 -49
  74. package/dist/db/sqlite-adapter.js +0 -141
  75. package/dist/directory.d.ts +0 -62
  76. package/dist/directory.js +0 -264
  77. package/dist/errors.d.ts +0 -149
  78. package/dist/errors.js +0 -219
  79. package/dist/extraction/dfm-extractor.d.ts +0 -31
  80. package/dist/extraction/dfm-extractor.js +0 -151
  81. package/dist/extraction/grammars.d.ts +0 -94
  82. package/dist/extraction/grammars.js +0 -357
  83. package/dist/extraction/index.d.ts +0 -148
  84. package/dist/extraction/index.js +0 -1286
  85. package/dist/extraction/languages/c-cpp.d.ts +0 -4
  86. package/dist/extraction/languages/c-cpp.js +0 -126
  87. package/dist/extraction/languages/csharp.d.ts +0 -3
  88. package/dist/extraction/languages/csharp.js +0 -72
  89. package/dist/extraction/languages/dart.d.ts +0 -3
  90. package/dist/extraction/languages/dart.js +0 -192
  91. package/dist/extraction/languages/go.d.ts +0 -3
  92. package/dist/extraction/languages/go.js +0 -58
  93. package/dist/extraction/languages/index.d.ts +0 -10
  94. package/dist/extraction/languages/index.js +0 -49
  95. package/dist/extraction/languages/java.d.ts +0 -3
  96. package/dist/extraction/languages/java.js +0 -64
  97. package/dist/extraction/languages/javascript.d.ts +0 -3
  98. package/dist/extraction/languages/javascript.js +0 -90
  99. package/dist/extraction/languages/kotlin.d.ts +0 -3
  100. package/dist/extraction/languages/kotlin.js +0 -253
  101. package/dist/extraction/languages/lua.d.ts +0 -3
  102. package/dist/extraction/languages/lua.js +0 -150
  103. package/dist/extraction/languages/luau.d.ts +0 -3
  104. package/dist/extraction/languages/luau.js +0 -37
  105. package/dist/extraction/languages/pascal.d.ts +0 -3
  106. package/dist/extraction/languages/pascal.js +0 -66
  107. package/dist/extraction/languages/php.d.ts +0 -3
  108. package/dist/extraction/languages/php.js +0 -107
  109. package/dist/extraction/languages/python.d.ts +0 -3
  110. package/dist/extraction/languages/python.js +0 -56
  111. package/dist/extraction/languages/ruby.d.ts +0 -3
  112. package/dist/extraction/languages/ruby.js +0 -114
  113. package/dist/extraction/languages/rust.d.ts +0 -3
  114. package/dist/extraction/languages/rust.js +0 -109
  115. package/dist/extraction/languages/scala.d.ts +0 -3
  116. package/dist/extraction/languages/scala.js +0 -139
  117. package/dist/extraction/languages/swift.d.ts +0 -3
  118. package/dist/extraction/languages/swift.js +0 -91
  119. package/dist/extraction/languages/typescript.d.ts +0 -3
  120. package/dist/extraction/languages/typescript.js +0 -129
  121. package/dist/extraction/liquid-extractor.d.ts +0 -52
  122. package/dist/extraction/liquid-extractor.js +0 -313
  123. package/dist/extraction/parse-worker.d.ts +0 -8
  124. package/dist/extraction/parse-worker.js +0 -94
  125. package/dist/extraction/svelte-extractor.d.ts +0 -56
  126. package/dist/extraction/svelte-extractor.js +0 -272
  127. package/dist/extraction/tree-sitter-helpers.d.ts +0 -39
  128. package/dist/extraction/tree-sitter-helpers.js +0 -103
  129. package/dist/extraction/tree-sitter-types.d.ts +0 -191
  130. package/dist/extraction/tree-sitter-types.js +0 -10
  131. package/dist/extraction/tree-sitter.d.ts +0 -238
  132. package/dist/extraction/tree-sitter.js +0 -2430
  133. package/dist/extraction/vue-extractor.d.ts +0 -36
  134. package/dist/extraction/vue-extractor.js +0 -163
  135. package/dist/extraction/wasm/tree-sitter-c.wasm +0 -0
  136. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  137. package/dist/extraction/wasm/tree-sitter-cpp.wasm +0 -0
  138. package/dist/extraction/wasm/tree-sitter-dart.wasm +0 -0
  139. package/dist/extraction/wasm/tree-sitter-go.wasm +0 -0
  140. package/dist/extraction/wasm/tree-sitter-java.wasm +0 -0
  141. package/dist/extraction/wasm/tree-sitter-javascript.wasm +0 -0
  142. package/dist/extraction/wasm/tree-sitter-kotlin.wasm +0 -0
  143. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  144. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  145. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  146. package/dist/extraction/wasm/tree-sitter-php.wasm +0 -0
  147. package/dist/extraction/wasm/tree-sitter-python.wasm +0 -0
  148. package/dist/extraction/wasm/tree-sitter-ruby.wasm +0 -0
  149. package/dist/extraction/wasm/tree-sitter-rust.wasm +0 -0
  150. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  151. package/dist/extraction/wasm/tree-sitter-swift.wasm +0 -0
  152. package/dist/extraction/wasm/tree-sitter-tsx.wasm +0 -0
  153. package/dist/extraction/wasm/tree-sitter-typescript.wasm +0 -0
  154. package/dist/extraction/wasm-runtime-flags.d.ts +0 -46
  155. package/dist/extraction/wasm-runtime-flags.js +0 -105
  156. package/dist/graph/index.d.ts +0 -8
  157. package/dist/graph/index.js +0 -13
  158. package/dist/graph/queries.d.ts +0 -109
  159. package/dist/graph/queries.js +0 -366
  160. package/dist/graph/traversal.d.ts +0 -137
  161. package/dist/graph/traversal.js +0 -528
  162. package/dist/index.d.ts +0 -509
  163. package/dist/index.js +0 -800
  164. package/dist/installer/claude-md-template.d.ts +0 -19
  165. package/dist/installer/config-writer.d.ts +0 -29
  166. package/dist/installer/index.d.ts +0 -140
  167. package/dist/installer/instructions-template.d.ts +0 -30
  168. package/dist/installer/targets/claude.d.ts +0 -55
  169. package/dist/installer/targets/codex.d.ts +0 -18
  170. package/dist/installer/targets/cursor.d.ts +0 -35
  171. package/dist/installer/targets/hermes.d.ts +0 -18
  172. package/dist/installer/targets/opencode.d.ts +0 -30
  173. package/dist/installer/targets/registry.d.ts +0 -38
  174. package/dist/installer/targets/shared.d.ts +0 -92
  175. package/dist/installer/targets/toml.d.ts +0 -64
  176. package/dist/installer/targets/types.d.ts +0 -122
  177. package/dist/mcp/index.d.ts +0 -98
  178. package/dist/mcp/server-instructions.d.ts +0 -20
  179. package/dist/mcp/tools.d.ts +0 -269
  180. package/dist/mcp/transport.d.ts +0 -117
  181. package/dist/resolution/frameworks/cargo-workspace.d.ts +0 -20
  182. package/dist/resolution/frameworks/cargo-workspace.js +0 -225
  183. package/dist/resolution/frameworks/csharp.d.ts +0 -8
  184. package/dist/resolution/frameworks/csharp.js +0 -213
  185. package/dist/resolution/frameworks/drupal.d.ts +0 -51
  186. package/dist/resolution/frameworks/drupal.js +0 -335
  187. package/dist/resolution/frameworks/express.d.ts +0 -8
  188. package/dist/resolution/frameworks/express.js +0 -225
  189. package/dist/resolution/frameworks/go.d.ts +0 -8
  190. package/dist/resolution/frameworks/go.js +0 -158
  191. package/dist/resolution/frameworks/index.d.ts +0 -52
  192. package/dist/resolution/frameworks/index.js +0 -137
  193. package/dist/resolution/frameworks/java.d.ts +0 -8
  194. package/dist/resolution/frameworks/java.js +0 -177
  195. package/dist/resolution/frameworks/laravel.d.ts +0 -13
  196. package/dist/resolution/frameworks/laravel.js +0 -248
  197. package/dist/resolution/frameworks/nestjs.d.ts +0 -26
  198. package/dist/resolution/frameworks/nestjs.js +0 -374
  199. package/dist/resolution/frameworks/python.d.ts +0 -10
  200. package/dist/resolution/frameworks/python.js +0 -278
  201. package/dist/resolution/frameworks/react.d.ts +0 -8
  202. package/dist/resolution/frameworks/react.js +0 -272
  203. package/dist/resolution/frameworks/ruby.d.ts +0 -8
  204. package/dist/resolution/frameworks/ruby.js +0 -198
  205. package/dist/resolution/frameworks/rust.d.ts +0 -8
  206. package/dist/resolution/frameworks/rust.js +0 -207
  207. package/dist/resolution/frameworks/svelte.d.ts +0 -9
  208. package/dist/resolution/frameworks/svelte.js +0 -249
  209. package/dist/resolution/frameworks/swift.d.ts +0 -10
  210. package/dist/resolution/frameworks/swift.js +0 -376
  211. package/dist/resolution/frameworks/vue.d.ts +0 -9
  212. package/dist/resolution/frameworks/vue.js +0 -306
  213. package/dist/resolution/import-resolver.d.ts +0 -61
  214. package/dist/resolution/import-resolver.js +0 -663
  215. package/dist/resolution/index.d.ts +0 -118
  216. package/dist/resolution/index.js +0 -744
  217. package/dist/resolution/lru-cache.d.ts +0 -24
  218. package/dist/resolution/lru-cache.js +0 -62
  219. package/dist/resolution/name-matcher.d.ts +0 -50
  220. package/dist/resolution/name-matcher.js +0 -384
  221. package/dist/resolution/path-aliases.d.ts +0 -72
  222. package/dist/resolution/path-aliases.js +0 -238
  223. package/dist/resolution/strip-comments.d.ts +0 -40
  224. package/dist/resolution/strip-comments.js +0 -441
  225. package/dist/resolution/types.d.ts +0 -181
  226. package/dist/resolution/types.js +0 -8
  227. package/dist/search/query-parser.d.ts +0 -61
  228. package/dist/search/query-parser.js +0 -177
  229. package/dist/search/query-utils.d.ts +0 -59
  230. package/dist/search/query-utils.js +0 -383
  231. package/dist/sync/git-hooks.d.ts +0 -54
  232. package/dist/sync/git-hooks.js +0 -223
  233. package/dist/sync/index.d.ts +0 -25
  234. package/dist/sync/index.js +0 -28
  235. package/dist/sync/watch-policy.d.ts +0 -51
  236. package/dist/sync/watch-policy.js +0 -124
  237. package/dist/sync/watcher.d.ts +0 -83
  238. package/dist/sync/watcher.js +0 -192
  239. package/dist/types.d.ts +0 -433
  240. package/dist/types.js +0 -75
  241. package/dist/ui/glyphs.d.ts +0 -42
  242. package/dist/ui/shimmer-progress.d.ts +0 -11
  243. package/dist/ui/shimmer-worker.d.ts +0 -2
  244. package/dist/ui/types.d.ts +0 -20
  245. package/dist/utils.d.ts +0 -231
  246. package/dist/utils.js +0 -549
@@ -1,158 +0,0 @@
1
- "use strict";
2
- /**
3
- * Go Framework Resolver
4
- *
5
- * Handles Gin, Echo, Fiber, Chi, and standard library patterns.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.goResolver = void 0;
9
- const strip_comments_1 = require("../strip-comments");
10
- exports.goResolver = {
11
- name: 'go',
12
- languages: ['go'],
13
- detect(context) {
14
- // Check for go.mod file (Go modules)
15
- const goMod = context.readFile('go.mod');
16
- if (goMod) {
17
- return true;
18
- }
19
- // Check for .go files
20
- const allFiles = context.getAllFiles();
21
- return allFiles.some((f) => f.endsWith('.go'));
22
- },
23
- resolve(ref, context) {
24
- // Pattern 1: Handler references
25
- if (ref.referenceName.endsWith('Handler') || ref.referenceName.startsWith('Handle')) {
26
- const result = resolveByNameAndKind(ref.referenceName, 'function', HANDLER_DIRS, context);
27
- if (result) {
28
- return {
29
- original: ref,
30
- targetNodeId: result,
31
- confidence: 0.8,
32
- resolvedBy: 'framework',
33
- };
34
- }
35
- }
36
- // Pattern 2: Service/Repository references
37
- if (ref.referenceName.endsWith('Service') || ref.referenceName.endsWith('Repository') || ref.referenceName.endsWith('Store')) {
38
- const result = resolveByNameAndKind(ref.referenceName, null, SERVICE_DIRS, context, SERVICE_KINDS);
39
- if (result) {
40
- return {
41
- original: ref,
42
- targetNodeId: result,
43
- confidence: 0.8,
44
- resolvedBy: 'framework',
45
- };
46
- }
47
- }
48
- // Pattern 3: Middleware references
49
- if (ref.referenceName.endsWith('Middleware') || ref.referenceName.startsWith('Auth') || ref.referenceName.startsWith('Log')) {
50
- const result = resolveByNameAndKind(ref.referenceName, 'function', MIDDLEWARE_DIRS, context);
51
- if (result) {
52
- return {
53
- original: ref,
54
- targetNodeId: result,
55
- confidence: 0.75,
56
- resolvedBy: 'framework',
57
- };
58
- }
59
- }
60
- // Pattern 4: Model/Entity references (typically PascalCase structs)
61
- if (/^[A-Z][a-zA-Z]+$/.test(ref.referenceName)) {
62
- const result = resolveByNameAndKind(ref.referenceName, 'struct', MODEL_DIRS, context);
63
- if (result) {
64
- return {
65
- original: ref,
66
- targetNodeId: result,
67
- confidence: 0.7,
68
- resolvedBy: 'framework',
69
- };
70
- }
71
- }
72
- return null;
73
- },
74
- extract(filePath, content) {
75
- if (!filePath.endsWith('.go'))
76
- return { nodes: [], references: [] };
77
- const nodes = [];
78
- const references = [];
79
- const now = Date.now();
80
- const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'go');
81
- // (router|r|mux|app).METHOD("/path", handler)
82
- // Handles Gin (GET/POST/...), Chi (Get/Post/...), net/http (HandleFunc/Handle).
83
- const routeRegex = /\b(?:router|r|mux|app|e)\.(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD|Get|Post|Put|Patch|Delete|Handle|HandleFunc)\s*\(\s*"([^"]+)"\s*,\s*([^)]+)\)/g;
84
- let match;
85
- while ((match = routeRegex.exec(safe)) !== null) {
86
- const [, rawMethod, routePath, handlerExpr] = match;
87
- const line = safe.slice(0, match.index).split('\n').length;
88
- const method = rawMethod === 'Handle' || rawMethod === 'HandleFunc'
89
- ? 'ANY'
90
- : rawMethod.toUpperCase();
91
- const routeNode = {
92
- id: `route:${filePath}:${line}:${method}:${routePath}`,
93
- kind: 'route',
94
- name: `${method} ${routePath}`,
95
- qualifiedName: `${filePath}::route:${routePath}`,
96
- filePath,
97
- startLine: line,
98
- endLine: line,
99
- startColumn: 0,
100
- endColumn: match[0].length,
101
- language: 'go',
102
- updatedAt: now,
103
- };
104
- nodes.push(routeNode);
105
- const handlerName = extractGoTailIdent(handlerExpr);
106
- if (handlerName) {
107
- references.push({
108
- fromNodeId: routeNode.id,
109
- referenceName: handlerName,
110
- referenceKind: 'references',
111
- line,
112
- column: 0,
113
- filePath,
114
- language: 'go',
115
- });
116
- }
117
- }
118
- return { nodes, references };
119
- },
120
- };
121
- /** Extract the last identifier from an expression like `pkg.Sub.handler` or `handler`. */
122
- function extractGoTailIdent(expr) {
123
- const cleaned = expr.trim().replace(/\s+/g, '').replace(/\(\)$/, '');
124
- const m = cleaned.match(/(?:\.|^)([A-Za-z_][A-Za-z0-9_]*)$/);
125
- return m ? m[1] : null;
126
- }
127
- // Directory patterns for framework resolution
128
- const HANDLER_DIRS = ['handler', 'handlers', 'api', 'routes', 'controller', 'controllers'];
129
- const SERVICE_DIRS = ['service', 'services', 'repository', 'store', 'pkg'];
130
- const MIDDLEWARE_DIRS = ['middleware', 'middlewares'];
131
- const MODEL_DIRS = ['model', 'models', 'entity', 'entities', 'domain', 'pkg'];
132
- const SERVICE_KINDS = new Set(['struct', 'interface']);
133
- /**
134
- * Resolve a symbol by name using indexed queries instead of scanning all files.
135
- * Uses getNodesByName (O(log n) indexed lookup) instead of iterating every file.
136
- */
137
- function resolveByNameAndKind(name, kind, preferredDirs, context, kinds) {
138
- const candidates = context.getNodesByName(name);
139
- if (candidates.length === 0)
140
- return null;
141
- // Filter by kind
142
- const kindFiltered = candidates.filter((n) => {
143
- if (kinds)
144
- return kinds.has(n.kind);
145
- if (kind)
146
- return n.kind === kind;
147
- return true;
148
- });
149
- if (kindFiltered.length === 0)
150
- return null;
151
- // Prefer candidates in framework-conventional directories
152
- const preferred = kindFiltered.filter((n) => preferredDirs.some((d) => n.filePath.includes(`/${d}/`)));
153
- if (preferred.length > 0)
154
- return preferred[0].id;
155
- // Fall back to any match
156
- return kindFiltered[0].id;
157
- }
158
- //# sourceMappingURL=go.js.map
@@ -1,52 +0,0 @@
1
- /**
2
- * Framework Resolver Registry
3
- *
4
- * Manages framework-specific resolvers.
5
- */
6
- import { FrameworkResolver, ResolutionContext } from '../types'
7
- import type { Language } from '../../types'
8
- /**
9
- * Get all framework resolvers
10
- */
11
- export declare function getAllFrameworkResolvers(): FrameworkResolver[]
12
- /**
13
- * Get a resolver by name
14
- */
15
- export declare function getFrameworkResolver(
16
- name: string,
17
- ): FrameworkResolver | undefined
18
- /**
19
- * Detect which frameworks are used in a project
20
- */
21
- export declare function detectFrameworks(
22
- context: ResolutionContext,
23
- ): FrameworkResolver[]
24
- /**
25
- * Filter a list of detected frameworks down to ones that apply to a given language.
26
- * Frameworks without an explicit `languages` list are treated as universal.
27
- */
28
- export declare function getApplicableFrameworks(
29
- detected: FrameworkResolver[],
30
- language: Language,
31
- ): FrameworkResolver[]
32
- /**
33
- * Register a custom framework resolver
34
- */
35
- export declare function registerFrameworkResolver(
36
- resolver: FrameworkResolver,
37
- ): void
38
- export { drupalResolver } from './drupal'
39
- export { laravelResolver, FACADE_MAPPINGS } from './laravel'
40
- export { expressResolver } from './express'
41
- export { nestjsResolver } from './nestjs'
42
- export { reactResolver } from './react'
43
- export { svelteResolver } from './svelte'
44
- export { vueResolver } from './vue'
45
- export { djangoResolver, flaskResolver, fastapiResolver } from './python'
46
- export { railsResolver } from './ruby'
47
- export { springResolver } from './java'
48
- export { goResolver } from './go'
49
- export { rustResolver } from './rust'
50
- export { aspnetResolver } from './csharp'
51
- export { swiftUIResolver, uikitResolver, vaporResolver } from './swift'
52
- //# sourceMappingURL=index.d.ts.map
@@ -1,137 +0,0 @@
1
- "use strict";
2
- /**
3
- * Framework Resolver Registry
4
- *
5
- * Manages framework-specific resolvers.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.vaporResolver = exports.uikitResolver = exports.swiftUIResolver = exports.aspnetResolver = exports.rustResolver = exports.goResolver = exports.springResolver = exports.railsResolver = exports.fastapiResolver = exports.flaskResolver = exports.djangoResolver = exports.vueResolver = exports.svelteResolver = exports.reactResolver = exports.nestjsResolver = exports.expressResolver = exports.FACADE_MAPPINGS = exports.laravelResolver = exports.drupalResolver = void 0;
9
- exports.getAllFrameworkResolvers = getAllFrameworkResolvers;
10
- exports.getFrameworkResolver = getFrameworkResolver;
11
- exports.detectFrameworks = detectFrameworks;
12
- exports.getApplicableFrameworks = getApplicableFrameworks;
13
- exports.registerFrameworkResolver = registerFrameworkResolver;
14
- const drupal_1 = require("./drupal");
15
- const laravel_1 = require("./laravel");
16
- const express_1 = require("./express");
17
- const nestjs_1 = require("./nestjs");
18
- const react_1 = require("./react");
19
- const svelte_1 = require("./svelte");
20
- const vue_1 = require("./vue");
21
- const python_1 = require("./python");
22
- const ruby_1 = require("./ruby");
23
- const java_1 = require("./java");
24
- const go_1 = require("./go");
25
- const rust_1 = require("./rust");
26
- const csharp_1 = require("./csharp");
27
- const swift_1 = require("./swift");
28
- /**
29
- * All registered framework resolvers
30
- */
31
- const FRAMEWORK_RESOLVERS = [
32
- // PHP
33
- laravel_1.laravelResolver,
34
- drupal_1.drupalResolver,
35
- // JavaScript/TypeScript
36
- express_1.expressResolver,
37
- nestjs_1.nestjsResolver,
38
- react_1.reactResolver,
39
- svelte_1.svelteResolver,
40
- vue_1.vueResolver,
41
- // Python
42
- python_1.djangoResolver,
43
- python_1.flaskResolver,
44
- python_1.fastapiResolver,
45
- // Ruby
46
- ruby_1.railsResolver,
47
- // Java
48
- java_1.springResolver,
49
- // Go
50
- go_1.goResolver,
51
- // Rust
52
- rust_1.rustResolver,
53
- // C#
54
- csharp_1.aspnetResolver,
55
- // Swift
56
- swift_1.swiftUIResolver,
57
- swift_1.uikitResolver,
58
- swift_1.vaporResolver,
59
- ];
60
- /**
61
- * Get all framework resolvers
62
- */
63
- function getAllFrameworkResolvers() {
64
- return FRAMEWORK_RESOLVERS;
65
- }
66
- /**
67
- * Get a resolver by name
68
- */
69
- function getFrameworkResolver(name) {
70
- return FRAMEWORK_RESOLVERS.find((r) => r.name === name);
71
- }
72
- /**
73
- * Detect which frameworks are used in a project
74
- */
75
- function detectFrameworks(context) {
76
- return FRAMEWORK_RESOLVERS.filter((resolver) => {
77
- try {
78
- return resolver.detect(context);
79
- }
80
- catch {
81
- return false;
82
- }
83
- });
84
- }
85
- /**
86
- * Filter a list of detected frameworks down to ones that apply to a given language.
87
- * Frameworks without an explicit `languages` list are treated as universal.
88
- */
89
- function getApplicableFrameworks(detected, language) {
90
- return detected.filter((fw) => !fw.languages || fw.languages.includes(language));
91
- }
92
- /**
93
- * Register a custom framework resolver
94
- */
95
- function registerFrameworkResolver(resolver) {
96
- // Remove existing resolver with same name
97
- const index = FRAMEWORK_RESOLVERS.findIndex((r) => r.name === resolver.name);
98
- if (index !== -1) {
99
- FRAMEWORK_RESOLVERS.splice(index, 1);
100
- }
101
- FRAMEWORK_RESOLVERS.push(resolver);
102
- }
103
- // Re-export framework resolvers
104
- var drupal_2 = require("./drupal");
105
- Object.defineProperty(exports, "drupalResolver", { enumerable: true, get: function () { return drupal_2.drupalResolver; } });
106
- var laravel_2 = require("./laravel");
107
- Object.defineProperty(exports, "laravelResolver", { enumerable: true, get: function () { return laravel_2.laravelResolver; } });
108
- Object.defineProperty(exports, "FACADE_MAPPINGS", { enumerable: true, get: function () { return laravel_2.FACADE_MAPPINGS; } });
109
- var express_2 = require("./express");
110
- Object.defineProperty(exports, "expressResolver", { enumerable: true, get: function () { return express_2.expressResolver; } });
111
- var nestjs_2 = require("./nestjs");
112
- Object.defineProperty(exports, "nestjsResolver", { enumerable: true, get: function () { return nestjs_2.nestjsResolver; } });
113
- var react_2 = require("./react");
114
- Object.defineProperty(exports, "reactResolver", { enumerable: true, get: function () { return react_2.reactResolver; } });
115
- var svelte_2 = require("./svelte");
116
- Object.defineProperty(exports, "svelteResolver", { enumerable: true, get: function () { return svelte_2.svelteResolver; } });
117
- var vue_2 = require("./vue");
118
- Object.defineProperty(exports, "vueResolver", { enumerable: true, get: function () { return vue_2.vueResolver; } });
119
- var python_2 = require("./python");
120
- Object.defineProperty(exports, "djangoResolver", { enumerable: true, get: function () { return python_2.djangoResolver; } });
121
- Object.defineProperty(exports, "flaskResolver", { enumerable: true, get: function () { return python_2.flaskResolver; } });
122
- Object.defineProperty(exports, "fastapiResolver", { enumerable: true, get: function () { return python_2.fastapiResolver; } });
123
- var ruby_2 = require("./ruby");
124
- Object.defineProperty(exports, "railsResolver", { enumerable: true, get: function () { return ruby_2.railsResolver; } });
125
- var java_2 = require("./java");
126
- Object.defineProperty(exports, "springResolver", { enumerable: true, get: function () { return java_2.springResolver; } });
127
- var go_2 = require("./go");
128
- Object.defineProperty(exports, "goResolver", { enumerable: true, get: function () { return go_2.goResolver; } });
129
- var rust_2 = require("./rust");
130
- Object.defineProperty(exports, "rustResolver", { enumerable: true, get: function () { return rust_2.rustResolver; } });
131
- var csharp_2 = require("./csharp");
132
- Object.defineProperty(exports, "aspnetResolver", { enumerable: true, get: function () { return csharp_2.aspnetResolver; } });
133
- var swift_2 = require("./swift");
134
- Object.defineProperty(exports, "swiftUIResolver", { enumerable: true, get: function () { return swift_2.swiftUIResolver; } });
135
- Object.defineProperty(exports, "uikitResolver", { enumerable: true, get: function () { return swift_2.uikitResolver; } });
136
- Object.defineProperty(exports, "vaporResolver", { enumerable: true, get: function () { return swift_2.vaporResolver; } });
137
- //# sourceMappingURL=index.js.map
@@ -1,8 +0,0 @@
1
- /**
2
- * Java Framework Resolver
3
- *
4
- * Handles Spring Boot and general Java patterns.
5
- */
6
- import { FrameworkResolver } from '../types'
7
- export declare const springResolver: FrameworkResolver
8
- //# sourceMappingURL=java.d.ts.map
@@ -1,177 +0,0 @@
1
- "use strict";
2
- /**
3
- * Java Framework Resolver
4
- *
5
- * Handles Spring Boot and general Java patterns.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.springResolver = void 0;
9
- const strip_comments_1 = require("../strip-comments");
10
- exports.springResolver = {
11
- name: 'spring',
12
- languages: ['java'],
13
- detect(context) {
14
- // Check for pom.xml with Spring
15
- const pomXml = context.readFile('pom.xml');
16
- if (pomXml && (pomXml.includes('spring-boot') || pomXml.includes('springframework'))) {
17
- return true;
18
- }
19
- // Check for build.gradle with Spring
20
- const buildGradle = context.readFile('build.gradle');
21
- if (buildGradle && (buildGradle.includes('spring-boot') || buildGradle.includes('springframework'))) {
22
- return true;
23
- }
24
- const buildGradleKts = context.readFile('build.gradle.kts');
25
- if (buildGradleKts && (buildGradleKts.includes('spring-boot') || buildGradleKts.includes('springframework'))) {
26
- return true;
27
- }
28
- // Check for Spring annotations in Java files
29
- const allFiles = context.getAllFiles();
30
- for (const file of allFiles) {
31
- if (file.endsWith('.java')) {
32
- const content = context.readFile(file);
33
- if (content && (content.includes('@SpringBootApplication') ||
34
- content.includes('@RestController') ||
35
- content.includes('@Service') ||
36
- content.includes('@Repository'))) {
37
- return true;
38
- }
39
- }
40
- }
41
- return false;
42
- },
43
- resolve(ref, context) {
44
- // Pattern 1: Service references (dependency injection)
45
- if (ref.referenceName.endsWith('Service')) {
46
- const result = resolveByNameAndKind(ref.referenceName, SERVICE_KINDS, SERVICE_DIRS, context);
47
- if (result) {
48
- return {
49
- original: ref,
50
- targetNodeId: result,
51
- confidence: 0.85,
52
- resolvedBy: 'framework',
53
- };
54
- }
55
- }
56
- // Pattern 2: Repository references
57
- if (ref.referenceName.endsWith('Repository')) {
58
- const result = resolveByNameAndKind(ref.referenceName, SERVICE_KINDS, REPO_DIRS, context);
59
- if (result) {
60
- return {
61
- original: ref,
62
- targetNodeId: result,
63
- confidence: 0.85,
64
- resolvedBy: 'framework',
65
- };
66
- }
67
- }
68
- // Pattern 3: Controller references
69
- if (ref.referenceName.endsWith('Controller')) {
70
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, CONTROLLER_DIRS, context);
71
- if (result) {
72
- return {
73
- original: ref,
74
- targetNodeId: result,
75
- confidence: 0.85,
76
- resolvedBy: 'framework',
77
- };
78
- }
79
- }
80
- // Pattern 4: Entity/Model references
81
- if (/^[A-Z][a-zA-Z]+$/.test(ref.referenceName)) {
82
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, ENTITY_DIRS, context);
83
- if (result) {
84
- return {
85
- original: ref,
86
- targetNodeId: result,
87
- confidence: 0.7,
88
- resolvedBy: 'framework',
89
- };
90
- }
91
- }
92
- // Pattern 5: Component references
93
- if (ref.referenceName.endsWith('Component') || ref.referenceName.endsWith('Config')) {
94
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, COMPONENT_DIRS, context);
95
- if (result) {
96
- return {
97
- original: ref,
98
- targetNodeId: result,
99
- confidence: 0.8,
100
- resolvedBy: 'framework',
101
- };
102
- }
103
- }
104
- return null;
105
- },
106
- extract(filePath, content) {
107
- if (!filePath.endsWith('.java'))
108
- return { nodes: [], references: [] };
109
- const nodes = [];
110
- const references = [];
111
- const now = Date.now();
112
- const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'java');
113
- // @GetMapping("/path"), @PostMapping(value = "/path"), @RequestMapping("/path")
114
- const mappingRegex = /@(GetMapping|PostMapping|PutMapping|PatchMapping|DeleteMapping|RequestMapping)\s*\(\s*(?:value\s*=\s*|path\s*=\s*)?["']([^"']+)["'][^)]*\)/g;
115
- let match;
116
- while ((match = mappingRegex.exec(safe)) !== null) {
117
- const [, mappingName, routePath] = match;
118
- const line = safe.slice(0, match.index).split('\n').length;
119
- const method = mappingName === 'RequestMapping' ? 'ANY' : mappingName.replace(/Mapping$/, '').toUpperCase();
120
- const routeNode = {
121
- id: `route:${filePath}:${line}:${method}:${routePath}`,
122
- kind: 'route',
123
- name: `${method} ${routePath}`,
124
- qualifiedName: `${filePath}::route:${routePath}`,
125
- filePath,
126
- startLine: line,
127
- endLine: line,
128
- startColumn: 0,
129
- endColumn: match[0].length,
130
- language: 'java',
131
- updatedAt: now,
132
- };
133
- nodes.push(routeNode);
134
- // Look for the next public/private/protected method after the annotation
135
- const tail = safe.slice(match.index + match[0].length);
136
- const methodMatch = tail.match(/\b(?:public|private|protected)\s+[^;{]*?\s+(\w+)\s*\(/);
137
- if (methodMatch) {
138
- references.push({
139
- fromNodeId: routeNode.id,
140
- referenceName: methodMatch[1],
141
- referenceKind: 'references',
142
- line,
143
- column: 0,
144
- filePath,
145
- language: 'java',
146
- });
147
- }
148
- }
149
- return { nodes, references };
150
- },
151
- };
152
- // Directory patterns
153
- const SERVICE_DIRS = ['/service/', '/services/'];
154
- const REPO_DIRS = ['/repository/', '/repositories/'];
155
- const CONTROLLER_DIRS = ['/controller/', '/controllers/'];
156
- const ENTITY_DIRS = ['/entity/', '/entities/', '/model/', '/models/', '/domain/'];
157
- const COMPONENT_DIRS = ['/component/', '/components/', '/config/'];
158
- const CLASS_KINDS = new Set(['class']);
159
- const SERVICE_KINDS = new Set(['class', 'interface']);
160
- /**
161
- * Resolve a symbol by name using indexed queries instead of scanning all files.
162
- */
163
- function resolveByNameAndKind(name, kinds, preferredDirPatterns, context) {
164
- const candidates = context.getNodesByName(name);
165
- if (candidates.length === 0)
166
- return null;
167
- const kindFiltered = candidates.filter((n) => kinds.has(n.kind));
168
- if (kindFiltered.length === 0)
169
- return null;
170
- // Prefer candidates in framework-conventional directories
171
- const preferred = kindFiltered.filter((n) => preferredDirPatterns.some((d) => n.filePath.includes(d)));
172
- if (preferred.length > 0)
173
- return preferred[0].id;
174
- // Fall back to any match
175
- return kindFiltered[0].id;
176
- }
177
- //# sourceMappingURL=java.js.map
@@ -1,13 +0,0 @@
1
- /**
2
- * Laravel Framework Resolver
3
- *
4
- * Handles Laravel-specific patterns for reference resolution.
5
- */
6
- import { FrameworkResolver } from '../types'
7
- /**
8
- * Laravel facade mappings to underlying classes
9
- * Exported for potential use in facade resolution
10
- */
11
- export declare const FACADE_MAPPINGS: Record<string, string>
12
- export declare const laravelResolver: FrameworkResolver
13
- //# sourceMappingURL=laravel.d.ts.map