codereview-aia 0.1.3 → 0.1.4
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/dist/analysis/FindingsExtractor.d.ts +105 -0
- package/dist/analysis/FindingsExtractor.js +363 -0
- package/dist/analysis/FindingsExtractor.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
- package/dist/analysis/context/ReviewContext.d.ts +184 -0
- package/dist/analysis/context/ReviewContext.js +294 -0
- package/dist/analysis/context/ReviewContext.js.map +1 -0
- package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
- package/dist/analysis/context/index.js +23 -0
- package/dist/analysis/context/index.js.map +1 -0
- package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
- package/dist/analysis/index.js +24 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
- package/dist/analysis/static/wpPhpcsRunner.js +219 -0
- package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
- package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
- package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
- package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
- package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
- package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
- package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
- package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
- package/dist/analysis/tokens/index.js +24 -0
- package/dist/analysis/tokens/index.js.map +1 -0
- package/dist/clients/base/abstractClient.d.ts +99 -0
- package/dist/clients/base/abstractClient.js +98 -0
- package/dist/clients/base/abstractClient.js.map +1 -0
- package/dist/clients/base/httpClient.d.ts +24 -0
- package/dist/clients/base/httpClient.js +147 -0
- package/dist/clients/base/httpClient.js.map +1 -0
- package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
- package/dist/clients/base/index.js +28 -0
- package/dist/clients/base/index.js.map +1 -0
- package/dist/clients/base/modelDetection.d.ts +41 -0
- package/dist/clients/base/modelDetection.js +88 -0
- package/dist/clients/base/modelDetection.js.map +1 -0
- package/dist/clients/base/responseProcessor.d.ts +45 -0
- package/dist/clients/base/responseProcessor.js +495 -0
- package/dist/clients/base/responseProcessor.js.map +1 -0
- package/dist/clients/factory/clientFactory.d.ts +23 -0
- package/dist/clients/factory/clientFactory.js +50 -0
- package/dist/clients/factory/clientFactory.js.map +1 -0
- package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
- package/dist/clients/factory/index.js +24 -0
- package/dist/clients/factory/index.js.map +1 -0
- package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
- package/dist/clients/implementations/index.js +24 -0
- package/dist/clients/implementations/index.js.map +1 -0
- package/dist/clients/implementations/openRouterClient.d.ts +69 -0
- package/dist/clients/implementations/openRouterClient.js +294 -0
- package/dist/clients/implementations/openRouterClient.js.map +1 -0
- package/dist/clients/openRouterClient.d.ts +42 -0
- package/dist/clients/openRouterClient.js +738 -0
- package/dist/clients/openRouterClient.js.map +1 -0
- package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
- package/dist/clients/openRouterClientWrapper.js +64 -0
- package/dist/clients/openRouterClientWrapper.js.map +1 -0
- package/dist/clients/utils/directoryStructure.d.ts +14 -0
- package/dist/clients/utils/directoryStructure.js +48 -0
- package/dist/clients/utils/directoryStructure.js.map +1 -0
- package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
- package/dist/clients/utils/index.js +31 -0
- package/dist/clients/utils/index.js.map +1 -0
- package/dist/clients/utils/languageDetection.d.ts +13 -0
- package/dist/clients/utils/languageDetection.js +46 -0
- package/dist/clients/utils/languageDetection.js.map +1 -0
- package/dist/clients/utils/promptFormatter.d.ts +37 -0
- package/dist/clients/utils/promptFormatter.js +150 -0
- package/dist/clients/utils/promptFormatter.js.map +1 -0
- package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
- package/dist/clients/utils/promptLoader.js +49 -0
- package/dist/clients/utils/promptLoader.js.map +1 -0
- package/dist/clients/utils/tokenCounter.d.ts +81 -0
- package/dist/clients/utils/tokenCounter.js +209 -0
- package/dist/clients/utils/tokenCounter.js.map +1 -0
- package/dist/core/ApiClientSelector.d.ts +8 -0
- package/dist/core/ApiClientSelector.js +29 -0
- package/dist/core/ApiClientSelector.js.map +1 -0
- package/dist/core/ConfigurationService.d.ts +307 -0
- package/dist/core/ConfigurationService.js +516 -0
- package/dist/core/ConfigurationService.js.map +1 -0
- package/dist/core/ConsolidationService.d.ts +99 -0
- package/dist/core/ConsolidationService.js +341 -0
- package/dist/core/ConsolidationService.js.map +1 -0
- package/dist/core/InteractiveDisplayManager.d.ts +22 -0
- package/dist/core/InteractiveDisplayManager.js +70 -0
- package/dist/core/InteractiveDisplayManager.js.map +1 -0
- package/dist/core/OutputManager.d.ts +26 -0
- package/dist/core/OutputManager.js +217 -0
- package/dist/core/OutputManager.js.map +1 -0
- package/dist/core/ReviewGenerator.d.ts +13 -0
- package/dist/core/ReviewGenerator.js +102 -0
- package/dist/core/ReviewGenerator.js.map +1 -0
- package/dist/core/fileDiscovery.d.ts +35 -0
- package/dist/core/fileDiscovery.js +202 -0
- package/dist/core/fileDiscovery.js.map +1 -0
- package/dist/core/handlers/EstimationHandler.d.ts +18 -0
- package/dist/core/handlers/EstimationHandler.js +110 -0
- package/dist/core/handlers/EstimationHandler.js.map +1 -0
- package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
- package/dist/core/handlers/FileProcessingHandler.js +164 -0
- package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
- package/dist/core/handlers/OutputHandler.d.ts +27 -0
- package/dist/core/handlers/OutputHandler.js +127 -0
- package/dist/core/handlers/OutputHandler.js.map +1 -0
- package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
- package/dist/core/handlers/ReviewExecutor.js +111 -0
- package/dist/core/handlers/ReviewExecutor.js.map +1 -0
- package/dist/core/reviewOrchestrator.d.ts +24 -0
- package/dist/core/reviewOrchestrator.js +354 -0
- package/dist/core/reviewOrchestrator.js.map +1 -0
- package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
- package/dist/core/utils/ModelInfoUtils.js +54 -0
- package/dist/core/utils/ModelInfoUtils.js.map +1 -0
- package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
- package/dist/formatters/outputFormatter.js +65 -0
- package/dist/formatters/outputFormatter.js.map +1 -0
- package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
- package/dist/formatters/utils/IssueFormatters.js +67 -0
- package/dist/formatters/utils/IssueFormatters.js.map +1 -0
- package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
- package/dist/formatters/utils/JsonFormatter.js +57 -0
- package/dist/formatters/utils/JsonFormatter.js.map +1 -0
- package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
- package/dist/formatters/utils/MarkdownFormatters.js +456 -0
- package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
- package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
- package/dist/formatters/utils/MetadataFormatter.js +219 -0
- package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
- package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
- package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
- package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/PluginInterface.d.ts +44 -0
- package/dist/plugins/PluginInterface.js +9 -0
- package/dist/plugins/PluginInterface.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +51 -0
- package/dist/plugins/PluginManager.js +151 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/prompts/PromptManager.d.ts +30 -0
- package/dist/prompts/PromptManager.js +62 -0
- package/dist/prompts/PromptManager.js.map +1 -0
- package/dist/prompts/cache/PromptCache.d.ts +32 -0
- package/dist/prompts/cache/PromptCache.js +48 -0
- package/dist/prompts/cache/PromptCache.js.map +1 -0
- package/dist/runtime/auth/service.d.ts +2 -0
- package/dist/runtime/auth/service.js +41 -0
- package/dist/runtime/auth/service.js.map +1 -0
- package/dist/runtime/auth/session.d.ts +5 -0
- package/dist/runtime/auth/session.js +87 -0
- package/dist/runtime/auth/session.js.map +1 -0
- package/dist/runtime/auth/types.d.ts +9 -0
- package/dist/runtime/auth/types.js +3 -0
- package/dist/runtime/auth/types.js.map +1 -0
- package/dist/runtime/cliEntry.d.ts +1 -0
- package/dist/runtime/cliEntry.js +266 -0
- package/dist/runtime/cliEntry.js.map +1 -0
- package/dist/runtime/debug/logManager.d.ts +5 -0
- package/dist/runtime/debug/logManager.js +31 -0
- package/dist/runtime/debug/logManager.js.map +1 -0
- package/dist/runtime/errors.d.ts +5 -0
- package/dist/runtime/errors.js +15 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/fileCollector.d.ts +14 -0
- package/dist/runtime/fileCollector.js +382 -0
- package/dist/runtime/fileCollector.js.map +1 -0
- package/dist/runtime/manifest.d.ts +1 -0
- package/dist/runtime/manifest.js +65 -0
- package/dist/runtime/manifest.js.map +1 -0
- package/dist/runtime/openrouterProxy.d.ts +4 -0
- package/dist/runtime/openrouterProxy.js +43 -0
- package/dist/runtime/openrouterProxy.js.map +1 -0
- package/dist/runtime/preprod/webCheck.d.ts +1 -0
- package/dist/runtime/preprod/webCheck.js +98 -0
- package/dist/runtime/preprod/webCheck.js.map +1 -0
- package/dist/runtime/proxyConfig.d.ts +6 -0
- package/dist/runtime/proxyConfig.js +86 -0
- package/dist/runtime/proxyConfig.js.map +1 -0
- package/dist/runtime/proxyEnvironment.d.ts +3 -0
- package/dist/runtime/proxyEnvironment.js +63 -0
- package/dist/runtime/proxyEnvironment.js.map +1 -0
- package/dist/runtime/reportMerge.d.ts +30 -0
- package/dist/runtime/reportMerge.js +70 -0
- package/dist/runtime/reportMerge.js.map +1 -0
- package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
- package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
- package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
- package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
- package/dist/runtime/reporting/reportDataCollector.js +170 -0
- package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
- package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
- package/dist/runtime/reporting/summaryGenerator.js +67 -0
- package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
- package/dist/runtime/reviewPipeline.d.ts +47 -0
- package/dist/runtime/reviewPipeline.js +161 -0
- package/dist/runtime/reviewPipeline.js.map +1 -0
- package/dist/runtime/runAiCodeReview.d.ts +28 -0
- package/dist/runtime/runAiCodeReview.js +373 -0
- package/dist/runtime/runAiCodeReview.js.map +1 -0
- package/dist/runtime/runtimeConfig.d.ts +4 -0
- package/dist/runtime/runtimeConfig.js +7 -0
- package/dist/runtime/runtimeConfig.js.map +1 -0
- package/dist/runtime/ui/Layout.d.ts +11 -0
- package/dist/runtime/ui/Layout.js +47 -0
- package/dist/runtime/ui/Layout.js.map +1 -0
- package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
- package/dist/runtime/ui/RuntimeApp.js +172 -0
- package/dist/runtime/ui/RuntimeApp.js.map +1 -0
- package/dist/runtime/ui/inkModules.d.ts +10 -0
- package/dist/runtime/ui/inkModules.js +63 -0
- package/dist/runtime/ui/inkModules.js.map +1 -0
- package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
- package/dist/runtime/ui/screens/AuthScreen.js +67 -0
- package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
- package/dist/runtime/ui/screens/ModeSelection.d.ts +10 -0
- package/dist/runtime/ui/screens/ModeSelection.js +100 -0
- package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
- package/dist/runtime/ui/screens/ProgressScreen.d.ts +12 -0
- package/dist/runtime/ui/screens/ProgressScreen.js +64 -0
- package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
- package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
- package/dist/runtime/ui/screens/ResultsScreen.js +29 -0
- package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
- package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
- package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
- package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
- package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
- package/dist/strategies/CodingTestReviewStrategy.js +681 -0
- package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
- package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
- package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
- package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
- package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
- package/dist/strategies/MultiPassReviewStrategy.js +590 -0
- package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
- package/dist/strategies/ReviewStrategy.d.ts +45 -0
- package/dist/strategies/ReviewStrategy.js +24 -0
- package/dist/strategies/ReviewStrategy.js.map +1 -0
- package/dist/strategies/StrategyFactory.d.ts +19 -0
- package/dist/strategies/StrategyFactory.js +72 -0
- package/dist/strategies/StrategyFactory.js.map +1 -0
- package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
- package/dist/strategies/index.js +30 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/tokenizers/baseTokenizer.d.ts +25 -0
- package/dist/tokenizers/baseTokenizer.js +48 -0
- package/dist/tokenizers/baseTokenizer.js.map +1 -0
- package/dist/tokenizers/gptTokenizer.d.ts +7 -0
- package/dist/tokenizers/gptTokenizer.js +28 -0
- package/dist/tokenizers/gptTokenizer.js.map +1 -0
- package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
- package/dist/tokenizers/index.js +24 -0
- package/dist/tokenizers/index.js.map +1 -0
- package/dist/types/apiResponses.d.ts +39 -0
- package/dist/types/apiResponses.js +9 -0
- package/dist/types/apiResponses.js.map +1 -0
- package/dist/types/cli.d.ts +22 -0
- package/dist/types/cli.js +3 -0
- package/dist/types/cli.js.map +1 -0
- package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
- package/dist/types/common.js +14 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/configuration.d.ts +682 -0
- package/dist/types/configuration.js +65 -0
- package/dist/types/configuration.js.map +1 -0
- package/dist/types/review.d.ts +318 -0
- package/dist/types/review.js +8 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/reviewSchema.d.ts +543 -0
- package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
- package/dist/types/reviewSchema.js.map +1 -0
- package/dist/types/structuredReview.d.ts +119 -0
- package/dist/types/structuredReview.js +6 -0
- package/dist/types/structuredReview.js.map +1 -0
- package/dist/types/tokenAnalysis.d.ts +44 -0
- package/dist/types/tokenAnalysis.js +4 -0
- package/dist/types/tokenAnalysis.js.map +1 -0
- package/dist/utils/FileReader.d.ts +33 -0
- package/dist/utils/FileReader.js +88 -0
- package/dist/utils/FileReader.js.map +1 -0
- package/dist/utils/FileWriter.d.ts +26 -0
- package/dist/utils/FileWriter.js +76 -0
- package/dist/utils/FileWriter.js.map +1 -0
- package/dist/utils/PathGenerator.d.ts +30 -0
- package/dist/utils/PathGenerator.js +82 -0
- package/dist/utils/PathGenerator.js.map +1 -0
- package/dist/utils/api/apiUtils.d.ts +3 -0
- package/dist/utils/api/apiUtils.js +20 -0
- package/dist/utils/api/apiUtils.js.map +1 -0
- package/dist/utils/api/index.js +18 -0
- package/dist/utils/api/index.js.map +1 -0
- package/dist/utils/apiErrorHandler.d.ts +130 -0
- package/dist/utils/apiErrorHandler.js +256 -0
- package/dist/utils/apiErrorHandler.js.map +1 -0
- package/dist/utils/ciDataCollector.d.ts +51 -0
- package/dist/utils/ciDataCollector.js +197 -0
- package/dist/utils/ciDataCollector.js.map +1 -0
- package/dist/utils/codingTestConfigLoader.d.ts +66 -0
- package/dist/utils/codingTestConfigLoader.js +420 -0
- package/dist/utils/codingTestConfigLoader.js.map +1 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
- package/dist/utils/detection/frameworkDetector.d.ts +43 -0
- package/dist/utils/detection/frameworkDetector.js +850 -0
- package/dist/utils/detection/frameworkDetector.js.map +1 -0
- package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
- package/dist/utils/detection/index.js +28 -0
- package/dist/utils/detection/index.js.map +1 -0
- package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
- package/dist/utils/detection/projectTypeDetector.js +469 -0
- package/dist/utils/detection/projectTypeDetector.js.map +1 -0
- package/dist/utils/diagramGenerator.d.ts +49 -0
- package/dist/utils/diagramGenerator.js +218 -0
- package/dist/utils/diagramGenerator.js.map +1 -0
- package/dist/utils/errorLogger.d.ts +24 -0
- package/dist/utils/errorLogger.js +59 -0
- package/dist/utils/errorLogger.js.map +1 -0
- package/dist/utils/estimationUtils.d.ts +139 -0
- package/dist/utils/estimationUtils.js +329 -0
- package/dist/utils/estimationUtils.js.map +1 -0
- package/dist/utils/fileFilters.d.ts +72 -0
- package/dist/utils/fileFilters.js +338 -0
- package/dist/utils/fileFilters.js.map +1 -0
- package/dist/utils/fileSystem.d.ts +22 -0
- package/dist/utils/fileSystem.js +45 -0
- package/dist/utils/fileSystem.js.map +1 -0
- package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
- package/dist/utils/index.js +52 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +77 -0
- package/dist/utils/logger.js +271 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pathValidator.d.ts +40 -0
- package/dist/utils/pathValidator.js +98 -0
- package/dist/utils/pathValidator.js.map +1 -0
- package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
- package/dist/utils/priorityFilter.js +54 -0
- package/dist/utils/priorityFilter.js.map +1 -0
- package/dist/utils/projectDocs.d.ts +47 -0
- package/dist/utils/projectDocs.js +158 -0
- package/dist/utils/projectDocs.js.map +1 -0
- package/dist/utils/promptPaths.d.ts +6 -0
- package/dist/utils/promptPaths.js +33 -0
- package/dist/utils/promptPaths.js.map +1 -0
- package/dist/utils/promptTemplateManager.d.ts +34 -0
- package/dist/utils/promptTemplateManager.js +141 -0
- package/dist/utils/promptTemplateManager.js.map +1 -0
- package/dist/utils/review/consolidateReview.d.ts +15 -0
- package/dist/utils/review/consolidateReview.js +481 -0
- package/dist/utils/review/consolidateReview.js.map +1 -0
- package/dist/utils/review/fixDisplay.d.ts +20 -0
- package/dist/utils/review/fixDisplay.js +84 -0
- package/dist/utils/review/fixDisplay.js.map +1 -0
- package/dist/utils/review/fixImplementation.d.ts +28 -0
- package/dist/utils/review/fixImplementation.js +60 -0
- package/dist/utils/review/fixImplementation.js.map +1 -0
- package/dist/utils/review/index.d.ts +13 -0
- package/dist/utils/review/index.js +50 -0
- package/dist/utils/review/index.js.map +1 -0
- package/dist/utils/review/interactiveProcessing.d.ts +25 -0
- package/dist/utils/review/interactiveProcessing.js +251 -0
- package/dist/utils/review/interactiveProcessing.js.map +1 -0
- package/dist/utils/review/progressTracker.d.ts +106 -0
- package/dist/utils/review/progressTracker.js +227 -0
- package/dist/utils/review/progressTracker.js.map +1 -0
- package/dist/utils/review/reviewExtraction.d.ts +31 -0
- package/dist/utils/review/reviewExtraction.js +324 -0
- package/dist/utils/review/reviewExtraction.js.map +1 -0
- package/dist/utils/review/types.d.ts +45 -0
- package/dist/utils/review/types.js +18 -0
- package/dist/utils/review/types.js.map +1 -0
- package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
- package/dist/utils/reviewActionHandler.js +34 -0
- package/dist/utils/reviewActionHandler.js.map +1 -0
- package/dist/utils/reviewParser.d.ts +34 -0
- package/dist/utils/reviewParser.js +218 -0
- package/dist/utils/reviewParser.js.map +1 -0
- package/dist/utils/sanitizer.d.ts +82 -0
- package/dist/utils/sanitizer.js +239 -0
- package/dist/utils/sanitizer.js.map +1 -0
- package/dist/utils/smartFileSelector.d.ts +50 -0
- package/dist/utils/smartFileSelector.js +261 -0
- package/dist/utils/smartFileSelector.js.map +1 -0
- package/dist/utils/templateLoader.d.ts +44 -0
- package/dist/utils/templateLoader.js +431 -0
- package/dist/utils/templateLoader.js.map +1 -0
- package/dist/utils/treeGenerator.d.ts +12 -0
- package/dist/utils/treeGenerator.js +133 -0
- package/dist/utils/treeGenerator.js.map +1 -0
- package/package.json +5 -2
- package/.cr-aia.yml +0 -23
- package/.crignore +0 -0
- package/docs/opt-in-full-context.md +0 -27
- package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
- package/src/analysis/FindingsExtractor.ts +0 -431
- package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
- package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
- package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
- package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
- package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
- package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
- package/src/analysis/context/ReviewContext.ts +0 -378
- package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
- package/src/clients/base/abstractClient.ts +0 -190
- package/src/clients/base/httpClient.ts +0 -160
- package/src/clients/base/modelDetection.ts +0 -107
- package/src/clients/base/responseProcessor.ts +0 -586
- package/src/clients/factory/clientFactory.ts +0 -55
- package/src/clients/implementations/openRouterClient.ts +0 -413
- package/src/clients/openRouterClient.ts +0 -870
- package/src/clients/utils/directoryStructure.ts +0 -52
- package/src/clients/utils/languageDetection.ts +0 -44
- package/src/clients/utils/promptFormatter.ts +0 -182
- package/src/clients/utils/tokenCounter.ts +0 -297
- package/src/core/ApiClientSelector.ts +0 -37
- package/src/core/ConfigurationService.ts +0 -591
- package/src/core/ConsolidationService.ts +0 -423
- package/src/core/InteractiveDisplayManager.ts +0 -81
- package/src/core/OutputManager.ts +0 -275
- package/src/core/ReviewGenerator.ts +0 -140
- package/src/core/fileDiscovery.ts +0 -237
- package/src/core/handlers/EstimationHandler.ts +0 -104
- package/src/core/handlers/FileProcessingHandler.ts +0 -210
- package/src/core/handlers/OutputHandler.ts +0 -125
- package/src/core/handlers/ReviewExecutor.ts +0 -104
- package/src/core/reviewOrchestrator.ts +0 -333
- package/src/core/utils/ModelInfoUtils.ts +0 -56
- package/src/formatters/utils/IssueFormatters.ts +0 -83
- package/src/formatters/utils/JsonFormatter.ts +0 -77
- package/src/formatters/utils/MarkdownFormatters.ts +0 -609
- package/src/formatters/utils/MetadataFormatter.ts +0 -269
- package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
- package/src/index.ts +0 -25
- package/src/plugins/PluginInterface.ts +0 -50
- package/src/plugins/PluginManager.ts +0 -126
- package/src/prompts/PromptManager.ts +0 -69
- package/src/prompts/cache/PromptCache.ts +0 -50
- package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
- package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
- package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
- package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
- package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
- package/src/runtime/auth/service.ts +0 -58
- package/src/runtime/auth/session.ts +0 -103
- package/src/runtime/auth/types.ts +0 -11
- package/src/runtime/cliEntry.ts +0 -214
- package/src/runtime/debug/logManager.ts +0 -37
- package/src/runtime/errors.ts +0 -13
- package/src/runtime/fileCollector.ts +0 -495
- package/src/runtime/manifest.ts +0 -64
- package/src/runtime/openrouterProxy.ts +0 -45
- package/src/runtime/preprod/webCheck.ts +0 -104
- package/src/runtime/proxyConfig.ts +0 -94
- package/src/runtime/proxyEnvironment.ts +0 -71
- package/src/runtime/reportMerge.ts +0 -102
- package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
- package/src/runtime/reporting/reportDataCollector.ts +0 -234
- package/src/runtime/reporting/summaryGenerator.ts +0 -86
- package/src/runtime/reviewPipeline.ts +0 -200
- package/src/runtime/runAiCodeReview.ts +0 -308
- package/src/runtime/runtimeConfig.ts +0 -5
- package/src/runtime/ui/Layout.tsx +0 -57
- package/src/runtime/ui/RuntimeApp.tsx +0 -262
- package/src/runtime/ui/inkModules.ts +0 -73
- package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
- package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
- package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
- package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
- package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
- package/src/strategies/CodingTestReviewStrategy.ts +0 -920
- package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
- package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
- package/src/strategies/MultiPassReviewStrategy.ts +0 -785
- package/src/strategies/ReviewStrategy.ts +0 -64
- package/src/strategies/StrategyFactory.ts +0 -79
- package/src/tokenizers/baseTokenizer.ts +0 -61
- package/src/tokenizers/gptTokenizer.ts +0 -27
- package/src/types/apiResponses.ts +0 -40
- package/src/types/cli.ts +0 -24
- package/src/types/configuration.ts +0 -201
- package/src/types/handlebars.d.ts +0 -5
- package/src/types/patch.d.ts +0 -25
- package/src/types/review.ts +0 -312
- package/src/types/reviewContext.d.ts +0 -65
- package/src/types/structuredReview.ts +0 -167
- package/src/types/tokenAnalysis.ts +0 -56
- package/src/utils/FileReader.ts +0 -93
- package/src/utils/FileWriter.ts +0 -76
- package/src/utils/PathGenerator.ts +0 -97
- package/src/utils/api/apiUtils.ts +0 -14
- package/src/utils/apiErrorHandler.ts +0 -287
- package/src/utils/ciDataCollector.ts +0 -252
- package/src/utils/codingTestConfigLoader.ts +0 -466
- package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
- package/src/utils/detection/frameworkDetector.ts +0 -879
- package/src/utils/detection/projectTypeDetector.ts +0 -518
- package/src/utils/diagramGenerator.ts +0 -206
- package/src/utils/errorLogger.ts +0 -60
- package/src/utils/estimationUtils.ts +0 -407
- package/src/utils/fileFilters.ts +0 -373
- package/src/utils/fileSystem.ts +0 -57
- package/src/utils/logger.ts +0 -290
- package/src/utils/pathValidator.ts +0 -98
- package/src/utils/projectDocs.ts +0 -189
- package/src/utils/promptPaths.ts +0 -29
- package/src/utils/promptTemplateManager.ts +0 -157
- package/src/utils/review/consolidateReview.ts +0 -553
- package/src/utils/review/fixDisplay.ts +0 -100
- package/src/utils/review/fixImplementation.ts +0 -61
- package/src/utils/review/index.ts +0 -36
- package/src/utils/review/interactiveProcessing.ts +0 -294
- package/src/utils/review/progressTracker.ts +0 -296
- package/src/utils/review/reviewExtraction.ts +0 -382
- package/src/utils/review/types.ts +0 -46
- package/src/utils/reviewParser.ts +0 -253
- package/src/utils/sanitizer.ts +0 -238
- package/src/utils/smartFileSelector.ts +0 -255
- package/src/utils/templateLoader.ts +0 -514
- package/src/utils/treeGenerator.ts +0 -153
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -59
- /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
package/src/utils/sanitizer.ts
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Content sanitization utilities for preventing XSS attacks.
|
|
3
|
-
*
|
|
4
|
-
* This module provides sanitization functions to clean user-generated or AI-generated
|
|
5
|
-
* content before rendering or storing it. It uses DOMPurify to remove potentially
|
|
6
|
-
* malicious HTML, JavaScript, and other harmful content while preserving legitimate
|
|
7
|
-
* formatting elements. It also includes utilities for sanitizing filenames to ensure
|
|
8
|
-
* they are safe for use in file systems.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import createDOMPurify from 'dompurify';
|
|
12
|
-
import { JSDOM } from 'jsdom';
|
|
13
|
-
import logger from './logger';
|
|
14
|
-
|
|
15
|
-
// Create a DOM window for DOMPurify
|
|
16
|
-
const { window } = new JSDOM('');
|
|
17
|
-
// Cast window for DOMPurify compatibility
|
|
18
|
-
const DOMPurify = createDOMPurify(window);
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Sanitizes HTML content to prevent Cross-Site Scripting (XSS) attacks.
|
|
22
|
-
*
|
|
23
|
-
* This function uses DOMPurify to clean HTML content by:
|
|
24
|
-
* 1. Allowing only safe HTML tags (h1-h6, p, lists, tables, etc.)
|
|
25
|
-
* 2. Allowing only safe attributes (href, class, id, etc.)
|
|
26
|
-
* 3. Explicitly forbidding dangerous tags (script, iframe, svg, etc.)
|
|
27
|
-
* 4. Explicitly forbidding dangerous attributes (onerror, onclick, etc.)
|
|
28
|
-
*
|
|
29
|
-
* If sanitization fails for any reason, it returns an empty string for safety.
|
|
30
|
-
*
|
|
31
|
-
* @param {string} content - The HTML content to sanitize
|
|
32
|
-
* @returns {string} Sanitized HTML with potentially dangerous content removed
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* const unsafeHtml = '<div>Safe content</div><script>alert("XSS")</script>';
|
|
36
|
-
* const safeHtml = sanitizeHtml(unsafeHtml);
|
|
37
|
-
* // Returns: "<div>Safe content</div>"
|
|
38
|
-
*
|
|
39
|
-
* @throws Catches internally and returns empty string if DOMPurify fails
|
|
40
|
-
*/
|
|
41
|
-
export function sanitizeHtml(content: string): string {
|
|
42
|
-
try {
|
|
43
|
-
// Configure DOMPurify to allow certain tags and attributes
|
|
44
|
-
const sanitized = DOMPurify.sanitize(content, {
|
|
45
|
-
ALLOWED_TAGS: [
|
|
46
|
-
'h1',
|
|
47
|
-
'h2',
|
|
48
|
-
'h3',
|
|
49
|
-
'h4',
|
|
50
|
-
'h5',
|
|
51
|
-
'h6',
|
|
52
|
-
'p',
|
|
53
|
-
'br',
|
|
54
|
-
'hr',
|
|
55
|
-
'ul',
|
|
56
|
-
'ol',
|
|
57
|
-
'li',
|
|
58
|
-
'b',
|
|
59
|
-
'i',
|
|
60
|
-
'strong',
|
|
61
|
-
'em',
|
|
62
|
-
'code',
|
|
63
|
-
'pre',
|
|
64
|
-
'a',
|
|
65
|
-
'span',
|
|
66
|
-
'div',
|
|
67
|
-
'table',
|
|
68
|
-
'thead',
|
|
69
|
-
'tbody',
|
|
70
|
-
'tr',
|
|
71
|
-
'th',
|
|
72
|
-
'td',
|
|
73
|
-
],
|
|
74
|
-
ALLOWED_ATTR: ['href', 'target', 'rel', 'class', 'id', 'style'],
|
|
75
|
-
FORBID_TAGS: [
|
|
76
|
-
'script',
|
|
77
|
-
'iframe',
|
|
78
|
-
'object',
|
|
79
|
-
'embed',
|
|
80
|
-
'form',
|
|
81
|
-
'input',
|
|
82
|
-
'button',
|
|
83
|
-
'style',
|
|
84
|
-
'link',
|
|
85
|
-
'meta',
|
|
86
|
-
'base',
|
|
87
|
-
'applet',
|
|
88
|
-
'math',
|
|
89
|
-
'svg',
|
|
90
|
-
],
|
|
91
|
-
FORBID_ATTR: [
|
|
92
|
-
'onerror',
|
|
93
|
-
'onload',
|
|
94
|
-
'onclick',
|
|
95
|
-
'onmouseover',
|
|
96
|
-
'onmouseout',
|
|
97
|
-
'onmousedown',
|
|
98
|
-
'onmouseup',
|
|
99
|
-
'onkeydown',
|
|
100
|
-
'onkeyup',
|
|
101
|
-
'onkeypress',
|
|
102
|
-
'onfocus',
|
|
103
|
-
'onblur',
|
|
104
|
-
'onchange',
|
|
105
|
-
'onsubmit',
|
|
106
|
-
'onreset',
|
|
107
|
-
'javascript:',
|
|
108
|
-
'data:',
|
|
109
|
-
'vbscript:',
|
|
110
|
-
],
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
return sanitized;
|
|
114
|
-
} catch (error) {
|
|
115
|
-
logger.error('Error sanitizing HTML content:', error);
|
|
116
|
-
// Return a safe fallback if sanitization fails
|
|
117
|
-
return '';
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Sanitize Markdown content
|
|
123
|
-
* @param content Markdown content to sanitize
|
|
124
|
-
* @returns Sanitized Markdown content
|
|
125
|
-
*/
|
|
126
|
-
export function sanitizeMarkdown(content: string): string {
|
|
127
|
-
try {
|
|
128
|
-
// Remove potentially harmful content
|
|
129
|
-
const sanitized = content
|
|
130
|
-
// Remove HTML comments
|
|
131
|
-
.replace(/<!--[\s\S]*?-->/g, '')
|
|
132
|
-
// Remove script tags and their content
|
|
133
|
-
.replace(/<script[\s\S]*?<\/script>/gi, '')
|
|
134
|
-
// Remove iframe tags and their content
|
|
135
|
-
.replace(/<iframe[\s\S]*?<\/iframe>/gi, '')
|
|
136
|
-
// Remove style tags and their content
|
|
137
|
-
.replace(/<style[\s\S]*?<\/style>/gi, '')
|
|
138
|
-
// Remove event handlers
|
|
139
|
-
.replace(/\son\w+\s*=\s*["']?[^"']*["']?/gi, '')
|
|
140
|
-
// Remove javascript: URLs
|
|
141
|
-
.replace(/javascript\s*:/gi, 'removed:')
|
|
142
|
-
// Remove data: URLs
|
|
143
|
-
.replace(/data\s*:/gi, 'removed:')
|
|
144
|
-
// Remove vbscript: URLs
|
|
145
|
-
.replace(/vbscript\s*:/gi, 'removed:');
|
|
146
|
-
|
|
147
|
-
return sanitized;
|
|
148
|
-
} catch (error) {
|
|
149
|
-
logger.error('Error sanitizing Markdown content:', error);
|
|
150
|
-
// Return a safe fallback if sanitization fails
|
|
151
|
-
return '';
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Sanitize JSON content
|
|
157
|
-
* @param content JSON content to sanitize
|
|
158
|
-
* @returns Sanitized JSON content
|
|
159
|
-
*/
|
|
160
|
-
export function sanitizeJson(content: string): string {
|
|
161
|
-
try {
|
|
162
|
-
// Parse and stringify to ensure valid JSON
|
|
163
|
-
const parsed = JSON.parse(content);
|
|
164
|
-
return JSON.stringify(parsed);
|
|
165
|
-
} catch (error) {
|
|
166
|
-
logger.error('Error sanitizing JSON content:', error);
|
|
167
|
-
// Return a safe fallback if sanitization fails
|
|
168
|
-
return '{}';
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Sanitizes content based on its type to prevent security vulnerabilities.
|
|
174
|
-
*
|
|
175
|
-
* This function acts as a dispatcher that routes the content to the appropriate
|
|
176
|
-
* specialized sanitization function based on the content type. It supports
|
|
177
|
-
* HTML, Markdown, JSON, and plain text formats, each with type-specific
|
|
178
|
-
* sanitization rules.
|
|
179
|
-
*
|
|
180
|
-
* @param {string} content - The content to sanitize
|
|
181
|
-
* @param {('html'|'markdown'|'json'|'text')} [contentType='text'] - The type of content
|
|
182
|
-
* @returns {string} Sanitized content safe for rendering or storage
|
|
183
|
-
*
|
|
184
|
-
* @example
|
|
185
|
-
* // Sanitize HTML content
|
|
186
|
-
* const safeHtml = sanitizeContent('<script>alert("XSS")</script><p>Hello</p>', 'html');
|
|
187
|
-
* // Returns: "<p>Hello</p>"
|
|
188
|
-
*
|
|
189
|
-
* @example
|
|
190
|
-
* // Sanitize Markdown content
|
|
191
|
-
* const safeMarkdown = sanitizeContent('# Title\n<script>alert("XSS")</script>', 'markdown');
|
|
192
|
-
* // Returns: "# Title\n"
|
|
193
|
-
*
|
|
194
|
-
* @example
|
|
195
|
-
* // Sanitize JSON content
|
|
196
|
-
* const safeJson = sanitizeContent('{"key": "value"}', 'json');
|
|
197
|
-
* // Returns: '{"key":"value"}'
|
|
198
|
-
*/
|
|
199
|
-
export function sanitizeContent(
|
|
200
|
-
content: string,
|
|
201
|
-
contentType: 'html' | 'markdown' | 'json' | 'text' = 'text',
|
|
202
|
-
): string {
|
|
203
|
-
switch (contentType) {
|
|
204
|
-
case 'html':
|
|
205
|
-
return sanitizeHtml(content);
|
|
206
|
-
case 'markdown':
|
|
207
|
-
return sanitizeMarkdown(content);
|
|
208
|
-
case 'json':
|
|
209
|
-
return sanitizeJson(content);
|
|
210
|
-
default:
|
|
211
|
-
// For plain text, just remove control characters except for newlines and tabs
|
|
212
|
-
// eslint-disable-next-line no-control-regex
|
|
213
|
-
return content.replace(/[\x00-\x09\x0B-\x1F\x7F]/g, '');
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Sanitize a filename to ensure it's safe for use in file systems
|
|
219
|
-
*
|
|
220
|
-
* This function removes or replaces characters that are not safe for use in filenames
|
|
221
|
-
* across different operating systems. It handles null/undefined inputs and preserves
|
|
222
|
-
* spaces and non-ASCII characters that are generally safe for modern file systems.
|
|
223
|
-
*
|
|
224
|
-
* @param filename The filename to sanitize
|
|
225
|
-
* @returns A sanitized filename safe for use in file systems
|
|
226
|
-
*/
|
|
227
|
-
export function sanitizeFilename(filename: string | null | undefined): string {
|
|
228
|
-
// Handle null or undefined
|
|
229
|
-
if (filename === null || filename === undefined) {
|
|
230
|
-
return '';
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Replace invalid characters with underscores
|
|
234
|
-
// This regex matches characters that are generally unsafe in filenames across platforms:
|
|
235
|
-
// / \ : * ? " < > | and control characters
|
|
236
|
-
// eslint-disable-next-line no-control-regex
|
|
237
|
-
return filename.replace(/[/\\:*?"<>|\x00-\x1F\x7F]/g, '_');
|
|
238
|
-
}
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Smart file selection module based on project configuration files.
|
|
3
|
-
*
|
|
4
|
-
* This module provides enhanced file selection functionality by respecting
|
|
5
|
-
* project configuration files like tsconfig.json and .eslintignore in addition
|
|
6
|
-
* to .gitignore patterns.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import * as fs from 'node:fs';
|
|
10
|
-
import * as path from 'node:path';
|
|
11
|
-
import { loadGitignorePatterns, shouldExcludeFile } from './fileFilters';
|
|
12
|
-
import logger from './logger';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Interface for TypeScript configuration file
|
|
16
|
-
*/
|
|
17
|
-
interface TsConfig {
|
|
18
|
-
include?: string[];
|
|
19
|
-
exclude?: string[];
|
|
20
|
-
files?: string[];
|
|
21
|
-
compilerOptions?: Record<string, unknown>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Load ESLint ignore patterns from a project directory
|
|
26
|
-
* @param projectDir Project directory path
|
|
27
|
-
* @returns Array of ESLint ignore patterns
|
|
28
|
-
*/
|
|
29
|
-
export async function loadEslintIgnorePatterns(projectDir: string): Promise<string[]> {
|
|
30
|
-
try {
|
|
31
|
-
const eslintIgnorePath = path.join(projectDir, '.eslintignore');
|
|
32
|
-
|
|
33
|
-
// Check if .eslintignore exists
|
|
34
|
-
try {
|
|
35
|
-
await fs.promises.access(eslintIgnorePath);
|
|
36
|
-
} catch (_error) {
|
|
37
|
-
// File doesn't exist
|
|
38
|
-
logger.debug(`No .eslintignore file found at ${eslintIgnorePath}`);
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Read and parse .eslintignore
|
|
43
|
-
const content = await fs.promises.readFile(eslintIgnorePath, 'utf-8');
|
|
44
|
-
if (!content) {
|
|
45
|
-
return [];
|
|
46
|
-
}
|
|
47
|
-
return content
|
|
48
|
-
.split('\n')
|
|
49
|
-
.map((line) => line.trim())
|
|
50
|
-
.filter((line) => line && !line.startsWith('#'));
|
|
51
|
-
} catch (error) {
|
|
52
|
-
// Only log as error if it's not just a file not found issue
|
|
53
|
-
if (error instanceof Error && (error as NodeJS.ErrnoException).code !== 'ENOENT') {
|
|
54
|
-
logger.error(`Error reading .eslintignore: ${error}`);
|
|
55
|
-
} else {
|
|
56
|
-
const eslintIgnorePath = path.join(projectDir, '.eslintignore');
|
|
57
|
-
logger.debug(`No .eslintignore file found at ${eslintIgnorePath}`);
|
|
58
|
-
}
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Load TypeScript configuration from a project directory
|
|
65
|
-
* @param projectDir Project directory path
|
|
66
|
-
* @returns TypeScript configuration or null if not found
|
|
67
|
-
*/
|
|
68
|
-
export async function loadTsConfig(projectDir: string): Promise<TsConfig | null> {
|
|
69
|
-
try {
|
|
70
|
-
const tsConfigPath = path.join(projectDir, 'tsconfig.json');
|
|
71
|
-
|
|
72
|
-
// Check if tsconfig.json exists
|
|
73
|
-
try {
|
|
74
|
-
await fs.promises.access(tsConfigPath);
|
|
75
|
-
} catch (_error) {
|
|
76
|
-
// File doesn't exist
|
|
77
|
-
logger.debug(`No tsconfig.json file found at ${tsConfigPath}`);
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Read and parse tsconfig.json
|
|
82
|
-
const content = await fs.promises.readFile(tsConfigPath, 'utf-8');
|
|
83
|
-
if (!content) {
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
try {
|
|
87
|
-
return JSON.parse(content) as TsConfig;
|
|
88
|
-
} catch (parseError) {
|
|
89
|
-
logger.error(`Error parsing tsconfig.json: ${parseError}`);
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
} catch (error) {
|
|
93
|
-
// Only log as error if it's not just a file not found issue
|
|
94
|
-
if (error instanceof Error && (error as NodeJS.ErrnoException).code !== 'ENOENT') {
|
|
95
|
-
logger.error(`Error reading tsconfig.json: ${error}`);
|
|
96
|
-
} else {
|
|
97
|
-
const tsConfigPath = path.join(projectDir, 'tsconfig.json');
|
|
98
|
-
logger.debug(`No tsconfig.json file found at ${tsConfigPath}`);
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Convert TypeScript glob patterns to regex patterns
|
|
106
|
-
* @param pattern TypeScript glob pattern
|
|
107
|
-
* @returns Regular expression pattern
|
|
108
|
-
*/
|
|
109
|
-
function convertTsGlobToRegex(pattern: string): RegExp {
|
|
110
|
-
// Escape special regex characters first, but preserve glob patterns
|
|
111
|
-
let regexPattern = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\?/g, '[^/]');
|
|
112
|
-
|
|
113
|
-
// Handle ** patterns (match zero or more directories)
|
|
114
|
-
// **/ at the beginning means match any number of directories
|
|
115
|
-
// /** at the end means match any number of directories
|
|
116
|
-
// /**/ in the middle means match any number of directories
|
|
117
|
-
regexPattern = regexPattern
|
|
118
|
-
.replace(/\*\*\//g, '(?:.*/)?') // **/ matches zero or more directories
|
|
119
|
-
.replace(/\/\*\*/g, '(?:/.*)?') // /** matches zero or more directories
|
|
120
|
-
.replace(/\*\*/g, '.*'); // ** by itself matches anything
|
|
121
|
-
|
|
122
|
-
// Handle single * patterns (match anything except directory separators)
|
|
123
|
-
regexPattern = regexPattern.replace(/\*/g, '[^/]*');
|
|
124
|
-
|
|
125
|
-
// Create regex that matches both full paths and relative paths
|
|
126
|
-
// The pattern should match if:
|
|
127
|
-
// 1. The full path matches the pattern
|
|
128
|
-
// 2. The relative path matches the pattern
|
|
129
|
-
// 3. The pattern matches from any directory level
|
|
130
|
-
return new RegExp(`(^|/)${regexPattern}$`, 'i');
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Check if a file matches TypeScript configuration
|
|
135
|
-
* @param filePath File path
|
|
136
|
-
* @param tsConfig TypeScript configuration
|
|
137
|
-
* @param projectDir Project directory path
|
|
138
|
-
* @returns True if the file should be included based on TypeScript configuration
|
|
139
|
-
*/
|
|
140
|
-
export function matchesTsConfig(filePath: string, tsConfig: TsConfig, projectDir: string): boolean {
|
|
141
|
-
// If tsconfig.json doesn't exist, include all files
|
|
142
|
-
if (!tsConfig) {
|
|
143
|
-
return true;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Convert Windows paths to Unix-style for consistent pattern matching
|
|
147
|
-
const normalizedPath = filePath.replace(/\\/g, '/');
|
|
148
|
-
const relativePath = path.relative(projectDir, filePath).replace(/\\/g, '/');
|
|
149
|
-
|
|
150
|
-
// If files array is provided, only include files explicitly listed
|
|
151
|
-
if (tsConfig.files && tsConfig.files.length > 0) {
|
|
152
|
-
return tsConfig.files.some((file) => {
|
|
153
|
-
const normalizedFile = file.replace(/\\/g, '/');
|
|
154
|
-
return relativePath === normalizedFile;
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Check exclude patterns first
|
|
159
|
-
if (tsConfig.exclude && tsConfig.exclude.length > 0) {
|
|
160
|
-
for (const pattern of tsConfig.exclude) {
|
|
161
|
-
const regex = convertTsGlobToRegex(pattern);
|
|
162
|
-
if (regex.test(normalizedPath) || regex.test(relativePath)) {
|
|
163
|
-
// File matches an exclude pattern, so exclude it
|
|
164
|
-
logger.debug(`File ${filePath} excluded by tsconfig.json pattern: ${pattern}`);
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Then check include patterns
|
|
171
|
-
if (tsConfig.include && tsConfig.include.length > 0) {
|
|
172
|
-
// Find if file matches any include pattern
|
|
173
|
-
for (const pattern of tsConfig.include) {
|
|
174
|
-
const regex = convertTsGlobToRegex(pattern);
|
|
175
|
-
|
|
176
|
-
// Test the pattern against different path representations
|
|
177
|
-
const testPaths = [
|
|
178
|
-
normalizedPath,
|
|
179
|
-
relativePath,
|
|
180
|
-
path.basename(filePath),
|
|
181
|
-
// Also test with leading slash removed for relative paths
|
|
182
|
-
relativePath.startsWith('/') ? relativePath.slice(1) : relativePath,
|
|
183
|
-
];
|
|
184
|
-
|
|
185
|
-
for (const testPath of testPaths) {
|
|
186
|
-
if (regex.test(testPath)) {
|
|
187
|
-
logger.debug(
|
|
188
|
-
`File ${filePath} matched by tsconfig.json pattern: ${pattern} (tested path: ${testPath})`,
|
|
189
|
-
);
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
logger.debug(
|
|
196
|
-
`File ${filePath} not included by any tsconfig.json include pattern (patterns: ${tsConfig.include.join(', ')})`,
|
|
197
|
-
);
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// If no include patterns are provided, include all files that weren't excluded
|
|
202
|
-
return true;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Apply smart filtering to a list of file paths
|
|
207
|
-
* @param filePaths Array of file paths
|
|
208
|
-
* @param projectDir Project directory path
|
|
209
|
-
* @returns Array of filtered file paths
|
|
210
|
-
*/
|
|
211
|
-
export async function applySmartFiltering(
|
|
212
|
-
filePaths: string[],
|
|
213
|
-
projectDir: string,
|
|
214
|
-
): Promise<string[]> {
|
|
215
|
-
// Load ignore patterns
|
|
216
|
-
const gitignorePatterns = await loadGitignorePatterns(projectDir);
|
|
217
|
-
const eslintIgnorePatterns = await loadEslintIgnorePatterns(projectDir);
|
|
218
|
-
const tsConfig = await loadTsConfig(projectDir);
|
|
219
|
-
|
|
220
|
-
// Log patterns loaded
|
|
221
|
-
logger.debug(`Loaded ${gitignorePatterns.length} .gitignore patterns`);
|
|
222
|
-
logger.debug(`Loaded ${eslintIgnorePatterns.length} .eslintignore patterns`);
|
|
223
|
-
logger.debug(`TypeScript config loaded: ${tsConfig ? 'Yes' : 'No'}`);
|
|
224
|
-
|
|
225
|
-
// Apply filtering
|
|
226
|
-
return filePaths.filter((filePath) => {
|
|
227
|
-
// Apply .gitignore patterns
|
|
228
|
-
if (shouldExcludeFile(filePath, gitignorePatterns)) {
|
|
229
|
-
logger.debug(`File excluded by .gitignore: ${filePath}`);
|
|
230
|
-
return false;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Apply .eslintignore patterns
|
|
234
|
-
if (shouldExcludeFile(filePath, eslintIgnorePatterns)) {
|
|
235
|
-
logger.debug(`File excluded by .eslintignore: ${filePath}`);
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// Apply TypeScript configuration
|
|
240
|
-
if (tsConfig && !matchesTsConfig(filePath, tsConfig, projectDir)) {
|
|
241
|
-
logger.debug(`File excluded by tsconfig.json: ${filePath}`);
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Include the file if it passed all filters
|
|
246
|
-
return true;
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
export default {
|
|
251
|
-
loadEslintIgnorePatterns,
|
|
252
|
-
loadTsConfig,
|
|
253
|
-
matchesTsConfig,
|
|
254
|
-
applySmartFiltering,
|
|
255
|
-
};
|