codesearch-mcp 0.2.3-alpha → 0.4.0-alpha

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 (317) hide show
  1. package/CHANGELOG.md +88 -5
  2. package/LICENSE +661 -21
  3. package/README.md +76 -40
  4. package/dist/app.js +17 -38
  5. package/dist/src/ast/CallExtractor.d.ts +8 -0
  6. package/dist/src/ast/CallExtractor.js +68 -0
  7. package/dist/src/ast/GraphqlNameExtractor.d.ts +22 -0
  8. package/dist/src/ast/GraphqlNameExtractor.js +240 -0
  9. package/dist/src/ast/ImportEdgeExtractor.d.ts +11 -0
  10. package/dist/src/ast/ImportEdgeExtractor.js +129 -0
  11. package/dist/src/ast/IndexedNodeResolver.d.ts +14 -0
  12. package/dist/src/ast/IndexedNodeResolver.js +217 -0
  13. package/dist/src/ast/MemberExtractor.d.ts +8 -0
  14. package/dist/src/ast/MemberExtractor.js +129 -0
  15. package/dist/src/ast/TopLevelSymbolExtractor.d.ts +5 -0
  16. package/dist/src/ast/TopLevelSymbolExtractor.js +86 -0
  17. package/dist/src/ast/graphql-grammar.d.ts +24 -0
  18. package/dist/src/ast/graphql-grammar.js +93 -0
  19. package/dist/src/ast/node-helpers.d.ts +11 -0
  20. package/dist/src/ast/node-helpers.js +55 -0
  21. package/dist/src/chunking/AstChunker.d.ts +12 -0
  22. package/dist/src/chunking/AstChunker.js +30 -0
  23. package/dist/src/chunking/CharacterChunkStrategy.d.ts +8 -0
  24. package/dist/src/chunking/CharacterChunkStrategy.js +15 -0
  25. package/dist/src/chunking/DeclarationChunkStrategy.d.ts +15 -0
  26. package/dist/src/chunking/DeclarationChunkStrategy.js +87 -0
  27. package/dist/src/chunking/FragmentMerger.d.ts +11 -0
  28. package/dist/src/chunking/FragmentMerger.js +61 -0
  29. package/dist/src/chunking/ImportOnlyFilter.d.ts +5 -0
  30. package/dist/src/chunking/ImportOnlyFilter.js +14 -0
  31. package/dist/src/chunking/LangchainTextSplitter.d.ts +21 -0
  32. package/dist/src/chunking/LangchainTextSplitter.js +133 -0
  33. package/dist/src/chunking/MinSizeSplitPolicy.d.ts +9 -0
  34. package/dist/src/chunking/MinSizeSplitPolicy.js +18 -0
  35. package/dist/src/chunking/RunPacker.d.ts +12 -0
  36. package/dist/src/chunking/RunPacker.js +84 -0
  37. package/dist/src/chunking/create-chunker.d.ts +3 -0
  38. package/dist/src/chunking/create-chunker.js +15 -0
  39. package/dist/src/chunking/interfaces.d.ts +27 -0
  40. package/dist/src/commands/ConfigCommand.js +1 -9
  41. package/dist/src/commands/EvalCommand.d.ts +10 -5
  42. package/dist/src/commands/EvalCommand.js +60 -149
  43. package/dist/src/commands/IndexCommand.d.ts +10 -4
  44. package/dist/src/commands/IndexCommand.js +52 -146
  45. package/dist/src/commands/McpCommand.d.ts +6 -3
  46. package/dist/src/commands/McpCommand.js +19 -20
  47. package/dist/src/commands/WebCommand.d.ts +9 -3
  48. package/dist/src/commands/WebCommand.js +17 -11
  49. package/dist/src/commands/eval/baseline-comparison.d.ts +6 -0
  50. package/dist/src/commands/eval/baseline-comparison.js +54 -0
  51. package/dist/src/commands/eval/eval-args.d.ts +6 -0
  52. package/dist/src/commands/eval/eval-args.js +71 -0
  53. package/dist/src/commands/eval/eval-corpora.d.ts +6 -0
  54. package/dist/src/commands/eval/eval-corpora.js +76 -0
  55. package/dist/src/commands/eval/eval-metadata.d.ts +17 -0
  56. package/dist/src/commands/eval/eval-metadata.js +75 -0
  57. package/dist/src/commands/eval/index-inspector.d.ts +3 -0
  58. package/dist/src/commands/eval/index-inspector.js +21 -0
  59. package/dist/src/commands/eval/staged-search.d.ts +3 -0
  60. package/dist/src/commands/eval/staged-search.js +20 -0
  61. package/dist/src/commands/eval/suite-loader.d.ts +8 -0
  62. package/dist/src/commands/eval/suite-loader.js +52 -0
  63. package/dist/src/commands/index/backend-probe.d.ts +2 -0
  64. package/dist/src/commands/index/backend-probe.js +15 -0
  65. package/dist/src/commands/index/embedding-setup.d.ts +3 -0
  66. package/dist/src/commands/index/embedding-setup.js +16 -0
  67. package/dist/src/commands/index/index-summary.d.ts +2 -0
  68. package/dist/src/commands/index/index-summary.js +22 -0
  69. package/dist/src/commands/index/legacy-ollama-guard.d.ts +3 -0
  70. package/dist/src/commands/index/legacy-ollama-guard.js +23 -0
  71. package/dist/src/commands/index/prune-step.d.ts +3 -0
  72. package/dist/src/commands/index/prune-step.js +22 -0
  73. package/dist/src/commands/index/scan-targets.d.ts +8 -0
  74. package/dist/src/commands/index/scan-targets.js +107 -0
  75. package/dist/src/config-error.d.ts +0 -4
  76. package/dist/src/config-error.js +0 -4
  77. package/dist/src/config-store.d.ts +1 -55
  78. package/dist/src/config-store.js +11 -73
  79. package/dist/src/config.d.ts +9 -18
  80. package/dist/src/config.js +36 -35
  81. package/dist/src/constants.d.ts +17 -28
  82. package/dist/src/constants.js +35 -29
  83. package/dist/src/container.d.ts +10 -2
  84. package/dist/src/container.js +19 -8
  85. package/dist/src/db/drizzle-types.d.ts +7 -0
  86. package/dist/src/db/drizzle-types.js +2 -0
  87. package/dist/src/db/index.d.ts +1 -0
  88. package/dist/src/db/schema-steps.d.ts +8 -0
  89. package/dist/src/db/schema-steps.js +105 -0
  90. package/dist/src/db/schema.d.ts +17 -0
  91. package/dist/src/db/schema.js +1 -6
  92. package/dist/src/declarations/DeclarationTree.d.ts +19 -0
  93. package/dist/src/declarations/DeclarationTree.js +66 -0
  94. package/dist/src/declarations/DeclarationTreeBuilder.d.ts +22 -0
  95. package/dist/src/declarations/DeclarationTreeBuilder.js +179 -0
  96. package/dist/src/declarations/SourceLines.d.ts +37 -0
  97. package/dist/src/declarations/SourceLines.js +415 -0
  98. package/dist/src/dependency-traversal.d.ts +0 -6
  99. package/dist/src/dependency-traversal.js +0 -6
  100. package/dist/src/enriched-prompt.d.ts +0 -6
  101. package/dist/src/enriched-prompt.js +0 -6
  102. package/dist/src/error-record.d.ts +12 -0
  103. package/dist/src/error-record.js +248 -0
  104. package/dist/src/eval-corpus.d.ts +16 -0
  105. package/dist/src/eval-corpus.js +169 -0
  106. package/dist/src/eval-results.d.ts +6 -3
  107. package/dist/src/eval-results.js +323 -26
  108. package/dist/src/eval-vector-index.d.ts +5 -0
  109. package/dist/src/eval-vector-index.js +60 -0
  110. package/dist/src/file-utils.d.ts +0 -5
  111. package/dist/src/file-utils.js +0 -5
  112. package/dist/src/graph.d.ts +0 -25
  113. package/dist/src/graph.js +0 -28
  114. package/dist/src/help.js +9 -1
  115. package/dist/src/hnsw-settings.d.ts +3 -0
  116. package/dist/src/hnsw-settings.js +24 -0
  117. package/dist/src/index-args.d.ts +13 -0
  118. package/dist/src/index-args.js +48 -0
  119. package/dist/src/indexing/AnalysisBatcher.d.ts +12 -0
  120. package/dist/src/indexing/AnalysisBatcher.js +28 -0
  121. package/dist/src/indexing/ChunkEmbedder.d.ts +24 -0
  122. package/dist/src/indexing/ChunkEmbedder.js +37 -0
  123. package/dist/src/indexing/ConsoleScanReporter.d.ts +10 -0
  124. package/dist/src/indexing/ConsoleScanReporter.js +73 -0
  125. package/dist/src/indexing/EmbeddingSchemaPreparer.d.ts +14 -0
  126. package/dist/src/indexing/EmbeddingSchemaPreparer.js +66 -0
  127. package/dist/src/indexing/FileIngestor.d.ts +22 -0
  128. package/dist/src/indexing/FileIngestor.js +116 -0
  129. package/dist/src/indexing/IndexStore.d.ts +24 -0
  130. package/dist/src/indexing/IndexStore.js +69 -0
  131. package/dist/src/indexing/StaleFilePruner.d.ts +8 -0
  132. package/dist/src/indexing/StaleFilePruner.js +55 -0
  133. package/dist/src/indexing/analysis-rows.d.ts +4 -0
  134. package/dist/src/indexing/analysis-rows.js +65 -0
  135. package/dist/src/indexing/project-notices.d.ts +2 -0
  136. package/dist/src/indexing/project-notices.js +63 -0
  137. package/dist/src/interfaces/IAstParser.d.ts +4 -40
  138. package/dist/src/interfaces/ICallGraph.d.ts +28 -0
  139. package/dist/src/interfaces/ICallGraph.js +2 -0
  140. package/dist/src/interfaces/IChunkSearch.d.ts +42 -0
  141. package/dist/src/interfaces/IChunkSearch.js +2 -0
  142. package/dist/src/interfaces/IChunker.d.ts +3 -12
  143. package/dist/src/interfaces/ICorpusInspector.d.ts +7 -0
  144. package/dist/src/interfaces/ICorpusInspector.js +2 -0
  145. package/dist/src/interfaces/IDatabase.d.ts +8 -24
  146. package/dist/src/interfaces/IDependencyGraph.d.ts +24 -0
  147. package/dist/src/interfaces/IDependencyGraph.js +2 -0
  148. package/dist/src/interfaces/IEmbedder.d.ts +0 -9
  149. package/dist/src/interfaces/IIndexIdentityGuard.d.ts +3 -0
  150. package/dist/src/interfaces/IIndexIdentityGuard.js +2 -0
  151. package/dist/src/interfaces/IIndexedNodeResolver.d.ts +10 -0
  152. package/dist/src/interfaces/IIndexedNodeResolver.js +2 -0
  153. package/dist/src/interfaces/ILogger.d.ts +1 -11
  154. package/dist/src/interfaces/IMcpReadiness.d.ts +12 -0
  155. package/dist/src/interfaces/IMcpReadiness.js +2 -0
  156. package/dist/src/interfaces/IMcpToolHandler.d.ts +0 -5
  157. package/dist/src/interfaces/IMonorepoResolver.d.ts +0 -22
  158. package/dist/src/interfaces/IProjectCatalog.d.ts +13 -0
  159. package/dist/src/interfaces/IProjectCatalog.js +2 -0
  160. package/dist/src/interfaces/IProjectDiscovery.d.ts +0 -17
  161. package/dist/src/interfaces/IProjectRoots.d.ts +3 -0
  162. package/dist/src/interfaces/IProjectRoots.js +2 -0
  163. package/dist/src/interfaces/IRetrievalEvaluator.d.ts +153 -12
  164. package/dist/src/interfaces/IScanReporter.d.ts +13 -0
  165. package/dist/src/interfaces/IScanReporter.js +2 -0
  166. package/dist/src/interfaces/ISymbolLookup.d.ts +49 -0
  167. package/dist/src/interfaces/ISymbolLookup.js +2 -0
  168. package/dist/src/interfaces/IToolPaths.d.ts +62 -0
  169. package/dist/src/interfaces/IToolPaths.js +2 -0
  170. package/dist/src/interfaces/IWorkspaceFiles.d.ts +28 -0
  171. package/dist/src/interfaces/IWorkspaceFiles.js +2 -0
  172. package/dist/src/interfaces/SymbolKind.d.ts +1 -0
  173. package/dist/src/interfaces/SymbolKind.js +2 -0
  174. package/dist/src/interfaces/index.d.ts +12 -1
  175. package/dist/src/interrupt.js +0 -2
  176. package/dist/src/owner-path.d.ts +9 -10
  177. package/dist/src/owner-path.js +11 -23
  178. package/dist/src/project-scope.d.ts +1 -12
  179. package/dist/src/project-scope.js +5 -12
  180. package/dist/src/project-selector.d.ts +0 -5
  181. package/dist/src/project-selector.js +0 -11
  182. package/dist/src/retrieval-eval.d.ts +15 -6
  183. package/dist/src/retrieval-eval.js +388 -59
  184. package/dist/src/search/CallGraph.d.ts +9 -0
  185. package/dist/src/search/CallGraph.js +84 -0
  186. package/dist/src/search/ChunkSearch.d.ts +23 -0
  187. package/dist/src/search/ChunkSearch.js +115 -0
  188. package/dist/src/search/DependencyGraph.d.ts +19 -0
  189. package/dist/src/search/DependencyGraph.js +180 -0
  190. package/dist/src/search/IndexIdentityGuard.d.ts +11 -0
  191. package/dist/src/search/IndexIdentityGuard.js +37 -0
  192. package/dist/src/search/ProjectCatalog.d.ts +11 -0
  193. package/dist/src/search/ProjectCatalog.js +38 -0
  194. package/dist/src/search/SymbolLookup.d.ts +24 -0
  195. package/dist/src/search/SymbolLookup.js +97 -0
  196. package/dist/src/search/chunks/CandidateFetcher.d.ts +19 -0
  197. package/dist/src/search/chunks/CandidateFetcher.js +40 -0
  198. package/dist/src/search/chunks/IterativeScanGate.d.ts +10 -0
  199. package/dist/src/search/chunks/IterativeScanGate.js +42 -0
  200. package/dist/src/search/chunks/RerankStage.d.ts +15 -0
  201. package/dist/src/search/chunks/RerankStage.js +42 -0
  202. package/dist/src/search/chunks/search-metrics.d.ts +18 -0
  203. package/dist/src/search/chunks/search-metrics.js +32 -0
  204. package/dist/src/search/chunks/search-plan.d.ts +18 -0
  205. package/dist/src/search/chunks/search-plan.js +19 -0
  206. package/dist/src/search/create-search-services.d.ts +26 -0
  207. package/dist/src/search/create-search-services.js +29 -0
  208. package/dist/src/search/index-paths.d.ts +1 -0
  209. package/dist/src/search/index-paths.js +5 -0
  210. package/dist/src/search/result-shaping.d.ts +4 -0
  211. package/dist/src/search/result-shaping.js +19 -0
  212. package/dist/src/search/symbol-sql.d.ts +13 -0
  213. package/dist/src/search/symbol-sql.js +66 -0
  214. package/dist/src/search/symbols/SymbolGrepFallback.d.ts +19 -0
  215. package/dist/src/search/symbols/SymbolGrepFallback.js +106 -0
  216. package/dist/src/search/symbols/SymbolIndexQuery.d.ts +14 -0
  217. package/dist/src/search/symbols/SymbolIndexQuery.js +52 -0
  218. package/dist/src/search/symbols/SymbolTextSearch.d.ts +13 -0
  219. package/dist/src/search/symbols/SymbolTextSearch.js +84 -0
  220. package/dist/src/search/symbols/TargetColumnGate.d.ts +7 -0
  221. package/dist/src/search/symbols/TargetColumnGate.js +23 -0
  222. package/dist/src/search/symbols/find-symbol-constants.d.ts +4 -0
  223. package/dist/src/search/symbols/find-symbol-constants.js +8 -0
  224. package/dist/src/search/symbols/grep-args.d.ts +3 -0
  225. package/dist/src/search/symbols/grep-args.js +7 -0
  226. package/dist/src/search/symbols/grep-patterns.d.ts +4 -0
  227. package/dist/src/search/symbols/grep-patterns.js +60 -0
  228. package/dist/src/services/AstParserService.d.ts +10 -106
  229. package/dist/src/services/AstParserService.js +37 -1068
  230. package/dist/src/services/DatabaseService.d.ts +10 -17
  231. package/dist/src/services/DatabaseService.js +71 -115
  232. package/dist/src/services/EmbedderFactory.d.ts +0 -4
  233. package/dist/src/services/EmbedderFactory.js +0 -5
  234. package/dist/src/services/IndexerService.d.ts +7 -26
  235. package/dist/src/services/IndexerService.js +38 -286
  236. package/dist/src/services/InfinityEmbedder.d.ts +0 -21
  237. package/dist/src/services/InfinityEmbedder.js +0 -15
  238. package/dist/src/services/LoggerService.d.ts +7 -5
  239. package/dist/src/services/LoggerService.js +37 -41
  240. package/dist/src/services/McpReadiness.d.ts +18 -0
  241. package/dist/src/services/McpReadiness.js +73 -0
  242. package/dist/src/services/McpServer.d.ts +50 -19
  243. package/dist/src/services/McpServer.js +132 -62
  244. package/dist/src/services/MonorepoAwareDiscoveryService.d.ts +1 -45
  245. package/dist/src/services/MonorepoAwareDiscoveryService.js +1 -51
  246. package/dist/src/services/NxMonorepoResolver.d.ts +0 -29
  247. package/dist/src/services/NxMonorepoResolver.js +5 -56
  248. package/dist/src/services/OpenAICompatibleEmbedder.d.ts +0 -6
  249. package/dist/src/services/OpenAICompatibleEmbedder.js +0 -14
  250. package/dist/src/services/ProjectDiscoveryService.d.ts +0 -4
  251. package/dist/src/services/ProjectDiscoveryService.js +0 -4
  252. package/dist/src/services/VoyageEmbedder.d.ts +0 -6
  253. package/dist/src/services/VoyageEmbedder.js +0 -6
  254. package/dist/src/services/WebServerService.d.ts +5 -56
  255. package/dist/src/services/WebServerService.js +25 -63
  256. package/dist/src/services/http-retry.d.ts +0 -7
  257. package/dist/src/services/http-retry.js +1 -10
  258. package/dist/src/services/infinity-provisioning.d.ts +0 -74
  259. package/dist/src/services/infinity-provisioning.js +5 -88
  260. package/dist/src/services/legacy-ollama-index.d.ts +0 -16
  261. package/dist/src/services/legacy-ollama-index.js +0 -23
  262. package/dist/src/services/reranker.d.ts +0 -9
  263. package/dist/src/services/reranker.js +46 -12
  264. package/dist/src/setup.d.ts +24 -24
  265. package/dist/src/setup.js +205 -103
  266. package/dist/src/symbol-name.d.ts +1 -12
  267. package/dist/src/symbol-name.js +16 -25
  268. package/dist/src/symbol-rows.d.ts +0 -14
  269. package/dist/src/symbol-rows.js +0 -14
  270. package/dist/src/tool-call-log.d.ts +2 -0
  271. package/dist/src/tool-call-log.js +24 -0
  272. package/dist/src/tools/FindSymbolTool.d.ts +17 -7
  273. package/dist/src/tools/FindSymbolTool.js +54 -35
  274. package/dist/src/tools/GetCallersTool.d.ts +16 -8
  275. package/dist/src/tools/GetCallersTool.js +65 -35
  276. package/dist/src/tools/GetDependenciesTool.d.ts +16 -8
  277. package/dist/src/tools/GetDependenciesTool.js +36 -29
  278. package/dist/src/tools/GetDependentsTool.d.ts +20 -8
  279. package/dist/src/tools/GetDependentsTool.js +48 -34
  280. package/dist/src/tools/ListFilesTool.d.ts +16 -8
  281. package/dist/src/tools/ListFilesTool.js +20 -26
  282. package/dist/src/tools/ListProjectsTool.d.ts +11 -7
  283. package/dist/src/tools/ListProjectsTool.js +13 -11
  284. package/dist/src/tools/McpTool.d.ts +17 -0
  285. package/dist/src/tools/McpTool.js +28 -0
  286. package/dist/src/tools/ReadFileRangeTool.d.ts +16 -8
  287. package/dist/src/tools/ReadFileRangeTool.js +23 -25
  288. package/dist/src/tools/ReadFileTool.d.ts +15 -8
  289. package/dist/src/tools/ReadFileTool.js +19 -24
  290. package/dist/src/tools/SearchCodebaseTool.d.ts +22 -10
  291. package/dist/src/tools/SearchCodebaseTool.js +71 -50
  292. package/dist/src/tools/format-helpers.d.ts +9 -9
  293. package/dist/src/tools/format-helpers.js +146 -28
  294. package/dist/src/tools/tool-args.d.ts +38 -0
  295. package/dist/src/tools/tool-args.js +95 -0
  296. package/dist/src/web/dashboard.d.ts +0 -8
  297. package/dist/src/web/dashboard.js +7 -10
  298. package/dist/src/workspace/GrepRunner.d.ts +15 -0
  299. package/dist/src/workspace/GrepRunner.js +104 -0
  300. package/dist/src/workspace/ProjectRoots.d.ts +22 -0
  301. package/dist/src/workspace/ProjectRoots.js +102 -0
  302. package/dist/src/workspace/ToolPaths.d.ts +31 -0
  303. package/dist/src/workspace/ToolPaths.js +312 -0
  304. package/dist/src/workspace/WorkspaceFiles.d.ts +19 -0
  305. package/dist/src/workspace/WorkspaceFiles.js +285 -0
  306. package/dist/src/workspace/fs-access.d.ts +9 -0
  307. package/dist/src/workspace/fs-access.js +47 -0
  308. package/dist/src/workspace/path-helpers.d.ts +3 -0
  309. package/dist/src/workspace/path-helpers.js +43 -0
  310. package/package.json +5 -4
  311. package/dist/src/interfaces/ISearcher.d.ts +0 -35
  312. package/dist/src/services/AstChunker.d.ts +0 -42
  313. package/dist/src/services/AstChunker.js +0 -158
  314. package/dist/src/services/SearcherService.d.ts +0 -342
  315. package/dist/src/services/SearcherService.js +0 -1199
  316. package/docs/web-dashboard.md +0 -206
  317. /package/dist/src/{interfaces/ISearcher.js → chunking/interfaces.js} +0 -0
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMPLETE = exports.FIND_SYMBOL_LIMIT = exports.GRAPHQL_KINDS = void 0;
4
+ exports.GRAPHQL_KINDS = new Set([
5
+ 'graphql_query', 'graphql_mutation', 'graphql_subscription', 'graphql_field', 'graphql_type',
6
+ ]);
7
+ exports.FIND_SYMBOL_LIMIT = 50;
8
+ exports.COMPLETE = { outcome: 'complete' };
@@ -0,0 +1,3 @@
1
+ export declare const SOURCE_INCLUDES: readonly ["--include=*.ts", "--include=*.tsx", "--include=*.js", "--include=*.jsx"];
2
+ export declare const GREP_EXCLUDE_DIRS: string[];
3
+ export declare const GREP_BINARY_AS_TEXT = "--binary-files=text";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GREP_BINARY_AS_TEXT = exports.GREP_EXCLUDE_DIRS = exports.SOURCE_INCLUDES = void 0;
4
+ const file_utils_1 = require("../../file-utils");
5
+ exports.SOURCE_INCLUDES = ['--include=*.ts', '--include=*.tsx', '--include=*.js', '--include=*.jsx'];
6
+ exports.GREP_EXCLUDE_DIRS = [...file_utils_1.IGNORE_DIRS].map(d => `--exclude-dir=${d}`);
7
+ exports.GREP_BINARY_AS_TEXT = '--binary-files=text';
@@ -0,0 +1,4 @@
1
+ import type { SymbolKind } from '../../interfaces/ISymbolLookup';
2
+ export declare function buildFindSymbolPattern(name: string, kind: SymbolKind): string | null;
3
+ export declare function wholeWordIndex(line: string, name: string): number;
4
+ export declare function inferKind(line: string, name: string): Exclude<SymbolKind, 'all'>;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFindSymbolPattern = buildFindSymbolPattern;
4
+ exports.wholeWordIndex = wholeWordIndex;
5
+ exports.inferKind = inferKind;
6
+ const find_symbol_constants_1 = require("./find-symbol-constants");
7
+ const MODIFIERS = ['public', 'private', 'protected', 'static', 'abstract', 'async', 'override'];
8
+ function buildFindSymbolPattern(name, kind) {
9
+ if (kind === 'function_property' || kind === 'method_signature')
10
+ return null;
11
+ if (find_symbol_constants_1.GRAPHQL_KINDS.has(kind))
12
+ return null;
13
+ if (kind === 'constructor')
14
+ return name === 'constructor' ? `(^|[[:space:]])constructor[[:space:]]*\\(` : null;
15
+ const esc = name.replace(/\$/g, '\\$');
16
+ const MODIFIER = `(${MODIFIERS.join('|')})`;
17
+ const BOUNDARY = '(^|[^[:alnum:]_$])';
18
+ const patterns = {
19
+ function: `(export[[:space:]]+)?(async[[:space:]]+)?function[[:space:]]+${esc}[[:space:](<]`,
20
+ class: `(export[[:space:]]+)?(abstract[[:space:]]+)?class[[:space:]]+${esc}[[:space:]{<]`,
21
+ type: `(export[[:space:]]+)?type[[:space:]]+${esc}[[:space:]=<]`,
22
+ interface: `(export[[:space:]]+)?interface[[:space:]]+${esc}[[:space:]{<]`,
23
+ variable: `(export[[:space:]]+)?(const|let|var)[[:space:]]+${esc}[[:space:]=:]`,
24
+ method: `${BOUNDARY}(${MODIFIER}[[:space:]]+)+\\*?[[:space:]]*${esc}[[:space:]]*[(<]`,
25
+ get_accessor: `(^|[[:space:]])get[[:space:]]+${esc}[[:space:]]*\\(`,
26
+ set_accessor: `(^|[[:space:]])set[[:space:]]+${esc}[[:space:]]*\\(`,
27
+ };
28
+ if (kind === 'all')
29
+ return Object.values(patterns).join('|');
30
+ return patterns[kind];
31
+ }
32
+ function wholeWordIndex(line, name) {
33
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
34
+ const re = new RegExp(`(?<![\\w$#])${escaped}(?![\\w$#])`);
35
+ const m = re.exec(line);
36
+ return m ? m.index : -1;
37
+ }
38
+ function inferKind(line, name) {
39
+ if (name === 'constructor')
40
+ return 'constructor';
41
+ const idx = wholeWordIndex(line, name);
42
+ const before = idx === -1 ? line : line.slice(0, idx);
43
+ const tokens = before.trim().split(/\s+/).filter(Boolean);
44
+ const last = (tokens[tokens.length - 1] ?? '').replace(/\*$/, '');
45
+ if (last === 'get')
46
+ return 'get_accessor';
47
+ if (last === 'set')
48
+ return 'set_accessor';
49
+ if (last === 'function')
50
+ return 'function';
51
+ if (last === 'class')
52
+ return 'class';
53
+ if (last === 'interface')
54
+ return 'interface';
55
+ if (last === 'type')
56
+ return 'type';
57
+ if (MODIFIERS.includes(last))
58
+ return 'method';
59
+ return 'variable';
60
+ }
@@ -1,15 +1,19 @@
1
- import { Node } from 'ts-morph';
2
1
  import type { IAstParser, DepEdge, FileAnalysis, AnalyzeProjectOpts } from '../interfaces/IAstParser';
