@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
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InterfaceSchemaExtractor - Extracts interface schemas from graph
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* const extractor = new InterfaceSchemaExtractor(backend);
|
|
6
|
+
* const schema = await extractor.extract('ConfigSchema');
|
|
7
|
+
*
|
|
8
|
+
* When to use:
|
|
9
|
+
* - Export interface contracts for documentation
|
|
10
|
+
* - Track interface changes via checksum
|
|
11
|
+
* - Generate API documentation from graph
|
|
12
|
+
*/
|
|
13
|
+
import type { RFDBServerBackend } from '../storage/backends/RFDBServerBackend.js';
|
|
14
|
+
export interface PropertySchema {
|
|
15
|
+
type: string;
|
|
16
|
+
required: boolean;
|
|
17
|
+
readonly: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface InterfaceSchema {
|
|
20
|
+
$schema: 'grafema-interface-v1';
|
|
21
|
+
name: string;
|
|
22
|
+
source: {
|
|
23
|
+
file: string;
|
|
24
|
+
line: number;
|
|
25
|
+
column: number;
|
|
26
|
+
};
|
|
27
|
+
typeParameters?: string[];
|
|
28
|
+
properties: Record<string, PropertySchema>;
|
|
29
|
+
extends: string[];
|
|
30
|
+
checksum: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ExtractOptions {
|
|
33
|
+
/** Specific file path if multiple interfaces have same name */
|
|
34
|
+
file?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface InterfaceNodeRecord {
|
|
37
|
+
id: string;
|
|
38
|
+
type: 'INTERFACE';
|
|
39
|
+
name: string;
|
|
40
|
+
file: string;
|
|
41
|
+
line: number;
|
|
42
|
+
column: number;
|
|
43
|
+
extends: string[];
|
|
44
|
+
properties: Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
type?: string;
|
|
47
|
+
optional?: boolean;
|
|
48
|
+
readonly?: boolean;
|
|
49
|
+
}>;
|
|
50
|
+
typeParameters?: string[];
|
|
51
|
+
}
|
|
52
|
+
export declare class InterfaceSchemaExtractor {
|
|
53
|
+
private backend;
|
|
54
|
+
constructor(backend: RFDBServerBackend);
|
|
55
|
+
/**
|
|
56
|
+
* Extract schema for interface by name
|
|
57
|
+
*
|
|
58
|
+
* @param interfaceName - Name of the interface (e.g., 'ConfigSchema')
|
|
59
|
+
* @param options - Optional filters
|
|
60
|
+
* @returns InterfaceSchema or null if not found
|
|
61
|
+
* @throws Error if multiple interfaces match and no file specified
|
|
62
|
+
*/
|
|
63
|
+
extract(interfaceName: string, options?: ExtractOptions): Promise<InterfaceSchema | null>;
|
|
64
|
+
/**
|
|
65
|
+
* Find all interfaces with given name
|
|
66
|
+
*/
|
|
67
|
+
findInterfaces(name: string): Promise<InterfaceNodeRecord[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Build InterfaceSchema from node record
|
|
70
|
+
*/
|
|
71
|
+
private buildSchema;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=InterfaceSchemaExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InterfaceSchemaExtractor.d.ts","sourceRoot":"","sources":["../../src/schema/InterfaceSchemaExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAMlF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,sBAAsB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,qBAAa,wBAAwB;IACvB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB;IAE9C;;;;;;;OAOG;IACG,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA6B/F;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAYlE;;OAEG;IACH,OAAO,CAAC,WAAW;CAgDpB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InterfaceSchemaExtractor - Extracts interface schemas from graph
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* const extractor = new InterfaceSchemaExtractor(backend);
|
|
6
|
+
* const schema = await extractor.extract('ConfigSchema');
|
|
7
|
+
*
|
|
8
|
+
* When to use:
|
|
9
|
+
* - Export interface contracts for documentation
|
|
10
|
+
* - Track interface changes via checksum
|
|
11
|
+
* - Generate API documentation from graph
|
|
12
|
+
*/
|
|
13
|
+
import { createHash } from 'crypto';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Extractor
|
|
16
|
+
// ============================================================================
|
|
17
|
+
export class InterfaceSchemaExtractor {
|
|
18
|
+
backend;
|
|
19
|
+
constructor(backend) {
|
|
20
|
+
this.backend = backend;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Extract schema for interface by name
|
|
24
|
+
*
|
|
25
|
+
* @param interfaceName - Name of the interface (e.g., 'ConfigSchema')
|
|
26
|
+
* @param options - Optional filters
|
|
27
|
+
* @returns InterfaceSchema or null if not found
|
|
28
|
+
* @throws Error if multiple interfaces match and no file specified
|
|
29
|
+
*/
|
|
30
|
+
async extract(interfaceName, options) {
|
|
31
|
+
const interfaces = await this.findInterfaces(interfaceName);
|
|
32
|
+
if (interfaces.length === 0) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
// Filter by file if specified
|
|
36
|
+
let match;
|
|
37
|
+
if (options?.file) {
|
|
38
|
+
const fileFilter = options.file;
|
|
39
|
+
const filtered = interfaces.filter(i => i.file === fileFilter || i.file.endsWith(fileFilter));
|
|
40
|
+
if (filtered.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
match = filtered[0];
|
|
44
|
+
}
|
|
45
|
+
else if (interfaces.length > 1) {
|
|
46
|
+
const locations = interfaces.map(i => ` - ${i.file}:${i.line}`).join('\n');
|
|
47
|
+
throw new Error(`Multiple interfaces named "${interfaceName}" found:\n${locations}\n` +
|
|
48
|
+
`Use --file option to specify which one.`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
match = interfaces[0];
|
|
52
|
+
}
|
|
53
|
+
return this.buildSchema(match);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Find all interfaces with given name
|
|
57
|
+
*/
|
|
58
|
+
async findInterfaces(name) {
|
|
59
|
+
const result = [];
|
|
60
|
+
for await (const node of this.backend.queryNodes({ nodeType: 'INTERFACE' })) {
|
|
61
|
+
if (node.name === name) {
|
|
62
|
+
result.push(node);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Build InterfaceSchema from node record
|
|
69
|
+
*/
|
|
70
|
+
buildSchema(node) {
|
|
71
|
+
// Sort properties alphabetically for deterministic output
|
|
72
|
+
const sortedProperties = [...(node.properties || [])].sort((a, b) => a.name.localeCompare(b.name));
|
|
73
|
+
const properties = {};
|
|
74
|
+
for (const prop of sortedProperties) {
|
|
75
|
+
properties[prop.name] = {
|
|
76
|
+
type: prop.type || 'unknown',
|
|
77
|
+
required: !prop.optional,
|
|
78
|
+
readonly: prop.readonly || false
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Compute checksum from normalized content
|
|
82
|
+
const checksumContent = {
|
|
83
|
+
name: node.name,
|
|
84
|
+
properties: sortedProperties.map(p => ({
|
|
85
|
+
name: p.name,
|
|
86
|
+
type: p.type,
|
|
87
|
+
optional: p.optional,
|
|
88
|
+
readonly: p.readonly
|
|
89
|
+
})),
|
|
90
|
+
extends: [...(node.extends || [])].sort(),
|
|
91
|
+
typeParameters: node.typeParameters
|
|
92
|
+
};
|
|
93
|
+
const checksum = createHash('sha256')
|
|
94
|
+
.update(JSON.stringify(checksumContent))
|
|
95
|
+
.digest('hex');
|
|
96
|
+
return {
|
|
97
|
+
$schema: 'grafema-interface-v1',
|
|
98
|
+
name: node.name,
|
|
99
|
+
source: {
|
|
100
|
+
file: node.file,
|
|
101
|
+
line: node.line,
|
|
102
|
+
column: node.column
|
|
103
|
+
},
|
|
104
|
+
...(node.typeParameters && node.typeParameters.length > 0 && {
|
|
105
|
+
typeParameters: node.typeParameters
|
|
106
|
+
}),
|
|
107
|
+
properties,
|
|
108
|
+
extends: node.extends || [],
|
|
109
|
+
checksum: `sha256:${checksum}`
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { InterfaceSchemaExtractor } from './InterfaceSchemaExtractor.js';
|
|
2
|
+
export type { InterfaceSchema, PropertySchema, ExtractOptions } from './InterfaceSchemaExtractor.js';
|
|
3
|
+
export { GraphSchemaExtractor } from './GraphSchemaExtractor.js';
|
|
4
|
+
export type { GraphSchema, NodeTypeSchema, EdgeTypeSchema, GraphExtractOptions } from './GraphSchemaExtractor.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAErG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* await backend.flush();
|
|
19
19
|
*/
|
|
20
20
|
import type { NodeType, EdgeType } from '@grafema/types';
|
|
21
|
+
import type { BaseNodeRecord, EdgeRecord } from '@grafema/types';
|
|
21
22
|
import type { AttrQuery, GraphStats, GraphExport } from '../../core/GraphBackend.js';
|
|
22
23
|
/**
|
|
23
24
|
* Options for RFDBServerBackend
|
|
@@ -26,28 +27,6 @@ export interface RFDBServerBackendOptions {
|
|
|
26
27
|
socketPath?: string;
|
|
27
28
|
dbPath?: string;
|
|
28
29
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Node as returned from the backend
|
|
31
|
-
*/
|
|
32
|
-
export interface BackendNode {
|
|
33
|
-
id: string;
|
|
34
|
-
type: string;
|
|
35
|
-
nodeType: string;
|
|
36
|
-
name: string;
|
|
37
|
-
file: string;
|
|
38
|
-
exported: boolean;
|
|
39
|
-
[key: string]: unknown;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Edge as returned from the backend
|
|
43
|
-
*/
|
|
44
|
-
export interface BackendEdge {
|
|
45
|
-
src: string;
|
|
46
|
-
dst: string;
|
|
47
|
-
type: string;
|
|
48
|
-
edgeType: string;
|
|
49
|
-
[key: string]: unknown;
|
|
50
|
-
}
|
|
51
30
|
/**
|
|
52
31
|
* Input node format (flexible)
|
|
53
32
|
*/
|
|
@@ -108,9 +87,9 @@ export declare class RFDBServerBackend {
|
|
|
108
87
|
initialize(): Promise<void>;
|
|
109
88
|
/**
|
|
110
89
|
* Find RFDB server binary in order of preference:
|
|
111
|
-
* 1.
|
|
112
|
-
* 2.
|
|
113
|
-
* 3.
|
|
90
|
+
* 1. packages/rfdb-server/target/release (monorepo development - prioritized for dev)
|
|
91
|
+
* 2. packages/rfdb-server/target/debug
|
|
92
|
+
* 3. @grafema/rfdb npm package (fallback for production)
|
|
114
93
|
*/
|
|
115
94
|
private _findServerBinary;
|
|
116
95
|
/**
|
|
@@ -118,7 +97,7 @@ export declare class RFDBServerBackend {
|
|
|
118
97
|
*/
|
|
119
98
|
private _startServer;
|
|
120
99
|
/**
|
|
121
|
-
* Close connection
|
|
100
|
+
* Close client connection. Server continues running to serve other clients.
|
|
122
101
|
*/
|
|
123
102
|
close(): Promise<void>;
|
|
124
103
|
/**
|
|
@@ -148,7 +127,7 @@ export declare class RFDBServerBackend {
|
|
|
148
127
|
/**
|
|
149
128
|
* Get a node by ID
|
|
150
129
|
*/
|
|
151
|
-
getNode(id: string): Promise<
|
|
130
|
+
getNode(id: string): Promise<BaseNodeRecord | null>;
|
|
152
131
|
/**
|
|
153
132
|
* Check if node exists
|
|
154
133
|
*/
|
|
@@ -165,14 +144,18 @@ export declare class RFDBServerBackend {
|
|
|
165
144
|
* Parse a node from wire format to JS format
|
|
166
145
|
*/
|
|
167
146
|
private _parseNode;
|
|
147
|
+
/**
|
|
148
|
+
* Parse an edge from wire format to EdgeRecord
|
|
149
|
+
*/
|
|
150
|
+
private _parseEdge;
|
|
168
151
|
/**
|
|
169
152
|
* Async generator for querying nodes
|
|
170
153
|
*/
|
|
171
|
-
queryNodes(query: NodeQuery): AsyncGenerator<
|
|
154
|
+
queryNodes(query: NodeQuery): AsyncGenerator<BaseNodeRecord, void, unknown>;
|
|
172
155
|
/**
|
|
173
156
|
* Get ALL nodes matching query (collects from queryNodes into array)
|
|
174
157
|
*/
|
|
175
|
-
getAllNodes(query?: NodeQuery): Promise<
|
|
158
|
+
getAllNodes(query?: NodeQuery): Promise<BaseNodeRecord[]>;
|
|
176
159
|
/**
|
|
177
160
|
* Delete an edge
|
|
178
161
|
*/
|
|
@@ -180,19 +163,19 @@ export declare class RFDBServerBackend {
|
|
|
180
163
|
/**
|
|
181
164
|
* Get all edges
|
|
182
165
|
*/
|
|
183
|
-
getAllEdges(): Promise<
|
|
166
|
+
getAllEdges(): Promise<EdgeRecord[]>;
|
|
184
167
|
/**
|
|
185
168
|
* Get all edges (async version)
|
|
186
169
|
*/
|
|
187
|
-
getAllEdgesAsync(): Promise<
|
|
170
|
+
getAllEdgesAsync(): Promise<EdgeRecord[]>;
|
|
188
171
|
/**
|
|
189
172
|
* Get outgoing edges from a node
|
|
190
173
|
*/
|
|
191
|
-
getOutgoingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<
|
|
174
|
+
getOutgoingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<EdgeRecord[]>;
|
|
192
175
|
/**
|
|
193
176
|
* Get incoming edges to a node
|
|
194
177
|
*/
|
|
195
|
-
getIncomingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<
|
|
178
|
+
getIncomingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<EdgeRecord[]>;
|
|
196
179
|
/**
|
|
197
180
|
* BFS traversal
|
|
198
181
|
*/
|
|
@@ -201,6 +184,10 @@ export declare class RFDBServerBackend {
|
|
|
201
184
|
* DFS traversal
|
|
202
185
|
*/
|
|
203
186
|
dfs(startIds: string[], maxDepth: number, edgeTypes?: EdgeType[]): Promise<string[]>;
|
|
187
|
+
/**
|
|
188
|
+
* Reachability query - find all nodes reachable from start nodes
|
|
189
|
+
*/
|
|
190
|
+
reachability(startIds: string[], maxDepth: number, edgeTypes?: EdgeType[], backward?: boolean): Promise<string[]>;
|
|
204
191
|
/**
|
|
205
192
|
* Get node count
|
|
206
193
|
*/
|
|
@@ -258,7 +245,7 @@ export declare class RFDBServerBackend {
|
|
|
258
245
|
/**
|
|
259
246
|
* Find nodes by predicate (for compatibility)
|
|
260
247
|
*/
|
|
261
|
-
findNodes(predicate: (node:
|
|
248
|
+
findNodes(predicate: (node: BaseNodeRecord) => boolean): Promise<BaseNodeRecord[]>;
|
|
262
249
|
get graph(): this;
|
|
263
250
|
}
|
|
264
251
|
export default RFDBServerBackend;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RFDBServerBackend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/RFDBServerBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"RFDBServerBackend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/RFDBServerBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKrF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAsB;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,iBAAiB,CAAqC;gBAElD,OAAO,GAAE,wBAA6B;IAiBlD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;OAEG;YACW,YAAY;IAuD1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjD;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCzE;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQzD;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrD;;OAEG;IACH,OAAO,CAAC,UAAU;IAuClB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACI,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC;IA0BlF;;OAEG;IACG,WAAW,CAAC,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAYnE;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI1C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAM/C;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,QAAQ,EAAE,GAAG,IAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAMlG;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,QAAQ,EAAE,GAAG,IAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAUlG;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzF;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,QAAQ,EAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK9F;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,QAAQ,EAAO,EAC1B,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC;IASpB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAevC;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,MAAM,EAAE,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAKvF;;OAEG;IACG,gBAAgB,CAAC,UAAU,GAAE,MAAM,EAAE,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAK3F;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAS9G;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAavG;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IASpC;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IASxF,IAAI,KAAK,IAAI,IAAI,CAEhB;CACF;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -22,6 +22,7 @@ import { existsSync, unlinkSync } from 'fs';
|
|
|
22
22
|
import { spawn } from 'child_process';
|
|
23
23
|
import { join, dirname } from 'path';
|
|
24
24
|
import { fileURLToPath } from 'url';
|
|
25
|
+
import { createRequire } from 'module';
|
|
25
26
|
import { setTimeout as sleep } from 'timers/promises';
|
|
26
27
|
const __filename = fileURLToPath(import.meta.url);
|
|
27
28
|
const __dirname = dirname(__filename);
|
|
@@ -89,13 +90,27 @@ export class RFDBServerBackend {
|
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
91
92
|
* Find RFDB server binary in order of preference:
|
|
92
|
-
* 1.
|
|
93
|
-
* 2.
|
|
94
|
-
* 3.
|
|
93
|
+
* 1. packages/rfdb-server/target/release (monorepo development - prioritized for dev)
|
|
94
|
+
* 2. packages/rfdb-server/target/debug
|
|
95
|
+
* 3. @grafema/rfdb npm package (fallback for production)
|
|
95
96
|
*/
|
|
96
97
|
_findServerBinary() {
|
|
97
|
-
// 1. Check
|
|
98
|
+
// 1. Check packages/rfdb-server in monorepo (prioritized for development)
|
|
99
|
+
const projectRoot = join(__dirname, '../../../../..');
|
|
100
|
+
const releaseBinary = join(projectRoot, 'packages/rfdb-server/target/release/rfdb-server');
|
|
101
|
+
if (existsSync(releaseBinary)) {
|
|
102
|
+
console.log(`[RFDBServerBackend] Found release binary: ${releaseBinary}`);
|
|
103
|
+
return releaseBinary;
|
|
104
|
+
}
|
|
105
|
+
// 2. Check debug build
|
|
106
|
+
const debugBinary = join(projectRoot, 'packages/rfdb-server/target/debug/rfdb-server');
|
|
107
|
+
if (existsSync(debugBinary)) {
|
|
108
|
+
console.log(`[RFDBServerBackend] Found debug binary: ${debugBinary}`);
|
|
109
|
+
return debugBinary;
|
|
110
|
+
}
|
|
111
|
+
// 3. Check @grafema/rfdb npm package (fallback)
|
|
98
112
|
try {
|
|
113
|
+
const require = createRequire(import.meta.url);
|
|
99
114
|
const rfdbPkg = require.resolve('@grafema/rfdb');
|
|
100
115
|
const rfdbDir = dirname(rfdbPkg);
|
|
101
116
|
const platform = process.platform;
|
|
@@ -119,19 +134,6 @@ export class RFDBServerBackend {
|
|
|
119
134
|
catch {
|
|
120
135
|
// @grafema/rfdb not installed
|
|
121
136
|
}
|
|
122
|
-
// 2. Check rust-engine in monorepo
|
|
123
|
-
const projectRoot = join(__dirname, '../../../../..');
|
|
124
|
-
const releaseBinary = join(projectRoot, 'rust-engine/target/release/rfdb-server');
|
|
125
|
-
if (existsSync(releaseBinary)) {
|
|
126
|
-
console.log(`[RFDBServerBackend] Found release binary: ${releaseBinary}`);
|
|
127
|
-
return releaseBinary;
|
|
128
|
-
}
|
|
129
|
-
// 3. Check debug build
|
|
130
|
-
const debugBinary = join(projectRoot, 'rust-engine/target/debug/rfdb-server');
|
|
131
|
-
if (existsSync(debugBinary)) {
|
|
132
|
-
console.log(`[RFDBServerBackend] Found debug binary: ${debugBinary}`);
|
|
133
|
-
return debugBinary;
|
|
134
|
-
}
|
|
135
137
|
return null;
|
|
136
138
|
}
|
|
137
139
|
/**
|
|
@@ -180,19 +182,26 @@ export class RFDBServerBackend {
|
|
|
180
182
|
console.log(`[RFDBServerBackend] Server started on ${this.socketPath}`);
|
|
181
183
|
}
|
|
182
184
|
/**
|
|
183
|
-
* Close connection
|
|
185
|
+
* Close client connection. Server continues running to serve other clients.
|
|
184
186
|
*/
|
|
185
187
|
async close() {
|
|
188
|
+
// Request server flush before disconnecting
|
|
186
189
|
if (this.client) {
|
|
190
|
+
try {
|
|
191
|
+
await this.client.flush();
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// Ignore flush errors on close - best effort
|
|
195
|
+
}
|
|
187
196
|
await this.client.close();
|
|
188
197
|
this.client = null;
|
|
189
198
|
}
|
|
190
199
|
this.connected = false;
|
|
191
|
-
//
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
200
|
+
// NOTE: We intentionally do NOT kill the server process.
|
|
201
|
+
// The server continues running to serve other clients (MCP, other CLI invocations).
|
|
202
|
+
// This is by design for multi-client architecture.
|
|
203
|
+
// Server lifecycle is managed separately (system process, or manual grafema server stop).
|
|
204
|
+
this.serverProcess = null;
|
|
196
205
|
}
|
|
197
206
|
/**
|
|
198
207
|
* Clear the database
|
|
@@ -262,13 +271,20 @@ export class RFDBServerBackend {
|
|
|
262
271
|
this.edgeTypes.add(edgeType);
|
|
263
272
|
}
|
|
264
273
|
const wireEdges = edges.map(e => {
|
|
265
|
-
const { src, dst, type, edgeType, edge_type, etype, ...rest } = e;
|
|
274
|
+
const { src, dst, type, edgeType, edge_type, etype, metadata, ...rest } = e;
|
|
275
|
+
// Flatten metadata: spread both edge-level properties and nested metadata
|
|
276
|
+
const flatMetadata = {
|
|
277
|
+
_origSrc: String(src),
|
|
278
|
+
_origDst: String(dst),
|
|
279
|
+
...rest,
|
|
280
|
+
...(typeof metadata === 'object' && metadata !== null ? metadata : {})
|
|
281
|
+
};
|
|
266
282
|
return {
|
|
267
283
|
src: String(src),
|
|
268
284
|
dst: String(dst),
|
|
269
285
|
edgeType: (edgeType || edge_type || etype || type || 'UNKNOWN'),
|
|
270
|
-
// Store
|
|
271
|
-
metadata: JSON.stringify(
|
|
286
|
+
// Store flattened metadata for retrieval
|
|
287
|
+
metadata: JSON.stringify(flatMetadata),
|
|
272
288
|
};
|
|
273
289
|
});
|
|
274
290
|
await this.client.addEdges(wireEdges, skipValidation);
|
|
@@ -325,14 +341,31 @@ export class RFDBServerBackend {
|
|
|
325
341
|
}
|
|
326
342
|
}
|
|
327
343
|
const humanId = metadata.originalId || wireNode.id;
|
|
344
|
+
// Exclude standard fields from metadata to prevent overwriting wireNode values
|
|
345
|
+
// REG-325: Metadata spread was overwriting name with LITERAL node data
|
|
346
|
+
const { id: _id, type: _type, name: _name, file: _file, exported: _exported, nodeType: _nodeType, originalId: _originalId, // Already extracted above
|
|
347
|
+
...safeMetadata } = metadata;
|
|
328
348
|
return {
|
|
329
349
|
id: humanId,
|
|
330
|
-
nodeType: wireNode.nodeType,
|
|
331
350
|
type: wireNode.nodeType,
|
|
332
351
|
name: wireNode.name,
|
|
333
352
|
file: wireNode.file,
|
|
334
353
|
exported: wireNode.exported,
|
|
335
|
-
...
|
|
354
|
+
...safeMetadata,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Parse an edge from wire format to EdgeRecord
|
|
359
|
+
*/
|
|
360
|
+
_parseEdge(wireEdge) {
|
|
361
|
+
const meta = wireEdge.metadata ? JSON.parse(wireEdge.metadata) : {};
|
|
362
|
+
// Use original string IDs if stored, otherwise use wire IDs
|
|
363
|
+
const { _origSrc, _origDst, ...rest } = meta;
|
|
364
|
+
return {
|
|
365
|
+
src: _origSrc || wireEdge.src,
|
|
366
|
+
dst: _origDst || wireEdge.dst,
|
|
367
|
+
type: wireEdge.edgeType,
|
|
368
|
+
metadata: Object.keys(rest).length > 0 ? rest : undefined,
|
|
336
369
|
};
|
|
337
370
|
}
|
|
338
371
|
/**
|
|
@@ -400,18 +433,7 @@ export class RFDBServerBackend {
|
|
|
400
433
|
if (!this.client)
|
|
401
434
|
throw new Error('Not connected');
|
|
402
435
|
const edges = await this.client.getAllEdges();
|
|
403
|
-
return edges.map(e =>
|
|
404
|
-
const meta = JSON.parse(e.metadata || '{}');
|
|
405
|
-
// Use original string IDs if stored, otherwise use numeric IDs
|
|
406
|
-
const { _origSrc, _origDst, ...rest } = meta;
|
|
407
|
-
return {
|
|
408
|
-
src: _origSrc || e.src,
|
|
409
|
-
dst: _origDst || e.dst,
|
|
410
|
-
type: e.edgeType,
|
|
411
|
-
edgeType: e.edgeType,
|
|
412
|
-
...rest,
|
|
413
|
-
};
|
|
414
|
-
});
|
|
436
|
+
return edges.map(e => this._parseEdge(e));
|
|
415
437
|
}
|
|
416
438
|
/**
|
|
417
439
|
* Get outgoing edges from a node
|
|
@@ -420,17 +442,7 @@ export class RFDBServerBackend {
|
|
|
420
442
|
if (!this.client)
|
|
421
443
|
throw new Error('Not connected');
|
|
422
444
|
const edges = await this.client.getOutgoingEdges(nodeId, edgeTypes || undefined);
|
|
423
|
-
return edges.map(e =>
|
|
424
|
-
const meta = JSON.parse(e.metadata || '{}');
|
|
425
|
-
const { _origSrc, _origDst, ...rest } = meta;
|
|
426
|
-
return {
|
|
427
|
-
src: _origSrc || e.src,
|
|
428
|
-
dst: _origDst || e.dst,
|
|
429
|
-
type: e.edgeType,
|
|
430
|
-
edgeType: e.edgeType,
|
|
431
|
-
...rest,
|
|
432
|
-
};
|
|
433
|
-
});
|
|
445
|
+
return edges.map(e => this._parseEdge(e));
|
|
434
446
|
}
|
|
435
447
|
/**
|
|
436
448
|
* Get incoming edges to a node
|
|
@@ -439,17 +451,7 @@ export class RFDBServerBackend {
|
|
|
439
451
|
if (!this.client)
|
|
440
452
|
throw new Error('Not connected');
|
|
441
453
|
const edges = await this.client.getIncomingEdges(nodeId, edgeTypes || undefined);
|
|
442
|
-
return edges.map(e =>
|
|
443
|
-
const meta = JSON.parse(e.metadata || '{}');
|
|
444
|
-
const { _origSrc, _origDst, ...rest } = meta;
|
|
445
|
-
return {
|
|
446
|
-
src: _origSrc || e.src,
|
|
447
|
-
dst: _origDst || e.dst,
|
|
448
|
-
type: e.edgeType,
|
|
449
|
-
edgeType: e.edgeType,
|
|
450
|
-
...rest,
|
|
451
|
-
};
|
|
452
|
-
});
|
|
454
|
+
return edges.map(e => this._parseEdge(e));
|
|
453
455
|
}
|
|
454
456
|
// ===========================================================================
|
|
455
457
|
// Graph Traversal
|
|
@@ -470,6 +472,14 @@ export class RFDBServerBackend {
|
|
|
470
472
|
throw new Error('Not connected');
|
|
471
473
|
return this.client.dfs(startIds, maxDepth, edgeTypes);
|
|
472
474
|
}
|
|
475
|
+
/**
|
|
476
|
+
* Reachability query - find all nodes reachable from start nodes
|
|
477
|
+
*/
|
|
478
|
+
async reachability(startIds, maxDepth, edgeTypes = [], backward = false) {
|
|
479
|
+
if (!this.client)
|
|
480
|
+
throw new Error('Not connected');
|
|
481
|
+
return this.client.reachability(startIds, maxDepth, edgeTypes, backward);
|
|
482
|
+
}
|
|
473
483
|
// ===========================================================================
|
|
474
484
|
// Statistics
|
|
475
485
|
// ===========================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeValidation.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/typeValidation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"typeValidation.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/typeValidation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgDH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAS3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAS/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEvD"}
|
|
@@ -42,6 +42,7 @@ const KNOWN_EDGE_TYPES = new Set([
|
|
|
42
42
|
'INTERACTS_WITH', 'CALLS_API', 'LISTENS_TO', 'JOINS_ROOM', 'EMITS_EVENT',
|
|
43
43
|
'RETURNS', 'RECEIVES_ARGUMENT', 'READS_FROM', 'THROWS', 'REGISTERS_VIEW',
|
|
44
44
|
'GOVERNS', 'VIOLATES', 'HAS_PARAMETER', 'DERIVES_FROM',
|
|
45
|
+
'RESOLVES_TO', // Promise resolve() data flow
|
|
45
46
|
]);
|
|
46
47
|
// Store initial edge types for reset
|
|
47
48
|
const INITIAL_EDGE_TYPES = [...KNOWN_EDGE_TYPES];
|
|
@@ -30,7 +30,7 @@ export interface PathValidationResult {
|
|
|
30
30
|
/**
|
|
31
31
|
* Endpoint diff info
|
|
32
32
|
*/
|
|
33
|
-
interface EndpointDiff {
|
|
33
|
+
export interface EndpointDiff {
|
|
34
34
|
type: string;
|
|
35
35
|
name: string;
|
|
36
36
|
reason: string;
|
|
@@ -77,5 +77,4 @@ export declare class PathValidator {
|
|
|
77
77
|
*/
|
|
78
78
|
private _getAddedReason;
|
|
79
79
|
}
|
|
80
|
-
export {};
|
|
81
80
|
//# sourceMappingURL=PathValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathValidator.d.ts","sourceRoot":"","sources":["../../src/validation/PathValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmBnD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"PathValidator.d.ts","sourceRoot":"","sources":["../../src/validation/PathValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmBnD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,YAAY;IAIjC;;;;;;OAMG;IACG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsF7F;;;;;OAKG;YACW,sBAAsB;IAwDpC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA0CzB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAexB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafema/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0-beta",
|
|
4
4
|
"description": "Core analysis engine for Grafema code analysis toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"node-source-walk": "^7.0.1",
|
|
43
43
|
"oxc-parser": "^0.96.0",
|
|
44
44
|
"yaml": "^2.8.2",
|
|
45
|
-
"@grafema/rfdb-client": "0.
|
|
46
|
-
"@grafema/types": "0.
|
|
45
|
+
"@grafema/rfdb-client": "0.2.0-beta",
|
|
46
|
+
"@grafema/types": "0.2.0-beta"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
49
|
"@grafema/rfdb": "^0.1.0-alpha.2"
|