@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
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* VariableDeclarationNode - contract for VARIABLE_DECLARATION node
|
|
3
|
+
*
|
|
4
|
+
* Supports two creation modes:
|
|
5
|
+
* 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
|
|
6
|
+
* 2. create() - LEGACY: Uses line-based IDs for backward compatibility
|
|
7
|
+
*
|
|
8
|
+
* Semantic ID format: {file}->{scope_path}->VARIABLE->{name}
|
|
9
|
+
* Example: src/app.js->handler->VARIABLE->result
|
|
3
10
|
*/
|
|
4
11
|
|
|
5
12
|
import type { BaseNodeRecord } from '@grafema/types';
|
|
13
|
+
import { computeSemanticId, type ScopeContext, type Location } from '../SemanticId.js';
|
|
6
14
|
|
|
7
15
|
interface VariableDeclarationNodeRecord extends BaseNodeRecord {
|
|
8
16
|
type: 'VARIABLE_DECLARATION';
|
|
@@ -15,11 +23,18 @@ interface VariableDeclarationNodeOptions {
|
|
|
15
23
|
counter?: number;
|
|
16
24
|
}
|
|
17
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Options for createWithContext
|
|
28
|
+
*/
|
|
29
|
+
interface VariableContextOptions {
|
|
30
|
+
parentScopeId?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
18
33
|
export class VariableDeclarationNode {
|
|
19
34
|
static readonly TYPE = 'VARIABLE_DECLARATION' as const;
|
|
20
35
|
|
|
21
|
-
static readonly REQUIRED = ['name', 'file', 'line'] as const;
|
|
22
|
-
static readonly OPTIONAL = ['
|
|
36
|
+
static readonly REQUIRED = ['name', 'file', 'line', 'column'] as const;
|
|
37
|
+
static readonly OPTIONAL = ['parentScopeId'] as const;
|
|
23
38
|
|
|
24
39
|
static create(
|
|
25
40
|
name: string,
|
|
@@ -31,9 +46,10 @@ export class VariableDeclarationNode {
|
|
|
31
46
|
if (!name) throw new Error('VariableDeclarationNode.create: name is required');
|
|
32
47
|
if (!file) throw new Error('VariableDeclarationNode.create: file is required');
|
|
33
48
|
if (line === undefined) throw new Error('VariableDeclarationNode.create: line is required');
|
|
49
|
+
if (column === undefined) throw new Error('VariableDeclarationNode.create: column is required');
|
|
34
50
|
|
|
35
51
|
const counter = options.counter !== undefined ? `:${options.counter}` : '';
|
|
36
|
-
const id = `${file}:VARIABLE_DECLARATION:${name}:${line}:${column
|
|
52
|
+
const id = `${file}:VARIABLE_DECLARATION:${name}:${line}:${column}${counter}`;
|
|
37
53
|
|
|
38
54
|
return {
|
|
39
55
|
id,
|
|
@@ -41,7 +57,45 @@ export class VariableDeclarationNode {
|
|
|
41
57
|
name,
|
|
42
58
|
file,
|
|
43
59
|
line,
|
|
44
|
-
column
|
|
60
|
+
column,
|
|
61
|
+
parentScopeId: options.parentScopeId
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create VARIABLE_DECLARATION node with semantic ID (NEW API)
|
|
67
|
+
*
|
|
68
|
+
* Uses ScopeContext from ScopeTracker for stable identifiers.
|
|
69
|
+
* Variable names are unique within scope (handles shadowing naturally).
|
|
70
|
+
*
|
|
71
|
+
* @param name - Variable name
|
|
72
|
+
* @param context - Scope context from ScopeTracker.getContext()
|
|
73
|
+
* @param location - Source location { line, column }
|
|
74
|
+
* @param options - Optional variable properties
|
|
75
|
+
* @returns VariableDeclarationNodeRecord with semantic ID
|
|
76
|
+
*/
|
|
77
|
+
static createWithContext(
|
|
78
|
+
name: string,
|
|
79
|
+
context: ScopeContext,
|
|
80
|
+
location: Partial<Location>,
|
|
81
|
+
options: VariableContextOptions = {}
|
|
82
|
+
): VariableDeclarationNodeRecord {
|
|
83
|
+
// Validate required fields
|
|
84
|
+
if (!name) throw new Error('VariableDeclarationNode.createWithContext: name is required');
|
|
85
|
+
if (!context.file) throw new Error('VariableDeclarationNode.createWithContext: file is required');
|
|
86
|
+
if (location.line === undefined) throw new Error('VariableDeclarationNode.createWithContext: line is required');
|
|
87
|
+
if (location.column === undefined) throw new Error('VariableDeclarationNode.createWithContext: column is required');
|
|
88
|
+
|
|
89
|
+
// Compute semantic ID using 'VARIABLE' type for cleaner IDs
|
|
90
|
+
const id = computeSemanticId('VARIABLE', name, context);
|
|
91
|
+
|
|
92
|
+
return {
|
|
93
|
+
id,
|
|
94
|
+
type: this.TYPE,
|
|
95
|
+
name,
|
|
96
|
+
file: context.file,
|
|
97
|
+
line: location.line,
|
|
98
|
+
column: location.column,
|
|
45
99
|
parentScopeId: options.parentScopeId
|
|
46
100
|
};
|
|
47
101
|
}
|
package/src/core/nodes/index.ts
CHANGED
|
@@ -11,20 +11,37 @@ export { ClassNode, type ClassNodeRecord } from './ClassNode.js';
|
|
|
11
11
|
export { MethodNode, type MethodNodeRecord, type MethodKind } from './MethodNode.js';
|
|
12
12
|
export { ParameterNode, type ParameterNodeRecord } from './ParameterNode.js';
|
|
13
13
|
export { ScopeNode, type ScopeNodeRecord } from './ScopeNode.js';
|
|
14
|
+
export { BranchNode, type BranchNodeRecord } from './BranchNode.js';
|
|
15
|
+
export { CaseNode, type CaseNodeRecord } from './CaseNode.js';
|
|
14
16
|
|
|
15
17
|
// Call/reference nodes
|
|
16
18
|
export { CallSiteNode, type CallSiteNodeRecord } from './CallSiteNode.js';
|
|
17
19
|
export { MethodCallNode, type MethodCallNodeRecord } from './MethodCallNode.js';
|
|
20
|
+
export { ConstructorCallNode, type ConstructorCallNodeRecord } from './ConstructorCallNode.js';
|
|
18
21
|
export { VariableDeclarationNode, type VariableDeclarationNodeRecord } from './VariableDeclarationNode.js';
|
|
19
22
|
export { ConstantNode, type ConstantNodeRecord } from './ConstantNode.js';
|
|
20
23
|
export { LiteralNode, type LiteralNodeRecord } from './LiteralNode.js';
|
|
24
|
+
export { ObjectLiteralNode, type ObjectLiteralNodeRecord, type ObjectLiteralNodeOptions } from './ObjectLiteralNode.js';
|
|
25
|
+
export { ArrayLiteralNode, type ArrayLiteralNodeRecord, type ArrayLiteralNodeOptions } from './ArrayLiteralNode.js';
|
|
21
26
|
|
|
22
27
|
// Import/Export nodes
|
|
23
|
-
export { ImportNode, type ImportNodeRecord, type
|
|
28
|
+
export { ImportNode, type ImportNodeRecord, type ImportBinding, type ImportType } from './ImportNode.js';
|
|
24
29
|
export { ExportNode, type ExportNodeRecord, type ExportKind } from './ExportNode.js';
|
|
30
|
+
export { ExternalModuleNode, type ExternalModuleNodeRecord } from './ExternalModuleNode.js';
|
|
31
|
+
|
|
32
|
+
// TypeScript declaration nodes
|
|
33
|
+
export { InterfaceNode, type InterfaceNodeRecord, type InterfacePropertyRecord } from './InterfaceNode.js';
|
|
34
|
+
export { TypeNode, type TypeNodeRecord } from './TypeNode.js';
|
|
35
|
+
export { EnumNode, type EnumNodeRecord, type EnumMemberRecord } from './EnumNode.js';
|
|
36
|
+
export { DecoratorNode, type DecoratorNodeRecord, type DecoratorTargetType } from './DecoratorNode.js';
|
|
37
|
+
|
|
38
|
+
// Expression nodes
|
|
39
|
+
export { ExpressionNode, type ExpressionNodeRecord, type ExpressionNodeOptions } from './ExpressionNode.js';
|
|
40
|
+
export { ArgumentExpressionNode, type ArgumentExpressionNodeRecord, type ArgumentExpressionNodeOptions } from './ArgumentExpressionNode.js';
|
|
25
41
|
|
|
26
42
|
// External/IO nodes
|
|
27
43
|
export { ExternalStdioNode, type ExternalStdioNodeRecord } from './ExternalStdioNode.js';
|
|
44
|
+
export { NetworkRequestNode, type NetworkRequestNodeRecord } from './NetworkRequestNode.js';
|
|
28
45
|
export { EventListenerNode, type EventListenerNodeRecord } from './EventListenerNode.js';
|
|
29
46
|
export { HttpRequestNode, type HttpRequestNodeRecord } from './HttpRequestNode.js';
|
|
30
47
|
export { DatabaseQueryNode, type DatabaseQueryNodeRecord } from './DatabaseQueryNode.js';
|
|
@@ -32,6 +49,9 @@ export { DatabaseQueryNode, type DatabaseQueryNodeRecord } from './DatabaseQuery
|
|
|
32
49
|
// Guarantee nodes (contract-based)
|
|
33
50
|
export { GuaranteeNode, type GuaranteeNodeRecord, type GuaranteePriority, type GuaranteeStatus, type GuaranteeType } from './GuaranteeNode.js';
|
|
34
51
|
|
|
52
|
+
// Issue nodes (detected problems)
|
|
53
|
+
export { IssueNode, type IssueNodeRecord, type IssueSeverity, type IssueType } from './IssueNode.js';
|
|
54
|
+
|
|
35
55
|
// Node type constants and helpers
|
|
36
56
|
export {
|
|
37
57
|
NODE_TYPE,
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuiltinRegistry - Registry for Node.js builtin functions (REG-218)
|
|
3
|
+
*
|
|
4
|
+
* Provides lookup for Node.js builtin modules and functions.
|
|
5
|
+
* Used by NodejsBuiltinsResolver for lazy EXTERNAL_FUNCTION node creation.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const registry = new BuiltinRegistry();
|
|
9
|
+
* if (registry.isBuiltinModule('fs')) {
|
|
10
|
+
* const funcDef = registry.getFunction('fs', 'readFile');
|
|
11
|
+
* if (funcDef) {
|
|
12
|
+
* // Create EXTERNAL_FUNCTION node with metadata
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import type { BuiltinFunctionDef, BuiltinModuleDef } from './types.js';
|
|
18
|
+
import { ALL_BUILTIN_MODULES } from './definitions.js';
|
|
19
|
+
|
|
20
|
+
export class BuiltinRegistry {
|
|
21
|
+
/** Map of module name to module definition */
|
|
22
|
+
private modules: Map<string, BuiltinModuleDef>;
|
|
23
|
+
|
|
24
|
+
/** Map of "module:funcName" to function definition for fast lookup */
|
|
25
|
+
private functions: Map<string, BuiltinFunctionDef>;
|
|
26
|
+
|
|
27
|
+
constructor(modules: BuiltinModuleDef[] = ALL_BUILTIN_MODULES) {
|
|
28
|
+
this.modules = new Map();
|
|
29
|
+
this.functions = new Map();
|
|
30
|
+
|
|
31
|
+
for (const mod of modules) {
|
|
32
|
+
this.modules.set(mod.name, mod);
|
|
33
|
+
|
|
34
|
+
for (const func of mod.functions) {
|
|
35
|
+
const key = `${mod.name}:${func.name}`;
|
|
36
|
+
this.functions.set(key, func);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Check if module is a Node.js builtin module.
|
|
43
|
+
* Handles node: prefix automatically.
|
|
44
|
+
*
|
|
45
|
+
* @param moduleName - Module name (e.g., 'fs', 'node:fs', 'fs/promises')
|
|
46
|
+
* @returns true if module is a known builtin
|
|
47
|
+
*/
|
|
48
|
+
isBuiltinModule(moduleName: string): boolean {
|
|
49
|
+
const normalized = this.normalizeModule(moduleName);
|
|
50
|
+
return this.modules.has(normalized);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Normalize module name by stripping node: prefix.
|
|
55
|
+
*
|
|
56
|
+
* @param moduleName - Module name (e.g., 'node:fs', 'fs')
|
|
57
|
+
* @returns Normalized module name (e.g., 'fs')
|
|
58
|
+
*/
|
|
59
|
+
normalizeModule(moduleName: string): string {
|
|
60
|
+
if (moduleName.startsWith('node:')) {
|
|
61
|
+
return moduleName.slice(5); // Remove 'node:' prefix
|
|
62
|
+
}
|
|
63
|
+
return moduleName;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Get function definition by module and function name.
|
|
68
|
+
*
|
|
69
|
+
* @param module - Module name (e.g., 'fs', 'node:fs')
|
|
70
|
+
* @param funcName - Function name (e.g., 'readFile')
|
|
71
|
+
* @returns Function definition or null if not found
|
|
72
|
+
*/
|
|
73
|
+
getFunction(module: string, funcName: string): BuiltinFunctionDef | null {
|
|
74
|
+
const normalizedModule = this.normalizeModule(module);
|
|
75
|
+
const key = `${normalizedModule}:${funcName}`;
|
|
76
|
+
return this.functions.get(key) || null;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Check if function is a known builtin function.
|
|
81
|
+
*
|
|
82
|
+
* @param module - Module name
|
|
83
|
+
* @param funcName - Function name
|
|
84
|
+
* @returns true if function is known
|
|
85
|
+
*/
|
|
86
|
+
isKnownFunction(module: string, funcName: string): boolean {
|
|
87
|
+
return this.getFunction(module, funcName) !== null;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Get all functions for a module.
|
|
92
|
+
*
|
|
93
|
+
* @param module - Module name
|
|
94
|
+
* @returns Array of function definitions (empty if module not found)
|
|
95
|
+
*/
|
|
96
|
+
getAllFunctions(module: string): BuiltinFunctionDef[] {
|
|
97
|
+
const normalizedModule = this.normalizeModule(module);
|
|
98
|
+
const mod = this.modules.get(normalizedModule);
|
|
99
|
+
return mod ? mod.functions : [];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* List all supported builtin module names.
|
|
104
|
+
*
|
|
105
|
+
* @returns Array of module names
|
|
106
|
+
*/
|
|
107
|
+
listModules(): string[] {
|
|
108
|
+
return Array.from(this.modules.keys());
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Create node ID for EXTERNAL_FUNCTION node.
|
|
113
|
+
*
|
|
114
|
+
* Format: EXTERNAL_FUNCTION:{module}.{funcName}
|
|
115
|
+
*
|
|
116
|
+
* @param module - Module name (will be normalized)
|
|
117
|
+
* @param funcName - Function name
|
|
118
|
+
* @returns Node ID string
|
|
119
|
+
*/
|
|
120
|
+
createNodeId(module: string, funcName: string): string {
|
|
121
|
+
const normalizedModule = this.normalizeModule(module);
|
|
122
|
+
return `EXTERNAL_FUNCTION:${normalizedModule}.${funcName}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js Builtin Definitions (REG-218)
|
|
3
|
+
*
|
|
4
|
+
* Tier 1 builtin module definitions:
|
|
5
|
+
* - fs (filesystem)
|
|
6
|
+
* - fs/promises (async filesystem)
|
|
7
|
+
* - path (path manipulation)
|
|
8
|
+
* - http/https (network)
|
|
9
|
+
* - crypto (cryptography)
|
|
10
|
+
* - child_process (process execution)
|
|
11
|
+
*
|
|
12
|
+
* Additional modules (Tier 2):
|
|
13
|
+
* - url, util, os, events, stream, buffer, worker_threads
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { BuiltinModuleDef } from './types.js';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Tier 1: Core Node.js modules (most commonly used)
|
|
20
|
+
*/
|
|
21
|
+
export const TIER_1_MODULES: BuiltinModuleDef[] = [
|
|
22
|
+
// fs - Filesystem operations
|
|
23
|
+
{
|
|
24
|
+
name: 'fs',
|
|
25
|
+
functions: [
|
|
26
|
+
{ name: 'readFile', module: 'fs', security: 'file-io', pure: false },
|
|
27
|
+
{ name: 'readFileSync', module: 'fs', security: 'file-io', pure: false },
|
|
28
|
+
{ name: 'writeFile', module: 'fs', security: 'file-io', pure: false },
|
|
29
|
+
{ name: 'writeFileSync', module: 'fs', security: 'file-io', pure: false },
|
|
30
|
+
{ name: 'appendFile', module: 'fs', security: 'file-io', pure: false },
|
|
31
|
+
{ name: 'appendFileSync', module: 'fs', security: 'file-io', pure: false },
|
|
32
|
+
{ name: 'readdir', module: 'fs', security: 'file-io', pure: false },
|
|
33
|
+
{ name: 'readdirSync', module: 'fs', security: 'file-io', pure: false },
|
|
34
|
+
{ name: 'mkdir', module: 'fs', security: 'file-io', pure: false },
|
|
35
|
+
{ name: 'mkdirSync', module: 'fs', security: 'file-io', pure: false },
|
|
36
|
+
{ name: 'rmdir', module: 'fs', security: 'file-io', pure: false },
|
|
37
|
+
{ name: 'rmdirSync', module: 'fs', security: 'file-io', pure: false },
|
|
38
|
+
{ name: 'rm', module: 'fs', security: 'file-io', pure: false },
|
|
39
|
+
{ name: 'rmSync', module: 'fs', security: 'file-io', pure: false },
|
|
40
|
+
{ name: 'unlink', module: 'fs', security: 'file-io', pure: false },
|
|
41
|
+
{ name: 'unlinkSync', module: 'fs', security: 'file-io', pure: false },
|
|
42
|
+
{ name: 'stat', module: 'fs', security: 'file-io', pure: false },
|
|
43
|
+
{ name: 'statSync', module: 'fs', security: 'file-io', pure: false },
|
|
44
|
+
{ name: 'lstat', module: 'fs', security: 'file-io', pure: false },
|
|
45
|
+
{ name: 'lstatSync', module: 'fs', security: 'file-io', pure: false },
|
|
46
|
+
{ name: 'access', module: 'fs', security: 'file-io', pure: false },
|
|
47
|
+
{ name: 'accessSync', module: 'fs', security: 'file-io', pure: false },
|
|
48
|
+
{ name: 'chmod', module: 'fs', security: 'file-io', pure: false },
|
|
49
|
+
{ name: 'chmodSync', module: 'fs', security: 'file-io', pure: false },
|
|
50
|
+
{ name: 'chown', module: 'fs', security: 'file-io', pure: false },
|
|
51
|
+
{ name: 'chownSync', module: 'fs', security: 'file-io', pure: false },
|
|
52
|
+
{ name: 'rename', module: 'fs', security: 'file-io', pure: false },
|
|
53
|
+
{ name: 'renameSync', module: 'fs', security: 'file-io', pure: false },
|
|
54
|
+
{ name: 'copyFile', module: 'fs', security: 'file-io', pure: false },
|
|
55
|
+
{ name: 'copyFileSync', module: 'fs', security: 'file-io', pure: false },
|
|
56
|
+
{ name: 'createReadStream', module: 'fs', security: 'file-io', pure: false },
|
|
57
|
+
{ name: 'createWriteStream', module: 'fs', security: 'file-io', pure: false },
|
|
58
|
+
{ name: 'watch', module: 'fs', security: 'file-io', pure: false },
|
|
59
|
+
{ name: 'watchFile', module: 'fs', security: 'file-io', pure: false },
|
|
60
|
+
{ name: 'existsSync', module: 'fs', security: 'file-io', pure: false },
|
|
61
|
+
{ name: 'truncate', module: 'fs', security: 'file-io', pure: false },
|
|
62
|
+
{ name: 'truncateSync', module: 'fs', security: 'file-io', pure: false },
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
// fs/promises - Async filesystem operations
|
|
67
|
+
{
|
|
68
|
+
name: 'fs/promises',
|
|
69
|
+
functions: [
|
|
70
|
+
{ name: 'readFile', module: 'fs/promises', security: 'file-io', pure: false },
|
|
71
|
+
{ name: 'writeFile', module: 'fs/promises', security: 'file-io', pure: false },
|
|
72
|
+
{ name: 'appendFile', module: 'fs/promises', security: 'file-io', pure: false },
|
|
73
|
+
{ name: 'readdir', module: 'fs/promises', security: 'file-io', pure: false },
|
|
74
|
+
{ name: 'mkdir', module: 'fs/promises', security: 'file-io', pure: false },
|
|
75
|
+
{ name: 'rmdir', module: 'fs/promises', security: 'file-io', pure: false },
|
|
76
|
+
{ name: 'rm', module: 'fs/promises', security: 'file-io', pure: false },
|
|
77
|
+
{ name: 'unlink', module: 'fs/promises', security: 'file-io', pure: false },
|
|
78
|
+
{ name: 'stat', module: 'fs/promises', security: 'file-io', pure: false },
|
|
79
|
+
{ name: 'lstat', module: 'fs/promises', security: 'file-io', pure: false },
|
|
80
|
+
{ name: 'access', module: 'fs/promises', security: 'file-io', pure: false },
|
|
81
|
+
{ name: 'chmod', module: 'fs/promises', security: 'file-io', pure: false },
|
|
82
|
+
{ name: 'chown', module: 'fs/promises', security: 'file-io', pure: false },
|
|
83
|
+
{ name: 'rename', module: 'fs/promises', security: 'file-io', pure: false },
|
|
84
|
+
{ name: 'copyFile', module: 'fs/promises', security: 'file-io', pure: false },
|
|
85
|
+
{ name: 'truncate', module: 'fs/promises', security: 'file-io', pure: false },
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
// path - Path manipulation (pure functions)
|
|
90
|
+
{
|
|
91
|
+
name: 'path',
|
|
92
|
+
functions: [
|
|
93
|
+
{ name: 'join', module: 'path', pure: true },
|
|
94
|
+
{ name: 'resolve', module: 'path', pure: true },
|
|
95
|
+
{ name: 'normalize', module: 'path', pure: true },
|
|
96
|
+
{ name: 'basename', module: 'path', pure: true },
|
|
97
|
+
{ name: 'dirname', module: 'path', pure: true },
|
|
98
|
+
{ name: 'extname', module: 'path', pure: true },
|
|
99
|
+
{ name: 'parse', module: 'path', pure: true },
|
|
100
|
+
{ name: 'format', module: 'path', pure: true },
|
|
101
|
+
{ name: 'relative', module: 'path', pure: true },
|
|
102
|
+
{ name: 'isAbsolute', module: 'path', pure: true },
|
|
103
|
+
{ name: 'sep', module: 'path', pure: true },
|
|
104
|
+
{ name: 'delimiter', module: 'path', pure: true },
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
// http - HTTP server/client
|
|
109
|
+
{
|
|
110
|
+
name: 'http',
|
|
111
|
+
functions: [
|
|
112
|
+
{ name: 'createServer', module: 'http', security: 'net', pure: false },
|
|
113
|
+
{ name: 'request', module: 'http', security: 'net', pure: false },
|
|
114
|
+
{ name: 'get', module: 'http', security: 'net', pure: false },
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
// https - HTTPS server/client
|
|
119
|
+
{
|
|
120
|
+
name: 'https',
|
|
121
|
+
functions: [
|
|
122
|
+
{ name: 'createServer', module: 'https', security: 'net', pure: false },
|
|
123
|
+
{ name: 'request', module: 'https', security: 'net', pure: false },
|
|
124
|
+
{ name: 'get', module: 'https', security: 'net', pure: false },
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
// crypto - Cryptographic operations
|
|
129
|
+
{
|
|
130
|
+
name: 'crypto',
|
|
131
|
+
functions: [
|
|
132
|
+
{ name: 'createHash', module: 'crypto', security: 'crypto', pure: false },
|
|
133
|
+
{ name: 'createHmac', module: 'crypto', security: 'crypto', pure: false },
|
|
134
|
+
{ name: 'createCipher', module: 'crypto', security: 'crypto', pure: false },
|
|
135
|
+
{ name: 'createDecipher', module: 'crypto', security: 'crypto', pure: false },
|
|
136
|
+
{ name: 'createCipheriv', module: 'crypto', security: 'crypto', pure: false },
|
|
137
|
+
{ name: 'createDecipheriv', module: 'crypto', security: 'crypto', pure: false },
|
|
138
|
+
{ name: 'randomBytes', module: 'crypto', security: 'crypto', pure: false },
|
|
139
|
+
{ name: 'randomFill', module: 'crypto', security: 'crypto', pure: false },
|
|
140
|
+
{ name: 'randomFillSync', module: 'crypto', security: 'crypto', pure: false },
|
|
141
|
+
{ name: 'randomUUID', module: 'crypto', security: 'crypto', pure: false },
|
|
142
|
+
{ name: 'pbkdf2', module: 'crypto', security: 'crypto', pure: false },
|
|
143
|
+
{ name: 'pbkdf2Sync', module: 'crypto', security: 'crypto', pure: false },
|
|
144
|
+
{ name: 'scrypt', module: 'crypto', security: 'crypto', pure: false },
|
|
145
|
+
{ name: 'scryptSync', module: 'crypto', security: 'crypto', pure: false },
|
|
146
|
+
{ name: 'generateKey', module: 'crypto', security: 'crypto', pure: false },
|
|
147
|
+
{ name: 'generateKeyPair', module: 'crypto', security: 'crypto', pure: false },
|
|
148
|
+
{ name: 'generateKeyPairSync', module: 'crypto', security: 'crypto', pure: false },
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
// child_process - Process execution (SECURITY SENSITIVE)
|
|
153
|
+
{
|
|
154
|
+
name: 'child_process',
|
|
155
|
+
functions: [
|
|
156
|
+
{ name: 'exec', module: 'child_process', security: 'exec', pure: false },
|
|
157
|
+
{ name: 'execSync', module: 'child_process', security: 'exec', pure: false },
|
|
158
|
+
{ name: 'execFile', module: 'child_process', security: 'exec', pure: false },
|
|
159
|
+
{ name: 'execFileSync', module: 'child_process', security: 'exec', pure: false },
|
|
160
|
+
{ name: 'spawn', module: 'child_process', security: 'exec', pure: false },
|
|
161
|
+
{ name: 'spawnSync', module: 'child_process', security: 'exec', pure: false },
|
|
162
|
+
{ name: 'fork', module: 'child_process', security: 'exec', pure: false },
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Tier 2: Additional commonly used modules
|
|
169
|
+
*/
|
|
170
|
+
export const TIER_2_MODULES: BuiltinModuleDef[] = [
|
|
171
|
+
// url - URL parsing
|
|
172
|
+
{
|
|
173
|
+
name: 'url',
|
|
174
|
+
functions: [
|
|
175
|
+
{ name: 'parse', module: 'url', pure: true },
|
|
176
|
+
{ name: 'format', module: 'url', pure: true },
|
|
177
|
+
{ name: 'resolve', module: 'url', pure: true },
|
|
178
|
+
{ name: 'fileURLToPath', module: 'url', pure: true },
|
|
179
|
+
{ name: 'pathToFileURL', module: 'url', pure: true },
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
// util - Utilities
|
|
184
|
+
{
|
|
185
|
+
name: 'util',
|
|
186
|
+
functions: [
|
|
187
|
+
{ name: 'promisify', module: 'util', pure: true },
|
|
188
|
+
{ name: 'callbackify', module: 'util', pure: true },
|
|
189
|
+
{ name: 'inspect', module: 'util', pure: true },
|
|
190
|
+
{ name: 'format', module: 'util', pure: true },
|
|
191
|
+
{ name: 'deprecate', module: 'util', pure: false },
|
|
192
|
+
{ name: 'inherits', module: 'util', pure: false },
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
|
|
196
|
+
// os - Operating system info
|
|
197
|
+
{
|
|
198
|
+
name: 'os',
|
|
199
|
+
functions: [
|
|
200
|
+
{ name: 'platform', module: 'os', pure: true },
|
|
201
|
+
{ name: 'arch', module: 'os', pure: true },
|
|
202
|
+
{ name: 'cpus', module: 'os', pure: false },
|
|
203
|
+
{ name: 'hostname', module: 'os', pure: false },
|
|
204
|
+
{ name: 'homedir', module: 'os', pure: false },
|
|
205
|
+
{ name: 'tmpdir', module: 'os', pure: false },
|
|
206
|
+
{ name: 'type', module: 'os', pure: true },
|
|
207
|
+
{ name: 'release', module: 'os', pure: true },
|
|
208
|
+
{ name: 'totalmem', module: 'os', pure: false },
|
|
209
|
+
{ name: 'freemem', module: 'os', pure: false },
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
// events - Event emitter
|
|
214
|
+
{
|
|
215
|
+
name: 'events',
|
|
216
|
+
functions: [
|
|
217
|
+
{ name: 'EventEmitter', module: 'events', pure: false },
|
|
218
|
+
{ name: 'once', module: 'events', pure: false },
|
|
219
|
+
{ name: 'on', module: 'events', pure: false },
|
|
220
|
+
]
|
|
221
|
+
},
|
|
222
|
+
|
|
223
|
+
// stream - Streams
|
|
224
|
+
{
|
|
225
|
+
name: 'stream',
|
|
226
|
+
functions: [
|
|
227
|
+
{ name: 'Readable', module: 'stream', pure: false },
|
|
228
|
+
{ name: 'Writable', module: 'stream', pure: false },
|
|
229
|
+
{ name: 'Duplex', module: 'stream', pure: false },
|
|
230
|
+
{ name: 'Transform', module: 'stream', pure: false },
|
|
231
|
+
{ name: 'pipeline', module: 'stream', pure: false },
|
|
232
|
+
{ name: 'finished', module: 'stream', pure: false },
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
// buffer - Buffer operations
|
|
237
|
+
{
|
|
238
|
+
name: 'buffer',
|
|
239
|
+
functions: [
|
|
240
|
+
{ name: 'Buffer', module: 'buffer', pure: false },
|
|
241
|
+
{ name: 'alloc', module: 'buffer', pure: true },
|
|
242
|
+
{ name: 'allocUnsafe', module: 'buffer', pure: true },
|
|
243
|
+
{ name: 'from', module: 'buffer', pure: true },
|
|
244
|
+
{ name: 'concat', module: 'buffer', pure: true },
|
|
245
|
+
{ name: 'isBuffer', module: 'buffer', pure: true },
|
|
246
|
+
]
|
|
247
|
+
},
|
|
248
|
+
|
|
249
|
+
// worker_threads - Worker threads
|
|
250
|
+
{
|
|
251
|
+
name: 'worker_threads',
|
|
252
|
+
functions: [
|
|
253
|
+
{ name: 'Worker', module: 'worker_threads', pure: false },
|
|
254
|
+
{ name: 'isMainThread', module: 'worker_threads', pure: true },
|
|
255
|
+
{ name: 'parentPort', module: 'worker_threads', pure: false },
|
|
256
|
+
{ name: 'workerData', module: 'worker_threads', pure: false },
|
|
257
|
+
]
|
|
258
|
+
},
|
|
259
|
+
];
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* All builtin modules combined
|
|
263
|
+
*/
|
|
264
|
+
export const ALL_BUILTIN_MODULES: BuiltinModuleDef[] = [
|
|
265
|
+
...TIER_1_MODULES,
|
|
266
|
+
...TIER_2_MODULES,
|
|
267
|
+
];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js Builtins Registry (REG-218)
|
|
3
|
+
*
|
|
4
|
+
* Exports for builtin function registry.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { BuiltinRegistry } from './BuiltinRegistry.js';
|
|
8
|
+
export type { BuiltinFunctionDef, BuiltinModuleDef, SecurityCategory } from './types.js';
|
|
9
|
+
export { ALL_BUILTIN_MODULES, TIER_1_MODULES, TIER_2_MODULES } from './definitions.js';
|
|
10
|
+
export { JS_GLOBAL_FUNCTIONS } from './jsGlobals.js';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JavaScript Global Functions (REG-227)
|
|
3
|
+
*
|
|
4
|
+
* These are functions intrinsic to the JS runtime that don't need CALLS edges.
|
|
5
|
+
* They're available in all JS environments (browser, Node.js, etc.) and aren't
|
|
6
|
+
* "callable definitions" in the code sense.
|
|
7
|
+
*
|
|
8
|
+
* What is NOT included:
|
|
9
|
+
* - Constructors (Array, Object, Error) - handled as constructor calls
|
|
10
|
+
* - Objects with methods (Math, JSON) - method calls go through MethodCallResolver
|
|
11
|
+
* - Environment globals (window, document) - not functions, they're objects
|
|
12
|
+
*
|
|
13
|
+
* Used by:
|
|
14
|
+
* - ExternalCallResolver: skips these when resolving external calls
|
|
15
|
+
* - CallResolverValidator: recognizes these as resolved (no violation)
|
|
16
|
+
*/
|
|
17
|
+
export const JS_GLOBAL_FUNCTIONS = new Set([
|
|
18
|
+
// Global functions (truly called as standalone functions)
|
|
19
|
+
'parseInt', 'parseFloat', 'isNaN', 'isFinite', 'eval',
|
|
20
|
+
'encodeURI', 'decodeURI', 'encodeURIComponent', 'decodeURIComponent',
|
|
21
|
+
|
|
22
|
+
// Timers (global functions in browser & Node.js)
|
|
23
|
+
'setTimeout', 'setInterval', 'setImmediate',
|
|
24
|
+
'clearTimeout', 'clearInterval', 'clearImmediate',
|
|
25
|
+
|
|
26
|
+
// CommonJS (special case - global in CJS environments)
|
|
27
|
+
'require'
|
|
28
|
+
]);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuiltinRegistry Types (REG-218)
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for Node.js builtin function registry.
|
|
5
|
+
* Used for lazy EXTERNAL_FUNCTION node creation.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Security category for builtin functions.
|
|
10
|
+
* Used for security analysis and auditing.
|
|
11
|
+
*/
|
|
12
|
+
export type SecurityCategory = 'file-io' | 'exec' | 'net' | 'crypto';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Definition of a single builtin function.
|
|
16
|
+
*/
|
|
17
|
+
export interface BuiltinFunctionDef {
|
|
18
|
+
/** Function name (e.g., 'readFile') */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Module name (e.g., 'fs', 'path', 'fs/promises') */
|
|
21
|
+
module: string;
|
|
22
|
+
/** Security category (for dangerous functions) */
|
|
23
|
+
security?: SecurityCategory;
|
|
24
|
+
/** Whether function is pure (no side effects) */
|
|
25
|
+
pure?: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Definition of a builtin module with its functions.
|
|
30
|
+
*/
|
|
31
|
+
export interface BuiltinModuleDef {
|
|
32
|
+
/** Module name (e.g., 'fs', 'path') */
|
|
33
|
+
name: string;
|
|
34
|
+
/** List of functions in this module */
|
|
35
|
+
functions: BuiltinFunctionDef[];
|
|
36
|
+
}
|