@grafema/core 0.1.0-alpha.5 → 0.1.1-alpha
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 +24 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +197 -24
- package/dist/config/ConfigLoader.d.ts +72 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +187 -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/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 +225 -17
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +208 -18
- 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 +41 -0
- package/dist/core/nodes/CallSiteNode.d.ts +28 -0
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +46 -0
- package/dist/core/nodes/ClassNode.d.ts +33 -1
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +46 -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 +62 -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 +54 -0
- package/dist/core/nodes/ExportNode.d.ts +37 -1
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +48 -2
- 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 +178 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +28 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +41 -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/ImportNode.d.ts +19 -5
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +23 -5
- 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 +55 -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/MethodCallNode.d.ts +30 -0
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +49 -0
- package/dist/core/nodes/MethodNode.d.ts +32 -0
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +48 -0
- 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 +41 -0
- 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 +53 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +27 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +40 -0
- package/dist/core/nodes/index.d.ts +12 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +14 -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 +77 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +159 -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 +118 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +131 -0
- package/dist/index.d.ts +57 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -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 +13 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +27 -19
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +21 -14
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +1 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +34 -14
- 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 +180 -17
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +1171 -471
- 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 +15 -10
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +9 -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.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +27 -15
- 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 +34 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +318 -298
- 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 +176 -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 +9 -4
- 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 +99 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +663 -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 +4 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +128 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +11 -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 +4 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +17 -13
- 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 +136 -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 +14 -8
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +14 -7
- 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 +18 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +8 -3
- 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 +17 -0
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +129 -10
- 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.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +63 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +5 -4
- 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/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +8 -7
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +17 -12
- 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 +19 -23
- 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 +59 -16
- 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/storage/backends/RFDBServerBackend.d.ts +10 -17
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +31 -10
- 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 +237 -24
- package/src/config/ConfigLoader.ts +263 -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/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 +401 -18
- 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 +65 -0
- package/src/core/nodes/CallSiteNode.ts +58 -0
- package/src/core/nodes/ClassNode.ts +63 -2
- package/src/core/nodes/DecoratorNode.ts +91 -0
- package/src/core/nodes/EnumNode.ts +86 -0
- package/src/core/nodes/ExportNode.ts +70 -2
- package/src/core/nodes/ExpressionNode.ts +231 -0
- package/src/core/nodes/ExternalModuleNode.ts +56 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/ImportNode.ts +32 -10
- package/src/core/nodes/InterfaceNode.ts +91 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/MethodCallNode.ts +64 -0
- package/src/core/nodes/MethodNode.ts +63 -0
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +65 -0
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +78 -0
- package/src/core/nodes/VariableDeclarationNode.ts +52 -0
- package/src/core/nodes/index.ts +18 -1
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +204 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +174 -0
- package/src/index.ts +148 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +14 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +29 -19
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +22 -21
- package/src/plugins/analysis/FetchAnalyzer.ts +39 -16
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +1483 -503
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +15 -10
- package/src/plugins/analysis/SQLiteAnalyzer.ts +10 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +31 -22
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +439 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +209 -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 +11 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +909 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +159 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +12 -8
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +37 -17
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +177 -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 +14 -8
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +14 -7
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +18 -12
- package/src/plugins/enrichment/MountPointResolver.ts +8 -3
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +149 -12
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +74 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +5 -4
- package/src/plugins/validation/CallResolverValidator.ts +8 -7
- package/src/plugins/validation/DataFlowValidator.ts +16 -12
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +19 -23
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +61 -15
- 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/storage/backends/RFDBServerBackend.ts +43 -29
- 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
|
@@ -12,6 +12,7 @@ import { readFileSync } from 'fs';
|
|
|
12
12
|
import { parse } from '@babel/parser';
|
|
13
13
|
import traverseModule from '@babel/traverse';
|
|
14
14
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
15
|
+
import { getLine } from './ast/utils/location.js';
|
|
15
16
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
17
|
const traverse = traverseModule.default || traverseModule;
|
|
17
18
|
export class ServiceLayerAnalyzer extends Plugin {
|
|
@@ -28,11 +29,12 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
async execute(context) {
|
|
32
|
+
const logger = this.log(context);
|
|
31
33
|
try {
|
|
32
34
|
const { graph } = context;
|
|
33
35
|
// Получаем все модули
|
|
34
36
|
const modules = await this.getModules(graph);
|
|
35
|
-
|
|
37
|
+
logger.info('Processing modules', { count: modules.length });
|
|
36
38
|
let classesCount = 0;
|
|
37
39
|
let instancesCount = 0;
|
|
38
40
|
let registrationsCount = 0;
|
|
@@ -49,10 +51,20 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
49
51
|
if ((i + 1) % 20 === 0 || i === modules.length - 1) {
|
|
50
52
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
51
53
|
const avgTime = ((Date.now() - startTime) / (i + 1)).toFixed(0);
|
|
52
|
-
|
|
54
|
+
logger.debug('Progress', {
|
|
55
|
+
current: i + 1,
|
|
56
|
+
total: modules.length,
|
|
57
|
+
elapsed: `${elapsed}s`,
|
|
58
|
+
avgTime: `${avgTime}ms/module`
|
|
59
|
+
});
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
|
-
|
|
62
|
+
logger.info('Analysis complete', {
|
|
63
|
+
classesCount,
|
|
64
|
+
instancesCount,
|
|
65
|
+
registrationsCount,
|
|
66
|
+
usagesCount
|
|
67
|
+
});
|
|
56
68
|
return createSuccessResult({
|
|
57
69
|
nodes: classesCount + instancesCount + registrationsCount + usagesCount,
|
|
58
70
|
edges: 0
|
|
@@ -64,7 +76,7 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
64
76
|
});
|
|
65
77
|
}
|
|
66
78
|
catch (error) {
|
|
67
|
-
|
|
79
|
+
logger.error('Analysis failed', { error });
|
|
68
80
|
return createErrorResult(error);
|
|
69
81
|
}
|
|
70
82
|
}
|
|
@@ -95,7 +107,7 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
95
107
|
const node = path.node;
|
|
96
108
|
const className = node.id?.name;
|
|
97
109
|
if (className && this.isServiceClass(className)) {
|
|
98
|
-
const line = node
|
|
110
|
+
const line = getLine(node);
|
|
99
111
|
// Извлекаем методы сервиса
|
|
100
112
|
const methods = node.body.body
|
|
101
113
|
.filter(m => m.type === 'ClassMethod' && m.kind === 'method')
|
|
@@ -117,7 +129,7 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
117
129
|
if (callee.type === 'Identifier') {
|
|
118
130
|
const className = callee.name;
|
|
119
131
|
if (this.isServiceClass(className)) {
|
|
120
|
-
const line = node
|
|
132
|
+
const line = getLine(node);
|
|
121
133
|
serviceInstances.push({
|
|
122
134
|
id: `${module.file}:SERVICE_INSTANCE:${className}:${line}`,
|
|
123
135
|
type: 'SERVICE_INSTANCE',
|
|
@@ -139,7 +151,7 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
139
151
|
const objectName = this.getObjectName(callee.object);
|
|
140
152
|
if (objectName === 'app' && node.arguments.length >= 2) {
|
|
141
153
|
const serviceName = this.extractStringArg(node.arguments[0]);
|
|
142
|
-
const line = node
|
|
154
|
+
const line = getLine(node);
|
|
143
155
|
// Проверяем что это похоже на service (имя содержит 'service' или '*Service')
|
|
144
156
|
if (serviceName.toLowerCase().includes('service') ||
|
|
145
157
|
this.isServiceClass(serviceName)) {
|
|
@@ -164,7 +176,7 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
164
176
|
objectChain.includes('app')) {
|
|
165
177
|
if (node.arguments.length >= 1) {
|
|
166
178
|
const serviceName = this.extractStringArg(node.arguments[0]);
|
|
167
|
-
const line = node
|
|
179
|
+
const line = getLine(node);
|
|
168
180
|
// Проверяем что это похоже на service
|
|
169
181
|
if (serviceName.toLowerCase().includes('service') ||
|
|
170
182
|
this.isServiceClass(serviceName)) {
|
|
@@ -237,7 +249,7 @@ export class ServiceLayerAnalyzer extends Plugin {
|
|
|
237
249
|
};
|
|
238
250
|
}
|
|
239
251
|
catch (error) {
|
|
240
|
-
|
|
252
|
+
// Silent - per-module errors shouldn't spam logs
|
|
241
253
|
return { classes: 0, instances: 0, registrations: 0, usages: 0 };
|
|
242
254
|
}
|
|
243
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketIOAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SocketIOAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SocketIOAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SocketIOAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA0DhF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAkD9C,aAAa;IAoN3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA4BzB"}
|
|
@@ -18,6 +18,7 @@ import { readFileSync } from 'fs';
|
|
|
18
18
|
import { parse } from '@babel/parser';
|
|
19
19
|
import traverseModule from '@babel/traverse';
|
|
20
20
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
21
|
+
import { getLine, getColumn } from './ast/utils/location.js';
|
|
21
22
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
23
|
const traverse = traverseModule.default || traverseModule;
|
|
23
24
|
export class SocketIOAnalyzer extends Plugin {
|
|
@@ -34,11 +35,12 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
async execute(context) {
|
|
38
|
+
const logger = this.log(context);
|
|
37
39
|
try {
|
|
38
40
|
const { graph } = context;
|
|
39
41
|
// Получаем все модули
|
|
40
42
|
const modules = await this.getModules(graph);
|
|
41
|
-
|
|
43
|
+
logger.info('Processing modules', { count: modules.length });
|
|
42
44
|
let emitsCount = 0;
|
|
43
45
|
let listenersCount = 0;
|
|
44
46
|
let roomsCount = 0;
|
|
@@ -53,17 +55,22 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
53
55
|
if ((i + 1) % 20 === 0 || i === modules.length - 1) {
|
|
54
56
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
55
57
|
const avgTime = ((Date.now() - startTime) / (i + 1)).toFixed(0);
|
|
56
|
-
|
|
58
|
+
logger.debug('Progress', {
|
|
59
|
+
current: i + 1,
|
|
60
|
+
total: modules.length,
|
|
61
|
+
elapsed: `${elapsed}s`,
|
|
62
|
+
avgTime: `${avgTime}ms/module`
|
|
63
|
+
});
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
|
-
|
|
66
|
+
logger.info('Analysis complete', { emitsCount, listenersCount, roomsCount });
|
|
60
67
|
return createSuccessResult({
|
|
61
68
|
nodes: emitsCount + listenersCount + roomsCount,
|
|
62
69
|
edges: 0
|
|
63
70
|
}, { emitsCount, listenersCount, roomsCount });
|
|
64
71
|
}
|
|
65
72
|
catch (error) {
|
|
66
|
-
|
|
73
|
+
logger.error('Analysis failed', { error });
|
|
67
74
|
return createErrorResult(error);
|
|
68
75
|
}
|
|
69
76
|
}
|
|
@@ -97,8 +104,8 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
97
104
|
callee.property.name === 'emit') {
|
|
98
105
|
const objectName = this.getObjectName(callee.object);
|
|
99
106
|
const event = this.extractStringArg(node.arguments[0]);
|
|
100
|
-
const line = node
|
|
101
|
-
const column = node
|
|
107
|
+
const line = getLine(node);
|
|
108
|
+
const column = getColumn(node);
|
|
102
109
|
// io.to('room').emit() - room-based emit
|
|
103
110
|
let room = null;
|
|
104
111
|
if (callee.object.type === 'CallExpression' &&
|
|
@@ -138,7 +145,7 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
138
145
|
callee.property.name === 'on') {
|
|
139
146
|
const objectName = this.getObjectName(callee.object);
|
|
140
147
|
const event = this.extractStringArg(node.arguments[0]);
|
|
141
|
-
const line = node
|
|
148
|
+
const line = getLine(node);
|
|
142
149
|
const handler = node.arguments[1];
|
|
143
150
|
// Извлекаем имя handler функции
|
|
144
151
|
let handlerName = 'anonymous';
|
|
@@ -146,8 +153,8 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
146
153
|
if (handler) {
|
|
147
154
|
if (handler.type === 'FunctionExpression' ||
|
|
148
155
|
handler.type === 'ArrowFunctionExpression') {
|
|
149
|
-
handlerName = `anonymous:${handler
|
|
150
|
-
handlerLine = handler
|
|
156
|
+
handlerName = `anonymous:${getLine(handler)}`;
|
|
157
|
+
handlerLine = getLine(handler);
|
|
151
158
|
}
|
|
152
159
|
else if (handler.type === 'Identifier') {
|
|
153
160
|
handlerName = handler.name;
|
|
@@ -170,7 +177,7 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
170
177
|
callee.property.name === 'join') {
|
|
171
178
|
const objectName = this.getObjectName(callee.object);
|
|
172
179
|
const roomName = this.extractStringArg(node.arguments[0]);
|
|
173
|
-
const line = node
|
|
180
|
+
const line = getLine(node);
|
|
174
181
|
if (objectName === 'socket') {
|
|
175
182
|
rooms.push({
|
|
176
183
|
id: `socketio:room#${roomName}#${module.file}#${line}`,
|
|
@@ -202,14 +209,19 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
202
209
|
src: module.id,
|
|
203
210
|
dst: listener.id
|
|
204
211
|
});
|
|
205
|
-
//
|
|
206
|
-
const
|
|
207
|
-
|
|
212
|
+
// Find FUNCTION node for handler by name and file (supports both legacy and semantic IDs)
|
|
213
|
+
const handlerFunctions = await graph.getAllNodes({
|
|
214
|
+
type: 'FUNCTION',
|
|
215
|
+
name: listener.handlerName,
|
|
216
|
+
file: listener.file
|
|
217
|
+
});
|
|
218
|
+
// Find the handler at the matching line
|
|
219
|
+
const handlerFunction = handlerFunctions.find(fn => fn.line === listener.handlerLine);
|
|
208
220
|
if (handlerFunction) {
|
|
209
221
|
await graph.addEdge({
|
|
210
222
|
type: 'LISTENS_TO',
|
|
211
223
|
src: listener.id,
|
|
212
|
-
dst:
|
|
224
|
+
dst: handlerFunction.id
|
|
213
225
|
});
|
|
214
226
|
}
|
|
215
227
|
}
|
|
@@ -229,7 +241,7 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
229
241
|
};
|
|
230
242
|
}
|
|
231
243
|
catch (error) {
|
|
232
|
-
|
|
244
|
+
// Silent - per-module errors shouldn't spam logs
|
|
233
245
|
return { emits: 0, listeners: 0, rooms: 0 };
|
|
234
246
|
}
|
|
235
247
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemDbAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SystemDbAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA2BhF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemDbAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SystemDbAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA2BhF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4L5D;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAkB1B"}
|
|
@@ -29,13 +29,14 @@ export class SystemDbAnalyzer extends Plugin {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
async execute(context) {
|
|
32
|
+
const logger = this.log(context);
|
|
32
33
|
try {
|
|
33
34
|
const { graph } = context;
|
|
34
35
|
let nodesCreated = 0;
|
|
35
36
|
let edgesCreated = 0;
|
|
36
37
|
// Get all MODULE nodes
|
|
37
38
|
const modules = await this.getModules(graph);
|
|
38
|
-
|
|
39
|
+
logger.info('Analyzing modules for system_db patterns', { count: modules.length });
|
|
39
40
|
for (const module of modules) {
|
|
40
41
|
if (!module.file)
|
|
41
42
|
continue;
|
|
@@ -114,7 +115,13 @@ export class SystemDbAnalyzer extends Plugin {
|
|
|
114
115
|
// Create SYSTEM_DB_VIEW_REGISTRATION nodes
|
|
115
116
|
for (const reg of registrations) {
|
|
116
117
|
const nodeId = `${module.file}:SYSTEM_DB_VIEW_REGISTRATION:${reg.viewName}:${reg.line}`;
|
|
117
|
-
|
|
118
|
+
logger.debug('Found registration', {
|
|
119
|
+
type: reg.type,
|
|
120
|
+
viewName: reg.viewName,
|
|
121
|
+
serverName: reg.serverName,
|
|
122
|
+
file: module.file.split('/').pop(),
|
|
123
|
+
line: reg.line
|
|
124
|
+
});
|
|
118
125
|
await graph.addNode({
|
|
119
126
|
id: nodeId,
|
|
120
127
|
type: 'SYSTEM_DB_VIEW_REGISTRATION',
|
|
@@ -160,15 +167,18 @@ export class SystemDbAnalyzer extends Plugin {
|
|
|
160
167
|
catch (err) {
|
|
161
168
|
// Skip files that can't be parsed
|
|
162
169
|
if (err.code !== 'ENOENT') {
|
|
163
|
-
|
|
170
|
+
logger.warn('Failed to analyze module', {
|
|
171
|
+
file: module.file,
|
|
172
|
+
error: err.message
|
|
173
|
+
});
|
|
164
174
|
}
|
|
165
175
|
}
|
|
166
176
|
}
|
|
167
|
-
|
|
177
|
+
logger.info('Analysis complete', { nodesCreated, edgesCreated });
|
|
168
178
|
return createSuccessResult({ nodes: nodesCreated, edges: edgesCreated }, { modulesAnalyzed: modules.length });
|
|
169
179
|
}
|
|
170
180
|
catch (error) {
|
|
171
|
-
|
|
181
|
+
logger.error('Analysis failed', { error });
|
|
172
182
|
return createErrorResult(error);
|
|
173
183
|
}
|
|
174
184
|
}
|
|
@@ -47,6 +47,10 @@ export declare class GraphBuilder {
|
|
|
47
47
|
private bufferArgumentEdges;
|
|
48
48
|
/**
|
|
49
49
|
* Buffer INTERFACE nodes and EXTENDS edges
|
|
50
|
+
*
|
|
51
|
+
* Uses two-pass approach:
|
|
52
|
+
* 1. First pass: create all interface nodes, store in Map
|
|
53
|
+
* 2. Second pass: create EXTENDS edges using stored node IDs
|
|
50
54
|
*/
|
|
51
55
|
private bufferInterfaceNodes;
|
|
52
56
|
/**
|
|
@@ -55,6 +59,7 @@ export declare class GraphBuilder {
|
|
|
55
59
|
private bufferTypeAliasNodes;
|
|
56
60
|
/**
|
|
57
61
|
* Buffer ENUM nodes
|
|
62
|
+
* Uses EnumNode.create() to ensure consistent ID format (colon separator)
|
|
58
63
|
*/
|
|
59
64
|
private bufferEnumNodes;
|
|
60
65
|
/**
|
|
@@ -66,12 +71,37 @@ export declare class GraphBuilder {
|
|
|
66
71
|
*/
|
|
67
72
|
private bufferImplementsEdges;
|
|
68
73
|
/**
|
|
69
|
-
*
|
|
74
|
+
* Buffer FLOWS_INTO edges for array mutations (push, unshift, splice, indexed assignment)
|
|
75
|
+
* Creates edges from inserted values to the array variable
|
|
76
|
+
*
|
|
77
|
+
* REG-117: Now handles nested mutations like obj.arr.push(item):
|
|
78
|
+
* - For nested mutations, falls back to base object if array property not found
|
|
79
|
+
* - Adds nestedProperty metadata for tracking
|
|
80
|
+
*
|
|
81
|
+
* OPTIMIZED: Uses Map-based lookup cache for O(1) variable lookups instead of O(n) find()
|
|
70
82
|
*/
|
|
71
|
-
private
|
|
83
|
+
private bufferArrayMutationEdges;
|
|
84
|
+
/**
|
|
85
|
+
* Buffer FLOWS_INTO edges for object mutations (property assignment, Object.assign)
|
|
86
|
+
* Creates edges from source values to the object variable being mutated.
|
|
87
|
+
*
|
|
88
|
+
* REG-152: For 'this.prop = value' patterns inside classes, creates edges
|
|
89
|
+
* to the CLASS node with mutationType: 'this_property'.
|
|
90
|
+
*/
|
|
91
|
+
private bufferObjectMutationEdges;
|
|
92
|
+
/**
|
|
93
|
+
* Buffer OBJECT_LITERAL nodes to the graph.
|
|
94
|
+
* These are object literals passed as function arguments or nested in other literals.
|
|
95
|
+
*/
|
|
96
|
+
private bufferObjectLiteralNodes;
|
|
72
97
|
/**
|
|
73
|
-
*
|
|
98
|
+
* Buffer ARRAY_LITERAL nodes to the graph.
|
|
99
|
+
* These are array literals passed as function arguments or nested in other literals.
|
|
74
100
|
*/
|
|
75
|
-
private
|
|
101
|
+
private bufferArrayLiteralNodes;
|
|
102
|
+
/**
|
|
103
|
+
* Handle CLASS ASSIGNED_FROM edges asynchronously (needs graph queries)
|
|
104
|
+
*/
|
|
105
|
+
private createClassAssignmentEdges;
|
|
76
106
|
}
|
|
77
107
|
//# sourceMappingURL=GraphBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,OAAO,KAAK,EACV,UAAU,EAyBV,cAAc,EAGd,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IAEvB,OAAO,CAAC,kBAAkB,CAA0B;IAGpD,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,WAAW,CAAmB;IAEtC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,WAAW;IAWzB;;;OAGG;YACW,WAAW;IAUzB;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAoKrH,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,gBAAgB;IA+CxB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,2BAA2B;IAwCnC,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,iBAAiB;IAmFzB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,qBAAqB;IA2R7B,OAAO,CAAC,mBAAmB;IAsE3B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA8D5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IA2EhC;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAkEjC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAehC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;YACW,0BAA0B;CA+BzC"}
|