@grafema/core 0.1.1-alpha → 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/dist/Orchestrator.d.ts +7 -0
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +25 -3
- package/dist/config/ConfigLoader.d.ts +18 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -1
- package/dist/config/ConfigLoader.js +65 -3
- 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/NodeFactory.d.ts +44 -5
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +52 -7
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/ArrayLiteralNode.js +4 -2
- 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 +2 -2
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +9 -5
- 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 +2 -2
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +8 -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 +2 -2
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -1
- package/dist/core/nodes/DecoratorNode.js +5 -3
- package/dist/core/nodes/EnumNode.d.ts +2 -2
- package/dist/core/nodes/EnumNode.d.ts.map +1 -1
- package/dist/core/nodes/EnumNode.js +5 -3
- 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 +2 -2
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +8 -4
- package/dist/core/nodes/ExpressionNode.d.ts +2 -2
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -1
- package/dist/core/nodes/ExpressionNode.js +6 -4
- package/dist/core/nodes/ExternalModuleNode.d.ts +4 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalModuleNode.js +10 -2
- 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 +10 -2
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +21 -4
- package/dist/core/nodes/InterfaceNode.d.ts +2 -2
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -1
- package/dist/core/nodes/InterfaceNode.js +5 -3
- 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 +2 -2
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +9 -5
- package/dist/core/nodes/MethodNode.d.ts +2 -2
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +8 -4
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/ObjectLiteralNode.js +4 -2
- 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/TypeNode.d.ts +2 -2
- package/dist/core/nodes/TypeNode.d.ts.map +1 -1
- package/dist/core/nodes/TypeNode.js +5 -3
- package/dist/core/nodes/VariableDeclarationNode.d.ts +2 -2
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +9 -5
- package/dist/core/nodes/index.d.ts +3 -0
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +3 -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/DiagnosticReporter.d.ts +23 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -1
- package/dist/diagnostics/DiagnosticReporter.js +88 -0
- package/dist/diagnostics/index.d.ts +1 -1
- package/dist/diagnostics/index.d.ts.map +1 -1
- package/dist/errors/GrafemaError.d.ts +43 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -1
- package/dist/errors/GrafemaError.js +50 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +3 -2
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +3 -1
- 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 +53 -18
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +40 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +163 -15
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +157 -26
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +2418 -191
- package/dist/plugins/analysis/RustAnalyzer.js +4 -4
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +4 -2
- 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 +91 -7
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +173 -0
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +1256 -65
- package/dist/plugins/analysis/ast/types.d.ts +294 -0
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +5 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +1 -0
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +12 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +10 -0
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +62 -0
- 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 +101 -0
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +16 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +233 -39
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.js +9 -4
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +16 -1
- 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 +64 -20
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +15 -1
- 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 +172 -151
- 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/ValueDomainAnalyzer.d.ts +5 -27
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +62 -139
- 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 +58 -0
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +4 -4
- 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 +101 -76
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +49 -41
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +25 -1
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +2 -3
- 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 +12 -18
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +41 -52
- package/dist/storage/backends/typeValidation.d.ts.map +1 -1
- package/dist/storage/backends/typeValidation.js +1 -0
- package/package.json +3 -3
- package/src/Orchestrator.ts +35 -3
- package/src/config/ConfigLoader.ts +94 -3
- package/src/core/FileExplainer.ts +179 -0
- package/src/core/NodeFactory.ts +72 -8
- package/src/core/nodes/ArrayLiteralNode.ts +3 -2
- package/src/core/nodes/BranchNode.ts +113 -0
- package/src/core/nodes/CallSiteNode.ts +7 -5
- package/src/core/nodes/CaseNode.ts +123 -0
- package/src/core/nodes/ClassNode.ts +6 -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 +4 -3
- package/src/core/nodes/EnumNode.ts +4 -3
- package/src/core/nodes/EventListenerNode.ts +7 -4
- package/src/core/nodes/ExportNode.ts +6 -4
- package/src/core/nodes/ExpressionNode.ts +5 -4
- package/src/core/nodes/ExternalModuleNode.ts +11 -2
- package/src/core/nodes/HttpRequestNode.ts +7 -4
- package/src/core/nodes/ImportNode.ts +31 -4
- package/src/core/nodes/InterfaceNode.ts +4 -3
- package/src/core/nodes/LiteralNode.ts +5 -4
- package/src/core/nodes/MethodCallNode.ts +7 -5
- package/src/core/nodes/MethodNode.ts +6 -4
- package/src/core/nodes/ObjectLiteralNode.ts +3 -2
- package/src/core/nodes/ParameterNode.ts +4 -3
- package/src/core/nodes/TypeNode.ts +4 -3
- package/src/core/nodes/VariableDeclarationNode.ts +7 -5
- package/src/core/nodes/index.ts +3 -0
- 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/DiagnosticReporter.ts +120 -0
- package/src/diagnostics/index.ts +1 -1
- package/src/errors/GrafemaError.ts +65 -0
- package/src/index.ts +45 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +4 -2
- package/src/plugins/analysis/ExpressAnalyzer.ts +5 -1
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +57 -18
- package/src/plugins/analysis/FetchAnalyzer.ts +204 -16
- package/src/plugins/analysis/JSASTAnalyzer.ts +2958 -260
- package/src/plugins/analysis/RustAnalyzer.ts +4 -4
- package/src/plugins/analysis/SQLiteAnalyzer.ts +5 -2
- package/src/plugins/analysis/SocketIOAnalyzer.ts +121 -7
- package/src/plugins/analysis/ast/GraphBuilder.ts +1578 -70
- package/src/plugins/analysis/ast/types.ts +387 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +8 -0
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +16 -1
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +77 -2
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +112 -1
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +272 -47
- package/src/plugins/discovery/WorkspaceDiscovery.ts +11 -4
- package/src/plugins/enrichment/AliasTracker.ts +22 -1
- 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 +70 -20
- package/src/plugins/enrichment/MethodCallResolver.ts +21 -1
- package/src/plugins/enrichment/MountPointResolver.ts +206 -198
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +67 -184
- package/src/plugins/indexing/JSModuleIndexer.ts +66 -0
- package/src/plugins/indexing/RustModuleIndexer.ts +4 -4
- package/src/plugins/validation/BrokenImportValidator.ts +325 -0
- package/src/plugins/validation/CallResolverValidator.ts +129 -109
- package/src/plugins/validation/DataFlowValidator.ts +75 -58
- package/src/plugins/validation/GraphConnectivityValidator.ts +39 -1
- package/src/plugins/validation/SQLInjectionValidator.ts +2 -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 +58 -70
- package/src/storage/backends/typeValidation.ts +1 -0
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @grafema/core - Core analysis engine for GraphDD
|
|
3
3
|
*/
|
|
4
4
|
// Error types
|
|
5
|
-
export { GrafemaError, ConfigError, FileAccessError, LanguageError, DatabaseError, PluginError, AnalysisError, } from './errors/GrafemaError.js';
|
|
5
|
+
export { GrafemaError, ConfigError, FileAccessError, LanguageError, DatabaseError, PluginError, AnalysisError, ValidationError, StrictModeError, } from './errors/GrafemaError.js';
|
|
6
6
|
// Logging
|
|
7
7
|
export { ConsoleLogger, createLogger } from './logging/Logger.js';
|
|
8
8
|
// Diagnostics
|
|
@@ -28,6 +28,7 @@ export { ASTWorkerPool } from './core/ASTWorkerPool.js';
|
|
|
28
28
|
export { GuaranteeManager } from './core/GuaranteeManager.js';
|
|
29
29
|
export { clearFileNodesIfNeeded, clearServiceNodeIfExists } from './core/FileNodeManager.js';
|
|
30
30
|
export { CoverageAnalyzer } from './core/CoverageAnalyzer.js';
|
|
31
|
+
export { FileExplainer } from './core/FileExplainer.js';
|
|
31
32
|
// Hash utilities
|
|
32
33
|
export { calculateFileHash, calculateFileHashAsync, calculateContentHash } from './core/HashUtils.js';
|
|
33
34
|
// Type validation and path validation
|
|
@@ -74,6 +75,7 @@ export { RustModuleIndexer } from './plugins/indexing/RustModuleIndexer.js';
|
|
|
74
75
|
// Analysis plugins
|
|
75
76
|
export { JSASTAnalyzer } from './plugins/analysis/JSASTAnalyzer.js';
|
|
76
77
|
export { ExpressRouteAnalyzer } from './plugins/analysis/ExpressRouteAnalyzer.js';
|
|
78
|
+
export { ExpressResponseAnalyzer } from './plugins/analysis/ExpressResponseAnalyzer.js';
|
|
77
79
|
export { ExpressAnalyzer } from './plugins/analysis/ExpressAnalyzer.js';
|
|
78
80
|
export { SocketIOAnalyzer } from './plugins/analysis/SocketIOAnalyzer.js';
|
|
79
81
|
export { DatabaseAnalyzer } from './plugins/analysis/DatabaseAnalyzer.js';
|
|
@@ -86,6 +88,7 @@ export { SystemDbAnalyzer } from './plugins/analysis/SystemDbAnalyzer.js';
|
|
|
86
88
|
export { IncrementalAnalysisPlugin } from './plugins/analysis/IncrementalAnalysisPlugin.js';
|
|
87
89
|
// Enrichment plugins
|
|
88
90
|
export { MethodCallResolver } from './plugins/enrichment/MethodCallResolver.js';
|
|
91
|
+
export { ArgumentParameterLinker } from './plugins/enrichment/ArgumentParameterLinker.js';
|
|
89
92
|
export { AliasTracker } from './plugins/enrichment/AliasTracker.js';
|
|
90
93
|
export { ValueDomainAnalyzer } from './plugins/enrichment/ValueDomainAnalyzer.js';
|
|
91
94
|
export { MountPointResolver } from './plugins/enrichment/MountPointResolver.js';
|
|
@@ -93,7 +96,15 @@ export { PrefixEvaluator } from './plugins/enrichment/PrefixEvaluator.js';
|
|
|
93
96
|
export { InstanceOfResolver } from './plugins/enrichment/InstanceOfResolver.js';
|
|
94
97
|
export { HTTPConnectionEnricher } from './plugins/enrichment/HTTPConnectionEnricher.js';
|
|
95
98
|
export { ImportExportLinker } from './plugins/enrichment/ImportExportLinker.js';
|
|
99
|
+
export { FunctionCallResolver } from './plugins/enrichment/FunctionCallResolver.js';
|
|
96
100
|
export { RustFFIEnricher } from './plugins/enrichment/RustFFIEnricher.js';
|
|
101
|
+
export { NodejsBuiltinsResolver } from './plugins/enrichment/NodejsBuiltinsResolver.js';
|
|
102
|
+
export { ExternalCallResolver } from './plugins/enrichment/ExternalCallResolver.js';
|
|
103
|
+
export { ClosureCaptureEnricher } from './plugins/enrichment/ClosureCaptureEnricher.js';
|
|
104
|
+
// Builtin registry
|
|
105
|
+
export { BuiltinRegistry } from './data/builtins/index.js';
|
|
106
|
+
// Globals registry
|
|
107
|
+
export { GlobalsRegistry, ALL_GLOBALS } from './data/globals/index.js';
|
|
97
108
|
// Validation plugins
|
|
98
109
|
export { CallResolverValidator } from './plugins/validation/CallResolverValidator.js';
|
|
99
110
|
export { EvalBanValidator } from './plugins/validation/EvalBanValidator.js';
|
|
@@ -103,6 +114,7 @@ export { GraphConnectivityValidator } from './plugins/validation/GraphConnectivi
|
|
|
103
114
|
export { DataFlowValidator } from './plugins/validation/DataFlowValidator.js';
|
|
104
115
|
export { TypeScriptDeadCodeValidator } from './plugins/validation/TypeScriptDeadCodeValidator.js';
|
|
105
116
|
export { NodeCreationValidator } from './plugins/validation/NodeCreationValidator.js';
|
|
117
|
+
export { BrokenImportValidator } from './plugins/validation/BrokenImportValidator.js';
|
|
106
118
|
// Discovery plugins
|
|
107
119
|
export { SimpleProjectDiscovery } from './plugins/discovery/SimpleProjectDiscovery.js';
|
|
108
120
|
export { DiscoveryPlugin } from './plugins/discovery/DiscoveryPlugin.js';
|
|
@@ -114,3 +126,7 @@ export { detectWorkspaceType, parsePnpmWorkspace, parseNpmWorkspace, parseLernaC
|
|
|
114
126
|
// VCS plugins
|
|
115
127
|
export { GitPlugin } from './plugins/vcs/GitPlugin.js';
|
|
116
128
|
export { VCSPlugin, VCSPluginFactory, FileStatus } from './plugins/vcs/VCSPlugin.js';
|
|
129
|
+
// Schema extraction
|
|
130
|
+
export { InterfaceSchemaExtractor, GraphSchemaExtractor } from './schema/index.js';
|
|
131
|
+
// Graph Query Utilities
|
|
132
|
+
export { findCallsInFunction, findContainingFunction, traceValues, aggregateValues, NONDETERMINISTIC_PATTERNS, NONDETERMINISTIC_OBJECTS } from './queries/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/DatabaseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DatabaseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/DatabaseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiChF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD5D;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,aAAa;IAuL3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAc3B"}
|
|
@@ -6,7 +6,7 @@ import { readFileSync } from 'fs';
|
|
|
6
6
|
import { parse } from '@babel/parser';
|
|
7
7
|
import traverseModule from '@babel/traverse';
|
|
8
8
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
9
|
-
import { getLine } from './ast/utils/location.js';
|
|
9
|
+
import { getLine, getColumn } from './ast/utils/location.js';
|
|
10
10
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
11
|
const traverse = traverseModule.default || traverseModule;
|
|
12
12
|
export class DatabaseAnalyzer extends Plugin {
|
|
@@ -177,7 +177,8 @@ export class DatabaseAnalyzer extends Plugin {
|
|
|
177
177
|
object: objectName,
|
|
178
178
|
method: methodName,
|
|
179
179
|
file: module.file,
|
|
180
|
-
line: getLine(node)
|
|
180
|
+
line: getLine(node),
|
|
181
|
+
column: getColumn(node)
|
|
181
182
|
});
|
|
182
183
|
}
|
|
183
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ExpressAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwDhF,qBAAa,eAAgB,SAAQ,MAAM;IACzC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2C5D;;OAEG;YACW,aAAa;IA+N3B;;OAEG;YACW,gBAAgB;CA4D/B"}
|
|
@@ -8,7 +8,7 @@ import traverseModule from '@babel/traverse';
|
|
|
8
8
|
import { dirname, resolve, relative } from 'path';
|
|
9
9
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
10
10
|
import { NetworkRequestNode } from '../../core/nodes/NetworkRequestNode.js';
|
|
11
|
-
import { getLine } from './ast/utils/location.js';
|
|
11
|
+
import { getLine, getColumn } from './ast/utils/location.js';
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
13
|
const traverse = traverseModule.default || traverseModule;
|
|
14
14
|
export class ExpressAnalyzer extends Plugin {
|
|
@@ -131,6 +131,7 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
131
131
|
localPath: routePath,
|
|
132
132
|
file: module.file,
|
|
133
133
|
line: getLine(node),
|
|
134
|
+
column: getColumn(node),
|
|
134
135
|
mountedOn: objectName
|
|
135
136
|
});
|
|
136
137
|
}
|
|
@@ -210,6 +211,7 @@ export class ExpressAnalyzer extends Plugin {
|
|
|
210
211
|
targetVariable: targetVariable,
|
|
211
212
|
file: module.file,
|
|
212
213
|
line: getLine(node),
|
|
214
|
+
column: getColumn(node),
|
|
213
215
|
mountedOn: objectName
|
|
214
216
|
});
|
|
215
217
|
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExpressResponseAnalyzer - detects Express response patterns
|
|
3
|
+
*
|
|
4
|
+
* For each http:route node:
|
|
5
|
+
* 1. Follow HANDLED_BY edge to get handler function
|
|
6
|
+
* 2. Traverse handler AST for res.json(...), res.send(...) patterns
|
|
7
|
+
* 3. Create RESPONDS_WITH edge from http:route to response argument node
|
|
8
|
+
*
|
|
9
|
+
* Patterns:
|
|
10
|
+
* - res.json({ data })
|
|
11
|
+
* - res.send(variable)
|
|
12
|
+
* - res.status(200).json(data)
|
|
13
|
+
*/
|
|
14
|
+
import { Plugin } from '../Plugin.js';
|
|
15
|
+
import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
16
|
+
export declare class ExpressResponseAnalyzer extends Plugin {
|
|
17
|
+
private responseNodeCounter;
|
|
18
|
+
get metadata(): PluginMetadata;
|
|
19
|
+
execute(context: PluginContext): Promise<PluginResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Analyze a single http:route for response patterns
|
|
22
|
+
*/
|
|
23
|
+
private analyzeRouteResponses;
|
|
24
|
+
/**
|
|
25
|
+
* Find res.json/res.send calls within a function at given line
|
|
26
|
+
*/
|
|
27
|
+
private findResponseCalls;
|
|
28
|
+
/**
|
|
29
|
+
* Get response parameter name from function params (typically 'res')
|
|
30
|
+
*/
|
|
31
|
+
private getResponseParamName;
|
|
32
|
+
/**
|
|
33
|
+
* Extract response method info from callee
|
|
34
|
+
* Handles: res.json(), res.send(), res.status(200).json()
|
|
35
|
+
*/
|
|
36
|
+
private extractResponseInfo;
|
|
37
|
+
/**
|
|
38
|
+
* Check if callee is res.methodName()
|
|
39
|
+
*/
|
|
40
|
+
private isResMethodCall;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve response node: find existing variable or create stub.
|
|
43
|
+
*
|
|
44
|
+
* For Identifier arguments (e.g., res.json(statusData)):
|
|
45
|
+
* 1. Try to find existing VARIABLE/PARAMETER/CONSTANT with same name in handler scope
|
|
46
|
+
* 2. If found, return existing node ID (no stub needed)
|
|
47
|
+
* 3. If not found, fall back to creating stub (external/global variables)
|
|
48
|
+
*
|
|
49
|
+
* For non-Identifier arguments (ObjectExpression, CallExpression, etc.):
|
|
50
|
+
* - Always create stub node (existing behavior)
|
|
51
|
+
*
|
|
52
|
+
* @param graph - Graph backend
|
|
53
|
+
* @param file - Handler file path
|
|
54
|
+
* @param call - Response call info (includes identifierName)
|
|
55
|
+
* @param routeId - Route ID (for metadata)
|
|
56
|
+
* @param handlerSemanticId - Handler function's semantic ID (for scope matching)
|
|
57
|
+
* @returns Node ID (existing or newly created)
|
|
58
|
+
*/
|
|
59
|
+
private resolveOrCreateResponseNode;
|
|
60
|
+
/**
|
|
61
|
+
* Find existing VARIABLE/CONSTANT/PARAMETER node in handler scope.
|
|
62
|
+
*
|
|
63
|
+
* Strategy:
|
|
64
|
+
* 1. Parse handler semantic ID to extract scope prefix
|
|
65
|
+
* 2. Query VARIABLE/CONSTANT nodes: match by name, file, scope prefix, and line <= useLine
|
|
66
|
+
* 3. Query PARAMETER nodes: match by name, file, parentFunctionId === handlerSemanticId
|
|
67
|
+
*
|
|
68
|
+
* Scope matching:
|
|
69
|
+
* - Handler ID: "routes.js->anonymous[1]->FUNCTION->anonymous[1]"
|
|
70
|
+
* - Scope prefix: "routes.js->anonymous[1]->"
|
|
71
|
+
* - Variable ID: "routes.js->anonymous[1]->VARIABLE->statusData" (matches prefix)
|
|
72
|
+
* - External ID: "utils.js->VARIABLE->config" (different file)
|
|
73
|
+
*
|
|
74
|
+
* @param graph - Graph backend
|
|
75
|
+
* @param file - File path
|
|
76
|
+
* @param name - Variable name to find
|
|
77
|
+
* @param handlerSemanticId - Handler function's semantic ID
|
|
78
|
+
* @param useLine - Line where identifier is used (variable must be declared before this)
|
|
79
|
+
* @returns Node ID if found, null otherwise
|
|
80
|
+
*/
|
|
81
|
+
private findIdentifierInScope;
|
|
82
|
+
/**
|
|
83
|
+
* Extract scope prefix from handler function's semantic ID.
|
|
84
|
+
*
|
|
85
|
+
* Handler function semantic IDs follow the pattern:
|
|
86
|
+
* {file}->{scope_path}->{type}->{name}
|
|
87
|
+
*
|
|
88
|
+
* Variables declared INSIDE the handler have IDs where the handler's NAME
|
|
89
|
+
* becomes part of THEIR scope path:
|
|
90
|
+
* {file}->{handler_name}->{type}->{var_name}
|
|
91
|
+
*
|
|
92
|
+
* Examples:
|
|
93
|
+
* - Handler: "index.js->global->FUNCTION->anonymous[0]"
|
|
94
|
+
* -> Variables inside: "index.js->anonymous[0]->CONSTANT->statusData"
|
|
95
|
+
* -> Scope prefix: "index.js->anonymous[0]->"
|
|
96
|
+
*
|
|
97
|
+
* - Handler: "routes.js->anonymous[1]->FUNCTION->anonymous[1]"
|
|
98
|
+
* -> Variables inside: "routes.js->anonymous[1]->VARIABLE->data"
|
|
99
|
+
* -> Scope prefix: "routes.js->anonymous[1]->"
|
|
100
|
+
*
|
|
101
|
+
* - Handler: "app.js->global->FUNCTION->handleRequest"
|
|
102
|
+
* -> Variables inside: "app.js->handleRequest->VARIABLE->result"
|
|
103
|
+
* -> Scope prefix: "app.js->handleRequest->"
|
|
104
|
+
*
|
|
105
|
+
* Algorithm:
|
|
106
|
+
* 1. Split by "->"
|
|
107
|
+
* 2. Take file (first part) and handler name (last part)
|
|
108
|
+
* 3. Join with "->" and add trailing "->"
|
|
109
|
+
*
|
|
110
|
+
* @param semanticId - Handler function's semantic ID
|
|
111
|
+
* @returns Scope prefix for matching variables declared inside the handler
|
|
112
|
+
*/
|
|
113
|
+
private extractScopePrefix;
|
|
114
|
+
/**
|
|
115
|
+
* Extract module prefix from semantic ID (for module-level variable access).
|
|
116
|
+
*
|
|
117
|
+
* Examples:
|
|
118
|
+
* - "routes.js->anonymous[1]->FUNCTION->anonymous[1]" -> "routes.js->"
|
|
119
|
+
* - "app.js->startServer->FUNCTION->startServer" -> "app.js->"
|
|
120
|
+
*
|
|
121
|
+
* @param semanticId - Handler function's semantic ID
|
|
122
|
+
* @returns Module prefix for matching module-level variables
|
|
123
|
+
*/
|
|
124
|
+
private extractModulePrefix;
|
|
125
|
+
/**
|
|
126
|
+
* Check if a semantic ID represents a true module-level variable.
|
|
127
|
+
*
|
|
128
|
+
* Semantic IDs have format: file->scope->TYPE->name
|
|
129
|
+
* - Module-level variables have "global" as the scope: "file.js->global->TYPE->name"
|
|
130
|
+
* - Function-local variables have function name as scope: "file.js->funcName->TYPE->name"
|
|
131
|
+
*
|
|
132
|
+
* Examples:
|
|
133
|
+
* - "index.js->global->CONSTANT->CONFIG" -> true (module-level)
|
|
134
|
+
* - "index.js->global->VARIABLE->counter" -> true (module-level)
|
|
135
|
+
* - "index.js->anonymous[0]->CONSTANT->data" -> false (function-local)
|
|
136
|
+
* - "routes.js->handler->VARIABLE->result" -> false (function-local)
|
|
137
|
+
*
|
|
138
|
+
* @param nodeId - The node's semantic ID
|
|
139
|
+
* @param modulePrefix - The module prefix (e.g., "index.js->")
|
|
140
|
+
* @returns true if this is a module-level variable
|
|
141
|
+
*/
|
|
142
|
+
private isModuleLevelId;
|
|
143
|
+
/**
|
|
144
|
+
* Create a node for the response argument
|
|
145
|
+
*/
|
|
146
|
+
private createResponseArgumentNode;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=ExpressResponseAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpressResponseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressResponseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqBhF,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,OAAO,CAAC,mBAAmB,CAAK;IAEhC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC5D;;OAEG;YACW,qBAAqB;IAgEnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwEzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;;;;;;;;;;OAiBG;YACW,2BAA2B;IAoCzC;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,qBAAqB;IAqEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,0BAA0B;CAiFzC"}
|