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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalAnalyzer.js","sourceRoot":"","sources":["../../src/languages/UniversalAnalyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C,MAAM,OAAgB,iBAAiB;IAKrC;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,KAAe,EACf,
|
|
1
|
+
{"version":3,"file":"UniversalAnalyzer.js","sourceRoot":"","sources":["../../src/languages/UniversalAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous facade over tree-sitter LanguageAdapter.
|
|
3
|
+
*
|
|
4
|
+
* All public functions assert that tree-sitter parsers have been initialized
|
|
5
|
+
* (entry points MUST call initParsers() first). An uninitialized call is a
|
|
6
|
+
* programmer error and throws — the adapterBridge is never meant to recover.
|
|
7
|
+
*
|
|
8
|
+
* This module replaces the old TypeScript compiler API utils (astParser.ts,
|
|
9
|
+
* astUtils.ts) with tree-sitter-powered equivalents that work through the
|
|
10
|
+
* LanguageAdapter interface.
|
|
11
|
+
*/
|
|
12
|
+
import type { Node as TreeSitterNode } from 'web-tree-sitter';
|
|
13
|
+
import type { AST, ASTNode } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Parse a file synchronously into an AST.
|
|
16
|
+
* Returns null on failure (no exceptions for parse errors).
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseFile(filePath: string, content: string): AST | null;
|
|
19
|
+
/**
|
|
20
|
+
* Walk an AST depth-first, calling visitor for each node.
|
|
21
|
+
*/
|
|
22
|
+
export declare function walkAST(root: ASTNode, visitor: (node: ASTNode, depth: number) => void, depth?: number): void;
|
|
23
|
+
/**
|
|
24
|
+
* Walk a raw TreeSitterNode depth-first.
|
|
25
|
+
*/
|
|
26
|
+
export declare function walkRaw(node: TreeSitterNode, visitor: (node: TreeSitterNode) => void): void;
|
|
27
|
+
/**
|
|
28
|
+
* Find all ASTNode matching a predicate.
|
|
29
|
+
*/
|
|
30
|
+
export declare function findNodes(ast: ASTNode, predicate: (node: ASTNode) => boolean): ASTNode[];
|
|
31
|
+
/**
|
|
32
|
+
* Find all TreeSitterNode matching a predicate.
|
|
33
|
+
*/
|
|
34
|
+
export declare function findRawNodes(node: TreeSitterNode, predicate: (node: TreeSitterNode) => boolean): TreeSitterNode[];
|
|
35
|
+
/**
|
|
36
|
+
* Get the source text for an ASTNode given the full source code.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getNodeText(node: ASTNode, sourceCode: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get a 1-based line and column from an ASTNode's start position.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getLineAndColumn(node: ASTNode): {
|
|
43
|
+
line: number;
|
|
44
|
+
column: number;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Get line and column from a byte position in source.
|
|
48
|
+
* This is a fallback for when you don't have an ASTNode.
|
|
49
|
+
*/
|
|
50
|
+
export declare function positionToLineColumn(sourceCode: string, position: number): {
|
|
51
|
+
line: number;
|
|
52
|
+
column: number;
|
|
53
|
+
};
|
|
54
|
+
export declare function isFunctionNode(node: ASTNode): boolean;
|
|
55
|
+
export declare function isClassNode(node: ASTNode): boolean;
|
|
56
|
+
export declare function isImportNode(node: ASTNode): boolean;
|
|
57
|
+
export declare function isLoopNode(node: ASTNode): boolean;
|
|
58
|
+
export declare function isConditionalNode(node: ASTNode): boolean;
|
|
59
|
+
export declare function isVariableNode(node: ASTNode): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Check if an ASTNode has a specific keyword modifier.
|
|
62
|
+
* In tree-sitter, modifiers appear as anonymous child nodes.
|
|
63
|
+
*/
|
|
64
|
+
export declare function hasModifier(node: ASTNode, modifier: string): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Check if a node is exported.
|
|
67
|
+
*/
|
|
68
|
+
export declare function isExported(node: ASTNode): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Check if a node is async.
|
|
71
|
+
*/
|
|
72
|
+
export declare function isAsync(node: ASTNode): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Get the name of an ASTNode if it has one.
|
|
75
|
+
* For tree-sitter, looks for a `name` property on the raw node,
|
|
76
|
+
* or finds the first named child that looks like an identifier.
|
|
77
|
+
*/
|
|
78
|
+
export declare function getNodeName(node: ASTNode): string | null;
|
|
79
|
+
/**
|
|
80
|
+
* Count parameters of a function-like node.
|
|
81
|
+
*/
|
|
82
|
+
export declare function getParameterCount(node: ASTNode): number;
|
|
83
|
+
/**
|
|
84
|
+
* Calculate cyclomatic complexity by counting decision points.
|
|
85
|
+
*/
|
|
86
|
+
export declare function calculateComplexity(node: ASTNode): number;
|
|
87
|
+
/**
|
|
88
|
+
* Get the body text of a function-like node.
|
|
89
|
+
*/
|
|
90
|
+
export declare function getFunctionBody(node: ASTNode, sourceCode: string): string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Extract import info from source content.
|
|
93
|
+
* Uses tree-sitter directly to find import statements.
|
|
94
|
+
*/
|
|
95
|
+
export declare function extractImports(filePath: string, content: string): Array<{
|
|
96
|
+
moduleSpecifier: string;
|
|
97
|
+
importedNames: string[];
|
|
98
|
+
isDefaultImport: boolean;
|
|
99
|
+
isNamespaceImport: boolean;
|
|
100
|
+
line: number;
|
|
101
|
+
}>;
|
|
102
|
+
//# sourceMappingURL=adapterBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapterBridge.d.ts","sourceRoot":"","sources":["../../src/languages/adapterBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous facade over tree-sitter LanguageAdapter.
|
|
3
|
+
*
|
|
4
|
+
* All public functions assert that tree-sitter parsers have been initialized
|
|
5
|
+
* (entry points MUST call initParsers() first). An uninitialized call is a
|
|
6
|
+
* programmer error and throws — the adapterBridge is never meant to recover.
|
|
7
|
+
*
|
|
8
|
+
* This module replaces the old TypeScript compiler API utils (astParser.ts,
|
|
9
|
+
* astUtils.ts) with tree-sitter-powered equivalents that work through the
|
|
10
|
+
* LanguageAdapter interface.
|
|
11
|
+
*/
|
|
12
|
+
import { LanguageRegistry } from './LanguageRegistry.js';
|
|
13
|
+
import { toASTNode } from './tree-sitter/converter.js';
|
|
14
|
+
import { getParser, isInitialized } from './tree-sitter/parser.js';
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Guards
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
function assertInitialized() {
|
|
19
|
+
if (!isInitialized()) {
|
|
20
|
+
throw new Error('Tree-sitter parsers not initialized. Call initParsers() before using adapterBridge.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Parse
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/**
|
|
27
|
+
* Parse a file synchronously into an AST.
|
|
28
|
+
* Returns null on failure (no exceptions for parse errors).
|
|
29
|
+
*/
|
|
30
|
+
export function parseFile(filePath, content) {
|
|
31
|
+
assertInitialized();
|
|
32
|
+
const registry = LanguageRegistry.getInstance();
|
|
33
|
+
const adapter = registry.getAdapterForFile(filePath);
|
|
34
|
+
if (!adapter)
|
|
35
|
+
return null;
|
|
36
|
+
// adapter.parse() is async per the interface, but the tree-sitter implementation
|
|
37
|
+
// is entirely synchronous. We call it via a sync path through the parser directly.
|
|
38
|
+
return parseWithTreeSitter(filePath, content);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Direct tree-sitter parse — bypasses the async adapter interface.
|
|
42
|
+
*/
|
|
43
|
+
function parseWithTreeSitter(filePath, content) {
|
|
44
|
+
const isTsx = filePath.endsWith('.tsx') || filePath.endsWith('.jsx');
|
|
45
|
+
const isGo = filePath.endsWith('.go');
|
|
46
|
+
const lang = isGo ? 'go' : isTsx ? 'tsx' : 'typescript';
|
|
47
|
+
const grammarKey = isGo ? 'go' : isTsx ? 'tsx' : 'typescript';
|
|
48
|
+
const parser = getParser(grammarKey, isTsx && !isGo);
|
|
49
|
+
const tree = parser.parse(content);
|
|
50
|
+
if (!tree)
|
|
51
|
+
return null;
|
|
52
|
+
const root = toASTNode(tree.rootNode, undefined, lang);
|
|
53
|
+
const errors = [];
|
|
54
|
+
collectErrors(tree.rootNode, errors);
|
|
55
|
+
return { root, language: lang, filePath, errors };
|
|
56
|
+
}
|
|
57
|
+
function collectErrors(node, errors) {
|
|
58
|
+
if (node.isError || node.type === 'ERROR') {
|
|
59
|
+
errors.push({
|
|
60
|
+
message: `Parse error near "${node.text.slice(0, 40)}"`,
|
|
61
|
+
location: {
|
|
62
|
+
start: { line: node.startPosition.row, column: node.startPosition.column },
|
|
63
|
+
end: { line: node.endPosition.row, column: node.endPosition.column },
|
|
64
|
+
},
|
|
65
|
+
severity: 'error',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
for (const child of node.children) {
|
|
69
|
+
collectErrors(child, errors);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// Traversal
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
/**
|
|
76
|
+
* Walk an AST depth-first, calling visitor for each node.
|
|
77
|
+
*/
|
|
78
|
+
export function walkAST(root, visitor, depth = 0) {
|
|
79
|
+
visitor(root, depth);
|
|
80
|
+
if (root.children) {
|
|
81
|
+
for (const child of root.children) {
|
|
82
|
+
walkAST(child, visitor, depth + 1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Walk a raw TreeSitterNode depth-first.
|
|
88
|
+
*/
|
|
89
|
+
export function walkRaw(node, visitor) {
|
|
90
|
+
visitor(node);
|
|
91
|
+
for (const child of node.children) {
|
|
92
|
+
walkRaw(child, visitor);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// Search
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
/**
|
|
99
|
+
* Find all ASTNode matching a predicate.
|
|
100
|
+
*/
|
|
101
|
+
export function findNodes(ast, predicate) {
|
|
102
|
+
const results = [];
|
|
103
|
+
walkAST(ast, (node) => {
|
|
104
|
+
if (predicate(node))
|
|
105
|
+
results.push(node);
|
|
106
|
+
});
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Find all TreeSitterNode matching a predicate.
|
|
111
|
+
*/
|
|
112
|
+
export function findRawNodes(node, predicate) {
|
|
113
|
+
const results = [];
|
|
114
|
+
walkRaw(node, (n) => {
|
|
115
|
+
if (predicate(n))
|
|
116
|
+
results.push(n);
|
|
117
|
+
});
|
|
118
|
+
return results;
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Node information
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
/**
|
|
124
|
+
* Get the source text for an ASTNode given the full source code.
|
|
125
|
+
*/
|
|
126
|
+
export function getNodeText(node, sourceCode) {
|
|
127
|
+
return sourceCode.slice(node.range[0], node.range[1]);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get a 1-based line and column from an ASTNode's start position.
|
|
131
|
+
*/
|
|
132
|
+
export function getLineAndColumn(node) {
|
|
133
|
+
return {
|
|
134
|
+
line: node.location.start.line + 1,
|
|
135
|
+
column: node.location.start.column + 1,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get line and column from a byte position in source.
|
|
140
|
+
* This is a fallback for when you don't have an ASTNode.
|
|
141
|
+
*/
|
|
142
|
+
export function positionToLineColumn(sourceCode, position) {
|
|
143
|
+
const lines = sourceCode.slice(0, position).split('\n');
|
|
144
|
+
return { line: lines.length, column: lines[lines.length - 1].length + 1 };
|
|
145
|
+
}
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
// Type checks (string-based — no SyntaxKind enum)
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
const FUNCTION_TYPES = new Set([
|
|
150
|
+
'function_declaration', 'function_expression', 'arrow_function',
|
|
151
|
+
'method_definition', 'generator_function_declaration', 'generator_function_expression',
|
|
152
|
+
]);
|
|
153
|
+
const CLASS_TYPES = new Set(['class_declaration', 'class_expression']);
|
|
154
|
+
const IMPORT_TYPES = new Set(['import_statement', 'import']);
|
|
155
|
+
const EXPORT_TYPES = new Set(['export_statement']);
|
|
156
|
+
const LOOP_TYPES = new Set([
|
|
157
|
+
'for_statement', 'for_in_statement', 'while_statement', 'do_statement',
|
|
158
|
+
]);
|
|
159
|
+
const CONDITIONAL_TYPES = new Set([
|
|
160
|
+
'if_statement', 'switch_statement', 'ternary_expression', 'switch_case',
|
|
161
|
+
]);
|
|
162
|
+
const VARIABLE_TYPES = new Set([
|
|
163
|
+
'variable_declaration', 'variable_declarator', 'lexical_declaration',
|
|
164
|
+
]);
|
|
165
|
+
export function isFunctionNode(node) {
|
|
166
|
+
return FUNCTION_TYPES.has(node.type);
|
|
167
|
+
}
|
|
168
|
+
export function isClassNode(node) {
|
|
169
|
+
return CLASS_TYPES.has(node.type);
|
|
170
|
+
}
|
|
171
|
+
export function isImportNode(node) {
|
|
172
|
+
return IMPORT_TYPES.has(node.type);
|
|
173
|
+
}
|
|
174
|
+
export function isLoopNode(node) {
|
|
175
|
+
return LOOP_TYPES.has(node.type);
|
|
176
|
+
}
|
|
177
|
+
export function isConditionalNode(node) {
|
|
178
|
+
return CONDITIONAL_TYPES.has(node.type);
|
|
179
|
+
}
|
|
180
|
+
export function isVariableNode(node) {
|
|
181
|
+
return VARIABLE_TYPES.has(node.type);
|
|
182
|
+
}
|
|
183
|
+
// ---------------------------------------------------------------------------
|
|
184
|
+
// Modifier helpers
|
|
185
|
+
// ---------------------------------------------------------------------------
|
|
186
|
+
const MODIFIER_KEYWORDS = new Set([
|
|
187
|
+
'export', 'default', 'async', 'static', 'public', 'private', 'protected',
|
|
188
|
+
'readonly', 'abstract', 'declare',
|
|
189
|
+
]);
|
|
190
|
+
/**
|
|
191
|
+
* Check if an ASTNode has a specific keyword modifier.
|
|
192
|
+
* In tree-sitter, modifiers appear as anonymous child nodes.
|
|
193
|
+
*/
|
|
194
|
+
export function hasModifier(node, modifier) {
|
|
195
|
+
const raw = node.raw;
|
|
196
|
+
if (!raw?.children)
|
|
197
|
+
return false;
|
|
198
|
+
for (const child of raw.children) {
|
|
199
|
+
if (!child.isNamed && child.type === modifier)
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Check if a node is exported.
|
|
206
|
+
*/
|
|
207
|
+
export function isExported(node) {
|
|
208
|
+
// Check for `export` keyword among the node's own modifiers
|
|
209
|
+
if (hasModifier(node, 'export'))
|
|
210
|
+
return true;
|
|
211
|
+
// Check if the parent is an export_statement
|
|
212
|
+
const raw = node.raw;
|
|
213
|
+
if (raw?.parent?.type === 'export_statement')
|
|
214
|
+
return true;
|
|
215
|
+
// Walk up to check for export_statement ancestor
|
|
216
|
+
let p = raw?.parent;
|
|
217
|
+
while (p) {
|
|
218
|
+
if (p.type === 'export_statement')
|
|
219
|
+
return true;
|
|
220
|
+
p = p.parent;
|
|
221
|
+
}
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Check if a node is async.
|
|
226
|
+
*/
|
|
227
|
+
export function isAsync(node) {
|
|
228
|
+
return hasModifier(node, 'async');
|
|
229
|
+
}
|
|
230
|
+
// ---------------------------------------------------------------------------
|
|
231
|
+
// Node name extraction
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
/**
|
|
234
|
+
* Get the name of an ASTNode if it has one.
|
|
235
|
+
* For tree-sitter, looks for a `name` property on the raw node,
|
|
236
|
+
* or finds the first named child that looks like an identifier.
|
|
237
|
+
*/
|
|
238
|
+
export function getNodeName(node) {
|
|
239
|
+
const raw = node.raw;
|
|
240
|
+
if (!raw)
|
|
241
|
+
return null;
|
|
242
|
+
// Check for a direct name child
|
|
243
|
+
for (const child of raw.namedChildren) {
|
|
244
|
+
if (child.type === 'identifier' || child.type === 'property_identifier') {
|
|
245
|
+
return child.text;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// For variable_declarator nodes, the name is the first named child
|
|
249
|
+
if (raw.type === 'variable_declarator') {
|
|
250
|
+
const first = raw.namedChildren[0];
|
|
251
|
+
if (first?.type === 'identifier')
|
|
252
|
+
return first.text;
|
|
253
|
+
}
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
// ---------------------------------------------------------------------------
|
|
257
|
+
// Parameter count
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
/**
|
|
260
|
+
* Count parameters of a function-like node.
|
|
261
|
+
*/
|
|
262
|
+
export function getParameterCount(node) {
|
|
263
|
+
const raw = node.raw;
|
|
264
|
+
if (!raw?.namedChildren)
|
|
265
|
+
return 0;
|
|
266
|
+
for (const child of raw.namedChildren) {
|
|
267
|
+
if (child.type === 'formal_parameters') {
|
|
268
|
+
return child.namedChildren.filter((c) => c.type === 'required_parameter' || c.type === 'optional_parameter').length;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return 0;
|
|
272
|
+
}
|
|
273
|
+
// ---------------------------------------------------------------------------
|
|
274
|
+
// Complexity
|
|
275
|
+
// ---------------------------------------------------------------------------
|
|
276
|
+
/**
|
|
277
|
+
* Calculate cyclomatic complexity by counting decision points.
|
|
278
|
+
*/
|
|
279
|
+
export function calculateComplexity(node) {
|
|
280
|
+
let complexity = 1;
|
|
281
|
+
// Walk the tree-sitter subtree
|
|
282
|
+
const raw = node.raw;
|
|
283
|
+
function count(node) {
|
|
284
|
+
if (LOOP_TYPES.has(node.type) || CONDITIONAL_TYPES.has(node.type)) {
|
|
285
|
+
complexity++;
|
|
286
|
+
}
|
|
287
|
+
// Logical operators (&&, ||) add complexity
|
|
288
|
+
if (node.type === '&&' || node.type === '||') {
|
|
289
|
+
complexity++;
|
|
290
|
+
}
|
|
291
|
+
for (const child of node.children) {
|
|
292
|
+
count(child);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Start from the function body if possible
|
|
296
|
+
const body = raw.namedChildren.find((c) => c.type === 'statement_block');
|
|
297
|
+
if (body) {
|
|
298
|
+
count(body);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
count(raw);
|
|
302
|
+
}
|
|
303
|
+
return complexity;
|
|
304
|
+
}
|
|
305
|
+
// ---------------------------------------------------------------------------
|
|
306
|
+
// Body text extraction
|
|
307
|
+
// ---------------------------------------------------------------------------
|
|
308
|
+
/**
|
|
309
|
+
* Get the body text of a function-like node.
|
|
310
|
+
*/
|
|
311
|
+
export function getFunctionBody(node, sourceCode) {
|
|
312
|
+
const raw = node.raw;
|
|
313
|
+
if (!raw)
|
|
314
|
+
return undefined;
|
|
315
|
+
const body = raw.namedChildren.find((c) => c.type === 'statement_block');
|
|
316
|
+
if (body) {
|
|
317
|
+
return sourceCode.slice(body.startIndex, body.endIndex);
|
|
318
|
+
}
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
321
|
+
// ---------------------------------------------------------------------------
|
|
322
|
+
// Import extraction (synchronous convenience)
|
|
323
|
+
// ---------------------------------------------------------------------------
|
|
324
|
+
/**
|
|
325
|
+
* Extract import info from source content.
|
|
326
|
+
* Uses tree-sitter directly to find import statements.
|
|
327
|
+
*/
|
|
328
|
+
export function extractImports(filePath, content) {
|
|
329
|
+
assertInitialized();
|
|
330
|
+
const results = [];
|
|
331
|
+
const ast = parseFile(filePath, content);
|
|
332
|
+
if (!ast)
|
|
333
|
+
return results;
|
|
334
|
+
// Find import_statement nodes
|
|
335
|
+
const importNodes = findNodes(ast.root, (n) => n.type === 'import_statement');
|
|
336
|
+
for (const imp of importNodes) {
|
|
337
|
+
const raw = imp.raw;
|
|
338
|
+
const importedNames = [];
|
|
339
|
+
let isDefault = false;
|
|
340
|
+
let isNamespace = false;
|
|
341
|
+
// Get module specifier (the string argument)
|
|
342
|
+
const stringNodes = raw.namedChildren.filter((c) => c.type === 'string');
|
|
343
|
+
const moduleSpecifier = stringNodes.length > 0
|
|
344
|
+
? stringNodes[0].text.replace(/^["']|["']$/g, '')
|
|
345
|
+
: '';
|
|
346
|
+
// Get import clause
|
|
347
|
+
const importClause = raw.namedChildren.find((c) => c.type === 'import_clause');
|
|
348
|
+
if (importClause) {
|
|
349
|
+
for (const child of importClause.namedChildren) {
|
|
350
|
+
if (child.type === 'identifier') {
|
|
351
|
+
importedNames.push(child.text);
|
|
352
|
+
isDefault = true;
|
|
353
|
+
}
|
|
354
|
+
else if (child.type === 'namespace_import') {
|
|
355
|
+
const ident = child.namedChildren.find((c) => c.type === 'identifier');
|
|
356
|
+
if (ident) {
|
|
357
|
+
importedNames.push(ident.text);
|
|
358
|
+
isNamespace = true;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
else if (child.type === 'named_imports') {
|
|
362
|
+
for (const spec of child.namedChildren) {
|
|
363
|
+
if (spec.type === 'import_specifier') {
|
|
364
|
+
const name = spec.namedChildren.find((c) => c.type === 'identifier');
|
|
365
|
+
if (name)
|
|
366
|
+
importedNames.push(name.text);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
results.push({
|
|
373
|
+
moduleSpecifier,
|
|
374
|
+
importedNames,
|
|
375
|
+
isDefaultImport: isDefault,
|
|
376
|
+
isNamespaceImport: isNamespace,
|
|
377
|
+
line: raw.startPosition.row + 1,
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
return results;
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=adapterBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapterBridge.js","sourceRoot":"","sources":["../../src/languages/adapterBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAA8D,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEnE,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAS,iBAAiB;IACxB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;IACzD,iBAAiB,EAAE,CAAC;IAEpB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,iFAAiF;IACjF,mFAAmF;IACnF,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IAE9D,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAwF,EAAE,CAAC;IACvG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,aAAa,CAAC,IAAoB,EAAE,MAAqB;IAChE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,qBAAqB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;YACvD,QAAQ,EAAE;gBACR,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC1E,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;aACrE;YACD,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,IAAa,EACb,OAA+C,EAC/C,KAAK,GAAW,CAAC;IAEjB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,IAAoB,EACpB,OAAuC;IAEvC,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,GAAY,EACZ,SAAqC;IAErC,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACpB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAoB,EACpB,SAA4C;IAE5C,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;QAClB,IAAI,SAAS,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,UAAkB;IAC3D,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;KACvC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,QAAgB;IAEhB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,8EAA8E;AAC9E,kDAAkD;AAClD,8EAA8E;AAE9E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB;IAC/D,mBAAmB,EAAE,gCAAgC,EAAE,+BAA+B;CACvF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEvE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc;CACvE,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,aAAa;CACxE,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB;CACrE,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW;IACxE,UAAU,EAAE,UAAU,EAAE,SAAS;CAClC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,QAAgB;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAqB,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,4DAA4D;IAC5D,IAAI,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,6CAA6C;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAqB,CAAC;IACvC,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAC;IAE1D,iDAAiD;IACjD,IAAI,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAC/C,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAqB,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,gCAAgC;IAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAqB,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,aAAa;QAAE,OAAO,CAAC,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAC/B,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAC1F,CAAC,MAAM,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,+BAA+B;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAqB,CAAC;IAEvC,SAAS,KAAK,CAAC,IAAoB;QACjC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClE,UAAU,EAAE,CAAC;QACf,CAAC;QACD,4CAA4C;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7C,UAAU,EAAE,CAAC;QACf,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IACzF,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,UAAkB;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAqB,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CACxD,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAC7B,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAAe;IAQf,iBAAiB,EAAE,CAAC;IACpB,MAAM,OAAO,GAAsC,EAAE,CAAC;IAEtD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IAEzB,8BAA8B;IAC9B,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IAE9E,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAqB,CAAC;QACtC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,6CAA6C;QAC7C,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACzF,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YACjD,CAAC,CAAC,EAAE,CAAC;QAEP,oBAAoB;QACpB,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAChE,CAAC,CAAC,IAAI,KAAK,eAAe,CAC3B,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;gBAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;oBACvF,IAAI,KAAK,EAAE,CAAC;wBACV,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/B,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;wBACvC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BACrC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;4BACrF,IAAI,IAAI;gCAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,eAAe;YACf,aAAa;YACb,eAAe,EAAE,SAAS;YAC1B,iBAAiB,EAAE,WAAW;YAC9B,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Go
|
|
3
|
-
*
|
|
2
|
+
* Go language adapter using tree-sitter-go WASM parser.
|
|
3
|
+
*
|
|
4
|
+
* Provides real AST-based analysis for Go source files. Replaces the previous
|
|
5
|
+
* regex-based stub that returned empty arrays for most queries.
|
|
4
6
|
*/
|
|
5
|
-
import {
|
|
6
|
-
export declare class
|
|
7
|
+
import type { AST, ASTNode, ClassInfo, ExportInfo, FunctionInfo, ImportInfo, InterfaceInfo, LanguageAdapter, NodePattern, SourceLocation } from '../types.js';
|
|
8
|
+
export declare class TreeSitterGoAdapter implements LanguageAdapter {
|
|
7
9
|
readonly name = "go";
|
|
8
10
|
readonly fileExtensions: string[];
|
|
9
|
-
/**
|
|
10
|
-
* Parse Go source code into an AST
|
|
11
|
-
*/
|
|
12
|
-
parse(filePath: string, content: string): Promise<AST>;
|
|
13
|
-
/**
|
|
14
|
-
* Create a simple Go AST from source code using regex patterns
|
|
15
|
-
* This is a basic implementation that will be enhanced later
|
|
16
|
-
*/
|
|
17
|
-
private createSimpleGoAST;
|
|
18
|
-
/**
|
|
19
|
-
* Check if this adapter supports a file
|
|
20
|
-
*/
|
|
21
11
|
supportsFile(filePath: string): boolean;
|
|
12
|
+
parse(filePath: string, content: string): Promise<AST>;
|
|
22
13
|
findNodes(ast: AST, pattern: NodePattern): ASTNode[];
|
|
23
|
-
private walkAST;
|
|
24
|
-
private matchesPattern;
|
|
25
14
|
getParent(node: ASTNode): ASTNode | null;
|
|
26
15
|
getChildren(node: ASTNode): ASTNode[];
|
|
27
16
|
getSiblings(node: ASTNode): ASTNode[];
|
|
@@ -30,18 +19,10 @@ export declare class GoAdapter implements LanguageAdapter {
|
|
|
30
19
|
getNodeName(node: ASTNode): string | null;
|
|
31
20
|
getNodeLocation(node: ASTNode): SourceLocation;
|
|
32
21
|
extractFunctions(ast: AST): FunctionInfo[];
|
|
33
|
-
private extractFunctionInfo;
|
|
34
|
-
private isExportedFunction;
|
|
35
22
|
extractClasses(ast: AST): ClassInfo[];
|
|
36
|
-
private extractStructInfo;
|
|
37
|
-
private isExportedStruct;
|
|
38
23
|
extractImports(ast: AST): ImportInfo[];
|
|
39
24
|
extractExports(ast: AST): ExportInfo[];
|
|
40
|
-
extractInterfaces?(ast: AST): InterfaceInfo[];
|
|
41
|
-
private extractInterfaceInfo;
|
|
42
|
-
private isExportedInterface;
|
|
43
25
|
isClass(node: ASTNode): boolean;
|
|
44
|
-
isStruct(node: ASTNode): boolean;
|
|
45
26
|
isFunction(node: ASTNode): boolean;
|
|
46
27
|
isMethod(node: ASTNode): boolean;
|
|
47
28
|
isInterface(node: ASTNode): boolean;
|
|
@@ -53,5 +34,35 @@ export declare class GoAdapter implements LanguageAdapter {
|
|
|
53
34
|
getTypeInfo(node: ASTNode): string | null;
|
|
54
35
|
getDocumentation(node: ASTNode): string | null;
|
|
55
36
|
getComplexity(node: ASTNode): number;
|
|
37
|
+
extractInterfaces(ast: AST): InterfaceInfo[];
|
|
38
|
+
extractRawImports(_filePath: string, content: string): Array<{
|
|
39
|
+
moduleSpecifier: string;
|
|
40
|
+
isStatic: boolean;
|
|
41
|
+
isDynamic: boolean;
|
|
42
|
+
isRequire: boolean;
|
|
43
|
+
line: number;
|
|
44
|
+
}>;
|
|
45
|
+
extractExportedSymbols(ast: AST): Array<{
|
|
46
|
+
name: string;
|
|
47
|
+
line: number;
|
|
48
|
+
}>;
|
|
49
|
+
private walk;
|
|
50
|
+
private walkRaw;
|
|
51
|
+
private collectErrors;
|
|
52
|
+
private matchesPattern;
|
|
53
|
+
private extractName;
|
|
54
|
+
private extractDocumentation;
|
|
55
|
+
private cleanCommentText;
|
|
56
|
+
private calculateComplexity;
|
|
57
|
+
private getOperator;
|
|
58
|
+
private buildFunctionInfo;
|
|
59
|
+
private buildStructAsClass;
|
|
60
|
+
private buildImportInfo;
|
|
61
|
+
private buildInterfaceInfo;
|
|
62
|
+
private extractParameters;
|
|
63
|
+
private isExportedGo;
|
|
64
|
+
private getReceiverType;
|
|
65
|
+
private getReturnType;
|
|
66
|
+
private findNamedChildren;
|
|
56
67
|
}
|
|
57
68
|
//# sourceMappingURL=GoAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoAdapter.d.ts","sourceRoot":"","sources":["../../../src/languages/go/GoAdapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"GoAdapter.d.ts","sourceRoot":"","sources":["../../../src/languages/go/GoAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,GAAG,EACH,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,EAEV,aAAa,EACb,eAAe,EACf,WAAW,EAIX,cAAc,EACf,MAAM,aAAa,CAAC;AAYrB,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,QAAQ;IACrB,QAAQ,CAAC,cAAc,WAAW;IAIlC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtC;IAIK,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAmB3D;IAID,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,EAAE,CAQnD;IAED,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAEvC;IAED,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,CAEpC;IAED,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,CAGpC;IAID,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEjC;IAED,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;IAED,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAExC;IAED,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAE7C;IAID,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,EAAE,CAazC;IAED,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,EAAE,CA+BpC;IAED,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,EAAE,CAgBrC;IAED,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,EAAE,CAyCrC;IAID,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAO9B;IAED,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEjC;IAED,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAI/B;IAED,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAOlC;IAED,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE/B;IAED,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE/B;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE7B;IAED,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQpC;IAED,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQ5C;IAID,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmBxC;IAED,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE7C;IAED,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEnC;IAID,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,EAAE,CAoB3C;IAID,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAqCD;IAID,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAKtE;IAMD,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,iBAAiB;CAG1B"}
|