@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
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* Строит дерево зависимостей от entrypoint через DFS (как в file2host.js)
|
|
4
4
|
*/
|
|
5
5
|
import { readFileSync, existsSync } from 'fs';
|
|
6
|
-
import { join, resolve, dirname } from 'path';
|
|
6
|
+
import { join, resolve, dirname, relative, basename } from 'path';
|
|
7
7
|
import { createHash } from 'crypto';
|
|
8
|
-
import {
|
|
8
|
+
import { minimatch } from 'minimatch';
|
|
9
|
+
import { Plugin, createErrorResult } from '../Plugin.js';
|
|
9
10
|
// @ts-expect-error - no type declarations for node-source-walk
|
|
10
11
|
import Walker from 'node-source-walk';
|
|
11
|
-
import {
|
|
12
|
+
import { LanguageError } from '../../errors/GrafemaError.js';
|
|
12
13
|
// Test file patterns (can be overridden in config)
|
|
13
14
|
const DEFAULT_TEST_PATTERNS = [
|
|
14
15
|
/[/\\]test[/\\]/, // /test/
|
|
@@ -25,9 +26,15 @@ export class JSModuleIndexer extends Plugin {
|
|
|
25
26
|
cache;
|
|
26
27
|
testPatterns;
|
|
27
28
|
markTestFiles;
|
|
29
|
+
// Include/exclude pattern filtering (REG-185)
|
|
30
|
+
includePatterns;
|
|
31
|
+
excludePatterns;
|
|
32
|
+
projectPath = '';
|
|
28
33
|
constructor() {
|
|
29
34
|
super();
|
|
30
|
-
this.walker = new Walker(
|
|
35
|
+
this.walker = new Walker({
|
|
36
|
+
plugins: ['jsx', 'typescript']
|
|
37
|
+
});
|
|
31
38
|
this.cache = new Map(); // Кеш зависимостей файла
|
|
32
39
|
this.testPatterns = DEFAULT_TEST_PATTERNS;
|
|
33
40
|
this.markTestFiles = true; // Default: enabled
|
|
@@ -40,6 +47,39 @@ export class JSModuleIndexer extends Plugin {
|
|
|
40
47
|
return false;
|
|
41
48
|
return this.testPatterns.some(pattern => pattern.test(filePath));
|
|
42
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if a file should be skipped based on include/exclude patterns.
|
|
52
|
+
*
|
|
53
|
+
* Logic:
|
|
54
|
+
* 1. If file matches any exclude pattern -> SKIP
|
|
55
|
+
* 2. If include patterns specified AND file doesn't match any -> SKIP
|
|
56
|
+
* 3. Otherwise -> PROCESS
|
|
57
|
+
*
|
|
58
|
+
* @param absolutePath - Absolute path to the file
|
|
59
|
+
* @returns true if file should be skipped, false if it should be processed
|
|
60
|
+
*/
|
|
61
|
+
shouldSkipFile(absolutePath) {
|
|
62
|
+
// Normalize to relative path for pattern matching
|
|
63
|
+
const relativePath = relative(this.projectPath, absolutePath).replace(/\\/g, '/');
|
|
64
|
+
// Check exclude patterns first (if any match, skip)
|
|
65
|
+
if (this.excludePatterns && this.excludePatterns.length > 0) {
|
|
66
|
+
for (const pattern of this.excludePatterns) {
|
|
67
|
+
if (minimatch(relativePath, pattern, { dot: true })) {
|
|
68
|
+
return true; // Excluded
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Check include patterns (if specified, file must match at least one)
|
|
73
|
+
if (this.includePatterns && this.includePatterns.length > 0) {
|
|
74
|
+
for (const pattern of this.includePatterns) {
|
|
75
|
+
if (minimatch(relativePath, pattern, { dot: true })) {
|
|
76
|
+
return false; // Included
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return true; // Include specified but file didn't match any
|
|
80
|
+
}
|
|
81
|
+
return false; // No filtering, process file
|
|
82
|
+
}
|
|
43
83
|
get metadata() {
|
|
44
84
|
return {
|
|
45
85
|
name: 'JSModuleIndexer',
|
|
@@ -161,22 +201,38 @@ export class JSModuleIndexer extends Plugin {
|
|
|
161
201
|
return path;
|
|
162
202
|
}
|
|
163
203
|
async execute(context) {
|
|
204
|
+
const logger = this.log(context);
|
|
164
205
|
try {
|
|
165
206
|
const { graph, onProgress, config } = context;
|
|
166
207
|
const manifest = context.manifest;
|
|
167
208
|
const projectPath = manifest?.projectPath ?? '';
|
|
168
209
|
const service = manifest?.service ?? { id: '', name: '', path: '' };
|
|
210
|
+
// Collect parse errors to report (REG-147)
|
|
211
|
+
const parseErrors = [];
|
|
212
|
+
// Store projectPath for shouldSkipFile()
|
|
213
|
+
this.projectPath = projectPath;
|
|
214
|
+
// Read include/exclude patterns from config (REG-185)
|
|
215
|
+
const orchConfig = config;
|
|
216
|
+
this.includePatterns = orchConfig?.include;
|
|
217
|
+
this.excludePatterns = orchConfig?.exclude;
|
|
218
|
+
// Log if patterns are configured
|
|
219
|
+
if (this.includePatterns || this.excludePatterns) {
|
|
220
|
+
logger.info('File filtering enabled', {
|
|
221
|
+
include: this.includePatterns?.length ?? 0,
|
|
222
|
+
exclude: this.excludePatterns?.length ?? 0,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
169
225
|
// Check config for test file marking
|
|
170
226
|
if (config?.analysis?.tests?.markTestFiles === false) {
|
|
171
227
|
this.markTestFiles = false;
|
|
172
228
|
}
|
|
173
|
-
|
|
174
|
-
|
|
229
|
+
// Use metadata.entrypoint if available (from config services), otherwise fall back to path
|
|
230
|
+
const entrypoint = service.metadata?.entrypoint || service.path;
|
|
175
231
|
// Резолвим entrypoint относительно projectPath
|
|
176
232
|
const absoluteEntrypoint = entrypoint.startsWith('/')
|
|
177
233
|
? entrypoint
|
|
178
234
|
: join(projectPath, entrypoint);
|
|
179
|
-
|
|
235
|
+
logger.info('Building dependency tree', { service: service.name });
|
|
180
236
|
// DFS через стек (как в file2host.js)
|
|
181
237
|
const visited = new Set();
|
|
182
238
|
const stack = [{ file: absoluteEntrypoint, depth: 0 }];
|
|
@@ -192,6 +248,13 @@ export class JSModuleIndexer extends Plugin {
|
|
|
192
248
|
const PROGRESS_INTERVAL = 10; // Report every N files
|
|
193
249
|
while (stack.length > 0 && visited.size < MAX_MODULES) {
|
|
194
250
|
const { file: currentFile, depth } = stack.pop();
|
|
251
|
+
// Check if file should be skipped based on include/exclude patterns (REG-185)
|
|
252
|
+
if (this.shouldSkipFile(currentFile)) {
|
|
253
|
+
logger.debug('Skipping file (filtered by patterns)', {
|
|
254
|
+
file: currentFile.replace(projectPath, '')
|
|
255
|
+
});
|
|
256
|
+
continue; // Don't process, don't follow imports
|
|
257
|
+
}
|
|
195
258
|
// Report progress every PROGRESS_INTERVAL files
|
|
196
259
|
if (onProgress && visited.size - lastProgressReport >= PROGRESS_INTERVAL) {
|
|
197
260
|
onProgress({
|
|
@@ -203,31 +266,44 @@ export class JSModuleIndexer extends Plugin {
|
|
|
203
266
|
});
|
|
204
267
|
lastProgressReport = visited.size;
|
|
205
268
|
}
|
|
206
|
-
|
|
269
|
+
logger.debug('Processing file', { file: currentFile.replace(projectPath, ''), depth });
|
|
207
270
|
if (depth > MAX_DEPTH) {
|
|
208
|
-
|
|
271
|
+
logger.warn('Max depth reached', { maxDepth: MAX_DEPTH, file: currentFile });
|
|
209
272
|
continue;
|
|
210
273
|
}
|
|
211
274
|
// Парсим зависимости
|
|
212
275
|
const deps = this.processFile(currentFile, projectPath);
|
|
213
|
-
|
|
276
|
+
logger.debug('Found dependencies', { file: currentFile.replace(projectPath, ''), count: deps instanceof Error ? 0 : deps.length });
|
|
214
277
|
if (deps instanceof Error) {
|
|
215
278
|
if (!deps.message.includes('ENOENT')) {
|
|
216
|
-
|
|
279
|
+
const relativePath = relative(projectPath, currentFile) || basename(currentFile);
|
|
280
|
+
const error = new LanguageError(`Failed to parse ${relativePath}: ${deps.message}`, 'ERR_PARSE_FAILURE', {
|
|
281
|
+
filePath: currentFile,
|
|
282
|
+
phase: 'INDEXING',
|
|
283
|
+
plugin: 'JSModuleIndexer',
|
|
284
|
+
}, 'Check file syntax or ensure the file is a supported JavaScript/TypeScript file');
|
|
285
|
+
parseErrors.push(error);
|
|
286
|
+
logger.debug('Parse error', { file: currentFile, error: deps.message });
|
|
217
287
|
}
|
|
218
288
|
continue;
|
|
219
289
|
}
|
|
220
|
-
// Создаём MODULE ноду для текущего файла
|
|
290
|
+
// Создаём MODULE ноду для текущего файла с semantic ID
|
|
221
291
|
const fileHash = this.calculateFileHash(currentFile);
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
//
|
|
292
|
+
const relativePath = relative(projectPath, currentFile) || basename(currentFile);
|
|
293
|
+
const semanticId = `${relativePath}->global->MODULE->module`;
|
|
294
|
+
// Construct MODULE node manually to preserve absolute file path for analyzers
|
|
225
295
|
const isTest = this.isTestFile(currentFile);
|
|
226
|
-
const moduleNode =
|
|
227
|
-
|
|
296
|
+
const moduleNode = {
|
|
297
|
+
id: semanticId,
|
|
298
|
+
type: 'MODULE',
|
|
299
|
+
name: relativePath,
|
|
300
|
+
file: currentFile, // Keep absolute path for file reading in analyzers
|
|
301
|
+
line: 0,
|
|
302
|
+
contentHash: fileHash || '',
|
|
228
303
|
isTest
|
|
229
|
-
}
|
|
230
|
-
|
|
304
|
+
};
|
|
305
|
+
const moduleId = moduleNode.id;
|
|
306
|
+
logger.debug('Creating MODULE node', { moduleId: moduleNode.id });
|
|
231
307
|
await graph.addNode(moduleNode);
|
|
232
308
|
nodesCreated++;
|
|
233
309
|
// Always create SERVICE -> CONTAINS -> MODULE edge (even if module exists)
|
|
@@ -241,23 +317,24 @@ export class JSModuleIndexer extends Plugin {
|
|
|
241
317
|
for (const dep of deps) {
|
|
242
318
|
if (dep.startsWith('package::')) {
|
|
243
319
|
// npm пакет - игнорируем пока
|
|
244
|
-
|
|
320
|
+
logger.debug('Skipping npm package', { package: dep });
|
|
245
321
|
continue;
|
|
246
322
|
}
|
|
247
323
|
const resolvedDep = this.resolveModulePath(dep);
|
|
248
|
-
|
|
324
|
+
logger.debug('Resolved dependency', { from: dep, to: resolvedDep.replace(projectPath, '') });
|
|
249
325
|
// Добавляем в стек если ещё не посещали
|
|
250
326
|
if (!visited.has(resolvedDep)) {
|
|
251
327
|
visited.add(resolvedDep);
|
|
252
328
|
stack.push({ file: resolvedDep, depth: depth + 1 });
|
|
253
|
-
|
|
329
|
+
logger.debug('Added to stack', { depth: depth + 1 });
|
|
254
330
|
}
|
|
255
331
|
else {
|
|
256
|
-
|
|
332
|
+
logger.debug('Already visited, skipping', { file: resolvedDep });
|
|
257
333
|
}
|
|
258
334
|
// Queue DEPENDS_ON edges for later (after all nodes exist)
|
|
259
|
-
|
|
260
|
-
const
|
|
335
|
+
// Use semantic ID format for dependency reference
|
|
336
|
+
const depRelativePath = relative(projectPath, resolvedDep) || basename(resolvedDep);
|
|
337
|
+
const depModuleId = `${depRelativePath}->global->MODULE->module`;
|
|
261
338
|
pendingDependsOnEdges.push({
|
|
262
339
|
src: moduleId,
|
|
263
340
|
dst: depModuleId,
|
|
@@ -273,9 +350,11 @@ export class JSModuleIndexer extends Plugin {
|
|
|
273
350
|
}
|
|
274
351
|
// Warning if hit MAX_MODULES limit
|
|
275
352
|
if (visited.size >= MAX_MODULES) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
353
|
+
logger.warn('Hit MAX_MODULES limit', {
|
|
354
|
+
service: service.name,
|
|
355
|
+
limit: MAX_MODULES,
|
|
356
|
+
unprocessedInStack: stack.length
|
|
357
|
+
});
|
|
279
358
|
}
|
|
280
359
|
// Final progress report
|
|
281
360
|
if (onProgress) {
|
|
@@ -288,11 +367,22 @@ export class JSModuleIndexer extends Plugin {
|
|
|
288
367
|
currentService: service.name
|
|
289
368
|
});
|
|
290
369
|
}
|
|
291
|
-
|
|
292
|
-
|
|
370
|
+
logger.info('Indexing complete', {
|
|
371
|
+
service: service.name,
|
|
372
|
+
modulesCreated: nodesCreated,
|
|
373
|
+
totalInTree: visited.size
|
|
374
|
+
});
|
|
375
|
+
// Return result with parse errors (REG-147)
|
|
376
|
+
return {
|
|
377
|
+
success: true,
|
|
378
|
+
created: { nodes: nodesCreated, edges: edgesCreated },
|
|
379
|
+
errors: parseErrors,
|
|
380
|
+
warnings: [],
|
|
381
|
+
metadata: { totalModules: visited.size },
|
|
382
|
+
};
|
|
293
383
|
}
|
|
294
384
|
catch (error) {
|
|
295
|
-
|
|
385
|
+
logger.error('Indexing failed', { error });
|
|
296
386
|
return createErrorResult(error);
|
|
297
387
|
}
|
|
298
388
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* RustModuleIndexer - plugin for indexing Rust modules
|
|
3
|
-
* Discovers .rs files in
|
|
3
|
+
* Discovers .rs files in packages/rfdb-server/src/ directory
|
|
4
4
|
*/
|
|
5
5
|
import { Plugin } from '../Plugin.js';
|
|
6
6
|
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RustModuleIndexer.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/RustModuleIndexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUhF,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,OAAO,CAAC,YAAY,CAAW;;IAO/B,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAclB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"RustModuleIndexer.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/RustModuleIndexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUhF,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,OAAO,CAAC,YAAY,CAAW;;IAO/B,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAclB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAkE7D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* RustModuleIndexer - plugin for indexing Rust modules
|
|
3
|
-
* Discovers .rs files in
|
|
3
|
+
* Discovers .rs files in packages/rfdb-server/src/ directory
|
|
4
4
|
*/
|
|
5
5
|
import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
|
|
6
6
|
import { resolve, relative, basename, join } from 'path';
|
|
@@ -84,19 +84,20 @@ export class RustModuleIndexer extends Plugin {
|
|
|
84
84
|
return name;
|
|
85
85
|
}
|
|
86
86
|
async execute(context) {
|
|
87
|
+
const logger = this.log(context);
|
|
87
88
|
const { manifest, graph, onProgress } = context;
|
|
88
89
|
// Cast manifest to expected shape
|
|
89
90
|
const typedManifest = manifest;
|
|
90
91
|
const { projectPath } = typedManifest;
|
|
91
|
-
// Find
|
|
92
|
-
const rustRoot = resolve(projectPath, '
|
|
92
|
+
// Find packages/rfdb-server/src directory
|
|
93
|
+
const rustRoot = resolve(projectPath, 'packages/rfdb-server/src');
|
|
93
94
|
if (!existsSync(rustRoot)) {
|
|
94
|
-
|
|
95
|
+
logger.info('packages/rfdb-server/src not found, skipping');
|
|
95
96
|
return createSuccessResult({ nodes: 0, edges: 0 }, { skipped: true });
|
|
96
97
|
}
|
|
97
98
|
// Discover all .rs files recursively
|
|
98
99
|
const rsFiles = this.findRustFiles(rustRoot);
|
|
99
|
-
|
|
100
|
+
logger.info('Found Rust files', { count: rsFiles.length });
|
|
100
101
|
let nodesCreated = 0;
|
|
101
102
|
const errors = [];
|
|
102
103
|
for (const filePath of rsFiles) {
|
|
@@ -132,9 +133,9 @@ export class RustModuleIndexer extends Plugin {
|
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
if (errors.length > 0) {
|
|
135
|
-
|
|
136
|
+
logger.warn('Errors during indexing', { errorCount: errors.length });
|
|
136
137
|
}
|
|
137
|
-
|
|
138
|
+
logger.info('Rust modules indexed', { count: nodesCreated });
|
|
138
139
|
return createSuccessResult({ nodes: nodesCreated, edges: 0 }, { errors: errors.length });
|
|
139
140
|
}
|
|
140
141
|
}
|
|
@@ -15,6 +15,11 @@ interface DetectorContext {
|
|
|
15
15
|
graph: {
|
|
16
16
|
addNode(node: NodeRecord): Promise<void>;
|
|
17
17
|
};
|
|
18
|
+
logger?: {
|
|
19
|
+
info(message: string, data?: Record<string, unknown>): void;
|
|
20
|
+
debug(message: string, data?: Record<string, unknown>): void;
|
|
21
|
+
warn(message: string, data?: Record<string, unknown>): void;
|
|
22
|
+
};
|
|
18
23
|
}
|
|
19
24
|
export declare class ServiceDetector {
|
|
20
25
|
name: string;
|
|
@@ -39,6 +44,11 @@ export declare class ServiceDetector {
|
|
|
39
44
|
private createServiceFromDir;
|
|
40
45
|
/**
|
|
41
46
|
* Находит entry point сервиса
|
|
47
|
+
*
|
|
48
|
+
* Resolution priority:
|
|
49
|
+
* 1. TypeScript source (via resolveSourceEntrypoint)
|
|
50
|
+
* 2. package.json main field
|
|
51
|
+
* 3. Standard fallback candidates
|
|
42
52
|
*/
|
|
43
53
|
private findEntryPoint;
|
|
44
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceDetector.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/ServiceDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ServiceDetector.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/ServiceDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD;;GAEG;AACH,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1C,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC7D,CAAC;CACH;AAwBD,qBAAa,eAAe;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;;IAQjB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CjE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CAsCvB"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
|
|
10
10
|
import { join, basename } from 'path';
|
|
11
|
+
import { resolveSourceEntrypoint } from '../discovery/resolveSourceEntrypoint.js';
|
|
11
12
|
export class ServiceDetector {
|
|
12
13
|
name;
|
|
13
14
|
phase;
|
|
@@ -21,21 +22,21 @@ export class ServiceDetector {
|
|
|
21
22
|
* Анализирует проект и создаёт SERVICE ноды
|
|
22
23
|
*/
|
|
23
24
|
async analyze(context) {
|
|
24
|
-
const { projectPath, graph } = context;
|
|
25
|
+
const { projectPath, graph, logger } = context;
|
|
25
26
|
const services = [];
|
|
26
|
-
|
|
27
|
+
logger?.info('Detecting services', { projectPath });
|
|
27
28
|
// Паттерн 1: Монорепо структура (apps/, packages/, services/)
|
|
28
29
|
const monorepoPatterns = ['apps', 'packages', 'services'];
|
|
29
30
|
for (const pattern of monorepoPatterns) {
|
|
30
31
|
const monorepoDir = join(projectPath, pattern);
|
|
31
32
|
if (existsSync(monorepoDir)) {
|
|
32
|
-
const detected = this.detectServicesInDir(monorepoDir, projectPath);
|
|
33
|
+
const detected = this.detectServicesInDir(monorepoDir, projectPath, logger);
|
|
33
34
|
services.push(...detected);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
// Паттерн 2: Корневой проект (если нет монорепо)
|
|
37
38
|
if (services.length === 0) {
|
|
38
|
-
const rootService = this.detectRootService(projectPath);
|
|
39
|
+
const rootService = this.detectRootService(projectPath, logger);
|
|
39
40
|
if (rootService) {
|
|
40
41
|
services.push(rootService);
|
|
41
42
|
}
|
|
@@ -54,14 +55,14 @@ export class ServiceDetector {
|
|
|
54
55
|
}
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
|
-
|
|
58
|
-
services.forEach(s =>
|
|
58
|
+
logger?.info('Services detected', { count: services.length });
|
|
59
|
+
services.forEach(s => logger?.debug('Service found', { name: s.name, path: s.path }));
|
|
59
60
|
return context;
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
63
|
* Обнаруживает сервисы в директории монорепо
|
|
63
64
|
*/
|
|
64
|
-
detectServicesInDir(dir, projectPath) {
|
|
65
|
+
detectServicesInDir(dir, projectPath, logger) {
|
|
65
66
|
const services = [];
|
|
66
67
|
try {
|
|
67
68
|
const entries = readdirSync(dir);
|
|
@@ -75,7 +76,7 @@ export class ServiceDetector {
|
|
|
75
76
|
const packageJsonPath = join(fullPath, 'package.json');
|
|
76
77
|
const hasPackageJson = existsSync(packageJsonPath);
|
|
77
78
|
if (hasPackageJson) {
|
|
78
|
-
const service = this.createServiceFromDir(fullPath, entry, projectPath);
|
|
79
|
+
const service = this.createServiceFromDir(fullPath, entry, projectPath, logger);
|
|
79
80
|
if (service) {
|
|
80
81
|
services.push(service);
|
|
81
82
|
}
|
|
@@ -83,25 +84,25 @@ export class ServiceDetector {
|
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
catch (error) {
|
|
86
|
-
|
|
87
|
+
logger?.warn('Error scanning directory', { dir, error: error.message });
|
|
87
88
|
}
|
|
88
89
|
return services;
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
91
92
|
* Обнаруживает корневой сервис (не монорепо)
|
|
92
93
|
*/
|
|
93
|
-
detectRootService(projectPath) {
|
|
94
|
+
detectRootService(projectPath, logger) {
|
|
94
95
|
const packageJsonPath = join(projectPath, 'package.json');
|
|
95
96
|
if (!existsSync(packageJsonPath)) {
|
|
96
97
|
return null;
|
|
97
98
|
}
|
|
98
99
|
const projectName = basename(projectPath);
|
|
99
|
-
return this.createServiceFromDir(projectPath, projectName, projectPath);
|
|
100
|
+
return this.createServiceFromDir(projectPath, projectName, projectPath, logger);
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
102
103
|
* Создаёт объект сервиса из директории
|
|
103
104
|
*/
|
|
104
|
-
createServiceFromDir(servicePath, serviceName, projectPath) {
|
|
105
|
+
createServiceFromDir(servicePath, serviceName, projectPath, logger) {
|
|
105
106
|
try {
|
|
106
107
|
const packageJsonPath = join(servicePath, 'package.json');
|
|
107
108
|
let packageJson = null;
|
|
@@ -127,19 +128,31 @@ export class ServiceDetector {
|
|
|
127
128
|
};
|
|
128
129
|
}
|
|
129
130
|
catch (error) {
|
|
130
|
-
|
|
131
|
+
logger?.warn('Error creating service', { servicePath, error: error.message });
|
|
131
132
|
return null;
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
/**
|
|
135
136
|
* Находит entry point сервиса
|
|
137
|
+
*
|
|
138
|
+
* Resolution priority:
|
|
139
|
+
* 1. TypeScript source (via resolveSourceEntrypoint)
|
|
140
|
+
* 2. package.json main field
|
|
141
|
+
* 3. Standard fallback candidates
|
|
136
142
|
*/
|
|
137
143
|
findEntryPoint(servicePath, packageJson) {
|
|
138
|
-
// 1.
|
|
144
|
+
// 1. Try TypeScript source first (prefers src/ over dist/)
|
|
145
|
+
if (packageJson) {
|
|
146
|
+
const tsSource = resolveSourceEntrypoint(servicePath, packageJson);
|
|
147
|
+
if (tsSource) {
|
|
148
|
+
return tsSource;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// 2. Fallback to package.json main (for JS projects or when source not found)
|
|
139
152
|
if (packageJson?.main) {
|
|
140
153
|
return packageJson.main;
|
|
141
154
|
}
|
|
142
|
-
//
|
|
155
|
+
// 3. Standard fallback candidates
|
|
143
156
|
const candidates = [
|
|
144
157
|
'src/index.js',
|
|
145
158
|
'src/index.ts',
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrokenImportValidator - detects broken imports and undefined symbols (REG-261)
|
|
3
|
+
*
|
|
4
|
+
* This VALIDATION plugin queries the graph (built by ANALYSIS and ENRICHMENT phases)
|
|
5
|
+
* to detect:
|
|
6
|
+
*
|
|
7
|
+
* 1. ERR_BROKEN_IMPORT: Named/default import references non-existent export
|
|
8
|
+
* - IMPORT node with relative source but no IMPORTS_FROM edge
|
|
9
|
+
* - Skips: external (npm) imports, namespace imports, type-only imports
|
|
10
|
+
*
|
|
11
|
+
* 2. ERR_UNDEFINED_SYMBOL: Symbol used but not defined, imported, or global
|
|
12
|
+
* - CALL node without CALLS edge
|
|
13
|
+
* - Not a method call (no `object` property)
|
|
14
|
+
* - Not a local definition (FUNCTION/CLASS/VARIABLE in same file)
|
|
15
|
+
* - Not an import (IMPORT with matching local name)
|
|
16
|
+
* - Not a known global (console, setTimeout, etc.)
|
|
17
|
+
*
|
|
18
|
+
* Architecture follows existing validator patterns:
|
|
19
|
+
* - Phase: VALIDATION
|
|
20
|
+
* - Priority: 85 (after enrichment, before general validators)
|
|
21
|
+
* - Returns: ValidationError[] collected via DiagnosticCollector
|
|
22
|
+
*/
|
|
23
|
+
import { Plugin } from '../Plugin.js';
|
|
24
|
+
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
25
|
+
export declare class BrokenImportValidator extends Plugin {
|
|
26
|
+
private globalsRegistry;
|
|
27
|
+
constructor(config?: Record<string, unknown>);
|
|
28
|
+
get metadata(): PluginMetadata;
|
|
29
|
+
execute(context: PluginContext): Promise<PluginResult>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=BrokenImportValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrokenImportValidator.d.ts","sourceRoot":"","sources":["../../../src/plugins/validation/BrokenImportValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqChF,qBAAa,qBAAsB,SAAQ,MAAM;IAC/C,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAWhD,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CA4O7D"}
|