@grafema/core 0.1.0-alpha.5 → 0.2.0-beta
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 +0 -1
- package/dist/Orchestrator.d.ts +31 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +222 -27
- package/dist/config/ConfigLoader.d.ts +90 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +249 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/core/ASTWorker.d.ts +11 -36
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +93 -99
- package/dist/core/CoverageAnalyzer.d.ts +65 -0
- package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
- package/dist/core/CoverageAnalyzer.js +198 -0
- package/dist/core/FileExplainer.d.ts +101 -0
- package/dist/core/FileExplainer.d.ts.map +1 -0
- package/dist/core/FileExplainer.js +139 -0
- package/dist/core/FileNodeManager.d.ts +40 -0
- package/dist/core/FileNodeManager.d.ts.map +1 -0
- package/dist/core/FileNodeManager.js +84 -0
- package/dist/core/GraphFreshnessChecker.d.ts +33 -0
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
- package/dist/core/GraphFreshnessChecker.js +101 -0
- package/dist/core/HashUtils.d.ts +24 -0
- package/dist/core/HashUtils.d.ts.map +1 -0
- package/dist/core/HashUtils.js +45 -0
- package/dist/core/IncrementalReanalyzer.d.ts +36 -0
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
- package/dist/core/IncrementalReanalyzer.js +132 -0
- package/dist/core/NodeFactory.d.ts +266 -19
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +256 -21
- package/dist/core/ScopeTracker.d.ts +84 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -0
- package/dist/core/ScopeTracker.js +116 -0
- package/dist/core/SemanticId.d.ts +90 -0
- package/dist/core/SemanticId.d.ts.map +1 -0
- package/dist/core/SemanticId.js +115 -0
- package/dist/core/VersionManager.d.ts.map +1 -1
- package/dist/core/VersionManager.js +3 -2
- package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
- package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ArrayLiteralNode.js +43 -0
- package/dist/core/nodes/BranchNode.d.ts +41 -0
- package/dist/core/nodes/BranchNode.d.ts.map +1 -0
- package/dist/core/nodes/BranchNode.js +82 -0
- package/dist/core/nodes/CallSiteNode.d.ts +30 -2
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +54 -4
- package/dist/core/nodes/CaseNode.d.ts +43 -0
- package/dist/core/nodes/CaseNode.d.ts.map +1 -0
- package/dist/core/nodes/CaseNode.js +81 -0
- package/dist/core/nodes/ClassNode.d.ts +34 -2
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +52 -4
- package/dist/core/nodes/ConstantNode.d.ts +2 -2
- package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
- package/dist/core/nodes/ConstantNode.js +6 -4
- package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
- package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
- package/dist/core/nodes/ConstructorCallNode.js +171 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
- package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
- package/dist/core/nodes/DatabaseQueryNode.js +5 -2
- package/dist/core/nodes/DecoratorNode.d.ts +42 -0
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
- package/dist/core/nodes/DecoratorNode.js +64 -0
- package/dist/core/nodes/EnumNode.d.ts +42 -0
- package/dist/core/nodes/EnumNode.d.ts.map +1 -0
- package/dist/core/nodes/EnumNode.js +56 -0
- package/dist/core/nodes/EventListenerNode.d.ts +4 -4
- package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
- package/dist/core/nodes/EventListenerNode.js +7 -4
- package/dist/core/nodes/ExportNode.d.ts +38 -2
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +54 -4
- package/dist/core/nodes/ExpressionNode.d.ts +97 -0
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressionNode.js +180 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +49 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalStdioNode.js +15 -8
- package/dist/core/nodes/FunctionNode.d.ts +36 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
- package/dist/core/nodes/FunctionNode.js +80 -1
- package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
- package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
- package/dist/core/nodes/HttpRequestNode.js +7 -4
- package/dist/core/nodes/ImportNode.d.ts +28 -6
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +43 -8
- package/dist/core/nodes/InterfaceNode.d.ts +46 -0
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
- package/dist/core/nodes/InterfaceNode.js +57 -0
- package/dist/core/nodes/IssueNode.d.ts +73 -0
- package/dist/core/nodes/IssueNode.d.ts.map +1 -0
- package/dist/core/nodes/IssueNode.js +129 -0
- package/dist/core/nodes/LiteralNode.d.ts +2 -2
- package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/LiteralNode.js +6 -4
- package/dist/core/nodes/MethodCallNode.d.ts +32 -2
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +57 -4
- package/dist/core/nodes/MethodNode.d.ts +34 -2
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +55 -3
- package/dist/core/nodes/ModuleNode.d.ts +31 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ModuleNode.js +37 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/NetworkRequestNode.js +65 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ObjectLiteralNode.js +43 -0
- package/dist/core/nodes/ParameterNode.d.ts +2 -2
- package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
- package/dist/core/nodes/ParameterNode.js +5 -3
- package/dist/core/nodes/ScopeNode.d.ts +31 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
- package/dist/core/nodes/ScopeNode.js +49 -0
- package/dist/core/nodes/TypeNode.d.ts +36 -0
- package/dist/core/nodes/TypeNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeNode.js +55 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +48 -4
- package/dist/core/nodes/index.d.ts +15 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +17 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
- package/dist/data/builtins/BuiltinRegistry.js +110 -0
- package/dist/data/builtins/definitions.d.ts +28 -0
- package/dist/data/builtins/definitions.d.ts.map +1 -0
- package/dist/data/builtins/definitions.js +250 -0
- package/dist/data/builtins/index.d.ts +10 -0
- package/dist/data/builtins/index.d.ts.map +1 -0
- package/dist/data/builtins/index.js +8 -0
- package/dist/data/builtins/jsGlobals.d.ts +18 -0
- package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
- package/dist/data/builtins/jsGlobals.js +26 -0
- package/dist/data/builtins/types.d.ts +34 -0
- package/dist/data/builtins/types.d.ts.map +1 -0
- package/dist/data/builtins/types.js +7 -0
- package/dist/data/globals/definitions.d.ts +27 -0
- package/dist/data/globals/definitions.d.ts.map +1 -0
- package/dist/data/globals/definitions.js +117 -0
- package/dist/data/globals/index.d.ts +36 -0
- package/dist/data/globals/index.d.ts.map +1 -0
- package/dist/data/globals/index.js +52 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticCollector.js +129 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +247 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticWriter.js +43 -0
- package/dist/diagnostics/index.d.ts +14 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +11 -0
- package/dist/errors/GrafemaError.d.ts +161 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +181 -0
- package/dist/index.d.ts +73 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -1
- package/dist/logging/Logger.d.ts +48 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +134 -0
- package/dist/plugins/Plugin.d.ts +5 -1
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/Plugin.js +33 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +16 -11
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
- package/dist/plugins/analysis/ast/types.d.ts +470 -5
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.js +5 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/location.js +78 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/detector.js +49 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
- package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
- package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/index.js +8 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/parsers.js +80 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +29 -8
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
- package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +173 -147
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
- package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
- package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
- package/dist/plugins/indexing/ServiceDetector.js +28 -15
- package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
- package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
- package/dist/plugins/validation/BrokenImportValidator.js +249 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +103 -77
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +62 -49
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
- package/dist/plugins/validation/EvalBanValidator.js +17 -16
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
- package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
- package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
- package/dist/plugins/validation/NodeCreationValidator.js +415 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
- package/dist/plugins/validation/ShadowingDetector.js +6 -5
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/GitPlugin.js +10 -12
- package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/VCSPlugin.js +5 -5
- package/dist/queries/findCallsInFunction.d.ts +52 -0
- package/dist/queries/findCallsInFunction.d.ts.map +1 -0
- package/dist/queries/findCallsInFunction.js +135 -0
- package/dist/queries/findContainingFunction.d.ts +45 -0
- package/dist/queries/findContainingFunction.d.ts.map +1 -0
- package/dist/queries/findContainingFunction.js +54 -0
- package/dist/queries/index.d.ts +14 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +11 -0
- package/dist/queries/traceValues.d.ts +70 -0
- package/dist/queries/traceValues.d.ts.map +1 -0
- package/dist/queries/traceValues.js +299 -0
- package/dist/queries/types.d.ts +163 -0
- package/dist/queries/types.d.ts.map +1 -0
- package/dist/queries/types.js +9 -0
- package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
- package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/GraphSchemaExtractor.js +124 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/InterfaceSchemaExtractor.js +112 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +72 -62
- package/dist/storage/backends/typeValidation.d.ts.map +1 -1
- package/dist/storage/backends/typeValidation.js +1 -0
- package/dist/validation/PathValidator.d.ts +1 -2
- package/dist/validation/PathValidator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Orchestrator.ts +272 -27
- package/src/config/ConfigLoader.ts +354 -0
- package/src/config/index.ts +5 -0
- package/src/core/ASTWorker.ts +143 -139
- package/src/core/CoverageAnalyzer.ts +243 -0
- package/src/core/FileExplainer.ts +179 -0
- package/src/core/FileNodeManager.ts +100 -0
- package/src/core/GraphFreshnessChecker.ts +143 -0
- package/src/core/HashUtils.ts +48 -0
- package/src/core/IncrementalReanalyzer.ts +192 -0
- package/src/core/NodeFactory.ts +470 -23
- package/src/core/ScopeTracker.ts +154 -0
- package/src/core/SemanticId.ts +192 -0
- package/src/core/VersionManager.ts +3 -2
- package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
- package/src/core/nodes/ArrayLiteralNode.ts +66 -0
- package/src/core/nodes/BranchNode.ts +113 -0
- package/src/core/nodes/CallSiteNode.ts +64 -4
- package/src/core/nodes/CaseNode.ts +123 -0
- package/src/core/nodes/ClassNode.ts +67 -4
- package/src/core/nodes/ConstantNode.ts +5 -4
- package/src/core/nodes/ConstructorCallNode.ts +217 -0
- package/src/core/nodes/DatabaseQueryNode.ts +5 -1
- package/src/core/nodes/DecoratorNode.ts +92 -0
- package/src/core/nodes/EnumNode.ts +87 -0
- package/src/core/nodes/EventListenerNode.ts +7 -4
- package/src/core/nodes/ExportNode.ts +74 -4
- package/src/core/nodes/ExpressionNode.ts +232 -0
- package/src/core/nodes/ExternalModuleNode.ts +65 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/HttpRequestNode.ts +7 -4
- package/src/core/nodes/ImportNode.ts +62 -13
- package/src/core/nodes/InterfaceNode.ts +92 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/LiteralNode.ts +5 -4
- package/src/core/nodes/MethodCallNode.ts +70 -4
- package/src/core/nodes/MethodNode.ts +68 -3
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +66 -0
- package/src/core/nodes/ParameterNode.ts +4 -3
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +79 -0
- package/src/core/nodes/VariableDeclarationNode.ts +58 -4
- package/src/core/nodes/index.ts +21 -1
- package/src/data/builtins/BuiltinRegistry.ts +124 -0
- package/src/data/builtins/definitions.ts +267 -0
- package/src/data/builtins/index.ts +10 -0
- package/src/data/builtins/jsGlobals.ts +28 -0
- package/src/data/builtins/types.ts +36 -0
- package/src/data/globals/definitions.ts +156 -0
- package/src/data/globals/index.ts +66 -0
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +324 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +239 -0
- package/src/index.ts +193 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
- package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +16 -11
- package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +596 -6
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
- package/src/plugins/analysis/ast/utils/index.ts +12 -0
- package/src/plugins/analysis/ast/utils/location.ts +103 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
- package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
- package/src/plugins/discovery/workspaces/detector.ts +63 -0
- package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
- package/src/plugins/discovery/workspaces/index.ts +23 -0
- package/src/plugins/discovery/workspaces/parsers.ts +99 -0
- package/src/plugins/enrichment/AliasTracker.ts +35 -8
- package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
- package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
- package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
- package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
- package/src/plugins/enrichment/MountPointResolver.ts +208 -195
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
- package/src/plugins/validation/BrokenImportValidator.ts +325 -0
- package/src/plugins/validation/CallResolverValidator.ts +131 -110
- package/src/plugins/validation/DataFlowValidator.ts +88 -67
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
- package/src/plugins/validation/ShadowingDetector.ts +6 -5
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
- package/src/plugins/vcs/GitPlugin.ts +40 -12
- package/src/plugins/vcs/VCSPlugin.ts +7 -5
- package/src/queries/README.md +46 -0
- package/src/queries/findCallsInFunction.ts +206 -0
- package/src/queries/findContainingFunction.ts +83 -0
- package/src/queries/index.ts +23 -0
- package/src/queries/traceValues.ts +398 -0
- package/src/queries/types.ts +187 -0
- package/src/schema/GraphSchemaExtractor.ts +177 -0
- package/src/schema/InterfaceSchemaExtractor.ts +173 -0
- package/src/schema/index.ts +5 -0
- package/src/storage/backends/RFDBServerBackend.ts +100 -98
- package/src/storage/backends/typeValidation.ts +1 -0
- package/src/validation/PathValidator.ts +1 -1
- package/dist/core/AnalysisWorker.d.ts +0 -14
- package/dist/core/AnalysisWorker.d.ts.map +0 -1
- package/dist/core/AnalysisWorker.js +0 -307
- package/dist/core/ParallelAnalyzer.d.ts +0 -120
- package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
- package/dist/core/ParallelAnalyzer.js +0 -331
- package/dist/core/QueueWorker.d.ts +0 -12
- package/dist/core/QueueWorker.d.ts.map +0 -1
- package/dist/core/QueueWorker.js +0 -567
- package/dist/core/RFDBClient.d.ts +0 -179
- package/dist/core/RFDBClient.d.ts.map +0 -1
- package/dist/core/RFDBClient.js +0 -429
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
- package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
- package/src/core/AnalysisWorker.ts +0 -410
- package/src/core/ParallelAnalyzer.ts +0 -476
- package/src/core/QueueWorker.ts +0 -780
- package/src/plugins/indexing/ServiceDetector.ts +0 -230
|
@@ -17,13 +17,14 @@ export class HTTPConnectionEnricher extends Plugin {
|
|
|
17
17
|
priority: 50, // После основных enrichers
|
|
18
18
|
creates: {
|
|
19
19
|
nodes: [],
|
|
20
|
-
edges: ['INTERACTS_WITH']
|
|
20
|
+
edges: ['INTERACTS_WITH', 'HTTP_RECEIVES']
|
|
21
21
|
},
|
|
22
|
-
dependencies: ['ExpressRouteAnalyzer', 'FetchAnalyzer']
|
|
22
|
+
dependencies: ['ExpressRouteAnalyzer', 'FetchAnalyzer', 'ExpressResponseAnalyzer']
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
async execute(context) {
|
|
26
26
|
const { graph } = context;
|
|
27
|
+
const logger = this.log(context);
|
|
27
28
|
try {
|
|
28
29
|
// Собираем все http:route (backend endpoints)
|
|
29
30
|
const routes = [];
|
|
@@ -35,11 +36,17 @@ export class HTTPConnectionEnricher extends Plugin {
|
|
|
35
36
|
for await (const node of graph.queryNodes({ type: 'http:request' })) {
|
|
36
37
|
requests.push(node);
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
logger.debug('Found routes and requests', {
|
|
40
|
+
routes: routes.length,
|
|
41
|
+
requests: requests.length
|
|
42
|
+
});
|
|
39
43
|
// Дедуплицируем по ID (из-за multi-service анализа)
|
|
40
44
|
const uniqueRoutes = this.deduplicateById(routes);
|
|
41
45
|
const uniqueRequests = this.deduplicateById(requests);
|
|
42
|
-
|
|
46
|
+
logger.info('Unique routes and requests', {
|
|
47
|
+
routes: uniqueRoutes.length,
|
|
48
|
+
requests: uniqueRequests.length
|
|
49
|
+
});
|
|
43
50
|
let edgesCreated = 0;
|
|
44
51
|
const connections = [];
|
|
45
52
|
// Для каждого request ищем matching route
|
|
@@ -53,32 +60,52 @@ export class HTTPConnectionEnricher extends Plugin {
|
|
|
53
60
|
// Ищем matching route
|
|
54
61
|
for (const route of uniqueRoutes) {
|
|
55
62
|
const routeMethod = (route.method || 'GET').toUpperCase();
|
|
56
|
-
|
|
63
|
+
// Use fullPath (from MountPointResolver) if available, fallback to local path
|
|
64
|
+
const routePath = route.fullPath || route.path;
|
|
57
65
|
if (routePath && method === routeMethod && this.pathsMatch(url, routePath)) {
|
|
58
|
-
//
|
|
66
|
+
// 1. Create INTERACTS_WITH edge (existing)
|
|
59
67
|
await graph.addEdge({
|
|
60
68
|
type: 'INTERACTS_WITH',
|
|
61
69
|
src: request.id,
|
|
62
70
|
dst: route.id,
|
|
63
71
|
matchType: this.hasParams(routePath) ? 'parametric' : 'exact'
|
|
64
72
|
});
|
|
73
|
+
edgesCreated++;
|
|
74
|
+
// 2. Create HTTP_RECEIVES edges if both sides have data nodes
|
|
75
|
+
const responseDataNode = request.responseDataNode;
|
|
76
|
+
if (responseDataNode) {
|
|
77
|
+
const respondsWithEdges = await graph.getOutgoingEdges(route.id, ['RESPONDS_WITH']);
|
|
78
|
+
for (const respEdge of respondsWithEdges) {
|
|
79
|
+
await graph.addEdge({
|
|
80
|
+
type: 'HTTP_RECEIVES',
|
|
81
|
+
src: responseDataNode,
|
|
82
|
+
dst: respEdge.dst,
|
|
83
|
+
metadata: {
|
|
84
|
+
method: request.method,
|
|
85
|
+
path: request.url,
|
|
86
|
+
viaRequest: request.id,
|
|
87
|
+
viaRoute: route.id
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
edgesCreated++;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
65
93
|
connections.push({
|
|
66
94
|
request: `${method} ${url}`,
|
|
67
95
|
route: `${routeMethod} ${routePath}`,
|
|
68
96
|
requestFile: request.file,
|
|
69
97
|
routeFile: route.file
|
|
70
98
|
});
|
|
71
|
-
edgesCreated++;
|
|
72
99
|
break; // Один request → один route
|
|
73
100
|
}
|
|
74
101
|
}
|
|
75
102
|
}
|
|
76
103
|
// Логируем найденные связи
|
|
77
104
|
if (connections.length > 0) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
105
|
+
logger.info('Connections found', {
|
|
106
|
+
count: connections.length,
|
|
107
|
+
examples: connections.slice(0, 5).map(c => `${c.request} → ${c.route}`)
|
|
108
|
+
});
|
|
82
109
|
}
|
|
83
110
|
return createSuccessResult({ nodes: 0, edges: edgesCreated }, {
|
|
84
111
|
connections: connections.length,
|
|
@@ -87,36 +114,60 @@ export class HTTPConnectionEnricher extends Plugin {
|
|
|
87
114
|
});
|
|
88
115
|
}
|
|
89
116
|
catch (error) {
|
|
90
|
-
|
|
117
|
+
logger.error('Error in HTTPConnectionEnricher', { error });
|
|
91
118
|
return createErrorResult(error instanceof Error ? error : new Error(String(error)));
|
|
92
119
|
}
|
|
93
120
|
}
|
|
94
121
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
122
|
+
* Normalize URL to canonical form for comparison.
|
|
123
|
+
* Converts both Express params (:id) and template literals (${...}) to {param}.
|
|
124
|
+
*/
|
|
125
|
+
normalizeUrl(url) {
|
|
126
|
+
return url
|
|
127
|
+
.replace(/:[^/]+/g, '{param}') // :id -> {param}
|
|
128
|
+
.replace(/\$\{[^}]*\}/g, '{param}'); // ${...} -> {param}, ${userId} -> {param}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if URL has any parameter placeholders (after normalization)
|
|
132
|
+
*/
|
|
133
|
+
hasParamsNormalized(normalizedUrl) {
|
|
134
|
+
return normalizedUrl.includes('{param}');
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Check if request URL matches route path.
|
|
138
|
+
* Supports:
|
|
139
|
+
* - Exact match
|
|
140
|
+
* - Express params (:id)
|
|
141
|
+
* - Template literals (${...})
|
|
142
|
+
* - Concrete values matching params (/users/123 matches /users/:id)
|
|
97
143
|
*/
|
|
98
144
|
pathsMatch(requestUrl, routePath) {
|
|
99
|
-
//
|
|
100
|
-
|
|
145
|
+
// Normalize both to canonical form
|
|
146
|
+
const normRequest = this.normalizeUrl(requestUrl);
|
|
147
|
+
const normRoute = this.normalizeUrl(routePath);
|
|
148
|
+
// If both normalize to same string, they match
|
|
149
|
+
if (normRequest === normRoute) {
|
|
101
150
|
return true;
|
|
102
151
|
}
|
|
103
|
-
//
|
|
104
|
-
if (!this.
|
|
152
|
+
// If route has no params after normalization, require exact match
|
|
153
|
+
if (!this.hasParamsNormalized(normRoute)) {
|
|
105
154
|
return false;
|
|
106
155
|
}
|
|
107
|
-
//
|
|
108
|
-
//
|
|
109
|
-
const
|
|
110
|
-
.replace(
|
|
111
|
-
.replace(/\//g, '\\/'); // /
|
|
112
|
-
|
|
113
|
-
return regex.test(requestUrl);
|
|
156
|
+
// Handle case where request has concrete value (e.g., '/users/123')
|
|
157
|
+
// and route has param (e.g., '/users/{param}')
|
|
158
|
+
const routeRegex = normRoute
|
|
159
|
+
.replace(/\{param\}/g, '[^/]+') // {param} -> [^/]+
|
|
160
|
+
.replace(/\//g, '\\/'); // / -> \/
|
|
161
|
+
return new RegExp(`^${routeRegex}$`).test(normRequest);
|
|
114
162
|
}
|
|
115
163
|
/**
|
|
116
|
-
*
|
|
164
|
+
* Check if path has parameters (for edge matchType metadata)
|
|
117
165
|
*/
|
|
118
166
|
hasParams(path) {
|
|
119
|
-
|
|
167
|
+
if (!path)
|
|
168
|
+
return false;
|
|
169
|
+
// Check for Express params or template literals
|
|
170
|
+
return path.includes(':') || path.includes('${');
|
|
120
171
|
}
|
|
121
172
|
/**
|
|
122
173
|
* Убирает дубликаты по ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportExportLinker.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/ImportExportLinker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBhF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ImportExportLinker.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/ImportExportLinker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBhF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2I5D;;;OAGG;YACW,gBAAgB;IA+B9B;;OAEG;YACW,iBAAiB;CAWhC"}
|
|
@@ -22,28 +22,29 @@ export class ImportExportLinker extends Plugin {
|
|
|
22
22
|
priority: 90, // Run early in enrichment, after analysis
|
|
23
23
|
creates: {
|
|
24
24
|
nodes: [],
|
|
25
|
-
edges: ['IMPORTS_FROM']
|
|
25
|
+
edges: ['IMPORTS', 'IMPORTS_FROM']
|
|
26
26
|
},
|
|
27
27
|
dependencies: ['JSASTAnalyzer'] // Requires IMPORT and EXPORT nodes
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
async execute(context) {
|
|
31
31
|
const { graph, onProgress } = context;
|
|
32
|
-
|
|
32
|
+
const logger = this.log(context);
|
|
33
|
+
logger.info('Starting import-export linking');
|
|
33
34
|
const startTime = Date.now();
|
|
34
35
|
// Step 1: Build EXPORT index - Map<file, Map<exportKey, exportNode>>
|
|
35
36
|
const exportIndex = await this.buildExportIndex(graph);
|
|
36
37
|
const indexTime = Date.now() - startTime;
|
|
37
|
-
|
|
38
|
+
logger.debug('Indexed exports', { files: exportIndex.size, time: `${indexTime}ms` });
|
|
38
39
|
// Step 2: Build MODULE lookup - Map<file, moduleNode>
|
|
39
40
|
const modulesByFile = await this.buildModuleLookup(graph);
|
|
40
|
-
|
|
41
|
+
logger.debug('Indexed modules', { count: modulesByFile.size });
|
|
41
42
|
// Step 3: Process all IMPORT nodes
|
|
42
43
|
const imports = [];
|
|
43
44
|
for await (const node of graph.queryNodes({ nodeType: 'IMPORT' })) {
|
|
44
45
|
imports.push(node);
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
+
logger.info('Found imports to link', { count: imports.length });
|
|
47
48
|
let edgesCreated = 0;
|
|
48
49
|
let skipped = 0;
|
|
49
50
|
let notFound = 0;
|
|
@@ -90,6 +91,17 @@ export class ImportExportLinker extends Plugin {
|
|
|
90
91
|
notFound++;
|
|
91
92
|
continue;
|
|
92
93
|
}
|
|
94
|
+
// Create MODULE -> IMPORTS -> MODULE edge for relative imports
|
|
95
|
+
const sourceModule = modulesByFile.get(imp.file);
|
|
96
|
+
const targetModule = modulesByFile.get(targetFile);
|
|
97
|
+
if (sourceModule && targetModule) {
|
|
98
|
+
await graph.addEdge({
|
|
99
|
+
type: 'IMPORTS',
|
|
100
|
+
src: sourceModule.id,
|
|
101
|
+
dst: targetModule.id
|
|
102
|
+
});
|
|
103
|
+
edgesCreated++;
|
|
104
|
+
}
|
|
93
105
|
// Find matching export based on import type
|
|
94
106
|
const importType = imp.importType; // 'default', 'named', or 'namespace'
|
|
95
107
|
let targetExport;
|
|
@@ -120,7 +132,12 @@ export class ImportExportLinker extends Plugin {
|
|
|
120
132
|
}
|
|
121
133
|
}
|
|
122
134
|
const totalTime = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
123
|
-
|
|
135
|
+
logger.info('Complete', {
|
|
136
|
+
edgesCreated,
|
|
137
|
+
skipped,
|
|
138
|
+
notFound,
|
|
139
|
+
time: `${totalTime}s`
|
|
140
|
+
});
|
|
124
141
|
return createSuccessResult({ nodes: 0, edges: edgesCreated }, {
|
|
125
142
|
importsProcessed: imports.length,
|
|
126
143
|
edgesCreated,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoBhF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAqC;IAEnE,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAuH5D;;OAEG;YACW,qBAAqB;IA0CnC;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;YACW,iBAAiB;IA0D/B;;OAEG;YACW,mBAAmB;YAqBnB,4BAA4B;IAyB1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAWzB"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* - METHOD_CALL -> CALLS -> FUNCTION (для методов объектов)
|
|
12
12
|
*/
|
|
13
13
|
import { Plugin, createSuccessResult } from '../Plugin.js';
|
|
14
|
+
import { StrictModeError } from '../../errors/GrafemaError.js';
|
|
14
15
|
export class MethodCallResolver extends Plugin {
|
|
15
16
|
_containingClassCache;
|
|
16
17
|
get metadata() {
|
|
@@ -26,10 +27,12 @@ export class MethodCallResolver extends Plugin {
|
|
|
26
27
|
}
|
|
27
28
|
async execute(context) {
|
|
28
29
|
const { graph, onProgress } = context;
|
|
29
|
-
|
|
30
|
+
const logger = this.log(context);
|
|
31
|
+
logger.info('Starting method call resolution');
|
|
30
32
|
let methodCallsProcessed = 0;
|
|
31
33
|
let edgesCreated = 0;
|
|
32
34
|
let unresolved = 0;
|
|
35
|
+
const errors = [];
|
|
33
36
|
// Собираем все METHOD_CALL ноды (CALL с object атрибутом)
|
|
34
37
|
const methodCalls = [];
|
|
35
38
|
for await (const node of graph.queryNodes({ nodeType: 'CALL' })) {
|
|
@@ -38,12 +41,12 @@ export class MethodCallResolver extends Plugin {
|
|
|
38
41
|
methodCalls.push(callNode);
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
|
-
|
|
44
|
+
logger.info('Found method calls to resolve', { count: methodCalls.length });
|
|
42
45
|
// Собираем все классы и их методы для быстрого поиска
|
|
43
|
-
const classMethodIndex = await this.buildClassMethodIndex(graph);
|
|
44
|
-
|
|
46
|
+
const classMethodIndex = await this.buildClassMethodIndex(graph, logger);
|
|
47
|
+
logger.info('Indexed classes', { count: classMethodIndex.size });
|
|
45
48
|
// Собираем переменные и их типы (если известны)
|
|
46
|
-
const variableTypes = await this.buildVariableTypeIndex(graph);
|
|
49
|
+
const variableTypes = await this.buildVariableTypeIndex(graph, logger);
|
|
47
50
|
const startTime = Date.now();
|
|
48
51
|
for (const methodCall of methodCalls) {
|
|
49
52
|
methodCallsProcessed++;
|
|
@@ -62,7 +65,12 @@ export class MethodCallResolver extends Plugin {
|
|
|
62
65
|
if (methodCallsProcessed % 10 === 0) {
|
|
63
66
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
64
67
|
const avgTime = ((Date.now() - startTime) / methodCallsProcessed).toFixed(0);
|
|
65
|
-
|
|
68
|
+
logger.debug('Progress', {
|
|
69
|
+
processed: methodCallsProcessed,
|
|
70
|
+
total: methodCalls.length,
|
|
71
|
+
elapsed: `${elapsed}s`,
|
|
72
|
+
avgTime: `${avgTime}ms/call`
|
|
73
|
+
});
|
|
66
74
|
}
|
|
67
75
|
// Пропускаем внешние методы (console, Array.prototype, etc.)
|
|
68
76
|
if (this.isExternalMethod(methodCall.object, methodCall.method)) {
|
|
@@ -85,6 +93,18 @@ export class MethodCallResolver extends Plugin {
|
|
|
85
93
|
}
|
|
86
94
|
else {
|
|
87
95
|
unresolved++;
|
|
96
|
+
// In strict mode, collect error for later reporting
|
|
97
|
+
if (context.strictMode) {
|
|
98
|
+
const error = new StrictModeError(`Cannot resolve method call: ${methodCall.object}.${methodCall.method}`, 'STRICT_UNRESOLVED_METHOD', {
|
|
99
|
+
filePath: methodCall.file,
|
|
100
|
+
lineNumber: methodCall.line,
|
|
101
|
+
phase: 'ENRICHMENT',
|
|
102
|
+
plugin: 'MethodCallResolver',
|
|
103
|
+
object: methodCall.object,
|
|
104
|
+
method: methodCall.method,
|
|
105
|
+
}, `Check if class "${methodCall.object}" is imported and has method "${methodCall.method}"`);
|
|
106
|
+
errors.push(error);
|
|
107
|
+
}
|
|
88
108
|
}
|
|
89
109
|
}
|
|
90
110
|
const summary = {
|
|
@@ -93,20 +113,20 @@ export class MethodCallResolver extends Plugin {
|
|
|
93
113
|
unresolved,
|
|
94
114
|
classesIndexed: classMethodIndex.size
|
|
95
115
|
};
|
|
96
|
-
|
|
97
|
-
return createSuccessResult({ nodes: 0, edges: edgesCreated }, summary);
|
|
116
|
+
logger.info('Summary', summary);
|
|
117
|
+
return createSuccessResult({ nodes: 0, edges: edgesCreated }, summary, errors);
|
|
98
118
|
}
|
|
99
119
|
/**
|
|
100
120
|
* Строит индекс классов и их методов
|
|
101
121
|
*/
|
|
102
|
-
async buildClassMethodIndex(graph) {
|
|
122
|
+
async buildClassMethodIndex(graph, logger) {
|
|
103
123
|
const index = new Map();
|
|
104
124
|
const startTime = Date.now();
|
|
105
125
|
let classCount = 0;
|
|
106
126
|
for await (const classNode of graph.queryNodes({ nodeType: 'CLASS' })) {
|
|
107
127
|
classCount++;
|
|
108
128
|
if (classCount % 50 === 0) {
|
|
109
|
-
|
|
129
|
+
logger.debug('Indexing classes', { count: classCount });
|
|
110
130
|
}
|
|
111
131
|
const className = classNode.name;
|
|
112
132
|
if (!className)
|
|
@@ -130,13 +150,13 @@ export class MethodCallResolver extends Plugin {
|
|
|
130
150
|
index.set(fileKey, classEntry);
|
|
131
151
|
}
|
|
132
152
|
const totalTime = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
133
|
-
|
|
153
|
+
logger.debug('Indexed class entries', { count: index.size, time: `${totalTime}s` });
|
|
134
154
|
return index;
|
|
135
155
|
}
|
|
136
156
|
/**
|
|
137
157
|
* Строит индекс переменных и их типов (из INSTANCE_OF рёбер)
|
|
138
158
|
*/
|
|
139
|
-
async buildVariableTypeIndex(graph) {
|
|
159
|
+
async buildVariableTypeIndex(graph, logger) {
|
|
140
160
|
const startTime = Date.now();
|
|
141
161
|
const index = new Map();
|
|
142
162
|
for await (const classNode of graph.queryNodes({ nodeType: 'CLASS' })) {
|
|
@@ -148,7 +168,7 @@ export class MethodCallResolver extends Plugin {
|
|
|
148
168
|
}
|
|
149
169
|
}
|
|
150
170
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
151
|
-
|
|
171
|
+
logger.debug('Built variable type index', { entries: index.size, time: `${elapsed}s` });
|
|
152
172
|
return index;
|
|
153
173
|
}
|
|
154
174
|
/**
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MountPointResolver - ENRICHMENT plugin for resolving mount points
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* REG-248 Fix: Now works with ExpressRouteAnalyzer's node types:
|
|
5
|
+
* - express:middleware (with mountPath) instead of MOUNT_POINT
|
|
6
|
+
* - http:route instead of ENDPOINT
|
|
5
7
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
+
* REG-318 Fix: Uses IMPORT nodes to determine which file a router variable
|
|
9
|
+
* comes from, then applies mount prefix ONLY to routes in that specific file.
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
+
* Algorithm:
|
|
12
|
+
* 1. Find express:middleware nodes with mountPath
|
|
13
|
+
* 2. Build import map: for each mount file, map local variable names to resolved file paths
|
|
14
|
+
* 3. For each mount, find the specific imported file matching mount.name
|
|
15
|
+
* 4. Apply mount prefix only to routes in that specific file
|
|
11
16
|
*/
|
|
12
17
|
import { Plugin } from '../Plugin.js';
|
|
13
18
|
import type { PluginMetadata, PluginContext, PluginResult } from '@grafema/types';
|
|
14
19
|
export declare class MountPointResolver extends Plugin {
|
|
15
20
|
get metadata(): PluginMetadata;
|
|
16
|
-
execute(context: PluginContext): Promise<PluginResult>;
|
|
17
|
-
/**
|
|
18
|
-
* Recursively resolve mount point and all nested mount points
|
|
19
|
-
*/
|
|
20
|
-
private resolveMountPoint;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Resolve relative import source to absolute file path.
|
|
23
|
+
* Replicates JSModuleIndexer.resolveModulePath() logic.
|
|
23
24
|
*/
|
|
24
|
-
private
|
|
25
|
+
private resolveImportSource;
|
|
26
|
+
execute(context: PluginContext): Promise<PluginResult>;
|
|
25
27
|
}
|
|
26
28
|
//# sourceMappingURL=MountPointResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MountPointResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MountPointResolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"MountPointResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MountPointResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA6BlF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAED;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0BrB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAwL7D"}
|