3
2
  import type { ILogger } from '../interfaces';
4
- /** Test seam for `graphql-symbols`' resolve-field parent-type resolution —
5
- * defaults to the alias-following type-checker lookup `extractCalls` already uses. */
3
+ import type { ResolveDeclaration } from '../ast/node-helpers';
6
4
  export interface AstParserDeps {
7
- resolveDeclaration?(identifier: Node): Node | undefined;
5
+ resolveDeclaration?: ResolveDeclaration;
8
6
  }
9
7
  export declare class AstParserService implements IAstParser {
10
8
  private logger;
11
- private deps;
12
9
  private morphProjects;
10
+ private readonly declarationBuilder;
11
+ private readonly resolver;
12
+ private readonly edges;
13
+ private readonly topLevel;
14
+ private readonly members;
15
+ private readonly calls;
16
+ private readonly graphql;
13
17
  constructor(logger?: ILogger, deps?: AstParserDeps);
14
18
  analyzeProject(filePaths: string[], serviceName: string, projectRoot?: string, opts?: AnalyzeProjectOpts): Promise<Map<string, FileAnalysis>>;
15
19
  clearCache(projectRoot?: string): void;
@@ -18,105 +22,5 @@ export declare class AstParserService implements IAstParser {
18
22
  private analyzeSourceFile;
19
23
  private createMorphProject;
20
24
  private getMorphProject;
21
- private extractEdges;
22
- /** Manual fallback for a bindingless import specifier (design.md decision 2) —
23
- * ts-morph's `getModuleSpecifierSourceFile()` is `null` for these even when
24
- * the target is a real project file, since nothing is bound to resolve through. */
25
- private resolveSideEffectModuleSpecifier;
26
- private resolveFromSymbol;
27
- private buildUsageMap;
28
- private getPos;
29
- /** Trimmed text of the source line containing `node`'s start — the signature
30
- * rule for every kind (name node for members, the position node for
31
- * constructors/anonymous default classes). */
32
- private lineTextAt;
33
- private extractSymbols;
34
- private extractMembers;
35
- /** Chunk-ownership ranges from every indexed declaration (top-level symbols +
36
- * members) except `method_signature`. Each range spans the declaration node's
37
- * own first-to-last line — decorator-inclusive, comment-exclusive, and (for a
38
- * variable) the declarator alone, never the whole statement. */
39
- private buildOwnerRanges;
40
- /** Local name → the name exported by `@nestjs/graphql`, for every named import
41
- * of that module specifier (aliases followed). Recognition is import-based,
42
- * not type-checker-based, so `skipFileDependencyResolution` batches agree. */
43
- private buildGraphqlImportMap;
44
- /** The identifier naming a decorator's expression (`@Foo` or the callee of `@Foo(...)`). */
45
- private static decoratorIdentifier;
46
- /** `dec` recognised against `importMap` — its exported `@nestjs/graphql` name and its call arguments (`[]` for a bare `@Foo`). */
47
- private recognizedDecorator;
48
- private static literalStringValue;
49
- private static checkGraphqlGrammar;
50
- /** `true` when any decorator argument is an (unwrapped) options object
51
- * literal with `isAbstract: true` — an abstract base type (`PaginatedType`
52
- * pattern) that NestJS never registers in the actual GraphQL schema. */
53
- private static isAbstractGraphqlType;
54
- /** `obj`'s own `name` property (`PropertyAssignment` or `ShorthandPropertyAssignment`), if any. */
55
- private static findNameProperty;
56
- /** Strips parens/`as`/`satisfies`/non-null wrappers (any nesting) to find the
57
- * underlying node — used only to classify an argument's *shape* (type
58
- * function vs. options object vs. literal vs. other), never to read a name
59
- * value through the wrapper (decision 4 of `graphql-symbols` forbids that). */
60
- private static peekThroughWrapper;
61
- /**
62
- * GraphQL name from a decorator's arguments (design decision 4 of
63
- * `graphql-symbols`) — syntactic, no wrapper looked through at any step.
64
- * `allowOptionsName` gates step 2 (the `name` option — `Query`/`Mutation`/
65
- * `Subscription`/`ResolveField` only); `fallbackName` is the TS name used at
66
- * step 3.
67
- */
68
- private deriveGraphqlName;
69
- private logGraphqlSkip;
70
- /** `declNode`'s qualified TypeScript name for diagnostics, independent of
71
- * whether its own `code_symbol` row was actually written. */
72
- private declarationNameFor;
73
- /** The identifier named by a `@Resolver` argument: directly, or as an arrow
74
- * function's expression body; or the sole identifier of a single-element
75
- * array literal in either position (list-returning resolver). */
76
- private static extractResolverIdentifier;
77
- private defaultResolveDeclaration;
78
- /** The GraphQL type name of a `@ResolveField`'s resolved parent class
79
- * (design decision 5, second half): its recognised `@ObjectType` (else
80
- * `@InterfaceType`) decorator, or its class name when it carries no
81
- * decorator spelled `ObjectType`/`InterfaceType` at all, recognised or not. */
82
- private classGraphqlTypeName;
83
- /** The parent type of a `@ResolveField` — the enclosing class's recognised
84
- * `@Resolver` argument (design decision 5, first half). */
85
- private resolveResolverParentType;
86
- private extractClassTypeRows;
87
- private extractResolveFieldRow;
88
- private extractMethodOperationRows;
89
- /** GraphQL-named rows for every recognised `@nestjs/graphql` decorator in
90
- * the file (`graphql-symbols`). `ownRows` is `symbols ∪ members` — the
91
- * declarations' own `code_symbol` candidates, checked so a GraphQL row is
92
- * never written without its decorated declaration's own row. */
93
- private extractGraphqlNames;
94
- private static isValidSegment;
95
- private static memberName;
96
- private static unwrapExpr;
97
- private static unwrapParent;
98
- private isModuleOrNamespaceLevelVariable;
99
- private classExpressionRoot;
100
- private objectLiteralRootValid;
101
- private isTopLevelOrNamespaceDirect;
102
- /** One step of the ancestor walk used by `containerSegments`: does `node`
103
- * contribute a named segment, pass through transparently, or disqualify
104
- * (exclude) everything nested inside it? */
105
- private walkStep;
106
- /** The dotted container path of `node`'s enclosing named scopes, outermost
107
- * first, or null when any contributing ancestor is invalid (a computed /
108
- * string-literal segment, a string-named module, `declare global`, or an
109
- * unrooted class expression / object literal). */
110
- private containerSegments;
111
- /** If `node` is a declaration this service indexes (top-level symbol, member,
112
- * or collected class), its own name + container. Otherwise null. Shared by
113
- * member extraction, ownership ranges and the call graph so all three name a
114
- * declaration identically. */
115
- private describeIndexedNode;
116
- private qualifiedName;
117
- /** The qualified name of the nearest ancestor of `node` that is itself an
118
- * indexed declaration (method, accessor, constructor, function property,
119
- * namespace/top-level function, or module-/namespace-level variable). */
120
- private findFromSymbol;
121
- private extractCalls;
25
+ private buildDeclarations;
122
26
  }