@grafema/core 0.1.0-alpha.5 → 0.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/Orchestrator.d.ts +31 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +222 -27
- package/dist/config/ConfigLoader.d.ts +90 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +249 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/core/ASTWorker.d.ts +11 -36
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +93 -99
- package/dist/core/CoverageAnalyzer.d.ts +65 -0
- package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
- package/dist/core/CoverageAnalyzer.js +198 -0
- package/dist/core/FileExplainer.d.ts +101 -0
- package/dist/core/FileExplainer.d.ts.map +1 -0
- package/dist/core/FileExplainer.js +139 -0
- package/dist/core/FileNodeManager.d.ts +40 -0
- package/dist/core/FileNodeManager.d.ts.map +1 -0
- package/dist/core/FileNodeManager.js +84 -0
- package/dist/core/GraphFreshnessChecker.d.ts +33 -0
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
- package/dist/core/GraphFreshnessChecker.js +101 -0
- package/dist/core/HashUtils.d.ts +24 -0
- package/dist/core/HashUtils.d.ts.map +1 -0
- package/dist/core/HashUtils.js +45 -0
- package/dist/core/IncrementalReanalyzer.d.ts +36 -0
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
- package/dist/core/IncrementalReanalyzer.js +132 -0
- package/dist/core/NodeFactory.d.ts +266 -19
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +256 -21
- package/dist/core/ScopeTracker.d.ts +84 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -0
- package/dist/core/ScopeTracker.js +116 -0
- package/dist/core/SemanticId.d.ts +90 -0
- package/dist/core/SemanticId.d.ts.map +1 -0
- package/dist/core/SemanticId.js +115 -0
- package/dist/core/VersionManager.d.ts.map +1 -1
- package/dist/core/VersionManager.js +3 -2
- package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
- package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ArrayLiteralNode.js +43 -0
- package/dist/core/nodes/BranchNode.d.ts +41 -0
- package/dist/core/nodes/BranchNode.d.ts.map +1 -0
- package/dist/core/nodes/BranchNode.js +82 -0
- package/dist/core/nodes/CallSiteNode.d.ts +30 -2
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +54 -4
- package/dist/core/nodes/CaseNode.d.ts +43 -0
- package/dist/core/nodes/CaseNode.d.ts.map +1 -0
- package/dist/core/nodes/CaseNode.js +81 -0
- package/dist/core/nodes/ClassNode.d.ts +34 -2
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +52 -4
- package/dist/core/nodes/ConstantNode.d.ts +2 -2
- package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
- package/dist/core/nodes/ConstantNode.js +6 -4
- package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
- package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
- package/dist/core/nodes/ConstructorCallNode.js +171 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
- package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
- package/dist/core/nodes/DatabaseQueryNode.js +5 -2
- package/dist/core/nodes/DecoratorNode.d.ts +42 -0
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
- package/dist/core/nodes/DecoratorNode.js +64 -0
- package/dist/core/nodes/EnumNode.d.ts +42 -0
- package/dist/core/nodes/EnumNode.d.ts.map +1 -0
- package/dist/core/nodes/EnumNode.js +56 -0
- package/dist/core/nodes/EventListenerNode.d.ts +4 -4
- package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
- package/dist/core/nodes/EventListenerNode.js +7 -4
- package/dist/core/nodes/ExportNode.d.ts +38 -2
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +54 -4
- package/dist/core/nodes/ExpressionNode.d.ts +97 -0
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressionNode.js +180 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +49 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalStdioNode.js +15 -8
- package/dist/core/nodes/FunctionNode.d.ts +36 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
- package/dist/core/nodes/FunctionNode.js +80 -1
- package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
- package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
- package/dist/core/nodes/HttpRequestNode.js +7 -4
- package/dist/core/nodes/ImportNode.d.ts +28 -6
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +43 -8
- package/dist/core/nodes/InterfaceNode.d.ts +46 -0
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
- package/dist/core/nodes/InterfaceNode.js +57 -0
- package/dist/core/nodes/IssueNode.d.ts +73 -0
- package/dist/core/nodes/IssueNode.d.ts.map +1 -0
- package/dist/core/nodes/IssueNode.js +129 -0
- package/dist/core/nodes/LiteralNode.d.ts +2 -2
- package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/LiteralNode.js +6 -4
- package/dist/core/nodes/MethodCallNode.d.ts +32 -2
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +57 -4
- package/dist/core/nodes/MethodNode.d.ts +34 -2
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +55 -3
- package/dist/core/nodes/ModuleNode.d.ts +31 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ModuleNode.js +37 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/NetworkRequestNode.js +65 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ObjectLiteralNode.js +43 -0
- package/dist/core/nodes/ParameterNode.d.ts +2 -2
- package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
- package/dist/core/nodes/ParameterNode.js +5 -3
- package/dist/core/nodes/ScopeNode.d.ts +31 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
- package/dist/core/nodes/ScopeNode.js +49 -0
- package/dist/core/nodes/TypeNode.d.ts +36 -0
- package/dist/core/nodes/TypeNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeNode.js +55 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +48 -4
- package/dist/core/nodes/index.d.ts +15 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +17 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
- package/dist/data/builtins/BuiltinRegistry.js +110 -0
- package/dist/data/builtins/definitions.d.ts +28 -0
- package/dist/data/builtins/definitions.d.ts.map +1 -0
- package/dist/data/builtins/definitions.js +250 -0
- package/dist/data/builtins/index.d.ts +10 -0
- package/dist/data/builtins/index.d.ts.map +1 -0
- package/dist/data/builtins/index.js +8 -0
- package/dist/data/builtins/jsGlobals.d.ts +18 -0
- package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
- package/dist/data/builtins/jsGlobals.js +26 -0
- package/dist/data/builtins/types.d.ts +34 -0
- package/dist/data/builtins/types.d.ts.map +1 -0
- package/dist/data/builtins/types.js +7 -0
- package/dist/data/globals/definitions.d.ts +27 -0
- package/dist/data/globals/definitions.d.ts.map +1 -0
- package/dist/data/globals/definitions.js +117 -0
- package/dist/data/globals/index.d.ts +36 -0
- package/dist/data/globals/index.d.ts.map +1 -0
- package/dist/data/globals/index.js +52 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticCollector.js +129 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +247 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticWriter.js +43 -0
- package/dist/diagnostics/index.d.ts +14 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +11 -0
- package/dist/errors/GrafemaError.d.ts +161 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +181 -0
- package/dist/index.d.ts +73 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -1
- package/dist/logging/Logger.d.ts +48 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +134 -0
- package/dist/plugins/Plugin.d.ts +5 -1
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/Plugin.js +33 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +16 -11
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
- package/dist/plugins/analysis/ast/types.d.ts +470 -5
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.js +5 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/location.js +78 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/detector.js +49 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
- package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
- package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/index.js +8 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/parsers.js +80 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +29 -8
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
- package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +173 -147
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
- package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
- package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
- package/dist/plugins/indexing/ServiceDetector.js +28 -15
- package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
- package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
- package/dist/plugins/validation/BrokenImportValidator.js +249 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +103 -77
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +62 -49
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
- package/dist/plugins/validation/EvalBanValidator.js +17 -16
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
- package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
- package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
- package/dist/plugins/validation/NodeCreationValidator.js +415 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
- package/dist/plugins/validation/ShadowingDetector.js +6 -5
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/GitPlugin.js +10 -12
- package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/VCSPlugin.js +5 -5
- package/dist/queries/findCallsInFunction.d.ts +52 -0
- package/dist/queries/findCallsInFunction.d.ts.map +1 -0
- package/dist/queries/findCallsInFunction.js +135 -0
- package/dist/queries/findContainingFunction.d.ts +45 -0
- package/dist/queries/findContainingFunction.d.ts.map +1 -0
- package/dist/queries/findContainingFunction.js +54 -0
- package/dist/queries/index.d.ts +14 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +11 -0
- package/dist/queries/traceValues.d.ts +70 -0
- package/dist/queries/traceValues.d.ts.map +1 -0
- package/dist/queries/traceValues.js +299 -0
- package/dist/queries/types.d.ts +163 -0
- package/dist/queries/types.d.ts.map +1 -0
- package/dist/queries/types.js +9 -0
- package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
- package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/GraphSchemaExtractor.js +124 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/InterfaceSchemaExtractor.js +112 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +72 -62
- package/dist/storage/backends/typeValidation.d.ts.map +1 -1
- package/dist/storage/backends/typeValidation.js +1 -0
- package/dist/validation/PathValidator.d.ts +1 -2
- package/dist/validation/PathValidator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Orchestrator.ts +272 -27
- package/src/config/ConfigLoader.ts +354 -0
- package/src/config/index.ts +5 -0
- package/src/core/ASTWorker.ts +143 -139
- package/src/core/CoverageAnalyzer.ts +243 -0
- package/src/core/FileExplainer.ts +179 -0
- package/src/core/FileNodeManager.ts +100 -0
- package/src/core/GraphFreshnessChecker.ts +143 -0
- package/src/core/HashUtils.ts +48 -0
- package/src/core/IncrementalReanalyzer.ts +192 -0
- package/src/core/NodeFactory.ts +470 -23
- package/src/core/ScopeTracker.ts +154 -0
- package/src/core/SemanticId.ts +192 -0
- package/src/core/VersionManager.ts +3 -2
- package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
- package/src/core/nodes/ArrayLiteralNode.ts +66 -0
- package/src/core/nodes/BranchNode.ts +113 -0
- package/src/core/nodes/CallSiteNode.ts +64 -4
- package/src/core/nodes/CaseNode.ts +123 -0
- package/src/core/nodes/ClassNode.ts +67 -4
- package/src/core/nodes/ConstantNode.ts +5 -4
- package/src/core/nodes/ConstructorCallNode.ts +217 -0
- package/src/core/nodes/DatabaseQueryNode.ts +5 -1
- package/src/core/nodes/DecoratorNode.ts +92 -0
- package/src/core/nodes/EnumNode.ts +87 -0
- package/src/core/nodes/EventListenerNode.ts +7 -4
- package/src/core/nodes/ExportNode.ts +74 -4
- package/src/core/nodes/ExpressionNode.ts +232 -0
- package/src/core/nodes/ExternalModuleNode.ts +65 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/HttpRequestNode.ts +7 -4
- package/src/core/nodes/ImportNode.ts +62 -13
- package/src/core/nodes/InterfaceNode.ts +92 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/LiteralNode.ts +5 -4
- package/src/core/nodes/MethodCallNode.ts +70 -4
- package/src/core/nodes/MethodNode.ts +68 -3
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +66 -0
- package/src/core/nodes/ParameterNode.ts +4 -3
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +79 -0
- package/src/core/nodes/VariableDeclarationNode.ts +58 -4
- package/src/core/nodes/index.ts +21 -1
- package/src/data/builtins/BuiltinRegistry.ts +124 -0
- package/src/data/builtins/definitions.ts +267 -0
- package/src/data/builtins/index.ts +10 -0
- package/src/data/builtins/jsGlobals.ts +28 -0
- package/src/data/builtins/types.ts +36 -0
- package/src/data/globals/definitions.ts +156 -0
- package/src/data/globals/index.ts +66 -0
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +324 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +239 -0
- package/src/index.ts +193 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
- package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +16 -11
- package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +596 -6
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
- package/src/plugins/analysis/ast/utils/index.ts +12 -0
- package/src/plugins/analysis/ast/utils/location.ts +103 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
- package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
- package/src/plugins/discovery/workspaces/detector.ts +63 -0
- package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
- package/src/plugins/discovery/workspaces/index.ts +23 -0
- package/src/plugins/discovery/workspaces/parsers.ts +99 -0
- package/src/plugins/enrichment/AliasTracker.ts +35 -8
- package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
- package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
- package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
- package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
- package/src/plugins/enrichment/MountPointResolver.ts +208 -195
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
- package/src/plugins/validation/BrokenImportValidator.ts +325 -0
- package/src/plugins/validation/CallResolverValidator.ts +131 -110
- package/src/plugins/validation/DataFlowValidator.ts +88 -67
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
- package/src/plugins/validation/ShadowingDetector.ts +6 -5
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
- package/src/plugins/vcs/GitPlugin.ts +40 -12
- package/src/plugins/vcs/VCSPlugin.ts +7 -5
- package/src/queries/README.md +46 -0
- package/src/queries/findCallsInFunction.ts +206 -0
- package/src/queries/findContainingFunction.ts +83 -0
- package/src/queries/index.ts +23 -0
- package/src/queries/traceValues.ts +398 -0
- package/src/queries/types.ts +187 -0
- package/src/schema/GraphSchemaExtractor.ts +177 -0
- package/src/schema/InterfaceSchemaExtractor.ts +173 -0
- package/src/schema/index.ts +5 -0
- package/src/storage/backends/RFDBServerBackend.ts +100 -98
- package/src/storage/backends/typeValidation.ts +1 -0
- package/src/validation/PathValidator.ts +1 -1
- package/dist/core/AnalysisWorker.d.ts +0 -14
- package/dist/core/AnalysisWorker.d.ts.map +0 -1
- package/dist/core/AnalysisWorker.js +0 -307
- package/dist/core/ParallelAnalyzer.d.ts +0 -120
- package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
- package/dist/core/ParallelAnalyzer.js +0 -331
- package/dist/core/QueueWorker.d.ts +0 -12
- package/dist/core/QueueWorker.d.ts.map +0 -1
- package/dist/core/QueueWorker.js +0 -567
- package/dist/core/RFDBClient.d.ts +0 -179
- package/dist/core/RFDBClient.d.ts.map +0 -1
- package/dist/core/RFDBClient.js +0 -429
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
- package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
- package/src/core/AnalysisWorker.ts +0 -410
- package/src/core/ParallelAnalyzer.ts +0 -476
- package/src/core/QueueWorker.ts +0 -780
- package/src/plugins/indexing/ServiceDetector.ts +0 -230
package/src/core/NodeFactory.ts
CHANGED
|
@@ -18,20 +18,43 @@ import {
|
|
|
18
18
|
ModuleNode,
|
|
19
19
|
FunctionNode,
|
|
20
20
|
ScopeNode,
|
|
21
|
+
BranchNode,
|
|
22
|
+
CaseNode,
|
|
21
23
|
CallSiteNode,
|
|
22
24
|
MethodCallNode,
|
|
25
|
+
ConstructorCallNode,
|
|
23
26
|
VariableDeclarationNode,
|
|
24
27
|
ConstantNode,
|
|
25
28
|
LiteralNode,
|
|
29
|
+
ObjectLiteralNode,
|
|
30
|
+
ArrayLiteralNode,
|
|
26
31
|
ExternalStdioNode,
|
|
32
|
+
NetworkRequestNode,
|
|
27
33
|
EventListenerNode,
|
|
28
34
|
HttpRequestNode,
|
|
29
35
|
DatabaseQueryNode,
|
|
36
|
+
ImportNode,
|
|
37
|
+
ClassNode,
|
|
38
|
+
ExportNode,
|
|
39
|
+
ExternalModuleNode,
|
|
40
|
+
InterfaceNode,
|
|
41
|
+
TypeNode,
|
|
42
|
+
EnumNode,
|
|
43
|
+
DecoratorNode,
|
|
44
|
+
ExpressionNode,
|
|
45
|
+
ArgumentExpressionNode,
|
|
46
|
+
IssueNode,
|
|
30
47
|
type EntrypointType,
|
|
31
48
|
type EntrypointTrigger,
|
|
49
|
+
type DecoratorTargetType,
|
|
50
|
+
type InterfacePropertyRecord,
|
|
51
|
+
type EnumMemberRecord,
|
|
52
|
+
type IssueSeverity,
|
|
32
53
|
} from './nodes/index.js';
|
|
33
54
|
|
|
34
|
-
import type { BaseNodeRecord } from '@grafema/types';
|
|
55
|
+
import type { BaseNodeRecord, BrandedNode } from '@grafema/types';
|
|
56
|
+
import { brandNode } from '@grafema/types';
|
|
57
|
+
import type { ScopeContext } from './SemanticId.js';
|
|
35
58
|
|
|
36
59
|
interface ServiceOptions {
|
|
37
60
|
version?: string;
|
|
@@ -60,6 +83,11 @@ interface ModuleOptions {
|
|
|
60
83
|
isTest?: boolean;
|
|
61
84
|
}
|
|
62
85
|
|
|
86
|
+
interface ModuleContextOptions {
|
|
87
|
+
contentHash?: string;
|
|
88
|
+
isTest?: boolean;
|
|
89
|
+
}
|
|
90
|
+
|
|
63
91
|
interface FunctionOptions {
|
|
64
92
|
async?: boolean;
|
|
65
93
|
generator?: boolean;
|
|
@@ -92,6 +120,10 @@ interface MethodCallOptions {
|
|
|
92
120
|
counter?: number;
|
|
93
121
|
}
|
|
94
122
|
|
|
123
|
+
interface ConstructorCallOptions {
|
|
124
|
+
counter?: number;
|
|
125
|
+
}
|
|
126
|
+
|
|
95
127
|
interface VariableOptions {
|
|
96
128
|
parentScopeId?: string;
|
|
97
129
|
counter?: number;
|
|
@@ -109,15 +141,25 @@ interface LiteralOptions {
|
|
|
109
141
|
counter?: number;
|
|
110
142
|
}
|
|
111
143
|
|
|
144
|
+
interface ObjectLiteralOptions {
|
|
145
|
+
parentCallId?: string;
|
|
146
|
+
argIndex?: number;
|
|
147
|
+
counter?: number;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
interface ArrayLiteralOptions {
|
|
151
|
+
parentCallId?: string;
|
|
152
|
+
argIndex?: number;
|
|
153
|
+
counter?: number;
|
|
154
|
+
}
|
|
155
|
+
|
|
112
156
|
interface EventListenerOptions {
|
|
113
|
-
column?: number;
|
|
114
157
|
parentScopeId?: string;
|
|
115
158
|
callbackArg?: string;
|
|
116
159
|
counter?: number;
|
|
117
160
|
}
|
|
118
161
|
|
|
119
162
|
interface HttpRequestOptions {
|
|
120
|
-
column?: number;
|
|
121
163
|
parentScopeId?: string;
|
|
122
164
|
counter?: number;
|
|
123
165
|
}
|
|
@@ -126,6 +168,68 @@ interface DatabaseQueryOptions {
|
|
|
126
168
|
parentScopeId?: string;
|
|
127
169
|
}
|
|
128
170
|
|
|
171
|
+
interface ImportOptions {
|
|
172
|
+
importType?: 'default' | 'named' | 'namespace';
|
|
173
|
+
importBinding?: 'value' | 'type' | 'typeof';
|
|
174
|
+
imported?: string;
|
|
175
|
+
local?: string;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
interface ClassOptions {
|
|
179
|
+
exported?: boolean;
|
|
180
|
+
superClass?: string;
|
|
181
|
+
methods?: string[];
|
|
182
|
+
isInstantiationRef?: boolean;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
interface ExportOptions {
|
|
186
|
+
exportKind?: 'value' | 'type';
|
|
187
|
+
local?: string;
|
|
188
|
+
default?: boolean;
|
|
189
|
+
source?: string;
|
|
190
|
+
exportType?: 'default' | 'named' | 'all';
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
interface InterfaceOptions {
|
|
194
|
+
extends?: string[];
|
|
195
|
+
properties?: InterfacePropertyRecord[];
|
|
196
|
+
isExternal?: boolean;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
interface TypeOptions {
|
|
200
|
+
aliasOf?: string;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
interface EnumOptions {
|
|
204
|
+
isConst?: boolean;
|
|
205
|
+
members?: EnumMemberRecord[];
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
interface DecoratorOptions {
|
|
209
|
+
arguments?: unknown[];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
interface ExpressionOptions {
|
|
213
|
+
// MemberExpression
|
|
214
|
+
object?: string;
|
|
215
|
+
property?: string;
|
|
216
|
+
computed?: boolean;
|
|
217
|
+
computedPropertyVar?: string;
|
|
218
|
+
// Binary/Logical
|
|
219
|
+
operator?: string;
|
|
220
|
+
// Tracking
|
|
221
|
+
path?: string;
|
|
222
|
+
baseName?: string;
|
|
223
|
+
propertyPath?: string[];
|
|
224
|
+
arrayIndex?: number;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
interface ArgumentExpressionOptions extends ExpressionOptions {
|
|
228
|
+
parentCallId: string;
|
|
229
|
+
argIndex: number;
|
|
230
|
+
counter?: number;
|
|
231
|
+
}
|
|
232
|
+
|
|
129
233
|
// Validator type for node classes
|
|
130
234
|
interface NodeValidator {
|
|
131
235
|
validate(node: BaseNodeRecord): string[];
|
|
@@ -136,18 +240,18 @@ export class NodeFactory {
|
|
|
136
240
|
* Create SERVICE node
|
|
137
241
|
*/
|
|
138
242
|
static createService(name: string, projectPath: string, options: ServiceOptions = {}) {
|
|
139
|
-
return ServiceNode.create(name, projectPath, options);
|
|
243
|
+
return brandNode(ServiceNode.create(name, projectPath, options));
|
|
140
244
|
}
|
|
141
245
|
|
|
142
246
|
/**
|
|
143
247
|
* Create ENTRYPOINT node
|
|
144
248
|
*/
|
|
145
249
|
static createEntrypoint(file: string, entrypointType: EntrypointType, options: EntrypointOptions = {}) {
|
|
146
|
-
return EntrypointNode.create(file, entrypointType, options);
|
|
250
|
+
return brandNode(EntrypointNode.create(file, entrypointType, options));
|
|
147
251
|
}
|
|
148
252
|
|
|
149
253
|
/**
|
|
150
|
-
* Create MODULE node
|
|
254
|
+
* Create MODULE node (LEGACY)
|
|
151
255
|
*/
|
|
152
256
|
static createModule(filePath: string, projectPath: string, options: ModuleOptions = {}) {
|
|
153
257
|
if (!filePath) throw new Error('NodeFactory.createModule: filePath is required');
|
|
@@ -156,84 +260,407 @@ export class NodeFactory {
|
|
|
156
260
|
const contentHash = options.contentHash || this._hashFile(filePath);
|
|
157
261
|
const relativePath = relative(projectPath, filePath) || basename(filePath);
|
|
158
262
|
|
|
159
|
-
return ModuleNode.create(filePath, relativePath, contentHash, options);
|
|
263
|
+
return brandNode(ModuleNode.create(filePath, relativePath, contentHash, options));
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Create MODULE node with semantic ID (NEW API)
|
|
268
|
+
*
|
|
269
|
+
* Uses ScopeContext for stable identifiers.
|
|
270
|
+
*
|
|
271
|
+
* @param context - Scope context with file path (relative to project root)
|
|
272
|
+
* @param options - Optional contentHash and isTest flag
|
|
273
|
+
* @returns ModuleNodeRecord with semantic ID
|
|
274
|
+
*/
|
|
275
|
+
static createModuleWithContext(context: ScopeContext, options: ModuleContextOptions = {}) {
|
|
276
|
+
return brandNode(ModuleNode.createWithContext(context, options));
|
|
160
277
|
}
|
|
161
278
|
|
|
162
279
|
/**
|
|
163
280
|
* Create FUNCTION node
|
|
164
281
|
*/
|
|
165
282
|
static createFunction(name: string, file: string, line: number, column: number, options: FunctionOptions = {}) {
|
|
166
|
-
return FunctionNode.create(name, file, line, column, options);
|
|
283
|
+
return brandNode(FunctionNode.create(name, file, line, column, options));
|
|
167
284
|
}
|
|
168
285
|
|
|
169
286
|
/**
|
|
170
287
|
* Create SCOPE node
|
|
171
288
|
*/
|
|
172
289
|
static createScope(scopeType: string, file: string, line: number, options: ScopeOptions = {}) {
|
|
173
|
-
return ScopeNode.create(scopeType, file, line, options);
|
|
290
|
+
return brandNode(ScopeNode.create(scopeType, file, line, options));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Create BRANCH node
|
|
295
|
+
*/
|
|
296
|
+
static createBranch(branchType: 'switch' | 'if' | 'ternary', file: string, line: number, column: number, options: { parentScopeId?: string; counter?: number } = {}) {
|
|
297
|
+
return brandNode(BranchNode.create(branchType, file, line, column, options));
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Create CASE node
|
|
302
|
+
*/
|
|
303
|
+
static createCase(
|
|
304
|
+
value: unknown,
|
|
305
|
+
isDefault: boolean,
|
|
306
|
+
fallsThrough: boolean,
|
|
307
|
+
isEmpty: boolean,
|
|
308
|
+
file: string,
|
|
309
|
+
line: number,
|
|
310
|
+
column: number,
|
|
311
|
+
options: { parentBranchId?: string; counter?: number } = {}
|
|
312
|
+
) {
|
|
313
|
+
return brandNode(CaseNode.create(value, isDefault, fallsThrough, isEmpty, file, line, column, options));
|
|
174
314
|
}
|
|
175
315
|
|
|
176
316
|
/**
|
|
177
317
|
* Create CALL_SITE node
|
|
178
318
|
*/
|
|
179
319
|
static createCallSite(targetName: string, file: string, line: number, column: number, options: CallSiteOptions = {}) {
|
|
180
|
-
return CallSiteNode.create(targetName, file, line, column, options);
|
|
320
|
+
return brandNode(CallSiteNode.create(targetName, file, line, column, options));
|
|
181
321
|
}
|
|
182
322
|
|
|
183
323
|
/**
|
|
184
324
|
* Create METHOD_CALL node
|
|
185
325
|
*/
|
|
186
326
|
static createMethodCall(objectName: string | undefined, methodName: string, file: string, line: number, column: number, options: MethodCallOptions = {}) {
|
|
187
|
-
return MethodCallNode.create(objectName, methodName, file, line, column, options);
|
|
327
|
+
return brandNode(MethodCallNode.create(objectName, methodName, file, line, column, options));
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Create CONSTRUCTOR_CALL node
|
|
332
|
+
*
|
|
333
|
+
* Represents a `new ClassName()` expression.
|
|
334
|
+
* Used for data flow: VARIABLE --ASSIGNED_FROM--> CONSTRUCTOR_CALL
|
|
335
|
+
*
|
|
336
|
+
* @param className - Name of the constructor (e.g., 'Date', 'MyClass')
|
|
337
|
+
* @param file - File path
|
|
338
|
+
* @param line - Line number
|
|
339
|
+
* @param column - Column position
|
|
340
|
+
* @param options - Optional counter for disambiguation
|
|
341
|
+
*/
|
|
342
|
+
static createConstructorCall(className: string, file: string, line: number, column: number, options: ConstructorCallOptions = {}) {
|
|
343
|
+
return brandNode(ConstructorCallNode.create(className, file, line, column, options));
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Generate CONSTRUCTOR_CALL node ID without creating the full node
|
|
348
|
+
*
|
|
349
|
+
* Used by JSASTAnalyzer when creating assignment metadata.
|
|
350
|
+
* The full node is created later by GraphBuilder.
|
|
351
|
+
*/
|
|
352
|
+
static generateConstructorCallId(className: string, file: string, line: number, column: number, options: ConstructorCallOptions = {}): string {
|
|
353
|
+
return ConstructorCallNode.generateId(className, file, line, column, options);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Check if a class name is a built-in JavaScript constructor
|
|
358
|
+
*/
|
|
359
|
+
static isBuiltinConstructor(className: string): boolean {
|
|
360
|
+
return ConstructorCallNode.isBuiltinConstructor(className);
|
|
188
361
|
}
|
|
189
362
|
|
|
190
363
|
/**
|
|
191
364
|
* Create VARIABLE_DECLARATION node
|
|
192
365
|
*/
|
|
193
366
|
static createVariableDeclaration(name: string, file: string, line: number, column: number, options: VariableOptions = {}) {
|
|
194
|
-
return VariableDeclarationNode.create(name, file, line, column, options);
|
|
367
|
+
return brandNode(VariableDeclarationNode.create(name, file, line, column, options));
|
|
195
368
|
}
|
|
196
369
|
|
|
197
370
|
/**
|
|
198
371
|
* Create CONSTANT node
|
|
199
372
|
*/
|
|
200
373
|
static createConstant(name: string, file: string, line: number, column: number, options: ConstantOptions = {}) {
|
|
201
|
-
return ConstantNode.create(name, file, line, column, options);
|
|
374
|
+
return brandNode(ConstantNode.create(name, file, line, column, options));
|
|
202
375
|
}
|
|
203
376
|
|
|
204
377
|
/**
|
|
205
378
|
* Create LITERAL node
|
|
206
379
|
*/
|
|
207
380
|
static createLiteral(value: unknown, file: string, line: number, column: number, options: LiteralOptions = {}) {
|
|
208
|
-
return LiteralNode.create(value, file, line, column, options);
|
|
381
|
+
return brandNode(LiteralNode.create(value, file, line, column, options));
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Create OBJECT_LITERAL node
|
|
386
|
+
*/
|
|
387
|
+
static createObjectLiteral(file: string, line: number, column: number, options: ObjectLiteralOptions = {}) {
|
|
388
|
+
return brandNode(ObjectLiteralNode.create(file, line, column, options));
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Create ARRAY_LITERAL node
|
|
393
|
+
*/
|
|
394
|
+
static createArrayLiteral(file: string, line: number, column: number, options: ArrayLiteralOptions = {}) {
|
|
395
|
+
return brandNode(ArrayLiteralNode.create(file, line, column, options));
|
|
209
396
|
}
|
|
210
397
|
|
|
211
398
|
/**
|
|
212
399
|
* Create EXTERNAL_STDIO node (singleton)
|
|
213
400
|
*/
|
|
214
401
|
static createExternalStdio() {
|
|
215
|
-
return ExternalStdioNode.create();
|
|
402
|
+
return brandNode(ExternalStdioNode.create());
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Create net:request singleton node
|
|
407
|
+
*
|
|
408
|
+
* This node represents the external network as a system resource.
|
|
409
|
+
* Should be created once per graph.
|
|
410
|
+
*
|
|
411
|
+
* All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
|
|
412
|
+
*
|
|
413
|
+
* @returns NetworkRequestNodeRecord - singleton node
|
|
414
|
+
*/
|
|
415
|
+
static createNetworkRequest() {
|
|
416
|
+
return brandNode(NetworkRequestNode.create());
|
|
216
417
|
}
|
|
217
418
|
|
|
218
419
|
/**
|
|
219
420
|
* Create EVENT_LISTENER node
|
|
220
421
|
*/
|
|
221
|
-
static createEventListener(eventName: string, objectName: string | undefined, file: string, line: number, options: EventListenerOptions = {}) {
|
|
222
|
-
return EventListenerNode.create(eventName, objectName, file, line, options);
|
|
422
|
+
static createEventListener(eventName: string, objectName: string | undefined, file: string, line: number, column: number, options: EventListenerOptions = {}) {
|
|
423
|
+
return brandNode(EventListenerNode.create(eventName, objectName, file, line, column, options));
|
|
223
424
|
}
|
|
224
425
|
|
|
225
426
|
/**
|
|
226
427
|
* Create HTTP_REQUEST node
|
|
227
428
|
*/
|
|
228
|
-
static createHttpRequest(url: string | undefined, method: string | undefined, file: string, line: number, options: HttpRequestOptions = {}) {
|
|
229
|
-
return HttpRequestNode.create(url, method, file, line, options);
|
|
429
|
+
static createHttpRequest(url: string | undefined, method: string | undefined, file: string, line: number, column: number, options: HttpRequestOptions = {}) {
|
|
430
|
+
return brandNode(HttpRequestNode.create(url, method, file, line, column, options));
|
|
230
431
|
}
|
|
231
432
|
|
|
232
433
|
/**
|
|
233
434
|
* Create DATABASE_QUERY node
|
|
234
435
|
*/
|
|
235
|
-
static createDatabaseQuery(query: string | undefined, operation: string | undefined, file: string, line: number, options: DatabaseQueryOptions = {}) {
|
|
236
|
-
return DatabaseQueryNode.create(query, operation, file, line, options);
|
|
436
|
+
static createDatabaseQuery(query: string | undefined, operation: string | undefined, file: string, line: number, column: number, options: DatabaseQueryOptions = {}) {
|
|
437
|
+
return brandNode(DatabaseQueryNode.create(query, operation, file, line, column, options));
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Create IMPORT node
|
|
442
|
+
*
|
|
443
|
+
* ImportNode automatically detects importType from imported field:
|
|
444
|
+
* - imported === 'default' → importType: 'default'
|
|
445
|
+
* - imported === '*' → importType: 'namespace'
|
|
446
|
+
* - anything else → importType: 'named'
|
|
447
|
+
*
|
|
448
|
+
* @param name - Local binding name (how it's used in this file)
|
|
449
|
+
* @param file - Absolute file path
|
|
450
|
+
* @param line - Line number (for debugging, not part of ID)
|
|
451
|
+
* @param column - Column position (0 if unavailable)
|
|
452
|
+
* @param source - Source module (e.g., 'react', './utils')
|
|
453
|
+
* @param options - Optional fields
|
|
454
|
+
* @returns ImportNodeRecord
|
|
455
|
+
*/
|
|
456
|
+
static createImport(
|
|
457
|
+
name: string,
|
|
458
|
+
file: string,
|
|
459
|
+
line: number,
|
|
460
|
+
column: number,
|
|
461
|
+
source: string,
|
|
462
|
+
options: ImportOptions = {}
|
|
463
|
+
) {
|
|
464
|
+
return brandNode(ImportNode.create(name, file, line, column, source, options));
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Create CLASS node
|
|
469
|
+
*/
|
|
470
|
+
static createClass(
|
|
471
|
+
name: string,
|
|
472
|
+
file: string,
|
|
473
|
+
line: number,
|
|
474
|
+
column: number,
|
|
475
|
+
options: ClassOptions = {}
|
|
476
|
+
) {
|
|
477
|
+
return brandNode(ClassNode.create(name, file, line, column, options));
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Create EXPORT node
|
|
482
|
+
*/
|
|
483
|
+
static createExport(
|
|
484
|
+
name: string,
|
|
485
|
+
file: string,
|
|
486
|
+
line: number,
|
|
487
|
+
column: number,
|
|
488
|
+
options: ExportOptions = {}
|
|
489
|
+
) {
|
|
490
|
+
return brandNode(ExportNode.create(name, file, line, column, options));
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Create EXTERNAL_MODULE node
|
|
495
|
+
*
|
|
496
|
+
* Represents external npm packages or Node.js built-in modules.
|
|
497
|
+
* Uses singleton pattern - same source always produces same ID.
|
|
498
|
+
*
|
|
499
|
+
* @param source - Module name (e.g., 'lodash', '@tanstack/react-query', 'node:fs')
|
|
500
|
+
*/
|
|
501
|
+
static createExternalModule(source: string) {
|
|
502
|
+
return brandNode(ExternalModuleNode.create(source));
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Create INTERFACE node
|
|
507
|
+
*/
|
|
508
|
+
static createInterface(
|
|
509
|
+
name: string,
|
|
510
|
+
file: string,
|
|
511
|
+
line: number,
|
|
512
|
+
column: number,
|
|
513
|
+
options: InterfaceOptions = {}
|
|
514
|
+
) {
|
|
515
|
+
return brandNode(InterfaceNode.create(name, file, line, column, options));
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Create TYPE node
|
|
520
|
+
*/
|
|
521
|
+
static createType(
|
|
522
|
+
name: string,
|
|
523
|
+
file: string,
|
|
524
|
+
line: number,
|
|
525
|
+
column: number,
|
|
526
|
+
options: TypeOptions = {}
|
|
527
|
+
) {
|
|
528
|
+
return brandNode(TypeNode.create(name, file, line, column, options));
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Create ENUM node
|
|
533
|
+
*/
|
|
534
|
+
static createEnum(
|
|
535
|
+
name: string,
|
|
536
|
+
file: string,
|
|
537
|
+
line: number,
|
|
538
|
+
column: number,
|
|
539
|
+
options: EnumOptions = {}
|
|
540
|
+
) {
|
|
541
|
+
return brandNode(EnumNode.create(name, file, line, column, options));
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Create DECORATOR node
|
|
546
|
+
*/
|
|
547
|
+
static createDecorator(
|
|
548
|
+
name: string,
|
|
549
|
+
file: string,
|
|
550
|
+
line: number,
|
|
551
|
+
column: number,
|
|
552
|
+
targetId: string,
|
|
553
|
+
targetType: DecoratorTargetType,
|
|
554
|
+
options: DecoratorOptions = {}
|
|
555
|
+
) {
|
|
556
|
+
return brandNode(DecoratorNode.create(name, file, line, column, targetId, targetType, options));
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Create EXPRESSION node
|
|
561
|
+
*/
|
|
562
|
+
static createExpression(
|
|
563
|
+
expressionType: string,
|
|
564
|
+
file: string,
|
|
565
|
+
line: number,
|
|
566
|
+
column: number,
|
|
567
|
+
options: ExpressionOptions = {}
|
|
568
|
+
) {
|
|
569
|
+
return brandNode(ExpressionNode.create(expressionType, file, line, column, options));
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Generate EXPRESSION node ID without creating the full node
|
|
574
|
+
*
|
|
575
|
+
* Used by JSASTAnalyzer when creating assignment metadata.
|
|
576
|
+
* The full node is created later by GraphBuilder.
|
|
577
|
+
*
|
|
578
|
+
* @param expressionType - Type of expression (MemberExpression, BinaryExpression, etc.)
|
|
579
|
+
* @param file - File path
|
|
580
|
+
* @param line - Line number
|
|
581
|
+
* @param column - Column position
|
|
582
|
+
* @returns Generated ID string in colon format
|
|
583
|
+
*/
|
|
584
|
+
static generateExpressionId(
|
|
585
|
+
expressionType: string,
|
|
586
|
+
file: string,
|
|
587
|
+
line: number,
|
|
588
|
+
column: number
|
|
589
|
+
): string {
|
|
590
|
+
return ExpressionNode.generateId(expressionType, file, line, column);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Create EXPRESSION node from assignment metadata
|
|
595
|
+
*
|
|
596
|
+
* Used by GraphBuilder when processing variableAssignments.
|
|
597
|
+
* The ID is provided from upstream (generated by JSASTAnalyzer).
|
|
598
|
+
*
|
|
599
|
+
* @param expressionType - Type of expression
|
|
600
|
+
* @param file - File path
|
|
601
|
+
* @param line - Line number
|
|
602
|
+
* @param column - Column position
|
|
603
|
+
* @param options - Must include id; optional: expression properties
|
|
604
|
+
*/
|
|
605
|
+
static createExpressionFromMetadata(
|
|
606
|
+
expressionType: string,
|
|
607
|
+
file: string,
|
|
608
|
+
line: number,
|
|
609
|
+
column: number,
|
|
610
|
+
options: ExpressionOptions & { id: string }
|
|
611
|
+
) {
|
|
612
|
+
return brandNode(ExpressionNode.createFromMetadata(expressionType, file, line, column, options));
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Create EXPRESSION node with argument context
|
|
617
|
+
*
|
|
618
|
+
* Used when EXPRESSION appears as a call argument and we need to track
|
|
619
|
+
* which call and argument position for data flow analysis.
|
|
620
|
+
*
|
|
621
|
+
* @param expressionType - Type of expression (BinaryExpression, LogicalExpression, etc.)
|
|
622
|
+
* @param file - File path
|
|
623
|
+
* @param line - Line number
|
|
624
|
+
* @param column - Column position
|
|
625
|
+
* @param options - Required: parentCallId, argIndex; Optional: expression properties, counter
|
|
626
|
+
* @returns ArgumentExpressionNodeRecord
|
|
627
|
+
*/
|
|
628
|
+
static createArgumentExpression(
|
|
629
|
+
expressionType: string,
|
|
630
|
+
file: string,
|
|
631
|
+
line: number,
|
|
632
|
+
column: number,
|
|
633
|
+
options: ArgumentExpressionOptions
|
|
634
|
+
) {
|
|
635
|
+
return brandNode(ArgumentExpressionNode.create(expressionType, file, line, column, options));
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* Create ISSUE node
|
|
640
|
+
*
|
|
641
|
+
* Issues represent detected problems in the codebase.
|
|
642
|
+
* Used by validation plugins to persist findings in the graph.
|
|
643
|
+
*
|
|
644
|
+
* @param category - Issue category (security, performance, style, smell)
|
|
645
|
+
* @param severity - error | warning | info
|
|
646
|
+
* @param message - Human-readable description
|
|
647
|
+
* @param plugin - Name of the plugin that detected this issue
|
|
648
|
+
* @param file - File path where issue was detected
|
|
649
|
+
* @param line - Line number
|
|
650
|
+
* @param column - Column number (optional)
|
|
651
|
+
* @param options - Optional context data
|
|
652
|
+
*/
|
|
653
|
+
static createIssue(
|
|
654
|
+
category: string,
|
|
655
|
+
severity: IssueSeverity,
|
|
656
|
+
message: string,
|
|
657
|
+
plugin: string,
|
|
658
|
+
file: string,
|
|
659
|
+
line: number,
|
|
660
|
+
column: number = 0,
|
|
661
|
+
options: { context?: Record<string, unknown> } = {}
|
|
662
|
+
) {
|
|
663
|
+
return brandNode(IssueNode.create(category, severity, message, plugin, file, line, column, options));
|
|
237
664
|
}
|
|
238
665
|
|
|
239
666
|
/**
|
|
@@ -246,17 +673,37 @@ export class NodeFactory {
|
|
|
246
673
|
'MODULE': ModuleNode,
|
|
247
674
|
'FUNCTION': FunctionNode,
|
|
248
675
|
'SCOPE': ScopeNode,
|
|
676
|
+
'BRANCH': BranchNode,
|
|
677
|
+
'CASE': CaseNode,
|
|
249
678
|
'CALL_SITE': CallSiteNode,
|
|
250
679
|
'METHOD_CALL': MethodCallNode,
|
|
680
|
+
'CONSTRUCTOR_CALL': ConstructorCallNode,
|
|
251
681
|
'VARIABLE_DECLARATION': VariableDeclarationNode,
|
|
252
682
|
'CONSTANT': ConstantNode,
|
|
253
683
|
'LITERAL': LiteralNode,
|
|
254
|
-
'
|
|
684
|
+
'OBJECT_LITERAL': ObjectLiteralNode,
|
|
685
|
+
'ARRAY_LITERAL': ArrayLiteralNode,
|
|
686
|
+
'net:stdio': ExternalStdioNode,
|
|
687
|
+
'net:request': NetworkRequestNode,
|
|
255
688
|
'EVENT_LISTENER': EventListenerNode,
|
|
256
689
|
'HTTP_REQUEST': HttpRequestNode,
|
|
257
|
-
'DATABASE_QUERY': DatabaseQueryNode
|
|
690
|
+
'DATABASE_QUERY': DatabaseQueryNode,
|
|
691
|
+
'IMPORT': ImportNode,
|
|
692
|
+
'CLASS': ClassNode,
|
|
693
|
+
'EXPORT': ExportNode,
|
|
694
|
+
'EXTERNAL_MODULE': ExternalModuleNode,
|
|
695
|
+
'INTERFACE': InterfaceNode,
|
|
696
|
+
'TYPE': TypeNode,
|
|
697
|
+
'ENUM': EnumNode,
|
|
698
|
+
'DECORATOR': DecoratorNode,
|
|
699
|
+
'EXPRESSION': ExpressionNode
|
|
258
700
|
};
|
|
259
701
|
|
|
702
|
+
// Handle issue:* types dynamically
|
|
703
|
+
if (IssueNode.isIssueType(node.type)) {
|
|
704
|
+
return IssueNode.validate(node as Parameters<typeof IssueNode.validate>[0]);
|
|
705
|
+
}
|
|
706
|
+
|
|
260
707
|
const validator = validators[node.type];
|
|
261
708
|
if (!validator) {
|
|
262
709
|
return [`Unknown node type: ${node.type}`];
|