@grafema/core 0.2.5-beta → 0.2.7
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 +61 -23
- package/dist/DiscoveryManager.d.ts +59 -0
- package/dist/DiscoveryManager.d.ts.map +1 -0
- package/dist/DiscoveryManager.js +249 -0
- package/dist/DiscoveryManager.js.map +1 -0
- package/dist/GraphInitializer.d.ts +44 -0
- package/dist/GraphInitializer.d.ts.map +1 -0
- package/dist/GraphInitializer.js +121 -0
- package/dist/GraphInitializer.js.map +1 -0
- package/dist/GuaranteeChecker.d.ts +35 -0
- package/dist/GuaranteeChecker.d.ts.map +1 -0
- package/dist/GuaranteeChecker.js +81 -0
- package/dist/GuaranteeChecker.js.map +1 -0
- package/dist/Orchestrator.d.ts +34 -151
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +173 -741
- package/dist/Orchestrator.js.map +1 -1
- package/dist/OrchestratorTypes.d.ts +115 -0
- package/dist/OrchestratorTypes.d.ts.map +1 -0
- package/dist/OrchestratorTypes.js +6 -0
- package/dist/OrchestratorTypes.js.map +1 -0
- package/dist/ParallelAnalysisRunner.d.ts +43 -0
- package/dist/ParallelAnalysisRunner.d.ts.map +1 -0
- package/dist/ParallelAnalysisRunner.js +161 -0
- package/dist/ParallelAnalysisRunner.js.map +1 -0
- package/dist/PhaseRunner.d.ts +94 -0
- package/dist/PhaseRunner.d.ts.map +1 -0
- package/dist/PhaseRunner.js +332 -0
- package/dist/PhaseRunner.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +51 -1
- package/dist/config/ConfigLoader.d.ts.map +1 -1
- package/dist/config/ConfigLoader.js +121 -1
- package/dist/config/ConfigLoader.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/core/ASTWorker.d.ts +2 -0
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +6 -2
- package/dist/core/ASTWorker.js.map +1 -1
- package/dist/core/FileOverview.d.ts +124 -0
- package/dist/core/FileOverview.d.ts.map +1 -0
- package/dist/core/FileOverview.js +257 -0
- package/dist/core/FileOverview.js.map +1 -0
- package/dist/core/GraphFreshnessChecker.d.ts +1 -1
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -1
- package/dist/core/GraphFreshnessChecker.js +7 -5
- package/dist/core/GraphFreshnessChecker.js.map +1 -1
- package/dist/core/GuaranteeManager.d.ts +13 -0
- package/dist/core/GuaranteeManager.d.ts.map +1 -1
- package/dist/core/GuaranteeManager.js +63 -2
- package/dist/core/GuaranteeManager.js.map +1 -1
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -1
- package/dist/core/IncrementalReanalyzer.js +6 -3
- package/dist/core/IncrementalReanalyzer.js.map +1 -1
- package/dist/core/NodeFactory.d.ts +81 -415
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +139 -336
- package/dist/core/NodeFactory.js.map +1 -1
- package/dist/core/ResourceRegistry.d.ts +17 -0
- package/dist/core/ResourceRegistry.d.ts.map +1 -0
- package/dist/core/ResourceRegistry.js +32 -0
- package/dist/core/ResourceRegistry.js.map +1 -0
- package/dist/core/ScopeTracker.d.ts +12 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -1
- package/dist/core/ScopeTracker.js +24 -0
- package/dist/core/ScopeTracker.js.map +1 -1
- package/dist/core/SemanticId.d.ts +69 -0
- package/dist/core/SemanticId.d.ts.map +1 -1
- package/dist/core/SemanticId.js +134 -0
- package/dist/core/SemanticId.js.map +1 -1
- package/dist/core/brandNodeInternal.d.ts +14 -0
- package/dist/core/brandNodeInternal.d.ts.map +1 -0
- package/dist/core/brandNodeInternal.js +4 -0
- package/dist/core/brandNodeInternal.js.map +1 -0
- package/dist/core/buildDependencyGraph.d.ts +36 -0
- package/dist/core/buildDependencyGraph.d.ts.map +1 -0
- package/dist/core/buildDependencyGraph.js +78 -0
- package/dist/core/buildDependencyGraph.js.map +1 -0
- package/dist/core/factories/CoreFactory.d.ts +223 -0
- package/dist/core/factories/CoreFactory.d.ts.map +1 -0
- package/dist/core/factories/CoreFactory.js +127 -0
- package/dist/core/factories/CoreFactory.js.map +1 -0
- package/dist/core/factories/DatabaseFactory.d.ts +29 -0
- package/dist/core/factories/DatabaseFactory.d.ts.map +1 -0
- package/dist/core/factories/DatabaseFactory.js +25 -0
- package/dist/core/factories/DatabaseFactory.js.map +1 -0
- package/dist/core/factories/ExternalFactory.d.ts +11 -0
- package/dist/core/factories/ExternalFactory.d.ts.map +1 -0
- package/dist/core/factories/ExternalFactory.js +16 -0
- package/dist/core/factories/ExternalFactory.js.map +1 -0
- package/dist/core/factories/HttpFactory.d.ts +22 -0
- package/dist/core/factories/HttpFactory.d.ts.map +1 -0
- package/dist/core/factories/HttpFactory.js +32 -0
- package/dist/core/factories/HttpFactory.js.map +1 -0
- package/dist/core/factories/ReactFactory.d.ts +14 -0
- package/dist/core/factories/ReactFactory.d.ts.map +1 -0
- package/dist/core/factories/ReactFactory.js +13 -0
- package/dist/core/factories/ReactFactory.js.map +1 -0
- package/dist/core/factories/RustFactory.d.ts +62 -0
- package/dist/core/factories/RustFactory.d.ts.map +1 -0
- package/dist/core/factories/RustFactory.js +32 -0
- package/dist/core/factories/RustFactory.js.map +1 -0
- package/dist/core/factories/ServiceFactory.d.ts +12 -0
- package/dist/core/factories/ServiceFactory.d.ts.map +1 -0
- package/dist/core/factories/ServiceFactory.js +22 -0
- package/dist/core/factories/ServiceFactory.js.map +1 -0
- package/dist/core/factories/SocketFactory.d.ts +31 -0
- package/dist/core/factories/SocketFactory.d.ts.map +1 -0
- package/dist/core/factories/SocketFactory.js +35 -0
- package/dist/core/factories/SocketFactory.js.map +1 -0
- package/dist/core/nodes/DatabaseNode.d.ts +85 -0
- package/dist/core/nodes/DatabaseNode.d.ts.map +1 -0
- package/dist/core/nodes/DatabaseNode.js +118 -0
- package/dist/core/nodes/DatabaseNode.js.map +1 -0
- package/dist/core/nodes/ExpressMiddlewareNode.d.ts +47 -0
- package/dist/core/nodes/ExpressMiddlewareNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressMiddlewareNode.js +63 -0
- package/dist/core/nodes/ExpressMiddlewareNode.js.map +1 -0
- package/dist/core/nodes/ExpressMountNode.d.ts +44 -0
- package/dist/core/nodes/ExpressMountNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressMountNode.js +61 -0
- package/dist/core/nodes/ExpressMountNode.js.map +1 -0
- package/dist/core/nodes/ExternalApiNode.d.ts +29 -0
- package/dist/core/nodes/ExternalApiNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalApiNode.js +41 -0
- package/dist/core/nodes/ExternalApiNode.js.map +1 -0
- package/dist/core/nodes/ExternalFunctionNode.d.ts +40 -0
- package/dist/core/nodes/ExternalFunctionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalFunctionNode.js +54 -0
- package/dist/core/nodes/ExternalFunctionNode.js.map +1 -0
- package/dist/core/nodes/FetchRequestNode.d.ts +54 -0
- package/dist/core/nodes/FetchRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/FetchRequestNode.js +67 -0
- package/dist/core/nodes/FetchRequestNode.js.map +1 -0
- package/dist/core/nodes/HttpRouteNode.d.ts +58 -0
- package/dist/core/nodes/HttpRouteNode.d.ts.map +1 -0
- package/dist/core/nodes/HttpRouteNode.js +72 -0
- package/dist/core/nodes/HttpRouteNode.js.map +1 -0
- package/dist/core/nodes/NodeKind.d.ts +1 -0
- package/dist/core/nodes/NodeKind.d.ts.map +1 -1
- package/dist/core/nodes/NodeKind.js +1 -0
- package/dist/core/nodes/NodeKind.js.map +1 -1
- package/dist/core/nodes/ReactNode.d.ts +53 -0
- package/dist/core/nodes/ReactNode.d.ts.map +1 -0
- package/dist/core/nodes/ReactNode.js +70 -0
- package/dist/core/nodes/ReactNode.js.map +1 -0
- package/dist/core/nodes/RustCallNode.d.ts +46 -0
- package/dist/core/nodes/RustCallNode.d.ts.map +1 -0
- package/dist/core/nodes/RustCallNode.js +62 -0
- package/dist/core/nodes/RustCallNode.js.map +1 -0
- package/dist/core/nodes/RustFunctionNode.d.ts +58 -0
- package/dist/core/nodes/RustFunctionNode.d.ts.map +1 -0
- package/dist/core/nodes/RustFunctionNode.js +67 -0
- package/dist/core/nodes/RustFunctionNode.js.map +1 -0
- package/dist/core/nodes/RustImplNode.d.ts +35 -0
- package/dist/core/nodes/RustImplNode.d.ts.map +1 -0
- package/dist/core/nodes/RustImplNode.js +55 -0
- package/dist/core/nodes/RustImplNode.js.map +1 -0
- package/dist/core/nodes/RustMethodNode.d.ts +64 -0
- package/dist/core/nodes/RustMethodNode.d.ts.map +1 -0
- package/dist/core/nodes/RustMethodNode.js +76 -0
- package/dist/core/nodes/RustMethodNode.js.map +1 -0
- package/dist/core/nodes/RustModuleNode.d.ts +40 -0
- package/dist/core/nodes/RustModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/RustModuleNode.js +57 -0
- package/dist/core/nodes/RustModuleNode.js.map +1 -0
- package/dist/core/nodes/RustStructNode.d.ts +38 -0
- package/dist/core/nodes/RustStructNode.d.ts.map +1 -0
- package/dist/core/nodes/RustStructNode.js +54 -0
- package/dist/core/nodes/RustStructNode.js.map +1 -0
- package/dist/core/nodes/RustTraitNode.d.ts +40 -0
- package/dist/core/nodes/RustTraitNode.d.ts.map +1 -0
- package/dist/core/nodes/RustTraitNode.js +52 -0
- package/dist/core/nodes/RustTraitNode.js.map +1 -0
- package/dist/core/nodes/ServiceLayerNode.d.ts +85 -0
- package/dist/core/nodes/ServiceLayerNode.d.ts.map +1 -0
- package/dist/core/nodes/ServiceLayerNode.js +122 -0
- package/dist/core/nodes/ServiceLayerNode.js.map +1 -0
- package/dist/core/nodes/SocketIONode.d.ts +71 -0
- package/dist/core/nodes/SocketIONode.d.ts.map +1 -0
- package/dist/core/nodes/SocketIONode.js +111 -0
- package/dist/core/nodes/SocketIONode.js.map +1 -0
- package/dist/core/nodes/SocketNode.d.ts +87 -0
- package/dist/core/nodes/SocketNode.d.ts.map +1 -0
- package/dist/core/nodes/SocketNode.js +124 -0
- package/dist/core/nodes/SocketNode.js.map +1 -0
- package/dist/core/nodes/TypeNode.d.ts +26 -1
- package/dist/core/nodes/TypeNode.d.ts.map +1 -1
- package/dist/core/nodes/TypeNode.js +21 -3
- package/dist/core/nodes/TypeNode.js.map +1 -1
- package/dist/core/nodes/TypeParameterNode.d.ts +44 -0
- package/dist/core/nodes/TypeParameterNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeParameterNode.js +64 -0
- package/dist/core/nodes/TypeParameterNode.js.map +1 -0
- package/dist/core/nodes/index.d.ts +19 -0
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +26 -0
- package/dist/core/nodes/index.js.map +1 -1
- package/dist/index.d.ts +33 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/plugins/InfraAnalyzer.d.ts +110 -0
- package/dist/plugins/InfraAnalyzer.d.ts.map +1 -0
- package/dist/plugins/InfraAnalyzer.js +170 -0
- package/dist/plugins/InfraAnalyzer.js.map +1 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +18 -15
- package/dist/plugins/analysis/DatabaseAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +27 -26
- package/dist/plugins/analysis/ExpressAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +5 -3
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +36 -39
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +23 -39
- package/dist/plugins/analysis/FetchAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +3 -2
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +23 -85
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +351 -1887
- package/dist/plugins/analysis/JSASTAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/NestJSRouteAnalyzer.d.ts +28 -0
- package/dist/plugins/analysis/NestJSRouteAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/NestJSRouteAnalyzer.js +196 -0
- package/dist/plugins/analysis/NestJSRouteAnalyzer.js.map +1 -0
- package/dist/plugins/analysis/ReactAnalyzer.d.ts +1 -61
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +24 -915
- package/dist/plugins/analysis/ReactAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +31 -66
- package/dist/plugins/analysis/RustAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +13 -6
- package/dist/plugins/analysis/SQLiteAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +10 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/SocketAnalyzer.d.ts +81 -0
- package/dist/plugins/analysis/SocketAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/SocketAnalyzer.js +475 -0
- package/dist/plugins/analysis/SocketAnalyzer.js.map +1 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +13 -18
- package/dist/plugins/analysis/SocketIOAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +8 -5
- package/dist/plugins/analysis/SystemDbAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ast/CollisionResolver.d.ts +65 -0
- package/dist/plugins/analysis/ast/CollisionResolver.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/CollisionResolver.js +106 -0
- package/dist/plugins/analysis/ast/CollisionResolver.js.map +1 -0
- package/dist/plugins/analysis/ast/FunctionBodyContext.d.ts +124 -0
- package/dist/plugins/analysis/ast/FunctionBodyContext.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/FunctionBodyContext.js +151 -0
- package/dist/plugins/analysis/ast/FunctionBodyContext.js.map +1 -0
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +26 -261
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +251 -2494
- package/dist/plugins/analysis/ast/GraphBuilder.js.map +1 -1
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +42 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/IdGenerator.js +61 -1
- package/dist/plugins/analysis/ast/IdGenerator.js.map +1 -1
- package/dist/plugins/analysis/ast/builders/AssignmentBuilder.d.ts +15 -0
- package/dist/plugins/analysis/ast/builders/AssignmentBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/AssignmentBuilder.js +274 -0
- package/dist/plugins/analysis/ast/builders/AssignmentBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/CallFlowBuilder.d.ts +22 -0
- package/dist/plugins/analysis/ast/builders/CallFlowBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/CallFlowBuilder.js +178 -0
- package/dist/plugins/analysis/ast/builders/CallFlowBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/ControlFlowBuilder.d.ts +76 -0
- package/dist/plugins/analysis/ast/builders/ControlFlowBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/ControlFlowBuilder.js +387 -0
- package/dist/plugins/analysis/ast/builders/ControlFlowBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/CoreBuilder.d.ts +38 -0
- package/dist/plugins/analysis/ast/builders/CoreBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/CoreBuilder.js +240 -0
- package/dist/plugins/analysis/ast/builders/CoreBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.d.ts +53 -0
- package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.js +355 -0
- package/dist/plugins/analysis/ast/builders/ModuleRuntimeBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/MutationBuilder.d.ts +46 -0
- package/dist/plugins/analysis/ast/builders/MutationBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/MutationBuilder.js +264 -0
- package/dist/plugins/analysis/ast/builders/MutationBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/ReturnBuilder.d.ts +23 -0
- package/dist/plugins/analysis/ast/builders/ReturnBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/ReturnBuilder.js +206 -0
- package/dist/plugins/analysis/ast/builders/ReturnBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/TypeSystemBuilder.d.ts +64 -0
- package/dist/plugins/analysis/ast/builders/TypeSystemBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/TypeSystemBuilder.js +370 -0
- package/dist/plugins/analysis/ast/builders/TypeSystemBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/UpdateExpressionBuilder.d.ts +46 -0
- package/dist/plugins/analysis/ast/builders/UpdateExpressionBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/UpdateExpressionBuilder.js +191 -0
- package/dist/plugins/analysis/ast/builders/UpdateExpressionBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/YieldBuilder.d.ts +30 -0
- package/dist/plugins/analysis/ast/builders/YieldBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/YieldBuilder.js +214 -0
- package/dist/plugins/analysis/ast/builders/YieldBuilder.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/index.d.ts +12 -0
- package/dist/plugins/analysis/ast/builders/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/index.js +11 -0
- package/dist/plugins/analysis/ast/builders/index.js.map +1 -0
- package/dist/plugins/analysis/ast/builders/types.d.ts +30 -0
- package/dist/plugins/analysis/ast/builders/types.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/builders/types.js +8 -0
- package/dist/plugins/analysis/ast/builders/types.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/AnalyzerDelegate.d.ts +50 -0
- package/dist/plugins/analysis/ast/handlers/AnalyzerDelegate.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/AnalyzerDelegate.js +2 -0
- package/dist/plugins/analysis/ast/handlers/AnalyzerDelegate.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/BranchHandler.d.ts +18 -0
- package/dist/plugins/analysis/ast/handlers/BranchHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/BranchHandler.js +244 -0
- package/dist/plugins/analysis/ast/handlers/BranchHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/CallExpressionHandler.d.ts +7 -0
- package/dist/plugins/analysis/ast/handlers/CallExpressionHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/CallExpressionHandler.js +295 -0
- package/dist/plugins/analysis/ast/handlers/CallExpressionHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/FunctionBodyHandler.d.ts +22 -0
- package/dist/plugins/analysis/ast/handlers/FunctionBodyHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/FunctionBodyHandler.js +9 -0
- package/dist/plugins/analysis/ast/handlers/FunctionBodyHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/LoopHandler.d.ts +13 -0
- package/dist/plugins/analysis/ast/handlers/LoopHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/LoopHandler.js +207 -0
- package/dist/plugins/analysis/ast/handlers/LoopHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/NestedFunctionHandler.d.ts +13 -0
- package/dist/plugins/analysis/ast/handlers/NestedFunctionHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/NestedFunctionHandler.js +174 -0
- package/dist/plugins/analysis/ast/handlers/NestedFunctionHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.d.ts +12 -0
- package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.js +135 -0
- package/dist/plugins/analysis/ast/handlers/NewExpressionHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/PropertyAccessHandler.d.ts +13 -0
- package/dist/plugins/analysis/ast/handlers/PropertyAccessHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/PropertyAccessHandler.js +71 -0
- package/dist/plugins/analysis/ast/handlers/PropertyAccessHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/ReturnYieldHandler.d.ts +12 -0
- package/dist/plugins/analysis/ast/handlers/ReturnYieldHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/ReturnYieldHandler.js +135 -0
- package/dist/plugins/analysis/ast/handlers/ReturnYieldHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/ThrowHandler.d.ts +12 -0
- package/dist/plugins/analysis/ast/handlers/ThrowHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/ThrowHandler.js +82 -0
- package/dist/plugins/analysis/ast/handlers/ThrowHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/TryCatchHandler.d.ts +14 -0
- package/dist/plugins/analysis/ast/handlers/TryCatchHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/TryCatchHandler.js +220 -0
- package/dist/plugins/analysis/ast/handlers/TryCatchHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/VariableHandler.d.ts +12 -0
- package/dist/plugins/analysis/ast/handlers/VariableHandler.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/VariableHandler.js +57 -0
- package/dist/plugins/analysis/ast/handlers/VariableHandler.js.map +1 -0
- package/dist/plugins/analysis/ast/handlers/index.d.ts +13 -0
- package/dist/plugins/analysis/ast/handlers/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/handlers/index.js +12 -0
- package/dist/plugins/analysis/ast/handlers/index.js.map +1 -0
- package/dist/plugins/analysis/ast/types.d.ts +57 -6
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +5 -4
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +94 -13
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js.map +1 -1
- package/dist/plugins/analysis/ast/utils/extractNamesFromPattern.d.ts +81 -0
- package/dist/plugins/analysis/ast/utils/extractNamesFromPattern.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/extractNamesFromPattern.js +140 -0
- package/dist/plugins/analysis/ast/utils/extractNamesFromPattern.js.map +1 -0
- package/dist/plugins/analysis/ast/utils/getExpressionValue.d.ts +22 -0
- package/dist/plugins/analysis/ast/utils/getExpressionValue.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/getExpressionValue.js +35 -0
- package/dist/plugins/analysis/ast/utils/getExpressionValue.js.map +1 -0
- package/dist/plugins/analysis/ast/utils/getMemberExpressionName.d.ts +25 -0
- package/dist/plugins/analysis/ast/utils/getMemberExpressionName.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/getMemberExpressionName.js +21 -0
- package/dist/plugins/analysis/ast/utils/getMemberExpressionName.js.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +2 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/index.js +2 -0
- package/dist/plugins/analysis/ast/utils/index.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ArgumentExtractor.d.ts +23 -0
- package/dist/plugins/analysis/ast/visitors/ArgumentExtractor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ArgumentExtractor.js +241 -0
- package/dist/plugins/analysis/ast/visitors/ArgumentExtractor.js.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ArrayElementExtractor.d.ts +20 -0
- package/dist/plugins/analysis/ast/visitors/ArrayElementExtractor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ArrayElementExtractor.js +110 -0
- package/dist/plugins/analysis/ast/visitors/ArrayElementExtractor.js.map +1 -0
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +15 -142
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +304 -937
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +26 -11
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +21 -6
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/MutationDetector.d.ts +25 -0
- package/dist/plugins/analysis/ast/visitors/MutationDetector.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/MutationDetector.js +181 -0
- package/dist/plugins/analysis/ast/visitors/MutationDetector.js.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ObjectPropertyExtractor.d.ts +20 -0
- package/dist/plugins/analysis/ast/visitors/ObjectPropertyExtractor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ObjectPropertyExtractor.js +155 -0
- package/dist/plugins/analysis/ast/visitors/ObjectPropertyExtractor.js.map +1 -0
- package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.d.ts +9 -1
- package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.js +51 -3
- package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +20 -0
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +188 -12
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +6 -4
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js.map +1 -1
- package/dist/plugins/analysis/ast/visitors/call-expression-helpers.d.ts +19 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-helpers.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-helpers.js +57 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-helpers.js.map +1 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-types.d.ts +168 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-types.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-types.js +7 -0
- package/dist/plugins/analysis/ast/visitors/call-expression-types.js.map +1 -0
- package/dist/plugins/analysis/react-internal/browser-api.d.ts +20 -0
- package/dist/plugins/analysis/react-internal/browser-api.d.ts.map +1 -0
- package/dist/plugins/analysis/react-internal/browser-api.js +140 -0
- package/dist/plugins/analysis/react-internal/browser-api.js.map +1 -0
- package/dist/plugins/analysis/react-internal/hooks.d.ts +31 -0
- package/dist/plugins/analysis/react-internal/hooks.d.ts.map +1 -0
- package/dist/plugins/analysis/react-internal/hooks.js +465 -0
- package/dist/plugins/analysis/react-internal/hooks.js.map +1 -0
- package/dist/plugins/analysis/react-internal/jsx.d.ts +43 -0
- package/dist/plugins/analysis/react-internal/jsx.d.ts.map +1 -0
- package/dist/plugins/analysis/react-internal/jsx.js +231 -0
- package/dist/plugins/analysis/react-internal/jsx.js.map +1 -0
- package/dist/plugins/analysis/react-internal/types.d.ts +116 -0
- package/dist/plugins/analysis/react-internal/types.d.ts.map +1 -0
- package/dist/plugins/analysis/react-internal/types.js +83 -0
- package/dist/plugins/analysis/react-internal/types.js.map +1 -0
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +6 -13
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +3 -1
- package/dist/plugins/enrichment/AliasTracker.js.map +1 -1
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ArgumentParameterLinker.js +3 -1
- package/dist/plugins/enrichment/ArgumentParameterLinker.js.map +1 -1
- package/dist/plugins/enrichment/CallbackCallResolver.d.ts +42 -0
- package/dist/plugins/enrichment/CallbackCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/CallbackCallResolver.js +311 -0
- package/dist/plugins/enrichment/CallbackCallResolver.js.map +1 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js +3 -1
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js.map +1 -1
- package/dist/plugins/enrichment/ConfigRoutingMapBuilder.d.ts +17 -0
- package/dist/plugins/enrichment/ConfigRoutingMapBuilder.d.ts.map +1 -0
- package/dist/plugins/enrichment/ConfigRoutingMapBuilder.js +55 -0
- package/dist/plugins/enrichment/ConfigRoutingMapBuilder.js.map +1 -0
- package/dist/plugins/enrichment/ExpressHandlerLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ExpressHandlerLinker.js +3 -1
- package/dist/plugins/enrichment/ExpressHandlerLinker.js.map +1 -1
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/ExternalCallResolver.js +5 -8
- package/dist/plugins/enrichment/ExternalCallResolver.js.map +1 -1
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/FunctionCallResolver.js +6 -9
- package/dist/plugins/enrichment/FunctionCallResolver.js.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +3 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +5 -3
- package/dist/plugins/enrichment/ImportExportLinker.js.map +1 -1
- package/dist/plugins/enrichment/InstanceOfResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/InstanceOfResolver.js +3 -1
- package/dist/plugins/enrichment/InstanceOfResolver.js.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.d.ts +17 -68
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +42 -517
- package/dist/plugins/enrichment/MethodCallResolver.js.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +9 -2
- package/dist/plugins/enrichment/MountPointResolver.js.map +1 -1
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +7 -16
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +6 -2
- package/dist/plugins/enrichment/PrefixEvaluator.js.map +1 -1
- package/dist/plugins/enrichment/RejectionPropagationEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RejectionPropagationEnricher.js +3 -1
- package/dist/plugins/enrichment/RejectionPropagationEnricher.js.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +3 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js.map +1 -1
- package/dist/plugins/enrichment/ServiceConnectionEnricher.d.ts +76 -0
- package/dist/plugins/enrichment/ServiceConnectionEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/ServiceConnectionEnricher.js +355 -0
- package/dist/plugins/enrichment/ServiceConnectionEnricher.js.map +1 -0
- package/dist/plugins/enrichment/SocketConnectionEnricher.d.ts +42 -0
- package/dist/plugins/enrichment/SocketConnectionEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/SocketConnectionEnricher.js +166 -0
- package/dist/plugins/enrichment/SocketConnectionEnricher.js.map +1 -0
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +3 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js.map +1 -1
- package/dist/plugins/enrichment/method-call/MethodCallData.d.ts +68 -0
- package/dist/plugins/enrichment/method-call/MethodCallData.d.ts.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallData.js +227 -0
- package/dist/plugins/enrichment/method-call/MethodCallData.js.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallDetectors.d.ts +21 -0
- package/dist/plugins/enrichment/method-call/MethodCallDetectors.d.ts.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallDetectors.js +52 -0
- package/dist/plugins/enrichment/method-call/MethodCallDetectors.js.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallErrorAnalysis.d.ts +22 -0
- package/dist/plugins/enrichment/method-call/MethodCallErrorAnalysis.d.ts.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallErrorAnalysis.js +105 -0
- package/dist/plugins/enrichment/method-call/MethodCallErrorAnalysis.js.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.d.ts +19 -0
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.d.ts.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.js +63 -0
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.js.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallResolution.d.ts +30 -0
- package/dist/plugins/enrichment/method-call/MethodCallResolution.d.ts.map +1 -0
- package/dist/plugins/enrichment/method-call/MethodCallResolution.js +138 -0
- package/dist/plugins/enrichment/method-call/MethodCallResolution.js.map +1 -0
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +2 -8
- package/dist/plugins/indexing/IncrementalModuleIndexer.js.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +13 -20
- package/dist/plugins/indexing/JSModuleIndexer.js.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +4 -8
- package/dist/plugins/indexing/RustModuleIndexer.js.map +1 -1
- package/dist/plugins/validation/AwaitInLoopValidator.d.ts +24 -0
- package/dist/plugins/validation/AwaitInLoopValidator.d.ts.map +1 -0
- package/dist/plugins/validation/AwaitInLoopValidator.js +69 -0
- package/dist/plugins/validation/AwaitInLoopValidator.js.map +1 -0
- package/dist/plugins/validation/PackageCoverageValidator.d.ts +33 -0
- package/dist/plugins/validation/PackageCoverageValidator.d.ts.map +1 -0
- package/dist/plugins/validation/PackageCoverageValidator.js +149 -0
- package/dist/plugins/validation/PackageCoverageValidator.js.map +1 -0
- package/dist/plugins/validation/UnconnectedRouteValidator.d.ts +18 -0
- package/dist/plugins/validation/UnconnectedRouteValidator.d.ts.map +1 -0
- package/dist/plugins/validation/UnconnectedRouteValidator.js +68 -0
- package/dist/plugins/validation/UnconnectedRouteValidator.js.map +1 -0
- package/dist/queries/NodeContext.d.ts +81 -0
- package/dist/queries/NodeContext.d.ts.map +1 -0
- package/dist/queries/NodeContext.js +193 -0
- package/dist/queries/NodeContext.js.map +1 -0
- package/dist/queries/findCallsInFunction.d.ts.map +1 -1
- package/dist/queries/findCallsInFunction.js +10 -2
- package/dist/queries/findCallsInFunction.js.map +1 -1
- package/dist/queries/findContainingFunction.d.ts +3 -2
- package/dist/queries/findContainingFunction.d.ts.map +1 -1
- package/dist/queries/findContainingFunction.js +13 -3
- package/dist/queries/findContainingFunction.js.map +1 -1
- package/dist/queries/index.d.ts +2 -0
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +1 -0
- package/dist/queries/index.js.map +1 -1
- package/dist/resources/InfraResourceMapImpl.d.ts +31 -0
- package/dist/resources/InfraResourceMapImpl.d.ts.map +1 -0
- package/dist/resources/InfraResourceMapImpl.js +110 -0
- package/dist/resources/InfraResourceMapImpl.js.map +1 -0
- package/dist/resources/RoutingMapImpl.d.ts +33 -0
- package/dist/resources/RoutingMapImpl.d.ts.map +1 -0
- package/dist/resources/RoutingMapImpl.js +115 -0
- package/dist/resources/RoutingMapImpl.js.map +1 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +35 -6
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +102 -70
- package/dist/storage/backends/RFDBServerBackend.js.map +1 -1
- package/dist/utils/findRfdbBinary.d.ts +3 -2
- package/dist/utils/findRfdbBinary.d.ts.map +1 -1
- package/dist/utils/findRfdbBinary.js +22 -7
- package/dist/utils/findRfdbBinary.js.map +1 -1
- package/dist/utils/moduleResolution.d.ts.map +1 -1
- package/dist/utils/moduleResolution.js +26 -1
- package/dist/utils/moduleResolution.js.map +1 -1
- package/dist/utils/resolveNodeFile.d.ts +13 -0
- package/dist/utils/resolveNodeFile.d.ts.map +1 -0
- package/dist/utils/resolveNodeFile.js +18 -0
- package/dist/utils/resolveNodeFile.js.map +1 -0
- package/dist/version.d.ts +11 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +26 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -3
- package/src/DiscoveryManager.ts +279 -0
- package/src/GraphInitializer.ts +131 -0
- package/src/GuaranteeChecker.ts +90 -0
- package/src/Orchestrator.ts +222 -963
- package/src/OrchestratorTypes.ts +122 -0
- package/src/ParallelAnalysisRunner.ts +188 -0
- package/src/PhaseRunner.ts +450 -0
- package/src/config/ConfigLoader.ts +176 -2
- package/src/config/index.ts +2 -0
- package/src/core/ASTWorker.ts +9 -2
- package/src/core/FileOverview.ts +374 -0
- package/src/core/GraphFreshnessChecker.ts +7 -5
- package/src/core/GuaranteeManager.ts +70 -2
- package/src/core/IncrementalReanalyzer.ts +6 -3
- package/src/core/NodeFactory.ts +173 -652
- package/src/core/ResourceRegistry.ts +39 -0
- package/src/core/ScopeTracker.ts +23 -0
- package/src/core/SemanticId.ts +183 -0
- package/src/core/brandNodeInternal.ts +16 -0
- package/src/core/buildDependencyGraph.ts +98 -0
- package/src/core/factories/CoreFactory.ts +489 -0
- package/src/core/factories/DatabaseFactory.ts +63 -0
- package/src/core/factories/ExternalFactory.ts +23 -0
- package/src/core/factories/HttpFactory.ts +57 -0
- package/src/core/factories/ReactFactory.ts +15 -0
- package/src/core/factories/RustFactory.ts +128 -0
- package/src/core/factories/ServiceFactory.ts +27 -0
- package/src/core/factories/SocketFactory.ts +94 -0
- package/src/core/nodes/DatabaseNode.ts +175 -0
- package/src/core/nodes/ExpressMiddlewareNode.ts +98 -0
- package/src/core/nodes/ExpressMountNode.ts +94 -0
- package/src/core/nodes/ExternalApiNode.ts +53 -0
- package/src/core/nodes/ExternalFunctionNode.ts +77 -0
- package/src/core/nodes/FetchRequestNode.ts +105 -0
- package/src/core/nodes/HttpRouteNode.ts +113 -0
- package/src/core/nodes/NodeKind.ts +1 -0
- package/src/core/nodes/ReactNode.ts +78 -0
- package/src/core/nodes/RustCallNode.ts +96 -0
- package/src/core/nodes/RustFunctionNode.ts +112 -0
- package/src/core/nodes/RustImplNode.ts +78 -0
- package/src/core/nodes/RustMethodNode.ts +125 -0
- package/src/core/nodes/RustModuleNode.ts +84 -0
- package/src/core/nodes/RustStructNode.ts +80 -0
- package/src/core/nodes/RustTraitNode.ts +82 -0
- package/src/core/nodes/ServiceLayerNode.ts +183 -0
- package/src/core/nodes/SocketIONode.ts +177 -0
- package/src/core/nodes/SocketNode.ts +206 -0
- package/src/core/nodes/TypeNode.ts +46 -3
- package/src/core/nodes/TypeParameterNode.ts +91 -0
- package/src/core/nodes/index.ts +57 -0
- package/src/index.ts +60 -4
- package/src/plugins/InfraAnalyzer.ts +208 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +27 -17
- package/src/plugins/analysis/ExpressAnalyzer.ts +51 -38
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +15 -12
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +56 -56
- package/src/plugins/analysis/FetchAnalyzer.ts +42 -52
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +3 -2
- package/src/plugins/analysis/JSASTAnalyzer.ts +391 -2304
- package/src/plugins/analysis/NestJSRouteAnalyzer.ts +241 -0
- package/src/plugins/analysis/ReactAnalyzer.ts +33 -1085
- package/src/plugins/analysis/RustAnalyzer.ts +112 -116
- package/src/plugins/analysis/SQLiteAnalyzer.ts +23 -9
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +32 -10
- package/src/plugins/analysis/SocketAnalyzer.ts +601 -0
- package/src/plugins/analysis/SocketIOAnalyzer.ts +25 -34
- package/src/plugins/analysis/SystemDbAnalyzer.ts +15 -12
- package/src/plugins/analysis/ast/CollisionResolver.ts +137 -0
- package/src/plugins/analysis/ast/FunctionBodyContext.ts +291 -0
- package/src/plugins/analysis/ast/GraphBuilder.ts +274 -3180
- package/src/plugins/analysis/ast/IdGenerator.ts +81 -1
- package/src/plugins/analysis/ast/builders/AssignmentBuilder.ts +407 -0
- package/src/plugins/analysis/ast/builders/CallFlowBuilder.ts +255 -0
- package/src/plugins/analysis/ast/builders/ControlFlowBuilder.ts +470 -0
- package/src/plugins/analysis/ast/builders/CoreBuilder.ts +306 -0
- package/src/plugins/analysis/ast/builders/ModuleRuntimeBuilder.ts +452 -0
- package/src/plugins/analysis/ast/builders/MutationBuilder.ts +372 -0
- package/src/plugins/analysis/ast/builders/ReturnBuilder.ts +279 -0
- package/src/plugins/analysis/ast/builders/TypeSystemBuilder.ts +475 -0
- package/src/plugins/analysis/ast/builders/UpdateExpressionBuilder.ts +262 -0
- package/src/plugins/analysis/ast/builders/YieldBuilder.ts +287 -0
- package/src/plugins/analysis/ast/builders/index.ts +11 -0
- package/src/plugins/analysis/ast/builders/types.ts +65 -0
- package/src/plugins/analysis/ast/handlers/AnalyzerDelegate.ts +183 -0
- package/src/plugins/analysis/ast/handlers/BranchHandler.ts +313 -0
- package/src/plugins/analysis/ast/handlers/CallExpressionHandler.ts +347 -0
- package/src/plugins/analysis/ast/handlers/FunctionBodyHandler.ts +24 -0
- package/src/plugins/analysis/ast/handlers/LoopHandler.ts +240 -0
- package/src/plugins/analysis/ast/handlers/NestedFunctionHandler.ts +201 -0
- package/src/plugins/analysis/ast/handlers/NewExpressionHandler.ts +159 -0
- package/src/plugins/analysis/ast/handlers/PropertyAccessHandler.ts +112 -0
- package/src/plugins/analysis/ast/handlers/ReturnYieldHandler.ts +166 -0
- package/src/plugins/analysis/ast/handlers/ThrowHandler.ts +101 -0
- package/src/plugins/analysis/ast/handlers/TryCatchHandler.ts +262 -0
- package/src/plugins/analysis/ast/handlers/VariableHandler.ts +93 -0
- package/src/plugins/analysis/ast/handlers/index.ts +12 -0
- package/src/plugins/analysis/ast/types.ts +68 -9
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +118 -13
- package/src/plugins/analysis/ast/utils/extractNamesFromPattern.ts +166 -0
- package/src/plugins/analysis/ast/utils/getExpressionValue.ts +34 -0
- package/src/plugins/analysis/ast/utils/getMemberExpressionName.ts +33 -0
- package/src/plugins/analysis/ast/utils/index.ts +2 -0
- package/src/plugins/analysis/ast/visitors/ArgumentExtractor.ts +307 -0
- package/src/plugins/analysis/ast/visitors/ArrayElementExtractor.ts +172 -0
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +425 -1374
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +43 -12
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +39 -8
- package/src/plugins/analysis/ast/visitors/MutationDetector.ts +211 -0
- package/src/plugins/analysis/ast/visitors/ObjectPropertyExtractor.ts +217 -0
- package/src/plugins/analysis/ast/visitors/PropertyAccessVisitor.ts +69 -4
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +232 -13
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +8 -11
- package/src/plugins/analysis/ast/visitors/call-expression-helpers.ts +65 -0
- package/src/plugins/analysis/ast/visitors/call-expression-types.ts +179 -0
- package/src/plugins/analysis/react-internal/browser-api.ts +168 -0
- package/src/plugins/analysis/react-internal/hooks.ts +517 -0
- package/src/plugins/analysis/react-internal/jsx.ts +279 -0
- package/src/plugins/analysis/react-internal/types.ts +183 -0
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +6 -14
- package/src/plugins/enrichment/AliasTracker.ts +3 -1
- package/src/plugins/enrichment/ArgumentParameterLinker.ts +3 -1
- package/src/plugins/enrichment/CallbackCallResolver.ts +398 -0
- package/src/plugins/enrichment/ClosureCaptureEnricher.ts +3 -1
- package/src/plugins/enrichment/ConfigRoutingMapBuilder.ts +67 -0
- package/src/plugins/enrichment/ExpressHandlerLinker.ts +3 -1
- package/src/plugins/enrichment/ExternalCallResolver.ts +5 -8
- package/src/plugins/enrichment/FunctionCallResolver.ts +6 -9
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +3 -1
- package/src/plugins/enrichment/ImportExportLinker.ts +5 -3
- package/src/plugins/enrichment/InstanceOfResolver.ts +3 -1
- package/src/plugins/enrichment/MethodCallResolver.ts +48 -659
- package/src/plugins/enrichment/MountPointResolver.ts +9 -2
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +13 -18
- package/src/plugins/enrichment/PrefixEvaluator.ts +6 -2
- package/src/plugins/enrichment/RejectionPropagationEnricher.ts +3 -1
- package/src/plugins/enrichment/RustFFIEnricher.ts +3 -1
- package/src/plugins/enrichment/ServiceConnectionEnricher.ts +472 -0
- package/src/plugins/enrichment/SocketConnectionEnricher.ts +228 -0
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +3 -1
- package/src/plugins/enrichment/method-call/MethodCallData.ts +299 -0
- package/src/plugins/enrichment/method-call/MethodCallDetectors.ts +70 -0
- package/src/plugins/enrichment/method-call/MethodCallErrorAnalysis.ts +131 -0
- package/src/plugins/enrichment/method-call/MethodCallIndexers.ts +83 -0
- package/src/plugins/enrichment/method-call/MethodCallResolution.ts +181 -0
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +5 -10
- package/src/plugins/indexing/JSModuleIndexer.ts +17 -21
- package/src/plugins/indexing/RustModuleIndexer.ts +14 -13
- package/src/plugins/validation/AwaitInLoopValidator.ts +91 -0
- package/src/plugins/validation/PackageCoverageValidator.ts +181 -0
- package/src/plugins/validation/UnconnectedRouteValidator.ts +93 -0
- package/src/queries/NodeContext.ts +277 -0
- package/src/queries/findCallsInFunction.ts +11 -2
- package/src/queries/findContainingFunction.ts +14 -3
- package/src/queries/index.ts +13 -0
- package/src/resources/InfraResourceMapImpl.ts +119 -0
- package/src/resources/RoutingMapImpl.ts +133 -0
- package/src/storage/backends/RFDBServerBackend.ts +106 -77
- package/src/utils/findRfdbBinary.ts +22 -7
- package/src/utils/moduleResolution.ts +28 -1
- package/src/utils/resolveNodeFile.ts +18 -0
- package/src/version.ts +28 -0
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CallbackCallResolver - creates CALLS edges for functions passed as callbacks
|
|
3
|
+
*
|
|
4
|
+
* This enrichment plugin runs AFTER FunctionCallResolver (priority 80) and
|
|
5
|
+
* ImportExportLinker (priority 90) to resolve imported function callbacks.
|
|
6
|
+
*
|
|
7
|
+
* Handles two categories of callback resolution:
|
|
8
|
+
*
|
|
9
|
+
* 1. **Whitelist-based (cross-file):** Known callback-invoking functions/methods
|
|
10
|
+
* (forEach, map, setTimeout, etc.) with imported function arguments.
|
|
11
|
+
* CALL/METHOD_CALL → PASSES_ARGUMENT → IMPORT → follow chain → CALLS
|
|
12
|
+
*
|
|
13
|
+
* 2. **User-defined HOFs (REG-401):** Functions with `invokesParamIndexes` metadata
|
|
14
|
+
* (detected during analysis when a function calls one of its parameters).
|
|
15
|
+
* For each HOF: find call sites → check PASSES_ARGUMENT → if argIndex matches → CALLS
|
|
16
|
+
*
|
|
17
|
+
* CREATES EDGES:
|
|
18
|
+
* - CALL/METHOD_CALL -> CALLS -> FUNCTION (for imported callback functions)
|
|
19
|
+
* - CALL -> CALLS -> FUNCTION (for user-defined HOF callback arguments)
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { Plugin, createSuccessResult } from '../Plugin.js';
|
|
23
|
+
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
24
|
+
import type { BaseNodeRecord } from '@grafema/types';
|
|
25
|
+
|
|
26
|
+
// === CONSTANTS ===
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Functions/methods known to always invoke their callback argument.
|
|
30
|
+
* Only create CALLS edges for these — prevents false positives
|
|
31
|
+
* for store/register patterns where the function is stored, not called.
|
|
32
|
+
*/
|
|
33
|
+
const KNOWN_CALLBACK_INVOKERS = new Set([
|
|
34
|
+
// Array HOFs
|
|
35
|
+
'forEach', 'map', 'filter', 'find', 'findIndex',
|
|
36
|
+
'some', 'every', 'reduce', 'reduceRight', 'flatMap', 'sort',
|
|
37
|
+
// Timers
|
|
38
|
+
'setTimeout', 'setInterval', 'setImmediate', 'queueMicrotask',
|
|
39
|
+
// Promise
|
|
40
|
+
'then', 'catch', 'finally',
|
|
41
|
+
// DOM/Node
|
|
42
|
+
'requestAnimationFrame', 'addEventListener',
|
|
43
|
+
]);
|
|
44
|
+
|
|
45
|
+
// === INTERFACES ===
|
|
46
|
+
|
|
47
|
+
interface CallNode extends BaseNodeRecord {
|
|
48
|
+
object?: string;
|
|
49
|
+
method?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface ImportNode extends BaseNodeRecord {
|
|
53
|
+
source?: string;
|
|
54
|
+
importType?: string;
|
|
55
|
+
imported?: string;
|
|
56
|
+
local?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface ExportNode extends BaseNodeRecord {
|
|
60
|
+
exportType?: string;
|
|
61
|
+
local?: string;
|
|
62
|
+
source?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface FunctionNode extends BaseNodeRecord {
|
|
66
|
+
metadata?: Record<string, unknown>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** A user-defined HOF: function with invokesParamIndexes metadata */
|
|
70
|
+
interface UserDefinedHOF {
|
|
71
|
+
functionId: string;
|
|
72
|
+
invokesParamIndexes: number[];
|
|
73
|
+
/** REG-417: Property paths for destructured param bindings (for OBJECT_LITERAL resolution) */
|
|
74
|
+
invokesParamBindings?: { paramIndex: number; propertyPath: string[] }[];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// === PLUGIN CLASS ===
|
|
78
|
+
|
|
79
|
+
export class CallbackCallResolver extends Plugin {
|
|
80
|
+
get metadata(): PluginMetadata {
|
|
81
|
+
return {
|
|
82
|
+
name: 'CallbackCallResolver',
|
|
83
|
+
phase: 'ENRICHMENT',
|
|
84
|
+
creates: {
|
|
85
|
+
edges: ['CALLS']
|
|
86
|
+
},
|
|
87
|
+
dependencies: ['ImportExportLinker', 'FunctionCallResolver'],
|
|
88
|
+
consumes: ['PASSES_ARGUMENT', 'IMPORTS_FROM'],
|
|
89
|
+
produces: ['CALLS']
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async execute(context: PluginContext): Promise<PluginResult> {
|
|
94
|
+
const { graph } = context;
|
|
95
|
+
const logger = this.log(context);
|
|
96
|
+
|
|
97
|
+
logger.info('Starting callback call resolution');
|
|
98
|
+
const startTime = Date.now();
|
|
99
|
+
|
|
100
|
+
// Step 1: Build Function Index - Map<file, Map<name, FunctionNode>>
|
|
101
|
+
// Also collect user-defined HOFs (functions with invokesParamIndexes metadata)
|
|
102
|
+
const functionIndex = new Map<string, Map<string, FunctionNode>>();
|
|
103
|
+
const userDefinedHOFs: UserDefinedHOF[] = [];
|
|
104
|
+
for await (const node of graph.queryNodes({ nodeType: 'FUNCTION' })) {
|
|
105
|
+
const func = node as FunctionNode;
|
|
106
|
+
if (!func.file || !func.name) continue;
|
|
107
|
+
|
|
108
|
+
if (!functionIndex.has(func.file)) {
|
|
109
|
+
functionIndex.set(func.file, new Map());
|
|
110
|
+
}
|
|
111
|
+
functionIndex.get(func.file)!.set(func.name, func);
|
|
112
|
+
|
|
113
|
+
// REG-401: Collect user-defined HOFs for parameter invocation resolution
|
|
114
|
+
// Check both metadata.invokesParamIndexes and top-level invokesParamIndexes
|
|
115
|
+
// (RFDB backend may flatten metadata fields to top-level)
|
|
116
|
+
const meta = func.metadata;
|
|
117
|
+
const topLevelIndexes = (func as Record<string, unknown>).invokesParamIndexes;
|
|
118
|
+
const invokesIndexes = (meta?.invokesParamIndexes ?? topLevelIndexes) as number[] | undefined;
|
|
119
|
+
if (Array.isArray(invokesIndexes) && invokesIndexes.length > 0) {
|
|
120
|
+
// REG-417: Also collect invokesParamBindings for OBJECT_LITERAL resolution
|
|
121
|
+
const paramBindings = (meta?.invokesParamBindings ?? (func as Record<string, unknown>).invokesParamBindings) as
|
|
122
|
+
{ paramIndex: number; propertyPath: string[] }[] | undefined;
|
|
123
|
+
userDefinedHOFs.push({
|
|
124
|
+
functionId: func.id,
|
|
125
|
+
invokesParamIndexes: invokesIndexes,
|
|
126
|
+
invokesParamBindings: Array.isArray(paramBindings) ? paramBindings : undefined
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
logger.debug('Indexed functions', { files: functionIndex.size, userDefinedHOFs: userDefinedHOFs.length });
|
|
131
|
+
|
|
132
|
+
// Step 2: Build Export Index - Map<file, Map<exportKey, ExportNode>>
|
|
133
|
+
const exportIndex = new Map<string, Map<string, ExportNode>>();
|
|
134
|
+
for await (const node of graph.queryNodes({ nodeType: 'EXPORT' })) {
|
|
135
|
+
const exp = node as ExportNode;
|
|
136
|
+
if (!exp.file) continue;
|
|
137
|
+
|
|
138
|
+
if (!exportIndex.has(exp.file)) {
|
|
139
|
+
exportIndex.set(exp.file, new Map());
|
|
140
|
+
}
|
|
141
|
+
const fileExports = exportIndex.get(exp.file)!;
|
|
142
|
+
const key = exp.exportType === 'default' ? 'default' : `named:${exp.name || exp.local || 'anonymous'}`;
|
|
143
|
+
fileExports.set(key, exp);
|
|
144
|
+
}
|
|
145
|
+
logger.debug('Indexed exports', { files: exportIndex.size });
|
|
146
|
+
|
|
147
|
+
// Step 3: Collect PASSES_ARGUMENT edges pointing to IMPORT nodes
|
|
148
|
+
// These represent imported functions passed as callbacks
|
|
149
|
+
let edgesCreated = 0;
|
|
150
|
+
const skipped = {
|
|
151
|
+
notImport: 0,
|
|
152
|
+
noImportsFrom: 0,
|
|
153
|
+
noExport: 0,
|
|
154
|
+
noFunction: 0,
|
|
155
|
+
notKnownHOF: 0
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// Query all CALL and METHOD_CALL nodes
|
|
159
|
+
const callNodes: CallNode[] = [];
|
|
160
|
+
for await (const node of graph.queryNodes({ nodeType: 'CALL' })) {
|
|
161
|
+
callNodes.push(node as CallNode);
|
|
162
|
+
}
|
|
163
|
+
for await (const node of graph.queryNodes({ nodeType: 'METHOD_CALL' })) {
|
|
164
|
+
callNodes.push(node as CallNode);
|
|
165
|
+
}
|
|
166
|
+
logger.debug('Found call nodes', { count: callNodes.length });
|
|
167
|
+
|
|
168
|
+
for (const callNode of callNodes) {
|
|
169
|
+
// Only process known callback-invoking functions/methods
|
|
170
|
+
// Prevents false positives for store/register patterns
|
|
171
|
+
const callName = callNode.method || callNode.name;
|
|
172
|
+
if (!callName || !KNOWN_CALLBACK_INVOKERS.has(callName)) {
|
|
173
|
+
skipped.notKnownHOF++;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Get PASSES_ARGUMENT edges from this call
|
|
178
|
+
const passesArgEdges = await graph.getOutgoingEdges(callNode.id, ['PASSES_ARGUMENT']);
|
|
179
|
+
|
|
180
|
+
for (const edge of passesArgEdges) {
|
|
181
|
+
const targetNode = await graph.getNode(edge.dst);
|
|
182
|
+
if (!targetNode) continue;
|
|
183
|
+
|
|
184
|
+
// Only process IMPORT targets (imported function callbacks)
|
|
185
|
+
if (targetNode.type !== 'IMPORT') {
|
|
186
|
+
skipped.notImport++;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
const importNode = targetNode as ImportNode;
|
|
191
|
+
|
|
192
|
+
// Follow IMPORTS_FROM edge to find EXPORT
|
|
193
|
+
const importsFromEdges = await graph.getOutgoingEdges(importNode.id, ['IMPORTS_FROM']);
|
|
194
|
+
if (importsFromEdges.length === 0) {
|
|
195
|
+
skipped.noImportsFrom++;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const exportNodeId = importsFromEdges[0].dst;
|
|
200
|
+
const exportNode = await graph.getNode(exportNodeId) as ExportNode | null;
|
|
201
|
+
|
|
202
|
+
if (!exportNode) {
|
|
203
|
+
skipped.noExport++;
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Find target FUNCTION via export's local name
|
|
208
|
+
const targetFile = exportNode.file;
|
|
209
|
+
const targetFunctionName = exportNode.local || exportNode.name;
|
|
210
|
+
|
|
211
|
+
if (!targetFile || !targetFunctionName) {
|
|
212
|
+
skipped.noFunction++;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const fileFunctions = functionIndex.get(targetFile);
|
|
217
|
+
if (!fileFunctions) {
|
|
218
|
+
skipped.noFunction++;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const targetFunction = fileFunctions.get(targetFunctionName);
|
|
223
|
+
if (!targetFunction) {
|
|
224
|
+
skipped.noFunction++;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Create CALLS edge: CALL/METHOD_CALL -> FUNCTION
|
|
229
|
+
await graph.addEdge({
|
|
230
|
+
type: 'CALLS',
|
|
231
|
+
src: callNode.id,
|
|
232
|
+
dst: targetFunction.id,
|
|
233
|
+
metadata: { callType: 'callback' }
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
edgesCreated++;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Step 4 (REG-401): Resolve callback CALLS for user-defined HOFs
|
|
241
|
+
// For each HOF with invokesParamIndexes, find call sites and create callback edges
|
|
242
|
+
let hofEdgesCreated = 0;
|
|
243
|
+
for (const hof of userDefinedHOFs) {
|
|
244
|
+
// Get incoming CALLS edges to find call sites that call this HOF
|
|
245
|
+
const incomingCalls = await graph.getIncomingEdges(hof.functionId, ['CALLS']);
|
|
246
|
+
|
|
247
|
+
for (const callEdge of incomingCalls) {
|
|
248
|
+
const callSiteId = callEdge.src;
|
|
249
|
+
|
|
250
|
+
// Get PASSES_ARGUMENT edges from this call site
|
|
251
|
+
const passesArgEdges = await graph.getOutgoingEdges(callSiteId, ['PASSES_ARGUMENT']);
|
|
252
|
+
|
|
253
|
+
for (const argEdge of passesArgEdges) {
|
|
254
|
+
// Check if this argument's index matches one of the invoked param indexes
|
|
255
|
+
const argIndex = argEdge.metadata?.argIndex;
|
|
256
|
+
if (typeof argIndex !== 'number') continue;
|
|
257
|
+
if (!hof.invokesParamIndexes.includes(argIndex)) continue;
|
|
258
|
+
|
|
259
|
+
// The target of PASSES_ARGUMENT is the argument value node
|
|
260
|
+
const argTargetNode = await graph.getNode(argEdge.dst);
|
|
261
|
+
if (!argTargetNode) continue;
|
|
262
|
+
|
|
263
|
+
// Resolve to a FUNCTION node depending on argument node type
|
|
264
|
+
let targetFunctionId: string | null = null;
|
|
265
|
+
|
|
266
|
+
if (argTargetNode.type === 'FUNCTION') {
|
|
267
|
+
// Direct function reference passed as argument
|
|
268
|
+
targetFunctionId = argTargetNode.id;
|
|
269
|
+
} else if (argTargetNode.type === 'IMPORT') {
|
|
270
|
+
// Imported function reference — follow IMPORTS_FROM → EXPORT → FUNCTION
|
|
271
|
+
targetFunctionId = await this.resolveImportToFunction(
|
|
272
|
+
argTargetNode as ImportNode, graph, functionIndex
|
|
273
|
+
);
|
|
274
|
+
} else if (argTargetNode.type === 'OBJECT_LITERAL' && hof.invokesParamBindings) {
|
|
275
|
+
// REG-417: Destructured param — resolve through OBJECT_LITERAL via HAS_PROPERTY edges
|
|
276
|
+
// Find matching bindings for this argIndex
|
|
277
|
+
const matchingBindings = hof.invokesParamBindings.filter(b => b.paramIndex === argIndex);
|
|
278
|
+
for (const binding of matchingBindings) {
|
|
279
|
+
const resolvedId = await this.resolveObjectLiteralProperty(
|
|
280
|
+
argTargetNode.id, binding.propertyPath, graph, functionIndex
|
|
281
|
+
);
|
|
282
|
+
if (resolvedId) {
|
|
283
|
+
await graph.addEdge({
|
|
284
|
+
type: 'CALLS',
|
|
285
|
+
src: callSiteId,
|
|
286
|
+
dst: resolvedId,
|
|
287
|
+
metadata: { callType: 'callback' }
|
|
288
|
+
});
|
|
289
|
+
hofEdgesCreated++;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
continue; // Already handled edge creation above
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if (targetFunctionId) {
|
|
296
|
+
await graph.addEdge({
|
|
297
|
+
type: 'CALLS',
|
|
298
|
+
src: callSiteId,
|
|
299
|
+
dst: targetFunctionId,
|
|
300
|
+
metadata: { callType: 'callback' }
|
|
301
|
+
});
|
|
302
|
+
hofEdgesCreated++;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
edgesCreated += hofEdgesCreated;
|
|
309
|
+
|
|
310
|
+
const totalTime = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
311
|
+
logger.info('Complete', {
|
|
312
|
+
edgesCreated,
|
|
313
|
+
hofEdgesCreated,
|
|
314
|
+
skipped,
|
|
315
|
+
time: `${totalTime}s`
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
return createSuccessResult(
|
|
319
|
+
{ nodes: 0, edges: edgesCreated },
|
|
320
|
+
{
|
|
321
|
+
callNodesProcessed: callNodes.length,
|
|
322
|
+
edgesCreated,
|
|
323
|
+
hofEdgesCreated,
|
|
324
|
+
skipped,
|
|
325
|
+
timeMs: Date.now() - startTime
|
|
326
|
+
}
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* REG-417: Resolve through OBJECT_LITERAL by following HAS_PROPERTY edges along a property path.
|
|
332
|
+
* For `apply({ fn: handler })` with propertyPath ['fn'], follows:
|
|
333
|
+
* OBJECT_LITERAL → HAS_PROPERTY(propertyName='fn') → target node → resolve to FUNCTION.
|
|
334
|
+
*
|
|
335
|
+
* Returns the target FUNCTION ID, or null if the chain can't be resolved.
|
|
336
|
+
*/
|
|
337
|
+
private async resolveObjectLiteralProperty(
|
|
338
|
+
objectLiteralId: string,
|
|
339
|
+
propertyPath: string[],
|
|
340
|
+
graph: PluginContext['graph'],
|
|
341
|
+
functionIndex: Map<string, Map<string, FunctionNode>>
|
|
342
|
+
): Promise<string | null> {
|
|
343
|
+
let currentNodeId = objectLiteralId;
|
|
344
|
+
|
|
345
|
+
// Walk the property path: each step follows a HAS_PROPERTY edge
|
|
346
|
+
for (const propName of propertyPath) {
|
|
347
|
+
const hasPropertyEdges = await graph.getOutgoingEdges(currentNodeId, ['HAS_PROPERTY']);
|
|
348
|
+
// propertyName may be stored directly on edge or in metadata (backend-dependent)
|
|
349
|
+
const matchingEdge = hasPropertyEdges.find(e =>
|
|
350
|
+
(e as unknown as Record<string, unknown>).propertyName === propName || e.metadata?.propertyName === propName
|
|
351
|
+
);
|
|
352
|
+
if (!matchingEdge) return null;
|
|
353
|
+
|
|
354
|
+
currentNodeId = matchingEdge.dst;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Now currentNodeId should point to the property value node
|
|
358
|
+
const targetNode = await graph.getNode(currentNodeId);
|
|
359
|
+
if (!targetNode) return null;
|
|
360
|
+
|
|
361
|
+
if (targetNode.type === 'FUNCTION') {
|
|
362
|
+
return targetNode.id;
|
|
363
|
+
} else if (targetNode.type === 'IMPORT') {
|
|
364
|
+
return this.resolveImportToFunction(targetNode as ImportNode, graph, functionIndex);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Resolve an IMPORT node to the target FUNCTION ID by following the import chain:
|
|
372
|
+
* IMPORT → IMPORTS_FROM → EXPORT → find FUNCTION by export's local name and file.
|
|
373
|
+
*
|
|
374
|
+
* Returns null if the chain can't be resolved.
|
|
375
|
+
*/
|
|
376
|
+
private async resolveImportToFunction(
|
|
377
|
+
importNode: ImportNode,
|
|
378
|
+
graph: PluginContext['graph'],
|
|
379
|
+
functionIndex: Map<string, Map<string, FunctionNode>>
|
|
380
|
+
): Promise<string | null> {
|
|
381
|
+
const importsFromEdges = await graph.getOutgoingEdges(importNode.id, ['IMPORTS_FROM']);
|
|
382
|
+
if (importsFromEdges.length === 0) return null;
|
|
383
|
+
|
|
384
|
+
const exportNodeId = importsFromEdges[0].dst;
|
|
385
|
+
const exportNode = await graph.getNode(exportNodeId) as ExportNode | null;
|
|
386
|
+
if (!exportNode) return null;
|
|
387
|
+
|
|
388
|
+
const targetFile = exportNode.file;
|
|
389
|
+
const targetFunctionName = exportNode.local || exportNode.name;
|
|
390
|
+
if (!targetFile || !targetFunctionName) return null;
|
|
391
|
+
|
|
392
|
+
const fileFunctions = functionIndex.get(targetFile);
|
|
393
|
+
if (!fileFunctions) return null;
|
|
394
|
+
|
|
395
|
+
const targetFunction = fileFunctions.get(targetFunctionName);
|
|
396
|
+
return targetFunction?.id ?? null;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
@@ -55,7 +55,9 @@ export class ClosureCaptureEnricher extends Plugin {
|
|
|
55
55
|
nodes: [],
|
|
56
56
|
edges: ['CAPTURES']
|
|
57
57
|
},
|
|
58
|
-
dependencies: ['JSASTAnalyzer'] // Requires SCOPE and VARIABLE nodes
|
|
58
|
+
dependencies: ['JSASTAnalyzer'], // Requires SCOPE and VARIABLE nodes
|
|
59
|
+
consumes: [],
|
|
60
|
+
produces: ['CAPTURES']
|
|
59
61
|
};
|
|
60
62
|
}
|
|
61
63
|
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigRoutingMapBuilder -- reads routing rules from config and writes
|
|
3
|
+
* them to the RoutingMap Resource (REG-256).
|
|
4
|
+
*
|
|
5
|
+
* This is the first RoutingMapBuilder. Future builders will read from
|
|
6
|
+
* nginx.conf, k8s manifests, etc. All write to the same RoutingMap.
|
|
7
|
+
*
|
|
8
|
+
* Phase: ENRICHMENT (early, before ServiceConnectionEnricher)
|
|
9
|
+
* Dependencies: none (reads from config, not from graph)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { Plugin, createSuccessResult } from '../Plugin.js';
|
|
13
|
+
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
14
|
+
import type { RoutingRule, OrchestratorConfig } from '@grafema/types';
|
|
15
|
+
import { ROUTING_MAP_RESOURCE_ID } from '@grafema/types';
|
|
16
|
+
import { createRoutingMap } from '../../resources/RoutingMapImpl.js';
|
|
17
|
+
|
|
18
|
+
export class ConfigRoutingMapBuilder extends Plugin {
|
|
19
|
+
get metadata(): PluginMetadata {
|
|
20
|
+
return {
|
|
21
|
+
name: 'ConfigRoutingMapBuilder',
|
|
22
|
+
phase: 'ENRICHMENT',
|
|
23
|
+
creates: { nodes: [], edges: [] },
|
|
24
|
+
dependencies: [],
|
|
25
|
+
consumes: [],
|
|
26
|
+
produces: [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async execute(context: PluginContext): Promise<PluginResult> {
|
|
31
|
+
const logger = this.log(context);
|
|
32
|
+
|
|
33
|
+
// Read routing rules from config
|
|
34
|
+
const config = context.config as OrchestratorConfig & { routing?: RoutingRule[] };
|
|
35
|
+
const routing = config?.routing;
|
|
36
|
+
|
|
37
|
+
if (!routing || routing.length === 0) {
|
|
38
|
+
logger.debug('No routing rules in config');
|
|
39
|
+
return createSuccessResult({ nodes: 0, edges: 0 }, { rulesLoaded: 0 });
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Get ResourceRegistry
|
|
43
|
+
const resources = context.resources;
|
|
44
|
+
if (!resources) {
|
|
45
|
+
logger.warn('ResourceRegistry not available -- skipping routing rules');
|
|
46
|
+
return createSuccessResult({ nodes: 0, edges: 0 }, { rulesLoaded: 0 });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Get or create RoutingMap Resource
|
|
50
|
+
const routingMap = resources.getOrCreate(ROUTING_MAP_RESOURCE_ID, createRoutingMap);
|
|
51
|
+
|
|
52
|
+
// Add rules with source attribution
|
|
53
|
+
const rulesWithSource: RoutingRule[] = routing.map(rule => ({
|
|
54
|
+
...rule,
|
|
55
|
+
source: rule.source ?? 'config',
|
|
56
|
+
}));
|
|
57
|
+
|
|
58
|
+
routingMap.addRules(rulesWithSource);
|
|
59
|
+
|
|
60
|
+
logger.info('Loaded routing rules from config', {
|
|
61
|
+
count: routing.length,
|
|
62
|
+
pairs: [...new Set(routing.map(r => `${r.from} -> ${r.to}`))],
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return createSuccessResult({ nodes: 0, edges: 0 }, { rulesLoaded: routing.length });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -45,7 +45,9 @@ export class ExpressHandlerLinker extends Plugin {
|
|
|
45
45
|
nodes: [],
|
|
46
46
|
edges: ['HANDLED_BY']
|
|
47
47
|
},
|
|
48
|
-
dependencies: ['JSASTAnalyzer', 'ExpressRouteAnalyzer']
|
|
48
|
+
dependencies: ['JSASTAnalyzer', 'ExpressRouteAnalyzer'],
|
|
49
|
+
consumes: [],
|
|
50
|
+
produces: ['HANDLED_BY']
|
|
49
51
|
};
|
|
50
52
|
}
|
|
51
53
|
|
|
@@ -25,6 +25,7 @@ import { Plugin, createSuccessResult } from '../Plugin.js';
|
|
|
25
25
|
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
26
26
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
27
27
|
import { JS_GLOBAL_FUNCTIONS } from '../../data/builtins/index.js';
|
|
28
|
+
import { NodeFactory } from '../../core/NodeFactory.js';
|
|
28
29
|
|
|
29
30
|
// === INTERFACES ===
|
|
30
31
|
|
|
@@ -51,7 +52,9 @@ export class ExternalCallResolver extends Plugin {
|
|
|
51
52
|
nodes: ['EXTERNAL_MODULE'],
|
|
52
53
|
edges: ['CALLS']
|
|
53
54
|
},
|
|
54
|
-
dependencies: ['FunctionCallResolver'] // Requires relative imports to be resolved first
|
|
55
|
+
dependencies: ['FunctionCallResolver'], // Requires relative imports to be resolved first
|
|
56
|
+
consumes: ['CALLS'],
|
|
57
|
+
produces: ['CALLS']
|
|
55
58
|
};
|
|
56
59
|
}
|
|
57
60
|
|
|
@@ -173,13 +176,7 @@ export class ExternalCallResolver extends Plugin {
|
|
|
173
176
|
// Check if node already exists in graph
|
|
174
177
|
const existingNode = await graph.getNode(externalModuleId);
|
|
175
178
|
if (!existingNode) {
|
|
176
|
-
await graph.addNode(
|
|
177
|
-
id: externalModuleId,
|
|
178
|
-
type: 'EXTERNAL_MODULE',
|
|
179
|
-
name: packageName,
|
|
180
|
-
file: '',
|
|
181
|
-
line: 0
|
|
182
|
-
});
|
|
179
|
+
await graph.addNode(NodeFactory.createExternalModule(packageName));
|
|
183
180
|
nodesCreated++;
|
|
184
181
|
}
|
|
185
182
|
createdExternalModules.add(externalModuleId);
|
|
@@ -17,6 +17,7 @@ import type { BaseNodeRecord } from '@grafema/types';
|
|
|
17
17
|
import { dirname, resolve } from 'path';
|
|
18
18
|
import { StrictModeError } from '../../errors/GrafemaError.js';
|
|
19
19
|
import { resolveModulePath as resolveModulePathUtil } from '../../utils/moduleResolution.js';
|
|
20
|
+
import { NodeFactory } from '../../core/NodeFactory.js';
|
|
20
21
|
|
|
21
22
|
// === INTERFACES ===
|
|
22
23
|
|
|
@@ -59,7 +60,9 @@ export class FunctionCallResolver extends Plugin {
|
|
|
59
60
|
nodes: ['EXTERNAL_MODULE'],
|
|
60
61
|
edges: ['CALLS']
|
|
61
62
|
},
|
|
62
|
-
dependencies: ['ImportExportLinker'] // Requires IMPORTS_FROM edges
|
|
63
|
+
dependencies: ['ImportExportLinker'], // Requires IMPORTS_FROM edges
|
|
64
|
+
consumes: ['IMPORTS_FROM'],
|
|
65
|
+
produces: ['CALLS']
|
|
63
66
|
};
|
|
64
67
|
}
|
|
65
68
|
|
|
@@ -231,16 +234,10 @@ export class FunctionCallResolver extends Plugin {
|
|
|
231
234
|
const externalModuleId = `EXTERNAL_MODULE:${externalResult.packageName}`;
|
|
232
235
|
|
|
233
236
|
// Check if node exists
|
|
234
|
-
|
|
237
|
+
const externalNode = await graph.getNode(externalModuleId);
|
|
235
238
|
if (!externalNode) {
|
|
236
239
|
// Create EXTERNAL_MODULE node
|
|
237
|
-
await graph.addNode(
|
|
238
|
-
id: externalModuleId,
|
|
239
|
-
type: 'EXTERNAL_MODULE',
|
|
240
|
-
name: externalResult.packageName,
|
|
241
|
-
file: '',
|
|
242
|
-
line: 0
|
|
243
|
-
});
|
|
240
|
+
await graph.addNode(NodeFactory.createExternalModule(externalResult.packageName));
|
|
244
241
|
}
|
|
245
242
|
|
|
246
243
|
// Create CALLS edge with metadata
|
|
@@ -55,7 +55,9 @@ export class HTTPConnectionEnricher extends Plugin {
|
|
|
55
55
|
nodes: [],
|
|
56
56
|
edges: ['INTERACTS_WITH', 'HTTP_RECEIVES']
|
|
57
57
|
},
|
|
58
|
-
dependencies: ['ExpressRouteAnalyzer', 'FetchAnalyzer', 'ExpressResponseAnalyzer']
|
|
58
|
+
dependencies: ['ExpressRouteAnalyzer', 'FetchAnalyzer', 'ExpressResponseAnalyzer'],
|
|
59
|
+
consumes: ['RESPONDS_WITH'],
|
|
60
|
+
produces: ['INTERACTS_WITH', 'HTTP_RECEIVES']
|
|
59
61
|
};
|
|
60
62
|
}
|
|
61
63
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* где exportKey = "default" | "named:functionName" | "all"
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import { dirname,
|
|
16
|
+
import { dirname, join } from 'path';
|
|
17
17
|
import { Plugin, createSuccessResult } from '../Plugin.js';
|
|
18
18
|
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
19
19
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
@@ -43,7 +43,9 @@ export class ImportExportLinker extends Plugin {
|
|
|
43
43
|
nodes: [],
|
|
44
44
|
edges: ['IMPORTS', 'IMPORTS_FROM']
|
|
45
45
|
},
|
|
46
|
-
dependencies: ['JSASTAnalyzer'] // Requires IMPORT and EXPORT nodes
|
|
46
|
+
dependencies: ['JSASTAnalyzer'], // Requires IMPORT and EXPORT nodes
|
|
47
|
+
consumes: [],
|
|
48
|
+
produces: ['IMPORTS', 'IMPORTS_FROM']
|
|
47
49
|
};
|
|
48
50
|
}
|
|
49
51
|
|
|
@@ -98,7 +100,7 @@ export class ImportExportLinker extends Plugin {
|
|
|
98
100
|
|
|
99
101
|
// Resolve target file path
|
|
100
102
|
const currentDir = dirname(imp.file!);
|
|
101
|
-
const basePath =
|
|
103
|
+
const basePath = join(currentDir, imp.source!);
|
|
102
104
|
|
|
103
105
|
// Try different extensions
|
|
104
106
|
const extensions = ['', '.js', '.ts', '.jsx', '.tsx', '/index.js', '/index.ts'];
|
|
@@ -52,7 +52,9 @@ export class InstanceOfResolver extends Plugin {
|
|
|
52
52
|
nodes: [],
|
|
53
53
|
edges: ['INSTANCE_OF'] // Пере-создаёт INSTANCE_OF edges
|
|
54
54
|
},
|
|
55
|
-
dependencies: ['JSASTAnalyzer']
|
|
55
|
+
dependencies: ['JSASTAnalyzer'],
|
|
56
|
+
consumes: ['INSTANCE_OF'],
|
|
57
|
+
produces: ['INSTANCE_OF']
|
|
56
58
|
};
|
|
57
59
|
}
|
|
58
60
|
|