@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
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { Plugin, createSuccessResult } from '../Plugin.js';
|
|
8
|
-
// NAPI binding - will be exported from
|
|
8
|
+
// NAPI binding - will be exported from packages/rfdb-server after build
|
|
9
9
|
let parseRustFile;
|
|
10
10
|
// Try to load the native binding
|
|
11
|
-
// Path: from dist/plugins/analysis/ go up 5 levels to reach project root, then
|
|
11
|
+
// Path: from dist/plugins/analysis/ go up 5 levels to reach project root, then packages/rfdb-server/
|
|
12
12
|
try {
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
-
const nativeBinding = await import('../../../../../
|
|
14
|
+
const nativeBinding = await import('../../../../../packages/rfdb-server/grafema-graph-engine.node');
|
|
15
15
|
parseRustFile = nativeBinding.parseRustFile;
|
|
16
16
|
}
|
|
17
17
|
catch {
|
|
@@ -19,7 +19,7 @@ catch {
|
|
|
19
19
|
try {
|
|
20
20
|
const { createRequire } = await import('module');
|
|
21
21
|
const require = createRequire(import.meta.url);
|
|
22
|
-
const nativeBinding = require('../../../../../
|
|
22
|
+
const nativeBinding = require('../../../../../packages/rfdb-server/grafema-graph-engine.node');
|
|
23
23
|
parseRustFile = nativeBinding.parseRustFile;
|
|
24
24
|
}
|
|
25
25
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLiteAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SQLiteAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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":"SQLiteAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SQLiteAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmChF,qBAAa,cAAe,SAAQ,MAAM;IACxC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAiC9C,aAAa;IAmO3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,gBAAgB;CAiCzB"}
|
|
@@ -11,7 +11,7 @@ import { readFileSync } from 'fs';
|
|
|
11
11
|
import { parse } from '@babel/parser';
|
|
12
12
|
import traverseModule from '@babel/traverse';
|
|
13
13
|
import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
|
|
14
|
-
import { getLine } from './ast/utils/location.js';
|
|
14
|
+
import { getLine, getColumn } from './ast/utils/location.js';
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
16
|
const traverse = traverseModule.default || traverseModule;
|
|
17
17
|
const SQLITE_METHODS = ['all', 'get', 'run', 'exec', 'prepare', 'query', 'execute'];
|
|
@@ -124,7 +124,8 @@ export class SQLiteAnalyzer extends Plugin {
|
|
|
124
124
|
operationType: operationType,
|
|
125
125
|
tableName: tableName,
|
|
126
126
|
file: module.file,
|
|
127
|
-
line: getLine(node)
|
|
127
|
+
line: getLine(node),
|
|
128
|
+
column: getColumn(node)
|
|
128
129
|
});
|
|
129
130
|
}
|
|
130
131
|
}
|
|
@@ -187,6 +188,7 @@ export class SQLiteAnalyzer extends Plugin {
|
|
|
187
188
|
tableName: tableName,
|
|
188
189
|
file: module.file,
|
|
189
190
|
line: getLine(innerNode),
|
|
191
|
+
column: getColumn(innerNode),
|
|
190
192
|
promiseWrapped: true
|
|
191
193
|
});
|
|
192
194
|
}
|
|
@@ -19,6 +19,15 @@ import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
|
|
|
19
19
|
export declare class SocketIOAnalyzer extends Plugin {
|
|
20
20
|
get metadata(): PluginMetadata;
|
|
21
21
|
execute(context: PluginContext): Promise<PluginResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Create event channel nodes and connect them to emits/listeners
|
|
24
|
+
*
|
|
25
|
+
* This runs AFTER all modules are analyzed, so all emit/listener nodes exist.
|
|
26
|
+
* Creates one socketio:event node per unique event name, then connects:
|
|
27
|
+
* - socketio:emit → EMITS_EVENT → socketio:event
|
|
28
|
+
* - socketio:event → LISTENED_BY → socketio:on
|
|
29
|
+
*/
|
|
30
|
+
private createEventChannels;
|
|
22
31
|
private analyzeModule;
|
|
23
32
|
/**
|
|
24
33
|
* Извлекает имя объекта из MemberExpression
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketIOAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SocketIOAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;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":"SocketIOAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/SocketIOAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwEhF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2D5D;;;;;;;OAOG;YACW,mBAAmB;YAiFnB,aAAa;IAsN3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA4BzB"}
|
|
@@ -28,8 +28,8 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
28
28
|
phase: 'ANALYSIS',
|
|
29
29
|
priority: 75, // После JSASTAnalyzer (80)
|
|
30
30
|
creates: {
|
|
31
|
-
nodes: ['socketio:emit', 'socketio:on', 'socketio:room'],
|
|
32
|
-
edges: ['CONTAINS', 'EMITS_EVENT', 'LISTENS_TO', 'JOINS_ROOM']
|
|
31
|
+
nodes: ['socketio:emit', 'socketio:on', 'socketio:room', 'socketio:event'],
|
|
32
|
+
edges: ['CONTAINS', 'EMITS_EVENT', 'LISTENS_TO', 'JOINS_ROOM', 'LISTENED_BY']
|
|
33
33
|
},
|
|
34
34
|
dependencies: ['JSModuleIndexer', 'JSASTAnalyzer']
|
|
35
35
|
};
|
|
@@ -45,6 +45,7 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
45
45
|
let listenersCount = 0;
|
|
46
46
|
let roomsCount = 0;
|
|
47
47
|
const startTime = Date.now();
|
|
48
|
+
// PHASE 1: Analyze modules and create emit/listener/room nodes
|
|
48
49
|
for (let i = 0; i < modules.length; i++) {
|
|
49
50
|
const module = modules[i];
|
|
50
51
|
const result = await this.analyzeModule(module, graph);
|
|
@@ -63,17 +64,98 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
63
64
|
});
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
// PHASE 2: Create event channel nodes and edges
|
|
68
|
+
const eventCount = await this.createEventChannels(graph, logger);
|
|
69
|
+
logger.info('Analysis complete', {
|
|
70
|
+
emitsCount,
|
|
71
|
+
listenersCount,
|
|
72
|
+
roomsCount,
|
|
73
|
+
eventCount
|
|
74
|
+
});
|
|
67
75
|
return createSuccessResult({
|
|
68
|
-
nodes: emitsCount + listenersCount + roomsCount,
|
|
76
|
+
nodes: emitsCount + listenersCount + roomsCount + eventCount,
|
|
69
77
|
edges: 0
|
|
70
|
-
}, { emitsCount, listenersCount, roomsCount });
|
|
78
|
+
}, { emitsCount, listenersCount, roomsCount, eventCount });
|
|
71
79
|
}
|
|
72
80
|
catch (error) {
|
|
73
81
|
logger.error('Analysis failed', { error });
|
|
74
82
|
return createErrorResult(error);
|
|
75
83
|
}
|
|
76
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Create event channel nodes and connect them to emits/listeners
|
|
87
|
+
*
|
|
88
|
+
* This runs AFTER all modules are analyzed, so all emit/listener nodes exist.
|
|
89
|
+
* Creates one socketio:event node per unique event name, then connects:
|
|
90
|
+
* - socketio:emit → EMITS_EVENT → socketio:event
|
|
91
|
+
* - socketio:event → LISTENED_BY → socketio:on
|
|
92
|
+
*/
|
|
93
|
+
async createEventChannels(graph, logger) {
|
|
94
|
+
try {
|
|
95
|
+
// Step 1: Get all emit and listener nodes
|
|
96
|
+
const allEmits = await graph.getAllNodes({ type: 'socketio:emit' });
|
|
97
|
+
const allListeners = await graph.getAllNodes({ type: 'socketio:on' });
|
|
98
|
+
logger.debug('Creating event channels', {
|
|
99
|
+
emits: allEmits.length,
|
|
100
|
+
listeners: allListeners.length
|
|
101
|
+
});
|
|
102
|
+
// Step 2: Extract unique event names
|
|
103
|
+
const eventNames = new Set();
|
|
104
|
+
for (const emit of allEmits) {
|
|
105
|
+
if (emit.event && typeof emit.event === 'string') {
|
|
106
|
+
eventNames.add(emit.event);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const listener of allListeners) {
|
|
110
|
+
if (listener.event && typeof listener.event === 'string') {
|
|
111
|
+
eventNames.add(listener.event);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
logger.debug('Unique events found', { count: eventNames.size });
|
|
115
|
+
// Step 3: Create event channel node for each unique event
|
|
116
|
+
let createdCount = 0;
|
|
117
|
+
for (const eventName of eventNames) {
|
|
118
|
+
const eventNodeId = `socketio:event#${eventName}`;
|
|
119
|
+
// Create event channel node
|
|
120
|
+
const eventNode = {
|
|
121
|
+
id: eventNodeId,
|
|
122
|
+
type: 'socketio:event',
|
|
123
|
+
name: eventName,
|
|
124
|
+
event: eventName
|
|
125
|
+
};
|
|
126
|
+
await graph.addNode(eventNode);
|
|
127
|
+
createdCount++;
|
|
128
|
+
// Step 4: Connect all emits of this event to the channel
|
|
129
|
+
const matchingEmits = allEmits.filter(e => e.event === eventName);
|
|
130
|
+
for (const emit of matchingEmits) {
|
|
131
|
+
await graph.addEdge({
|
|
132
|
+
type: 'EMITS_EVENT',
|
|
133
|
+
src: emit.id,
|
|
134
|
+
dst: eventNodeId
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
// Step 5: Connect event channel to all listeners of this event
|
|
138
|
+
const matchingListeners = allListeners.filter(l => l.event === eventName);
|
|
139
|
+
for (const listener of matchingListeners) {
|
|
140
|
+
await graph.addEdge({
|
|
141
|
+
type: 'LISTENED_BY',
|
|
142
|
+
src: eventNodeId,
|
|
143
|
+
dst: listener.id
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
logger.debug('Created event channel', {
|
|
147
|
+
event: eventName,
|
|
148
|
+
emits: matchingEmits.length,
|
|
149
|
+
listeners: matchingListeners.length
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return createdCount;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
logger.error('Failed to create event channels', { error });
|
|
156
|
+
return 0;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
77
159
|
async analyzeModule(module, graph) {
|
|
78
160
|
try {
|
|
79
161
|
const code = readFileSync(module.file, 'utf-8');
|
|
@@ -168,7 +250,8 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
168
250
|
handlerName: handlerName,
|
|
169
251
|
handlerLine: handlerLine,
|
|
170
252
|
file: module.file,
|
|
171
|
-
line: line
|
|
253
|
+
line: line,
|
|
254
|
+
column: getColumn(node)
|
|
172
255
|
});
|
|
173
256
|
}
|
|
174
257
|
// Pattern: socket.join(room)
|
|
@@ -185,7 +268,8 @@ export class SocketIOAnalyzer extends Plugin {
|
|
|
185
268
|
room: roomName,
|
|
186
269
|
objectName: objectName,
|
|
187
270
|
file: module.file,
|
|
188
|
-
line: line
|
|
271
|
+
line: line,
|
|
272
|
+
column: getColumn(node)
|
|
189
273
|
});
|
|
190
274
|
}
|
|
191
275
|
}
|
|
@@ -31,6 +31,69 @@ export declare class GraphBuilder {
|
|
|
31
31
|
build(module: ModuleNode, graph: GraphBackend, projectPath: string, data: ASTCollections): Promise<BuildResult>;
|
|
32
32
|
private bufferFunctionEdges;
|
|
33
33
|
private bufferScopeEdges;
|
|
34
|
+
/**
|
|
35
|
+
* Buffer LOOP edges (CONTAINS, HAS_BODY, ITERATES_OVER)
|
|
36
|
+
*
|
|
37
|
+
* Creates edges for:
|
|
38
|
+
* - Parent -> CONTAINS -> LOOP
|
|
39
|
+
* - LOOP -> HAS_BODY -> body SCOPE
|
|
40
|
+
* - LOOP -> ITERATES_OVER -> collection VARIABLE/PARAMETER (for for-in/for-of)
|
|
41
|
+
*
|
|
42
|
+
* Scope-aware variable lookup for ITERATES_OVER:
|
|
43
|
+
* For for-of/for-in, finds the iterated variable preferring:
|
|
44
|
+
* 1. Variables declared before the loop on same or earlier line (closest first)
|
|
45
|
+
* 2. Parameters (function arguments)
|
|
46
|
+
*/
|
|
47
|
+
private bufferLoopEdges;
|
|
48
|
+
/**
|
|
49
|
+
* Buffer HAS_CONDITION edges from LOOP to condition EXPRESSION/CALL nodes.
|
|
50
|
+
* Also creates EXPRESSION nodes for non-CallExpression conditions.
|
|
51
|
+
*
|
|
52
|
+
* REG-280: For while/do-while/for loops, creates HAS_CONDITION edge to the
|
|
53
|
+
* condition expression. For-in/for-of loops don't have conditions (use ITERATES_OVER).
|
|
54
|
+
*
|
|
55
|
+
* For CallExpression conditions, links to existing CALL_SITE node by coordinates.
|
|
56
|
+
*/
|
|
57
|
+
private bufferLoopConditionEdges;
|
|
58
|
+
/**
|
|
59
|
+
* Buffer EXPRESSION nodes for loop condition expressions (non-CallExpression).
|
|
60
|
+
* Similar to bufferDiscriminantExpressions but for loops.
|
|
61
|
+
*
|
|
62
|
+
* REG-280: Creates EXPRESSION nodes for while/do-while/for loop conditions.
|
|
63
|
+
* CallExpression conditions use existing CALL_SITE nodes (no EXPRESSION created).
|
|
64
|
+
*/
|
|
65
|
+
private bufferLoopConditionExpressions;
|
|
66
|
+
/**
|
|
67
|
+
* Buffer BRANCH edges (CONTAINS, HAS_CONDITION, HAS_CONSEQUENT, HAS_ALTERNATE)
|
|
68
|
+
*
|
|
69
|
+
* REG-275: For CallExpression discriminants (switch(getType())), looks up the
|
|
70
|
+
* actual CALL_SITE node by coordinates since the CALL_SITE uses semantic IDs.
|
|
71
|
+
*
|
|
72
|
+
* Phase 3 (REG-267): For if-branches, creates HAS_CONSEQUENT and HAS_ALTERNATE edges
|
|
73
|
+
* pointing to the if-body and else-body SCOPEs.
|
|
74
|
+
*/
|
|
75
|
+
private bufferBranchEdges;
|
|
76
|
+
/**
|
|
77
|
+
* Buffer CASE edges (HAS_CASE, HAS_DEFAULT)
|
|
78
|
+
*/
|
|
79
|
+
private bufferCaseEdges;
|
|
80
|
+
/**
|
|
81
|
+
* Buffer edges for TRY_BLOCK, CATCH_BLOCK, FINALLY_BLOCK nodes (Phase 4)
|
|
82
|
+
*
|
|
83
|
+
* Creates edges for:
|
|
84
|
+
* - Parent -> CONTAINS -> TRY_BLOCK
|
|
85
|
+
* - TRY_BLOCK -> HAS_CATCH -> CATCH_BLOCK
|
|
86
|
+
* - TRY_BLOCK -> HAS_FINALLY -> FINALLY_BLOCK
|
|
87
|
+
*/
|
|
88
|
+
private bufferTryCatchFinallyEdges;
|
|
89
|
+
/**
|
|
90
|
+
* Buffer EXPRESSION nodes for switch discriminants
|
|
91
|
+
* Uses stored metadata directly instead of parsing from ID (Linus improvement)
|
|
92
|
+
*
|
|
93
|
+
* REG-275: For CallExpression discriminants, we don't create nodes here since
|
|
94
|
+
* bufferBranchEdges links to the existing CALL_SITE node by coordinates.
|
|
95
|
+
*/
|
|
96
|
+
private bufferDiscriminantExpressions;
|
|
34
97
|
private bufferVariableEdges;
|
|
35
98
|
private bufferCallSiteEdges;
|
|
36
99
|
private bufferMethodCalls;
|
|
@@ -89,6 +152,108 @@ export declare class GraphBuilder {
|
|
|
89
152
|
* to the CLASS node with mutationType: 'this_property'.
|
|
90
153
|
*/
|
|
91
154
|
private bufferObjectMutationEdges;
|
|
155
|
+
/**
|
|
156
|
+
* Resolve variable by name using scope chain lookup (REG-309).
|
|
157
|
+
* Mirrors JavaScript lexical scoping: search current scope, then parent, then grandparent, etc.
|
|
158
|
+
*
|
|
159
|
+
* @param name - Variable name
|
|
160
|
+
* @param scopePath - Scope path where reference occurs (from ScopeTracker)
|
|
161
|
+
* @param file - File path
|
|
162
|
+
* @param variables - All variable declarations
|
|
163
|
+
* @returns Variable declaration or null if not found
|
|
164
|
+
*/
|
|
165
|
+
private resolveVariableInScope;
|
|
166
|
+
/**
|
|
167
|
+
* Resolve parameter by name using scope chain lookup (REG-309).
|
|
168
|
+
* Same semantics as resolveVariableInScope but for parameters.
|
|
169
|
+
*
|
|
170
|
+
* @param name - Parameter name
|
|
171
|
+
* @param scopePath - Scope path where reference occurs (from ScopeTracker)
|
|
172
|
+
* @param file - File path
|
|
173
|
+
* @param parameters - All parameter declarations
|
|
174
|
+
* @returns Parameter declaration or null if not found
|
|
175
|
+
*/
|
|
176
|
+
private resolveParameterInScope;
|
|
177
|
+
/**
|
|
178
|
+
* Check if two scope paths match (REG-309).
|
|
179
|
+
* Handles: ['foo', 'if#0'] vs ['foo', 'if#0']
|
|
180
|
+
*/
|
|
181
|
+
private scopePathsMatch;
|
|
182
|
+
/**
|
|
183
|
+
* Buffer FLOWS_INTO edges for variable reassignments.
|
|
184
|
+
* Handles: x = y, x += y (when x is already declared, not initialization)
|
|
185
|
+
*
|
|
186
|
+
* Edge patterns:
|
|
187
|
+
* - Simple assignment (=): source --FLOWS_INTO--> variable
|
|
188
|
+
* - Compound operators (+=, -=, etc.):
|
|
189
|
+
* - source --FLOWS_INTO--> variable (write new value)
|
|
190
|
+
* - variable --READS_FROM--> variable (self-loop: reads current value before write)
|
|
191
|
+
*
|
|
192
|
+
* REG-309: Uses scope-aware variable lookup via resolveVariableInScope().
|
|
193
|
+
*
|
|
194
|
+
* REG-290: Complete implementation with inline node creation (no continue statements).
|
|
195
|
+
*/
|
|
196
|
+
private bufferVariableReassignmentEdges;
|
|
197
|
+
/**
|
|
198
|
+
* Buffer RETURNS edges connecting return expressions to their containing functions.
|
|
199
|
+
*
|
|
200
|
+
* Edge direction: returnExpression --RETURNS--> function
|
|
201
|
+
*
|
|
202
|
+
* This enables tracing data flow through function calls:
|
|
203
|
+
* - Query: "What does formatDate return?"
|
|
204
|
+
* - Answer: Follow RETURNS edges from function to see all possible return values
|
|
205
|
+
*/
|
|
206
|
+
private bufferReturnEdges;
|
|
207
|
+
/**
|
|
208
|
+
* Buffer UPDATE_EXPRESSION nodes and edges for increment/decrement operations.
|
|
209
|
+
*
|
|
210
|
+
* Handles two target types:
|
|
211
|
+
* - IDENTIFIER: Simple variable (i++, --count)
|
|
212
|
+
* - MEMBER_EXPRESSION: Object property (obj.prop++, arr[i]++, this.count++)
|
|
213
|
+
*
|
|
214
|
+
* Creates:
|
|
215
|
+
* - UPDATE_EXPRESSION node with operator and target metadata
|
|
216
|
+
* - MODIFIES edge: UPDATE_EXPRESSION -> target (VARIABLE, PARAMETER, or CLASS)
|
|
217
|
+
* - READS_FROM self-loop: target -> target (reads current value before update)
|
|
218
|
+
* - CONTAINS edge: SCOPE -> UPDATE_EXPRESSION
|
|
219
|
+
*
|
|
220
|
+
* REG-288: Initial implementation for IDENTIFIER targets
|
|
221
|
+
* REG-312: Extended for MEMBER_EXPRESSION targets
|
|
222
|
+
*/
|
|
223
|
+
private bufferUpdateExpressionEdges;
|
|
224
|
+
/**
|
|
225
|
+
* Buffer UPDATE_EXPRESSION node and edges for simple identifier updates (i++, --count)
|
|
226
|
+
* REG-288: Original implementation extracted for clarity
|
|
227
|
+
*/
|
|
228
|
+
private bufferIdentifierUpdate;
|
|
229
|
+
/**
|
|
230
|
+
* Buffer UPDATE_EXPRESSION node and edges for member expression updates (obj.prop++, arr[i]++)
|
|
231
|
+
* REG-312: New implementation for member expression targets
|
|
232
|
+
*
|
|
233
|
+
* Creates:
|
|
234
|
+
* - UPDATE_EXPRESSION node with member expression metadata
|
|
235
|
+
* - MODIFIES edge: UPDATE_EXPRESSION -> VARIABLE(object) or CLASS (for this.prop++)
|
|
236
|
+
* - READS_FROM self-loop: VARIABLE(object) -> VARIABLE(object)
|
|
237
|
+
* - CONTAINS edge: SCOPE -> UPDATE_EXPRESSION
|
|
238
|
+
*/
|
|
239
|
+
private bufferMemberExpressionUpdate;
|
|
240
|
+
/**
|
|
241
|
+
* Buffer RESOLVES_TO edges for Promise resolution data flow (REG-334).
|
|
242
|
+
*
|
|
243
|
+
* Links resolve/reject CALL nodes to their parent Promise CONSTRUCTOR_CALL.
|
|
244
|
+
* This enables traceValues to follow Promise data flow:
|
|
245
|
+
*
|
|
246
|
+
* Example:
|
|
247
|
+
* ```
|
|
248
|
+
* const result = new Promise((resolve) => {
|
|
249
|
+
* resolve(42); // CALL[resolve] --RESOLVES_TO--> CONSTRUCTOR_CALL[Promise]
|
|
250
|
+
* });
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* The edge direction (CALL -> CONSTRUCTOR_CALL) matches data flow semantics:
|
|
254
|
+
* data flows FROM resolve(value) TO the Promise result.
|
|
255
|
+
*/
|
|
256
|
+
private bufferPromiseResolutionEdges;
|
|
92
257
|
/**
|
|
93
258
|
* Buffer OBJECT_LITERAL nodes to the graph.
|
|
94
259
|
* These are object literals passed as function arguments or nested in other literals.
|
|
@@ -99,6 +264,14 @@ export declare class GraphBuilder {
|
|
|
99
264
|
* These are array literals passed as function arguments or nested in other literals.
|
|
100
265
|
*/
|
|
101
266
|
private bufferArrayLiteralNodes;
|
|
267
|
+
/**
|
|
268
|
+
* Buffer HAS_PROPERTY edges connecting OBJECT_LITERAL nodes to their property values.
|
|
269
|
+
* Creates edges from object literal to its property value nodes (LITERAL, nested OBJECT_LITERAL, ARRAY_LITERAL, etc.)
|
|
270
|
+
*
|
|
271
|
+
* REG-329: Adds scope-aware variable resolution for VARIABLE property values.
|
|
272
|
+
* Uses the same resolveVariableInScope infrastructure as mutation handlers.
|
|
273
|
+
*/
|
|
274
|
+
private bufferObjectPropertyEdges;
|
|
102
275
|
/**
|
|
103
276
|
* Handle CLASS ASSIGNED_FROM edges asynchronously (needs graph queries)
|
|
104
277
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQnD,OAAO,KAAK,EACV,UAAU,EAqCV,cAAc,EAGd,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IAEvB,OAAO,CAAC,kBAAkB,CAA0B;IAGpD,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,WAAW,CAAmB;IAEtC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,WAAW;IAWzB;;;OAGG;YACW,WAAW;IAUzB;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAmRrH,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,gBAAgB;IA+CxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;IAqIvB;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;;;;;OAMG;IACH,OAAO,CAAC,8BAA8B;IA6BtC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IA8FzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAsClC;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,iBAAiB;IAqDzB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,2BAA2B;IAyCnC,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,iBAAiB;IAmGzB,OAAO,CAAC,iBAAiB;IAmFzB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,qBAAqB;IAyW7B,OAAO,CAAC,mBAAmB;IA4E3B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA8D5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAkEhC;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAqEjC;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAkC/B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAKvB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,+BAA+B;IAuHvC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IA8OzB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,2BAA2B;IA4BnC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAmE9B;;;;;;;;;OASG;IACH,OAAO,CAAC,4BAA4B;IAyGpC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,4BAA4B;IAapC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAehC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IA4CjC;;OAEG;YACW,0BAA0B;CA+BzC"}
|