@grafema/core 0.1.0-alpha.5 → 0.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/Orchestrator.d.ts +31 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +222 -27
- package/dist/config/ConfigLoader.d.ts +90 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +249 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/core/ASTWorker.d.ts +11 -36
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +93 -99
- package/dist/core/CoverageAnalyzer.d.ts +65 -0
- package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
- package/dist/core/CoverageAnalyzer.js +198 -0
- package/dist/core/FileExplainer.d.ts +101 -0
- package/dist/core/FileExplainer.d.ts.map +1 -0
- package/dist/core/FileExplainer.js +139 -0
- package/dist/core/FileNodeManager.d.ts +40 -0
- package/dist/core/FileNodeManager.d.ts.map +1 -0
- package/dist/core/FileNodeManager.js +84 -0
- package/dist/core/GraphFreshnessChecker.d.ts +33 -0
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
- package/dist/core/GraphFreshnessChecker.js +101 -0
- package/dist/core/HashUtils.d.ts +24 -0
- package/dist/core/HashUtils.d.ts.map +1 -0
- package/dist/core/HashUtils.js +45 -0
- package/dist/core/IncrementalReanalyzer.d.ts +36 -0
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
- package/dist/core/IncrementalReanalyzer.js +132 -0
- package/dist/core/NodeFactory.d.ts +266 -19
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +256 -21
- package/dist/core/ScopeTracker.d.ts +84 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -0
- package/dist/core/ScopeTracker.js +116 -0
- package/dist/core/SemanticId.d.ts +90 -0
- package/dist/core/SemanticId.d.ts.map +1 -0
- package/dist/core/SemanticId.js +115 -0
- package/dist/core/VersionManager.d.ts.map +1 -1
- package/dist/core/VersionManager.js +3 -2
- package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
- package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ArrayLiteralNode.js +43 -0
- package/dist/core/nodes/BranchNode.d.ts +41 -0
- package/dist/core/nodes/BranchNode.d.ts.map +1 -0
- package/dist/core/nodes/BranchNode.js +82 -0
- package/dist/core/nodes/CallSiteNode.d.ts +30 -2
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +54 -4
- package/dist/core/nodes/CaseNode.d.ts +43 -0
- package/dist/core/nodes/CaseNode.d.ts.map +1 -0
- package/dist/core/nodes/CaseNode.js +81 -0
- package/dist/core/nodes/ClassNode.d.ts +34 -2
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +52 -4
- package/dist/core/nodes/ConstantNode.d.ts +2 -2
- package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
- package/dist/core/nodes/ConstantNode.js +6 -4
- package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
- package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
- package/dist/core/nodes/ConstructorCallNode.js +171 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
- package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
- package/dist/core/nodes/DatabaseQueryNode.js +5 -2
- package/dist/core/nodes/DecoratorNode.d.ts +42 -0
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
- package/dist/core/nodes/DecoratorNode.js +64 -0
- package/dist/core/nodes/EnumNode.d.ts +42 -0
- package/dist/core/nodes/EnumNode.d.ts.map +1 -0
- package/dist/core/nodes/EnumNode.js +56 -0
- package/dist/core/nodes/EventListenerNode.d.ts +4 -4
- package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
- package/dist/core/nodes/EventListenerNode.js +7 -4
- package/dist/core/nodes/ExportNode.d.ts +38 -2
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +54 -4
- package/dist/core/nodes/ExpressionNode.d.ts +97 -0
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressionNode.js +180 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +49 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalStdioNode.js +15 -8
- package/dist/core/nodes/FunctionNode.d.ts +36 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
- package/dist/core/nodes/FunctionNode.js +80 -1
- package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
- package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
- package/dist/core/nodes/HttpRequestNode.js +7 -4
- package/dist/core/nodes/ImportNode.d.ts +28 -6
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +43 -8
- package/dist/core/nodes/InterfaceNode.d.ts +46 -0
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
- package/dist/core/nodes/InterfaceNode.js +57 -0
- package/dist/core/nodes/IssueNode.d.ts +73 -0
- package/dist/core/nodes/IssueNode.d.ts.map +1 -0
- package/dist/core/nodes/IssueNode.js +129 -0
- package/dist/core/nodes/LiteralNode.d.ts +2 -2
- package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/LiteralNode.js +6 -4
- package/dist/core/nodes/MethodCallNode.d.ts +32 -2
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +57 -4
- package/dist/core/nodes/MethodNode.d.ts +34 -2
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +55 -3
- package/dist/core/nodes/ModuleNode.d.ts +31 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ModuleNode.js +37 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/NetworkRequestNode.js +65 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ObjectLiteralNode.js +43 -0
- package/dist/core/nodes/ParameterNode.d.ts +2 -2
- package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
- package/dist/core/nodes/ParameterNode.js +5 -3
- package/dist/core/nodes/ScopeNode.d.ts +31 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
- package/dist/core/nodes/ScopeNode.js +49 -0
- package/dist/core/nodes/TypeNode.d.ts +36 -0
- package/dist/core/nodes/TypeNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeNode.js +55 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +48 -4
- package/dist/core/nodes/index.d.ts +15 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +17 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
- package/dist/data/builtins/BuiltinRegistry.js +110 -0
- package/dist/data/builtins/definitions.d.ts +28 -0
- package/dist/data/builtins/definitions.d.ts.map +1 -0
- package/dist/data/builtins/definitions.js +250 -0
- package/dist/data/builtins/index.d.ts +10 -0
- package/dist/data/builtins/index.d.ts.map +1 -0
- package/dist/data/builtins/index.js +8 -0
- package/dist/data/builtins/jsGlobals.d.ts +18 -0
- package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
- package/dist/data/builtins/jsGlobals.js +26 -0
- package/dist/data/builtins/types.d.ts +34 -0
- package/dist/data/builtins/types.d.ts.map +1 -0
- package/dist/data/builtins/types.js +7 -0
- package/dist/data/globals/definitions.d.ts +27 -0
- package/dist/data/globals/definitions.d.ts.map +1 -0
- package/dist/data/globals/definitions.js +117 -0
- package/dist/data/globals/index.d.ts +36 -0
- package/dist/data/globals/index.d.ts.map +1 -0
- package/dist/data/globals/index.js +52 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticCollector.js +129 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +247 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticWriter.js +43 -0
- package/dist/diagnostics/index.d.ts +14 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +11 -0
- package/dist/errors/GrafemaError.d.ts +161 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +181 -0
- package/dist/index.d.ts +73 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -1
- package/dist/logging/Logger.d.ts +48 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +134 -0
- package/dist/plugins/Plugin.d.ts +5 -1
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/Plugin.js +33 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +16 -11
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
- package/dist/plugins/analysis/ast/types.d.ts +470 -5
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.js +5 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/location.js +78 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/detector.js +49 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
- package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
- package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/index.js +8 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/parsers.js +80 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +29 -8
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
- package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +173 -147
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
- package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
- package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
- package/dist/plugins/indexing/ServiceDetector.js +28 -15
- package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
- package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
- package/dist/plugins/validation/BrokenImportValidator.js +249 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +103 -77
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +62 -49
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
- package/dist/plugins/validation/EvalBanValidator.js +17 -16
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
- package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
- package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
- package/dist/plugins/validation/NodeCreationValidator.js +415 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
- package/dist/plugins/validation/ShadowingDetector.js +6 -5
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/GitPlugin.js +10 -12
- package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/VCSPlugin.js +5 -5
- package/dist/queries/findCallsInFunction.d.ts +52 -0
- package/dist/queries/findCallsInFunction.d.ts.map +1 -0
- package/dist/queries/findCallsInFunction.js +135 -0
- package/dist/queries/findContainingFunction.d.ts +45 -0
- package/dist/queries/findContainingFunction.d.ts.map +1 -0
- package/dist/queries/findContainingFunction.js +54 -0
- package/dist/queries/index.d.ts +14 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +11 -0
- package/dist/queries/traceValues.d.ts +70 -0
- package/dist/queries/traceValues.d.ts.map +1 -0
- package/dist/queries/traceValues.js +299 -0
- package/dist/queries/types.d.ts +163 -0
- package/dist/queries/types.d.ts.map +1 -0
- package/dist/queries/types.js +9 -0
- package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
- package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/GraphSchemaExtractor.js +124 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/InterfaceSchemaExtractor.js +112 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +72 -62
- package/dist/storage/backends/typeValidation.d.ts.map +1 -1
- package/dist/storage/backends/typeValidation.js +1 -0
- package/dist/validation/PathValidator.d.ts +1 -2
- package/dist/validation/PathValidator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Orchestrator.ts +272 -27
- package/src/config/ConfigLoader.ts +354 -0
- package/src/config/index.ts +5 -0
- package/src/core/ASTWorker.ts +143 -139
- package/src/core/CoverageAnalyzer.ts +243 -0
- package/src/core/FileExplainer.ts +179 -0
- package/src/core/FileNodeManager.ts +100 -0
- package/src/core/GraphFreshnessChecker.ts +143 -0
- package/src/core/HashUtils.ts +48 -0
- package/src/core/IncrementalReanalyzer.ts +192 -0
- package/src/core/NodeFactory.ts +470 -23
- package/src/core/ScopeTracker.ts +154 -0
- package/src/core/SemanticId.ts +192 -0
- package/src/core/VersionManager.ts +3 -2
- package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
- package/src/core/nodes/ArrayLiteralNode.ts +66 -0
- package/src/core/nodes/BranchNode.ts +113 -0
- package/src/core/nodes/CallSiteNode.ts +64 -4
- package/src/core/nodes/CaseNode.ts +123 -0
- package/src/core/nodes/ClassNode.ts +67 -4
- package/src/core/nodes/ConstantNode.ts +5 -4
- package/src/core/nodes/ConstructorCallNode.ts +217 -0
- package/src/core/nodes/DatabaseQueryNode.ts +5 -1
- package/src/core/nodes/DecoratorNode.ts +92 -0
- package/src/core/nodes/EnumNode.ts +87 -0
- package/src/core/nodes/EventListenerNode.ts +7 -4
- package/src/core/nodes/ExportNode.ts +74 -4
- package/src/core/nodes/ExpressionNode.ts +232 -0
- package/src/core/nodes/ExternalModuleNode.ts +65 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/HttpRequestNode.ts +7 -4
- package/src/core/nodes/ImportNode.ts +62 -13
- package/src/core/nodes/InterfaceNode.ts +92 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/LiteralNode.ts +5 -4
- package/src/core/nodes/MethodCallNode.ts +70 -4
- package/src/core/nodes/MethodNode.ts +68 -3
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +66 -0
- package/src/core/nodes/ParameterNode.ts +4 -3
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +79 -0
- package/src/core/nodes/VariableDeclarationNode.ts +58 -4
- package/src/core/nodes/index.ts +21 -1
- package/src/data/builtins/BuiltinRegistry.ts +124 -0
- package/src/data/builtins/definitions.ts +267 -0
- package/src/data/builtins/index.ts +10 -0
- package/src/data/builtins/jsGlobals.ts +28 -0
- package/src/data/builtins/types.ts +36 -0
- package/src/data/globals/definitions.ts +156 -0
- package/src/data/globals/index.ts +66 -0
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +324 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +239 -0
- package/src/index.ts +193 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
- package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +16 -11
- package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +596 -6
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
- package/src/plugins/analysis/ast/utils/index.ts +12 -0
- package/src/plugins/analysis/ast/utils/location.ts +103 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
- package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
- package/src/plugins/discovery/workspaces/detector.ts +63 -0
- package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
- package/src/plugins/discovery/workspaces/index.ts +23 -0
- package/src/plugins/discovery/workspaces/parsers.ts +99 -0
- package/src/plugins/enrichment/AliasTracker.ts +35 -8
- package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
- package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
- package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
- package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
- package/src/plugins/enrichment/MountPointResolver.ts +208 -195
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
- package/src/plugins/validation/BrokenImportValidator.ts +325 -0
- package/src/plugins/validation/CallResolverValidator.ts +131 -110
- package/src/plugins/validation/DataFlowValidator.ts +88 -67
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
- package/src/plugins/validation/ShadowingDetector.ts +6 -5
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
- package/src/plugins/vcs/GitPlugin.ts +40 -12
- package/src/plugins/vcs/VCSPlugin.ts +7 -5
- package/src/queries/README.md +46 -0
- package/src/queries/findCallsInFunction.ts +206 -0
- package/src/queries/findContainingFunction.ts +83 -0
- package/src/queries/index.ts +23 -0
- package/src/queries/traceValues.ts +398 -0
- package/src/queries/types.ts +187 -0
- package/src/schema/GraphSchemaExtractor.ts +177 -0
- package/src/schema/InterfaceSchemaExtractor.ts +173 -0
- package/src/schema/index.ts +5 -0
- package/src/storage/backends/RFDBServerBackend.ts +100 -98
- package/src/storage/backends/typeValidation.ts +1 -0
- package/src/validation/PathValidator.ts +1 -1
- package/dist/core/AnalysisWorker.d.ts +0 -14
- package/dist/core/AnalysisWorker.d.ts.map +0 -1
- package/dist/core/AnalysisWorker.js +0 -307
- package/dist/core/ParallelAnalyzer.d.ts +0 -120
- package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
- package/dist/core/ParallelAnalyzer.js +0 -331
- package/dist/core/QueueWorker.d.ts +0 -12
- package/dist/core/QueueWorker.d.ts.map +0 -1
- package/dist/core/QueueWorker.js +0 -567
- package/dist/core/RFDBClient.d.ts +0 -179
- package/dist/core/RFDBClient.d.ts.map +0 -1
- package/dist/core/RFDBClient.js +0 -429
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
- package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
- package/src/core/AnalysisWorker.ts +0 -410
- package/src/core/ParallelAnalyzer.ts +0 -476
- package/src/core/QueueWorker.ts +0 -780
- package/src/plugins/indexing/ServiceDetector.ts +0 -230
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/Plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,EAEP,MAAM,EACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExE;;GAEG;AACH,8BAAsB,MAAO,YAAW,OAAO;IAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIhD;;OAEG;IACH,QAAQ,KAAK,QAAQ,IAAI,cAAc,CAAC;IAExC;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAE/D;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStE;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;CAqC9C"}
|
package/dist/plugins/Plugin.js
CHANGED
|
@@ -43,4 +43,37 @@ export class Plugin {
|
|
|
43
43
|
}
|
|
44
44
|
return modules;
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a logger from context with console fallback for backward compatibility.
|
|
48
|
+
*/
|
|
49
|
+
log(context) {
|
|
50
|
+
if (context.logger) {
|
|
51
|
+
return context.logger;
|
|
52
|
+
}
|
|
53
|
+
// Fallback to console for backward compatibility
|
|
54
|
+
const safeStringify = (obj) => {
|
|
55
|
+
try {
|
|
56
|
+
const seen = new WeakSet();
|
|
57
|
+
return JSON.stringify(obj, (_key, value) => {
|
|
58
|
+
if (typeof value === 'object' && value !== null) {
|
|
59
|
+
if (seen.has(value))
|
|
60
|
+
return '[Circular]';
|
|
61
|
+
seen.add(value);
|
|
62
|
+
}
|
|
63
|
+
return value;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return '[serialization failed]';
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const format = (msg, ctx) => ctx ? `${msg} ${safeStringify(ctx)}` : msg;
|
|
71
|
+
return {
|
|
72
|
+
error: (msg, ctx) => console.error(`[ERROR] ${format(msg, ctx)}`),
|
|
73
|
+
warn: (msg, ctx) => console.warn(`[WARN] ${format(msg, ctx)}`),
|
|
74
|
+
info: (msg, ctx) => console.log(`[INFO] ${format(msg, ctx)}`),
|
|
75
|
+
debug: (msg, ctx) => console.debug(`[DEBUG] ${format(msg, ctx)}`),
|
|
76
|
+
trace: (msg, ctx) => console.debug(`[TRACE] ${format(msg, ctx)}`),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
46
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/DatabaseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;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":"DatabaseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/DatabaseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiChF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD5D;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,aAAa;IAuL3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAc3B"}
|
|
@@ -6,6 +6,7 @@ import { readFileSync } from 'fs';
|
|
|
6
6
|
import { parse } from '@babel/parser';
|
|
7
7
|
import traverseModule from '@babel/traverse';
|
|
8
8
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
9
|
+
import { getLine, getColumn } from './ast/utils/location.js';
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
11
|
const traverse = traverseModule.default || traverseModule;
|
|
11
12
|
export class DatabaseAnalyzer extends Plugin {
|
|
@@ -22,11 +23,12 @@ export class DatabaseAnalyzer extends Plugin {
|
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
async execute(context) {
|
|
26
|
+
const logger = this.log(context);
|
|
25
27
|
try {
|
|
26
28
|
const { graph } = context;
|
|
27
29
|
// Получаем все MODULE ноды
|
|
28
30
|
const modules = await this.getModules(graph);
|
|
29
|
-
|
|
31
|
+
logger.info('Processing modules', { count: modules.length });
|
|
30
32
|
// Получаем все FUNCTION ноды для связывания
|
|
31
33
|
const functions = await this.getFunctions(graph);
|
|
32
34
|
let queriesCreated = 0;
|
|
@@ -44,10 +46,15 @@ export class DatabaseAnalyzer extends Plugin {
|
|
|
44
46
|
if ((i + 1) % 20 === 0 || i === modules.length - 1) {
|
|
45
47
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
46
48
|
const avgTime = ((Date.now() - startTime) / (i + 1)).toFixed(0);
|
|
47
|
-
|
|
49
|
+
logger.debug('Progress', {
|
|
50
|
+
current: i + 1,
|
|
51
|
+
total: modules.length,
|
|
52
|
+
elapsed: `${elapsed}s`,
|
|
53
|
+
avgTime: `${avgTime}ms/module`
|
|
54
|
+
});
|
|
48
55
|
}
|
|
49
56
|
}
|
|
50
|
-
|
|
57
|
+
logger.info('Analysis complete', { queriesCreated, tablesCreated });
|
|
51
58
|
return createSuccessResult({
|
|
52
59
|
nodes: queriesCreated + tablesCreated,
|
|
53
60
|
edges: edgesCreated
|
|
@@ -57,7 +64,7 @@ export class DatabaseAnalyzer extends Plugin {
|
|
|
57
64
|
});
|
|
58
65
|
}
|
|
59
66
|
catch (error) {
|
|
60
|
-
|
|
67
|
+
logger.error('Analysis failed', { error });
|
|
61
68
|
return createErrorResult(error);
|
|
62
69
|
}
|
|
63
70
|
}
|
|
@@ -170,7 +177,8 @@ export class DatabaseAnalyzer extends Plugin {
|
|
|
170
177
|
object: objectName,
|
|
171
178
|
method: methodName,
|
|
172
179
|
file: module.file,
|
|
173
|
-
line: node
|
|
180
|
+
line: getLine(node),
|
|
181
|
+
column: getColumn(node)
|
|
174
182
|
});
|
|
175
183
|
}
|
|
176
184
|
}
|
|
@@ -235,7 +243,7 @@ export class DatabaseAnalyzer extends Plugin {
|
|
|
235
243
|
}
|
|
236
244
|
}
|
|
237
245
|
catch (error) {
|
|
238
|
-
|
|
246
|
+
// Silent - per-module errors shouldn't spam logs
|
|
239
247
|
}
|
|
240
248
|
return {
|
|
241
249
|
queries: queriesCreated,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ExpressAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwDhF,qBAAa,eAAgB,SAAQ,MAAM;IACzC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2C5D;;OAEG;YACW,aAAa;IA+N3B;;OAEG;YACW,gBAAgB;CA4D/B"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
import { readFileSync } from 'fs';
|
|
6
6
|
import { parse } from '@babel/parser';
|
|
7
7
|
import traverseModule from '@babel/traverse';
|
|
8
|
-
import { dirname, resolve } from 'path';
|
|
8
|
+
import { dirname, resolve, relative } from 'path';
|
|
9
9
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
10
|
+
import { NetworkRequestNode } from '../../core/nodes/NetworkRequestNode.js';
|
|
11
|
+
import { getLine, getColumn } from './ast/utils/location.js';
|
|
10
12
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
13
|
const traverse = traverseModule.default || traverseModule;
|
|
12
14
|
export class ExpressAnalyzer extends Plugin {
|
|
@@ -23,16 +25,12 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
async execute(context) {
|
|
28
|
+
const logger = this.log(context);
|
|
26
29
|
try {
|
|
27
30
|
const { graph } = context;
|
|
28
|
-
//
|
|
29
|
-
const
|
|
30
|
-
await graph.addNode(
|
|
31
|
-
id: networkId,
|
|
32
|
-
type: 'net:request',
|
|
33
|
-
name: '__network__',
|
|
34
|
-
description: 'External HTTP network'
|
|
35
|
-
});
|
|
31
|
+
// Create net:request singleton (GraphBackend handles deduplication)
|
|
32
|
+
const networkNode = NetworkRequestNode.create();
|
|
33
|
+
await graph.addNode(networkNode);
|
|
36
34
|
// Получаем все MODULE ноды
|
|
37
35
|
const modules = await this.getModules(graph);
|
|
38
36
|
let endpointsCreated = 0;
|
|
@@ -40,12 +38,12 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
40
38
|
let edgesCreated = 0;
|
|
41
39
|
// Анализируем каждый модуль
|
|
42
40
|
for (const module of modules) {
|
|
43
|
-
const result = await this.analyzeModule(module, graph,
|
|
41
|
+
const result = await this.analyzeModule(module, graph, networkNode.id);
|
|
44
42
|
endpointsCreated += result.endpoints;
|
|
45
43
|
mountPointsCreated += result.mountPoints;
|
|
46
44
|
edgesCreated += result.edges;
|
|
47
45
|
}
|
|
48
|
-
|
|
46
|
+
logger.info('Analysis complete', { endpointsCreated, mountPointsCreated });
|
|
49
47
|
return createSuccessResult({
|
|
50
48
|
nodes: endpointsCreated + mountPointsCreated + 1, // +1 для EXTERNAL_NETWORK
|
|
51
49
|
edges: edgesCreated
|
|
@@ -55,7 +53,7 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
55
53
|
});
|
|
56
54
|
}
|
|
57
55
|
catch (error) {
|
|
58
|
-
|
|
56
|
+
logger.error('Analysis failed', { error });
|
|
59
57
|
return createErrorResult(error);
|
|
60
58
|
}
|
|
61
59
|
}
|
|
@@ -97,7 +95,7 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
97
95
|
imports.push({
|
|
98
96
|
source,
|
|
99
97
|
specifiers,
|
|
100
|
-
line: importNode
|
|
98
|
+
line: getLine(importNode)
|
|
101
99
|
});
|
|
102
100
|
}
|
|
103
101
|
});
|
|
@@ -126,13 +124,14 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
126
124
|
if (routePath) {
|
|
127
125
|
const method = methodName.toUpperCase();
|
|
128
126
|
endpoints.push({
|
|
129
|
-
id: `http:route#${method}:${routePath}#${module.file}#${node
|
|
127
|
+
id: `http:route#${method}:${routePath}#${module.file}#${getLine(node)}`,
|
|
130
128
|
type: 'http:route',
|
|
131
129
|
method: method,
|
|
132
130
|
path: routePath,
|
|
133
131
|
localPath: routePath,
|
|
134
132
|
file: module.file,
|
|
135
|
-
line: node
|
|
133
|
+
line: getLine(node),
|
|
134
|
+
column: getColumn(node),
|
|
136
135
|
mountedOn: objectName
|
|
137
136
|
});
|
|
138
137
|
}
|
|
@@ -205,13 +204,14 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
205
204
|
// Создаём mount point
|
|
206
205
|
if ((targetFunction || targetVariable) && prefix) {
|
|
207
206
|
mountPoints.push({
|
|
208
|
-
id: `express:mount#${prefix}#${module.file}#${node
|
|
207
|
+
id: `express:mount#${prefix}#${module.file}#${getLine(node)}`,
|
|
209
208
|
type: 'express:mount',
|
|
210
209
|
prefix: prefix,
|
|
211
210
|
targetFunction: targetFunction,
|
|
212
211
|
targetVariable: targetVariable,
|
|
213
212
|
file: module.file,
|
|
214
|
-
line: node
|
|
213
|
+
line: getLine(node),
|
|
214
|
+
column: getColumn(node),
|
|
215
215
|
mountedOn: objectName
|
|
216
216
|
});
|
|
217
217
|
}
|
|
@@ -255,7 +255,7 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
257
|
catch (error) {
|
|
258
|
-
|
|
258
|
+
// Silent - per-module errors shouldn't spam logs
|
|
259
259
|
}
|
|
260
260
|
return {
|
|
261
261
|
endpoints: endpointsCreated,
|
|
@@ -289,7 +289,17 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
289
289
|
}
|
|
290
290
|
// Если нашли целевой модуль, создаем MOUNTS ребро
|
|
291
291
|
if (targetModulePath) {
|
|
292
|
-
|
|
292
|
+
// Derive project root from module's absolute and relative paths
|
|
293
|
+
// module.file is absolute path, module.name is relative path
|
|
294
|
+
const moduleAbsPath = module.file;
|
|
295
|
+
const moduleRelPath = module.name;
|
|
296
|
+
// projectRoot = absolute path minus relative path suffix
|
|
297
|
+
const projectRoot = moduleAbsPath.endsWith(moduleRelPath)
|
|
298
|
+
? moduleAbsPath.slice(0, moduleAbsPath.length - moduleRelPath.length)
|
|
299
|
+
: dirname(moduleAbsPath); // fallback
|
|
300
|
+
// Convert target absolute path to relative path for semantic ID
|
|
301
|
+
const targetRelativePath = relative(projectRoot, targetModulePath);
|
|
302
|
+
const targetModuleId = `${targetRelativePath}->global->MODULE->module`;
|
|
293
303
|
// Проверяем что модуль существует в графе
|
|
294
304
|
const targetModule = await graph.getNode(targetModuleId);
|
|
295
305
|
if (targetModule) {
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExpressResponseAnalyzer - detects Express response patterns
|
|
3
|
+
*
|
|
4
|
+
* For each http:route node:
|
|
5
|
+
* 1. Follow HANDLED_BY edge to get handler function
|
|
6
|
+
* 2. Traverse handler AST for res.json(...), res.send(...) patterns
|
|
7
|
+
* 3. Create RESPONDS_WITH edge from http:route to response argument node
|
|
8
|
+
*
|
|
9
|
+
* Patterns:
|
|
10
|
+
* - res.json({ data })
|
|
11
|
+
* - res.send(variable)
|
|
12
|
+
* - res.status(200).json(data)
|
|
13
|
+
*/
|
|
14
|
+
import { Plugin } from '../Plugin.js';
|
|
15
|
+
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
16
|
+
export declare class ExpressResponseAnalyzer extends Plugin {
|
|
17
|
+
private responseNodeCounter;
|
|
18
|
+
get metadata(): PluginMetadata;
|
|
19
|
+
execute(context: PluginContext): Promise<PluginResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Analyze a single http:route for response patterns
|
|
22
|
+
*/
|
|
23
|
+
private analyzeRouteResponses;
|
|
24
|
+
/**
|
|
25
|
+
* Find res.json/res.send calls within a function at given line
|
|
26
|
+
*/
|
|
27
|
+
private findResponseCalls;
|
|
28
|
+
/**
|
|
29
|
+
* Get response parameter name from function params (typically 'res')
|
|
30
|
+
*/
|
|
31
|
+
private getResponseParamName;
|
|
32
|
+
/**
|
|
33
|
+
* Extract response method info from callee
|
|
34
|
+
* Handles: res.json(), res.send(), res.status(200).json()
|
|
35
|
+
*/
|
|
36
|
+
private extractResponseInfo;
|
|
37
|
+
/**
|
|
38
|
+
* Check if callee is res.methodName()
|
|
39
|
+
*/
|
|
40
|
+
private isResMethodCall;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve response node: find existing variable or create stub.
|
|
43
|
+
*
|
|
44
|
+
* For Identifier arguments (e.g., res.json(statusData)):
|
|
45
|
+
* 1. Try to find existing VARIABLE/PARAMETER/CONSTANT with same name in handler scope
|
|
46
|
+
* 2. If found, return existing node ID (no stub needed)
|
|
47
|
+
* 3. If not found, fall back to creating stub (external/global variables)
|
|
48
|
+
*
|
|
49
|
+
* For non-Identifier arguments (ObjectExpression, CallExpression, etc.):
|
|
50
|
+
* - Always create stub node (existing behavior)
|
|
51
|
+
*
|
|
52
|
+
* @param graph - Graph backend
|
|
53
|
+
* @param file - Handler file path
|
|
54
|
+
* @param call - Response call info (includes identifierName)
|
|
55
|
+
* @param routeId - Route ID (for metadata)
|
|
56
|
+
* @param handlerSemanticId - Handler function's semantic ID (for scope matching)
|
|
57
|
+
* @returns Node ID (existing or newly created)
|
|
58
|
+
*/
|
|
59
|
+
private resolveOrCreateResponseNode;
|
|
60
|
+
/**
|
|
61
|
+
* Find existing VARIABLE/CONSTANT/PARAMETER node in handler scope.
|
|
62
|
+
*
|
|
63
|
+
* Strategy:
|
|
64
|
+
* 1. Parse handler semantic ID to extract scope prefix
|
|
65
|
+
* 2. Query VARIABLE/CONSTANT nodes: match by name, file, scope prefix, and line <= useLine
|
|
66
|
+
* 3. Query PARAMETER nodes: match by name, file, parentFunctionId === handlerSemanticId
|
|
67
|
+
*
|
|
68
|
+
* Scope matching:
|
|
69
|
+
* - Handler ID: "routes.js->anonymous[1]->FUNCTION->anonymous[1]"
|
|
70
|
+
* - Scope prefix: "routes.js->anonymous[1]->"
|
|
71
|
+
* - Variable ID: "routes.js->anonymous[1]->VARIABLE->statusData" (matches prefix)
|
|
72
|
+
* - External ID: "utils.js->VARIABLE->config" (different file)
|
|
73
|
+
*
|
|
74
|
+
* @param graph - Graph backend
|
|
75
|
+
* @param file - File path
|
|
76
|
+
* @param name - Variable name to find
|
|
77
|
+
* @param handlerSemanticId - Handler function's semantic ID
|
|
78
|
+
* @param useLine - Line where identifier is used (variable must be declared before this)
|
|
79
|
+
* @returns Node ID if found, null otherwise
|
|
80
|
+
*/
|
|
81
|
+
private findIdentifierInScope;
|
|
82
|
+
/**
|
|
83
|
+
* Extract scope prefix from handler function's semantic ID.
|
|
84
|
+
*
|
|
85
|
+
* Handler function semantic IDs follow the pattern:
|
|
86
|
+
* {file}->{scope_path}->{type}->{name}
|
|
87
|
+
*
|
|
88
|
+
* Variables declared INSIDE the handler have IDs where the handler's NAME
|
|
89
|
+
* becomes part of THEIR scope path:
|
|
90
|
+
* {file}->{handler_name}->{type}->{var_name}
|
|
91
|
+
*
|
|
92
|
+
* Examples:
|
|
93
|
+
* - Handler: "index.js->global->FUNCTION->anonymous[0]"
|
|
94
|
+
* -> Variables inside: "index.js->anonymous[0]->CONSTANT->statusData"
|
|
95
|
+
* -> Scope prefix: "index.js->anonymous[0]->"
|
|
96
|
+
*
|
|
97
|
+
* - Handler: "routes.js->anonymous[1]->FUNCTION->anonymous[1]"
|
|
98
|
+
* -> Variables inside: "routes.js->anonymous[1]->VARIABLE->data"
|
|
99
|
+
* -> Scope prefix: "routes.js->anonymous[1]->"
|
|
100
|
+
*
|
|
101
|
+
* - Handler: "app.js->global->FUNCTION->handleRequest"
|
|
102
|
+
* -> Variables inside: "app.js->handleRequest->VARIABLE->result"
|
|
103
|
+
* -> Scope prefix: "app.js->handleRequest->"
|
|
104
|
+
*
|
|
105
|
+
* Algorithm:
|
|
106
|
+
* 1. Split by "->"
|
|
107
|
+
* 2. Take file (first part) and handler name (last part)
|
|
108
|
+
* 3. Join with "->" and add trailing "->"
|
|
109
|
+
*
|
|
110
|
+
* @param semanticId - Handler function's semantic ID
|
|
111
|
+
* @returns Scope prefix for matching variables declared inside the handler
|
|
112
|
+
*/
|
|
113
|
+
private extractScopePrefix;
|
|
114
|
+
/**
|
|
115
|
+
* Extract module prefix from semantic ID (for module-level variable access).
|
|
116
|
+
*
|
|
117
|
+
* Examples:
|
|
118
|
+
* - "routes.js->anonymous[1]->FUNCTION->anonymous[1]" -> "routes.js->"
|
|
119
|
+
* - "app.js->startServer->FUNCTION->startServer" -> "app.js->"
|
|
120
|
+
*
|
|
121
|
+
* @param semanticId - Handler function's semantic ID
|
|
122
|
+
* @returns Module prefix for matching module-level variables
|
|
123
|
+
*/
|
|
124
|
+
private extractModulePrefix;
|
|
125
|
+
/**
|
|
126
|
+
* Check if a semantic ID represents a true module-level variable.
|
|
127
|
+
*
|
|
128
|
+
* Semantic IDs have format: file->scope->TYPE->name
|
|
129
|
+
* - Module-level variables have "global" as the scope: "file.js->global->TYPE->name"
|
|
130
|
+
* - Function-local variables have function name as scope: "file.js->funcName->TYPE->name"
|
|
131
|
+
*
|
|
132
|
+
* Examples:
|
|
133
|
+
* - "index.js->global->CONSTANT->CONFIG" -> true (module-level)
|
|
134
|
+
* - "index.js->global->VARIABLE->counter" -> true (module-level)
|
|
135
|
+
* - "index.js->anonymous[0]->CONSTANT->data" -> false (function-local)
|
|
136
|
+
* - "routes.js->handler->VARIABLE->result" -> false (function-local)
|
|
137
|
+
*
|
|
138
|
+
* @param nodeId - The node's semantic ID
|
|
139
|
+
* @param modulePrefix - The module prefix (e.g., "index.js->")
|
|
140
|
+
* @returns true if this is a module-level variable
|
|
141
|
+
*/
|
|
142
|
+
private isModuleLevelId;
|
|
143
|
+
/**
|
|
144
|
+
* Create a node for the response argument
|
|
145
|
+
*/
|
|
146
|
+
private createResponseArgumentNode;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=ExpressResponseAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpressResponseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressResponseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqBhF,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,OAAO,CAAC,mBAAmB,CAAK;IAEhC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC5D;;OAEG;YACW,qBAAqB;IAgEnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwEzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;;;;;;;;;;OAiBG;YACW,2BAA2B;IAoCzC;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,qBAAqB;IAqEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,0BAA0B;CAiFzC"}
|