@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
|
@@ -31,13 +31,14 @@ export class EvalBanValidator extends Plugin {
|
|
|
31
31
|
}
|
|
32
32
|
async execute(context) {
|
|
33
33
|
const { graph } = context;
|
|
34
|
-
|
|
34
|
+
const logger = this.log(context);
|
|
35
|
+
logger.info('Starting eval/Function usage validation');
|
|
35
36
|
const startTime = Date.now();
|
|
36
37
|
const issues = [];
|
|
37
|
-
//
|
|
38
|
-
// Datalog
|
|
39
|
-
// 1.
|
|
40
|
-
|
|
38
|
+
// OPTIMIZATION: use direct graph queries instead of Datalog (slow full scan)
|
|
39
|
+
// Datalog hangs on large graphs due to lack of indexes
|
|
40
|
+
// 1. Direct eval("code") call - find all CALL nodes with name="eval"
|
|
41
|
+
logger.debug('Searching for eval() calls');
|
|
41
42
|
const evalStart = Date.now();
|
|
42
43
|
let evalCount = 0;
|
|
43
44
|
for await (const node of graph.queryNodes({ nodeType: 'CALL' })) {
|
|
@@ -53,9 +54,9 @@ export class EvalBanValidator extends Plugin {
|
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
// 2.
|
|
58
|
-
|
|
57
|
+
logger.debug('eval() search complete', { timeMs: Date.now() - evalStart, count: evalCount });
|
|
58
|
+
// 2. Function("code") or new Function("code") call
|
|
59
|
+
logger.debug('Searching for Function() calls');
|
|
59
60
|
const funcStart = Date.now();
|
|
60
61
|
let funcCount = 0;
|
|
61
62
|
for await (const node of graph.queryNodes({ nodeType: 'CALL' })) {
|
|
@@ -71,10 +72,10 @@ export class EvalBanValidator extends Plugin {
|
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
|
-
|
|
75
|
+
logger.debug('Function() search complete', { timeMs: Date.now() - funcStart, count: funcCount });
|
|
75
76
|
// 3. Method call: window.eval, globalThis.eval, this.eval
|
|
76
77
|
// Note: METHOD_CALL was merged into CALL - method calls have 'method' attribute
|
|
77
|
-
|
|
78
|
+
logger.debug('Searching for method eval() calls');
|
|
78
79
|
const methodStart = Date.now();
|
|
79
80
|
let methodCount = 0;
|
|
80
81
|
for await (const node of graph.queryNodes({ nodeType: 'CALL' })) {
|
|
@@ -94,9 +95,9 @@ export class EvalBanValidator extends Plugin {
|
|
|
94
95
|
});
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
|
-
|
|
98
|
+
logger.debug('Method eval() search complete', { timeMs: Date.now() - methodStart, count: methodCount });
|
|
98
99
|
// 4. Aliased eval - SKIP for now (complex Datalog query causes OOM)
|
|
99
|
-
|
|
100
|
+
logger.debug('Skipping aliased eval detection', { reason: 'requires optimized implementation' });
|
|
100
101
|
const totalTime = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
101
102
|
const summary = {
|
|
102
103
|
evalCalls: evalCount,
|
|
@@ -106,15 +107,15 @@ export class EvalBanValidator extends Plugin {
|
|
|
106
107
|
totalViolations: issues.length,
|
|
107
108
|
timeSeconds: totalTime
|
|
108
109
|
};
|
|
109
|
-
|
|
110
|
+
logger.info('Validation summary', { ...summary });
|
|
110
111
|
if (issues.length > 0) {
|
|
111
|
-
|
|
112
|
+
logger.info('Security violations found', { count: issues.length });
|
|
112
113
|
for (const issue of issues) {
|
|
113
|
-
|
|
114
|
+
logger.warn('Violation', { message: issue.message, type: issue.type, file: issue.file, line: issue.line });
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
else {
|
|
117
|
-
|
|
118
|
+
logger.info('Validation passed: no eval/Function usage detected');
|
|
118
119
|
}
|
|
119
120
|
return createSuccessResult({ nodes: 0, edges: 0 }, // created - validator doesn't create nodes/edges
|
|
120
121
|
{ summary, issues } // metadata
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphConnectivityValidator.d.ts","sourceRoot":"","sources":["../../../src/plugins/validation/GraphConnectivityValidator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAyChF,qBAAa,0BAA2B,SAAQ,MAAM;IACpD,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphConnectivityValidator.d.ts","sourceRoot":"","sources":["../../../src/plugins/validation/GraphConnectivityValidator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAyChF,qBAAa,0BAA2B,SAAQ,MAAM;IACpD,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAwI7D"}
|
|
@@ -17,27 +17,28 @@ export class GraphConnectivityValidator extends Plugin {
|
|
|
17
17
|
}
|
|
18
18
|
async execute(context) {
|
|
19
19
|
const { graph, manifest } = context;
|
|
20
|
+
const logger = this.log(context);
|
|
20
21
|
const manifestWithValidation = manifest;
|
|
21
|
-
|
|
22
|
+
logger.info('Starting connectivity validation');
|
|
22
23
|
// Получаем все узлы
|
|
23
24
|
const allNodes = await graph.getAllNodes();
|
|
24
|
-
|
|
25
|
+
logger.debug('Nodes collected', { totalNodes: allNodes.length });
|
|
25
26
|
// Находим корневые узлы (SERVICE, MODULE)
|
|
26
27
|
const rootTypes = ['SERVICE', 'MODULE', 'PROJECT'];
|
|
27
28
|
const rootNodes = allNodes.filter(n => rootTypes.includes(n.type));
|
|
28
|
-
|
|
29
|
+
logger.debug('Root nodes found', { rootCount: rootNodes.length });
|
|
29
30
|
if (rootNodes.length === 0) {
|
|
30
|
-
|
|
31
|
+
logger.warn('No root nodes found');
|
|
31
32
|
return createSuccessResult({ nodes: 0, edges: 0 }, { skipped: true, reason: 'No root nodes' });
|
|
32
33
|
}
|
|
33
34
|
// Check if graph supports getAllEdges
|
|
34
35
|
if (!graph.getAllEdges) {
|
|
35
|
-
|
|
36
|
+
logger.debug('Graph does not support getAllEdges, skipping validation');
|
|
36
37
|
return createSuccessResult({ nodes: 0, edges: 0 }, { skipped: true, reason: 'No getAllEdges support' });
|
|
37
38
|
}
|
|
38
39
|
// Собираем все ребра
|
|
39
40
|
const allEdges = await graph.getAllEdges();
|
|
40
|
-
|
|
41
|
+
logger.debug('Edges collected', { totalEdges: allEdges.length });
|
|
41
42
|
// Строим карты смежности (обе направления)
|
|
42
43
|
const adjacencyOut = new Map(); // nodeId -> [targetIds]
|
|
43
44
|
const adjacencyIn = new Map(); // nodeId -> [sourceIds]
|
|
@@ -73,13 +74,10 @@ export class GraphConnectivityValidator extends Plugin {
|
|
|
73
74
|
// Находим недостижимые узлы
|
|
74
75
|
const unreachable = allNodes.filter(n => !reachable.has(n.id));
|
|
75
76
|
if (unreachable.length > 0) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
console.error(`Found ${unreachable.length} unreachable nodes (${((unreachable.length / allNodes.length) * 100).toFixed(1)}% of total)`);
|
|
81
|
-
console.error(`These nodes are not connected to the main graph (SERVICE/MODULE/PROJECT level)`);
|
|
82
|
-
console.error('');
|
|
77
|
+
const percentage = ((unreachable.length / allNodes.length) * 100).toFixed(1);
|
|
78
|
+
logger.error('GRAPH VALIDATION ERROR: DISCONNECTED NODES FOUND');
|
|
79
|
+
logger.error(`Found ${unreachable.length} unreachable nodes (${percentage}% of total)`);
|
|
80
|
+
logger.error('These nodes are not connected to the main graph (SERVICE/MODULE/PROJECT level)');
|
|
83
81
|
// Группируем по типам для читаемости
|
|
84
82
|
const byType = {};
|
|
85
83
|
for (const node of unreachable) {
|
|
@@ -88,25 +86,23 @@ export class GraphConnectivityValidator extends Plugin {
|
|
|
88
86
|
byType[node.type].push(node);
|
|
89
87
|
}
|
|
90
88
|
for (const [type, nodes] of Object.entries(byType)) {
|
|
91
|
-
|
|
89
|
+
logger.error(`${type}: ${nodes.length} nodes`);
|
|
92
90
|
// Показываем первые 5 для каждого типа
|
|
93
91
|
for (const node of nodes.slice(0, 5)) {
|
|
94
|
-
|
|
92
|
+
logger.debug(` - ${node.name || node.id}`);
|
|
95
93
|
// Показываем связи этого узла
|
|
96
94
|
const out = adjacencyOut.get(node.id) || [];
|
|
97
95
|
const incoming = adjacencyIn.get(node.id) || [];
|
|
98
96
|
if (out.length > 0 || incoming.length > 0) {
|
|
99
|
-
|
|
97
|
+
logger.debug(` Edges: ${incoming.length} incoming, ${out.length} outgoing`);
|
|
100
98
|
}
|
|
101
99
|
}
|
|
102
100
|
if (nodes.length > 5) {
|
|
103
|
-
|
|
101
|
+
logger.debug(` ... and ${nodes.length - 5} more`);
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
console.error(' Anonymous functions, callbacks, and method calls should be linked to parent nodes');
|
|
109
|
-
console.error('='.repeat(80) + '\n');
|
|
104
|
+
logger.error('ACTION REQUIRED: Fix analysis plugins to ensure all nodes are connected');
|
|
105
|
+
logger.error('Anonymous functions, callbacks, and method calls should be linked to parent nodes');
|
|
110
106
|
// Сохраняем информацию в manifest для дальнейшего использования
|
|
111
107
|
if (!manifestWithValidation.validation)
|
|
112
108
|
manifestWithValidation.validation = {};
|
|
@@ -122,14 +118,14 @@ export class GraphConnectivityValidator extends Plugin {
|
|
|
122
118
|
manifestWithValidation.validation.unreachableByType = Object.fromEntries(Object.entries(byType).map(([type, nodes]) => [type, nodes.length]));
|
|
123
119
|
}
|
|
124
120
|
else {
|
|
125
|
-
|
|
121
|
+
logger.info('All nodes are reachable from root nodes');
|
|
126
122
|
if (!manifestWithValidation.validation)
|
|
127
123
|
manifestWithValidation.validation = {};
|
|
128
124
|
manifestWithValidation.validation.hasErrors = false;
|
|
129
125
|
manifestWithValidation.validation.totalNodes = allNodes.length;
|
|
130
126
|
manifestWithValidation.validation.reachableNodes = reachable.size;
|
|
131
127
|
}
|
|
132
|
-
|
|
128
|
+
logger.info('Validation complete', { reachable: reachable.size, total: allNodes.length });
|
|
133
129
|
return createSuccessResult({ nodes: 0, edges: 0 }, { totalNodes: allNodes.length, reachableNodes: reachable.size });
|
|
134
130
|
}
|
|
135
131
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NodeCreationValidator - validates that nodes are created through NodeFactory
|
|
3
|
+
*
|
|
4
|
+
* GUARANTEE: All nodes passed to graph.addNode() or graph.addNodes() must be
|
|
5
|
+
* created through NodeFactory methods, not constructed inline.
|
|
6
|
+
*
|
|
7
|
+
* This validator uses the data flow tracking (HAS_PROPERTY, HAS_ELEMENT, FLOWS_INTO edges)
|
|
8
|
+
* to trace object literals back to their source and verify they come from
|
|
9
|
+
* NodeFactory calls.
|
|
10
|
+
*
|
|
11
|
+
* FLOWS_INTO traversal: When an array variable is passed to addNodes(), we check:
|
|
12
|
+
* 1. Static array contents via HAS_ELEMENT edges
|
|
13
|
+
* 2. Dynamic array contents via FLOWS_INTO edges (from push, unshift, splice, indexed assignment)
|
|
14
|
+
*
|
|
15
|
+
* DATALOG RULES (conceptual):
|
|
16
|
+
*
|
|
17
|
+
* % Find all calls to addNodes (batch)
|
|
18
|
+
* add_nodes_call(Call) :-
|
|
19
|
+
* node(Call, "CALL"),
|
|
20
|
+
* attr(Call, "name", "addNodes").
|
|
21
|
+
*
|
|
22
|
+
* % Find array argument passed to addNodes (arg 0)
|
|
23
|
+
* add_nodes_array(Call, Arr) :-
|
|
24
|
+
* add_nodes_call(Call),
|
|
25
|
+
* edge(Call, Arr, "PASSES_ARGUMENT"),
|
|
26
|
+
* node(Arr, "ARRAY_LITERAL").
|
|
27
|
+
*
|
|
28
|
+
* % Find objects inside the array (static elements)
|
|
29
|
+
* add_nodes_object(Call, Obj) :-
|
|
30
|
+
* add_nodes_array(Call, Arr),
|
|
31
|
+
* edge(Arr, Obj, "HAS_ELEMENT"),
|
|
32
|
+
* node(Obj, "OBJECT_LITERAL").
|
|
33
|
+
*
|
|
34
|
+
* % Find objects pushed/unshifted/spliced into array (dynamic elements)
|
|
35
|
+
* add_nodes_object(Call, Obj) :-
|
|
36
|
+
* add_nodes_call(Call),
|
|
37
|
+
* edge(Call, ArrVar, "PASSES_ARGUMENT"),
|
|
38
|
+
* node(ArrVar, "VARIABLE"),
|
|
39
|
+
* incoming(ArrVar, Obj, "FLOWS_INTO"), % value --FLOWS_INTO--> array
|
|
40
|
+
* node(Obj, "OBJECT_LITERAL").
|
|
41
|
+
*
|
|
42
|
+
* % Object created via NodeFactory
|
|
43
|
+
* from_node_factory(Obj) :-
|
|
44
|
+
* incoming(Obj, Creator, "ASSIGNED_FROM"),
|
|
45
|
+
* node(Creator, "CALL"),
|
|
46
|
+
* attr(Creator, "object", "NodeFactory").
|
|
47
|
+
*
|
|
48
|
+
* % Violation: object in addNodes not from NodeFactory
|
|
49
|
+
* violation_batch(Call, Obj) :-
|
|
50
|
+
* add_nodes_object(Call, Obj),
|
|
51
|
+
* \+ from_node_factory(Obj).
|
|
52
|
+
*/
|
|
53
|
+
import { Plugin } from '../Plugin.js';
|
|
54
|
+
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
55
|
+
export declare class NodeCreationValidator extends Plugin {
|
|
56
|
+
get metadata(): PluginMetadata;
|
|
57
|
+
execute(context: PluginContext): Promise<PluginResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Validate a single addNode(node) call
|
|
60
|
+
*/
|
|
61
|
+
private validateAddNodeCall;
|
|
62
|
+
/**
|
|
63
|
+
* Validate addNodes([...]) call
|
|
64
|
+
* Also checks for objects that flow into arrays via FLOWS_INTO edges
|
|
65
|
+
*/
|
|
66
|
+
private validateAddNodesCall;
|
|
67
|
+
/**
|
|
68
|
+
* Get all nodes that flow INTO an array variable via FLOWS_INTO edges
|
|
69
|
+
* These are objects/values that were pushed, unshifted, spliced, or assigned to the array
|
|
70
|
+
*
|
|
71
|
+
* Edge direction: value --FLOWS_INTO--> array
|
|
72
|
+
* So we look for INCOMING edges where dst === arrayNodeId
|
|
73
|
+
*/
|
|
74
|
+
private getArrayContents;
|
|
75
|
+
/**
|
|
76
|
+
* Check if a node is created from NodeFactory
|
|
77
|
+
* Traces ASSIGNED_FROM edges to find the source call
|
|
78
|
+
*/
|
|
79
|
+
private isFromNodeFactory;
|
|
80
|
+
/**
|
|
81
|
+
* Trace a variable back to its source node (through ASSIGNED_FROM edges)
|
|
82
|
+
*/
|
|
83
|
+
private traceVariableSource;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=NodeCreationValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeCreationValidator.d.ts","sourceRoot":"","sources":["../../../src/plugins/validation/NodeCreationValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiDhF,qBAAa,qBAAsB,SAAQ,MAAM;IAC/C,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAgH5D;;OAEG;YACW,mBAAmB;IA0DjC;;;OAGG;YACW,oBAAoB;IAqJlC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAmC5B"}
|