@grafema/core 0.1.0-alpha.4 → 0.1.1-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/Orchestrator.d.ts +24 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +197 -24
- package/dist/config/ConfigLoader.d.ts +72 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +187 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/core/ASTWorker.d.ts +11 -36
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +93 -99
- package/dist/core/CoverageAnalyzer.d.ts +65 -0
- package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
- package/dist/core/CoverageAnalyzer.js +198 -0
- package/dist/core/FileNodeManager.d.ts +40 -0
- package/dist/core/FileNodeManager.d.ts.map +1 -0
- package/dist/core/FileNodeManager.js +84 -0
- package/dist/core/GraphFreshnessChecker.d.ts +33 -0
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
- package/dist/core/GraphFreshnessChecker.js +101 -0
- package/dist/core/HashUtils.d.ts +24 -0
- package/dist/core/HashUtils.d.ts.map +1 -0
- package/dist/core/HashUtils.js +45 -0
- package/dist/core/IncrementalReanalyzer.d.ts +36 -0
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
- package/dist/core/IncrementalReanalyzer.js +132 -0
- package/dist/core/NodeFactory.d.ts +225 -17
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +208 -18
- package/dist/core/ScopeTracker.d.ts +84 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -0
- package/dist/core/ScopeTracker.js +116 -0
- package/dist/core/SemanticId.d.ts +90 -0
- package/dist/core/SemanticId.d.ts.map +1 -0
- package/dist/core/SemanticId.js +115 -0
- package/dist/core/VersionManager.d.ts.map +1 -1
- package/dist/core/VersionManager.js +3 -2
- package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
- package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ArrayLiteralNode.js +41 -0
- package/dist/core/nodes/CallSiteNode.d.ts +28 -0
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +46 -0
- package/dist/core/nodes/ClassNode.d.ts +33 -1
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +46 -2
- package/dist/core/nodes/DecoratorNode.d.ts +42 -0
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
- package/dist/core/nodes/DecoratorNode.js +62 -0
- package/dist/core/nodes/EnumNode.d.ts +42 -0
- package/dist/core/nodes/EnumNode.d.ts.map +1 -0
- package/dist/core/nodes/EnumNode.js +54 -0
- package/dist/core/nodes/ExportNode.d.ts +37 -1
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +48 -2
- package/dist/core/nodes/ExpressionNode.d.ts +97 -0
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressionNode.js +178 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +28 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +41 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalStdioNode.js +15 -8
- package/dist/core/nodes/FunctionNode.d.ts +36 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
- package/dist/core/nodes/FunctionNode.js +80 -1
- package/dist/core/nodes/ImportNode.d.ts +19 -5
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +23 -5
- package/dist/core/nodes/InterfaceNode.d.ts +46 -0
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
- package/dist/core/nodes/InterfaceNode.js +55 -0
- package/dist/core/nodes/IssueNode.d.ts +73 -0
- package/dist/core/nodes/IssueNode.d.ts.map +1 -0
- package/dist/core/nodes/IssueNode.js +129 -0
- package/dist/core/nodes/MethodCallNode.d.ts +30 -0
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +49 -0
- package/dist/core/nodes/MethodNode.d.ts +32 -0
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +48 -0
- package/dist/core/nodes/ModuleNode.d.ts +31 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ModuleNode.js +37 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/NetworkRequestNode.js +65 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ObjectLiteralNode.js +41 -0
- package/dist/core/nodes/ScopeNode.d.ts +31 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
- package/dist/core/nodes/ScopeNode.js +49 -0
- package/dist/core/nodes/TypeNode.d.ts +36 -0
- package/dist/core/nodes/TypeNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeNode.js +53 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +27 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +40 -0
- package/dist/core/nodes/index.d.ts +12 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +14 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticCollector.js +129 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts +77 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +159 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticWriter.js +43 -0
- package/dist/diagnostics/index.d.ts +14 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +11 -0
- package/dist/errors/GrafemaError.d.ts +118 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +131 -0
- package/dist/index.d.ts +57 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -1
- package/dist/logging/Logger.d.ts +48 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +134 -0
- package/dist/plugins/Plugin.d.ts +5 -1
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/Plugin.js +33 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +13 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +27 -19
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +21 -14
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +1 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +34 -14
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +180 -17
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +1171 -471
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +15 -10
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +9 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +27 -15
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +34 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +318 -298
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
- package/dist/plugins/analysis/ast/types.d.ts +176 -5
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.js +5 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/location.js +78 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +9 -4
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +99 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +663 -125
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +128 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +11 -8
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +17 -13
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.js +136 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/detector.js +49 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
- package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
- package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/index.js +8 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/parsers.js +80 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +14 -8
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +14 -7
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +18 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +8 -3
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +17 -0
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +129 -10
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +63 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +5 -4
- package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
- package/dist/plugins/indexing/ServiceDetector.js +28 -15
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +8 -7
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +17 -12
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
- package/dist/plugins/validation/EvalBanValidator.js +17 -16
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +19 -23
- package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
- package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
- package/dist/plugins/validation/NodeCreationValidator.js +415 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +59 -16
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
- package/dist/plugins/validation/ShadowingDetector.js +6 -5
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/GitPlugin.js +10 -12
- package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/VCSPlugin.js +5 -5
- package/dist/storage/backends/RFDBServerBackend.d.ts +10 -17
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +31 -10
- package/dist/validation/PathValidator.d.ts +1 -2
- package/dist/validation/PathValidator.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/Orchestrator.ts +237 -24
- package/src/config/ConfigLoader.ts +263 -0
- package/src/config/index.ts +5 -0
- package/src/core/ASTWorker.ts +143 -139
- package/src/core/CoverageAnalyzer.ts +243 -0
- package/src/core/FileNodeManager.ts +100 -0
- package/src/core/GraphFreshnessChecker.ts +143 -0
- package/src/core/HashUtils.ts +48 -0
- package/src/core/IncrementalReanalyzer.ts +192 -0
- package/src/core/NodeFactory.ts +401 -18
- package/src/core/ScopeTracker.ts +154 -0
- package/src/core/SemanticId.ts +192 -0
- package/src/core/VersionManager.ts +3 -2
- package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
- package/src/core/nodes/ArrayLiteralNode.ts +65 -0
- package/src/core/nodes/CallSiteNode.ts +58 -0
- package/src/core/nodes/ClassNode.ts +63 -2
- package/src/core/nodes/DecoratorNode.ts +91 -0
- package/src/core/nodes/EnumNode.ts +86 -0
- package/src/core/nodes/ExportNode.ts +70 -2
- package/src/core/nodes/ExpressionNode.ts +231 -0
- package/src/core/nodes/ExternalModuleNode.ts +56 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/ImportNode.ts +32 -10
- package/src/core/nodes/InterfaceNode.ts +91 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/MethodCallNode.ts +64 -0
- package/src/core/nodes/MethodNode.ts +63 -0
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +65 -0
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +78 -0
- package/src/core/nodes/VariableDeclarationNode.ts +52 -0
- package/src/core/nodes/index.ts +18 -1
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +204 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +174 -0
- package/src/index.ts +148 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +14 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +29 -19
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +22 -21
- package/src/plugins/analysis/FetchAnalyzer.ts +39 -16
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +1483 -503
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +15 -10
- package/src/plugins/analysis/SQLiteAnalyzer.ts +10 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +31 -22
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +439 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +209 -6
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
- package/src/plugins/analysis/ast/utils/index.ts +12 -0
- package/src/plugins/analysis/ast/utils/location.ts +103 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +11 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +909 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +159 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +12 -8
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +37 -17
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +177 -0
- package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
- package/src/plugins/discovery/workspaces/detector.ts +63 -0
- package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
- package/src/plugins/discovery/workspaces/index.ts +23 -0
- package/src/plugins/discovery/workspaces/parsers.ts +99 -0
- package/src/plugins/enrichment/AliasTracker.ts +14 -8
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +14 -7
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +18 -12
- package/src/plugins/enrichment/MountPointResolver.ts +8 -3
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +149 -12
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +74 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +5 -4
- package/src/plugins/validation/CallResolverValidator.ts +8 -7
- package/src/plugins/validation/DataFlowValidator.ts +16 -12
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +19 -23
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +61 -15
- package/src/plugins/validation/ShadowingDetector.ts +6 -5
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
- package/src/plugins/vcs/GitPlugin.ts +40 -12
- package/src/plugins/vcs/VCSPlugin.ts +7 -5
- package/src/storage/backends/RFDBServerBackend.ts +43 -29
- package/src/validation/PathValidator.ts +1 -1
- package/dist/core/AnalysisWorker.d.ts +0 -14
- package/dist/core/AnalysisWorker.d.ts.map +0 -1
- package/dist/core/AnalysisWorker.js +0 -307
- package/dist/core/ParallelAnalyzer.d.ts +0 -120
- package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
- package/dist/core/ParallelAnalyzer.js +0 -331
- package/dist/core/QueueWorker.d.ts +0 -12
- package/dist/core/QueueWorker.d.ts.map +0 -1
- package/dist/core/QueueWorker.js +0 -567
- package/dist/core/RFDBClient.d.ts +0 -179
- package/dist/core/RFDBClient.d.ts.map +0 -1
- package/dist/core/RFDBClient.js +0 -429
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
- package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
- package/src/core/AnalysisWorker.ts +0 -410
- package/src/core/ParallelAnalyzer.ts +0 -476
- package/src/core/QueueWorker.ts +0 -780
- package/src/plugins/indexing/ServiceDetector.ts +0 -230
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MethodCallNode - contract for METHOD_CALL node
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses line-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->{scope_path}->CALL->{object.method}#N
|
|
9
|
+
* Example: src/app.js->handler->CALL->db.query#0
|
|
3
10
|
*/
|
|
4
11
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
12
|
+
import { type ScopeContext, type Location } from '../SemanticId.js';
|
|
5
13
|
interface MethodCallNodeRecord extends BaseNodeRecord {
|
|
6
14
|
type: 'METHOD_CALL';
|
|
7
15
|
object?: string;
|
|
@@ -15,6 +23,14 @@ interface MethodCallNodeOptions {
|
|
|
15
23
|
args?: unknown[];
|
|
16
24
|
counter?: number;
|
|
17
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Options for createWithContext
|
|
28
|
+
*/
|
|
29
|
+
interface MethodCallContextOptions {
|
|
30
|
+
discriminator: number;
|
|
31
|
+
parentScopeId?: string;
|
|
32
|
+
args?: unknown[];
|
|
33
|
+
}
|
|
18
34
|
export declare class MethodCallNode {
|
|
19
35
|
static readonly TYPE: "METHOD_CALL";
|
|
20
36
|
static readonly REQUIRED: readonly ["name", "file", "line", "args"];
|
|
@@ -23,6 +39,20 @@ export declare class MethodCallNode {
|
|
|
23
39
|
* Create METHOD_CALL node
|
|
24
40
|
*/
|
|
25
41
|
static create(objectName: string | undefined, methodName: string, file: string, line: number, column: number, options?: MethodCallNodeOptions): MethodCallNodeRecord;
|
|
42
|
+
/**
|
|
43
|
+
* Create METHOD_CALL node with semantic ID (NEW API)
|
|
44
|
+
*
|
|
45
|
+
* Uses ScopeContext from ScopeTracker for stable identifiers.
|
|
46
|
+
* Requires discriminator for multiple calls to same method within scope.
|
|
47
|
+
*
|
|
48
|
+
* @param objectName - Object name (can be undefined for bare function calls)
|
|
49
|
+
* @param methodName - Method name
|
|
50
|
+
* @param context - Scope context from ScopeTracker.getContext()
|
|
51
|
+
* @param location - Source location { line, column }
|
|
52
|
+
* @param options - Options including required discriminator
|
|
53
|
+
* @returns MethodCallNodeRecord with semantic ID
|
|
54
|
+
*/
|
|
55
|
+
static createWithContext(objectName: string | undefined, methodName: string, context: ScopeContext, location: Partial<Location>, options: MethodCallContextOptions): MethodCallNodeRecord;
|
|
26
56
|
static validate(node: MethodCallNodeRecord): string[];
|
|
27
57
|
}
|
|
28
58
|
export type { MethodCallNodeRecord };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/MethodCallNode.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"MethodCallNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/MethodCallNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvF,UAAU,oBAAqB,SAAQ,cAAc;IACnD,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,wBAAwB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAE9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,4CAA6C;IACrE,MAAM,CAAC,QAAQ,CAAC,QAAQ,2DAA4D;IAEpF;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,oBAAoB;IAuBvB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,iBAAiB,CACtB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,wBAAwB,GAChC,oBAAoB;IA4BvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,EAAE;CAgBtD;AAED,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MethodCallNode - contract for METHOD_CALL node
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses line-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->{scope_path}->CALL->{object.method}#N
|
|
9
|
+
* Example: src/app.js->handler->CALL->db.query#0
|
|
3
10
|
*/
|
|
11
|
+
import { computeSemanticId } from '../SemanticId.js';
|
|
4
12
|
export class MethodCallNode {
|
|
5
13
|
static TYPE = 'METHOD_CALL';
|
|
6
14
|
static REQUIRED = ['name', 'file', 'line', 'args'];
|
|
@@ -31,6 +39,47 @@ export class MethodCallNode {
|
|
|
31
39
|
args: options.args || []
|
|
32
40
|
};
|
|
33
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Create METHOD_CALL node with semantic ID (NEW API)
|
|
44
|
+
*
|
|
45
|
+
* Uses ScopeContext from ScopeTracker for stable identifiers.
|
|
46
|
+
* Requires discriminator for multiple calls to same method within scope.
|
|
47
|
+
*
|
|
48
|
+
* @param objectName - Object name (can be undefined for bare function calls)
|
|
49
|
+
* @param methodName - Method name
|
|
50
|
+
* @param context - Scope context from ScopeTracker.getContext()
|
|
51
|
+
* @param location - Source location { line, column }
|
|
52
|
+
* @param options - Options including required discriminator
|
|
53
|
+
* @returns MethodCallNodeRecord with semantic ID
|
|
54
|
+
*/
|
|
55
|
+
static createWithContext(objectName, methodName, context, location, options) {
|
|
56
|
+
// Validate required fields
|
|
57
|
+
if (!methodName)
|
|
58
|
+
throw new Error('MethodCallNode.createWithContext: methodName is required');
|
|
59
|
+
if (!context.file)
|
|
60
|
+
throw new Error('MethodCallNode.createWithContext: file is required');
|
|
61
|
+
if (location.line === undefined)
|
|
62
|
+
throw new Error('MethodCallNode.createWithContext: line is required');
|
|
63
|
+
if (options.discriminator === undefined)
|
|
64
|
+
throw new Error('MethodCallNode.createWithContext: discriminator is required');
|
|
65
|
+
const fullName = objectName ? `${objectName}.${methodName}` : methodName;
|
|
66
|
+
// Compute semantic ID with discriminator
|
|
67
|
+
const id = computeSemanticId('CALL', fullName, context, {
|
|
68
|
+
discriminator: options.discriminator
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
id,
|
|
72
|
+
type: this.TYPE,
|
|
73
|
+
name: fullName,
|
|
74
|
+
object: objectName,
|
|
75
|
+
method: methodName,
|
|
76
|
+
file: context.file,
|
|
77
|
+
line: location.line,
|
|
78
|
+
column: location.column ?? 0,
|
|
79
|
+
parentScopeId: options.parentScopeId,
|
|
80
|
+
args: options.args || []
|
|
81
|
+
};
|
|
82
|
+
}
|
|
34
83
|
static validate(node) {
|
|
35
84
|
const errors = [];
|
|
36
85
|
if (node.type !== this.TYPE) {
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MethodNode - contract for METHOD node (class method)
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses line-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->{className}->METHOD->{name}
|
|
9
|
+
* Example: src/services/UserService.js->UserService->METHOD->login
|
|
3
10
|
*/
|
|
4
11
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
12
|
+
import { type ScopeContext, type Location } from '../SemanticId.js';
|
|
5
13
|
type MethodKind = 'method' | 'get' | 'set' | 'constructor';
|
|
6
14
|
interface MethodNodeRecord extends BaseNodeRecord {
|
|
7
15
|
type: 'METHOD';
|
|
@@ -18,11 +26,35 @@ interface MethodNodeOptions {
|
|
|
18
26
|
static?: boolean;
|
|
19
27
|
kind?: MethodKind;
|
|
20
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Options for createWithContext
|
|
31
|
+
*/
|
|
32
|
+
interface MethodContextOptions {
|
|
33
|
+
async?: boolean;
|
|
34
|
+
generator?: boolean;
|
|
35
|
+
static?: boolean;
|
|
36
|
+
kind?: MethodKind;
|
|
37
|
+
}
|
|
21
38
|
export declare class MethodNode {
|
|
22
39
|
static readonly TYPE: "METHOD";
|
|
23
40
|
static readonly REQUIRED: readonly ["name", "file", "line", "className"];
|
|
24
41
|
static readonly OPTIONAL: readonly ["column", "async", "generator", "static", "kind"];
|
|
25
42
|
static create(name: string, file: string, line: number, column: number, className: string, options?: MethodNodeOptions): MethodNodeRecord;
|
|
43
|
+
/**
|
|
44
|
+
* Create METHOD node with semantic ID (NEW API)
|
|
45
|
+
*
|
|
46
|
+
* Uses ScopeContext from ScopeTracker for stable identifiers.
|
|
47
|
+
* Method names are unique within class, so no discriminator needed.
|
|
48
|
+
* Context should include the class in scopePath.
|
|
49
|
+
*
|
|
50
|
+
* @param name - Method name
|
|
51
|
+
* @param className - Name of the class containing this method
|
|
52
|
+
* @param context - Scope context from ScopeTracker.getContext() (should be inside class)
|
|
53
|
+
* @param location - Source location { line, column }
|
|
54
|
+
* @param options - Optional method properties
|
|
55
|
+
* @returns MethodNodeRecord with semantic ID
|
|
56
|
+
*/
|
|
57
|
+
static createWithContext(name: string, className: string, context: ScopeContext, location: Partial<Location>, options?: MethodContextOptions): MethodNodeRecord;
|
|
26
58
|
static validate(node: MethodNodeRecord): string[];
|
|
27
59
|
}
|
|
28
60
|
export type { MethodNodeRecord, MethodKind };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/MethodNode.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"MethodNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/MethodNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvF,KAAK,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,CAAC;AAE3D,UAAU,gBAAiB,SAAQ,cAAc;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAEzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,iDAAkD;IAC1E,MAAM,CAAC,QAAQ,CAAC,QAAQ,8DAA+D;IAEvF,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB;IAqBnB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,GAAE,oBAAyB,GACjC,gBAAgB;IAyBnB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAAE;CAgBlD;AAED,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MethodNode - contract for METHOD node (class method)
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses line-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->{className}->METHOD->{name}
|
|
9
|
+
* Example: src/services/UserService.js->UserService->METHOD->login
|
|
3
10
|
*/
|
|
11
|
+
import { computeSemanticId } from '../SemanticId.js';
|
|
4
12
|
export class MethodNode {
|
|
5
13
|
static TYPE = 'METHOD';
|
|
6
14
|
static REQUIRED = ['name', 'file', 'line', 'className'];
|
|
@@ -28,6 +36,46 @@ export class MethodNode {
|
|
|
28
36
|
kind: options.kind || 'method'
|
|
29
37
|
};
|
|
30
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Create METHOD node with semantic ID (NEW API)
|
|
41
|
+
*
|
|
42
|
+
* Uses ScopeContext from ScopeTracker for stable identifiers.
|
|
43
|
+
* Method names are unique within class, so no discriminator needed.
|
|
44
|
+
* Context should include the class in scopePath.
|
|
45
|
+
*
|
|
46
|
+
* @param name - Method name
|
|
47
|
+
* @param className - Name of the class containing this method
|
|
48
|
+
* @param context - Scope context from ScopeTracker.getContext() (should be inside class)
|
|
49
|
+
* @param location - Source location { line, column }
|
|
50
|
+
* @param options - Optional method properties
|
|
51
|
+
* @returns MethodNodeRecord with semantic ID
|
|
52
|
+
*/
|
|
53
|
+
static createWithContext(name, className, context, location, options = {}) {
|
|
54
|
+
// Validate required fields
|
|
55
|
+
if (!name)
|
|
56
|
+
throw new Error('MethodNode.createWithContext: name is required');
|
|
57
|
+
if (!className)
|
|
58
|
+
throw new Error('MethodNode.createWithContext: className is required');
|
|
59
|
+
if (!context.file)
|
|
60
|
+
throw new Error('MethodNode.createWithContext: file is required');
|
|
61
|
+
if (location.line === undefined)
|
|
62
|
+
throw new Error('MethodNode.createWithContext: line is required');
|
|
63
|
+
// Compute semantic ID
|
|
64
|
+
const id = computeSemanticId(this.TYPE, name, context);
|
|
65
|
+
return {
|
|
66
|
+
id,
|
|
67
|
+
type: this.TYPE,
|
|
68
|
+
name,
|
|
69
|
+
file: context.file,
|
|
70
|
+
line: location.line,
|
|
71
|
+
column: location.column ?? 0,
|
|
72
|
+
className,
|
|
73
|
+
async: options.async || false,
|
|
74
|
+
generator: options.generator || false,
|
|
75
|
+
static: options.static || false,
|
|
76
|
+
kind: options.kind || 'method'
|
|
77
|
+
};
|
|
78
|
+
}
|
|
31
79
|
static validate(node) {
|
|
32
80
|
const errors = [];
|
|
33
81
|
if (node.type !== this.TYPE) {
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ModuleNode - contract for MODULE node
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses hash-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->global->MODULE->module
|
|
9
|
+
* Example: src/index.js->global->MODULE->module
|
|
10
|
+
*
|
|
11
|
+
* Each file has exactly one MODULE node. The name in the ID is always "module".
|
|
3
12
|
*/
|
|
4
13
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
14
|
+
import { type ScopeContext } from '../SemanticId.js';
|
|
5
15
|
interface ModuleNodeRecord extends BaseNodeRecord {
|
|
6
16
|
type: 'MODULE';
|
|
7
17
|
contentHash: string;
|
|
@@ -10,6 +20,13 @@ interface ModuleNodeRecord extends BaseNodeRecord {
|
|
|
10
20
|
interface ModuleNodeOptions {
|
|
11
21
|
isTest?: boolean;
|
|
12
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Options for createWithContext
|
|
25
|
+
*/
|
|
26
|
+
interface ModuleContextOptions {
|
|
27
|
+
contentHash?: string;
|
|
28
|
+
isTest?: boolean;
|
|
29
|
+
}
|
|
13
30
|
export declare class ModuleNode {
|
|
14
31
|
static readonly TYPE: "MODULE";
|
|
15
32
|
static readonly REQUIRED: readonly ["name", "file", "contentHash"];
|
|
@@ -22,6 +39,20 @@ export declare class ModuleNode {
|
|
|
22
39
|
* @param options - Additional options (isTest, etc.)
|
|
23
40
|
*/
|
|
24
41
|
static create(filePath: string, relativePath: string, contentHash: string, options?: ModuleNodeOptions): ModuleNodeRecord;
|
|
42
|
+
/**
|
|
43
|
+
* Create MODULE node with semantic ID (NEW API)
|
|
44
|
+
*
|
|
45
|
+
* Uses ScopeContext for stable identifiers that don't change
|
|
46
|
+
* when file content changes (unlike hash-based IDs).
|
|
47
|
+
*
|
|
48
|
+
* Each file has exactly one MODULE node.
|
|
49
|
+
* The name in the semantic ID is always "module".
|
|
50
|
+
*
|
|
51
|
+
* @param context - Scope context with file path (relative to project root)
|
|
52
|
+
* @param options - Optional contentHash and isTest flag
|
|
53
|
+
* @returns ModuleNodeRecord with semantic ID
|
|
54
|
+
*/
|
|
55
|
+
static createWithContext(context: ScopeContext, options?: ModuleContextOptions): ModuleNodeRecord;
|
|
25
56
|
static _hashPath(path: string): string;
|
|
26
57
|
static validate(node: ModuleNodeRecord): string[];
|
|
27
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ModuleNode.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ModuleNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ModuleNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAExE,UAAU,gBAAiB,SAAQ,cAAc;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAEzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,2CAA4C;IACpE,MAAM,CAAC,QAAQ,CAAC,QAAQ,sBAAuB;IAE/C;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB;IAgBnB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,iBAAiB,CACtB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,oBAAyB,GACjC,gBAAgB;IAgBnB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAItC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAAE;CAgBlD;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ModuleNode - contract for MODULE node
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses hash-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->global->MODULE->module
|
|
9
|
+
* Example: src/index.js->global->MODULE->module
|
|
10
|
+
*
|
|
11
|
+
* Each file has exactly one MODULE node. The name in the ID is always "module".
|
|
3
12
|
*/
|
|
4
13
|
import { createHash } from 'crypto';
|
|
14
|
+
import { computeSemanticId } from '../SemanticId.js';
|
|
5
15
|
export class ModuleNode {
|
|
6
16
|
static TYPE = 'MODULE';
|
|
7
17
|
static REQUIRED = ['name', 'file', 'contentHash'];
|
|
@@ -30,6 +40,33 @@ export class ModuleNode {
|
|
|
30
40
|
isTest: options.isTest || false
|
|
31
41
|
};
|
|
32
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Create MODULE node with semantic ID (NEW API)
|
|
45
|
+
*
|
|
46
|
+
* Uses ScopeContext for stable identifiers that don't change
|
|
47
|
+
* when file content changes (unlike hash-based IDs).
|
|
48
|
+
*
|
|
49
|
+
* Each file has exactly one MODULE node.
|
|
50
|
+
* The name in the semantic ID is always "module".
|
|
51
|
+
*
|
|
52
|
+
* @param context - Scope context with file path (relative to project root)
|
|
53
|
+
* @param options - Optional contentHash and isTest flag
|
|
54
|
+
* @returns ModuleNodeRecord with semantic ID
|
|
55
|
+
*/
|
|
56
|
+
static createWithContext(context, options = {}) {
|
|
57
|
+
if (!context.file)
|
|
58
|
+
throw new Error('ModuleNode.createWithContext: file is required in context');
|
|
59
|
+
const id = computeSemanticId(this.TYPE, 'module', context);
|
|
60
|
+
return {
|
|
61
|
+
id,
|
|
62
|
+
type: this.TYPE,
|
|
63
|
+
name: context.file,
|
|
64
|
+
file: context.file,
|
|
65
|
+
line: 0,
|
|
66
|
+
contentHash: options.contentHash || '',
|
|
67
|
+
isTest: options.isTest || false
|
|
68
|
+
};
|
|
69
|
+
}
|
|
33
70
|
static _hashPath(path) {
|
|
34
71
|
return createHash('md5').update(path).digest('hex').substring(0, 12);
|
|
35
72
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NetworkRequestNode - contract for net:request singleton node
|
|
3
|
+
*
|
|
4
|
+
* Represents the external network as a system resource.
|
|
5
|
+
* All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
|
|
6
|
+
*
|
|
7
|
+
* This is NOT the same as HttpRequestNode (type: HTTP_REQUEST), which represents
|
|
8
|
+
* individual HTTP request call sites in source code.
|
|
9
|
+
*
|
|
10
|
+
* Architectural role:
|
|
11
|
+
* - net:request is a singleton representing external network (like net:stdio for console I/O)
|
|
12
|
+
* - HTTP_REQUEST nodes are call sites that connect to this singleton via CALLS edges
|
|
13
|
+
*
|
|
14
|
+
* Example graph structure:
|
|
15
|
+
* ```
|
|
16
|
+
* /app/api.ts:HTTP_REQUEST:GET:15:0 --CALLS--> net:request#__network__
|
|
17
|
+
* /app/service.ts:HTTP_REQUEST:POST:42:0 --CALLS--> net:request#__network__
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type { BaseNodeRecord } from '@grafema/types';
|
|
21
|
+
interface NetworkRequestNodeRecord extends BaseNodeRecord {
|
|
22
|
+
type: 'net:request';
|
|
23
|
+
}
|
|
24
|
+
export declare class NetworkRequestNode {
|
|
25
|
+
static readonly TYPE: "net:request";
|
|
26
|
+
static readonly SINGLETON_ID = "net:request#__network__";
|
|
27
|
+
static readonly REQUIRED: readonly ["name", "file"];
|
|
28
|
+
static readonly OPTIONAL: readonly [];
|
|
29
|
+
/**
|
|
30
|
+
* Create net:request singleton node
|
|
31
|
+
*
|
|
32
|
+
* This node represents the external network as a system resource.
|
|
33
|
+
* All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
|
|
34
|
+
*
|
|
35
|
+
* Should be created once per graph. GraphBuilder and ExpressAnalyzer
|
|
36
|
+
* use singleton deduplication to ensure only one instance exists.
|
|
37
|
+
*
|
|
38
|
+
* @returns NetworkRequestNodeRecord - singleton node
|
|
39
|
+
*/
|
|
40
|
+
static create(): NetworkRequestNodeRecord;
|
|
41
|
+
/**
|
|
42
|
+
* Validate net:request node structure
|
|
43
|
+
*
|
|
44
|
+
* Ensures:
|
|
45
|
+
* - type is net:request (NOT NET_REQUEST)
|
|
46
|
+
* - id matches SINGLETON_ID
|
|
47
|
+
*
|
|
48
|
+
* @param node - Node to validate
|
|
49
|
+
* @returns Array of error messages (empty if valid)
|
|
50
|
+
*/
|
|
51
|
+
static validate(node: NetworkRequestNodeRecord): string[];
|
|
52
|
+
}
|
|
53
|
+
export type { NetworkRequestNodeRecord };
|
|
54
|
+
//# sourceMappingURL=NetworkRequestNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkRequestNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/NetworkRequestNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,wBAAyB,SAAQ,cAAc;IACvD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAC9C,MAAM,CAAC,QAAQ,CAAC,YAAY,6BAA6B;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ,4BAA6B;IACrD,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAe;IAEvC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,IAAI,wBAAwB;IAUzC;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,EAAE;CAU1D;AAED,YAAY,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NetworkRequestNode - contract for net:request singleton node
|
|
3
|
+
*
|
|
4
|
+
* Represents the external network as a system resource.
|
|
5
|
+
* All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
|
|
6
|
+
*
|
|
7
|
+
* This is NOT the same as HttpRequestNode (type: HTTP_REQUEST), which represents
|
|
8
|
+
* individual HTTP request call sites in source code.
|
|
9
|
+
*
|
|
10
|
+
* Architectural role:
|
|
11
|
+
* - net:request is a singleton representing external network (like net:stdio for console I/O)
|
|
12
|
+
* - HTTP_REQUEST nodes are call sites that connect to this singleton via CALLS edges
|
|
13
|
+
*
|
|
14
|
+
* Example graph structure:
|
|
15
|
+
* ```
|
|
16
|
+
* /app/api.ts:HTTP_REQUEST:GET:15:0 --CALLS--> net:request#__network__
|
|
17
|
+
* /app/service.ts:HTTP_REQUEST:POST:42:0 --CALLS--> net:request#__network__
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class NetworkRequestNode {
|
|
21
|
+
static TYPE = 'net:request';
|
|
22
|
+
static SINGLETON_ID = 'net:request#__network__';
|
|
23
|
+
static REQUIRED = ['name', 'file'];
|
|
24
|
+
static OPTIONAL = [];
|
|
25
|
+
/**
|
|
26
|
+
* Create net:request singleton node
|
|
27
|
+
*
|
|
28
|
+
* This node represents the external network as a system resource.
|
|
29
|
+
* All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
|
|
30
|
+
*
|
|
31
|
+
* Should be created once per graph. GraphBuilder and ExpressAnalyzer
|
|
32
|
+
* use singleton deduplication to ensure only one instance exists.
|
|
33
|
+
*
|
|
34
|
+
* @returns NetworkRequestNodeRecord - singleton node
|
|
35
|
+
*/
|
|
36
|
+
static create() {
|
|
37
|
+
return {
|
|
38
|
+
id: this.SINGLETON_ID,
|
|
39
|
+
type: this.TYPE,
|
|
40
|
+
name: '__network__',
|
|
41
|
+
file: '__builtin__',
|
|
42
|
+
line: 0
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validate net:request node structure
|
|
47
|
+
*
|
|
48
|
+
* Ensures:
|
|
49
|
+
* - type is net:request (NOT NET_REQUEST)
|
|
50
|
+
* - id matches SINGLETON_ID
|
|
51
|
+
*
|
|
52
|
+
* @param node - Node to validate
|
|
53
|
+
* @returns Array of error messages (empty if valid)
|
|
54
|
+
*/
|
|
55
|
+
static validate(node) {
|
|
56
|
+
const errors = [];
|
|
57
|
+
if (node.type !== this.TYPE) {
|
|
58
|
+
errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
|
|
59
|
+
}
|
|
60
|
+
if (node.id !== this.SINGLETON_ID) {
|
|
61
|
+
errors.push(`Invalid singleton ID: expected ${this.SINGLETON_ID}, got ${node.id}`);
|
|
62
|
+
}
|
|
63
|
+
return errors;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectLiteralNode - contract for OBJECT_LITERAL node
|
|
3
|
+
*
|
|
4
|
+
* Represents an object literal expression: { key: value, ... }
|
|
5
|
+
* Used for tracking data flow through object construction.
|
|
6
|
+
*/
|
|
7
|
+
import type { BaseNodeRecord } from '@grafema/types';
|
|
8
|
+
interface ObjectLiteralNodeRecord extends BaseNodeRecord {
|
|
9
|
+
type: 'OBJECT_LITERAL';
|
|
10
|
+
column: number;
|
|
11
|
+
parentCallId?: string;
|
|
12
|
+
argIndex?: number;
|
|
13
|
+
}
|
|
14
|
+
interface ObjectLiteralNodeOptions {
|
|
15
|
+
parentCallId?: string;
|
|
16
|
+
argIndex?: number;
|
|
17
|
+
counter?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class ObjectLiteralNode {
|
|
20
|
+
static readonly TYPE: "OBJECT_LITERAL";
|
|
21
|
+
static readonly REQUIRED: readonly ["file", "line", "column"];
|
|
22
|
+
static readonly OPTIONAL: readonly ["parentCallId", "argIndex"];
|
|
23
|
+
static create(file: string, line: number, column: number, options?: ObjectLiteralNodeOptions): ObjectLiteralNodeRecord;
|
|
24
|
+
static validate(node: ObjectLiteralNodeRecord): string[];
|
|
25
|
+
}
|
|
26
|
+
export type { ObjectLiteralNodeRecord, ObjectLiteralNodeOptions };
|
|
27
|
+
//# sourceMappingURL=ObjectLiteralNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectLiteralNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ObjectLiteralNode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,uBAAwB,SAAQ,cAAc;IACtD,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,wBAAwB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAEjD,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAuC;IAC/D,MAAM,CAAC,QAAQ,CAAC,QAAQ,wCAAyC;IAEjE,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,wBAA6B,GACrC,uBAAuB;IAoB1B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,EAAE;CASzD;AAED,YAAY,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectLiteralNode - contract for OBJECT_LITERAL node
|
|
3
|
+
*
|
|
4
|
+
* Represents an object literal expression: { key: value, ... }
|
|
5
|
+
* Used for tracking data flow through object construction.
|
|
6
|
+
*/
|
|
7
|
+
export class ObjectLiteralNode {
|
|
8
|
+
static TYPE = 'OBJECT_LITERAL';
|
|
9
|
+
static REQUIRED = ['file', 'line', 'column'];
|
|
10
|
+
static OPTIONAL = ['parentCallId', 'argIndex'];
|
|
11
|
+
static create(file, line, column, options = {}) {
|
|
12
|
+
if (!file)
|
|
13
|
+
throw new Error('ObjectLiteralNode.create: file is required');
|
|
14
|
+
if (line === undefined)
|
|
15
|
+
throw new Error('ObjectLiteralNode.create: line is required');
|
|
16
|
+
const counter = options.counter !== undefined ? `:${options.counter}` : '';
|
|
17
|
+
const argSuffix = options.argIndex !== undefined ? `arg${options.argIndex}` : 'obj';
|
|
18
|
+
const id = `OBJECT_LITERAL#${argSuffix}#${file}#${line}:${column || 0}${counter}`;
|
|
19
|
+
return {
|
|
20
|
+
id,
|
|
21
|
+
type: this.TYPE,
|
|
22
|
+
name: `<object>`,
|
|
23
|
+
file,
|
|
24
|
+
line,
|
|
25
|
+
column: column || 0,
|
|
26
|
+
parentCallId: options.parentCallId,
|
|
27
|
+
argIndex: options.argIndex
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
static validate(node) {
|
|
31
|
+
const errors = [];
|
|
32
|
+
if (node.type !== this.TYPE)
|
|
33
|
+
errors.push(`Expected type ${this.TYPE}`);
|
|
34
|
+
const nodeRecord = node;
|
|
35
|
+
for (const field of this.REQUIRED) {
|
|
36
|
+
if (nodeRecord[field] === undefined)
|
|
37
|
+
errors.push(`Missing: ${field}`);
|
|
38
|
+
}
|
|
39
|
+
return errors;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ScopeNode - contract for SCOPE node
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses line-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->{scope_path}->SCOPE->{scopeType}#N
|
|
9
|
+
* Example: src/app.js->handler->SCOPE->if#0
|
|
3
10
|
*/
|
|
4
11
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
12
|
+
import { type ScopeContext, type Location } from '../SemanticId.js';
|
|
5
13
|
interface ScopeNodeRecord extends BaseNodeRecord {
|
|
6
14
|
type: 'SCOPE';
|
|
7
15
|
scopeType: string;
|
|
@@ -18,6 +26,16 @@ interface ScopeNodeOptions {
|
|
|
18
26
|
capturesFrom?: string[];
|
|
19
27
|
counter?: number;
|
|
20
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Options for createWithContext
|
|
31
|
+
*/
|
|
32
|
+
interface ScopeContextOptions {
|
|
33
|
+
discriminator: number;
|
|
34
|
+
conditional?: boolean;
|
|
35
|
+
parentScopeId?: string;
|
|
36
|
+
parentFunctionId?: string;
|
|
37
|
+
capturesFrom?: string[];
|
|
38
|
+
}
|
|
21
39
|
export declare class ScopeNode {
|
|
22
40
|
static readonly TYPE: "SCOPE";
|
|
23
41
|
static readonly REQUIRED: readonly ["scopeType", "file", "line"];
|
|
@@ -26,6 +44,19 @@ export declare class ScopeNode {
|
|
|
26
44
|
* Create SCOPE node
|
|
27
45
|
*/
|
|
28
46
|
static create(scopeType: string, file: string, line: number, options?: ScopeNodeOptions): ScopeNodeRecord;
|
|
47
|
+
/**
|
|
48
|
+
* Create SCOPE node with semantic ID (NEW API)
|
|
49
|
+
*
|
|
50
|
+
* Uses ScopeContext from ScopeTracker for stable identifiers.
|
|
51
|
+
* Requires discriminator for multiple scopes of same type within parent scope.
|
|
52
|
+
*
|
|
53
|
+
* @param scopeType - Type of scope (if, else, try, catch, finally, for, while, switch)
|
|
54
|
+
* @param context - Scope context from ScopeTracker.getContext()
|
|
55
|
+
* @param location - Source location { line }
|
|
56
|
+
* @param options - Options including required discriminator
|
|
57
|
+
* @returns ScopeNodeRecord with semantic ID
|
|
58
|
+
*/
|
|
59
|
+
static createWithContext(scopeType: string, context: ScopeContext, location: Partial<Location>, options: ScopeContextOptions): ScopeNodeRecord;
|
|
29
60
|
static validate(node: ScopeNodeRecord): string[];
|
|
30
61
|
}
|
|
31
62
|
export type { ScopeNodeRecord };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ScopeNode.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ScopeNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ScopeNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvF,UAAU,eAAgB,SAAQ,cAAc;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAExC,MAAM,CAAC,QAAQ,CAAC,QAAQ,yCAA0C;IAClE,MAAM,CAAC,QAAQ,CAAC,QAAQ,wFAAyF;IAEjH;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC7B,eAAe;IAuBlB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,mBAAmB,GAC3B,eAAe;IA6BlB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE;CAgBjD;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
|