code-auditor-mcp 2.6.2 → 3.0.1
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 +23 -196
- package/dist/analyzers/analyzerUtils.d.ts +13 -11
- package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
- package/dist/analyzers/analyzerUtils.js +22 -56
- package/dist/analyzers/analyzerUtils.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/dataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/dataAccessAnalyzer.js +50 -24
- package/dist/analyzers/dataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts +4 -1
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +210 -111
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/dryAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/dryAnalyzer.js +190 -58
- package/dist/analyzers/dryAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts +20 -0
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/invariantsAnalyzer.js +148 -0
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +2 -2
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/schemaAnalyzer.d.ts +2 -0
- package/dist/analyzers/schemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/schemaAnalyzer.js +306 -147
- package/dist/analyzers/schemaAnalyzer.js.map +1 -1
- package/dist/analyzers/solidAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/solidAnalyzer.js +145 -119
- package/dist/analyzers/solidAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +3 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +41 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +8 -8
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +6 -6
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +367 -24
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +740 -18
- package/dist/cli.js.map +1 -1
- package/dist/codeIndexDB-enhanced.d.ts +35 -13
- package/dist/codeIndexDB-enhanced.d.ts.map +1 -1
- package/dist/codeIndexDB-enhanced.js +311 -214
- package/dist/codeIndexDB-enhanced.js.map +1 -1
- package/dist/{codeIndexDb.d.ts → codeIndexDB.d.ts} +51 -224
- package/dist/codeIndexDB.d.ts.map +1 -0
- package/dist/codeIndexDB.js +2042 -0
- package/dist/codeIndexDB.js.map +1 -0
- package/dist/codeIndexService.d.ts.map +1 -1
- package/dist/codeIndexService.js.map +1 -1
- package/dist/componentScanner.d.ts +14 -8
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +136 -113
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +10 -7
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/fingerprint.d.ts +15 -0
- package/dist/fingerprint.d.ts.map +1 -0
- package/dist/fingerprint.js +32 -0
- package/dist/fingerprint.js.map +1 -0
- package/dist/functionScanner.d.ts +5 -0
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +417 -341
- package/dist/functionScanner.js.map +1 -1
- package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
- package/dist/generators/AiderConfigGenerator.d.ts.map +1 -1
- package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
- package/dist/generators/BaseConfigGenerator.js.map +1 -1
- package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
- package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
- package/dist/generators/JetBrainsConfigGenerator.d.ts.map +1 -1
- package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
- package/dist/grammars/tree-sitter-go.wasm +0 -0
- package/dist/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/invariants/index.d.ts +9 -0
- package/dist/invariants/index.d.ts.map +1 -0
- package/dist/invariants/index.js +4 -0
- package/dist/invariants/index.js.map +1 -0
- package/dist/invariants/invariant-rules.schema.json +137 -0
- package/dist/invariants/ruleEngine.d.ts +32 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -0
- package/dist/invariants/ruleEngine.js +536 -0
- package/dist/invariants/ruleEngine.js.map +1 -0
- package/dist/invariants/ruleValidator.d.ts +17 -0
- package/dist/invariants/ruleValidator.d.ts.map +1 -0
- package/dist/invariants/ruleValidator.js +264 -0
- package/dist/invariants/ruleValidator.js.map +1 -0
- package/dist/invariants/types.d.ts +78 -0
- package/dist/invariants/types.d.ts.map +1 -0
- package/dist/invariants/types.js +5 -0
- package/dist/invariants/types.js.map +1 -0
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/LanguageRegistry.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +1 -1
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +102 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -0
- package/dist/languages/adapterBridge.js +382 -0
- package/dist/languages/adapterBridge.js.map +1 -0
- package/dist/languages/go/GoAdapter.d.ts +37 -26
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +560 -281
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/index.d.ts +5 -2
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +11 -9
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/tree-sitter/converter.d.ts +43 -0
- package/dist/languages/tree-sitter/converter.d.ts.map +1 -0
- package/dist/languages/tree-sitter/converter.js +150 -0
- package/dist/languages/tree-sitter/converter.js.map +1 -0
- package/dist/languages/tree-sitter/parser.d.ts +36 -0
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -0
- package/dist/languages/tree-sitter/parser.js +114 -0
- package/dist/languages/tree-sitter/parser.js.map +1 -0
- package/dist/languages/types.d.ts +11 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +92 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +951 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -0
- package/dist/mcp-tools/projectTasks.d.ts +58 -22
- package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
- package/dist/mcp-tools/projectTasks.js +172 -10
- package/dist/mcp-tools/projectTasks.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +21 -21
- package/dist/mcp-tools/whitelistTools.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.js +130 -126
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcp-ui-simple.js +1 -1
- package/dist/mcp-ui-simple.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +1376 -1181
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts +4 -0
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +49 -2
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpToolErrors.d.ts.map +1 -1
- package/dist/mcpToolErrors.js.map +1 -1
- package/dist/native/ast-grep-napi.darwin-arm64.node +0 -0
- package/dist/native/ast-grep-napi.darwin-x64.node +0 -0
- package/dist/native/ast-grep-napi.linux-arm64-gnu.node +0 -0
- package/dist/native/ast-grep-napi.linux-arm64-musl.node +0 -0
- package/dist/native/ast-grep-napi.linux-x64-gnu.node +0 -0
- package/dist/native/ast-grep-napi.linux-x64-musl.node +0 -0
- package/dist/native/ast-grep-napi.win32-x64-msvc.node +0 -0
- package/dist/native-bootstrap.d.ts +15 -0
- package/dist/native-bootstrap.d.ts.map +1 -0
- package/dist/native-bootstrap.js +75 -0
- package/dist/native-bootstrap.js.map +1 -0
- package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
- package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/reportGenerator.d.ts.map +1 -1
- package/dist/reporting/reportGenerator.js +4 -0
- package/dist/reporting/reportGenerator.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.d.ts +39 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -0
- package/dist/reporting/sarifReportGenerator.js +229 -0
- package/dist/reporting/sarifReportGenerator.js.map +1 -0
- package/dist/search/QueryParser.d.ts +41 -0
- package/dist/search/QueryParser.d.ts.map +1 -1
- package/dist/search/QueryParser.js +200 -19
- package/dist/search/QueryParser.js.map +1 -1
- package/dist/services/CodeMapGenerator.d.ts.map +1 -1
- package/dist/services/CodeMapGenerator.js +4 -4
- package/dist/services/CodeMapGenerator.js.map +1 -1
- package/dist/services/ProjectTaskRepository.d.ts +15 -2
- package/dist/services/ProjectTaskRepository.d.ts.map +1 -1
- package/dist/services/ProjectTaskRepository.js +16 -1
- package/dist/services/ProjectTaskRepository.js.map +1 -1
- package/dist/services/SchemaParser.d.ts.map +1 -1
- package/dist/services/SchemaParser.js +5 -8
- package/dist/services/SchemaParser.js.map +1 -1
- package/dist/services/auditJobService.d.ts +1 -1
- package/dist/services/projectTaskHelpers.js.map +1 -1
- package/dist/services/whitelistService.d.ts.map +1 -1
- package/dist/services/whitelistService.js +1 -1
- package/dist/services/whitelistService.js.map +1 -1
- package/dist/tool-registry.d.ts +79 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +139 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/types/projectTask.d.ts +4 -0
- package/dist/types/projectTask.d.ts.map +1 -1
- package/dist/types.d.ts +26 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/InteractivePrompts.d.ts.map +1 -1
- package/dist/ui/InteractivePrompts.js.map +1 -1
- package/dist/utils/astParser.d.ts +31 -38
- package/dist/utils/astParser.d.ts.map +1 -1
- package/dist/utils/astParser.js +138 -196
- package/dist/utils/astParser.js.map +1 -1
- package/dist/utils/astUtils.d.ts +87 -58
- package/dist/utils/astUtils.d.ts.map +1 -1
- package/dist/utils/astUtils.js +852 -581
- package/dist/utils/astUtils.js.map +1 -1
- package/dist/utils/componentPatterns.js.map +1 -1
- package/dist/utils/componentResponsibility.d.ts +13 -9
- package/dist/utils/componentResponsibility.d.ts.map +1 -1
- package/dist/utils/componentResponsibility.js +236 -206
- package/dist/utils/componentResponsibility.js.map +1 -1
- package/dist/utils/dependencyExtractor.d.ts +11 -6
- package/dist/utils/dependencyExtractor.d.ts.map +1 -1
- package/dist/utils/dependencyExtractor.js +200 -119
- package/dist/utils/dependencyExtractor.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +1 -1
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +15 -6
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/jsDocParser.d.ts +27 -30
- package/dist/utils/jsDocParser.d.ts.map +1 -1
- package/dist/utils/jsDocParser.js +271 -207
- package/dist/utils/jsDocParser.js.map +1 -1
- package/dist/utils/reactDetection.d.ts +27 -12
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +331 -219
- package/dist/utils/reactDetection.js.map +1 -1
- package/dist/workers/auditWorker.js +17 -3
- package/dist/workers/auditWorker.js.map +1 -1
- package/package.json +54 -51
- package/dist/adapters/GoAdapter.d.ts +0 -53
- package/dist/adapters/GoAdapter.d.ts.map +0 -1
- package/dist/adapters/GoAdapter.js +0 -611
- package/dist/adapters/GoAdapter.js.map +0 -1
- package/dist/adapters/GoConfig.d.ts +0 -35
- package/dist/adapters/GoConfig.d.ts.map +0 -1
- package/dist/adapters/GoConfig.js +0 -155
- package/dist/adapters/GoConfig.js.map +0 -1
- package/dist/adapters/LanguageAdapter.d.ts +0 -135
- package/dist/adapters/LanguageAdapter.d.ts.map +0 -1
- package/dist/adapters/LanguageAdapter.js +0 -47
- package/dist/adapters/LanguageAdapter.js.map +0 -1
- package/dist/adapters/TypeScriptAdapter.d.ts +0 -43
- package/dist/adapters/TypeScriptAdapter.d.ts.map +0 -1
- package/dist/adapters/TypeScriptAdapter.js +0 -386
- package/dist/adapters/TypeScriptAdapter.js.map +0 -1
- package/dist/adapters/UniversalAnalyzer.d.ts +0 -42
- package/dist/adapters/UniversalAnalyzer.d.ts.map +0 -1
- package/dist/adapters/UniversalAnalyzer.js +0 -103
- package/dist/adapters/UniversalAnalyzer.js.map +0 -1
- package/dist/adapters/UniversalSOLIDAnalyzer.d.ts +0 -48
- package/dist/adapters/UniversalSOLIDAnalyzer.d.ts.map +0 -1
- package/dist/adapters/UniversalSOLIDAnalyzer.js +0 -178
- package/dist/adapters/UniversalSOLIDAnalyzer.js.map +0 -1
- package/dist/adapters/solidAnalyzerCompat.d.ts +0 -21
- package/dist/adapters/solidAnalyzerCompat.d.ts.map +0 -1
- package/dist/adapters/solidAnalyzerCompat.js +0 -78
- package/dist/adapters/solidAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/dataAccessAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/dataAccessAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/dataAccessAnalyzerCompat.js +0 -59
- package/dist/analyzers/dataAccessAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/documentationAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/documentationAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/documentationAnalyzerCompat.js +0 -52
- package/dist/analyzers/documentationAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/dryAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/dryAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/dryAnalyzerCompat.js +0 -44
- package/dist/analyzers/dryAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/schemaAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/schemaAnalyzerCompat.js +0 -69
- package/dist/analyzers/schemaAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/solidAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/solidAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/solidAnalyzerCompat.js +0 -78
- package/dist/analyzers/solidAnalyzerCompat.js.map +0 -1
- package/dist/codeIndexDb.d.ts.map +0 -1
- package/dist/codeIndexDb.js +0 -2102
- package/dist/codeIndexDb.js.map +0 -1
- package/dist/languages/typescript/TypeScriptAdapter.d.ts +0 -108
- package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +0 -1
- package/dist/languages/typescript/TypeScriptAdapter.js +0 -567
- package/dist/languages/typescript/TypeScriptAdapter.js.map +0 -1
- package/dist/languages/typescript/test-extraction.d.ts +0 -2
- package/dist/languages/typescript/test-extraction.d.ts.map +0 -1
- package/dist/languages/typescript/test-extraction.js +0 -36
- package/dist/languages/typescript/test-extraction.js.map +0 -1
- package/dist/mcp-hybrid.d.ts +0 -10
- package/dist/mcp-hybrid.d.ts.map +0 -1
- package/dist/mcp-hybrid.js +0 -41
- package/dist/mcp-hybrid.js.map +0 -1
- package/dist/mcp-index.d.ts +0 -13
- package/dist/mcp-index.d.ts.map +0 -1
- package/dist/mcp-index.js +0 -136
- package/dist/mcp-index.js.map +0 -1
- package/dist/mcp-standalone.d.ts +0 -3
- package/dist/mcp-standalone.d.ts.map +0 -1
- package/dist/mcp-standalone.js +0 -1324
- package/dist/mcp-standalone.js.map +0 -1
- package/dist/mcp-ui-server.d.ts +0 -27
- package/dist/mcp-ui-server.d.ts.map +0 -1
- package/dist/mcp-ui-server.js +0 -484
- package/dist/mcp-ui-server.js.map +0 -1
- package/dist/test-multi-strategy-search.d.ts +0 -3
- package/dist/test-multi-strategy-search.d.ts.map +0 -1
- package/dist/test-multi-strategy-search.js +0 -170
- package/dist/test-multi-strategy-search.js.map +0 -1
package/dist/componentScanner.js
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* React Component Scanner Module
|
|
3
3
|
* Scans TypeScript/JavaScript files for React components and extracts metadata
|
|
4
|
+
*
|
|
5
|
+
* ## Migration: TypeScript Compiler API → tree-sitter
|
|
6
|
+
*
|
|
7
|
+
* All `ts.Node`/`ts.SourceFile`/`ts.SyntaxKind`/`ts.createProgram` usage replaced with
|
|
8
|
+
* tree-sitter `ASTNode` and adapterBridge utilities. `import * as ts from 'typescript'` removed.
|
|
9
|
+
* TypeChecker-based prop extraction is a documented capability regression (plan Step 2.5).
|
|
4
10
|
*/
|
|
5
|
-
import * as ts from 'typescript';
|
|
6
11
|
import { isReactComponent, detectComponentType, getComponentName, extractHooks, extractPropTypes, extractComponentImports } from './utils/reactDetection.js';
|
|
7
|
-
import {
|
|
12
|
+
import { parseFile, walkAST, isExported, getLineAndColumn } from './languages/adapterBridge.js';
|
|
13
|
+
import { readFile } from 'fs/promises';
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Helpers
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/** Get raw text from a tree-sitter node (stored on ASTNode.raw). */
|
|
18
|
+
function rawText(node) {
|
|
19
|
+
return node.raw?.text ?? '';
|
|
20
|
+
}
|
|
21
|
+
/** Find the first child of a given type. */
|
|
22
|
+
function findChildOfType(node, type) {
|
|
23
|
+
return node.children?.find(c => c.type === type);
|
|
24
|
+
}
|
|
8
25
|
const DEFAULT_OPTIONS = {
|
|
9
26
|
includeTests: false,
|
|
10
27
|
includeStories: false,
|
|
@@ -13,13 +30,18 @@ const DEFAULT_OPTIONS = {
|
|
|
13
30
|
extractImports: true,
|
|
14
31
|
detectComplexity: true
|
|
15
32
|
};
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// File scanning
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
16
36
|
/**
|
|
17
37
|
* Scan a single file for React components
|
|
18
38
|
*/
|
|
19
39
|
export async function scanFile(filePath, options = DEFAULT_OPTIONS) {
|
|
20
40
|
try {
|
|
21
|
-
|
|
22
|
-
|
|
41
|
+
// Read file content and parse via tree-sitter
|
|
42
|
+
const content = await readFile(filePath, 'utf-8');
|
|
43
|
+
const ast = parseFile(filePath, content);
|
|
44
|
+
if (!ast) {
|
|
23
45
|
return {
|
|
24
46
|
filePath,
|
|
25
47
|
components: [],
|
|
@@ -27,92 +49,53 @@ export async function scanFile(filePath, options = DEFAULT_OPTIONS) {
|
|
|
27
49
|
parseErrors: ['Failed to parse file']
|
|
28
50
|
};
|
|
29
51
|
}
|
|
52
|
+
const root = ast.root;
|
|
30
53
|
const state = {
|
|
31
54
|
currentFile: filePath,
|
|
32
55
|
components: [],
|
|
33
56
|
imports: [],
|
|
34
57
|
errors: []
|
|
35
58
|
};
|
|
36
|
-
const sourceFile = parseResult.sourceFile;
|
|
37
59
|
// Extract component imports if requested
|
|
38
60
|
if (options.extractImports) {
|
|
39
|
-
state.imports = extractComponentImports(
|
|
40
|
-
}
|
|
41
|
-
// Create type checker for prop extraction
|
|
42
|
-
const program = ts.createProgram([filePath], {
|
|
43
|
-
target: ts.ScriptTarget.Latest,
|
|
44
|
-
jsx: ts.JsxEmit.React
|
|
45
|
-
});
|
|
46
|
-
const typeChecker = options.extractProps ? program.getTypeChecker() : undefined;
|
|
47
|
-
// Traverse AST to find components
|
|
48
|
-
traverseNode(sourceFile, sourceFile, state, options, typeChecker);
|
|
49
|
-
// Calculate file hash for change detection
|
|
50
|
-
const fileHash = undefined; // TODO: implement file hash calculation
|
|
51
|
-
return {
|
|
52
|
-
filePath,
|
|
53
|
-
components: state.components,
|
|
54
|
-
imports: state.imports,
|
|
55
|
-
fileHash,
|
|
56
|
-
parseErrors: state.errors.length > 0 ? state.errors : undefined
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
return {
|
|
61
|
-
filePath,
|
|
62
|
-
components: [],
|
|
63
|
-
imports: [],
|
|
64
|
-
parseErrors: [`Scan error: ${error instanceof Error ? error.message : String(error)}`]
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Scan multiple files for React components
|
|
70
|
-
*/
|
|
71
|
-
export async function scanFiles(filePaths, options = DEFAULT_OPTIONS, progressCallback) {
|
|
72
|
-
const results = [];
|
|
73
|
-
for (let i = 0; i < filePaths.length; i++) {
|
|
74
|
-
if (progressCallback) {
|
|
75
|
-
progressCallback(i + 1, filePaths.length);
|
|
61
|
+
state.imports = extractComponentImports(root);
|
|
76
62
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
function traverseNode(node, sourceFile, state, options, typeChecker) {
|
|
86
|
-
// Check if node is a React component
|
|
87
|
-
if (isReactComponent(node)) {
|
|
88
|
-
const componentType = detectComponentType(node);
|
|
89
|
-
if (componentType) {
|
|
63
|
+
// Walk the AST and scan for React components
|
|
64
|
+
// walkAST visits every node recursively — no manual recursion needed
|
|
65
|
+
walkAST(root, (node) => {
|
|
66
|
+
if (!isReactComponent(node))
|
|
67
|
+
return;
|
|
68
|
+
const componentType = detectComponentType(node);
|
|
69
|
+
if (!componentType)
|
|
70
|
+
return;
|
|
90
71
|
const componentName = getComponentName(node);
|
|
91
72
|
// Skip test/story components if configured
|
|
92
73
|
if (!options.includeTests && componentName.includes('Test'))
|
|
93
74
|
return;
|
|
94
75
|
if (!options.includeStories && componentName.includes('Story'))
|
|
95
76
|
return;
|
|
77
|
+
const { line } = getLineAndColumn(node);
|
|
78
|
+
const endLine = node.location?.end?.line ?? line;
|
|
96
79
|
const component = {
|
|
97
80
|
name: componentName,
|
|
98
81
|
filePath: state.currentFile,
|
|
99
|
-
lineNumber:
|
|
100
|
-
startLine:
|
|
101
|
-
endLine:
|
|
82
|
+
lineNumber: line + 1, // Convert to 1-based
|
|
83
|
+
startLine: line + 1,
|
|
84
|
+
endLine: endLine + 1,
|
|
102
85
|
entityType: 'component',
|
|
103
86
|
componentType,
|
|
104
87
|
dependencies: [], // Will be populated later from imports
|
|
105
88
|
purpose: `React ${componentType} component`,
|
|
106
|
-
context: extractComponentContext(node,
|
|
89
|
+
context: extractComponentContext(node, content),
|
|
107
90
|
isExported: isComponentExported(node)
|
|
108
91
|
};
|
|
109
92
|
// Extract hooks if functional component
|
|
110
93
|
if (options.extractHooks && (componentType === 'functional' || componentType === 'memo' || componentType === 'forwardRef')) {
|
|
111
|
-
component.hooks = extractHooks(node
|
|
94
|
+
component.hooks = extractHooks(node);
|
|
112
95
|
}
|
|
113
|
-
// Extract props
|
|
96
|
+
// Extract props (tree-sitter: no TypeChecker — capability regression per plan Step 2.5)
|
|
114
97
|
if (options.extractProps) {
|
|
115
|
-
component.props = extractPropTypes(node
|
|
98
|
+
component.props = extractPropTypes(node);
|
|
116
99
|
}
|
|
117
100
|
// Extract JSX elements used
|
|
118
101
|
component.jsxElements = extractJSXElements(node);
|
|
@@ -125,45 +108,71 @@ function traverseNode(node, sourceFile, state, options, typeChecker) {
|
|
|
125
108
|
component.hasErrorBoundary = hasErrorBoundaryMethods(node);
|
|
126
109
|
}
|
|
127
110
|
state.components.push(component);
|
|
111
|
+
});
|
|
112
|
+
// Calculate file hash for change detection
|
|
113
|
+
const fileHash = undefined; // TODO: implement file hash calculation
|
|
114
|
+
return {
|
|
115
|
+
filePath,
|
|
116
|
+
components: state.components,
|
|
117
|
+
imports: state.imports,
|
|
118
|
+
fileHash,
|
|
119
|
+
parseErrors: state.errors.length > 0 ? state.errors : undefined
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
filePath,
|
|
125
|
+
components: [],
|
|
126
|
+
imports: [],
|
|
127
|
+
parseErrors: [`Scan error: ${error instanceof Error ? error.message : String(error)}`]
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Scan multiple files for React components
|
|
133
|
+
*/
|
|
134
|
+
export async function scanFiles(filePaths, options = DEFAULT_OPTIONS, progressCallback) {
|
|
135
|
+
const results = [];
|
|
136
|
+
for (let i = 0; i < filePaths.length; i++) {
|
|
137
|
+
if (progressCallback) {
|
|
138
|
+
progressCallback(i + 1, filePaths.length);
|
|
128
139
|
}
|
|
140
|
+
const result = await scanFile(filePaths[i], options);
|
|
141
|
+
results.push(result);
|
|
129
142
|
}
|
|
130
|
-
|
|
131
|
-
ts.forEachChild(node, child => traverseNode(child, sourceFile, state, options, typeChecker));
|
|
143
|
+
return results;
|
|
132
144
|
}
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Helper functions
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
133
148
|
/**
|
|
134
149
|
* Extract context information about the component
|
|
135
150
|
*/
|
|
136
|
-
function extractComponentContext(node,
|
|
137
|
-
const
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const lineStarts = sourceFile.getLineStarts();
|
|
151
|
+
function extractComponentContext(node, sourceText) {
|
|
152
|
+
const { line } = getLineAndColumn(node);
|
|
153
|
+
const allLines = sourceText.split('\n');
|
|
154
|
+
const contextLines = [];
|
|
141
155
|
// Get up to 3 lines before the component for context
|
|
142
|
-
for (let i = Math.max(0,
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (line && !line.startsWith('//') && !line.startsWith('/*')) {
|
|
147
|
-
lines.push(line);
|
|
156
|
+
for (let i = Math.max(0, line - 3); i < line; i++) {
|
|
157
|
+
const textLine = allLines[i]?.trim();
|
|
158
|
+
if (textLine && !textLine.startsWith('//') && !textLine.startsWith('/*')) {
|
|
159
|
+
contextLines.push(textLine);
|
|
148
160
|
}
|
|
149
161
|
}
|
|
150
|
-
return
|
|
162
|
+
return contextLines.join(' ').substring(0, 200);
|
|
151
163
|
}
|
|
152
164
|
/**
|
|
153
165
|
* Check if component is exported
|
|
154
166
|
*/
|
|
155
167
|
function isComponentExported(node) {
|
|
156
|
-
// Check for export modifier
|
|
157
|
-
if (
|
|
158
|
-
|
|
159
|
-
if (modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword)) {
|
|
160
|
-
return true;
|
|
161
|
-
}
|
|
168
|
+
// Check for export modifier on the node itself
|
|
169
|
+
if (isExported(node)) {
|
|
170
|
+
return true;
|
|
162
171
|
}
|
|
163
172
|
// Check if parent is an export statement
|
|
164
173
|
let parent = node.parent;
|
|
165
174
|
while (parent) {
|
|
166
|
-
if (
|
|
175
|
+
if (parent.type === 'export_statement') {
|
|
167
176
|
return true;
|
|
168
177
|
}
|
|
169
178
|
parent = parent.parent;
|
|
@@ -175,21 +184,23 @@ function isComponentExported(node) {
|
|
|
175
184
|
*/
|
|
176
185
|
function extractJSXElements(node) {
|
|
177
186
|
const elements = new Set();
|
|
178
|
-
|
|
179
|
-
if (
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
187
|
+
walkAST(node, (child) => {
|
|
188
|
+
if (child.type === 'jsx_element') {
|
|
189
|
+
const openTag = findChildOfType(child, 'open_tag');
|
|
190
|
+
if (openTag) {
|
|
191
|
+
const tagNameNode = openTag.children?.find(c => c.type === 'identifier' || c.type === 'member_expression');
|
|
192
|
+
if (tagNameNode) {
|
|
193
|
+
elements.add(rawText(tagNameNode));
|
|
194
|
+
}
|
|
185
195
|
}
|
|
186
|
-
|
|
187
|
-
|
|
196
|
+
}
|
|
197
|
+
else if (child.type === 'jsx_self_closing_element') {
|
|
198
|
+
const tagNameNode = child.children?.find(c => c.type === 'identifier' || c.type === 'member_expression');
|
|
199
|
+
if (tagNameNode) {
|
|
200
|
+
elements.add(rawText(tagNameNode));
|
|
188
201
|
}
|
|
189
202
|
}
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
ts.forEachChild(node, visit);
|
|
203
|
+
});
|
|
193
204
|
return Array.from(elements);
|
|
194
205
|
}
|
|
195
206
|
/**
|
|
@@ -197,46 +208,58 @@ function extractJSXElements(node) {
|
|
|
197
208
|
*/
|
|
198
209
|
function calculateComponentComplexity(node) {
|
|
199
210
|
let complexity = 1; // Base complexity
|
|
200
|
-
|
|
211
|
+
walkAST(node, (child) => {
|
|
201
212
|
// Control flow statements
|
|
202
|
-
if (
|
|
213
|
+
if (child.type === 'if_statement' || child.type === 'ternary_expression') {
|
|
203
214
|
complexity++;
|
|
204
215
|
}
|
|
205
|
-
else if (
|
|
206
|
-
|
|
216
|
+
else if (child.type === 'for_statement' || child.type === 'for_in_statement' ||
|
|
217
|
+
child.type === 'while_statement') {
|
|
207
218
|
complexity += 2;
|
|
208
219
|
}
|
|
209
|
-
else if (
|
|
210
|
-
|
|
220
|
+
else if (child.type === 'switch_statement') {
|
|
221
|
+
// Count switch_case children in switch body
|
|
222
|
+
const body = findChildOfType(child, 'switch_body');
|
|
223
|
+
if (body) {
|
|
224
|
+
const cases = body.children?.filter(c => c.type === 'switch_case' || c.type === 'switch_default') ?? [];
|
|
225
|
+
complexity += cases.length;
|
|
226
|
+
}
|
|
211
227
|
}
|
|
212
228
|
// Callbacks and event handlers
|
|
213
|
-
if (
|
|
214
|
-
const
|
|
215
|
-
if (
|
|
216
|
-
|
|
217
|
-
|
|
229
|
+
if (child.type === 'call_expression') {
|
|
230
|
+
const expr = child.children?.[0];
|
|
231
|
+
if (expr?.type === 'member_expression') {
|
|
232
|
+
const propNode = expr.children?.[expr.children.length - 1];
|
|
233
|
+
if (propNode && rawText(propNode) === 'map') {
|
|
234
|
+
complexity++;
|
|
235
|
+
}
|
|
218
236
|
}
|
|
219
237
|
}
|
|
220
|
-
|
|
221
|
-
}
|
|
222
|
-
ts.forEachChild(node, visit);
|
|
238
|
+
});
|
|
223
239
|
return complexity;
|
|
224
240
|
}
|
|
225
241
|
/**
|
|
226
242
|
* Check if class component has error boundary methods
|
|
227
243
|
*/
|
|
228
244
|
function hasErrorBoundaryMethods(node) {
|
|
229
|
-
if (
|
|
245
|
+
if (node.type !== 'class_declaration')
|
|
230
246
|
return false;
|
|
231
247
|
const errorBoundaryMethods = ['componentDidCatch', 'getDerivedStateFromError'];
|
|
232
248
|
const methodNames = new Set();
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
249
|
+
const classBody = findChildOfType(node, 'class_body');
|
|
250
|
+
for (const member of classBody?.children ?? []) {
|
|
251
|
+
if (member.type !== 'method_definition')
|
|
252
|
+
continue;
|
|
253
|
+
const nameNode = findChildOfType(member, 'identifier');
|
|
254
|
+
if (nameNode) {
|
|
255
|
+
methodNames.add(rawText(nameNode));
|
|
236
256
|
}
|
|
237
257
|
}
|
|
238
258
|
return errorBoundaryMethods.some(method => methodNames.has(method));
|
|
239
259
|
}
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
// Dependency tree & conversion
|
|
262
|
+
// ---------------------------------------------------------------------------
|
|
240
263
|
/**
|
|
241
264
|
* Create a component dependency tree from scan results
|
|
242
265
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentScanner.js","sourceRoot":"","sources":["../src/componentScanner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"componentScanner.js","sourceRoot":"","sources":["../src/componentScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configLoader.d.ts","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BvB;
|
|
1
|
+
{"version":3,"file":"configLoader.d.ts","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BvB;AAgHD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAkB5D;AAGD,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -59,19 +59,22 @@ function loadFromEnvironment(baseConfig, prefix) {
|
|
|
59
59
|
if (env[`${prefix}_FAIL_ON_CRITICAL`]) {
|
|
60
60
|
envConfig.failOnCritical = env[`${prefix}_FAIL_ON_CRITICAL`] === 'true';
|
|
61
61
|
}
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
const enabledAnalyzersVar = env[`${prefix}_ANALYZERS`];
|
|
63
|
+
if (enabledAnalyzersVar) {
|
|
64
|
+
envConfig.enabledAnalyzers = enabledAnalyzersVar.split(',');
|
|
64
65
|
}
|
|
65
66
|
// Code index environment variables
|
|
66
67
|
const codeIndexConfig = {};
|
|
67
68
|
if (env[`${prefix}_CODE_INDEX_DB_PATH`]) {
|
|
68
69
|
codeIndexConfig.databasePath = env[`${prefix}_CODE_INDEX_DB_PATH`];
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
const batchSizeVar = env[`${prefix}_CODE_INDEX_BATCH_SIZE`];
|
|
72
|
+
if (batchSizeVar) {
|
|
73
|
+
codeIndexConfig.maxBatchSize = parseInt(batchSizeVar, 10);
|
|
72
74
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
const searchLimitVar = env[`${prefix}_CODE_INDEX_SEARCH_LIMIT`];
|
|
76
|
+
if (searchLimitVar) {
|
|
77
|
+
codeIndexConfig.searchResultLimit = parseInt(searchLimitVar, 10);
|
|
75
78
|
}
|
|
76
79
|
if (Object.keys(codeIndexConfig).length > 0) {
|
|
77
80
|
envConfig.codeIndex = codeIndexConfig;
|
|
@@ -128,7 +131,7 @@ export function validateConfig(config) {
|
|
|
128
131
|
errors.push(`Invalid severity: ${config.minSeverity}`);
|
|
129
132
|
}
|
|
130
133
|
// Validate analyzers
|
|
131
|
-
const validAnalyzers = ['solid', 'dry', '
|
|
134
|
+
const validAnalyzers = ['solid', 'dry', 'react', 'documentation', 'data-access', 'schema', 'invariants'];
|
|
132
135
|
if (config.enabledAnalyzers) {
|
|
133
136
|
const invalid = config.enabledAnalyzers.filter(a => !validAnalyzers.includes(a));
|
|
134
137
|
if (invalid.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE5E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAIhC;IACC,sBAAsB;IACtB,IAAI,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAEhC,0BAA0B;IACzB,MAAc,CAAC,SAAS,GAAG,yBAAyB,CAAC;IAEtD,qCAAqC;IACrC,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,kCAAkC;IAClC,IAAI,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAC/B,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,kBAAkB;IAClB,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,UAAuB,EAAE,UAAkB;IACrE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,UAAuB,EAAE,MAAc;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,SAAS,GAAyB,EAAE,CAAC;IAE3C,iDAAiD;IACjD,IAAI,GAAG,CAAC,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,eAAe,CAAQ,CAAC;IAC/D,CAAC;IAED,IAAI,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,GAAG,CAAC,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC;QACtC,SAAS,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,MAAM,mBAAmB,CAAC,KAAK,MAAM,CAAC;IAC1E,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAwB9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyBxE;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAwB9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyBxE;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;IACnC,KAAK;QACH,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB;QACtB,iBAAiB;QACjB,aAAa;;IAGf,GAAG;QACD,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,YAAY;QACZ,YAAY;;IAGd,QAAQ;QACN,YAAY;QACZ,aAAa;QACb,iBAAiB;QACjB,cAAc;;IAGhB,SAAS;QACP,iBAAiB;YACf,KAAK;gBACH,UAAU;gBACV,KAAK;gBACL,OAAO;;;QAGX,oBAAoB;QACpB,aAAa;QACb,UAAU;;IAGZ,UAAU;QACR,gBAAgB;YACd,QAAQ;YACR,KAAK;YACL,OAAO;;QAET,gBAAgB;YACd,aAAa;YACb,SAAS;;QAEX,qBAAqB;YACnB,QAAQ;YACR,gBAAgB;;;CAGrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;IACpC,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,eAAe;CAChB,CAAC"}
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CACvC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC,OAAiB,CAAC;AAEpB,uCAAuC;AACvC,iEAAiE;AACjE,wGAAwG;AACxG,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAElC,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,YAAY,EAAE,CAAC;AAErE,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAE5C,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEhD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG;IACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface FingerprintInput {
|
|
2
|
+
analyzer: string;
|
|
3
|
+
rule: string;
|
|
4
|
+
file: string;
|
|
5
|
+
symbol: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Produce a stable hex SHA-256 digest from the canonical four-tuple.
|
|
9
|
+
*
|
|
10
|
+
* The components are JSON-serialized in a fixed-order array so that a colon
|
|
11
|
+
* or any other character inside a component cannot create an ambiguous
|
|
12
|
+
* boundary.
|
|
13
|
+
*/
|
|
14
|
+
export declare function fingerprint(input: FingerprintInput): string;
|
|
15
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAQ3D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable violation fingerprint for deduplication.
|
|
3
|
+
*
|
|
4
|
+
* Excludes line numbers so edits above a violation don't change its identity.
|
|
5
|
+
* JSON-array encoding prevents delimiter collisions — symbols and paths can
|
|
6
|
+
* contain any character.
|
|
7
|
+
*
|
|
8
|
+
* Reused by:
|
|
9
|
+
* Spec 02 — tasks.from_audit bridge dedupe
|
|
10
|
+
* Spec 03 — SQLite data layer (fingerprint column on tasks)
|
|
11
|
+
* Spec 04 — diff-scoped auditing
|
|
12
|
+
* Spec 06 — SARIF partial fingerprints (same tuple underlies a SARIF
|
|
13
|
+
* partialFingerprints entry)
|
|
14
|
+
*/
|
|
15
|
+
import { createHash } from 'node:crypto';
|
|
16
|
+
/**
|
|
17
|
+
* Produce a stable hex SHA-256 digest from the canonical four-tuple.
|
|
18
|
+
*
|
|
19
|
+
* The components are JSON-serialized in a fixed-order array so that a colon
|
|
20
|
+
* or any other character inside a component cannot create an ambiguous
|
|
21
|
+
* boundary.
|
|
22
|
+
*/
|
|
23
|
+
export function fingerprint(input) {
|
|
24
|
+
const canonical = JSON.stringify([
|
|
25
|
+
input.analyzer,
|
|
26
|
+
input.rule,
|
|
27
|
+
input.file,
|
|
28
|
+
input.symbol,
|
|
29
|
+
]);
|
|
30
|
+
return createHash('sha256').update(canonical).digest('hex');
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,MAAM;KACb,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Function Scanner
|
|
3
3
|
* Scans directories for functions using AST parsing
|
|
4
|
+
*
|
|
5
|
+
* ## Migration: TypeScript Compiler API → tree-sitter
|
|
6
|
+
*
|
|
7
|
+
* All `ts.Node`/`ts.SourceFile`/`ts.SyntaxKind` usage replaced with tree-sitter `ASTNode`
|
|
8
|
+
* and adapterBridge utilities. The old `import * as ts from 'typescript'` is removed.
|
|
4
9
|
*/
|
|
5
10
|
import { FunctionMetadata, AuditOptions } from './types.js';
|
|
6
11
|
export interface ScanOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionScanner.d.ts","sourceRoot":"","sources":["../src/functionScanner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"functionScanner.d.ts","sourceRoot":"","sources":["../src/functionScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmD5D,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,WAAW,GAAG;IAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAA;CAAE,GACpF,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAA;CAAE,GACtE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA+X7B;AA8GD,eAAO,MAAM,mBAAmB,iCAA2B,CAAC;AAE5D,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACtD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAK7B;AAED;;GAEG;AACH,qBAAa,eAAe;IACpB,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA+I7B;CACF"}
|