@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
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiagnosticReporter - Formats diagnostics for output
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple output formats:
|
|
5
|
+
* - text: Human-readable format with severity indicators
|
|
6
|
+
* - json: Machine-readable JSON format for CI integration
|
|
7
|
+
* - csv: Spreadsheet-compatible format
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const reporter = new DiagnosticReporter(collector);
|
|
11
|
+
* console.log(reporter.report({ format: 'text', includeSummary: true }));
|
|
12
|
+
* console.log(reporter.summary());
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Mapping from diagnostic codes to category information
|
|
16
|
+
*/
|
|
17
|
+
const DIAGNOSTIC_CODE_CATEGORIES = {
|
|
18
|
+
'ERR_DISCONNECTED_NODES': { name: 'disconnected nodes', checkCommand: 'grafema check connectivity' },
|
|
19
|
+
'ERR_DISCONNECTED_NODE': { name: 'disconnected nodes', checkCommand: 'grafema check connectivity' },
|
|
20
|
+
'ERR_UNRESOLVED_CALL': { name: 'unresolved calls', checkCommand: 'grafema check calls' },
|
|
21
|
+
'ERR_MISSING_ASSIGNMENT': { name: 'missing assignments', checkCommand: 'grafema check dataflow' },
|
|
22
|
+
'ERR_BROKEN_REFERENCE': { name: 'broken references', checkCommand: 'grafema check dataflow' },
|
|
23
|
+
'ERR_NO_LEAF_NODE': { name: 'incomplete traces', checkCommand: 'grafema check dataflow' },
|
|
24
|
+
'DISCONNECTED_NODES': { name: 'disconnected nodes', checkCommand: 'grafema check connectivity' },
|
|
25
|
+
'UNRESOLVED_FUNCTION_CALL': { name: 'unresolved calls', checkCommand: 'grafema check calls' },
|
|
26
|
+
'MISSING_ASSIGNMENT': { name: 'missing assignments', checkCommand: 'grafema check dataflow' },
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* DiagnosticReporter - formats diagnostics for different output formats
|
|
30
|
+
*/
|
|
31
|
+
export class DiagnosticReporter {
|
|
32
|
+
collector;
|
|
33
|
+
constructor(collector) {
|
|
34
|
+
this.collector = collector;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate a formatted report of all diagnostics.
|
|
38
|
+
*/
|
|
39
|
+
report(options) {
|
|
40
|
+
const diagnostics = this.collector.getAll();
|
|
41
|
+
if (options.format === 'json') {
|
|
42
|
+
return this.jsonReport(diagnostics, options);
|
|
43
|
+
}
|
|
44
|
+
else if (options.format === 'csv') {
|
|
45
|
+
return this.csvReport(diagnostics);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return this.textReport(diagnostics, options);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate a human-readable summary of diagnostic counts.
|
|
53
|
+
*/
|
|
54
|
+
summary() {
|
|
55
|
+
const stats = this.getStats();
|
|
56
|
+
if (stats.total === 0) {
|
|
57
|
+
return 'No issues found.';
|
|
58
|
+
}
|
|
59
|
+
const parts = [];
|
|
60
|
+
if (stats.fatal > 0) {
|
|
61
|
+
parts.push(`Fatal: ${stats.fatal}`);
|
|
62
|
+
}
|
|
63
|
+
if (stats.errors > 0) {
|
|
64
|
+
parts.push(`Errors: ${stats.errors}`);
|
|
65
|
+
}
|
|
66
|
+
if (stats.warnings > 0) {
|
|
67
|
+
parts.push(`Warnings: ${stats.warnings}`);
|
|
68
|
+
}
|
|
69
|
+
return parts.join(', ');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Generate a categorized summary with actionable commands.
|
|
73
|
+
*/
|
|
74
|
+
categorizedSummary() {
|
|
75
|
+
const stats = this.getCategorizedStats();
|
|
76
|
+
if (stats.total === 0) {
|
|
77
|
+
return 'No issues found.';
|
|
78
|
+
}
|
|
79
|
+
const lines = [];
|
|
80
|
+
// Severity totals (same format as summary())
|
|
81
|
+
const severityParts = [];
|
|
82
|
+
if (stats.fatal > 0) {
|
|
83
|
+
severityParts.push(`Fatal: ${stats.fatal}`);
|
|
84
|
+
}
|
|
85
|
+
if (stats.errors > 0) {
|
|
86
|
+
severityParts.push(`Errors: ${stats.errors}`);
|
|
87
|
+
}
|
|
88
|
+
if (stats.warnings > 0) {
|
|
89
|
+
severityParts.push(`Warnings: ${stats.warnings}`);
|
|
90
|
+
}
|
|
91
|
+
lines.push(severityParts.join(', '));
|
|
92
|
+
// Top 5 categories
|
|
93
|
+
const topCategories = stats.byCode.slice(0, 5);
|
|
94
|
+
for (const category of topCategories) {
|
|
95
|
+
lines.push(` - ${category.count} ${category.name} (run \`${category.checkCommand}\`)`);
|
|
96
|
+
}
|
|
97
|
+
// "Other issues" if more than 5 categories
|
|
98
|
+
if (stats.byCode.length > 5) {
|
|
99
|
+
const remainingCount = stats.byCode.slice(5).reduce((sum, cat) => sum + cat.count, 0);
|
|
100
|
+
const issueWord = remainingCount === 1 ? 'other issue' : 'other issues';
|
|
101
|
+
lines.push(` - ${remainingCount} ${issueWord}`);
|
|
102
|
+
}
|
|
103
|
+
// Footer
|
|
104
|
+
lines.push('');
|
|
105
|
+
lines.push('Run `grafema check --all` for full diagnostics.');
|
|
106
|
+
return lines.join('\n');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get diagnostic statistics by severity.
|
|
110
|
+
*/
|
|
111
|
+
getStats() {
|
|
112
|
+
const diagnostics = this.collector.getAll();
|
|
113
|
+
return {
|
|
114
|
+
total: diagnostics.length,
|
|
115
|
+
fatal: diagnostics.filter(d => d.severity === 'fatal').length,
|
|
116
|
+
errors: diagnostics.filter(d => d.severity === 'error').length,
|
|
117
|
+
warnings: diagnostics.filter(d => d.severity === 'warning').length,
|
|
118
|
+
info: diagnostics.filter(d => d.severity === 'info').length,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get diagnostic statistics grouped by category.
|
|
123
|
+
*/
|
|
124
|
+
getCategorizedStats() {
|
|
125
|
+
const diagnostics = this.collector.getAll();
|
|
126
|
+
// Get severity stats
|
|
127
|
+
const severityStats = {
|
|
128
|
+
total: diagnostics.length,
|
|
129
|
+
fatal: diagnostics.filter(d => d.severity === 'fatal').length,
|
|
130
|
+
errors: diagnostics.filter(d => d.severity === 'error').length,
|
|
131
|
+
warnings: diagnostics.filter(d => d.severity === 'warning').length,
|
|
132
|
+
info: diagnostics.filter(d => d.severity === 'info').length,
|
|
133
|
+
};
|
|
134
|
+
// Group by code
|
|
135
|
+
const codeMap = new Map();
|
|
136
|
+
for (const diag of diagnostics) {
|
|
137
|
+
const count = codeMap.get(diag.code) || 0;
|
|
138
|
+
codeMap.set(diag.code, count + 1);
|
|
139
|
+
}
|
|
140
|
+
// Convert to CategoryCount array with metadata
|
|
141
|
+
const byCode = [];
|
|
142
|
+
for (const [code, count] of codeMap.entries()) {
|
|
143
|
+
const category = DIAGNOSTIC_CODE_CATEGORIES[code];
|
|
144
|
+
byCode.push({
|
|
145
|
+
code,
|
|
146
|
+
count,
|
|
147
|
+
name: category?.name || code,
|
|
148
|
+
checkCommand: category?.checkCommand || 'grafema check --all',
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// Sort by count descending
|
|
152
|
+
byCode.sort((a, b) => b.count - a.count);
|
|
153
|
+
return {
|
|
154
|
+
...severityStats,
|
|
155
|
+
byCode,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Generate human-readable text report.
|
|
160
|
+
*/
|
|
161
|
+
textReport(diagnostics, options) {
|
|
162
|
+
if (diagnostics.length === 0) {
|
|
163
|
+
return 'No issues found.';
|
|
164
|
+
}
|
|
165
|
+
const lines = [];
|
|
166
|
+
for (const diag of diagnostics) {
|
|
167
|
+
const icon = this.getSeverityIcon(diag.severity);
|
|
168
|
+
const location = this.formatLocation(diag);
|
|
169
|
+
lines.push(`${icon} ${diag.code} ${location} ${diag.message}`);
|
|
170
|
+
if (diag.suggestion) {
|
|
171
|
+
lines.push(` Suggestion: ${diag.suggestion}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (options.includeSummary) {
|
|
175
|
+
lines.push('');
|
|
176
|
+
lines.push(this.summary());
|
|
177
|
+
}
|
|
178
|
+
return lines.join('\n');
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Generate JSON report.
|
|
182
|
+
*/
|
|
183
|
+
jsonReport(diagnostics, options) {
|
|
184
|
+
const result = {
|
|
185
|
+
diagnostics,
|
|
186
|
+
};
|
|
187
|
+
if (options.includeSummary) {
|
|
188
|
+
result.summary = this.getStats();
|
|
189
|
+
}
|
|
190
|
+
return JSON.stringify(result, null, 2);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Generate CSV report.
|
|
194
|
+
*/
|
|
195
|
+
csvReport(diagnostics) {
|
|
196
|
+
const header = 'severity,code,file,line,message,plugin,phase,suggestion';
|
|
197
|
+
const rows = diagnostics.map(d => [
|
|
198
|
+
d.severity,
|
|
199
|
+
d.code,
|
|
200
|
+
d.file || '',
|
|
201
|
+
d.line || '',
|
|
202
|
+
this.csvEscape(d.message),
|
|
203
|
+
d.plugin,
|
|
204
|
+
d.phase,
|
|
205
|
+
d.suggestion ? this.csvEscape(d.suggestion) : '',
|
|
206
|
+
].join(','));
|
|
207
|
+
return [header, ...rows].join('\n');
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get severity indicator for text output.
|
|
211
|
+
*/
|
|
212
|
+
getSeverityIcon(severity) {
|
|
213
|
+
switch (severity) {
|
|
214
|
+
case 'fatal':
|
|
215
|
+
return '[FATAL]';
|
|
216
|
+
case 'error':
|
|
217
|
+
return '[ERROR]';
|
|
218
|
+
case 'warning':
|
|
219
|
+
return '[WARN]';
|
|
220
|
+
case 'info':
|
|
221
|
+
return '[INFO]';
|
|
222
|
+
default:
|
|
223
|
+
return '[?]';
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Format file location for display.
|
|
228
|
+
*/
|
|
229
|
+
formatLocation(diag) {
|
|
230
|
+
if (!diag.file) {
|
|
231
|
+
return '';
|
|
232
|
+
}
|
|
233
|
+
if (diag.line) {
|
|
234
|
+
return `(${diag.file}:${diag.line})`;
|
|
235
|
+
}
|
|
236
|
+
return `(${diag.file})`;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Escape a value for CSV output.
|
|
240
|
+
* Wraps in quotes and escapes internal quotes.
|
|
241
|
+
*/
|
|
242
|
+
csvEscape(value) {
|
|
243
|
+
// Always quote to handle commas and special characters
|
|
244
|
+
const escaped = value.replace(/"/g, '""');
|
|
245
|
+
return `"${escaped}"`;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiagnosticWriter - Writes diagnostics to .grafema/diagnostics.log
|
|
3
|
+
*
|
|
4
|
+
* Writes diagnostics in JSON lines format (one JSON object per line).
|
|
5
|
+
* This format is:
|
|
6
|
+
* - Easy to parse line-by-line
|
|
7
|
+
* - Appendable without reading entire file
|
|
8
|
+
* - Compatible with streaming tools (grep, jq, etc.)
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* const writer = new DiagnosticWriter();
|
|
12
|
+
* await writer.write(collector, '/project/.grafema');
|
|
13
|
+
*/
|
|
14
|
+
import type { DiagnosticCollector } from './DiagnosticCollector.js';
|
|
15
|
+
/**
|
|
16
|
+
* DiagnosticWriter - writes diagnostics.log file
|
|
17
|
+
*/
|
|
18
|
+
export declare class DiagnosticWriter {
|
|
19
|
+
/**
|
|
20
|
+
* Write all diagnostics to .grafema/diagnostics.log
|
|
21
|
+
*
|
|
22
|
+
* Creates the directory if it doesn't exist.
|
|
23
|
+
* Overwrites existing file.
|
|
24
|
+
*/
|
|
25
|
+
write(collector: DiagnosticCollector, grafemaDir: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Get the path to the diagnostics.log file
|
|
28
|
+
*/
|
|
29
|
+
getLogPath(grafemaDir: string): string;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=DiagnosticWriter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagnosticWriter.d.ts","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACG,KAAK,CAAC,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAGvC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiagnosticWriter - Writes diagnostics to .grafema/diagnostics.log
|
|
3
|
+
*
|
|
4
|
+
* Writes diagnostics in JSON lines format (one JSON object per line).
|
|
5
|
+
* This format is:
|
|
6
|
+
* - Easy to parse line-by-line
|
|
7
|
+
* - Appendable without reading entire file
|
|
8
|
+
* - Compatible with streaming tools (grep, jq, etc.)
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* const writer = new DiagnosticWriter();
|
|
12
|
+
* await writer.write(collector, '/project/.grafema');
|
|
13
|
+
*/
|
|
14
|
+
import { writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
15
|
+
import { join, dirname } from 'path';
|
|
16
|
+
/**
|
|
17
|
+
* DiagnosticWriter - writes diagnostics.log file
|
|
18
|
+
*/
|
|
19
|
+
export class DiagnosticWriter {
|
|
20
|
+
/**
|
|
21
|
+
* Write all diagnostics to .grafema/diagnostics.log
|
|
22
|
+
*
|
|
23
|
+
* Creates the directory if it doesn't exist.
|
|
24
|
+
* Overwrites existing file.
|
|
25
|
+
*/
|
|
26
|
+
async write(collector, grafemaDir) {
|
|
27
|
+
const logPath = this.getLogPath(grafemaDir);
|
|
28
|
+
// Create directory if it doesn't exist
|
|
29
|
+
const dir = dirname(logPath);
|
|
30
|
+
if (!existsSync(dir)) {
|
|
31
|
+
mkdirSync(dir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
// Write diagnostics as JSON lines
|
|
34
|
+
const content = collector.toDiagnosticsLog();
|
|
35
|
+
writeFileSync(logPath, content, 'utf-8');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the path to the diagnostics.log file
|
|
39
|
+
*/
|
|
40
|
+
getLogPath(grafemaDir) {
|
|
41
|
+
return join(grafemaDir, 'diagnostics.log');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostics - Error collection, reporting, and logging
|
|
3
|
+
*
|
|
4
|
+
* This module provides the diagnostics infrastructure for Grafema:
|
|
5
|
+
* - DiagnosticCollector: Collects errors from plugin execution
|
|
6
|
+
* - DiagnosticReporter: Formats diagnostics for output (text/json/csv)
|
|
7
|
+
* - DiagnosticWriter: Writes diagnostics.log file
|
|
8
|
+
*/
|
|
9
|
+
export { DiagnosticCollector } from './DiagnosticCollector.js';
|
|
10
|
+
export type { Diagnostic, DiagnosticInput } from './DiagnosticCollector.js';
|
|
11
|
+
export { DiagnosticReporter } from './DiagnosticReporter.js';
|
|
12
|
+
export type { ReportOptions, SummaryStats, CategoryCount, CategorizedSummaryStats } from './DiagnosticReporter.js';
|
|
13
|
+
export { DiagnosticWriter } from './DiagnosticWriter.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEnH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostics - Error collection, reporting, and logging
|
|
3
|
+
*
|
|
4
|
+
* This module provides the diagnostics infrastructure for Grafema:
|
|
5
|
+
* - DiagnosticCollector: Collects errors from plugin execution
|
|
6
|
+
* - DiagnosticReporter: Formats diagnostics for output (text/json/csv)
|
|
7
|
+
* - DiagnosticWriter: Writes diagnostics.log file
|
|
8
|
+
*/
|
|
9
|
+
export { DiagnosticCollector } from './DiagnosticCollector.js';
|
|
10
|
+
export { DiagnosticReporter } from './DiagnosticReporter.js';
|
|
11
|
+
export { DiagnosticWriter } from './DiagnosticWriter.js';
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GrafemaError - Error hierarchy for Grafema
|
|
3
|
+
*
|
|
4
|
+
* All errors extend the native JavaScript Error class for compatibility
|
|
5
|
+
* with PluginResult.errors[] (Error[]).
|
|
6
|
+
*
|
|
7
|
+
* Error types:
|
|
8
|
+
* - ConfigError: Configuration parsing/validation errors (fatal)
|
|
9
|
+
* - FileAccessError: File system access errors (error)
|
|
10
|
+
* - LanguageError: Unsupported language/parsing errors (warning)
|
|
11
|
+
* - DatabaseError: RFDB database errors (fatal)
|
|
12
|
+
* - PluginError: Plugin execution errors (error)
|
|
13
|
+
* - AnalysisError: Analysis/timeout errors (error)
|
|
14
|
+
*/
|
|
15
|
+
import type { PluginPhase } from '@grafema/types';
|
|
16
|
+
/**
|
|
17
|
+
* Context for error reporting
|
|
18
|
+
*/
|
|
19
|
+
export interface ErrorContext {
|
|
20
|
+
filePath?: string;
|
|
21
|
+
lineNumber?: number;
|
|
22
|
+
phase?: PluginPhase;
|
|
23
|
+
plugin?: string;
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* JSON representation of GrafemaError
|
|
28
|
+
*/
|
|
29
|
+
export interface GrafemaErrorJSON {
|
|
30
|
+
code: string;
|
|
31
|
+
severity: 'fatal' | 'error' | 'warning';
|
|
32
|
+
message: string;
|
|
33
|
+
context: ErrorContext;
|
|
34
|
+
suggestion?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Abstract base class for all Grafema errors.
|
|
38
|
+
*
|
|
39
|
+
* Extends native Error for compatibility with PluginResult.errors[].
|
|
40
|
+
*/
|
|
41
|
+
export declare abstract class GrafemaError extends Error {
|
|
42
|
+
abstract readonly code: string;
|
|
43
|
+
abstract readonly severity: 'fatal' | 'error' | 'warning';
|
|
44
|
+
readonly context: ErrorContext;
|
|
45
|
+
readonly suggestion?: string;
|
|
46
|
+
constructor(message: string, context?: ErrorContext, suggestion?: string);
|
|
47
|
+
/**
|
|
48
|
+
* Serialize error to JSON for diagnostics.log
|
|
49
|
+
*/
|
|
50
|
+
toJSON(): GrafemaErrorJSON;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Configuration error - config.json parsing, validation, missing required fields
|
|
54
|
+
*
|
|
55
|
+
* Severity: fatal (always)
|
|
56
|
+
* Codes: ERR_CONFIG_INVALID, ERR_CONFIG_MISSING_FIELD
|
|
57
|
+
*/
|
|
58
|
+
export declare class ConfigError extends GrafemaError {
|
|
59
|
+
readonly code: string;
|
|
60
|
+
readonly severity: "fatal";
|
|
61
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* File access error - unreadable files, missing git, permissions
|
|
65
|
+
*
|
|
66
|
+
* Severity: error (default)
|
|
67
|
+
* Codes: ERR_FILE_UNREADABLE, ERR_GIT_NOT_FOUND, ERR_GIT_ACCESS_DENIED
|
|
68
|
+
*/
|
|
69
|
+
export declare class FileAccessError extends GrafemaError {
|
|
70
|
+
readonly code: string;
|
|
71
|
+
readonly severity: "error";
|
|
72
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Language error - unsupported file type, unparseable syntax
|
|
76
|
+
*
|
|
77
|
+
* Severity: warning (always)
|
|
78
|
+
* Codes: ERR_UNSUPPORTED_LANG, ERR_PARSE_FAILURE
|
|
79
|
+
*/
|
|
80
|
+
export declare class LanguageError extends GrafemaError {
|
|
81
|
+
readonly code: string;
|
|
82
|
+
readonly severity: "warning";
|
|
83
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Database error - RFDB connection, corruption, lock
|
|
87
|
+
*
|
|
88
|
+
* Severity: fatal (always)
|
|
89
|
+
* Codes: ERR_DATABASE_LOCKED, ERR_DATABASE_CORRUPTED
|
|
90
|
+
*/
|
|
91
|
+
export declare class DatabaseError extends GrafemaError {
|
|
92
|
+
readonly code: string;
|
|
93
|
+
readonly severity: "fatal";
|
|
94
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Plugin error - plugin execution failed, dependency missing
|
|
98
|
+
*
|
|
99
|
+
* Severity: error (default)
|
|
100
|
+
* Codes: ERR_PLUGIN_FAILED, ERR_PLUGIN_DEPENDENCY_MISSING
|
|
101
|
+
*/
|
|
102
|
+
export declare class PluginError extends GrafemaError {
|
|
103
|
+
readonly code: string;
|
|
104
|
+
readonly severity: "error";
|
|
105
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Analysis error - internal analyzer failure, timeout
|
|
109
|
+
*
|
|
110
|
+
* Severity: error (default)
|
|
111
|
+
* Codes: ERR_ANALYSIS_TIMEOUT, ERR_ANALYSIS_INTERNAL
|
|
112
|
+
*/
|
|
113
|
+
export declare class AnalysisError extends GrafemaError {
|
|
114
|
+
readonly code: string;
|
|
115
|
+
readonly severity: "error";
|
|
116
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Validation error - issues found by validators during VALIDATION phase
|
|
120
|
+
*
|
|
121
|
+
* Unlike other error classes, ValidationError has CONFIGURABLE severity because
|
|
122
|
+
* validators report issues of varying importance:
|
|
123
|
+
* - warning: informational issues (unresolved calls, missing assignments)
|
|
124
|
+
* - error: problems that may indicate bugs (broken references)
|
|
125
|
+
* - fatal: critical issues that should fail the analysis
|
|
126
|
+
*
|
|
127
|
+
* Codes:
|
|
128
|
+
* - ERR_UNRESOLVED_CALL: function call doesn't resolve to definition
|
|
129
|
+
* - ERR_DISCONNECTED_NODES: graph nodes not connected to root
|
|
130
|
+
* - ERR_DISCONNECTED_NODE: individual disconnected node
|
|
131
|
+
* - ERR_MISSING_ASSIGNMENT: variable has no ASSIGNED_FROM edge
|
|
132
|
+
* - ERR_BROKEN_REFERENCE: reference to non-existent node
|
|
133
|
+
* - ERR_NO_LEAF_NODE: data flow doesn't reach leaf node
|
|
134
|
+
*/
|
|
135
|
+
export declare class ValidationError extends GrafemaError {
|
|
136
|
+
readonly code: string;
|
|
137
|
+
readonly severity: 'fatal' | 'error' | 'warning';
|
|
138
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string, severity?: 'fatal' | 'error' | 'warning');
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Strict mode error - reported when strictMode=true and an enricher
|
|
142
|
+
* cannot resolve a reference.
|
|
143
|
+
*
|
|
144
|
+
* Unlike other errors, StrictModeError is used to collect issues that
|
|
145
|
+
* would normally be silently skipped. All collected StrictModeErrors
|
|
146
|
+
* cause analysis to fail after the ENRICHMENT phase completes.
|
|
147
|
+
*
|
|
148
|
+
* Severity: fatal (always)
|
|
149
|
+
* Codes:
|
|
150
|
+
* - STRICT_UNRESOLVED_METHOD: Method call cannot be resolved to definition
|
|
151
|
+
* - STRICT_UNRESOLVED_CALL: Function call cannot be resolved to definition
|
|
152
|
+
* - STRICT_UNRESOLVED_ARGUMENT: Argument cannot be linked to parameter
|
|
153
|
+
* - STRICT_ALIAS_DEPTH_EXCEEDED: Alias chain too deep (potential cycle)
|
|
154
|
+
* - STRICT_BROKEN_IMPORT: Import/re-export chain broken
|
|
155
|
+
*/
|
|
156
|
+
export declare class StrictModeError extends GrafemaError {
|
|
157
|
+
readonly code: string;
|
|
158
|
+
readonly severity: "fatal";
|
|
159
|
+
constructor(message: string, code: string, context?: ErrorContext, suggestion?: string);
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=GrafemaError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrafemaError.d.ts","sourceRoot":"","sources":["../../src/errors/GrafemaError.ts"],"names":[],"mappings":"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"}
|