@grafema/core 0.1.0-alpha.5 → 0.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/Orchestrator.d.ts +31 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +222 -27
- package/dist/config/ConfigLoader.d.ts +90 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +249 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/core/ASTWorker.d.ts +11 -36
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +93 -99
- package/dist/core/CoverageAnalyzer.d.ts +65 -0
- package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
- package/dist/core/CoverageAnalyzer.js +198 -0
- package/dist/core/FileExplainer.d.ts +101 -0
- package/dist/core/FileExplainer.d.ts.map +1 -0
- package/dist/core/FileExplainer.js +139 -0
- package/dist/core/FileNodeManager.d.ts +40 -0
- package/dist/core/FileNodeManager.d.ts.map +1 -0
- package/dist/core/FileNodeManager.js +84 -0
- package/dist/core/GraphFreshnessChecker.d.ts +33 -0
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
- package/dist/core/GraphFreshnessChecker.js +101 -0
- package/dist/core/HashUtils.d.ts +24 -0
- package/dist/core/HashUtils.d.ts.map +1 -0
- package/dist/core/HashUtils.js +45 -0
- package/dist/core/IncrementalReanalyzer.d.ts +36 -0
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
- package/dist/core/IncrementalReanalyzer.js +132 -0
- package/dist/core/NodeFactory.d.ts +266 -19
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +256 -21
- package/dist/core/ScopeTracker.d.ts +84 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -0
- package/dist/core/ScopeTracker.js +116 -0
- package/dist/core/SemanticId.d.ts +90 -0
- package/dist/core/SemanticId.d.ts.map +1 -0
- package/dist/core/SemanticId.js +115 -0
- package/dist/core/VersionManager.d.ts.map +1 -1
- package/dist/core/VersionManager.js +3 -2
- package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
- package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ArrayLiteralNode.js +43 -0
- package/dist/core/nodes/BranchNode.d.ts +41 -0
- package/dist/core/nodes/BranchNode.d.ts.map +1 -0
- package/dist/core/nodes/BranchNode.js +82 -0
- package/dist/core/nodes/CallSiteNode.d.ts +30 -2
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +54 -4
- package/dist/core/nodes/CaseNode.d.ts +43 -0
- package/dist/core/nodes/CaseNode.d.ts.map +1 -0
- package/dist/core/nodes/CaseNode.js +81 -0
- package/dist/core/nodes/ClassNode.d.ts +34 -2
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +52 -4
- package/dist/core/nodes/ConstantNode.d.ts +2 -2
- package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
- package/dist/core/nodes/ConstantNode.js +6 -4
- package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
- package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
- package/dist/core/nodes/ConstructorCallNode.js +171 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
- package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
- package/dist/core/nodes/DatabaseQueryNode.js +5 -2
- package/dist/core/nodes/DecoratorNode.d.ts +42 -0
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
- package/dist/core/nodes/DecoratorNode.js +64 -0
- package/dist/core/nodes/EnumNode.d.ts +42 -0
- package/dist/core/nodes/EnumNode.d.ts.map +1 -0
- package/dist/core/nodes/EnumNode.js +56 -0
- package/dist/core/nodes/EventListenerNode.d.ts +4 -4
- package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
- package/dist/core/nodes/EventListenerNode.js +7 -4
- package/dist/core/nodes/ExportNode.d.ts +38 -2
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +54 -4
- package/dist/core/nodes/ExpressionNode.d.ts +97 -0
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressionNode.js +180 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +49 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalStdioNode.js +15 -8
- package/dist/core/nodes/FunctionNode.d.ts +36 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
- package/dist/core/nodes/FunctionNode.js +80 -1
- package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
- package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
- package/dist/core/nodes/HttpRequestNode.js +7 -4
- package/dist/core/nodes/ImportNode.d.ts +28 -6
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +43 -8
- package/dist/core/nodes/InterfaceNode.d.ts +46 -0
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
- package/dist/core/nodes/InterfaceNode.js +57 -0
- package/dist/core/nodes/IssueNode.d.ts +73 -0
- package/dist/core/nodes/IssueNode.d.ts.map +1 -0
- package/dist/core/nodes/IssueNode.js +129 -0
- package/dist/core/nodes/LiteralNode.d.ts +2 -2
- package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/LiteralNode.js +6 -4
- package/dist/core/nodes/MethodCallNode.d.ts +32 -2
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +57 -4
- package/dist/core/nodes/MethodNode.d.ts +34 -2
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +55 -3
- package/dist/core/nodes/ModuleNode.d.ts +31 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ModuleNode.js +37 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/NetworkRequestNode.js +65 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ObjectLiteralNode.js +43 -0
- package/dist/core/nodes/ParameterNode.d.ts +2 -2
- package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
- package/dist/core/nodes/ParameterNode.js +5 -3
- package/dist/core/nodes/ScopeNode.d.ts +31 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
- package/dist/core/nodes/ScopeNode.js +49 -0
- package/dist/core/nodes/TypeNode.d.ts +36 -0
- package/dist/core/nodes/TypeNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeNode.js +55 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +48 -4
- package/dist/core/nodes/index.d.ts +15 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +17 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
- package/dist/data/builtins/BuiltinRegistry.js +110 -0
- package/dist/data/builtins/definitions.d.ts +28 -0
- package/dist/data/builtins/definitions.d.ts.map +1 -0
- package/dist/data/builtins/definitions.js +250 -0
- package/dist/data/builtins/index.d.ts +10 -0
- package/dist/data/builtins/index.d.ts.map +1 -0
- package/dist/data/builtins/index.js +8 -0
- package/dist/data/builtins/jsGlobals.d.ts +18 -0
- package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
- package/dist/data/builtins/jsGlobals.js +26 -0
- package/dist/data/builtins/types.d.ts +34 -0
- package/dist/data/builtins/types.d.ts.map +1 -0
- package/dist/data/builtins/types.js +7 -0
- package/dist/data/globals/definitions.d.ts +27 -0
- package/dist/data/globals/definitions.d.ts.map +1 -0
- package/dist/data/globals/definitions.js +117 -0
- package/dist/data/globals/index.d.ts +36 -0
- package/dist/data/globals/index.d.ts.map +1 -0
- package/dist/data/globals/index.js +52 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticCollector.js +129 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +247 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticWriter.js +43 -0
- package/dist/diagnostics/index.d.ts +14 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +11 -0
- package/dist/errors/GrafemaError.d.ts +161 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +181 -0
- package/dist/index.d.ts +73 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -1
- package/dist/logging/Logger.d.ts +48 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +134 -0
- package/dist/plugins/Plugin.d.ts +5 -1
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/Plugin.js +33 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +16 -11
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
- package/dist/plugins/analysis/ast/types.d.ts +470 -5
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.js +5 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/location.js +78 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/detector.js +49 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
- package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
- package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/index.js +8 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/parsers.js +80 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +29 -8
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
- package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +173 -147
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
- package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
- package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
- package/dist/plugins/indexing/ServiceDetector.js +28 -15
- package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
- package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
- package/dist/plugins/validation/BrokenImportValidator.js +249 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +103 -77
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +62 -49
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
- package/dist/plugins/validation/EvalBanValidator.js +17 -16
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
- package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
- package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
- package/dist/plugins/validation/NodeCreationValidator.js +415 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
- package/dist/plugins/validation/ShadowingDetector.js +6 -5
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/GitPlugin.js +10 -12
- package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/VCSPlugin.js +5 -5
- package/dist/queries/findCallsInFunction.d.ts +52 -0
- package/dist/queries/findCallsInFunction.d.ts.map +1 -0
- package/dist/queries/findCallsInFunction.js +135 -0
- package/dist/queries/findContainingFunction.d.ts +45 -0
- package/dist/queries/findContainingFunction.d.ts.map +1 -0
- package/dist/queries/findContainingFunction.js +54 -0
- package/dist/queries/index.d.ts +14 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +11 -0
- package/dist/queries/traceValues.d.ts +70 -0
- package/dist/queries/traceValues.d.ts.map +1 -0
- package/dist/queries/traceValues.js +299 -0
- package/dist/queries/types.d.ts +163 -0
- package/dist/queries/types.d.ts.map +1 -0
- package/dist/queries/types.js +9 -0
- package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
- package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/GraphSchemaExtractor.js +124 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/InterfaceSchemaExtractor.js +112 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +72 -62
- package/dist/storage/backends/typeValidation.d.ts.map +1 -1
- package/dist/storage/backends/typeValidation.js +1 -0
- package/dist/validation/PathValidator.d.ts +1 -2
- package/dist/validation/PathValidator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Orchestrator.ts +272 -27
- package/src/config/ConfigLoader.ts +354 -0
- package/src/config/index.ts +5 -0
- package/src/core/ASTWorker.ts +143 -139
- package/src/core/CoverageAnalyzer.ts +243 -0
- package/src/core/FileExplainer.ts +179 -0
- package/src/core/FileNodeManager.ts +100 -0
- package/src/core/GraphFreshnessChecker.ts +143 -0
- package/src/core/HashUtils.ts +48 -0
- package/src/core/IncrementalReanalyzer.ts +192 -0
- package/src/core/NodeFactory.ts +470 -23
- package/src/core/ScopeTracker.ts +154 -0
- package/src/core/SemanticId.ts +192 -0
- package/src/core/VersionManager.ts +3 -2
- package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
- package/src/core/nodes/ArrayLiteralNode.ts +66 -0
- package/src/core/nodes/BranchNode.ts +113 -0
- package/src/core/nodes/CallSiteNode.ts +64 -4
- package/src/core/nodes/CaseNode.ts +123 -0
- package/src/core/nodes/ClassNode.ts +67 -4
- package/src/core/nodes/ConstantNode.ts +5 -4
- package/src/core/nodes/ConstructorCallNode.ts +217 -0
- package/src/core/nodes/DatabaseQueryNode.ts +5 -1
- package/src/core/nodes/DecoratorNode.ts +92 -0
- package/src/core/nodes/EnumNode.ts +87 -0
- package/src/core/nodes/EventListenerNode.ts +7 -4
- package/src/core/nodes/ExportNode.ts +74 -4
- package/src/core/nodes/ExpressionNode.ts +232 -0
- package/src/core/nodes/ExternalModuleNode.ts +65 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/HttpRequestNode.ts +7 -4
- package/src/core/nodes/ImportNode.ts +62 -13
- package/src/core/nodes/InterfaceNode.ts +92 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/LiteralNode.ts +5 -4
- package/src/core/nodes/MethodCallNode.ts +70 -4
- package/src/core/nodes/MethodNode.ts +68 -3
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +66 -0
- package/src/core/nodes/ParameterNode.ts +4 -3
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +79 -0
- package/src/core/nodes/VariableDeclarationNode.ts +58 -4
- package/src/core/nodes/index.ts +21 -1
- package/src/data/builtins/BuiltinRegistry.ts +124 -0
- package/src/data/builtins/definitions.ts +267 -0
- package/src/data/builtins/index.ts +10 -0
- package/src/data/builtins/jsGlobals.ts +28 -0
- package/src/data/builtins/types.ts +36 -0
- package/src/data/globals/definitions.ts +156 -0
- package/src/data/globals/index.ts +66 -0
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +324 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +239 -0
- package/src/index.ts +193 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
- package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +16 -11
- package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +596 -6
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
- package/src/plugins/analysis/ast/utils/index.ts +12 -0
- package/src/plugins/analysis/ast/utils/location.ts +103 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
- package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
- package/src/plugins/discovery/workspaces/detector.ts +63 -0
- package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
- package/src/plugins/discovery/workspaces/index.ts +23 -0
- package/src/plugins/discovery/workspaces/parsers.ts +99 -0
- package/src/plugins/enrichment/AliasTracker.ts +35 -8
- package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
- package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
- package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
- package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
- package/src/plugins/enrichment/MountPointResolver.ts +208 -195
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
- package/src/plugins/validation/BrokenImportValidator.ts +325 -0
- package/src/plugins/validation/CallResolverValidator.ts +131 -110
- package/src/plugins/validation/DataFlowValidator.ts +88 -67
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
- package/src/plugins/validation/ShadowingDetector.ts +6 -5
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
- package/src/plugins/vcs/GitPlugin.ts +40 -12
- package/src/plugins/vcs/VCSPlugin.ts +7 -5
- package/src/queries/README.md +46 -0
- package/src/queries/findCallsInFunction.ts +206 -0
- package/src/queries/findContainingFunction.ts +83 -0
- package/src/queries/index.ts +23 -0
- package/src/queries/traceValues.ts +398 -0
- package/src/queries/types.ts +187 -0
- package/src/schema/GraphSchemaExtractor.ts +177 -0
- package/src/schema/InterfaceSchemaExtractor.ts +173 -0
- package/src/schema/index.ts +5 -0
- package/src/storage/backends/RFDBServerBackend.ts +100 -98
- package/src/storage/backends/typeValidation.ts +1 -0
- package/src/validation/PathValidator.ts +1 -1
- package/dist/core/AnalysisWorker.d.ts +0 -14
- package/dist/core/AnalysisWorker.d.ts.map +0 -1
- package/dist/core/AnalysisWorker.js +0 -307
- package/dist/core/ParallelAnalyzer.d.ts +0 -120
- package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
- package/dist/core/ParallelAnalyzer.js +0 -331
- package/dist/core/QueueWorker.d.ts +0 -12
- package/dist/core/QueueWorker.d.ts.map +0 -1
- package/dist/core/QueueWorker.js +0 -567
- package/dist/core/RFDBClient.d.ts +0 -179
- package/dist/core/RFDBClient.d.ts.map +0 -1
- package/dist/core/RFDBClient.js +0 -429
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
- package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
- package/src/core/AnalysisWorker.ts +0 -410
- package/src/core/ParallelAnalyzer.ts +0 -476
- package/src/core/QueueWorker.ts +0 -780
- package/src/plugins/indexing/ServiceDetector.ts +0 -230
package/dist/core/NodeFactory.js
CHANGED
|
@@ -10,22 +10,23 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { createHash } from 'crypto';
|
|
12
12
|
import { basename, relative } from 'path';
|
|
13
|
-
import { ServiceNode, EntrypointNode, ModuleNode, FunctionNode, ScopeNode, CallSiteNode, MethodCallNode, VariableDeclarationNode, ConstantNode, LiteralNode, ExternalStdioNode, EventListenerNode, HttpRequestNode, DatabaseQueryNode, } from './nodes/index.js';
|
|
13
|
+
import { ServiceNode, EntrypointNode, ModuleNode, FunctionNode, ScopeNode, BranchNode, CaseNode, CallSiteNode, MethodCallNode, ConstructorCallNode, VariableDeclarationNode, ConstantNode, LiteralNode, ObjectLiteralNode, ArrayLiteralNode, ExternalStdioNode, NetworkRequestNode, EventListenerNode, HttpRequestNode, DatabaseQueryNode, ImportNode, ClassNode, ExportNode, ExternalModuleNode, InterfaceNode, TypeNode, EnumNode, DecoratorNode, ExpressionNode, ArgumentExpressionNode, IssueNode, } from './nodes/index.js';
|
|
14
|
+
import { brandNode } from '@grafema/types';
|
|
14
15
|
export class NodeFactory {
|
|
15
16
|
/**
|
|
16
17
|
* Create SERVICE node
|
|
17
18
|
*/
|
|
18
19
|
static createService(name, projectPath, options = {}) {
|
|
19
|
-
return ServiceNode.create(name, projectPath, options);
|
|
20
|
+
return brandNode(ServiceNode.create(name, projectPath, options));
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
23
|
* Create ENTRYPOINT node
|
|
23
24
|
*/
|
|
24
25
|
static createEntrypoint(file, entrypointType, options = {}) {
|
|
25
|
-
return EntrypointNode.create(file, entrypointType, options);
|
|
26
|
+
return brandNode(EntrypointNode.create(file, entrypointType, options));
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
|
-
* Create MODULE node
|
|
29
|
+
* Create MODULE node (LEGACY)
|
|
29
30
|
*/
|
|
30
31
|
static createModule(filePath, projectPath, options = {}) {
|
|
31
32
|
if (!filePath)
|
|
@@ -34,73 +35,288 @@ export class NodeFactory {
|
|
|
34
35
|
throw new Error('NodeFactory.createModule: projectPath is required');
|
|
35
36
|
const contentHash = options.contentHash || this._hashFile(filePath);
|
|
36
37
|
const relativePath = relative(projectPath, filePath) || basename(filePath);
|
|
37
|
-
return ModuleNode.create(filePath, relativePath, contentHash, options);
|
|
38
|
+
return brandNode(ModuleNode.create(filePath, relativePath, contentHash, options));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create MODULE node with semantic ID (NEW API)
|
|
42
|
+
*
|
|
43
|
+
* Uses ScopeContext for stable identifiers.
|
|
44
|
+
*
|
|
45
|
+
* @param context - Scope context with file path (relative to project root)
|
|
46
|
+
* @param options - Optional contentHash and isTest flag
|
|
47
|
+
* @returns ModuleNodeRecord with semantic ID
|
|
48
|
+
*/
|
|
49
|
+
static createModuleWithContext(context, options = {}) {
|
|
50
|
+
return brandNode(ModuleNode.createWithContext(context, options));
|
|
38
51
|
}
|
|
39
52
|
/**
|
|
40
53
|
* Create FUNCTION node
|
|
41
54
|
*/
|
|
42
55
|
static createFunction(name, file, line, column, options = {}) {
|
|
43
|
-
return FunctionNode.create(name, file, line, column, options);
|
|
56
|
+
return brandNode(FunctionNode.create(name, file, line, column, options));
|
|
44
57
|
}
|
|
45
58
|
/**
|
|
46
59
|
* Create SCOPE node
|
|
47
60
|
*/
|
|
48
61
|
static createScope(scopeType, file, line, options = {}) {
|
|
49
|
-
return ScopeNode.create(scopeType, file, line, options);
|
|
62
|
+
return brandNode(ScopeNode.create(scopeType, file, line, options));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create BRANCH node
|
|
66
|
+
*/
|
|
67
|
+
static createBranch(branchType, file, line, column, options = {}) {
|
|
68
|
+
return brandNode(BranchNode.create(branchType, file, line, column, options));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create CASE node
|
|
72
|
+
*/
|
|
73
|
+
static createCase(value, isDefault, fallsThrough, isEmpty, file, line, column, options = {}) {
|
|
74
|
+
return brandNode(CaseNode.create(value, isDefault, fallsThrough, isEmpty, file, line, column, options));
|
|
50
75
|
}
|
|
51
76
|
/**
|
|
52
77
|
* Create CALL_SITE node
|
|
53
78
|
*/
|
|
54
79
|
static createCallSite(targetName, file, line, column, options = {}) {
|
|
55
|
-
return CallSiteNode.create(targetName, file, line, column, options);
|
|
80
|
+
return brandNode(CallSiteNode.create(targetName, file, line, column, options));
|
|
56
81
|
}
|
|
57
82
|
/**
|
|
58
83
|
* Create METHOD_CALL node
|
|
59
84
|
*/
|
|
60
85
|
static createMethodCall(objectName, methodName, file, line, column, options = {}) {
|
|
61
|
-
return MethodCallNode.create(objectName, methodName, file, line, column, options);
|
|
86
|
+
return brandNode(MethodCallNode.create(objectName, methodName, file, line, column, options));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create CONSTRUCTOR_CALL node
|
|
90
|
+
*
|
|
91
|
+
* Represents a `new ClassName()` expression.
|
|
92
|
+
* Used for data flow: VARIABLE --ASSIGNED_FROM--> CONSTRUCTOR_CALL
|
|
93
|
+
*
|
|
94
|
+
* @param className - Name of the constructor (e.g., 'Date', 'MyClass')
|
|
95
|
+
* @param file - File path
|
|
96
|
+
* @param line - Line number
|
|
97
|
+
* @param column - Column position
|
|
98
|
+
* @param options - Optional counter for disambiguation
|
|
99
|
+
*/
|
|
100
|
+
static createConstructorCall(className, file, line, column, options = {}) {
|
|
101
|
+
return brandNode(ConstructorCallNode.create(className, file, line, column, options));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Generate CONSTRUCTOR_CALL node ID without creating the full node
|
|
105
|
+
*
|
|
106
|
+
* Used by JSASTAnalyzer when creating assignment metadata.
|
|
107
|
+
* The full node is created later by GraphBuilder.
|
|
108
|
+
*/
|
|
109
|
+
static generateConstructorCallId(className, file, line, column, options = {}) {
|
|
110
|
+
return ConstructorCallNode.generateId(className, file, line, column, options);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if a class name is a built-in JavaScript constructor
|
|
114
|
+
*/
|
|
115
|
+
static isBuiltinConstructor(className) {
|
|
116
|
+
return ConstructorCallNode.isBuiltinConstructor(className);
|
|
62
117
|
}
|
|
63
118
|
/**
|
|
64
119
|
* Create VARIABLE_DECLARATION node
|
|
65
120
|
*/
|
|
66
121
|
static createVariableDeclaration(name, file, line, column, options = {}) {
|
|
67
|
-
return VariableDeclarationNode.create(name, file, line, column, options);
|
|
122
|
+
return brandNode(VariableDeclarationNode.create(name, file, line, column, options));
|
|
68
123
|
}
|
|
69
124
|
/**
|
|
70
125
|
* Create CONSTANT node
|
|
71
126
|
*/
|
|
72
127
|
static createConstant(name, file, line, column, options = {}) {
|
|
73
|
-
return ConstantNode.create(name, file, line, column, options);
|
|
128
|
+
return brandNode(ConstantNode.create(name, file, line, column, options));
|
|
74
129
|
}
|
|
75
130
|
/**
|
|
76
131
|
* Create LITERAL node
|
|
77
132
|
*/
|
|
78
133
|
static createLiteral(value, file, line, column, options = {}) {
|
|
79
|
-
return LiteralNode.create(value, file, line, column, options);
|
|
134
|
+
return brandNode(LiteralNode.create(value, file, line, column, options));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create OBJECT_LITERAL node
|
|
138
|
+
*/
|
|
139
|
+
static createObjectLiteral(file, line, column, options = {}) {
|
|
140
|
+
return brandNode(ObjectLiteralNode.create(file, line, column, options));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create ARRAY_LITERAL node
|
|
144
|
+
*/
|
|
145
|
+
static createArrayLiteral(file, line, column, options = {}) {
|
|
146
|
+
return brandNode(ArrayLiteralNode.create(file, line, column, options));
|
|
80
147
|
}
|
|
81
148
|
/**
|
|
82
149
|
* Create EXTERNAL_STDIO node (singleton)
|
|
83
150
|
*/
|
|
84
151
|
static createExternalStdio() {
|
|
85
|
-
return ExternalStdioNode.create();
|
|
152
|
+
return brandNode(ExternalStdioNode.create());
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Create net:request singleton node
|
|
156
|
+
*
|
|
157
|
+
* This node represents the external network as a system resource.
|
|
158
|
+
* Should be created once per graph.
|
|
159
|
+
*
|
|
160
|
+
* All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
|
|
161
|
+
*
|
|
162
|
+
* @returns NetworkRequestNodeRecord - singleton node
|
|
163
|
+
*/
|
|
164
|
+
static createNetworkRequest() {
|
|
165
|
+
return brandNode(NetworkRequestNode.create());
|
|
86
166
|
}
|
|
87
167
|
/**
|
|
88
168
|
* Create EVENT_LISTENER node
|
|
89
169
|
*/
|
|
90
|
-
static createEventListener(eventName, objectName, file, line, options = {}) {
|
|
91
|
-
return EventListenerNode.create(eventName, objectName, file, line, options);
|
|
170
|
+
static createEventListener(eventName, objectName, file, line, column, options = {}) {
|
|
171
|
+
return brandNode(EventListenerNode.create(eventName, objectName, file, line, column, options));
|
|
92
172
|
}
|
|
93
173
|
/**
|
|
94
174
|
* Create HTTP_REQUEST node
|
|
95
175
|
*/
|
|
96
|
-
static createHttpRequest(url, method, file, line, options = {}) {
|
|
97
|
-
return HttpRequestNode.create(url, method, file, line, options);
|
|
176
|
+
static createHttpRequest(url, method, file, line, column, options = {}) {
|
|
177
|
+
return brandNode(HttpRequestNode.create(url, method, file, line, column, options));
|
|
98
178
|
}
|
|
99
179
|
/**
|
|
100
180
|
* Create DATABASE_QUERY node
|
|
101
181
|
*/
|
|
102
|
-
static createDatabaseQuery(query, operation, file, line, options = {}) {
|
|
103
|
-
return DatabaseQueryNode.create(query, operation, file, line, options);
|
|
182
|
+
static createDatabaseQuery(query, operation, file, line, column, options = {}) {
|
|
183
|
+
return brandNode(DatabaseQueryNode.create(query, operation, file, line, column, options));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Create IMPORT node
|
|
187
|
+
*
|
|
188
|
+
* ImportNode automatically detects importType from imported field:
|
|
189
|
+
* - imported === 'default' → importType: 'default'
|
|
190
|
+
* - imported === '*' → importType: 'namespace'
|
|
191
|
+
* - anything else → importType: 'named'
|
|
192
|
+
*
|
|
193
|
+
* @param name - Local binding name (how it's used in this file)
|
|
194
|
+
* @param file - Absolute file path
|
|
195
|
+
* @param line - Line number (for debugging, not part of ID)
|
|
196
|
+
* @param column - Column position (0 if unavailable)
|
|
197
|
+
* @param source - Source module (e.g., 'react', './utils')
|
|
198
|
+
* @param options - Optional fields
|
|
199
|
+
* @returns ImportNodeRecord
|
|
200
|
+
*/
|
|
201
|
+
static createImport(name, file, line, column, source, options = {}) {
|
|
202
|
+
return brandNode(ImportNode.create(name, file, line, column, source, options));
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Create CLASS node
|
|
206
|
+
*/
|
|
207
|
+
static createClass(name, file, line, column, options = {}) {
|
|
208
|
+
return brandNode(ClassNode.create(name, file, line, column, options));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create EXPORT node
|
|
212
|
+
*/
|
|
213
|
+
static createExport(name, file, line, column, options = {}) {
|
|
214
|
+
return brandNode(ExportNode.create(name, file, line, column, options));
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Create EXTERNAL_MODULE node
|
|
218
|
+
*
|
|
219
|
+
* Represents external npm packages or Node.js built-in modules.
|
|
220
|
+
* Uses singleton pattern - same source always produces same ID.
|
|
221
|
+
*
|
|
222
|
+
* @param source - Module name (e.g., 'lodash', '@tanstack/react-query', 'node:fs')
|
|
223
|
+
*/
|
|
224
|
+
static createExternalModule(source) {
|
|
225
|
+
return brandNode(ExternalModuleNode.create(source));
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Create INTERFACE node
|
|
229
|
+
*/
|
|
230
|
+
static createInterface(name, file, line, column, options = {}) {
|
|
231
|
+
return brandNode(InterfaceNode.create(name, file, line, column, options));
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Create TYPE node
|
|
235
|
+
*/
|
|
236
|
+
static createType(name, file, line, column, options = {}) {
|
|
237
|
+
return brandNode(TypeNode.create(name, file, line, column, options));
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create ENUM node
|
|
241
|
+
*/
|
|
242
|
+
static createEnum(name, file, line, column, options = {}) {
|
|
243
|
+
return brandNode(EnumNode.create(name, file, line, column, options));
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Create DECORATOR node
|
|
247
|
+
*/
|
|
248
|
+
static createDecorator(name, file, line, column, targetId, targetType, options = {}) {
|
|
249
|
+
return brandNode(DecoratorNode.create(name, file, line, column, targetId, targetType, options));
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Create EXPRESSION node
|
|
253
|
+
*/
|
|
254
|
+
static createExpression(expressionType, file, line, column, options = {}) {
|
|
255
|
+
return brandNode(ExpressionNode.create(expressionType, file, line, column, options));
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Generate EXPRESSION node ID without creating the full node
|
|
259
|
+
*
|
|
260
|
+
* Used by JSASTAnalyzer when creating assignment metadata.
|
|
261
|
+
* The full node is created later by GraphBuilder.
|
|
262
|
+
*
|
|
263
|
+
* @param expressionType - Type of expression (MemberExpression, BinaryExpression, etc.)
|
|
264
|
+
* @param file - File path
|
|
265
|
+
* @param line - Line number
|
|
266
|
+
* @param column - Column position
|
|
267
|
+
* @returns Generated ID string in colon format
|
|
268
|
+
*/
|
|
269
|
+
static generateExpressionId(expressionType, file, line, column) {
|
|
270
|
+
return ExpressionNode.generateId(expressionType, file, line, column);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Create EXPRESSION node from assignment metadata
|
|
274
|
+
*
|
|
275
|
+
* Used by GraphBuilder when processing variableAssignments.
|
|
276
|
+
* The ID is provided from upstream (generated by JSASTAnalyzer).
|
|
277
|
+
*
|
|
278
|
+
* @param expressionType - Type of expression
|
|
279
|
+
* @param file - File path
|
|
280
|
+
* @param line - Line number
|
|
281
|
+
* @param column - Column position
|
|
282
|
+
* @param options - Must include id; optional: expression properties
|
|
283
|
+
*/
|
|
284
|
+
static createExpressionFromMetadata(expressionType, file, line, column, options) {
|
|
285
|
+
return brandNode(ExpressionNode.createFromMetadata(expressionType, file, line, column, options));
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Create EXPRESSION node with argument context
|
|
289
|
+
*
|
|
290
|
+
* Used when EXPRESSION appears as a call argument and we need to track
|
|
291
|
+
* which call and argument position for data flow analysis.
|
|
292
|
+
*
|
|
293
|
+
* @param expressionType - Type of expression (BinaryExpression, LogicalExpression, etc.)
|
|
294
|
+
* @param file - File path
|
|
295
|
+
* @param line - Line number
|
|
296
|
+
* @param column - Column position
|
|
297
|
+
* @param options - Required: parentCallId, argIndex; Optional: expression properties, counter
|
|
298
|
+
* @returns ArgumentExpressionNodeRecord
|
|
299
|
+
*/
|
|
300
|
+
static createArgumentExpression(expressionType, file, line, column, options) {
|
|
301
|
+
return brandNode(ArgumentExpressionNode.create(expressionType, file, line, column, options));
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Create ISSUE node
|
|
305
|
+
*
|
|
306
|
+
* Issues represent detected problems in the codebase.
|
|
307
|
+
* Used by validation plugins to persist findings in the graph.
|
|
308
|
+
*
|
|
309
|
+
* @param category - Issue category (security, performance, style, smell)
|
|
310
|
+
* @param severity - error | warning | info
|
|
311
|
+
* @param message - Human-readable description
|
|
312
|
+
* @param plugin - Name of the plugin that detected this issue
|
|
313
|
+
* @param file - File path where issue was detected
|
|
314
|
+
* @param line - Line number
|
|
315
|
+
* @param column - Column number (optional)
|
|
316
|
+
* @param options - Optional context data
|
|
317
|
+
*/
|
|
318
|
+
static createIssue(category, severity, message, plugin, file, line, column = 0, options = {}) {
|
|
319
|
+
return brandNode(IssueNode.create(category, severity, message, plugin, file, line, column, options));
|
|
104
320
|
}
|
|
105
321
|
/**
|
|
106
322
|
* Validate node by its type
|
|
@@ -112,16 +328,35 @@ export class NodeFactory {
|
|
|
112
328
|
'MODULE': ModuleNode,
|
|
113
329
|
'FUNCTION': FunctionNode,
|
|
114
330
|
'SCOPE': ScopeNode,
|
|
331
|
+
'BRANCH': BranchNode,
|
|
332
|
+
'CASE': CaseNode,
|
|
115
333
|
'CALL_SITE': CallSiteNode,
|
|
116
334
|
'METHOD_CALL': MethodCallNode,
|
|
335
|
+
'CONSTRUCTOR_CALL': ConstructorCallNode,
|
|
117
336
|
'VARIABLE_DECLARATION': VariableDeclarationNode,
|
|
118
337
|
'CONSTANT': ConstantNode,
|
|
119
338
|
'LITERAL': LiteralNode,
|
|
120
|
-
'
|
|
339
|
+
'OBJECT_LITERAL': ObjectLiteralNode,
|
|
340
|
+
'ARRAY_LITERAL': ArrayLiteralNode,
|
|
341
|
+
'net:stdio': ExternalStdioNode,
|
|
342
|
+
'net:request': NetworkRequestNode,
|
|
121
343
|
'EVENT_LISTENER': EventListenerNode,
|
|
122
344
|
'HTTP_REQUEST': HttpRequestNode,
|
|
123
|
-
'DATABASE_QUERY': DatabaseQueryNode
|
|
345
|
+
'DATABASE_QUERY': DatabaseQueryNode,
|
|
346
|
+
'IMPORT': ImportNode,
|
|
347
|
+
'CLASS': ClassNode,
|
|
348
|
+
'EXPORT': ExportNode,
|
|
349
|
+
'EXTERNAL_MODULE': ExternalModuleNode,
|
|
350
|
+
'INTERFACE': InterfaceNode,
|
|
351
|
+
'TYPE': TypeNode,
|
|
352
|
+
'ENUM': EnumNode,
|
|
353
|
+
'DECORATOR': DecoratorNode,
|
|
354
|
+
'EXPRESSION': ExpressionNode
|
|
124
355
|
};
|
|
356
|
+
// Handle issue:* types dynamically
|
|
357
|
+
if (IssueNode.isIssueType(node.type)) {
|
|
358
|
+
return IssueNode.validate(node);
|
|
359
|
+
}
|
|
125
360
|
const validator = validators[node.type];
|
|
126
361
|
if (!validator) {
|
|
127
362
|
return [`Unknown node type: ${node.type}`];
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScopeTracker - Track scope hierarchy during AST traversal
|
|
3
|
+
*
|
|
4
|
+
* Maintains the current scope path and provides counters for:
|
|
5
|
+
* - Counted scopes (if#0, try#1, etc.)
|
|
6
|
+
* - Item counters (CALL, LITERAL, etc.)
|
|
7
|
+
* - Sibling tracking (anonymous[0], anonymous[1], etc.)
|
|
8
|
+
*
|
|
9
|
+
* Used with SemanticId to generate stable identifiers.
|
|
10
|
+
*/
|
|
11
|
+
import type { ScopeContext } from './SemanticId.js';
|
|
12
|
+
/**
|
|
13
|
+
* Entry in the scope stack
|
|
14
|
+
*/
|
|
15
|
+
export interface ScopeEntry {
|
|
16
|
+
name: string;
|
|
17
|
+
type: string;
|
|
18
|
+
counter?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Result of entering a counted scope
|
|
22
|
+
*/
|
|
23
|
+
export interface CountedScopeResult {
|
|
24
|
+
name: string;
|
|
25
|
+
discriminator: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* ScopeTracker - Manages scope hierarchy and counters during AST traversal
|
|
29
|
+
*/
|
|
30
|
+
export declare class ScopeTracker {
|
|
31
|
+
/** Source file path */
|
|
32
|
+
readonly file: string;
|
|
33
|
+
/** Current scope stack */
|
|
34
|
+
private scopeStack;
|
|
35
|
+
/** Counters for various purposes (scoped by scope path) */
|
|
36
|
+
private counters;
|
|
37
|
+
constructor(file: string);
|
|
38
|
+
/**
|
|
39
|
+
* Enter a named scope (function, class, etc.)
|
|
40
|
+
*/
|
|
41
|
+
enterScope(name: string, type: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Enter a counted scope (if, try, for, etc.)
|
|
44
|
+
* Automatically assigns a discriminator.
|
|
45
|
+
*/
|
|
46
|
+
enterCountedScope(type: string): CountedScopeResult;
|
|
47
|
+
/**
|
|
48
|
+
* Exit the current scope
|
|
49
|
+
*/
|
|
50
|
+
exitScope(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Get current scope context for semantic ID generation
|
|
53
|
+
*/
|
|
54
|
+
getContext(): ScopeContext;
|
|
55
|
+
/**
|
|
56
|
+
* Get scope path as string (for display/debugging)
|
|
57
|
+
*/
|
|
58
|
+
getScopePath(): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get the innermost enclosing scope of a specific type.
|
|
61
|
+
* Searches from innermost to outermost.
|
|
62
|
+
*
|
|
63
|
+
* @param scopeType - Type to search for ('CLASS', 'FUNCTION', etc.)
|
|
64
|
+
* @returns The scope entry name if found, undefined otherwise
|
|
65
|
+
*/
|
|
66
|
+
getEnclosingScope(scopeType: string): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Get next counter for item type within current scope.
|
|
69
|
+
* Used for CALL, LITERAL, etc. that need #N discriminators.
|
|
70
|
+
*/
|
|
71
|
+
getItemCounter(itemType: string): number;
|
|
72
|
+
/**
|
|
73
|
+
* Get current count without incrementing.
|
|
74
|
+
* Used to check for collisions.
|
|
75
|
+
*/
|
|
76
|
+
peekItemCounter(itemType: string): number;
|
|
77
|
+
/**
|
|
78
|
+
* Track siblings by name within current scope.
|
|
79
|
+
* Used for anonymous functions: anonymous[0], anonymous[1]
|
|
80
|
+
*/
|
|
81
|
+
getSiblingIndex(name: string): number;
|
|
82
|
+
private counterKey;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ScopeTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopeTracker.d.ts","sourceRoot":"","sources":["../../src/core/ScopeTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0BAA0B;IAC1B,OAAO,CAAC,UAAU,CAAoB;IAEtC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,IAAI,EAAE,MAAM;IAMxB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;IAUnD;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACH,UAAU,IAAI,YAAY;IAO1B;;OAEG;IACH,YAAY,IAAI,MAAM;IAKtB;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYxD;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOxC;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMzC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASrC,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScopeTracker - Track scope hierarchy during AST traversal
|
|
3
|
+
*
|
|
4
|
+
* Maintains the current scope path and provides counters for:
|
|
5
|
+
* - Counted scopes (if#0, try#1, etc.)
|
|
6
|
+
* - Item counters (CALL, LITERAL, etc.)
|
|
7
|
+
* - Sibling tracking (anonymous[0], anonymous[1], etc.)
|
|
8
|
+
*
|
|
9
|
+
* Used with SemanticId to generate stable identifiers.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* ScopeTracker - Manages scope hierarchy and counters during AST traversal
|
|
13
|
+
*/
|
|
14
|
+
export class ScopeTracker {
|
|
15
|
+
/** Source file path */
|
|
16
|
+
file;
|
|
17
|
+
/** Current scope stack */
|
|
18
|
+
scopeStack = [];
|
|
19
|
+
/** Counters for various purposes (scoped by scope path) */
|
|
20
|
+
counters = new Map();
|
|
21
|
+
constructor(file) {
|
|
22
|
+
this.file = file;
|
|
23
|
+
}
|
|
24
|
+
// === Scope Management ===
|
|
25
|
+
/**
|
|
26
|
+
* Enter a named scope (function, class, etc.)
|
|
27
|
+
*/
|
|
28
|
+
enterScope(name, type) {
|
|
29
|
+
this.scopeStack.push({ name, type });
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Enter a counted scope (if, try, for, etc.)
|
|
33
|
+
* Automatically assigns a discriminator.
|
|
34
|
+
*/
|
|
35
|
+
enterCountedScope(type) {
|
|
36
|
+
const key = this.counterKey(type);
|
|
37
|
+
const n = this.counters.get(key) || 0;
|
|
38
|
+
this.counters.set(key, n + 1);
|
|
39
|
+
const name = `${type}#${n}`;
|
|
40
|
+
this.scopeStack.push({ name, type, counter: n });
|
|
41
|
+
return { name, discriminator: n };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Exit the current scope
|
|
45
|
+
*/
|
|
46
|
+
exitScope() {
|
|
47
|
+
this.scopeStack.pop();
|
|
48
|
+
}
|
|
49
|
+
// === ID Generation ===
|
|
50
|
+
/**
|
|
51
|
+
* Get current scope context for semantic ID generation
|
|
52
|
+
*/
|
|
53
|
+
getContext() {
|
|
54
|
+
return {
|
|
55
|
+
file: this.file,
|
|
56
|
+
scopePath: this.scopeStack.map(s => s.name)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get scope path as string (for display/debugging)
|
|
61
|
+
*/
|
|
62
|
+
getScopePath() {
|
|
63
|
+
if (this.scopeStack.length === 0)
|
|
64
|
+
return 'global';
|
|
65
|
+
return this.scopeStack.map(s => s.name).join('->');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the innermost enclosing scope of a specific type.
|
|
69
|
+
* Searches from innermost to outermost.
|
|
70
|
+
*
|
|
71
|
+
* @param scopeType - Type to search for ('CLASS', 'FUNCTION', etc.)
|
|
72
|
+
* @returns The scope entry name if found, undefined otherwise
|
|
73
|
+
*/
|
|
74
|
+
getEnclosingScope(scopeType) {
|
|
75
|
+
// Search from end (innermost) to start (outermost)
|
|
76
|
+
for (let i = this.scopeStack.length - 1; i >= 0; i--) {
|
|
77
|
+
if (this.scopeStack[i].type === scopeType) {
|
|
78
|
+
return this.scopeStack[i].name;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
// === Counter Management ===
|
|
84
|
+
/**
|
|
85
|
+
* Get next counter for item type within current scope.
|
|
86
|
+
* Used for CALL, LITERAL, etc. that need #N discriminators.
|
|
87
|
+
*/
|
|
88
|
+
getItemCounter(itemType) {
|
|
89
|
+
const key = this.counterKey(itemType);
|
|
90
|
+
const n = this.counters.get(key) || 0;
|
|
91
|
+
this.counters.set(key, n + 1);
|
|
92
|
+
return n;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get current count without incrementing.
|
|
96
|
+
* Used to check for collisions.
|
|
97
|
+
*/
|
|
98
|
+
peekItemCounter(itemType) {
|
|
99
|
+
return this.counters.get(this.counterKey(itemType)) || 0;
|
|
100
|
+
}
|
|
101
|
+
// === Sibling Tracking ===
|
|
102
|
+
/**
|
|
103
|
+
* Track siblings by name within current scope.
|
|
104
|
+
* Used for anonymous functions: anonymous[0], anonymous[1]
|
|
105
|
+
*/
|
|
106
|
+
getSiblingIndex(name) {
|
|
107
|
+
const key = `${this.getScopePath()}:sibling:${name}`;
|
|
108
|
+
const n = this.counters.get(key) || 0;
|
|
109
|
+
this.counters.set(key, n + 1);
|
|
110
|
+
return n;
|
|
111
|
+
}
|
|
112
|
+
// === Private ===
|
|
113
|
+
counterKey(itemType) {
|
|
114
|
+
return `${this.getScopePath()}:${itemType}`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SemanticId - Stable identifiers for code elements
|
|
3
|
+
*
|
|
4
|
+
* Semantic IDs provide stable identifiers for code elements that don't change
|
|
5
|
+
* when unrelated code is added/removed (no line numbers in IDs).
|
|
6
|
+
*
|
|
7
|
+
* Format: {file}->{scope_path}->{type}->{name}[#discriminator]
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* src/app.js->global->FUNCTION->processData
|
|
11
|
+
* src/app.js->UserService->METHOD->login
|
|
12
|
+
* src/app.js->getUser->if#0->CALL->console.log#0
|
|
13
|
+
*
|
|
14
|
+
* Special formats:
|
|
15
|
+
* Singletons: net:stdio->__stdio__
|
|
16
|
+
* External modules: EXTERNAL_MODULE->lodash
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Location in source file
|
|
20
|
+
*/
|
|
21
|
+
export interface Location {
|
|
22
|
+
line: number;
|
|
23
|
+
column: number;
|
|
24
|
+
endLine?: number;
|
|
25
|
+
endColumn?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Scope context for semantic ID generation
|
|
29
|
+
*/
|
|
30
|
+
export interface ScopeContext {
|
|
31
|
+
/** Source file path */
|
|
32
|
+
file: string;
|
|
33
|
+
/** Array of scope names, e.g. ['MyClass', 'myMethod', 'if#1'] */
|
|
34
|
+
scopePath: string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Options for semantic ID generation
|
|
38
|
+
*/
|
|
39
|
+
export interface SemanticIdOptions {
|
|
40
|
+
/** Counter for disambiguation (#N) */
|
|
41
|
+
discriminator?: number;
|
|
42
|
+
/** Context string for special cases ([context]) */
|
|
43
|
+
context?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parsed semantic ID components
|
|
47
|
+
*/
|
|
48
|
+
export interface ParsedSemanticId {
|
|
49
|
+
file: string;
|
|
50
|
+
scopePath: string[];
|
|
51
|
+
type: string;
|
|
52
|
+
name: string;
|
|
53
|
+
discriminator?: number;
|
|
54
|
+
context?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Item with name and location for discriminator computation
|
|
58
|
+
*/
|
|
59
|
+
export interface LocatedItem {
|
|
60
|
+
name: string;
|
|
61
|
+
location: Location;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Compute semantic ID for any node type.
|
|
65
|
+
*
|
|
66
|
+
* @param type - Node type (FUNCTION, CALL, VARIABLE, etc.)
|
|
67
|
+
* @param name - Node name
|
|
68
|
+
* @param context - Scope context from ScopeTracker
|
|
69
|
+
* @param options - Optional discriminator or context
|
|
70
|
+
* @returns Semantic ID string
|
|
71
|
+
*/
|
|
72
|
+
export declare function computeSemanticId(type: string, name: string, context: ScopeContext, options?: SemanticIdOptions): string;
|
|
73
|
+
/**
|
|
74
|
+
* Parse semantic ID back to components.
|
|
75
|
+
*
|
|
76
|
+
* @param id - Semantic ID to parse
|
|
77
|
+
* @returns Parsed components or null if invalid
|
|
78
|
+
*/
|
|
79
|
+
export declare function parseSemanticId(id: string): ParsedSemanticId | null;
|
|
80
|
+
/**
|
|
81
|
+
* Compute discriminator for items with same name in same scope.
|
|
82
|
+
* Uses line/column for stable ordering.
|
|
83
|
+
*
|
|
84
|
+
* @param items - All items in scope
|
|
85
|
+
* @param targetName - Name to find discriminator for
|
|
86
|
+
* @param targetLocation - Location of target item
|
|
87
|
+
* @returns Discriminator (0-based index among same-named items)
|
|
88
|
+
*/
|
|
89
|
+
export declare function computeDiscriminator(items: LocatedItem[], targetName: string, targetLocation: Location): number;
|
|
90
|
+
//# sourceMappingURL=SemanticId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticId.d.ts","sourceRoot":"","sources":["../../src/core/SemanticId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAaR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAiDnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAAE,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,QAAQ,GACvB,MAAM,CAwBR"}
|