codeguardian-mcp 1.0.0
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/LICENSE +21 -0
- package/README.md +348 -0
- package/dist/agent/agentTools.d.ts +26 -0
- package/dist/agent/agentTools.d.ts.map +1 -0
- package/dist/agent/agentTools.js +699 -0
- package/dist/agent/agentTools.js.map +1 -0
- package/dist/agent/autoValidator.d.ts +110 -0
- package/dist/agent/autoValidator.d.ts.map +1 -0
- package/dist/agent/autoValidator.js +964 -0
- package/dist/agent/autoValidator.js.map +1 -0
- package/dist/agent/fileWatcher.d.ts +28 -0
- package/dist/agent/fileWatcher.d.ts.map +1 -0
- package/dist/agent/fileWatcher.js +88 -0
- package/dist/agent/fileWatcher.js.map +1 -0
- package/dist/agent/guardianPersistence.d.ts +98 -0
- package/dist/agent/guardianPersistence.d.ts.map +1 -0
- package/dist/agent/guardianPersistence.js +296 -0
- package/dist/agent/guardianPersistence.js.map +1 -0
- package/dist/agent/mcpNotifications.d.ts +38 -0
- package/dist/agent/mcpNotifications.d.ts.map +1 -0
- package/dist/agent/mcpNotifications.js +81 -0
- package/dist/agent/mcpNotifications.js.map +1 -0
- package/dist/analyzers/aiPatterns.d.ts +16 -0
- package/dist/analyzers/aiPatterns.d.ts.map +1 -0
- package/dist/analyzers/aiPatterns.js +103 -0
- package/dist/analyzers/aiPatterns.js.map +1 -0
- package/dist/analyzers/antiPatterns.d.ts +60 -0
- package/dist/analyzers/antiPatterns.d.ts.map +1 -0
- package/dist/analyzers/antiPatterns.js +198 -0
- package/dist/analyzers/antiPatterns.js.map +1 -0
- package/dist/analyzers/builtinTypes.d.ts +18 -0
- package/dist/analyzers/builtinTypes.d.ts.map +1 -0
- package/dist/analyzers/builtinTypes.js +1275 -0
- package/dist/analyzers/builtinTypes.js.map +1 -0
- package/dist/analyzers/complexity.d.ts +14 -0
- package/dist/analyzers/complexity.d.ts.map +1 -0
- package/dist/analyzers/complexity.js +610 -0
- package/dist/analyzers/complexity.js.map +1 -0
- package/dist/analyzers/findingVerifier.d.ts +59 -0
- package/dist/analyzers/findingVerifier.d.ts.map +1 -0
- package/dist/analyzers/findingVerifier.js +1169 -0
- package/dist/analyzers/findingVerifier.js.map +1 -0
- package/dist/analyzers/impactAnalyzer.d.ts +53 -0
- package/dist/analyzers/impactAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/impactAnalyzer.js +152 -0
- package/dist/analyzers/impactAnalyzer.js.map +1 -0
- package/dist/analyzers/languageDetector.d.ts +48 -0
- package/dist/analyzers/languageDetector.d.ts.map +1 -0
- package/dist/analyzers/languageDetector.js +404 -0
- package/dist/analyzers/languageDetector.js.map +1 -0
- package/dist/analyzers/parsers/incrementalParser.d.ts +53 -0
- package/dist/analyzers/parsers/incrementalParser.d.ts.map +1 -0
- package/dist/analyzers/parsers/incrementalParser.js +193 -0
- package/dist/analyzers/parsers/incrementalParser.js.map +1 -0
- package/dist/analyzers/parsers/scopeResolver.d.ts +92 -0
- package/dist/analyzers/parsers/scopeResolver.d.ts.map +1 -0
- package/dist/analyzers/parsers/scopeResolver.js +324 -0
- package/dist/analyzers/parsers/scopeResolver.js.map +1 -0
- package/dist/analyzers/parsers/semanticIndex.d.ts +127 -0
- package/dist/analyzers/parsers/semanticIndex.d.ts.map +1 -0
- package/dist/analyzers/parsers/semanticIndex.js +429 -0
- package/dist/analyzers/parsers/semanticIndex.js.map +1 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.d.ts +42 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.js +233 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.js.map +1 -0
- package/dist/analyzers/parsers/treeSitterParser.d.ts +76 -0
- package/dist/analyzers/parsers/treeSitterParser.d.ts.map +1 -0
- package/dist/analyzers/parsers/treeSitterParser.js +709 -0
- package/dist/analyzers/parsers/treeSitterParser.js.map +1 -0
- package/dist/analyzers/relevanceScorer.d.ts +43 -0
- package/dist/analyzers/relevanceScorer.d.ts.map +1 -0
- package/dist/analyzers/relevanceScorer.js +200 -0
- package/dist/analyzers/relevanceScorer.js.map +1 -0
- package/dist/analyzers/standardLibrary.d.ts +22 -0
- package/dist/analyzers/standardLibrary.d.ts.map +1 -0
- package/dist/analyzers/standardLibrary.js +211 -0
- package/dist/analyzers/standardLibrary.js.map +1 -0
- package/dist/analyzers/symbolGraph.d.ts +30 -0
- package/dist/analyzers/symbolGraph.d.ts.map +1 -0
- package/dist/analyzers/symbolGraph.js +380 -0
- package/dist/analyzers/symbolGraph.js.map +1 -0
- package/dist/analyzers/symbolTable.d.ts +18 -0
- package/dist/analyzers/symbolTable.d.ts.map +1 -0
- package/dist/analyzers/symbolTable.js +176 -0
- package/dist/analyzers/symbolTable.js.map +1 -0
- package/dist/analyzers/typeChecker.d.ts +13 -0
- package/dist/analyzers/typeChecker.d.ts.map +1 -0
- package/dist/analyzers/typeChecker.js +580 -0
- package/dist/analyzers/typeChecker.js.map +1 -0
- package/dist/analyzers/usagePatterns.d.ts +42 -0
- package/dist/analyzers/usagePatterns.d.ts.map +1 -0
- package/dist/analyzers/usagePatterns.js +75 -0
- package/dist/analyzers/usagePatterns.js.map +1 -0
- package/dist/api-contract/context/backend.d.ts +19 -0
- package/dist/api-contract/context/backend.d.ts.map +1 -0
- package/dist/api-contract/context/backend.js +64 -0
- package/dist/api-contract/context/backend.js.map +1 -0
- package/dist/api-contract/context/contract.d.ts +34 -0
- package/dist/api-contract/context/contract.d.ts.map +1 -0
- package/dist/api-contract/context/contract.js +306 -0
- package/dist/api-contract/context/contract.js.map +1 -0
- package/dist/api-contract/context/frontend.d.ts +19 -0
- package/dist/api-contract/context/frontend.d.ts.map +1 -0
- package/dist/api-contract/context/frontend.js +64 -0
- package/dist/api-contract/context/frontend.js.map +1 -0
- package/dist/api-contract/detector.d.ts +28 -0
- package/dist/api-contract/detector.d.ts.map +1 -0
- package/dist/api-contract/detector.js +393 -0
- package/dist/api-contract/detector.js.map +1 -0
- package/dist/api-contract/extractors/python.d.ts +32 -0
- package/dist/api-contract/extractors/python.d.ts.map +1 -0
- package/dist/api-contract/extractors/python.js +521 -0
- package/dist/api-contract/extractors/python.js.map +1 -0
- package/dist/api-contract/extractors/pythonAstUtils.d.ts +44 -0
- package/dist/api-contract/extractors/pythonAstUtils.d.ts.map +1 -0
- package/dist/api-contract/extractors/pythonAstUtils.js +489 -0
- package/dist/api-contract/extractors/pythonAstUtils.js.map +1 -0
- package/dist/api-contract/extractors/tsAstUtils.d.ts +47 -0
- package/dist/api-contract/extractors/tsAstUtils.d.ts.map +1 -0
- package/dist/api-contract/extractors/tsAstUtils.js +173 -0
- package/dist/api-contract/extractors/tsAstUtils.js.map +1 -0
- package/dist/api-contract/extractors/typescript.d.ts +32 -0
- package/dist/api-contract/extractors/typescript.d.ts.map +1 -0
- package/dist/api-contract/extractors/typescript.js +666 -0
- package/dist/api-contract/extractors/typescript.js.map +1 -0
- package/dist/api-contract/index.d.ts +104 -0
- package/dist/api-contract/index.d.ts.map +1 -0
- package/dist/api-contract/index.js +232 -0
- package/dist/api-contract/index.js.map +1 -0
- package/dist/api-contract/types.d.ts +151 -0
- package/dist/api-contract/types.d.ts.map +1 -0
- package/dist/api-contract/types.js +19 -0
- package/dist/api-contract/types.js.map +1 -0
- package/dist/api-contract/validators/endpoint.d.ts +21 -0
- package/dist/api-contract/validators/endpoint.d.ts.map +1 -0
- package/dist/api-contract/validators/endpoint.js +224 -0
- package/dist/api-contract/validators/endpoint.js.map +1 -0
- package/dist/api-contract/validators/index.d.ts +40 -0
- package/dist/api-contract/validators/index.d.ts.map +1 -0
- package/dist/api-contract/validators/index.js +875 -0
- package/dist/api-contract/validators/index.js.map +1 -0
- package/dist/api-contract/validators/parameter.d.ts +17 -0
- package/dist/api-contract/validators/parameter.d.ts.map +1 -0
- package/dist/api-contract/validators/parameter.js +250 -0
- package/dist/api-contract/validators/parameter.js.map +1 -0
- package/dist/api-contract/validators/type.d.ts +38 -0
- package/dist/api-contract/validators/type.d.ts.map +1 -0
- package/dist/api-contract/validators/type.js +244 -0
- package/dist/api-contract/validators/type.js.map +1 -0
- package/dist/context/apiContract/complexTypeSupport.d.ts +83 -0
- package/dist/context/apiContract/complexTypeSupport.d.ts.map +1 -0
- package/dist/context/apiContract/complexTypeSupport.js +665 -0
- package/dist/context/apiContract/complexTypeSupport.js.map +1 -0
- package/dist/context/apiContract/graphqlSupport.d.ts +105 -0
- package/dist/context/apiContract/graphqlSupport.d.ts.map +1 -0
- package/dist/context/apiContract/graphqlSupport.js +671 -0
- package/dist/context/apiContract/graphqlSupport.js.map +1 -0
- package/dist/context/apiContract/index.d.ts +14 -0
- package/dist/context/apiContract/index.d.ts.map +1 -0
- package/dist/context/apiContract/index.js +17 -0
- package/dist/context/apiContract/index.js.map +1 -0
- package/dist/context/apiContract/webSocketSupport.d.ts +104 -0
- package/dist/context/apiContract/webSocketSupport.d.ts.map +1 -0
- package/dist/context/apiContract/webSocketSupport.js +465 -0
- package/dist/context/apiContract/webSocketSupport.js.map +1 -0
- package/dist/context/apiContractContext.d.ts +15 -0
- package/dist/context/apiContractContext.d.ts.map +1 -0
- package/dist/context/apiContractContext.js +979 -0
- package/dist/context/apiContractContext.js.map +1 -0
- package/dist/context/apiContractExtraction.d.ts +52 -0
- package/dist/context/apiContractExtraction.d.ts.map +1 -0
- package/dist/context/apiContractExtraction.js +438 -0
- package/dist/context/apiContractExtraction.js.map +1 -0
- package/dist/context/contextLineage.d.ts +79 -0
- package/dist/context/contextLineage.d.ts.map +1 -0
- package/dist/context/contextLineage.js +259 -0
- package/dist/context/contextLineage.js.map +1 -0
- package/dist/context/contextOrchestrator.d.ts +57 -0
- package/dist/context/contextOrchestrator.d.ts.map +1 -0
- package/dist/context/contextOrchestrator.js +162 -0
- package/dist/context/contextOrchestrator.js.map +1 -0
- package/dist/context/intentTracker.d.ts +73 -0
- package/dist/context/intentTracker.d.ts.map +1 -0
- package/dist/context/intentTracker.js +168 -0
- package/dist/context/intentTracker.js.map +1 -0
- package/dist/context/projectContext.d.ts +219 -0
- package/dist/context/projectContext.d.ts.map +1 -0
- package/dist/context/projectContext.js +1984 -0
- package/dist/context/projectContext.js.map +1 -0
- package/dist/prompts/index.d.ts +17 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +260 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/library.d.ts +51 -0
- package/dist/prompts/library.d.ts.map +1 -0
- package/dist/prompts/library.js +65 -0
- package/dist/prompts/library.js.map +1 -0
- package/dist/prompts/templates.d.ts +44 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +97 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/queue/jobPersistence.d.ts +46 -0
- package/dist/queue/jobPersistence.d.ts.map +1 -0
- package/dist/queue/jobPersistence.js +158 -0
- package/dist/queue/jobPersistence.js.map +1 -0
- package/dist/queue/jobQueue.d.ts +116 -0
- package/dist/queue/jobQueue.d.ts.map +1 -0
- package/dist/queue/jobQueue.js +275 -0
- package/dist/queue/jobQueue.js.map +1 -0
- package/dist/queue/validationJob.d.ts +69 -0
- package/dist/queue/validationJob.d.ts.map +1 -0
- package/dist/queue/validationJob.js +435 -0
- package/dist/queue/validationJob.js.map +1 -0
- package/dist/resources/index.d.ts +15 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +328 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/validationReportStore.d.ts +170 -0
- package/dist/resources/validationReportStore.d.ts.map +1 -0
- package/dist/resources/validationReportStore.js +515 -0
- package/dist/resources/validationReportStore.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +102 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/asyncValidation.d.ts +19 -0
- package/dist/tools/asyncValidation.d.ts.map +1 -0
- package/dist/tools/asyncValidation.js +346 -0
- package/dist/tools/asyncValidation.js.map +1 -0
- package/dist/tools/buildContext.d.ts +17 -0
- package/dist/tools/buildContext.d.ts.map +1 -0
- package/dist/tools/buildContext.js +188 -0
- package/dist/tools/buildContext.js.map +1 -0
- package/dist/tools/getDependencyGraph.d.ts +16 -0
- package/dist/tools/getDependencyGraph.d.ts.map +1 -0
- package/dist/tools/getDependencyGraph.js +436 -0
- package/dist/tools/getDependencyGraph.js.map +1 -0
- package/dist/tools/incrementalValidation.d.ts +71 -0
- package/dist/tools/incrementalValidation.d.ts.map +1 -0
- package/dist/tools/incrementalValidation.js +203 -0
- package/dist/tools/incrementalValidation.js.map +1 -0
- package/dist/tools/index.d.ts +24 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +106 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/validateCode.d.ts +17 -0
- package/dist/tools/validateCode.d.ts.map +1 -0
- package/dist/tools/validateCode.js +368 -0
- package/dist/tools/validateCode.js.map +1 -0
- package/dist/tools/validateCodeLite.d.ts +2 -0
- package/dist/tools/validateCodeLite.d.ts.map +1 -0
- package/dist/tools/validateCodeLite.js +2 -0
- package/dist/tools/validateCodeLite.js.map +1 -0
- package/dist/tools/validation/builtins.d.ts +92 -0
- package/dist/tools/validation/builtins.d.ts.map +1 -0
- package/dist/tools/validation/builtins.js +2184 -0
- package/dist/tools/validation/builtins.js.map +1 -0
- package/dist/tools/validation/contextualNaming.d.ts +99 -0
- package/dist/tools/validation/contextualNaming.d.ts.map +1 -0
- package/dist/tools/validation/contextualNaming.js +959 -0
- package/dist/tools/validation/contextualNaming.js.map +1 -0
- package/dist/tools/validation/deadCode.d.ts +115 -0
- package/dist/tools/validation/deadCode.d.ts.map +1 -0
- package/dist/tools/validation/deadCode.js +861 -0
- package/dist/tools/validation/deadCode.js.map +1 -0
- package/dist/tools/validation/extractors/index.d.ts +131 -0
- package/dist/tools/validation/extractors/index.d.ts.map +1 -0
- package/dist/tools/validation/extractors/index.js +233 -0
- package/dist/tools/validation/extractors/index.js.map +1 -0
- package/dist/tools/validation/extractors/javascript.d.ts +73 -0
- package/dist/tools/validation/extractors/javascript.d.ts.map +1 -0
- package/dist/tools/validation/extractors/javascript.js +1841 -0
- package/dist/tools/validation/extractors/javascript.js.map +1 -0
- package/dist/tools/validation/extractors/python.d.ts +93 -0
- package/dist/tools/validation/extractors/python.d.ts.map +1 -0
- package/dist/tools/validation/extractors/python.js +799 -0
- package/dist/tools/validation/extractors/python.js.map +1 -0
- package/dist/tools/validation/manifest.d.ts +45 -0
- package/dist/tools/validation/manifest.d.ts.map +1 -0
- package/dist/tools/validation/manifest.js +719 -0
- package/dist/tools/validation/manifest.js.map +1 -0
- package/dist/tools/validation/parser.d.ts +58 -0
- package/dist/tools/validation/parser.d.ts.map +1 -0
- package/dist/tools/validation/parser.js +232 -0
- package/dist/tools/validation/parser.js.map +1 -0
- package/dist/tools/validation/registry.d.ts +15 -0
- package/dist/tools/validation/registry.d.ts.map +1 -0
- package/dist/tools/validation/registry.js +169 -0
- package/dist/tools/validation/registry.js.map +1 -0
- package/dist/tools/validation/scoring.d.ts +54 -0
- package/dist/tools/validation/scoring.d.ts.map +1 -0
- package/dist/tools/validation/scoring.js +242 -0
- package/dist/tools/validation/scoring.js.map +1 -0
- package/dist/tools/validation/types.d.ts +120 -0
- package/dist/tools/validation/types.d.ts.map +1 -0
- package/dist/tools/validation/types.js +11 -0
- package/dist/tools/validation/types.js.map +1 -0
- package/dist/tools/validation/unusedLocals.d.ts +36 -0
- package/dist/tools/validation/unusedLocals.d.ts.map +1 -0
- package/dist/tools/validation/unusedLocals.js +333 -0
- package/dist/tools/validation/unusedLocals.js.map +1 -0
- package/dist/tools/validation/validation.d.ts +98 -0
- package/dist/tools/validation/validation.d.ts.map +1 -0
- package/dist/tools/validation/validation.js +1837 -0
- package/dist/tools/validation/validation.js.map +1 -0
- package/dist/types/codeGraph.d.ts +163 -0
- package/dist/types/codeGraph.d.ts.map +1 -0
- package/dist/types/codeGraph.js +9 -0
- package/dist/types/codeGraph.js.map +1 -0
- package/dist/types/symbolGraph.d.ts +68 -0
- package/dist/types/symbolGraph.d.ts.map +1 -0
- package/dist/types/symbolGraph.js +10 -0
- package/dist/types/symbolGraph.js.map +1 -0
- package/dist/types/tools.d.ts +43 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +7 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/fileFilter.d.ts +37 -0
- package/dist/utils/fileFilter.d.ts.map +1 -0
- package/dist/utils/fileFilter.js +91 -0
- package/dist/utils/fileFilter.js.map +1 -0
- package/dist/utils/gitUtils.d.ts +28 -0
- package/dist/utils/gitUtils.d.ts.map +1 -0
- package/dist/utils/gitUtils.js +81 -0
- package/dist/utils/gitUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +38 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/serialization.d.ts +25 -0
- package/dist/utils/serialization.d.ts.map +1 -0
- package/dist/utils/serialization.js +53 -0
- package/dist/utils/serialization.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadCode.js","sourceRoot":"","sources":["../../../src/tools/validation/deadCode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Extractor API - Language-Agnostic AST Extraction
|
|
3
|
+
*
|
|
4
|
+
* This module provides a unified interface for extracting symbols, usages, imports,
|
|
5
|
+
* and type references from code, automatically routing to the appropriate language-specific
|
|
6
|
+
* extractor (Python or JavaScript/TypeScript).
|
|
7
|
+
*
|
|
8
|
+
* This abstraction allows the rest of the validation system to work with any supported
|
|
9
|
+
* language without needing to know the implementation details of each language's AST.
|
|
10
|
+
*
|
|
11
|
+
* @format
|
|
12
|
+
*/
|
|
13
|
+
import type { ASTSymbol, ASTUsage, ASTImport, ASTTypeReference } from "../types.js";
|
|
14
|
+
export type { ASTSymbol, ASTUsage, ASTImport, ASTTypeReference, } from "../types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Extract all symbol definitions from code using language-appropriate AST parser.
|
|
17
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
18
|
+
*
|
|
19
|
+
* This function handles parser initialization and AST parsing internally, providing
|
|
20
|
+
* a simple interface for extracting symbols from source code.
|
|
21
|
+
*
|
|
22
|
+
* @param code - The source code string to analyze
|
|
23
|
+
* @param filePath - Path to the file being analyzed
|
|
24
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
25
|
+
* @returns Array of extracted symbol definitions
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const symbols = extractSymbolsAST('def hello(): pass', 'test.py', 'python');
|
|
30
|
+
* console.log(symbols); // [{ name: 'hello', type: 'function', ... }]
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractSymbolsAST(code: string, filePathOrLanguage: string, languageOrOptions?: string | {
|
|
34
|
+
includeParameterSymbols?: boolean;
|
|
35
|
+
}, options?: {
|
|
36
|
+
includeParameterSymbols?: boolean;
|
|
37
|
+
}): ASTSymbol[];
|
|
38
|
+
/**
|
|
39
|
+
* Extract all symbol usages from code using language-appropriate AST parser.
|
|
40
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
41
|
+
*
|
|
42
|
+
* This function handles parser initialization and AST parsing internally. It filters
|
|
43
|
+
* out imported symbols to avoid false positives (imported symbols are validated separately).
|
|
44
|
+
*
|
|
45
|
+
* @param code - The source code string to analyze
|
|
46
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
47
|
+
* @param imports - Array of import statements to build the external symbols set
|
|
48
|
+
* @returns Array of extracted symbol usages
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const imports = extractImportsAST(code, 'typescript');
|
|
53
|
+
* const usages = extractUsagesAST(code, 'typescript', imports);
|
|
54
|
+
* console.log(usages); // [{ name: 'myFunc', type: 'call', ... }]
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function extractUsagesAST(code: string, language: string, imports: ASTImport[], parseOptions?: {
|
|
58
|
+
filePath?: string;
|
|
59
|
+
cacheKey?: string;
|
|
60
|
+
useCache?: boolean;
|
|
61
|
+
}): ASTUsage[];
|
|
62
|
+
/**
|
|
63
|
+
* Collect all locally-defined identifier names from code.
|
|
64
|
+
* For Python: assignment targets, function parameters, for-loop variables, etc.
|
|
65
|
+
* For JS/TS: variable declarations, for-of/for-in loop vars, catch vars, params, etc.
|
|
66
|
+
* Used by the validator to prevent false positives on local variable method calls.
|
|
67
|
+
*
|
|
68
|
+
* @param code - The source code string to analyze
|
|
69
|
+
* @param language - Programming language
|
|
70
|
+
* @returns Set of locally-defined identifier names
|
|
71
|
+
*/
|
|
72
|
+
export declare function collectLocalDefinitionsAST(code: string, language: string): Set<string>;
|
|
73
|
+
/**
|
|
74
|
+
* Extract all import statements from code using language-appropriate AST parser.
|
|
75
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
76
|
+
*
|
|
77
|
+
* This function handles parser initialization and AST parsing internally, providing
|
|
78
|
+
* a simple interface for extracting import statements.
|
|
79
|
+
*
|
|
80
|
+
* @param code - The source code string to analyze
|
|
81
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
82
|
+
* @returns Array of extracted import statements
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const imports = extractImportsAST('import { foo } from "bar"', 'typescript');
|
|
87
|
+
* console.log(imports); // [{ module: 'bar', names: [{ imported: 'foo', local: 'foo' }], ... }]
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare function extractImportsAST(code: string, language: string): ASTImport[];
|
|
91
|
+
/**
|
|
92
|
+
* Extract all type references from code using language-appropriate AST parser.
|
|
93
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
94
|
+
*
|
|
95
|
+
* This function handles parser initialization and AST parsing internally. Type references
|
|
96
|
+
* include type annotations, generic parameters, return types, class inheritance, and more.
|
|
97
|
+
*
|
|
98
|
+
* Type references include:
|
|
99
|
+
* - Type annotations on parameters and variables
|
|
100
|
+
* - Generic type parameters
|
|
101
|
+
* - Return type annotations
|
|
102
|
+
* - Class inheritance (extends/implements)
|
|
103
|
+
* - Property type annotations in interfaces/types
|
|
104
|
+
*
|
|
105
|
+
* @param code - The source code string to analyze
|
|
106
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
107
|
+
* @returns Array of extracted type references
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const typeRefs = extractTypeReferencesAST('function foo(): MyType {}', 'typescript');
|
|
112
|
+
* console.log(typeRefs); // [{ name: 'MyType', context: 'returnType', ... }]
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export declare function extractTypeReferencesAST(code: string, language: string, parseOptions?: {
|
|
116
|
+
filePath?: string;
|
|
117
|
+
cacheKey?: string;
|
|
118
|
+
useCache?: boolean;
|
|
119
|
+
}): ASTTypeReference[];
|
|
120
|
+
/**
|
|
121
|
+
* Extract imports with explicit parse options.
|
|
122
|
+
*
|
|
123
|
+
* This is useful for watcher-driven paths that want to reuse the previous tree
|
|
124
|
+
* (filePath-based caching) across rapid edits.
|
|
125
|
+
*/
|
|
126
|
+
export declare function extractImportsASTWithOptions(code: string, language: string, parseOptions?: {
|
|
127
|
+
filePath?: string;
|
|
128
|
+
cacheKey?: string;
|
|
129
|
+
useCache?: boolean;
|
|
130
|
+
}): ASTImport[];
|
|
131
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/validation/extractors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAsBrB,YAAY,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAMrB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,EAClE,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,SAAS,EAAE,CA8Cb;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,EAAE,EACpB,YAAY,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9E,QAAQ,EAAE,CAgCZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAWtF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAe7E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9E,gBAAgB,EAAE,CAapB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9E,SAAS,EAAE,CAWb"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Extractor API - Language-Agnostic AST Extraction
|
|
3
|
+
*
|
|
4
|
+
* This module provides a unified interface for extracting symbols, usages, imports,
|
|
5
|
+
* and type references from code, automatically routing to the appropriate language-specific
|
|
6
|
+
* extractor (Python or JavaScript/TypeScript).
|
|
7
|
+
*
|
|
8
|
+
* This abstraction allows the rest of the validation system to work with any supported
|
|
9
|
+
* language without needing to know the implementation details of each language's AST.
|
|
10
|
+
*
|
|
11
|
+
* @format
|
|
12
|
+
*/
|
|
13
|
+
import { isSupportedLanguage } from "../parser.js";
|
|
14
|
+
import { parseCodeCached } from "../parser.js";
|
|
15
|
+
import { extractPythonSymbols, extractPythonUsages, extractPythonImports, extractPythonTypeReferences, collectPythonLocalDefinitions, } from "./python.js";
|
|
16
|
+
import { extractJSSymbols, extractJSUsages, extractJSImports, extractJSTypeReferences, collectJSLocalDefinitions, } from "./javascript.js";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Unified Extraction Functions
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Extract all symbol definitions from code using language-appropriate AST parser.
|
|
22
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
23
|
+
*
|
|
24
|
+
* This function handles parser initialization and AST parsing internally, providing
|
|
25
|
+
* a simple interface for extracting symbols from source code.
|
|
26
|
+
*
|
|
27
|
+
* @param code - The source code string to analyze
|
|
28
|
+
* @param filePath - Path to the file being analyzed
|
|
29
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
30
|
+
* @returns Array of extracted symbol definitions
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const symbols = extractSymbolsAST('def hello(): pass', 'test.py', 'python');
|
|
35
|
+
* console.log(symbols); // [{ name: 'hello', type: 'function', ... }]
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function extractSymbolsAST(code, filePathOrLanguage, languageOrOptions, options = {}) {
|
|
39
|
+
// Backwards compatibility:
|
|
40
|
+
// - Old signature: extractSymbolsAST(code, language)
|
|
41
|
+
// - Current signature: extractSymbolsAST(code, filePath, language, options?)
|
|
42
|
+
let filePath = filePathOrLanguage;
|
|
43
|
+
let language;
|
|
44
|
+
let normalizedOptions = options;
|
|
45
|
+
if (typeof languageOrOptions === "object" && languageOrOptions !== null) {
|
|
46
|
+
// Called as: (code, language, options)
|
|
47
|
+
language = filePathOrLanguage;
|
|
48
|
+
filePath = "";
|
|
49
|
+
normalizedOptions = languageOrOptions;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
language = languageOrOptions;
|
|
53
|
+
// Called as: (code, language)
|
|
54
|
+
if (!language && isSupportedLanguage(filePathOrLanguage)) {
|
|
55
|
+
language = filePathOrLanguage;
|
|
56
|
+
filePath = "";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const tree = parseCodeCached(code, language, {
|
|
60
|
+
filePath: filePath || undefined,
|
|
61
|
+
// Symbols extraction is often called multiple times per run; the default
|
|
62
|
+
// content hash cache covers that. File-path cache additionally helps the
|
|
63
|
+
// watcher path when we validate a changed file repeatedly.
|
|
64
|
+
});
|
|
65
|
+
const symbols = [];
|
|
66
|
+
if (language === "python") {
|
|
67
|
+
extractPythonSymbols(tree.rootNode, code, filePath, symbols, null);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// JavaScript and TypeScript use the same extractor
|
|
71
|
+
// Cast to any to handle type mismatch between tree-sitter and web-tree-sitter
|
|
72
|
+
extractJSSymbols(tree.rootNode, code, filePath, symbols, null, normalizedOptions);
|
|
73
|
+
}
|
|
74
|
+
return symbols;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract all symbol usages from code using language-appropriate AST parser.
|
|
78
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
79
|
+
*
|
|
80
|
+
* This function handles parser initialization and AST parsing internally. It filters
|
|
81
|
+
* out imported symbols to avoid false positives (imported symbols are validated separately).
|
|
82
|
+
*
|
|
83
|
+
* @param code - The source code string to analyze
|
|
84
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
85
|
+
* @param imports - Array of import statements to build the external symbols set
|
|
86
|
+
* @returns Array of extracted symbol usages
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const imports = extractImportsAST(code, 'typescript');
|
|
91
|
+
* const usages = extractUsagesAST(code, 'typescript', imports);
|
|
92
|
+
* console.log(usages); // [{ name: 'myFunc', type: 'call', ... }]
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function extractUsagesAST(code, language, imports, parseOptions = {}) {
|
|
96
|
+
const tree = parseCodeCached(code, language, parseOptions);
|
|
97
|
+
const usages = [];
|
|
98
|
+
// Build set of ALL imported symbols to skip (both external AND internal)
|
|
99
|
+
// We skip internal imports because they're explicitly imported from project files
|
|
100
|
+
// and will be validated separately via the project context
|
|
101
|
+
const importedSymbols = new Set();
|
|
102
|
+
for (const imp of imports) {
|
|
103
|
+
for (const name of imp.names) {
|
|
104
|
+
importedSymbols.add(name.local);
|
|
105
|
+
// For Python dotted imports (e.g., `import concurrent.futures`),
|
|
106
|
+
// also add the base module name since Python makes it available as a variable
|
|
107
|
+
if (language === "python" && name.local.includes(".")) {
|
|
108
|
+
importedSymbols.add(name.local.split(".")[0]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (language === "python") {
|
|
113
|
+
// Pre-pass: collect all locally-defined names (assignments, params, loop vars, etc.)
|
|
114
|
+
// to prevent local variable references from being flagged as undefinedVariable
|
|
115
|
+
const localDefinitions = new Set();
|
|
116
|
+
collectPythonLocalDefinitions(tree.rootNode, code, localDefinitions);
|
|
117
|
+
extractPythonUsages(tree.rootNode, code, usages, importedSymbols, localDefinitions);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// JavaScript and TypeScript use the same extractor
|
|
121
|
+
// Cast to any to handle type mismatch between tree-sitter and web-tree-sitter
|
|
122
|
+
extractJSUsages(tree.rootNode, code, usages, importedSymbols);
|
|
123
|
+
}
|
|
124
|
+
return usages;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Collect all locally-defined identifier names from code.
|
|
128
|
+
* For Python: assignment targets, function parameters, for-loop variables, etc.
|
|
129
|
+
* For JS/TS: variable declarations, for-of/for-in loop vars, catch vars, params, etc.
|
|
130
|
+
* Used by the validator to prevent false positives on local variable method calls.
|
|
131
|
+
*
|
|
132
|
+
* @param code - The source code string to analyze
|
|
133
|
+
* @param language - Programming language
|
|
134
|
+
* @returns Set of locally-defined identifier names
|
|
135
|
+
*/
|
|
136
|
+
export function collectLocalDefinitionsAST(code, language) {
|
|
137
|
+
const definitions = new Set();
|
|
138
|
+
const tree = parseCodeCached(code, language);
|
|
139
|
+
if (language === "python") {
|
|
140
|
+
collectPythonLocalDefinitions(tree.rootNode, code, definitions);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
collectJSLocalDefinitions(tree.rootNode, code, definitions);
|
|
144
|
+
}
|
|
145
|
+
return definitions;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Extract all import statements from code using language-appropriate AST parser.
|
|
149
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
150
|
+
*
|
|
151
|
+
* This function handles parser initialization and AST parsing internally, providing
|
|
152
|
+
* a simple interface for extracting import statements.
|
|
153
|
+
*
|
|
154
|
+
* @param code - The source code string to analyze
|
|
155
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
156
|
+
* @returns Array of extracted import statements
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* const imports = extractImportsAST('import { foo } from "bar"', 'typescript');
|
|
161
|
+
* console.log(imports); // [{ module: 'bar', names: [{ imported: 'foo', local: 'foo' }], ... }]
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export function extractImportsAST(code, language) {
|
|
165
|
+
// Note: we intentionally keep this API signature minimal.
|
|
166
|
+
// If you need watcher-friendly incremental parsing, use `extractImportsASTWithOptions`.
|
|
167
|
+
const tree = parseCodeCached(code, language);
|
|
168
|
+
const imports = [];
|
|
169
|
+
if (language === "python") {
|
|
170
|
+
extractPythonImports(tree.rootNode, code, imports);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
// JavaScript and TypeScript use the same extractor
|
|
174
|
+
// Cast to any to handle type mismatch between tree-sitter and web-tree-sitter
|
|
175
|
+
extractJSImports(tree.rootNode, code, imports);
|
|
176
|
+
}
|
|
177
|
+
return imports;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Extract all type references from code using language-appropriate AST parser.
|
|
181
|
+
* Routes to Python or JavaScript/TypeScript extractor based on language parameter.
|
|
182
|
+
*
|
|
183
|
+
* This function handles parser initialization and AST parsing internally. Type references
|
|
184
|
+
* include type annotations, generic parameters, return types, class inheritance, and more.
|
|
185
|
+
*
|
|
186
|
+
* Type references include:
|
|
187
|
+
* - Type annotations on parameters and variables
|
|
188
|
+
* - Generic type parameters
|
|
189
|
+
* - Return type annotations
|
|
190
|
+
* - Class inheritance (extends/implements)
|
|
191
|
+
* - Property type annotations in interfaces/types
|
|
192
|
+
*
|
|
193
|
+
* @param code - The source code string to analyze
|
|
194
|
+
* @param language - Programming language ('python', 'javascript', 'typescript')
|
|
195
|
+
* @returns Array of extracted type references
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* const typeRefs = extractTypeReferencesAST('function foo(): MyType {}', 'typescript');
|
|
200
|
+
* console.log(typeRefs); // [{ name: 'MyType', context: 'returnType', ... }]
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
export function extractTypeReferencesAST(code, language, parseOptions = {}) {
|
|
204
|
+
const tree = parseCodeCached(code, language, parseOptions);
|
|
205
|
+
const references = [];
|
|
206
|
+
if (language === "python") {
|
|
207
|
+
extractPythonTypeReferences(tree.rootNode, code, references);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// JavaScript and TypeScript use the same extractor
|
|
211
|
+
// Cast to any to handle type mismatch between tree-sitter and web-tree-sitter
|
|
212
|
+
extractJSTypeReferences(tree.rootNode, code, references);
|
|
213
|
+
}
|
|
214
|
+
return references;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Extract imports with explicit parse options.
|
|
218
|
+
*
|
|
219
|
+
* This is useful for watcher-driven paths that want to reuse the previous tree
|
|
220
|
+
* (filePath-based caching) across rapid edits.
|
|
221
|
+
*/
|
|
222
|
+
export function extractImportsASTWithOptions(code, language, parseOptions = {}) {
|
|
223
|
+
const tree = parseCodeCached(code, language, parseOptions);
|
|
224
|
+
const imports = [];
|
|
225
|
+
if (language === "python") {
|
|
226
|
+
extractPythonImports(tree.rootNode, code, imports);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
extractJSImports(tree.rootNode, code, imports);
|
|
230
|
+
}
|
|
231
|
+
return imports;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/validation/extractors/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JavaScript/TypeScript AST Extraction Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions to extract symbols, usages, imports, and type references
|
|
5
|
+
* from JavaScript and TypeScript code using Tree-sitter AST parsing.
|
|
6
|
+
*
|
|
7
|
+
* Handles:
|
|
8
|
+
* - Function declarations, arrow functions, class declarations, method definitions
|
|
9
|
+
* - Function calls, method calls, instantiations (new expressions)
|
|
10
|
+
* - ES6 imports, dynamic imports
|
|
11
|
+
* - TypeScript type annotations, generic parameters, type references
|
|
12
|
+
* - Destructuring patterns (object and array)
|
|
13
|
+
*
|
|
14
|
+
* @format
|
|
15
|
+
*/
|
|
16
|
+
import type Parser from "tree-sitter";
|
|
17
|
+
import type { ASTSymbol, ASTUsage, ASTImport, ASTTypeReference } from "../types.js";
|
|
18
|
+
/**
|
|
19
|
+
* Extract symbol definitions from JavaScript/TypeScript AST
|
|
20
|
+
* Finds: functions, classes, methods, variables, interfaces, types, enums
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractJSSymbols(node: Parser.SyntaxNode, code: string, filePath: string, symbols: ASTSymbol[], currentClass: string | null, options?: {
|
|
23
|
+
includeParameterSymbols?: boolean;
|
|
24
|
+
}): void;
|
|
25
|
+
/**
|
|
26
|
+
* Extract parameter names from a formal_parameters node.
|
|
27
|
+
* Returns the parameter names for the function's params list.
|
|
28
|
+
* For destructured parameters (object/array patterns), also registers the
|
|
29
|
+
* individual variable names as symbols for validation purposes.
|
|
30
|
+
*/
|
|
31
|
+
export declare function extractJSParams(paramsNode: Parser.SyntaxNode | null, code: string, filePath?: string, symbols?: ASTSymbol[], options?: {
|
|
32
|
+
includeParameterSymbols?: boolean;
|
|
33
|
+
}): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Extract variable names from destructuring patterns
|
|
36
|
+
* Handles: const { a, b } = x and const [a, b] = x
|
|
37
|
+
*/
|
|
38
|
+
export declare function extractDestructuredNames(node: Parser.SyntaxNode, code: string, filePath: string, symbols: ASTSymbol[], line: number, depth?: number): void;
|
|
39
|
+
/**
|
|
40
|
+
* Collect all locally-defined identifier names from JavaScript/TypeScript code.
|
|
41
|
+
* This includes: variable declarations (const/let/var), function parameters,
|
|
42
|
+
* for-of/for-in loop variables, catch clause variables, destructured names,
|
|
43
|
+
* function/class declaration names.
|
|
44
|
+
*
|
|
45
|
+
* Used by the validator to prevent false positives on local variable references
|
|
46
|
+
* and method calls (e.g., `for (const training of records) { training.status }`)
|
|
47
|
+
*/
|
|
48
|
+
export declare function collectJSLocalDefinitions(node: Parser.SyntaxNode, code: string, definitions: Set<string>): void;
|
|
49
|
+
/**
|
|
50
|
+
* Extract symbol usages from JavaScript/TypeScript AST
|
|
51
|
+
* Finds: function calls, method calls, instantiations (new expressions)
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractJSUsages(node: Parser.SyntaxNode, code: string, usages: ASTUsage[], externalSymbols: Set<string>): void;
|
|
54
|
+
/**
|
|
55
|
+
* Extract import statements from JavaScript/TypeScript AST
|
|
56
|
+
* Handles: ES6 imports, dynamic imports (await import(...))
|
|
57
|
+
*/
|
|
58
|
+
export declare function extractJSImports(node: Parser.SyntaxNode, code: string, imports: ASTImport[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Extract type references from JavaScript/TypeScript AST
|
|
61
|
+
* Finds where types/interfaces are USED (not defined), including:
|
|
62
|
+
* - Type annotations: `param: TypeName`
|
|
63
|
+
* - Generic parameters: `Array<TypeName>`, `base.extend<TypeName>`
|
|
64
|
+
* - Return types: `): TypeName`
|
|
65
|
+
* - Extends/implements: `extends TypeName`, `implements TypeName`
|
|
66
|
+
* - Property types in interfaces/types
|
|
67
|
+
*/
|
|
68
|
+
export declare function extractJSTypeReferences(node: Parser.SyntaxNode, code: string, references: ASTTypeReference[]): void;
|
|
69
|
+
/**
|
|
70
|
+
* Extract type names from a type node (handles nested types, unions, etc.)
|
|
71
|
+
*/
|
|
72
|
+
export declare function extractTypeNamesFromNode(node: Parser.SyntaxNode, code: string, references: ASTTypeReference[], context: ASTTypeReference["context"]): void;
|
|
73
|
+
//# sourceMappingURL=javascript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../../src/tools/validation/extractors/javascript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAOrB;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,EAAE,EACpB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,IAAI,CA8cN;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,EACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAW,EACrB,OAAO,CAAC,EAAE,SAAS,EAAE,EACrB,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,MAAM,EAAE,CAoGV;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,EAAE,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAU,GAChB,IAAI,CA6EN;AAMD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,IAAI,CA+FN;AAsDD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,EAAE,EAClB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,IAAI,CA0lBN;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,EAAE,GACnB,IAAI,CA6NN;AAMD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,gBAAgB,EAAE,GAC7B,IAAI,CAyFN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GACnC,IAAI,CA+LN"}
|