codevault 1.8.3 → 1.8.5
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/README.md +33 -5
- package/dist/chunking/file-grouper.d.ts +1 -1
- package/dist/chunking/file-grouper.d.ts.map +1 -1
- package/dist/chunking/file-grouper.js +3 -3
- package/dist/chunking/file-grouper.js.map +1 -1
- package/dist/chunking/semantic-chunker.d.ts +1 -1
- package/dist/chunking/semantic-chunker.d.ts.map +1 -1
- package/dist/chunking/token-counter.d.ts +1 -1
- package/dist/chunking/token-counter.d.ts.map +1 -1
- package/dist/chunking/token-counter.js +16 -10
- package/dist/chunking/token-counter.js.map +1 -1
- package/dist/cli/commands/ask-cmd.js +15 -15
- package/dist/cli/commands/ask-cmd.js.map +1 -1
- package/dist/cli/commands/chat-cmd.d.ts.map +1 -1
- package/dist/cli/commands/chat-cmd.js +40 -40
- package/dist/cli/commands/chat-cmd.js.map +1 -1
- package/dist/cli/commands/config-cmd.d.ts.map +1 -1
- package/dist/cli/commands/config-cmd.js +61 -52
- package/dist/cli/commands/config-cmd.js.map +1 -1
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +20 -11
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/index-cmd.d.ts.map +1 -1
- package/dist/cli/commands/index-cmd.js +109 -85
- package/dist/cli/commands/index-cmd.js.map +1 -1
- package/dist/cli/commands/info-cmd.d.ts.map +1 -1
- package/dist/cli/commands/info-cmd.js +12 -11
- package/dist/cli/commands/info-cmd.js.map +1 -1
- package/dist/cli/commands/interactive-config.d.ts.map +1 -1
- package/dist/cli/commands/interactive-config.js +60 -20
- package/dist/cli/commands/interactive-config.js.map +1 -1
- package/dist/cli/commands/search-cmd.d.ts.map +1 -1
- package/dist/cli/commands/search-cmd.js +22 -11
- package/dist/cli/commands/search-cmd.js.map +1 -1
- package/dist/cli/commands/search-with-code-cmd.d.ts.map +1 -1
- package/dist/cli/commands/search-with-code-cmd.js +25 -16
- package/dist/cli/commands/search-with-code-cmd.js.map +1 -1
- package/dist/cli/commands/update-cmd.d.ts.map +1 -1
- package/dist/cli/commands/update-cmd.js +16 -7
- package/dist/cli/commands/update-cmd.js.map +1 -1
- package/dist/cli/commands/watch-cmd.d.ts.map +1 -1
- package/dist/cli/commands/watch-cmd.js +21 -11
- package/dist/cli/commands/watch-cmd.js.map +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils.d.ts +56 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +98 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/cli.js +0 -0
- package/dist/codemap/io.js.map +1 -1
- package/dist/config/constants.d.ts +4 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +2 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/context/packs.d.ts +2 -2
- package/dist/context/packs.d.ts.map +1 -1
- package/dist/context/packs.js +7 -4
- package/dist/context/packs.js.map +1 -1
- package/dist/core/IndexerEngine.d.ts +2 -0
- package/dist/core/IndexerEngine.d.ts.map +1 -1
- package/dist/core/IndexerEngine.js +34 -26
- package/dist/core/IndexerEngine.js.map +1 -1
- package/dist/core/SearchService.d.ts +2 -1
- package/dist/core/SearchService.d.ts.map +1 -1
- package/dist/core/SearchService.js +25 -18
- package/dist/core/SearchService.js.map +1 -1
- package/dist/core/batch-indexer.d.ts +4 -3
- package/dist/core/batch-indexer.d.ts.map +1 -1
- package/dist/core/batch-indexer.js +32 -35
- package/dist/core/batch-indexer.js.map +1 -1
- package/dist/core/indexing/FileProcessor.d.ts +1 -0
- package/dist/core/indexing/FileProcessor.d.ts.map +1 -1
- package/dist/core/indexing/FileProcessor.js +32 -9
- package/dist/core/indexing/FileProcessor.js.map +1 -1
- package/dist/core/indexing/IndexContext.d.ts +6 -4
- package/dist/core/indexing/IndexContext.d.ts.map +1 -1
- package/dist/core/indexing/IndexContext.js +3 -3
- package/dist/core/indexing/IndexContext.js.map +1 -1
- package/dist/core/indexing/IndexFinalizationStage.d.ts +6 -1
- package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -1
- package/dist/core/indexing/IndexFinalizationStage.js +22 -3
- package/dist/core/indexing/IndexFinalizationStage.js.map +1 -1
- package/dist/core/indexing/IndexState.d.ts +3 -8
- package/dist/core/indexing/IndexState.d.ts.map +1 -1
- package/dist/core/indexing/IndexState.js.map +1 -1
- package/dist/core/indexing/PersistManager.d.ts +1 -1
- package/dist/core/indexing/PersistManager.d.ts.map +1 -1
- package/dist/core/indexing/PersistManager.js +17 -17
- package/dist/core/indexing/PersistManager.js.map +1 -1
- package/dist/core/indexing/chunk-pipeline.d.ts +33 -7
- package/dist/core/indexing/chunk-pipeline.d.ts.map +1 -1
- package/dist/core/indexing/chunk-pipeline.js +20 -8
- package/dist/core/indexing/chunk-pipeline.js.map +1 -1
- package/dist/core/metadata.d.ts +1 -1
- package/dist/core/metadata.d.ts.map +1 -1
- package/dist/core/metadata.js +1 -1
- package/dist/core/metadata.js.map +1 -1
- package/dist/core/search/CandidateRetriever.d.ts +1 -1
- package/dist/core/search/CandidateRetriever.d.ts.map +1 -1
- package/dist/core/search/CandidateRetriever.js +7 -5
- package/dist/core/search/CandidateRetriever.js.map +1 -1
- package/dist/core/search/HybridFusion.d.ts +1 -2
- package/dist/core/search/HybridFusion.d.ts.map +1 -1
- package/dist/core/search/HybridFusion.js +5 -17
- package/dist/core/search/HybridFusion.js.map +1 -1
- package/dist/core/search/ResultMapper.d.ts +0 -1
- package/dist/core/search/ResultMapper.d.ts.map +1 -1
- package/dist/core/search/ResultMapper.js +3 -14
- package/dist/core/search/ResultMapper.js.map +1 -1
- package/dist/core/search/SearchContextManager.d.ts +4 -1
- package/dist/core/search/SearchContextManager.d.ts.map +1 -1
- package/dist/core/search/SearchContextManager.js +19 -6
- package/dist/core/search/SearchContextManager.js.map +1 -1
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +9 -4
- package/dist/core/search.js.map +1 -1
- package/dist/core/types.d.ts +2 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/database/db.d.ts +14 -14
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +14 -14
- package/dist/database/db.js.map +1 -1
- package/dist/indexer/merkle.js +1 -1
- package/dist/indexer/merkle.js.map +1 -1
- package/dist/languages/rules.d.ts +2 -1
- package/dist/languages/rules.d.ts.map +1 -1
- package/dist/languages/rules.js +14 -5
- package/dist/languages/rules.js.map +1 -1
- package/dist/languages/tree-sitter-loader.d.ts +24 -24
- package/dist/languages/tree-sitter-loader.d.ts.map +1 -1
- package/dist/languages/tree-sitter-loader.js +14 -10
- package/dist/languages/tree-sitter-loader.js.map +1 -1
- package/dist/mcp/handlers/context.d.ts +5 -11
- package/dist/mcp/handlers/context.d.ts.map +1 -1
- package/dist/mcp/handlers/context.js.map +1 -1
- package/dist/mcp/handlers/project.d.ts +9 -27
- package/dist/mcp/handlers/project.d.ts.map +1 -1
- package/dist/mcp/handlers/search.d.ts +24 -18
- package/dist/mcp/handlers/search.d.ts.map +1 -1
- package/dist/mcp/handlers/search.js +8 -2
- package/dist/mcp/handlers/search.js.map +1 -1
- package/dist/mcp/handlers/synthesis.d.ts +15 -11
- package/dist/mcp/handlers/synthesis.d.ts.map +1 -1
- package/dist/mcp/handlers/synthesis.js +4 -1
- package/dist/mcp/handlers/synthesis.js.map +1 -1
- package/dist/mcp/schemas.d.ts +2 -2
- package/dist/mcp/tools/ask-codebase.d.ts +10 -28
- package/dist/mcp/tools/ask-codebase.d.ts.map +1 -1
- package/dist/mcp/tools/ask-codebase.js +1 -1
- package/dist/mcp/tools/ask-codebase.js.map +1 -1
- package/dist/mcp/tools/use-context-pack.d.ts +14 -23
- package/dist/mcp/tools/use-context-pack.d.ts.map +1 -1
- package/dist/mcp/tools/use-context-pack.js +4 -3
- package/dist/mcp/tools/use-context-pack.js.map +1 -1
- package/dist/mcp-server.d.ts +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +39 -24
- package/dist/mcp-server.js.map +1 -1
- package/dist/providers/base.d.ts +3 -2
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +3 -10
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/chat-llm.d.ts +3 -2
- package/dist/providers/chat-llm.d.ts.map +1 -1
- package/dist/providers/chat-llm.js +13 -9
- package/dist/providers/chat-llm.js.map +1 -1
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +6 -5
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +15 -19
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/token-counter.d.ts.map +1 -1
- package/dist/providers/token-counter.js +11 -3
- package/dist/providers/token-counter.js.map +1 -1
- package/dist/ranking/api-reranker.d.ts +1 -1
- package/dist/ranking/api-reranker.d.ts.map +1 -1
- package/dist/ranking/api-reranker.js +50 -13
- package/dist/ranking/api-reranker.js.map +1 -1
- package/dist/ranking/symbol-boost.d.ts.map +1 -1
- package/dist/ranking/symbol-boost.js +4 -11
- package/dist/ranking/symbol-boost.js.map +1 -1
- package/dist/search/bm25.d.ts +10 -0
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +16 -0
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/scope.d.ts.map +1 -1
- package/dist/search/scope.js +3 -2
- package/dist/search/scope.js.map +1 -1
- package/dist/storage/encrypted-chunks.d.ts +3 -0
- package/dist/storage/encrypted-chunks.d.ts.map +1 -1
- package/dist/storage/encrypted-chunks.js +126 -47
- package/dist/storage/encrypted-chunks.js.map +1 -1
- package/dist/symbols/extract.d.ts.map +1 -1
- package/dist/symbols/extract.js +3 -2
- package/dist/symbols/extract.js.map +1 -1
- package/dist/symbols/graph.d.ts.map +1 -1
- package/dist/symbols/graph.js +14 -8
- package/dist/symbols/graph.js.map +1 -1
- package/dist/synthesis/conversational-synthesizer.d.ts +2 -1
- package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -1
- package/dist/synthesis/conversational-synthesizer.js +6 -1
- package/dist/synthesis/conversational-synthesizer.js.map +1 -1
- package/dist/synthesis/markdown-formatter.d.ts.map +1 -1
- package/dist/synthesis/markdown-formatter.js +1 -1
- package/dist/synthesis/markdown-formatter.js.map +1 -1
- package/dist/synthesis/prompt-builder.d.ts.map +1 -1
- package/dist/synthesis/prompt-builder.js +42 -15
- package/dist/synthesis/prompt-builder.js.map +1 -1
- package/dist/synthesis/synthesizer.d.ts.map +1 -1
- package/dist/synthesis/synthesizer.js +23 -10
- package/dist/synthesis/synthesizer.js.map +1 -1
- package/dist/tests/api-reranker.test.d.ts +2 -0
- package/dist/tests/api-reranker.test.d.ts.map +1 -0
- package/dist/tests/api-reranker.test.js +575 -0
- package/dist/tests/api-reranker.test.js.map +1 -0
- package/dist/tests/bm25.test.d.ts +2 -0
- package/dist/tests/bm25.test.d.ts.map +1 -0
- package/dist/tests/bm25.test.js +340 -0
- package/dist/tests/bm25.test.js.map +1 -0
- package/dist/tests/chunking/file-grouper.test.d.ts +2 -0
- package/dist/tests/chunking/file-grouper.test.d.ts.map +1 -0
- package/dist/tests/chunking/file-grouper.test.js +495 -0
- package/dist/tests/chunking/file-grouper.test.js.map +1 -0
- package/dist/tests/chunking/semantic-chunker.test.d.ts +2 -0
- package/dist/tests/chunking/semantic-chunker.test.d.ts.map +1 -0
- package/dist/tests/chunking/semantic-chunker.test.js +509 -0
- package/dist/tests/chunking/semantic-chunker.test.js.map +1 -0
- package/dist/tests/chunking/token-counter.test.d.ts +2 -0
- package/dist/tests/chunking/token-counter.test.d.ts.map +1 -0
- package/dist/tests/chunking/token-counter.test.js +441 -0
- package/dist/tests/chunking/token-counter.test.js.map +1 -0
- package/dist/tests/cli/ask-cmd.test.d.ts +2 -0
- package/dist/tests/cli/ask-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/ask-cmd.test.js +152 -0
- package/dist/tests/cli/ask-cmd.test.js.map +1 -0
- package/dist/tests/cli/chat-cmd.test.d.ts +2 -0
- package/dist/tests/cli/chat-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/chat-cmd.test.js +118 -0
- package/dist/tests/cli/chat-cmd.test.js.map +1 -0
- package/dist/tests/cli/config-cmd.test.d.ts +2 -0
- package/dist/tests/cli/config-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/config-cmd.test.js +226 -0
- package/dist/tests/cli/config-cmd.test.js.map +1 -0
- package/dist/tests/cli/context.test.d.ts +2 -0
- package/dist/tests/cli/context.test.d.ts.map +1 -0
- package/dist/tests/cli/context.test.js +158 -0
- package/dist/tests/cli/context.test.js.map +1 -0
- package/dist/tests/cli/index-cmd.test.d.ts +2 -0
- package/dist/tests/cli/index-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/index-cmd.test.js +89 -0
- package/dist/tests/cli/index-cmd.test.js.map +1 -0
- package/dist/tests/cli/index.test.d.ts +2 -0
- package/dist/tests/cli/index.test.d.ts.map +1 -0
- package/dist/tests/cli/index.test.js +167 -0
- package/dist/tests/cli/index.test.js.map +1 -0
- package/dist/tests/cli/info-cmd.test.d.ts +2 -0
- package/dist/tests/cli/info-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/info-cmd.test.js +47 -0
- package/dist/tests/cli/info-cmd.test.js.map +1 -0
- package/dist/tests/cli/interactive-config.test.d.ts +2 -0
- package/dist/tests/cli/interactive-config.test.d.ts.map +1 -0
- package/dist/tests/cli/interactive-config.test.js +30 -0
- package/dist/tests/cli/interactive-config.test.js.map +1 -0
- package/dist/tests/cli/mcp-cmd.test.d.ts +2 -0
- package/dist/tests/cli/mcp-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/mcp-cmd.test.js +47 -0
- package/dist/tests/cli/mcp-cmd.test.js.map +1 -0
- package/dist/tests/cli/search-cmd.test.d.ts +2 -0
- package/dist/tests/cli/search-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/search-cmd.test.js +120 -0
- package/dist/tests/cli/search-cmd.test.js.map +1 -0
- package/dist/tests/cli/search-with-code-cmd.test.d.ts +2 -0
- package/dist/tests/cli/search-with-code-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/search-with-code-cmd.test.js +140 -0
- package/dist/tests/cli/search-with-code-cmd.test.js.map +1 -0
- package/dist/tests/cli/update-cmd.test.d.ts +2 -0
- package/dist/tests/cli/update-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/update-cmd.test.js +75 -0
- package/dist/tests/cli/update-cmd.test.js.map +1 -0
- package/dist/tests/cli/utils.test.d.ts +2 -0
- package/dist/tests/cli/utils.test.d.ts.map +1 -0
- package/dist/tests/cli/utils.test.js +119 -0
- package/dist/tests/cli/utils.test.js.map +1 -0
- package/dist/tests/cli/watch-cmd.test.d.ts +2 -0
- package/dist/tests/cli/watch-cmd.test.d.ts.map +1 -0
- package/dist/tests/cli/watch-cmd.test.js +84 -0
- package/dist/tests/cli/watch-cmd.test.js.map +1 -0
- package/dist/tests/cli-ui.test.d.ts +2 -0
- package/dist/tests/cli-ui.test.d.ts.map +1 -0
- package/dist/tests/cli-ui.test.js +608 -0
- package/dist/tests/cli-ui.test.js.map +1 -0
- package/dist/tests/codemap-io.test.d.ts +2 -0
- package/dist/tests/codemap-io.test.d.ts.map +1 -0
- package/dist/tests/codemap-io.test.js +992 -0
- package/dist/tests/codemap-io.test.js.map +1 -0
- package/dist/tests/config/apply-env.test.d.ts +2 -0
- package/dist/tests/config/apply-env.test.d.ts.map +1 -0
- package/dist/tests/config/apply-env.test.js +717 -0
- package/dist/tests/config/apply-env.test.js.map +1 -0
- package/dist/tests/config/constants.test.d.ts +2 -0
- package/dist/tests/config/constants.test.d.ts.map +1 -0
- package/dist/tests/config/constants.test.js +406 -0
- package/dist/tests/config/constants.test.js.map +1 -0
- package/dist/tests/config/loader.test.d.ts +2 -0
- package/dist/tests/config/loader.test.d.ts.map +1 -0
- package/dist/tests/config/loader.test.js +716 -0
- package/dist/tests/config/loader.test.js.map +1 -0
- package/dist/tests/config/resolver.test.d.ts +2 -0
- package/dist/tests/config/resolver.test.d.ts.map +1 -0
- package/dist/tests/config/resolver.test.js +402 -0
- package/dist/tests/config/resolver.test.js.map +1 -0
- package/dist/tests/config/types.test.d.ts +2 -0
- package/dist/tests/config/types.test.d.ts.map +1 -0
- package/dist/tests/config/types.test.js +460 -0
- package/dist/tests/config/types.test.js.map +1 -0
- package/dist/tests/context-packs.test.d.ts +2 -0
- package/dist/tests/context-packs.test.d.ts.map +1 -0
- package/dist/tests/context-packs.test.js +826 -0
- package/dist/tests/context-packs.test.js.map +1 -0
- package/dist/tests/conversational-synthesizer.test.d.ts +2 -0
- package/dist/tests/conversational-synthesizer.test.d.ts.map +1 -0
- package/dist/tests/conversational-synthesizer.test.js +595 -0
- package/dist/tests/conversational-synthesizer.test.js.map +1 -0
- package/dist/tests/database.test.d.ts +2 -0
- package/dist/tests/database.test.d.ts.map +1 -0
- package/dist/tests/database.test.js +965 -0
- package/dist/tests/database.test.js.map +1 -0
- package/dist/tests/encrypted-chunks.test.d.ts +2 -0
- package/dist/tests/encrypted-chunks.test.d.ts.map +1 -0
- package/dist/tests/encrypted-chunks.test.js +1470 -0
- package/dist/tests/encrypted-chunks.test.js.map +1 -0
- package/dist/tests/hybrid.test.d.ts +2 -0
- package/dist/tests/hybrid.test.d.ts.map +1 -0
- package/dist/tests/hybrid.test.js +456 -0
- package/dist/tests/hybrid.test.js.map +1 -0
- package/dist/tests/indexer/ChangeQueue.test.d.ts +12 -0
- package/dist/tests/indexer/ChangeQueue.test.d.ts.map +1 -0
- package/dist/tests/indexer/ChangeQueue.test.js +441 -0
- package/dist/tests/indexer/ChangeQueue.test.js.map +1 -0
- package/dist/tests/indexer/ProviderManager.test.d.ts +12 -0
- package/dist/tests/indexer/ProviderManager.test.d.ts.map +1 -0
- package/dist/tests/indexer/ProviderManager.test.js +290 -0
- package/dist/tests/indexer/ProviderManager.test.js.map +1 -0
- package/dist/tests/indexer/WatchService.test.d.ts +14 -0
- package/dist/tests/indexer/WatchService.test.d.ts.map +1 -0
- package/dist/tests/indexer/WatchService.test.js +667 -0
- package/dist/tests/indexer/WatchService.test.js.map +1 -0
- package/dist/tests/indexer/merkle.test.d.ts +11 -0
- package/dist/tests/indexer/merkle.test.d.ts.map +1 -0
- package/dist/tests/indexer/merkle.test.js +497 -0
- package/dist/tests/indexer/merkle.test.js.map +1 -0
- package/dist/tests/indexer/update.test.d.ts +10 -0
- package/dist/tests/indexer/update.test.d.ts.map +1 -0
- package/dist/tests/indexer/update.test.js +317 -0
- package/dist/tests/indexer/update.test.js.map +1 -0
- package/dist/tests/indexer/watch.test.d.ts +8 -0
- package/dist/tests/indexer/watch.test.d.ts.map +1 -0
- package/dist/tests/indexer/watch.test.js +95 -0
- package/dist/tests/indexer/watch.test.js.map +1 -0
- package/dist/tests/integration/index-search.integration.test.js +6 -4
- package/dist/tests/integration/index-search.integration.test.js.map +1 -1
- package/dist/tests/languages.test.d.ts +2 -0
- package/dist/tests/languages.test.d.ts.map +1 -0
- package/dist/tests/languages.test.js +575 -0
- package/dist/tests/languages.test.js.map +1 -0
- package/dist/tests/logger-redaction.test.d.ts +2 -0
- package/dist/tests/logger-redaction.test.d.ts.map +1 -0
- package/dist/tests/logger-redaction.test.js +48 -0
- package/dist/tests/logger-redaction.test.js.map +1 -0
- package/dist/tests/logger.test.d.ts +2 -0
- package/dist/tests/logger.test.d.ts.map +1 -0
- package/dist/tests/logger.test.js +468 -0
- package/dist/tests/logger.test.js.map +1 -0
- package/dist/tests/markdown-formatter.test.d.ts +2 -0
- package/dist/tests/markdown-formatter.test.d.ts.map +1 -0
- package/dist/tests/markdown-formatter.test.js +453 -0
- package/dist/tests/markdown-formatter.test.js.map +1 -0
- package/dist/tests/mcp/tools/use-context-pack.test.d.ts +7 -0
- package/dist/tests/mcp/tools/use-context-pack.test.d.ts.map +1 -0
- package/dist/tests/mcp/tools/use-context-pack.test.js +505 -0
- package/dist/tests/mcp/tools/use-context-pack.test.js.map +1 -0
- package/dist/tests/mutex.test.d.ts +2 -0
- package/dist/tests/mutex.test.d.ts.map +1 -0
- package/dist/tests/mutex.test.js +489 -0
- package/dist/tests/mutex.test.js.map +1 -0
- package/dist/tests/path-helpers.test.d.ts +2 -0
- package/dist/tests/path-helpers.test.d.ts.map +1 -0
- package/dist/tests/path-helpers.test.js +332 -0
- package/dist/tests/path-helpers.test.js.map +1 -0
- package/dist/tests/prompt-builder.test.d.ts +2 -0
- package/dist/tests/prompt-builder.test.d.ts.map +1 -0
- package/dist/tests/prompt-builder.test.js +417 -0
- package/dist/tests/prompt-builder.test.js.map +1 -0
- package/dist/tests/providers/base.test.d.ts +2 -0
- package/dist/tests/providers/base.test.d.ts.map +1 -0
- package/dist/tests/providers/base.test.js +299 -0
- package/dist/tests/providers/base.test.js.map +1 -0
- package/dist/tests/providers/chat-llm.test.d.ts +2 -0
- package/dist/tests/providers/chat-llm.test.d.ts.map +1 -0
- package/dist/tests/providers/chat-llm.test.js +435 -0
- package/dist/tests/providers/chat-llm.test.js.map +1 -0
- package/dist/tests/providers/index.test.d.ts +2 -0
- package/dist/tests/providers/index.test.d.ts.map +1 -0
- package/dist/tests/providers/index.test.js +204 -0
- package/dist/tests/providers/index.test.js.map +1 -0
- package/dist/tests/providers/mock.test.d.ts +2 -0
- package/dist/tests/providers/mock.test.d.ts.map +1 -0
- package/dist/tests/providers/mock.test.js +225 -0
- package/dist/tests/providers/mock.test.js.map +1 -0
- package/dist/tests/providers/openai.test.d.ts +2 -0
- package/dist/tests/providers/openai.test.d.ts.map +1 -0
- package/dist/tests/providers/openai.test.js +408 -0
- package/dist/tests/providers/openai.test.js.map +1 -0
- package/dist/tests/providers/token-counter.test.d.ts +2 -0
- package/dist/tests/providers/token-counter.test.d.ts.map +1 -0
- package/dist/tests/providers/token-counter.test.js +247 -0
- package/dist/tests/providers/token-counter.test.js.map +1 -0
- package/dist/tests/rate-limiter.test.js +392 -1
- package/dist/tests/rate-limiter.test.js.map +1 -1
- package/dist/tests/scope.test.d.ts +2 -0
- package/dist/tests/scope.test.d.ts.map +1 -0
- package/dist/tests/scope.test.js +529 -0
- package/dist/tests/scope.test.js.map +1 -0
- package/dist/tests/search-normalization.test.js.map +1 -1
- package/dist/tests/semantic-chunker.test.js.map +1 -1
- package/dist/tests/simple-lru.test.js +377 -0
- package/dist/tests/simple-lru.test.js.map +1 -1
- package/dist/tests/symbol-boost.test.js +730 -10
- package/dist/tests/symbol-boost.test.js.map +1 -1
- package/dist/tests/symbols-extract.test.d.ts +2 -0
- package/dist/tests/symbols-extract.test.d.ts.map +1 -0
- package/dist/tests/symbols-extract.test.js +536 -0
- package/dist/tests/symbols-extract.test.js.map +1 -0
- package/dist/tests/symbols-graph.test.d.ts +2 -0
- package/dist/tests/symbols-graph.test.d.ts.map +1 -0
- package/dist/tests/symbols-graph.test.js +656 -0
- package/dist/tests/symbols-graph.test.js.map +1 -0
- package/dist/tests/synthesizer.test.d.ts +2 -0
- package/dist/tests/synthesizer.test.d.ts.map +1 -0
- package/dist/tests/synthesizer.test.js +381 -0
- package/dist/tests/synthesizer.test.js.map +1 -0
- package/dist/types/codemap.d.ts +2 -2
- package/dist/types/codemap.d.ts.map +1 -1
- package/dist/types/codemap.js +17 -9
- package/dist/types/codemap.js.map +1 -1
- package/dist/types/context-pack.d.ts +5 -5
- package/dist/types/context-pack.d.ts.map +1 -1
- package/dist/types/context-pack.js +6 -3
- package/dist/types/context-pack.js.map +1 -1
- package/dist/utils/cli-ui.d.ts +1 -1
- package/dist/utils/cli-ui.d.ts.map +1 -1
- package/dist/utils/cli-ui.js +26 -26
- package/dist/utils/cli-ui.js.map +1 -1
- package/dist/utils/indexer-with-progress.d.ts.map +1 -1
- package/dist/utils/indexer-with-progress.js +0 -6
- package/dist/utils/indexer-with-progress.js.map +1 -1
- package/dist/utils/logger.d.ts +10 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +158 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mutex.d.ts +7 -2
- package/dist/utils/mutex.d.ts.map +1 -1
- package/dist/utils/mutex.js +35 -7
- package/dist/utils/mutex.js.map +1 -1
- package/dist/utils/path-helpers.d.ts.map +1 -1
- package/dist/utils/path-helpers.js +5 -2
- package/dist/utils/path-helpers.js.map +1 -1
- package/dist/utils/rate-limiter.d.ts.map +1 -1
- package/dist/utils/rate-limiter.js +23 -4
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/simple-lru.d.ts +6 -0
- package/dist/utils/simple-lru.d.ts.map +1 -1
- package/dist/utils/simple-lru.js +26 -0
- package/dist/utils/simple-lru.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { LANG_RULES, getSupportedLanguageExtensions } from '../languages/rules.js';
|
|
4
|
+
import { RESOLVED_LANGUAGES } from '../languages/tree-sitter-loader.js';
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Test: RESOLVED_LANGUAGES - Tree-sitter parser loading
|
|
7
|
+
// ============================================================================
|
|
8
|
+
test('RESOLVED_LANGUAGES contains all expected language parsers', () => {
|
|
9
|
+
const expectedLanguages = [
|
|
10
|
+
'bash', 'c', 'csharp', 'cpp', 'css', 'elixir', 'go', 'haskell',
|
|
11
|
+
'html', 'java', 'javascript', 'json', 'kotlin', 'lua', 'markdown',
|
|
12
|
+
'ocaml', 'php', 'python', 'ruby', 'rust', 'scala', 'swift', 'tsx', 'typescript'
|
|
13
|
+
];
|
|
14
|
+
for (const lang of expectedLanguages) {
|
|
15
|
+
assert.ok(lang in RESOLVED_LANGUAGES, `RESOLVED_LANGUAGES should contain '${lang}'`);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
test('RESOLVED_LANGUAGES parsers are non-null objects', () => {
|
|
19
|
+
for (const [lang, parser] of Object.entries(RESOLVED_LANGUAGES)) {
|
|
20
|
+
assert.ok(parser !== null && parser !== undefined, `Parser for '${lang}' should not be null or undefined`);
|
|
21
|
+
assert.equal(typeof parser, 'object', `Parser for '${lang}' should be an object`);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
test('RESOLVED_LANGUAGES count matches expected number of languages', () => {
|
|
25
|
+
const languageCount = Object.keys(RESOLVED_LANGUAGES).length;
|
|
26
|
+
assert.equal(languageCount, 24, `RESOLVED_LANGUAGES should contain 24 languages, got ${languageCount}`);
|
|
27
|
+
});
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Test: LANG_RULES - Language rules structure
|
|
30
|
+
// ============================================================================
|
|
31
|
+
test('LANG_RULES contains rules for all expected file extensions', () => {
|
|
32
|
+
const expectedExtensions = [
|
|
33
|
+
'.php', '.py', '.js', '.jsx', '.ts', '.tsx', '.go', '.java', '.cs',
|
|
34
|
+
'.rs', '.rb', '.cpp', '.hpp', '.cc', '.c', '.h', '.scala', '.swift',
|
|
35
|
+
'.sh', '.bash', '.kt', '.lua', '.html', '.htm', '.css', '.json',
|
|
36
|
+
'.ml', '.mli', '.hs', '.ex', '.exs', '.md', '.markdown'
|
|
37
|
+
];
|
|
38
|
+
for (const ext of expectedExtensions) {
|
|
39
|
+
assert.ok(ext in LANG_RULES, `LANG_RULES should contain rule for extension '${ext}'`);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
test('Each LANG_RULES entry has required properties', () => {
|
|
43
|
+
for (const [ext, rule] of Object.entries(LANG_RULES)) {
|
|
44
|
+
assert.ok(typeof rule.lang === 'string' && rule.lang.length > 0, `Rule for '${ext}' should have non-empty 'lang' string`);
|
|
45
|
+
assert.ok(Array.isArray(rule.nodeTypes), `Rule for '${ext}' should have 'nodeTypes' array`);
|
|
46
|
+
assert.ok(rule.nodeTypes.length > 0, `Rule for '${ext}' should have at least one nodeType`);
|
|
47
|
+
assert.ok('commentPattern' in rule, `Rule for '${ext}' should have 'commentPattern' property`);
|
|
48
|
+
assert.ok(rule.commentPattern === null || rule.commentPattern instanceof RegExp, `Rule for '${ext}' commentPattern should be null or RegExp`);
|
|
49
|
+
assert.ok('ts' in rule, `Rule for '${ext}' should have 'ts' property for tree-sitter parser`);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
test('Each LANG_RULES entry has valid subdivisionTypes', () => {
|
|
53
|
+
for (const [ext, rule] of Object.entries(LANG_RULES)) {
|
|
54
|
+
if (rule.subdivisionTypes) {
|
|
55
|
+
assert.ok(typeof rule.subdivisionTypes === 'object', `Rule for '${ext}' subdivisionTypes should be an object`);
|
|
56
|
+
for (const [nodeType, subTypes] of Object.entries(rule.subdivisionTypes)) {
|
|
57
|
+
assert.ok(Array.isArray(subTypes), `subdivisionTypes['${nodeType}'] for '${ext}' should be an array`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
test('Each LANG_RULES entry has valid variableTypes', () => {
|
|
63
|
+
for (const [ext, rule] of Object.entries(LANG_RULES)) {
|
|
64
|
+
if (rule.variableTypes) {
|
|
65
|
+
assert.ok(Array.isArray(rule.variableTypes), `Rule for '${ext}' variableTypes should be an array`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// Test: Language detection via file extension mapping
|
|
71
|
+
// ============================================================================
|
|
72
|
+
test('File extension maps to correct language name', () => {
|
|
73
|
+
const extensionToLang = {
|
|
74
|
+
'.php': 'php',
|
|
75
|
+
'.py': 'python',
|
|
76
|
+
'.js': 'javascript',
|
|
77
|
+
'.jsx': 'tsx',
|
|
78
|
+
'.ts': 'typescript',
|
|
79
|
+
'.tsx': 'tsx',
|
|
80
|
+
'.go': 'go',
|
|
81
|
+
'.java': 'java',
|
|
82
|
+
'.cs': 'csharp',
|
|
83
|
+
'.rs': 'rust',
|
|
84
|
+
'.rb': 'ruby',
|
|
85
|
+
'.cpp': 'cpp',
|
|
86
|
+
'.hpp': 'cpp',
|
|
87
|
+
'.cc': 'cpp',
|
|
88
|
+
'.c': 'c',
|
|
89
|
+
'.h': 'c',
|
|
90
|
+
'.scala': 'scala',
|
|
91
|
+
'.swift': 'swift',
|
|
92
|
+
'.sh': 'bash',
|
|
93
|
+
'.bash': 'bash',
|
|
94
|
+
'.kt': 'kotlin',
|
|
95
|
+
'.lua': 'lua',
|
|
96
|
+
'.html': 'html',
|
|
97
|
+
'.htm': 'html',
|
|
98
|
+
'.css': 'css',
|
|
99
|
+
'.json': 'json',
|
|
100
|
+
'.ml': 'ocaml',
|
|
101
|
+
'.mli': 'ocaml',
|
|
102
|
+
'.hs': 'haskell',
|
|
103
|
+
'.ex': 'elixir',
|
|
104
|
+
'.exs': 'elixir',
|
|
105
|
+
'.md': 'markdown',
|
|
106
|
+
'.markdown': 'markdown'
|
|
107
|
+
};
|
|
108
|
+
for (const [ext, expectedLang] of Object.entries(extensionToLang)) {
|
|
109
|
+
const rule = LANG_RULES[ext];
|
|
110
|
+
assert.ok(rule, `Rule for extension '${ext}' should exist`);
|
|
111
|
+
assert.equal(rule.lang, expectedLang, `Extension '${ext}' should map to language '${expectedLang}', got '${rule.lang}'`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
test('Aliases map to same tree-sitter parser', () => {
|
|
115
|
+
// C++ extensions should use same parser
|
|
116
|
+
assert.strictEqual(LANG_RULES['.cpp'].ts, LANG_RULES['.hpp'].ts, '.cpp and .hpp should use same parser');
|
|
117
|
+
assert.strictEqual(LANG_RULES['.cpp'].ts, LANG_RULES['.cc'].ts, '.cpp and .cc should use same parser');
|
|
118
|
+
// C extensions should use same parser
|
|
119
|
+
assert.strictEqual(LANG_RULES['.c'].ts, LANG_RULES['.h'].ts, '.c and .h should use same parser');
|
|
120
|
+
// Bash extensions should use same parser
|
|
121
|
+
assert.strictEqual(LANG_RULES['.sh'].ts, LANG_RULES['.bash'].ts, '.sh and .bash should use same parser');
|
|
122
|
+
// HTML extensions should use same parser
|
|
123
|
+
assert.strictEqual(LANG_RULES['.html'].ts, LANG_RULES['.htm'].ts, '.html and .htm should use same parser');
|
|
124
|
+
// Markdown extensions should use same parser
|
|
125
|
+
assert.strictEqual(LANG_RULES['.md'].ts, LANG_RULES['.markdown'].ts, '.md and .markdown should use same parser');
|
|
126
|
+
// Elixir extensions should use same parser
|
|
127
|
+
assert.strictEqual(LANG_RULES['.ex'].ts, LANG_RULES['.exs'].ts, '.ex and .exs should use same parser');
|
|
128
|
+
// OCaml extensions should use same parser
|
|
129
|
+
assert.strictEqual(LANG_RULES['.ml'].ts, LANG_RULES['.mli'].ts, '.ml and .mli should use same parser');
|
|
130
|
+
});
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// Test: Parsing rule correctness for specific languages
|
|
133
|
+
// ============================================================================
|
|
134
|
+
test('JavaScript rule has correct node types for functions and classes', () => {
|
|
135
|
+
const jsRule = LANG_RULES['.js'];
|
|
136
|
+
assert.ok(jsRule.nodeTypes.includes('function_declaration'));
|
|
137
|
+
assert.ok(jsRule.nodeTypes.includes('method_definition'));
|
|
138
|
+
assert.ok(jsRule.nodeTypes.includes('class_declaration'));
|
|
139
|
+
assert.ok(jsRule.nodeTypes.includes('export_statement'));
|
|
140
|
+
});
|
|
141
|
+
test('TypeScript rule has correct node types', () => {
|
|
142
|
+
const tsRule = LANG_RULES['.ts'];
|
|
143
|
+
assert.ok(tsRule.nodeTypes.includes('function_declaration'));
|
|
144
|
+
assert.ok(tsRule.nodeTypes.includes('method_definition'));
|
|
145
|
+
assert.ok(tsRule.nodeTypes.includes('class_declaration'));
|
|
146
|
+
assert.ok(tsRule.nodeTypes.includes('export_statement'));
|
|
147
|
+
assert.ok(tsRule.nodeTypes.includes('lexical_declaration'));
|
|
148
|
+
});
|
|
149
|
+
test('Python rule has correct node types', () => {
|
|
150
|
+
const pyRule = LANG_RULES['.py'];
|
|
151
|
+
assert.ok(pyRule.nodeTypes.includes('function_definition'));
|
|
152
|
+
assert.ok(pyRule.nodeTypes.includes('class_definition'));
|
|
153
|
+
});
|
|
154
|
+
test('Go rule has correct node types', () => {
|
|
155
|
+
const goRule = LANG_RULES['.go'];
|
|
156
|
+
assert.ok(goRule.nodeTypes.includes('function_declaration'));
|
|
157
|
+
assert.ok(goRule.nodeTypes.includes('method_declaration'));
|
|
158
|
+
assert.ok(goRule.nodeTypes.includes('type_declaration'));
|
|
159
|
+
});
|
|
160
|
+
test('Rust rule has correct node types for items', () => {
|
|
161
|
+
const rsRule = LANG_RULES['.rs'];
|
|
162
|
+
assert.ok(rsRule.nodeTypes.includes('function_item'));
|
|
163
|
+
assert.ok(rsRule.nodeTypes.includes('impl_item'));
|
|
164
|
+
assert.ok(rsRule.nodeTypes.includes('struct_item'));
|
|
165
|
+
assert.ok(rsRule.nodeTypes.includes('enum_item'));
|
|
166
|
+
assert.ok(rsRule.nodeTypes.includes('trait_item'));
|
|
167
|
+
assert.ok(rsRule.nodeTypes.includes('mod_item'));
|
|
168
|
+
});
|
|
169
|
+
test('Java rule has correct node types', () => {
|
|
170
|
+
const javaRule = LANG_RULES['.java'];
|
|
171
|
+
assert.ok(javaRule.nodeTypes.includes('method_declaration'));
|
|
172
|
+
assert.ok(javaRule.nodeTypes.includes('class_declaration'));
|
|
173
|
+
assert.ok(javaRule.nodeTypes.includes('interface_declaration'));
|
|
174
|
+
});
|
|
175
|
+
test('C# rule has correct node types', () => {
|
|
176
|
+
const csRule = LANG_RULES['.cs'];
|
|
177
|
+
assert.ok(csRule.nodeTypes.includes('method_declaration'));
|
|
178
|
+
assert.ok(csRule.nodeTypes.includes('class_declaration'));
|
|
179
|
+
assert.ok(csRule.nodeTypes.includes('struct_declaration'));
|
|
180
|
+
assert.ok(csRule.nodeTypes.includes('interface_declaration'));
|
|
181
|
+
});
|
|
182
|
+
test('Ruby rule has correct node types', () => {
|
|
183
|
+
const rbRule = LANG_RULES['.rb'];
|
|
184
|
+
assert.ok(rbRule.nodeTypes.includes('method'));
|
|
185
|
+
assert.ok(rbRule.nodeTypes.includes('class'));
|
|
186
|
+
assert.ok(rbRule.nodeTypes.includes('module'));
|
|
187
|
+
assert.ok(rbRule.nodeTypes.includes('singleton_method'));
|
|
188
|
+
});
|
|
189
|
+
// ============================================================================
|
|
190
|
+
// Test: Comment patterns for different languages
|
|
191
|
+
// ============================================================================
|
|
192
|
+
test('JSDoc-style comment patterns match correctly', () => {
|
|
193
|
+
const jsdocPattern = LANG_RULES['.js'].commentPattern;
|
|
194
|
+
assert.ok(jsdocPattern !== null);
|
|
195
|
+
const jsdocComment = '/** This is a JSDoc comment */';
|
|
196
|
+
const matches = jsdocComment.match(jsdocPattern);
|
|
197
|
+
assert.ok(matches !== null, 'Should match JSDoc comments');
|
|
198
|
+
assert.equal(matches[0], jsdocComment);
|
|
199
|
+
});
|
|
200
|
+
test('Python docstring pattern matches correctly', () => {
|
|
201
|
+
const pyPattern = LANG_RULES['.py'].commentPattern;
|
|
202
|
+
assert.ok(pyPattern !== null);
|
|
203
|
+
const tripleDoubleQuote = '"""This is a docstring"""';
|
|
204
|
+
const tripleSingleQuote = "'''This is also a docstring'''";
|
|
205
|
+
assert.ok(tripleDoubleQuote.match(pyPattern) !== null);
|
|
206
|
+
assert.ok(tripleSingleQuote.match(pyPattern) !== null);
|
|
207
|
+
});
|
|
208
|
+
test('Ruby comment pattern matches correctly', () => {
|
|
209
|
+
const rbPattern = LANG_RULES['.rb'].commentPattern;
|
|
210
|
+
assert.ok(rbPattern !== null);
|
|
211
|
+
const rubyComment = '# This is a Ruby comment';
|
|
212
|
+
const matches = rubyComment.match(rbPattern);
|
|
213
|
+
assert.ok(matches !== null, 'Should match Ruby line comments');
|
|
214
|
+
});
|
|
215
|
+
test('Haskell comment pattern matches correctly', () => {
|
|
216
|
+
const hsPattern = LANG_RULES['.hs'].commentPattern;
|
|
217
|
+
assert.ok(hsPattern !== null);
|
|
218
|
+
const haskellComment = '-- This is a Haskell comment';
|
|
219
|
+
const matches = haskellComment.match(hsPattern);
|
|
220
|
+
assert.ok(matches !== null, 'Should match Haskell line comments');
|
|
221
|
+
});
|
|
222
|
+
test('Lua comment pattern matches correctly', () => {
|
|
223
|
+
const luaPattern = LANG_RULES['.lua'].commentPattern;
|
|
224
|
+
assert.ok(luaPattern !== null);
|
|
225
|
+
const luaComment = '-- This is a Lua comment';
|
|
226
|
+
const matches = luaComment.match(luaPattern);
|
|
227
|
+
assert.ok(matches !== null, 'Should match Lua line comments');
|
|
228
|
+
});
|
|
229
|
+
test('OCaml comment pattern matches correctly', () => {
|
|
230
|
+
const mlPattern = LANG_RULES['.ml'].commentPattern;
|
|
231
|
+
assert.ok(mlPattern !== null);
|
|
232
|
+
const ocamlComment = '(* This is an OCaml comment *)';
|
|
233
|
+
const matches = ocamlComment.match(mlPattern);
|
|
234
|
+
assert.ok(matches !== null, 'Should match OCaml block comments');
|
|
235
|
+
});
|
|
236
|
+
test('HTML comment pattern matches correctly', () => {
|
|
237
|
+
const htmlPattern = LANG_RULES['.html'].commentPattern;
|
|
238
|
+
assert.ok(htmlPattern !== null);
|
|
239
|
+
const htmlComment = '<!-- This is an HTML comment -->';
|
|
240
|
+
const matches = htmlComment.match(htmlPattern);
|
|
241
|
+
assert.ok(matches !== null, 'Should match HTML comments');
|
|
242
|
+
});
|
|
243
|
+
test('JSON has null comment pattern (no comments)', () => {
|
|
244
|
+
const jsonRule = LANG_RULES['.json'];
|
|
245
|
+
assert.strictEqual(jsonRule.commentPattern, null, 'JSON should have null comment pattern');
|
|
246
|
+
});
|
|
247
|
+
// ============================================================================
|
|
248
|
+
// Test: Subdivision types for semantic chunking
|
|
249
|
+
// ============================================================================
|
|
250
|
+
test('JavaScript class subdivides into methods and fields', () => {
|
|
251
|
+
const jsRule = LANG_RULES['.js'];
|
|
252
|
+
assert.ok(jsRule.subdivisionTypes);
|
|
253
|
+
const classSubdivisions = jsRule.subdivisionTypes['class_declaration'];
|
|
254
|
+
assert.ok(Array.isArray(classSubdivisions));
|
|
255
|
+
assert.ok(classSubdivisions.includes('method_definition'));
|
|
256
|
+
assert.ok(classSubdivisions.includes('field_definition'));
|
|
257
|
+
});
|
|
258
|
+
test('Python class subdivides into functions', () => {
|
|
259
|
+
const pyRule = LANG_RULES['.py'];
|
|
260
|
+
assert.ok(pyRule.subdivisionTypes);
|
|
261
|
+
const classSubdivisions = pyRule.subdivisionTypes['class_definition'];
|
|
262
|
+
assert.ok(Array.isArray(classSubdivisions));
|
|
263
|
+
assert.ok(classSubdivisions.includes('function_definition'));
|
|
264
|
+
});
|
|
265
|
+
test('Go type declaration subdivides into methods', () => {
|
|
266
|
+
const goRule = LANG_RULES['.go'];
|
|
267
|
+
assert.ok(goRule.subdivisionTypes);
|
|
268
|
+
const typeSubdivisions = goRule.subdivisionTypes['type_declaration'];
|
|
269
|
+
assert.ok(Array.isArray(typeSubdivisions));
|
|
270
|
+
assert.ok(typeSubdivisions.includes('method_declaration'));
|
|
271
|
+
});
|
|
272
|
+
test('Rust impl item subdivides into functions', () => {
|
|
273
|
+
const rsRule = LANG_RULES['.rs'];
|
|
274
|
+
assert.ok(rsRule.subdivisionTypes);
|
|
275
|
+
const implSubdivisions = rsRule.subdivisionTypes['impl_item'];
|
|
276
|
+
assert.ok(Array.isArray(implSubdivisions));
|
|
277
|
+
assert.ok(implSubdivisions.includes('function_item'));
|
|
278
|
+
});
|
|
279
|
+
test('Java class subdivides into methods, constructors, and fields', () => {
|
|
280
|
+
const javaRule = LANG_RULES['.java'];
|
|
281
|
+
assert.ok(javaRule.subdivisionTypes);
|
|
282
|
+
const classSubdivisions = javaRule.subdivisionTypes['class_declaration'];
|
|
283
|
+
assert.ok(Array.isArray(classSubdivisions));
|
|
284
|
+
assert.ok(classSubdivisions.includes('method_declaration'));
|
|
285
|
+
assert.ok(classSubdivisions.includes('constructor_declaration'));
|
|
286
|
+
assert.ok(classSubdivisions.includes('field_declaration'));
|
|
287
|
+
});
|
|
288
|
+
test('C# class subdivides into methods, properties, and fields', () => {
|
|
289
|
+
const csRule = LANG_RULES['.cs'];
|
|
290
|
+
assert.ok(csRule.subdivisionTypes);
|
|
291
|
+
const classSubdivisions = csRule.subdivisionTypes['class_declaration'];
|
|
292
|
+
assert.ok(Array.isArray(classSubdivisions));
|
|
293
|
+
assert.ok(classSubdivisions.includes('method_declaration'));
|
|
294
|
+
assert.ok(classSubdivisions.includes('property_declaration'));
|
|
295
|
+
assert.ok(classSubdivisions.includes('field_declaration'));
|
|
296
|
+
});
|
|
297
|
+
test('Ruby class subdivides into methods', () => {
|
|
298
|
+
const rbRule = LANG_RULES['.rb'];
|
|
299
|
+
assert.ok(rbRule.subdivisionTypes);
|
|
300
|
+
const classSubdivisions = rbRule.subdivisionTypes['class'];
|
|
301
|
+
assert.ok(Array.isArray(classSubdivisions));
|
|
302
|
+
assert.ok(classSubdivisions.includes('method'));
|
|
303
|
+
assert.ok(classSubdivisions.includes('singleton_method'));
|
|
304
|
+
});
|
|
305
|
+
test('Markdown section subdivides into headings, paragraphs, and code blocks', () => {
|
|
306
|
+
const mdRule = LANG_RULES['.md'];
|
|
307
|
+
assert.ok(mdRule.subdivisionTypes);
|
|
308
|
+
const sectionSubdivisions = mdRule.subdivisionTypes['section'];
|
|
309
|
+
assert.ok(Array.isArray(sectionSubdivisions));
|
|
310
|
+
assert.ok(sectionSubdivisions.includes('atx_heading'));
|
|
311
|
+
assert.ok(sectionSubdivisions.includes('paragraph'));
|
|
312
|
+
assert.ok(sectionSubdivisions.includes('fenced_code_block'));
|
|
313
|
+
});
|
|
314
|
+
// ============================================================================
|
|
315
|
+
// Test: Variable types for each language
|
|
316
|
+
// ============================================================================
|
|
317
|
+
test('JavaScript variable types are correct', () => {
|
|
318
|
+
const jsRule = LANG_RULES['.js'];
|
|
319
|
+
assert.ok(Array.isArray(jsRule.variableTypes));
|
|
320
|
+
assert.ok(jsRule.variableTypes?.includes('const_declaration'));
|
|
321
|
+
assert.ok(jsRule.variableTypes?.includes('let_declaration'));
|
|
322
|
+
assert.ok(jsRule.variableTypes?.includes('variable_declaration'));
|
|
323
|
+
});
|
|
324
|
+
test('Python variable types are correct', () => {
|
|
325
|
+
const pyRule = LANG_RULES['.py'];
|
|
326
|
+
assert.ok(Array.isArray(pyRule.variableTypes));
|
|
327
|
+
assert.ok(pyRule.variableTypes?.includes('assignment'));
|
|
328
|
+
assert.ok(pyRule.variableTypes?.includes('expression_statement'));
|
|
329
|
+
});
|
|
330
|
+
test('Rust variable types are correct', () => {
|
|
331
|
+
const rsRule = LANG_RULES['.rs'];
|
|
332
|
+
assert.ok(Array.isArray(rsRule.variableTypes));
|
|
333
|
+
assert.ok(rsRule.variableTypes?.includes('let_declaration'));
|
|
334
|
+
assert.ok(rsRule.variableTypes?.includes('const_item'));
|
|
335
|
+
assert.ok(rsRule.variableTypes?.includes('static_item'));
|
|
336
|
+
});
|
|
337
|
+
test('Go variable types are correct', () => {
|
|
338
|
+
const goRule = LANG_RULES['.go'];
|
|
339
|
+
assert.ok(Array.isArray(goRule.variableTypes));
|
|
340
|
+
assert.ok(goRule.variableTypes?.includes('const_declaration'));
|
|
341
|
+
assert.ok(goRule.variableTypes?.includes('var_declaration'));
|
|
342
|
+
assert.ok(goRule.variableTypes?.includes('short_var_declaration'));
|
|
343
|
+
});
|
|
344
|
+
test('HTML and CSS have empty variable types', () => {
|
|
345
|
+
const htmlRule = LANG_RULES['.html'];
|
|
346
|
+
const cssRule = LANG_RULES['.css'];
|
|
347
|
+
assert.ok(Array.isArray(htmlRule.variableTypes));
|
|
348
|
+
assert.equal(htmlRule.variableTypes?.length, 0);
|
|
349
|
+
assert.ok(Array.isArray(cssRule.variableTypes));
|
|
350
|
+
assert.equal(cssRule.variableTypes?.length, 0);
|
|
351
|
+
});
|
|
352
|
+
// ============================================================================
|
|
353
|
+
// Test: getSupportedLanguageExtensions function
|
|
354
|
+
// ============================================================================
|
|
355
|
+
test('getSupportedLanguageExtensions returns all extension keys', () => {
|
|
356
|
+
const extensions = getSupportedLanguageExtensions();
|
|
357
|
+
const ruleKeys = Object.keys(LANG_RULES);
|
|
358
|
+
assert.deepEqual(extensions.sort(), ruleKeys.sort(), 'getSupportedLanguageExtensions should return all LANG_RULES keys');
|
|
359
|
+
});
|
|
360
|
+
test('getSupportedLanguageExtensions returns array of strings', () => {
|
|
361
|
+
const extensions = getSupportedLanguageExtensions();
|
|
362
|
+
assert.ok(Array.isArray(extensions));
|
|
363
|
+
for (const ext of extensions) {
|
|
364
|
+
assert.equal(typeof ext, 'string');
|
|
365
|
+
assert.ok(ext.startsWith('.'), `Extension '${ext}' should start with '.'`);
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
test('getSupportedLanguageExtensions includes common file extensions', () => {
|
|
369
|
+
const extensions = getSupportedLanguageExtensions();
|
|
370
|
+
const commonExtensions = ['.js', '.ts', '.py', '.go', '.java', '.rs', '.rb', '.cpp', '.c'];
|
|
371
|
+
for (const ext of commonExtensions) {
|
|
372
|
+
assert.ok(extensions.includes(ext), `Should include common extension '${ext}'`);
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
// ============================================================================
|
|
376
|
+
// Test: Fallback behavior for unsupported languages
|
|
377
|
+
// ============================================================================
|
|
378
|
+
test('Unsupported file extensions return undefined from LANG_RULES', () => {
|
|
379
|
+
const unsupportedExtensions = ['.xyz', '.unknown', '.foo', '.bar', '.abc'];
|
|
380
|
+
for (const ext of unsupportedExtensions) {
|
|
381
|
+
assert.strictEqual(LANG_RULES[ext], undefined, `LANG_RULES['${ext}'] should be undefined for unsupported extension`);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
test('LANG_RULES can be safely accessed with bracket notation', () => {
|
|
385
|
+
// This tests that accessing non-existent keys does not throw
|
|
386
|
+
const result = LANG_RULES['.nonexistent'];
|
|
387
|
+
assert.strictEqual(result, undefined);
|
|
388
|
+
// Safe pattern for checking language support
|
|
389
|
+
const ext = '.ts';
|
|
390
|
+
if (ext in LANG_RULES) {
|
|
391
|
+
const rule = LANG_RULES[ext];
|
|
392
|
+
assert.ok(rule.lang === 'typescript');
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
// ============================================================================
|
|
396
|
+
// Test: Tree-sitter parser references are consistent
|
|
397
|
+
// ============================================================================
|
|
398
|
+
test('LANG_RULES.ts references RESOLVED_LANGUAGES correctly', () => {
|
|
399
|
+
// Verify that each rule references its corresponding resolved language
|
|
400
|
+
const mappings = {
|
|
401
|
+
'.php': 'php',
|
|
402
|
+
'.py': 'python',
|
|
403
|
+
'.js': 'javascript',
|
|
404
|
+
'.jsx': 'tsx',
|
|
405
|
+
'.ts': 'typescript',
|
|
406
|
+
'.tsx': 'tsx',
|
|
407
|
+
'.go': 'go',
|
|
408
|
+
'.java': 'java',
|
|
409
|
+
'.cs': 'csharp',
|
|
410
|
+
'.rs': 'rust',
|
|
411
|
+
'.rb': 'ruby',
|
|
412
|
+
'.cpp': 'cpp',
|
|
413
|
+
'.c': 'c',
|
|
414
|
+
'.scala': 'scala',
|
|
415
|
+
'.swift': 'swift',
|
|
416
|
+
'.sh': 'bash',
|
|
417
|
+
'.kt': 'kotlin',
|
|
418
|
+
'.lua': 'lua',
|
|
419
|
+
'.html': 'html',
|
|
420
|
+
'.css': 'css',
|
|
421
|
+
'.json': 'json',
|
|
422
|
+
'.ml': 'ocaml',
|
|
423
|
+
'.hs': 'haskell',
|
|
424
|
+
'.ex': 'elixir',
|
|
425
|
+
'.md': 'markdown'
|
|
426
|
+
};
|
|
427
|
+
for (const [ext, langKey] of Object.entries(mappings)) {
|
|
428
|
+
const rule = LANG_RULES[ext];
|
|
429
|
+
assert.ok(rule, `Rule for '${ext}' should exist`);
|
|
430
|
+
assert.strictEqual(rule.ts, RESOLVED_LANGUAGES[langKey], `Rule for '${ext}' should reference RESOLVED_LANGUAGES.${langKey}`);
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
// ============================================================================
|
|
434
|
+
// Test: LanguageRule interface compliance
|
|
435
|
+
// ============================================================================
|
|
436
|
+
test('All LANG_RULES entries comply with LanguageRule interface', () => {
|
|
437
|
+
for (const [ext, rule] of Object.entries(LANG_RULES)) {
|
|
438
|
+
// Required properties
|
|
439
|
+
assert.ok(typeof rule.lang === 'string', `${ext}: 'lang' must be a string`);
|
|
440
|
+
assert.ok(Array.isArray(rule.nodeTypes), `${ext}: 'nodeTypes' must be an array`);
|
|
441
|
+
assert.ok(rule.commentPattern === null || rule.commentPattern instanceof RegExp, `${ext}: 'commentPattern' must be null or RegExp`);
|
|
442
|
+
assert.ok('ts' in rule, `${ext}: 'ts' property must exist`);
|
|
443
|
+
// Optional properties when present
|
|
444
|
+
if ('subdivisionTypes' in rule && rule.subdivisionTypes !== undefined) {
|
|
445
|
+
assert.ok(typeof rule.subdivisionTypes === 'object', `${ext}: 'subdivisionTypes' must be an object when present`);
|
|
446
|
+
}
|
|
447
|
+
if ('variableTypes' in rule && rule.variableTypes !== undefined) {
|
|
448
|
+
assert.ok(Array.isArray(rule.variableTypes), `${ext}: 'variableTypes' must be an array when present`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
// ============================================================================
|
|
453
|
+
// Test: Edge cases and boundary conditions
|
|
454
|
+
// ============================================================================
|
|
455
|
+
test('Extension with dot prefix lookup matches correctly', () => {
|
|
456
|
+
// Verify that the extension format is consistent (always with leading dot)
|
|
457
|
+
const validExtension = '.ts';
|
|
458
|
+
const invalidFormat = 'ts'; // without dot
|
|
459
|
+
assert.ok(LANG_RULES[validExtension] !== undefined);
|
|
460
|
+
assert.strictEqual(LANG_RULES[invalidFormat], undefined);
|
|
461
|
+
});
|
|
462
|
+
test('Empty string extension returns undefined', () => {
|
|
463
|
+
assert.strictEqual(LANG_RULES[''], undefined);
|
|
464
|
+
});
|
|
465
|
+
test('Single dot extension returns undefined', () => {
|
|
466
|
+
assert.strictEqual(LANG_RULES['.'], undefined);
|
|
467
|
+
});
|
|
468
|
+
test('Case sensitivity of extensions', () => {
|
|
469
|
+
// Extensions should be lowercase
|
|
470
|
+
assert.ok(LANG_RULES['.ts'] !== undefined);
|
|
471
|
+
assert.strictEqual(LANG_RULES['.TS'], undefined);
|
|
472
|
+
assert.strictEqual(LANG_RULES['.Ts'], undefined);
|
|
473
|
+
});
|
|
474
|
+
// ============================================================================
|
|
475
|
+
// Test: Multiline comment patterns
|
|
476
|
+
// ============================================================================
|
|
477
|
+
test('C-style multiline comment pattern matches correctly', () => {
|
|
478
|
+
const cPattern = LANG_RULES['.c'].commentPattern;
|
|
479
|
+
assert.ok(cPattern !== null);
|
|
480
|
+
const multilineComment = '/* This is a\nmultiline\ncomment */';
|
|
481
|
+
const matches = multilineComment.match(cPattern);
|
|
482
|
+
assert.ok(matches !== null, 'Should match C multiline comments');
|
|
483
|
+
});
|
|
484
|
+
test('Python multiline docstring pattern matches correctly', () => {
|
|
485
|
+
const pyPattern = LANG_RULES['.py'].commentPattern;
|
|
486
|
+
assert.ok(pyPattern !== null);
|
|
487
|
+
const multilineDocstring = '"""This is a\nmultiline\ndocstring"""';
|
|
488
|
+
const matches = multilineDocstring.match(pyPattern);
|
|
489
|
+
assert.ok(matches !== null, 'Should match Python multiline docstrings');
|
|
490
|
+
});
|
|
491
|
+
test('HTML multiline comment pattern matches correctly', () => {
|
|
492
|
+
const htmlPattern = LANG_RULES['.html'].commentPattern;
|
|
493
|
+
assert.ok(htmlPattern !== null);
|
|
494
|
+
const multilineComment = '<!-- This is a\nmultiline\ncomment -->';
|
|
495
|
+
const matches = multilineComment.match(htmlPattern);
|
|
496
|
+
assert.ok(matches !== null, 'Should match HTML multiline comments');
|
|
497
|
+
});
|
|
498
|
+
// ============================================================================
|
|
499
|
+
// Test: Rust documentation comment pattern
|
|
500
|
+
// ============================================================================
|
|
501
|
+
test('Rust documentation comment patterns match correctly', () => {
|
|
502
|
+
const rsPattern = LANG_RULES['.rs'].commentPattern;
|
|
503
|
+
assert.ok(rsPattern !== null);
|
|
504
|
+
// Rust doc comments (///)
|
|
505
|
+
const docComment = '/// This is documentation';
|
|
506
|
+
const matches = docComment.match(rsPattern);
|
|
507
|
+
assert.ok(matches !== null, 'Should match Rust doc comments');
|
|
508
|
+
// Block doc comments (/**)
|
|
509
|
+
const blockDocComment = '/** This is block documentation */';
|
|
510
|
+
const blockMatches = blockDocComment.match(rsPattern);
|
|
511
|
+
assert.ok(blockMatches !== null, 'Should match Rust block doc comments');
|
|
512
|
+
});
|
|
513
|
+
// ============================================================================
|
|
514
|
+
// Test: Go comment pattern (both styles)
|
|
515
|
+
// ============================================================================
|
|
516
|
+
test('Go comment patterns match both line and block styles', () => {
|
|
517
|
+
const goPattern = LANG_RULES['.go'].commentPattern;
|
|
518
|
+
assert.ok(goPattern !== null);
|
|
519
|
+
const lineComment = '// This is a line comment';
|
|
520
|
+
const blockComment = '/* This is a block comment */';
|
|
521
|
+
const lineMatches = lineComment.match(goPattern);
|
|
522
|
+
const blockMatches = blockComment.match(goPattern);
|
|
523
|
+
assert.ok(lineMatches !== null, 'Should match Go line comments');
|
|
524
|
+
assert.ok(blockMatches !== null, 'Should match Go block comments');
|
|
525
|
+
});
|
|
526
|
+
// ============================================================================
|
|
527
|
+
// Test: Language count verification
|
|
528
|
+
// ============================================================================
|
|
529
|
+
test('LANG_RULES contains 33 file extensions', () => {
|
|
530
|
+
const extensionCount = Object.keys(LANG_RULES).length;
|
|
531
|
+
assert.equal(extensionCount, 33, `LANG_RULES should contain 33 file extensions, got ${extensionCount}`);
|
|
532
|
+
});
|
|
533
|
+
test('Languages are distributed correctly across extensions', () => {
|
|
534
|
+
// Count how many extensions map to each language
|
|
535
|
+
const langCounts = {};
|
|
536
|
+
for (const rule of Object.values(LANG_RULES)) {
|
|
537
|
+
langCounts[rule.lang] = (langCounts[rule.lang] || 0) + 1;
|
|
538
|
+
}
|
|
539
|
+
// C++ has 3 extensions (.cpp, .hpp, .cc)
|
|
540
|
+
assert.equal(langCounts['cpp'], 3, 'cpp should have 3 extensions');
|
|
541
|
+
// C has 2 extensions (.c, .h)
|
|
542
|
+
assert.equal(langCounts['c'], 2, 'c should have 2 extensions');
|
|
543
|
+
// Bash has 2 extensions (.sh, .bash)
|
|
544
|
+
assert.equal(langCounts['bash'], 2, 'bash should have 2 extensions');
|
|
545
|
+
// HTML has 2 extensions (.html, .htm)
|
|
546
|
+
assert.equal(langCounts['html'], 2, 'html should have 2 extensions');
|
|
547
|
+
// Markdown has 2 extensions (.md, .markdown)
|
|
548
|
+
assert.equal(langCounts['markdown'], 2, 'markdown should have 2 extensions');
|
|
549
|
+
// TSX has 2 extensions (.tsx, .jsx)
|
|
550
|
+
assert.equal(langCounts['tsx'], 2, 'tsx should have 2 extensions');
|
|
551
|
+
// Elixir has 2 extensions (.ex, .exs)
|
|
552
|
+
assert.equal(langCounts['elixir'], 2, 'elixir should have 2 extensions');
|
|
553
|
+
// OCaml has 2 extensions (.ml, .mli)
|
|
554
|
+
assert.equal(langCounts['ocaml'], 2, 'ocaml should have 2 extensions');
|
|
555
|
+
});
|
|
556
|
+
// ============================================================================
|
|
557
|
+
// Test: JSX uses TSX parser (intentional design choice)
|
|
558
|
+
// ============================================================================
|
|
559
|
+
test('JSX intentionally uses TSX parser for TypeScript compatibility', () => {
|
|
560
|
+
const jsxRule = LANG_RULES['.jsx'];
|
|
561
|
+
const tsxRule = LANG_RULES['.tsx'];
|
|
562
|
+
assert.strictEqual(jsxRule.ts, tsxRule.ts, 'JSX and TSX should use the same parser');
|
|
563
|
+
assert.equal(jsxRule.lang, 'tsx');
|
|
564
|
+
});
|
|
565
|
+
// ============================================================================
|
|
566
|
+
// Test: Empty subdivisionTypes arrays (valid case)
|
|
567
|
+
// ============================================================================
|
|
568
|
+
test('Markdown fenced_code_block has empty subdivisions array', () => {
|
|
569
|
+
const mdRule = LANG_RULES['.md'];
|
|
570
|
+
assert.ok(mdRule.subdivisionTypes);
|
|
571
|
+
const codeBlockSubdivisions = mdRule.subdivisionTypes['fenced_code_block'];
|
|
572
|
+
assert.ok(Array.isArray(codeBlockSubdivisions));
|
|
573
|
+
assert.equal(codeBlockSubdivisions.length, 0);
|
|
574
|
+
});
|
|
575
|
+
//# sourceMappingURL=languages.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.test.js","sourceRoot":"","sources":["../../src/tests/languages.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-redaction.test.d.ts","sourceRoot":"","sources":["../../src/tests/logger-redaction.test.ts"],"names":[],"mappings":""}
|