@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
package/src/Orchestrator.ts
CHANGED
|
@@ -9,10 +9,15 @@ import { fileURLToPath } from 'url';
|
|
|
9
9
|
import { spawn, execSync, ChildProcess } from 'child_process';
|
|
10
10
|
import { setTimeout as sleep } from 'timers/promises';
|
|
11
11
|
import { SimpleProjectDiscovery } from './plugins/discovery/SimpleProjectDiscovery.js';
|
|
12
|
+
import { resolveSourceEntrypoint } from './plugins/discovery/resolveSourceEntrypoint.js';
|
|
12
13
|
import { Profiler } from './core/Profiler.js';
|
|
13
14
|
import { AnalysisQueue } from './core/AnalysisQueue.js';
|
|
15
|
+
import { DiagnosticCollector } from './diagnostics/DiagnosticCollector.js';
|
|
14
16
|
import type { Plugin, PluginContext } from './plugins/Plugin.js';
|
|
15
|
-
import type { GraphBackend } from '@grafema/types';
|
|
17
|
+
import type { GraphBackend, PluginPhase, Logger, LogLevel, IssueSpec, ServiceDefinition } from '@grafema/types';
|
|
18
|
+
import { createLogger } from './logging/Logger.js';
|
|
19
|
+
import { NodeFactory } from './core/NodeFactory.js';
|
|
20
|
+
import type { IssueSeverity } from './core/nodes/IssueNode.js';
|
|
16
21
|
|
|
17
22
|
/**
|
|
18
23
|
* Progress callback info
|
|
@@ -50,8 +55,24 @@ export interface OrchestratorOptions {
|
|
|
50
55
|
onProgress?: ProgressCallback;
|
|
51
56
|
forceAnalysis?: boolean;
|
|
52
57
|
serviceFilter?: string | null;
|
|
58
|
+
/** Override entrypoint, bypasses auto-detection. Path relative to project root. */
|
|
59
|
+
entrypoint?: string;
|
|
53
60
|
indexOnly?: boolean;
|
|
54
61
|
parallel?: ParallelConfig | null;
|
|
62
|
+
/** Logger instance for structured logging. */
|
|
63
|
+
logger?: Logger;
|
|
64
|
+
/** Log level for the default logger. Ignored if logger is provided. */
|
|
65
|
+
logLevel?: LogLevel;
|
|
66
|
+
/**
|
|
67
|
+
* Config-provided services (REG-174).
|
|
68
|
+
* If provided and non-empty, discovery plugins are skipped.
|
|
69
|
+
*/
|
|
70
|
+
services?: ServiceDefinition[];
|
|
71
|
+
/**
|
|
72
|
+
* Enable strict mode for fail-fast debugging.
|
|
73
|
+
* When true, enrichers report unresolved references as fatal errors.
|
|
74
|
+
*/
|
|
75
|
+
strictMode?: boolean;
|
|
55
76
|
}
|
|
56
77
|
|
|
57
78
|
/**
|
|
@@ -125,12 +146,19 @@ export class Orchestrator {
|
|
|
125
146
|
private onProgress: ProgressCallback;
|
|
126
147
|
private forceAnalysis: boolean;
|
|
127
148
|
private serviceFilter: string | null;
|
|
149
|
+
private entrypoint: string | undefined;
|
|
128
150
|
private indexOnly: boolean;
|
|
129
151
|
private profiler: Profiler;
|
|
130
152
|
private parallelConfig: ParallelConfig | null;
|
|
131
153
|
private analysisQueue: AnalysisQueue | null;
|
|
132
154
|
private rfdbServerProcess: ChildProcess | null;
|
|
133
155
|
private _serverWasExternal: boolean;
|
|
156
|
+
private diagnosticCollector: DiagnosticCollector;
|
|
157
|
+
private logger: Logger;
|
|
158
|
+
/** Config-provided services (REG-174) */
|
|
159
|
+
private configServices: ServiceDefinition[] | undefined;
|
|
160
|
+
/** Strict mode flag (REG-330) */
|
|
161
|
+
private strictMode: boolean;
|
|
134
162
|
|
|
135
163
|
constructor(options: OrchestratorOptions = {}) {
|
|
136
164
|
this.graph = options.graph!;
|
|
@@ -140,6 +168,7 @@ export class Orchestrator {
|
|
|
140
168
|
this.onProgress = options.onProgress || (() => {}); // Callback для прогресса
|
|
141
169
|
this.forceAnalysis = options.forceAnalysis || false; // Флаг для игнорирования кэша
|
|
142
170
|
this.serviceFilter = options.serviceFilter || null; // Фильтр для одного сервиса
|
|
171
|
+
this.entrypoint = options.entrypoint; // Override entrypoint, bypasses discovery
|
|
143
172
|
this.indexOnly = options.indexOnly || false; // Только DISCOVERY + INDEXING (для coverage)
|
|
144
173
|
this.profiler = new Profiler('Orchestrator');
|
|
145
174
|
|
|
@@ -149,9 +178,24 @@ export class Orchestrator {
|
|
|
149
178
|
this.rfdbServerProcess = null;
|
|
150
179
|
this._serverWasExternal = false;
|
|
151
180
|
|
|
152
|
-
//
|
|
181
|
+
// Initialize diagnostic collector
|
|
182
|
+
this.diagnosticCollector = new DiagnosticCollector();
|
|
183
|
+
|
|
184
|
+
// Initialize logger (use provided or create default)
|
|
185
|
+
this.logger = options.logger ?? createLogger(options.logLevel ?? 'info');
|
|
186
|
+
|
|
187
|
+
// Store config-provided services (REG-174)
|
|
188
|
+
this.configServices = options.services;
|
|
189
|
+
|
|
190
|
+
// Strict mode configuration (REG-330)
|
|
191
|
+
this.strictMode = options.strictMode ?? false;
|
|
192
|
+
|
|
193
|
+
// Modified auto-add logic: SKIP auto-add if config services provided (REG-174)
|
|
153
194
|
const hasDiscovery = this.plugins.some(p => p.metadata?.phase === 'DISCOVERY');
|
|
154
|
-
|
|
195
|
+
const hasConfigServices = this.configServices && this.configServices.length > 0;
|
|
196
|
+
|
|
197
|
+
if (!hasDiscovery && !hasConfigServices) {
|
|
198
|
+
// Only auto-add if NO discovery plugins AND NO config services
|
|
155
199
|
this.plugins.unshift(new SimpleProjectDiscovery());
|
|
156
200
|
}
|
|
157
201
|
}
|
|
@@ -165,11 +209,38 @@ export class Orchestrator {
|
|
|
165
209
|
// Resolve to absolute path
|
|
166
210
|
const absoluteProjectPath = projectPath.startsWith('/') ? projectPath : resolve(projectPath);
|
|
167
211
|
|
|
212
|
+
// RADICAL SIMPLIFICATION: Clear entire graph once at the start if forceAnalysis
|
|
213
|
+
if (this.forceAnalysis && this.graph.clear) {
|
|
214
|
+
this.logger.info('Clearing entire graph (forceAnalysis=true)');
|
|
215
|
+
await this.graph.clear();
|
|
216
|
+
this.logger.info('Graph cleared successfully');
|
|
217
|
+
}
|
|
218
|
+
|
|
168
219
|
this.onProgress({ phase: 'discovery', currentPlugin: 'Starting discovery...', message: 'Discovering services...', totalFiles: 0, processedFiles: 0 });
|
|
169
220
|
|
|
170
|
-
// PHASE 0: DISCOVERY - запуск плагинов фазы DISCOVERY
|
|
221
|
+
// PHASE 0: DISCOVERY - запуск плагинов фазы DISCOVERY (or use entrypoint override)
|
|
171
222
|
this.profiler.start('DISCOVERY');
|
|
172
|
-
|
|
223
|
+
let manifest: DiscoveryManifest;
|
|
224
|
+
if (this.entrypoint) {
|
|
225
|
+
// Skip discovery, create synthetic manifest with single service
|
|
226
|
+
const entrypointPath = this.entrypoint.startsWith('/')
|
|
227
|
+
? this.entrypoint
|
|
228
|
+
: join(absoluteProjectPath, this.entrypoint);
|
|
229
|
+
const serviceName = this.entrypoint.split('/').pop()?.replace(/\.[^.]+$/, '') || 'main';
|
|
230
|
+
manifest = {
|
|
231
|
+
services: [{
|
|
232
|
+
id: `service:${serviceName}`,
|
|
233
|
+
name: serviceName,
|
|
234
|
+
path: entrypointPath,
|
|
235
|
+
metadata: { entrypoint: entrypointPath }
|
|
236
|
+
}],
|
|
237
|
+
entrypoints: [],
|
|
238
|
+
projectPath: absoluteProjectPath
|
|
239
|
+
};
|
|
240
|
+
this.logger.info('Using entrypoint override', { entrypoint: this.entrypoint, resolved: entrypointPath });
|
|
241
|
+
} else {
|
|
242
|
+
manifest = await this.discover(absoluteProjectPath);
|
|
243
|
+
}
|
|
173
244
|
this.profiler.end('DISCOVERY');
|
|
174
245
|
|
|
175
246
|
const epCount = manifest.entrypoints?.length || 0;
|
|
@@ -181,7 +252,7 @@ export class Orchestrator {
|
|
|
181
252
|
totalFiles: 0,
|
|
182
253
|
processedFiles: 0
|
|
183
254
|
});
|
|
184
|
-
|
|
255
|
+
this.logger.info('Discovery complete', { services: svcCount, entrypoints: epCount });
|
|
185
256
|
|
|
186
257
|
// Build unified list of indexing units from services AND entrypoints
|
|
187
258
|
const indexingUnits = this.buildIndexingUnits(manifest);
|
|
@@ -195,13 +266,12 @@ export class Orchestrator {
|
|
|
195
266
|
u.name.includes(this.serviceFilter!) ||
|
|
196
267
|
u.path.includes(this.serviceFilter!)
|
|
197
268
|
);
|
|
198
|
-
|
|
269
|
+
this.logger.info('Filtering services', { filter: this.serviceFilter, found: unitsToProcess.length, total: indexingUnits.length });
|
|
199
270
|
} else {
|
|
200
271
|
unitsToProcess = indexingUnits;
|
|
201
272
|
}
|
|
202
273
|
|
|
203
|
-
|
|
204
|
-
console.log(`[Orchestrator] Strategy: Phase-by-phase with DFS dependency tree per entrypoint`);
|
|
274
|
+
this.logger.info('Processing indexing units', { count: unitsToProcess.length, strategy: 'Phase-by-phase with DFS' });
|
|
205
275
|
|
|
206
276
|
// PHASE 1: INDEXING - каждый сервис строит своё дерево зависимостей от entrypoint
|
|
207
277
|
const indexingStart = Date.now();
|
|
@@ -232,6 +302,7 @@ export class Orchestrator {
|
|
|
232
302
|
// Параллельно обрабатываем батч units
|
|
233
303
|
await Promise.all(batch.map(async (unit, idx) => {
|
|
234
304
|
const unitStart = Date.now();
|
|
305
|
+
|
|
235
306
|
const unitManifest: UnitManifest = {
|
|
236
307
|
projectPath: manifest.projectPath,
|
|
237
308
|
service: {
|
|
@@ -243,9 +314,13 @@ export class Orchestrator {
|
|
|
243
314
|
modules: []
|
|
244
315
|
};
|
|
245
316
|
|
|
246
|
-
await this.runPhase('INDEXING', {
|
|
317
|
+
await this.runPhase('INDEXING', {
|
|
318
|
+
manifest: unitManifest,
|
|
319
|
+
graph: this.graph,
|
|
320
|
+
workerCount: 1,
|
|
321
|
+
});
|
|
247
322
|
const unitTime = ((Date.now() - unitStart) / 1000).toFixed(2);
|
|
248
|
-
|
|
323
|
+
this.logger.debug('INDEXING complete', { unit: unit.name, duration: unitTime });
|
|
249
324
|
|
|
250
325
|
this.onProgress({
|
|
251
326
|
phase: 'indexing',
|
|
@@ -260,13 +335,12 @@ export class Orchestrator {
|
|
|
260
335
|
processedUnits += batch.length;
|
|
261
336
|
}
|
|
262
337
|
this.profiler.end('INDEXING');
|
|
263
|
-
|
|
338
|
+
this.logger.info('INDEXING phase complete', { duration: ((Date.now() - indexingStart) / 1000).toFixed(2) });
|
|
264
339
|
|
|
265
340
|
// Skip remaining phases if indexOnly mode (for coverage)
|
|
266
341
|
if (this.indexOnly) {
|
|
267
342
|
const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
|
|
268
|
-
|
|
269
|
-
console.log(`[Orchestrator] ⏱️ Total time: ${totalTime}s for ${unitsToProcess.length} units`);
|
|
343
|
+
this.logger.info('indexOnly mode - skipping remaining phases', { duration: totalTime, units: unitsToProcess.length });
|
|
270
344
|
return manifest;
|
|
271
345
|
}
|
|
272
346
|
|
|
@@ -313,9 +387,13 @@ export class Orchestrator {
|
|
|
313
387
|
modules: []
|
|
314
388
|
};
|
|
315
389
|
|
|
316
|
-
await this.runPhase('ANALYSIS', {
|
|
390
|
+
await this.runPhase('ANALYSIS', {
|
|
391
|
+
manifest: unitManifest,
|
|
392
|
+
graph: this.graph,
|
|
393
|
+
workerCount: 1,
|
|
394
|
+
});
|
|
317
395
|
const unitTime = ((Date.now() - unitStart) / 1000).toFixed(2);
|
|
318
|
-
|
|
396
|
+
this.logger.debug('ANALYSIS complete', { unit: unit.name, duration: unitTime });
|
|
319
397
|
|
|
320
398
|
this.onProgress({
|
|
321
399
|
phase: 'analysis',
|
|
@@ -332,7 +410,7 @@ export class Orchestrator {
|
|
|
332
410
|
}
|
|
333
411
|
|
|
334
412
|
this.profiler.end('ANALYSIS');
|
|
335
|
-
|
|
413
|
+
this.logger.info('ANALYSIS phase complete', { duration: ((Date.now() - analysisStart) / 1000).toFixed(2) });
|
|
336
414
|
|
|
337
415
|
// PHASE 3: ENRICHMENT - post-processing, граф traversal, вычисления (глобально)
|
|
338
416
|
const enrichmentStart = Date.now();
|
|
@@ -340,7 +418,28 @@ export class Orchestrator {
|
|
|
340
418
|
this.onProgress({ phase: 'enrichment', currentPlugin: 'Starting enrichment...', message: 'Enriching graph data...', totalFiles: 0, processedFiles: 0 });
|
|
341
419
|
await this.runPhase('ENRICHMENT', { manifest, graph: this.graph, workerCount: this.workerCount });
|
|
342
420
|
this.profiler.end('ENRICHMENT');
|
|
343
|
-
|
|
421
|
+
this.logger.info('ENRICHMENT phase complete', { duration: ((Date.now() - enrichmentStart) / 1000).toFixed(2) });
|
|
422
|
+
|
|
423
|
+
// STRICT MODE BARRIER: Check for fatal errors after ENRICHMENT (REG-330)
|
|
424
|
+
if (this.strictMode) {
|
|
425
|
+
const enrichmentDiagnostics = this.diagnosticCollector.getByPhase('ENRICHMENT');
|
|
426
|
+
const strictErrors = enrichmentDiagnostics.filter(d => d.severity === 'fatal');
|
|
427
|
+
|
|
428
|
+
if (strictErrors.length > 0) {
|
|
429
|
+
this.logger.error(`Strict mode: ${strictErrors.length} unresolved reference(s) found`);
|
|
430
|
+
for (const err of strictErrors) {
|
|
431
|
+
this.logger.error(` [${err.code}] ${err.message}`, {
|
|
432
|
+
file: err.file,
|
|
433
|
+
line: err.line,
|
|
434
|
+
plugin: err.plugin,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
throw new Error(
|
|
438
|
+
`Strict mode: ${strictErrors.length} unresolved reference(s) found during ENRICHMENT. ` +
|
|
439
|
+
`Run without --strict for graceful degradation, or fix the underlying issues.`
|
|
440
|
+
);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
344
443
|
|
|
345
444
|
// PHASE 4: VALIDATION - проверка корректности графа (глобально)
|
|
346
445
|
const validationStart = Date.now();
|
|
@@ -348,7 +447,7 @@ export class Orchestrator {
|
|
|
348
447
|
this.onProgress({ phase: 'validation', currentPlugin: 'Starting validation...', message: 'Validating graph structure...', totalFiles: 0, processedFiles: 0 });
|
|
349
448
|
await this.runPhase('VALIDATION', { manifest, graph: this.graph, workerCount: this.workerCount });
|
|
350
449
|
this.profiler.end('VALIDATION');
|
|
351
|
-
|
|
450
|
+
this.logger.info('VALIDATION phase complete', { duration: ((Date.now() - validationStart) / 1000).toFixed(2) });
|
|
352
451
|
|
|
353
452
|
// Flush graph to ensure all edges are persisted and queryable
|
|
354
453
|
if (this.graph.flush) {
|
|
@@ -356,7 +455,7 @@ export class Orchestrator {
|
|
|
356
455
|
}
|
|
357
456
|
|
|
358
457
|
const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
|
|
359
|
-
|
|
458
|
+
this.logger.info('Analysis complete', { duration: totalTime, units: unitsToProcess.length });
|
|
360
459
|
|
|
361
460
|
// Print profiling summary
|
|
362
461
|
this.profiler.printSummary();
|
|
@@ -409,14 +508,86 @@ export class Orchestrator {
|
|
|
409
508
|
}
|
|
410
509
|
|
|
411
510
|
/**
|
|
412
|
-
* PHASE 0: Discovery - запуск плагинов DISCOVERY
|
|
511
|
+
* PHASE 0: Discovery - запуск плагинов DISCOVERY фазы.
|
|
512
|
+
* If config services are provided, they take precedence and plugins are skipped.
|
|
413
513
|
*/
|
|
414
514
|
async discover(projectPath: string): Promise<DiscoveryManifest> {
|
|
515
|
+
// REG-174: If config provided services, use them directly instead of running discovery plugins
|
|
516
|
+
if (this.configServices && this.configServices.length > 0) {
|
|
517
|
+
this.logger.info('Using config-provided services (skipping discovery plugins)', {
|
|
518
|
+
serviceCount: this.configServices.length
|
|
519
|
+
});
|
|
520
|
+
|
|
521
|
+
const services: ServiceInfo[] = [];
|
|
522
|
+
// For each config service:
|
|
523
|
+
// 1. Resolve path relative to project root (validation ensures paths are relative)
|
|
524
|
+
// 2. Auto-detect entrypoint from package.json if not specified
|
|
525
|
+
// 3. Fall back to 'index.js' if detection fails
|
|
526
|
+
for (const configSvc of this.configServices) {
|
|
527
|
+
// All paths are relative (absolute paths rejected by ConfigLoader validation)
|
|
528
|
+
const servicePath = join(projectPath, configSvc.path);
|
|
529
|
+
|
|
530
|
+
// Resolve entrypoint
|
|
531
|
+
let entrypoint: string;
|
|
532
|
+
if (configSvc.entryPoint) {
|
|
533
|
+
entrypoint = configSvc.entryPoint;
|
|
534
|
+
} else {
|
|
535
|
+
// Auto-detect if not provided
|
|
536
|
+
const packageJsonPath = join(servicePath, 'package.json');
|
|
537
|
+
if (existsSync(packageJsonPath)) {
|
|
538
|
+
try {
|
|
539
|
+
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
540
|
+
entrypoint = resolveSourceEntrypoint(servicePath, pkg) ?? pkg.main ?? 'index.js';
|
|
541
|
+
} catch (e) {
|
|
542
|
+
this.logger.warn('Failed to read package.json for auto-detection', {
|
|
543
|
+
service: configSvc.name,
|
|
544
|
+
path: packageJsonPath,
|
|
545
|
+
error: (e as Error).message
|
|
546
|
+
});
|
|
547
|
+
entrypoint = 'index.js';
|
|
548
|
+
}
|
|
549
|
+
} else {
|
|
550
|
+
entrypoint = 'index.js';
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
// Create SERVICE node
|
|
555
|
+
const serviceNode = NodeFactory.createService(configSvc.name, servicePath, {
|
|
556
|
+
discoveryMethod: 'config',
|
|
557
|
+
entrypoint: entrypoint,
|
|
558
|
+
});
|
|
559
|
+
await this.graph.addNode(serviceNode);
|
|
560
|
+
|
|
561
|
+
services.push({
|
|
562
|
+
id: serviceNode.id,
|
|
563
|
+
name: configSvc.name,
|
|
564
|
+
path: servicePath,
|
|
565
|
+
metadata: {
|
|
566
|
+
entrypoint: join(servicePath, entrypoint),
|
|
567
|
+
},
|
|
568
|
+
});
|
|
569
|
+
|
|
570
|
+
this.logger.info('Registered config service', {
|
|
571
|
+
name: configSvc.name,
|
|
572
|
+
path: servicePath,
|
|
573
|
+
entrypoint: entrypoint
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
return {
|
|
578
|
+
services,
|
|
579
|
+
entrypoints: [], // Config services don't provide entrypoints
|
|
580
|
+
projectPath: projectPath
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
// ORIGINAL CODE: Run discovery plugins if no config services
|
|
415
585
|
const context = {
|
|
416
586
|
projectPath,
|
|
417
587
|
graph: this.graph,
|
|
418
588
|
config: this.config,
|
|
419
|
-
phase: 'DISCOVERY'
|
|
589
|
+
phase: 'DISCOVERY',
|
|
590
|
+
logger: this.logger,
|
|
420
591
|
};
|
|
421
592
|
|
|
422
593
|
// Фильтруем плагины для фазы DISCOVERY
|
|
@@ -491,9 +662,76 @@ export class Orchestrator {
|
|
|
491
662
|
const pluginContext: PluginContext = {
|
|
492
663
|
...context,
|
|
493
664
|
onProgress: this.onProgress as unknown as PluginContext['onProgress'],
|
|
494
|
-
forceAnalysis: this.forceAnalysis
|
|
665
|
+
forceAnalysis: this.forceAnalysis,
|
|
666
|
+
logger: this.logger,
|
|
667
|
+
strictMode: this.strictMode, // REG-330: Pass strict mode flag
|
|
495
668
|
};
|
|
496
|
-
|
|
669
|
+
|
|
670
|
+
// Add reportIssue for VALIDATION phase
|
|
671
|
+
if (phaseName === 'VALIDATION') {
|
|
672
|
+
pluginContext.reportIssue = async (issue: IssueSpec): Promise<string> => {
|
|
673
|
+
const node = NodeFactory.createIssue(
|
|
674
|
+
issue.category,
|
|
675
|
+
issue.severity as IssueSeverity,
|
|
676
|
+
issue.message,
|
|
677
|
+
plugin.metadata.name,
|
|
678
|
+
issue.file,
|
|
679
|
+
issue.line,
|
|
680
|
+
issue.column || 0,
|
|
681
|
+
{ context: issue.context }
|
|
682
|
+
);
|
|
683
|
+
await context.graph.addNode(node);
|
|
684
|
+
if (issue.targetNodeId) {
|
|
685
|
+
await context.graph.addEdge({
|
|
686
|
+
src: node.id,
|
|
687
|
+
dst: issue.targetNodeId,
|
|
688
|
+
type: 'AFFECTS',
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
return node.id;
|
|
692
|
+
};
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
try {
|
|
696
|
+
const result = await plugin.execute(pluginContext);
|
|
697
|
+
|
|
698
|
+
// Collect errors into diagnostics
|
|
699
|
+
this.diagnosticCollector.addFromPluginResult(
|
|
700
|
+
phaseName as PluginPhase,
|
|
701
|
+
plugin.metadata.name,
|
|
702
|
+
result
|
|
703
|
+
);
|
|
704
|
+
|
|
705
|
+
// Log plugin completion with warning if errors occurred
|
|
706
|
+
if (!result.success) {
|
|
707
|
+
console.warn(`[Orchestrator] Plugin ${plugin.metadata.name} reported failure`, {
|
|
708
|
+
errors: result.errors.length,
|
|
709
|
+
warnings: result.warnings.length,
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// Check for fatal errors - STOP immediately
|
|
714
|
+
if (this.diagnosticCollector.hasFatal()) {
|
|
715
|
+
const allDiagnostics = this.diagnosticCollector.getAll();
|
|
716
|
+
const fatal = allDiagnostics.find(d => d.severity === 'fatal');
|
|
717
|
+
throw new Error(`Fatal error in ${plugin.metadata.name}: ${fatal?.message || 'Unknown fatal error'}`);
|
|
718
|
+
}
|
|
719
|
+
} catch (e) {
|
|
720
|
+
// Plugin threw an exception (not just returned errors)
|
|
721
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
722
|
+
|
|
723
|
+
// Don't re-add if this was already a fatal error we threw
|
|
724
|
+
if (!this.diagnosticCollector.hasFatal()) {
|
|
725
|
+
this.diagnosticCollector.add({
|
|
726
|
+
code: 'ERR_PLUGIN_THREW',
|
|
727
|
+
severity: 'fatal',
|
|
728
|
+
message: error.message,
|
|
729
|
+
phase: phaseName as PluginPhase,
|
|
730
|
+
plugin: plugin.metadata.name,
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
throw error; // Re-throw to stop analysis
|
|
734
|
+
}
|
|
497
735
|
|
|
498
736
|
// Send completion for this plugin
|
|
499
737
|
this.onProgress({
|
|
@@ -504,6 +742,13 @@ export class Orchestrator {
|
|
|
504
742
|
}
|
|
505
743
|
}
|
|
506
744
|
|
|
745
|
+
/**
|
|
746
|
+
* Get the diagnostic collector for retrieving all collected diagnostics
|
|
747
|
+
*/
|
|
748
|
+
getDiagnostics(): DiagnosticCollector {
|
|
749
|
+
return this.diagnosticCollector;
|
|
750
|
+
}
|
|
751
|
+
|
|
507
752
|
/**
|
|
508
753
|
* Run queue-based parallel analysis using worker_threads and RFDB server
|
|
509
754
|
*
|
|
@@ -612,15 +857,15 @@ export class Orchestrator {
|
|
|
612
857
|
|
|
613
858
|
// Check if server binary exists
|
|
614
859
|
const projectRoot = join(dirname(fileURLToPath(import.meta.url)), '../..');
|
|
615
|
-
const serverBinary = join(projectRoot, '
|
|
616
|
-
const debugBinary = join(projectRoot, '
|
|
860
|
+
const serverBinary = join(projectRoot, 'packages/rfdb-server/target/release/rfdb-server');
|
|
861
|
+
const debugBinary = join(projectRoot, 'packages/rfdb-server/target/debug/rfdb-server');
|
|
617
862
|
|
|
618
863
|
let binaryPath = existsSync(serverBinary) ? serverBinary : debugBinary;
|
|
619
864
|
|
|
620
865
|
if (!existsSync(binaryPath)) {
|
|
621
866
|
console.log(`[Orchestrator] RFDB server binary not found at ${binaryPath}, building...`);
|
|
622
867
|
execSync('cargo build --bin rfdb-server', {
|
|
623
|
-
cwd: join(projectRoot, '
|
|
868
|
+
cwd: join(projectRoot, 'packages/rfdb-server'),
|
|
624
869
|
stdio: 'inherit',
|
|
625
870
|
});
|
|
626
871
|
binaryPath = debugBinary;
|