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.
- package/CHANGELOG.md +88 -5
- package/LICENSE +661 -21
- package/README.md +76 -40
- package/dist/app.js +17 -38
- package/dist/src/ast/CallExtractor.d.ts +8 -0
- package/dist/src/ast/CallExtractor.js +68 -0
- package/dist/src/ast/GraphqlNameExtractor.d.ts +22 -0
- package/dist/src/ast/GraphqlNameExtractor.js +240 -0
- package/dist/src/ast/ImportEdgeExtractor.d.ts +11 -0
- package/dist/src/ast/ImportEdgeExtractor.js +129 -0
- package/dist/src/ast/IndexedNodeResolver.d.ts +14 -0
- package/dist/src/ast/IndexedNodeResolver.js +217 -0
- package/dist/src/ast/MemberExtractor.d.ts +8 -0
- package/dist/src/ast/MemberExtractor.js +129 -0
- package/dist/src/ast/TopLevelSymbolExtractor.d.ts +5 -0
- package/dist/src/ast/TopLevelSymbolExtractor.js +86 -0
- package/dist/src/ast/graphql-grammar.d.ts +24 -0
- package/dist/src/ast/graphql-grammar.js +93 -0
- package/dist/src/ast/node-helpers.d.ts +11 -0
- package/dist/src/ast/node-helpers.js +55 -0
- package/dist/src/chunking/AstChunker.d.ts +12 -0
- package/dist/src/chunking/AstChunker.js +30 -0
- package/dist/src/chunking/CharacterChunkStrategy.d.ts +8 -0
- package/dist/src/chunking/CharacterChunkStrategy.js +15 -0
- package/dist/src/chunking/DeclarationChunkStrategy.d.ts +15 -0
- package/dist/src/chunking/DeclarationChunkStrategy.js +87 -0
- package/dist/src/chunking/FragmentMerger.d.ts +11 -0
- package/dist/src/chunking/FragmentMerger.js +61 -0
- package/dist/src/chunking/ImportOnlyFilter.d.ts +5 -0
- package/dist/src/chunking/ImportOnlyFilter.js +14 -0
- package/dist/src/chunking/LangchainTextSplitter.d.ts +21 -0
- package/dist/src/chunking/LangchainTextSplitter.js +133 -0
- package/dist/src/chunking/MinSizeSplitPolicy.d.ts +9 -0
- package/dist/src/chunking/MinSizeSplitPolicy.js +18 -0
- package/dist/src/chunking/RunPacker.d.ts +12 -0
- package/dist/src/chunking/RunPacker.js +84 -0
- package/dist/src/chunking/create-chunker.d.ts +3 -0
- package/dist/src/chunking/create-chunker.js +15 -0
- package/dist/src/chunking/interfaces.d.ts +27 -0
- package/dist/src/commands/ConfigCommand.js +1 -9
- package/dist/src/commands/EvalCommand.d.ts +10 -5
- package/dist/src/commands/EvalCommand.js +60 -149
- package/dist/src/commands/IndexCommand.d.ts +10 -4
- package/dist/src/commands/IndexCommand.js +52 -146
- package/dist/src/commands/McpCommand.d.ts +6 -3
- package/dist/src/commands/McpCommand.js +19 -20
- package/dist/src/commands/WebCommand.d.ts +9 -3
- package/dist/src/commands/WebCommand.js +17 -11
- package/dist/src/commands/eval/baseline-comparison.d.ts +6 -0
- package/dist/src/commands/eval/baseline-comparison.js +54 -0
- package/dist/src/commands/eval/eval-args.d.ts +6 -0
- package/dist/src/commands/eval/eval-args.js +71 -0
- package/dist/src/commands/eval/eval-corpora.d.ts +6 -0
- package/dist/src/commands/eval/eval-corpora.js +76 -0
- package/dist/src/commands/eval/eval-metadata.d.ts +17 -0
- package/dist/src/commands/eval/eval-metadata.js +75 -0
- package/dist/src/commands/eval/index-inspector.d.ts +3 -0
- package/dist/src/commands/eval/index-inspector.js +21 -0
- package/dist/src/commands/eval/staged-search.d.ts +3 -0
- package/dist/src/commands/eval/staged-search.js +20 -0
- package/dist/src/commands/eval/suite-loader.d.ts +8 -0
- package/dist/src/commands/eval/suite-loader.js +52 -0
- package/dist/src/commands/index/backend-probe.d.ts +2 -0
- package/dist/src/commands/index/backend-probe.js +15 -0
- package/dist/src/commands/index/embedding-setup.d.ts +3 -0
- package/dist/src/commands/index/embedding-setup.js +16 -0
- package/dist/src/commands/index/index-summary.d.ts +2 -0
- package/dist/src/commands/index/index-summary.js +22 -0
- package/dist/src/commands/index/legacy-ollama-guard.d.ts +3 -0
- package/dist/src/commands/index/legacy-ollama-guard.js +23 -0
- package/dist/src/commands/index/prune-step.d.ts +3 -0
- package/dist/src/commands/index/prune-step.js +22 -0
- package/dist/src/commands/index/scan-targets.d.ts +8 -0
- package/dist/src/commands/index/scan-targets.js +107 -0
- package/dist/src/config-error.d.ts +0 -4
- package/dist/src/config-error.js +0 -4
- package/dist/src/config-store.d.ts +1 -55
- package/dist/src/config-store.js +11 -73
- package/dist/src/config.d.ts +9 -18
- package/dist/src/config.js +36 -35
- package/dist/src/constants.d.ts +17 -28
- package/dist/src/constants.js +35 -29
- package/dist/src/container.d.ts +10 -2
- package/dist/src/container.js +19 -8
- package/dist/src/db/drizzle-types.d.ts +7 -0
- package/dist/src/db/drizzle-types.js +2 -0
- package/dist/src/db/index.d.ts +1 -0
- package/dist/src/db/schema-steps.d.ts +8 -0
- package/dist/src/db/schema-steps.js +105 -0
- package/dist/src/db/schema.d.ts +17 -0
- package/dist/src/db/schema.js +1 -6
- package/dist/src/declarations/DeclarationTree.d.ts +19 -0
- package/dist/src/declarations/DeclarationTree.js +66 -0
- package/dist/src/declarations/DeclarationTreeBuilder.d.ts +22 -0
- package/dist/src/declarations/DeclarationTreeBuilder.js +179 -0
- package/dist/src/declarations/SourceLines.d.ts +37 -0
- package/dist/src/declarations/SourceLines.js +415 -0
- package/dist/src/dependency-traversal.d.ts +0 -6
- package/dist/src/dependency-traversal.js +0 -6
- package/dist/src/enriched-prompt.d.ts +0 -6
- package/dist/src/enriched-prompt.js +0 -6
- package/dist/src/error-record.d.ts +12 -0
- package/dist/src/error-record.js +248 -0
- package/dist/src/eval-corpus.d.ts +16 -0
- package/dist/src/eval-corpus.js +169 -0
- package/dist/src/eval-results.d.ts +6 -3
- package/dist/src/eval-results.js +323 -26
- package/dist/src/eval-vector-index.d.ts +5 -0
- package/dist/src/eval-vector-index.js +60 -0
- package/dist/src/file-utils.d.ts +0 -5
- package/dist/src/file-utils.js +0 -5
- package/dist/src/graph.d.ts +0 -25
- package/dist/src/graph.js +0 -28
- package/dist/src/help.js +9 -1
- package/dist/src/hnsw-settings.d.ts +3 -0
- package/dist/src/hnsw-settings.js +24 -0
- package/dist/src/index-args.d.ts +13 -0
- package/dist/src/index-args.js +48 -0
- package/dist/src/indexing/AnalysisBatcher.d.ts +12 -0
- package/dist/src/indexing/AnalysisBatcher.js +28 -0
- package/dist/src/indexing/ChunkEmbedder.d.ts +24 -0
- package/dist/src/indexing/ChunkEmbedder.js +37 -0
- package/dist/src/indexing/ConsoleScanReporter.d.ts +10 -0
- package/dist/src/indexing/ConsoleScanReporter.js +73 -0
- package/dist/src/indexing/EmbeddingSchemaPreparer.d.ts +14 -0
- package/dist/src/indexing/EmbeddingSchemaPreparer.js +66 -0
- package/dist/src/indexing/FileIngestor.d.ts +22 -0
- package/dist/src/indexing/FileIngestor.js +116 -0
- package/dist/src/indexing/IndexStore.d.ts +24 -0
- package/dist/src/indexing/IndexStore.js +69 -0
- package/dist/src/indexing/StaleFilePruner.d.ts +8 -0
- package/dist/src/indexing/StaleFilePruner.js +55 -0
- package/dist/src/indexing/analysis-rows.d.ts +4 -0
- package/dist/src/indexing/analysis-rows.js +65 -0
- package/dist/src/indexing/project-notices.d.ts +2 -0
- package/dist/src/indexing/project-notices.js +63 -0
- package/dist/src/interfaces/IAstParser.d.ts +4 -40
- package/dist/src/interfaces/ICallGraph.d.ts +28 -0
- package/dist/src/interfaces/ICallGraph.js +2 -0
- package/dist/src/interfaces/IChunkSearch.d.ts +42 -0
- package/dist/src/interfaces/IChunkSearch.js +2 -0
- package/dist/src/interfaces/IChunker.d.ts +3 -12
- package/dist/src/interfaces/ICorpusInspector.d.ts +7 -0
- package/dist/src/interfaces/ICorpusInspector.js +2 -0
- package/dist/src/interfaces/IDatabase.d.ts +8 -24
- package/dist/src/interfaces/IDependencyGraph.d.ts +24 -0
- package/dist/src/interfaces/IDependencyGraph.js +2 -0
- package/dist/src/interfaces/IEmbedder.d.ts +0 -9
- package/dist/src/interfaces/IIndexIdentityGuard.d.ts +3 -0
- package/dist/src/interfaces/IIndexIdentityGuard.js +2 -0
- package/dist/src/interfaces/IIndexedNodeResolver.d.ts +10 -0
- package/dist/src/interfaces/IIndexedNodeResolver.js +2 -0
- package/dist/src/interfaces/ILogger.d.ts +1 -11
- package/dist/src/interfaces/IMcpReadiness.d.ts +12 -0
- package/dist/src/interfaces/IMcpReadiness.js +2 -0
- package/dist/src/interfaces/IMcpToolHandler.d.ts +0 -5
- package/dist/src/interfaces/IMonorepoResolver.d.ts +0 -22
- package/dist/src/interfaces/IProjectCatalog.d.ts +13 -0
- package/dist/src/interfaces/IProjectCatalog.js +2 -0
- package/dist/src/interfaces/IProjectDiscovery.d.ts +0 -17
- package/dist/src/interfaces/IProjectRoots.d.ts +3 -0
- package/dist/src/interfaces/IProjectRoots.js +2 -0
- package/dist/src/interfaces/IRetrievalEvaluator.d.ts +153 -12
- package/dist/src/interfaces/IScanReporter.d.ts +13 -0
- package/dist/src/interfaces/IScanReporter.js +2 -0
- package/dist/src/interfaces/ISymbolLookup.d.ts +49 -0
- package/dist/src/interfaces/ISymbolLookup.js +2 -0
- package/dist/src/interfaces/IToolPaths.d.ts +62 -0
- package/dist/src/interfaces/IToolPaths.js +2 -0
- package/dist/src/interfaces/IWorkspaceFiles.d.ts +28 -0
- package/dist/src/interfaces/IWorkspaceFiles.js +2 -0
- package/dist/src/interfaces/SymbolKind.d.ts +1 -0
- package/dist/src/interfaces/SymbolKind.js +2 -0
- package/dist/src/interfaces/index.d.ts +12 -1
- package/dist/src/interrupt.js +0 -2
- package/dist/src/owner-path.d.ts +9 -10
- package/dist/src/owner-path.js +11 -23
- package/dist/src/project-scope.d.ts +1 -12
- package/dist/src/project-scope.js +5 -12
- package/dist/src/project-selector.d.ts +0 -5
- package/dist/src/project-selector.js +0 -11
- package/dist/src/retrieval-eval.d.ts +15 -6
- package/dist/src/retrieval-eval.js +388 -59
- package/dist/src/search/CallGraph.d.ts +9 -0
- package/dist/src/search/CallGraph.js +84 -0
- package/dist/src/search/ChunkSearch.d.ts +23 -0
- package/dist/src/search/ChunkSearch.js +115 -0
- package/dist/src/search/DependencyGraph.d.ts +19 -0
- package/dist/src/search/DependencyGraph.js +180 -0
- package/dist/src/search/IndexIdentityGuard.d.ts +11 -0
- package/dist/src/search/IndexIdentityGuard.js +37 -0
- package/dist/src/search/ProjectCatalog.d.ts +11 -0
- package/dist/src/search/ProjectCatalog.js +38 -0
- package/dist/src/search/SymbolLookup.d.ts +24 -0
- package/dist/src/search/SymbolLookup.js +97 -0
- package/dist/src/search/chunks/CandidateFetcher.d.ts +19 -0
- package/dist/src/search/chunks/CandidateFetcher.js +40 -0
- package/dist/src/search/chunks/IterativeScanGate.d.ts +10 -0
- package/dist/src/search/chunks/IterativeScanGate.js +42 -0
- package/dist/src/search/chunks/RerankStage.d.ts +15 -0
- package/dist/src/search/chunks/RerankStage.js +42 -0
- package/dist/src/search/chunks/search-metrics.d.ts +18 -0
- package/dist/src/search/chunks/search-metrics.js +32 -0
- package/dist/src/search/chunks/search-plan.d.ts +18 -0
- package/dist/src/search/chunks/search-plan.js +19 -0
- package/dist/src/search/create-search-services.d.ts +26 -0
- package/dist/src/search/create-search-services.js +29 -0
- package/dist/src/search/index-paths.d.ts +1 -0
- package/dist/src/search/index-paths.js +5 -0
- package/dist/src/search/result-shaping.d.ts +4 -0
- package/dist/src/search/result-shaping.js +19 -0
- package/dist/src/search/symbol-sql.d.ts +13 -0
- package/dist/src/search/symbol-sql.js +66 -0
- package/dist/src/search/symbols/SymbolGrepFallback.d.ts +19 -0
- package/dist/src/search/symbols/SymbolGrepFallback.js +106 -0
- package/dist/src/search/symbols/SymbolIndexQuery.d.ts +14 -0
- package/dist/src/search/symbols/SymbolIndexQuery.js +52 -0
- package/dist/src/search/symbols/SymbolTextSearch.d.ts +13 -0
- package/dist/src/search/symbols/SymbolTextSearch.js +84 -0
- package/dist/src/search/symbols/TargetColumnGate.d.ts +7 -0
- package/dist/src/search/symbols/TargetColumnGate.js +23 -0
- package/dist/src/search/symbols/find-symbol-constants.d.ts +4 -0
- package/dist/src/search/symbols/find-symbol-constants.js +8 -0
- package/dist/src/search/symbols/grep-args.d.ts +3 -0
- package/dist/src/search/symbols/grep-args.js +7 -0
- package/dist/src/search/symbols/grep-patterns.d.ts +4 -0
- package/dist/src/search/symbols/grep-patterns.js +60 -0
- package/dist/src/services/AstParserService.d.ts +10 -106
- package/dist/src/services/AstParserService.js +37 -1068
- package/dist/src/services/DatabaseService.d.ts +10 -17
- package/dist/src/services/DatabaseService.js +71 -115
- package/dist/src/services/EmbedderFactory.d.ts +0 -4
- package/dist/src/services/EmbedderFactory.js +0 -5
- package/dist/src/services/IndexerService.d.ts +7 -26
- package/dist/src/services/IndexerService.js +38 -286
- package/dist/src/services/InfinityEmbedder.d.ts +0 -21
- package/dist/src/services/InfinityEmbedder.js +0 -15
- package/dist/src/services/LoggerService.d.ts +7 -5
- package/dist/src/services/LoggerService.js +37 -41
- package/dist/src/services/McpReadiness.d.ts +18 -0
- package/dist/src/services/McpReadiness.js +73 -0
- package/dist/src/services/McpServer.d.ts +50 -19
- package/dist/src/services/McpServer.js +132 -62
- package/dist/src/services/MonorepoAwareDiscoveryService.d.ts +1 -45
- package/dist/src/services/MonorepoAwareDiscoveryService.js +1 -51
- package/dist/src/services/NxMonorepoResolver.d.ts +0 -29
- package/dist/src/services/NxMonorepoResolver.js +5 -56
- package/dist/src/services/OpenAICompatibleEmbedder.d.ts +0 -6
- package/dist/src/services/OpenAICompatibleEmbedder.js +0 -14
- package/dist/src/services/ProjectDiscoveryService.d.ts +0 -4
- package/dist/src/services/ProjectDiscoveryService.js +0 -4
- package/dist/src/services/VoyageEmbedder.d.ts +0 -6
- package/dist/src/services/VoyageEmbedder.js +0 -6
- package/dist/src/services/WebServerService.d.ts +5 -56
- package/dist/src/services/WebServerService.js +25 -63
- package/dist/src/services/http-retry.d.ts +0 -7
- package/dist/src/services/http-retry.js +1 -10
- package/dist/src/services/infinity-provisioning.d.ts +0 -74
- package/dist/src/services/infinity-provisioning.js +5 -88
- package/dist/src/services/legacy-ollama-index.d.ts +0 -16
- package/dist/src/services/legacy-ollama-index.js +0 -23
- package/dist/src/services/reranker.d.ts +0 -9
- package/dist/src/services/reranker.js +46 -12
- package/dist/src/setup.d.ts +24 -24
- package/dist/src/setup.js +205 -103
- package/dist/src/symbol-name.d.ts +1 -12
- package/dist/src/symbol-name.js +16 -25
- package/dist/src/symbol-rows.d.ts +0 -14
- package/dist/src/symbol-rows.js +0 -14
- package/dist/src/tool-call-log.d.ts +2 -0
- package/dist/src/tool-call-log.js +24 -0
- package/dist/src/tools/FindSymbolTool.d.ts +17 -7
- package/dist/src/tools/FindSymbolTool.js +54 -35
- package/dist/src/tools/GetCallersTool.d.ts +16 -8
- package/dist/src/tools/GetCallersTool.js +65 -35
- package/dist/src/tools/GetDependenciesTool.d.ts +16 -8
- package/dist/src/tools/GetDependenciesTool.js +36 -29
- package/dist/src/tools/GetDependentsTool.d.ts +20 -8
- package/dist/src/tools/GetDependentsTool.js +48 -34
- package/dist/src/tools/ListFilesTool.d.ts +16 -8
- package/dist/src/tools/ListFilesTool.js +20 -26
- package/dist/src/tools/ListProjectsTool.d.ts +11 -7
- package/dist/src/tools/ListProjectsTool.js +13 -11
- package/dist/src/tools/McpTool.d.ts +17 -0
- package/dist/src/tools/McpTool.js +28 -0
- package/dist/src/tools/ReadFileRangeTool.d.ts +16 -8
- package/dist/src/tools/ReadFileRangeTool.js +23 -25
- package/dist/src/tools/ReadFileTool.d.ts +15 -8
- package/dist/src/tools/ReadFileTool.js +19 -24
- package/dist/src/tools/SearchCodebaseTool.d.ts +22 -10
- package/dist/src/tools/SearchCodebaseTool.js +71 -50
- package/dist/src/tools/format-helpers.d.ts +9 -9
- package/dist/src/tools/format-helpers.js +146 -28
- package/dist/src/tools/tool-args.d.ts +38 -0
- package/dist/src/tools/tool-args.js +95 -0
- package/dist/src/web/dashboard.d.ts +0 -8
- package/dist/src/web/dashboard.js +7 -10
- package/dist/src/workspace/GrepRunner.d.ts +15 -0
- package/dist/src/workspace/GrepRunner.js +104 -0
- package/dist/src/workspace/ProjectRoots.d.ts +22 -0
- package/dist/src/workspace/ProjectRoots.js +102 -0
- package/dist/src/workspace/ToolPaths.d.ts +31 -0
- package/dist/src/workspace/ToolPaths.js +312 -0
- package/dist/src/workspace/WorkspaceFiles.d.ts +19 -0
- package/dist/src/workspace/WorkspaceFiles.js +285 -0
- package/dist/src/workspace/fs-access.d.ts +9 -0
- package/dist/src/workspace/fs-access.js +47 -0
- package/dist/src/workspace/path-helpers.d.ts +3 -0
- package/dist/src/workspace/path-helpers.js +43 -0
- package/package.json +5 -4
- package/dist/src/interfaces/ISearcher.d.ts +0 -35
- package/dist/src/services/AstChunker.d.ts +0 -42
- package/dist/src/services/AstChunker.js +0 -158
- package/dist/src/services/SearcherService.d.ts +0 -342
- package/dist/src/services/SearcherService.js +0 -1199
- package/docs/web-dashboard.md +0 -206
- /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,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
|
-
|
|
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
|
|
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
|
|
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
|
}
|