@grafema/core 0.1.0-alpha.5 → 0.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/Orchestrator.d.ts +31 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +222 -27
- package/dist/config/ConfigLoader.d.ts +90 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +249 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/core/ASTWorker.d.ts +11 -36
- package/dist/core/ASTWorker.d.ts.map +1 -1
- package/dist/core/ASTWorker.js +93 -99
- package/dist/core/CoverageAnalyzer.d.ts +65 -0
- package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
- package/dist/core/CoverageAnalyzer.js +198 -0
- package/dist/core/FileExplainer.d.ts +101 -0
- package/dist/core/FileExplainer.d.ts.map +1 -0
- package/dist/core/FileExplainer.js +139 -0
- package/dist/core/FileNodeManager.d.ts +40 -0
- package/dist/core/FileNodeManager.d.ts.map +1 -0
- package/dist/core/FileNodeManager.js +84 -0
- package/dist/core/GraphFreshnessChecker.d.ts +33 -0
- package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
- package/dist/core/GraphFreshnessChecker.js +101 -0
- package/dist/core/HashUtils.d.ts +24 -0
- package/dist/core/HashUtils.d.ts.map +1 -0
- package/dist/core/HashUtils.js +45 -0
- package/dist/core/IncrementalReanalyzer.d.ts +36 -0
- package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
- package/dist/core/IncrementalReanalyzer.js +132 -0
- package/dist/core/NodeFactory.d.ts +266 -19
- package/dist/core/NodeFactory.d.ts.map +1 -1
- package/dist/core/NodeFactory.js +256 -21
- package/dist/core/ScopeTracker.d.ts +84 -0
- package/dist/core/ScopeTracker.d.ts.map +1 -0
- package/dist/core/ScopeTracker.js +116 -0
- package/dist/core/SemanticId.d.ts +90 -0
- package/dist/core/SemanticId.d.ts.map +1 -0
- package/dist/core/SemanticId.js +115 -0
- package/dist/core/VersionManager.d.ts.map +1 -1
- package/dist/core/VersionManager.js +3 -2
- package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
- package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ArrayLiteralNode.js +43 -0
- package/dist/core/nodes/BranchNode.d.ts +41 -0
- package/dist/core/nodes/BranchNode.d.ts.map +1 -0
- package/dist/core/nodes/BranchNode.js +82 -0
- package/dist/core/nodes/CallSiteNode.d.ts +30 -2
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
- package/dist/core/nodes/CallSiteNode.js +54 -4
- package/dist/core/nodes/CaseNode.d.ts +43 -0
- package/dist/core/nodes/CaseNode.d.ts.map +1 -0
- package/dist/core/nodes/CaseNode.js +81 -0
- package/dist/core/nodes/ClassNode.d.ts +34 -2
- package/dist/core/nodes/ClassNode.d.ts.map +1 -1
- package/dist/core/nodes/ClassNode.js +52 -4
- package/dist/core/nodes/ConstantNode.d.ts +2 -2
- package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
- package/dist/core/nodes/ConstantNode.js +6 -4
- package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
- package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
- package/dist/core/nodes/ConstructorCallNode.js +171 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
- package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
- package/dist/core/nodes/DatabaseQueryNode.js +5 -2
- package/dist/core/nodes/DecoratorNode.d.ts +42 -0
- package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
- package/dist/core/nodes/DecoratorNode.js +64 -0
- package/dist/core/nodes/EnumNode.d.ts +42 -0
- package/dist/core/nodes/EnumNode.d.ts.map +1 -0
- package/dist/core/nodes/EnumNode.js +56 -0
- package/dist/core/nodes/EventListenerNode.d.ts +4 -4
- package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
- package/dist/core/nodes/EventListenerNode.js +7 -4
- package/dist/core/nodes/ExportNode.d.ts +38 -2
- package/dist/core/nodes/ExportNode.d.ts.map +1 -1
- package/dist/core/nodes/ExportNode.js +54 -4
- package/dist/core/nodes/ExpressionNode.d.ts +97 -0
- package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
- package/dist/core/nodes/ExpressionNode.js +180 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
- package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalModuleNode.js +49 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
- package/dist/core/nodes/ExternalStdioNode.js +15 -8
- package/dist/core/nodes/FunctionNode.d.ts +36 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
- package/dist/core/nodes/FunctionNode.js +80 -1
- package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
- package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
- package/dist/core/nodes/HttpRequestNode.js +7 -4
- package/dist/core/nodes/ImportNode.d.ts +28 -6
- package/dist/core/nodes/ImportNode.d.ts.map +1 -1
- package/dist/core/nodes/ImportNode.js +43 -8
- package/dist/core/nodes/InterfaceNode.d.ts +46 -0
- package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
- package/dist/core/nodes/InterfaceNode.js +57 -0
- package/dist/core/nodes/IssueNode.d.ts +73 -0
- package/dist/core/nodes/IssueNode.d.ts.map +1 -0
- package/dist/core/nodes/IssueNode.js +129 -0
- package/dist/core/nodes/LiteralNode.d.ts +2 -2
- package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
- package/dist/core/nodes/LiteralNode.js +6 -4
- package/dist/core/nodes/MethodCallNode.d.ts +32 -2
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodCallNode.js +57 -4
- package/dist/core/nodes/MethodNode.d.ts +34 -2
- package/dist/core/nodes/MethodNode.d.ts.map +1 -1
- package/dist/core/nodes/MethodNode.js +55 -3
- package/dist/core/nodes/ModuleNode.d.ts +31 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
- package/dist/core/nodes/ModuleNode.js +37 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
- package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/NetworkRequestNode.js +65 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
- package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/ObjectLiteralNode.js +43 -0
- package/dist/core/nodes/ParameterNode.d.ts +2 -2
- package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
- package/dist/core/nodes/ParameterNode.js +5 -3
- package/dist/core/nodes/ScopeNode.d.ts +31 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
- package/dist/core/nodes/ScopeNode.js +49 -0
- package/dist/core/nodes/TypeNode.d.ts +36 -0
- package/dist/core/nodes/TypeNode.d.ts.map +1 -0
- package/dist/core/nodes/TypeNode.js +55 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
- package/dist/core/nodes/VariableDeclarationNode.js +48 -4
- package/dist/core/nodes/index.d.ts +15 -1
- package/dist/core/nodes/index.d.ts.map +1 -1
- package/dist/core/nodes/index.js +17 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
- package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
- package/dist/data/builtins/BuiltinRegistry.js +110 -0
- package/dist/data/builtins/definitions.d.ts +28 -0
- package/dist/data/builtins/definitions.d.ts.map +1 -0
- package/dist/data/builtins/definitions.js +250 -0
- package/dist/data/builtins/index.d.ts +10 -0
- package/dist/data/builtins/index.d.ts.map +1 -0
- package/dist/data/builtins/index.js +8 -0
- package/dist/data/builtins/jsGlobals.d.ts +18 -0
- package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
- package/dist/data/builtins/jsGlobals.js +26 -0
- package/dist/data/builtins/types.d.ts +34 -0
- package/dist/data/builtins/types.d.ts.map +1 -0
- package/dist/data/builtins/types.js +7 -0
- package/dist/data/globals/definitions.d.ts +27 -0
- package/dist/data/globals/definitions.d.ts.map +1 -0
- package/dist/data/globals/definitions.js +117 -0
- package/dist/data/globals/index.d.ts +36 -0
- package/dist/data/globals/index.d.ts.map +1 -0
- package/dist/data/globals/index.js +52 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
- package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticCollector.js +129 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
- package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticReporter.js +247 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
- package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
- package/dist/diagnostics/DiagnosticWriter.js +43 -0
- package/dist/diagnostics/index.d.ts +14 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +11 -0
- package/dist/errors/GrafemaError.d.ts +161 -0
- package/dist/errors/GrafemaError.d.ts.map +1 -0
- package/dist/errors/GrafemaError.js +181 -0
- package/dist/index.d.ts +73 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -1
- package/dist/logging/Logger.d.ts +48 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +134 -0
- package/dist/plugins/Plugin.d.ts +5 -1
- package/dist/plugins/Plugin.d.ts.map +1 -1
- package/dist/plugins/Plugin.js +33 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/RustAnalyzer.js +16 -11
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
- package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
- package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
- package/dist/plugins/analysis/ast/types.d.ts +470 -5
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
- package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/index.js +5 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
- package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/utils/location.js +78 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
- package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
- package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/detector.js +49 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
- package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
- package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
- package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/index.js +8 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
- package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
- package/dist/plugins/discovery/workspaces/parsers.js +80 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
- package/dist/plugins/enrichment/AliasTracker.js +29 -8
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
- package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
- package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
- package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
- package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
- package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MountPointResolver.js +173 -147
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
- package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
- package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
- package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
- package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
- package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
- package/dist/plugins/indexing/ServiceDetector.js +28 -15
- package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
- package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
- package/dist/plugins/validation/BrokenImportValidator.js +249 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
- package/dist/plugins/validation/CallResolverValidator.js +103 -77
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
- package/dist/plugins/validation/DataFlowValidator.js +62 -49
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
- package/dist/plugins/validation/EvalBanValidator.js +17 -16
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
- package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
- package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
- package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
- package/dist/plugins/validation/NodeCreationValidator.js +415 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
- package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
- package/dist/plugins/validation/ShadowingDetector.js +6 -5
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/GitPlugin.js +10 -12
- package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
- package/dist/plugins/vcs/VCSPlugin.js +5 -5
- package/dist/queries/findCallsInFunction.d.ts +52 -0
- package/dist/queries/findCallsInFunction.d.ts.map +1 -0
- package/dist/queries/findCallsInFunction.js +135 -0
- package/dist/queries/findContainingFunction.d.ts +45 -0
- package/dist/queries/findContainingFunction.d.ts.map +1 -0
- package/dist/queries/findContainingFunction.js +54 -0
- package/dist/queries/index.d.ts +14 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +11 -0
- package/dist/queries/traceValues.d.ts +70 -0
- package/dist/queries/traceValues.d.ts.map +1 -0
- package/dist/queries/traceValues.js +299 -0
- package/dist/queries/types.d.ts +163 -0
- package/dist/queries/types.d.ts.map +1 -0
- package/dist/queries/types.js +9 -0
- package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
- package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/GraphSchemaExtractor.js +124 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
- package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/InterfaceSchemaExtractor.js +112 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +72 -62
- package/dist/storage/backends/typeValidation.d.ts.map +1 -1
- package/dist/storage/backends/typeValidation.js +1 -0
- package/dist/validation/PathValidator.d.ts +1 -2
- package/dist/validation/PathValidator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Orchestrator.ts +272 -27
- package/src/config/ConfigLoader.ts +354 -0
- package/src/config/index.ts +5 -0
- package/src/core/ASTWorker.ts +143 -139
- package/src/core/CoverageAnalyzer.ts +243 -0
- package/src/core/FileExplainer.ts +179 -0
- package/src/core/FileNodeManager.ts +100 -0
- package/src/core/GraphFreshnessChecker.ts +143 -0
- package/src/core/HashUtils.ts +48 -0
- package/src/core/IncrementalReanalyzer.ts +192 -0
- package/src/core/NodeFactory.ts +470 -23
- package/src/core/ScopeTracker.ts +154 -0
- package/src/core/SemanticId.ts +192 -0
- package/src/core/VersionManager.ts +3 -2
- package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
- package/src/core/nodes/ArrayLiteralNode.ts +66 -0
- package/src/core/nodes/BranchNode.ts +113 -0
- package/src/core/nodes/CallSiteNode.ts +64 -4
- package/src/core/nodes/CaseNode.ts +123 -0
- package/src/core/nodes/ClassNode.ts +67 -4
- package/src/core/nodes/ConstantNode.ts +5 -4
- package/src/core/nodes/ConstructorCallNode.ts +217 -0
- package/src/core/nodes/DatabaseQueryNode.ts +5 -1
- package/src/core/nodes/DecoratorNode.ts +92 -0
- package/src/core/nodes/EnumNode.ts +87 -0
- package/src/core/nodes/EventListenerNode.ts +7 -4
- package/src/core/nodes/ExportNode.ts +74 -4
- package/src/core/nodes/ExpressionNode.ts +232 -0
- package/src/core/nodes/ExternalModuleNode.ts +65 -0
- package/src/core/nodes/ExternalStdioNode.ts +17 -9
- package/src/core/nodes/FunctionNode.ts +101 -1
- package/src/core/nodes/HttpRequestNode.ts +7 -4
- package/src/core/nodes/ImportNode.ts +62 -13
- package/src/core/nodes/InterfaceNode.ts +92 -0
- package/src/core/nodes/IssueNode.ts +177 -0
- package/src/core/nodes/LiteralNode.ts +5 -4
- package/src/core/nodes/MethodCallNode.ts +70 -4
- package/src/core/nodes/MethodNode.ts +68 -3
- package/src/core/nodes/ModuleNode.ts +50 -0
- package/src/core/nodes/NetworkRequestNode.ts +77 -0
- package/src/core/nodes/ObjectLiteralNode.ts +66 -0
- package/src/core/nodes/ParameterNode.ts +4 -3
- package/src/core/nodes/ScopeNode.ts +65 -0
- package/src/core/nodes/TypeNode.ts +79 -0
- package/src/core/nodes/VariableDeclarationNode.ts +58 -4
- package/src/core/nodes/index.ts +21 -1
- package/src/data/builtins/BuiltinRegistry.ts +124 -0
- package/src/data/builtins/definitions.ts +267 -0
- package/src/data/builtins/index.ts +10 -0
- package/src/data/builtins/jsGlobals.ts +28 -0
- package/src/data/builtins/types.ts +36 -0
- package/src/data/globals/definitions.ts +156 -0
- package/src/data/globals/index.ts +66 -0
- package/src/diagnostics/DiagnosticCollector.ts +163 -0
- package/src/diagnostics/DiagnosticReporter.ts +324 -0
- package/src/diagnostics/DiagnosticWriter.ts +50 -0
- package/src/diagnostics/index.ts +16 -0
- package/src/errors/GrafemaError.ts +239 -0
- package/src/index.ts +193 -1
- package/src/logging/Logger.ts +152 -0
- package/src/plugins/Plugin.ts +42 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
- package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
- package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
- package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
- package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
- package/src/plugins/analysis/RustAnalyzer.ts +16 -11
- package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
- package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
- package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
- package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
- package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
- package/src/plugins/analysis/ast/types.ts +596 -6
- package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
- package/src/plugins/analysis/ast/utils/index.ts +12 -0
- package/src/plugins/analysis/ast/utils/location.ts +103 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
- package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
- package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
- package/src/plugins/discovery/workspaces/detector.ts +63 -0
- package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
- package/src/plugins/discovery/workspaces/index.ts +23 -0
- package/src/plugins/discovery/workspaces/parsers.ts +99 -0
- package/src/plugins/enrichment/AliasTracker.ts +35 -8
- package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
- package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
- package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
- package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
- package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
- package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
- package/src/plugins/enrichment/MountPointResolver.ts +208 -195
- package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
- package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
- package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
- package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
- package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
- package/src/plugins/validation/BrokenImportValidator.ts +325 -0
- package/src/plugins/validation/CallResolverValidator.ts +131 -110
- package/src/plugins/validation/DataFlowValidator.ts +88 -67
- package/src/plugins/validation/EvalBanValidator.ts +17 -16
- package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
- package/src/plugins/validation/NodeCreationValidator.ts +554 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
- package/src/plugins/validation/ShadowingDetector.ts +6 -5
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
- package/src/plugins/vcs/GitPlugin.ts +40 -12
- package/src/plugins/vcs/VCSPlugin.ts +7 -5
- package/src/queries/README.md +46 -0
- package/src/queries/findCallsInFunction.ts +206 -0
- package/src/queries/findContainingFunction.ts +83 -0
- package/src/queries/index.ts +23 -0
- package/src/queries/traceValues.ts +398 -0
- package/src/queries/types.ts +187 -0
- package/src/schema/GraphSchemaExtractor.ts +177 -0
- package/src/schema/InterfaceSchemaExtractor.ts +173 -0
- package/src/schema/index.ts +5 -0
- package/src/storage/backends/RFDBServerBackend.ts +100 -98
- package/src/storage/backends/typeValidation.ts +1 -0
- package/src/validation/PathValidator.ts +1 -1
- package/dist/core/AnalysisWorker.d.ts +0 -14
- package/dist/core/AnalysisWorker.d.ts.map +0 -1
- package/dist/core/AnalysisWorker.js +0 -307
- package/dist/core/ParallelAnalyzer.d.ts +0 -120
- package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
- package/dist/core/ParallelAnalyzer.js +0 -331
- package/dist/core/QueueWorker.d.ts +0 -12
- package/dist/core/QueueWorker.d.ts.map +0 -1
- package/dist/core/QueueWorker.js +0 -567
- package/dist/core/RFDBClient.d.ts +0 -179
- package/dist/core/RFDBClient.d.ts.map +0 -1
- package/dist/core/RFDBClient.js +0 -429
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
- package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
- package/src/core/AnalysisWorker.ts +0 -410
- package/src/core/ParallelAnalyzer.ts +0 -476
- package/src/core/QueueWorker.ts +0 -780
- package/src/plugins/indexing/ServiceDetector.ts +0 -230
package/README.md
CHANGED
|
@@ -52,7 +52,6 @@ The orchestrator runs analysis in 5 phases:
|
|
|
52
52
|
### Indexing
|
|
53
53
|
- `JSModuleIndexer` - JavaScript/TypeScript module resolution
|
|
54
54
|
- `RustModuleIndexer` - Rust crate analysis
|
|
55
|
-
- `ServiceDetector` - Monorepo service discovery
|
|
56
55
|
|
|
57
56
|
### Analysis
|
|
58
57
|
- `JSASTAnalyzer` - Core JS/TS AST analysis
|
package/dist/Orchestrator.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Orchestrator - управляет процессом анализа через фазы
|
|
3
3
|
* Полностью абстрактный - специфичная логика в плагинах
|
|
4
4
|
*/
|
|
5
|
+
import { DiagnosticCollector } from './diagnostics/DiagnosticCollector.js';
|
|
5
6
|
import type { Plugin, PluginContext } from './plugins/Plugin.js';
|
|
6
|
-
import type { GraphBackend } from '@grafema/types';
|
|
7
|
+
import type { GraphBackend, Logger, LogLevel, ServiceDefinition } from '@grafema/types';
|
|
7
8
|
/**
|
|
8
9
|
* Progress callback info
|
|
9
10
|
*/
|
|
@@ -37,8 +38,24 @@ export interface OrchestratorOptions {
|
|
|
37
38
|
onProgress?: ProgressCallback;
|
|
38
39
|
forceAnalysis?: boolean;
|
|
39
40
|
serviceFilter?: string | null;
|
|
41
|
+
/** Override entrypoint, bypasses auto-detection. Path relative to project root. */
|
|
42
|
+
entrypoint?: string;
|
|
40
43
|
indexOnly?: boolean;
|
|
41
44
|
parallel?: ParallelConfig | null;
|
|
45
|
+
/** Logger instance for structured logging. */
|
|
46
|
+
logger?: Logger;
|
|
47
|
+
/** Log level for the default logger. Ignored if logger is provided. */
|
|
48
|
+
logLevel?: LogLevel;
|
|
49
|
+
/**
|
|
50
|
+
* Config-provided services (REG-174).
|
|
51
|
+
* If provided and non-empty, discovery plugins are skipped.
|
|
52
|
+
*/
|
|
53
|
+
services?: ServiceDefinition[];
|
|
54
|
+
/**
|
|
55
|
+
* Enable strict mode for fail-fast debugging.
|
|
56
|
+
* When true, enrichers report unresolved references as fatal errors.
|
|
57
|
+
*/
|
|
58
|
+
strictMode?: boolean;
|
|
42
59
|
}
|
|
43
60
|
/**
|
|
44
61
|
* Service info from discovery
|
|
@@ -93,12 +110,19 @@ export declare class Orchestrator {
|
|
|
93
110
|
private onProgress;
|
|
94
111
|
private forceAnalysis;
|
|
95
112
|
private serviceFilter;
|
|
113
|
+
private entrypoint;
|
|
96
114
|
private indexOnly;
|
|
97
115
|
private profiler;
|
|
98
116
|
private parallelConfig;
|
|
99
117
|
private analysisQueue;
|
|
100
118
|
private rfdbServerProcess;
|
|
101
119
|
private _serverWasExternal;
|
|
120
|
+
private diagnosticCollector;
|
|
121
|
+
private logger;
|
|
122
|
+
/** Config-provided services (REG-174) */
|
|
123
|
+
private configServices;
|
|
124
|
+
/** Strict mode flag (REG-330) */
|
|
125
|
+
private strictMode;
|
|
102
126
|
constructor(options?: OrchestratorOptions);
|
|
103
127
|
/**
|
|
104
128
|
* Запустить анализ проекта
|
|
@@ -110,7 +134,8 @@ export declare class Orchestrator {
|
|
|
110
134
|
*/
|
|
111
135
|
buildIndexingUnits(manifest: DiscoveryManifest): IndexingUnit[];
|
|
112
136
|
/**
|
|
113
|
-
* PHASE 0: Discovery - запуск плагинов DISCOVERY
|
|
137
|
+
* PHASE 0: Discovery - запуск плагинов DISCOVERY фазы.
|
|
138
|
+
* If config services are provided, they take precedence and plugins are skipped.
|
|
114
139
|
*/
|
|
115
140
|
discover(projectPath: string): Promise<DiscoveryManifest>;
|
|
116
141
|
/**
|
|
@@ -119,6 +144,10 @@ export declare class Orchestrator {
|
|
|
119
144
|
runPhase(phaseName: string, context: Partial<PluginContext> & {
|
|
120
145
|
graph: PluginContext['graph'];
|
|
121
146
|
}): Promise<void>;
|
|
147
|
+
/**
|
|
148
|
+
* Get the diagnostic collector for retrieving all collected diagnostics
|
|
149
|
+
*/
|
|
150
|
+
getDiagnostics(): DiagnosticCollector;
|
|
122
151
|
/**
|
|
123
152
|
* Run queue-based parallel analysis using worker_threads and RFDB server
|
|
124
153
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/Orchestrator.js
CHANGED
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
* Orchestrator - управляет процессом анализа через фазы
|
|
3
3
|
* Полностью абстрактный - специфичная логика в плагинах
|
|
4
4
|
*/
|
|
5
|
-
import { existsSync, unlinkSync } from 'fs';
|
|
5
|
+
import { readFileSync, existsSync, unlinkSync } from 'fs';
|
|
6
6
|
import { join, dirname, resolve } from 'path';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
8
|
import { spawn, execSync } from 'child_process';
|
|
9
9
|
import { setTimeout as sleep } from 'timers/promises';
|
|
10
10
|
import { SimpleProjectDiscovery } from './plugins/discovery/SimpleProjectDiscovery.js';
|
|
11
|
+
import { resolveSourceEntrypoint } from './plugins/discovery/resolveSourceEntrypoint.js';
|
|
11
12
|
import { Profiler } from './core/Profiler.js';
|
|
12
13
|
import { AnalysisQueue } from './core/AnalysisQueue.js';
|
|
14
|
+
import { DiagnosticCollector } from './diagnostics/DiagnosticCollector.js';
|
|
15
|
+
import { createLogger } from './logging/Logger.js';
|
|
16
|
+
import { NodeFactory } from './core/NodeFactory.js';
|
|
13
17
|
export class Orchestrator {
|
|
14
18
|
graph;
|
|
15
19
|
config;
|
|
@@ -18,12 +22,19 @@ export class Orchestrator {
|
|
|
18
22
|
onProgress;
|
|
19
23
|
forceAnalysis;
|
|
20
24
|
serviceFilter;
|
|
25
|
+
entrypoint;
|
|
21
26
|
indexOnly;
|
|
22
27
|
profiler;
|
|
23
28
|
parallelConfig;
|
|
24
29
|
analysisQueue;
|
|
25
30
|
rfdbServerProcess;
|
|
26
31
|
_serverWasExternal;
|
|
32
|
+
diagnosticCollector;
|
|
33
|
+
logger;
|
|
34
|
+
/** Config-provided services (REG-174) */
|
|
35
|
+
configServices;
|
|
36
|
+
/** Strict mode flag (REG-330) */
|
|
37
|
+
strictMode;
|
|
27
38
|
constructor(options = {}) {
|
|
28
39
|
this.graph = options.graph;
|
|
29
40
|
this.config = options;
|
|
@@ -32,6 +43,7 @@ export class Orchestrator {
|
|
|
32
43
|
this.onProgress = options.onProgress || (() => { }); // Callback для прогресса
|
|
33
44
|
this.forceAnalysis = options.forceAnalysis || false; // Флаг для игнорирования кэша
|
|
34
45
|
this.serviceFilter = options.serviceFilter || null; // Фильтр для одного сервиса
|
|
46
|
+
this.entrypoint = options.entrypoint; // Override entrypoint, bypasses discovery
|
|
35
47
|
this.indexOnly = options.indexOnly || false; // Только DISCOVERY + INDEXING (для coverage)
|
|
36
48
|
this.profiler = new Profiler('Orchestrator');
|
|
37
49
|
// Parallel/queue-based analysis config
|
|
@@ -39,9 +51,19 @@ export class Orchestrator {
|
|
|
39
51
|
this.analysisQueue = null;
|
|
40
52
|
this.rfdbServerProcess = null;
|
|
41
53
|
this._serverWasExternal = false;
|
|
42
|
-
//
|
|
54
|
+
// Initialize diagnostic collector
|
|
55
|
+
this.diagnosticCollector = new DiagnosticCollector();
|
|
56
|
+
// Initialize logger (use provided or create default)
|
|
57
|
+
this.logger = options.logger ?? createLogger(options.logLevel ?? 'info');
|
|
58
|
+
// Store config-provided services (REG-174)
|
|
59
|
+
this.configServices = options.services;
|
|
60
|
+
// Strict mode configuration (REG-330)
|
|
61
|
+
this.strictMode = options.strictMode ?? false;
|
|
62
|
+
// Modified auto-add logic: SKIP auto-add if config services provided (REG-174)
|
|
43
63
|
const hasDiscovery = this.plugins.some(p => p.metadata?.phase === 'DISCOVERY');
|
|
44
|
-
|
|
64
|
+
const hasConfigServices = this.configServices && this.configServices.length > 0;
|
|
65
|
+
if (!hasDiscovery && !hasConfigServices) {
|
|
66
|
+
// Only auto-add if NO discovery plugins AND NO config services
|
|
45
67
|
this.plugins.unshift(new SimpleProjectDiscovery());
|
|
46
68
|
}
|
|
47
69
|
}
|
|
@@ -52,10 +74,37 @@ export class Orchestrator {
|
|
|
52
74
|
const totalStartTime = Date.now();
|
|
53
75
|
// Resolve to absolute path
|
|
54
76
|
const absoluteProjectPath = projectPath.startsWith('/') ? projectPath : resolve(projectPath);
|
|
77
|
+
// RADICAL SIMPLIFICATION: Clear entire graph once at the start if forceAnalysis
|
|
78
|
+
if (this.forceAnalysis && this.graph.clear) {
|
|
79
|
+
this.logger.info('Clearing entire graph (forceAnalysis=true)');
|
|
80
|
+
await this.graph.clear();
|
|
81
|
+
this.logger.info('Graph cleared successfully');
|
|
82
|
+
}
|
|
55
83
|
this.onProgress({ phase: 'discovery', currentPlugin: 'Starting discovery...', message: 'Discovering services...', totalFiles: 0, processedFiles: 0 });
|
|
56
|
-
// PHASE 0: DISCOVERY - запуск плагинов фазы DISCOVERY
|
|
84
|
+
// PHASE 0: DISCOVERY - запуск плагинов фазы DISCOVERY (or use entrypoint override)
|
|
57
85
|
this.profiler.start('DISCOVERY');
|
|
58
|
-
|
|
86
|
+
let manifest;
|
|
87
|
+
if (this.entrypoint) {
|
|
88
|
+
// Skip discovery, create synthetic manifest with single service
|
|
89
|
+
const entrypointPath = this.entrypoint.startsWith('/')
|
|
90
|
+
? this.entrypoint
|
|
91
|
+
: join(absoluteProjectPath, this.entrypoint);
|
|
92
|
+
const serviceName = this.entrypoint.split('/').pop()?.replace(/\.[^.]+$/, '') || 'main';
|
|
93
|
+
manifest = {
|
|
94
|
+
services: [{
|
|
95
|
+
id: `service:${serviceName}`,
|
|
96
|
+
name: serviceName,
|
|
97
|
+
path: entrypointPath,
|
|
98
|
+
metadata: { entrypoint: entrypointPath }
|
|
99
|
+
}],
|
|
100
|
+
entrypoints: [],
|
|
101
|
+
projectPath: absoluteProjectPath
|
|
102
|
+
};
|
|
103
|
+
this.logger.info('Using entrypoint override', { entrypoint: this.entrypoint, resolved: entrypointPath });
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
manifest = await this.discover(absoluteProjectPath);
|
|
107
|
+
}
|
|
59
108
|
this.profiler.end('DISCOVERY');
|
|
60
109
|
const epCount = manifest.entrypoints?.length || 0;
|
|
61
110
|
const svcCount = manifest.services?.length || 0;
|
|
@@ -66,7 +115,7 @@ export class Orchestrator {
|
|
|
66
115
|
totalFiles: 0,
|
|
67
116
|
processedFiles: 0
|
|
68
117
|
});
|
|
69
|
-
|
|
118
|
+
this.logger.info('Discovery complete', { services: svcCount, entrypoints: epCount });
|
|
70
119
|
// Build unified list of indexing units from services AND entrypoints
|
|
71
120
|
const indexingUnits = this.buildIndexingUnits(manifest);
|
|
72
121
|
// Filter if specified
|
|
@@ -76,13 +125,12 @@ export class Orchestrator {
|
|
|
76
125
|
u.path === this.serviceFilter ||
|
|
77
126
|
u.name.includes(this.serviceFilter) ||
|
|
78
127
|
u.path.includes(this.serviceFilter));
|
|
79
|
-
|
|
128
|
+
this.logger.info('Filtering services', { filter: this.serviceFilter, found: unitsToProcess.length, total: indexingUnits.length });
|
|
80
129
|
}
|
|
81
130
|
else {
|
|
82
131
|
unitsToProcess = indexingUnits;
|
|
83
132
|
}
|
|
84
|
-
|
|
85
|
-
console.log(`[Orchestrator] Strategy: Phase-by-phase with DFS dependency tree per entrypoint`);
|
|
133
|
+
this.logger.info('Processing indexing units', { count: unitsToProcess.length, strategy: 'Phase-by-phase with DFS' });
|
|
86
134
|
// PHASE 1: INDEXING - каждый сервис строит своё дерево зависимостей от entrypoint
|
|
87
135
|
const indexingStart = Date.now();
|
|
88
136
|
this.profiler.start('INDEXING');
|
|
@@ -118,9 +166,13 @@ export class Orchestrator {
|
|
|
118
166
|
},
|
|
119
167
|
modules: []
|
|
120
168
|
};
|
|
121
|
-
await this.runPhase('INDEXING', {
|
|
169
|
+
await this.runPhase('INDEXING', {
|
|
170
|
+
manifest: unitManifest,
|
|
171
|
+
graph: this.graph,
|
|
172
|
+
workerCount: 1,
|
|
173
|
+
});
|
|
122
174
|
const unitTime = ((Date.now() - unitStart) / 1000).toFixed(2);
|
|
123
|
-
|
|
175
|
+
this.logger.debug('INDEXING complete', { unit: unit.name, duration: unitTime });
|
|
124
176
|
this.onProgress({
|
|
125
177
|
phase: 'indexing',
|
|
126
178
|
currentPlugin: 'JSModuleIndexer',
|
|
@@ -133,12 +185,11 @@ export class Orchestrator {
|
|
|
133
185
|
processedUnits += batch.length;
|
|
134
186
|
}
|
|
135
187
|
this.profiler.end('INDEXING');
|
|
136
|
-
|
|
188
|
+
this.logger.info('INDEXING phase complete', { duration: ((Date.now() - indexingStart) / 1000).toFixed(2) });
|
|
137
189
|
// Skip remaining phases if indexOnly mode (for coverage)
|
|
138
190
|
if (this.indexOnly) {
|
|
139
191
|
const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
|
|
140
|
-
|
|
141
|
-
console.log(`[Orchestrator] ⏱️ Total time: ${totalTime}s for ${unitsToProcess.length} units`);
|
|
192
|
+
this.logger.info('indexOnly mode - skipping remaining phases', { duration: totalTime, units: unitsToProcess.length });
|
|
142
193
|
return manifest;
|
|
143
194
|
}
|
|
144
195
|
// PHASE 2: ANALYSIS - все units (параллельно батчами)
|
|
@@ -180,9 +231,13 @@ export class Orchestrator {
|
|
|
180
231
|
},
|
|
181
232
|
modules: []
|
|
182
233
|
};
|
|
183
|
-
await this.runPhase('ANALYSIS', {
|
|
234
|
+
await this.runPhase('ANALYSIS', {
|
|
235
|
+
manifest: unitManifest,
|
|
236
|
+
graph: this.graph,
|
|
237
|
+
workerCount: 1,
|
|
238
|
+
});
|
|
184
239
|
const unitTime = ((Date.now() - unitStart) / 1000).toFixed(2);
|
|
185
|
-
|
|
240
|
+
this.logger.debug('ANALYSIS complete', { unit: unit.name, duration: unitTime });
|
|
186
241
|
this.onProgress({
|
|
187
242
|
phase: 'analysis',
|
|
188
243
|
currentPlugin: 'Analyzers',
|
|
@@ -196,27 +251,44 @@ export class Orchestrator {
|
|
|
196
251
|
}
|
|
197
252
|
}
|
|
198
253
|
this.profiler.end('ANALYSIS');
|
|
199
|
-
|
|
254
|
+
this.logger.info('ANALYSIS phase complete', { duration: ((Date.now() - analysisStart) / 1000).toFixed(2) });
|
|
200
255
|
// PHASE 3: ENRICHMENT - post-processing, граф traversal, вычисления (глобально)
|
|
201
256
|
const enrichmentStart = Date.now();
|
|
202
257
|
this.profiler.start('ENRICHMENT');
|
|
203
258
|
this.onProgress({ phase: 'enrichment', currentPlugin: 'Starting enrichment...', message: 'Enriching graph data...', totalFiles: 0, processedFiles: 0 });
|
|
204
259
|
await this.runPhase('ENRICHMENT', { manifest, graph: this.graph, workerCount: this.workerCount });
|
|
205
260
|
this.profiler.end('ENRICHMENT');
|
|
206
|
-
|
|
261
|
+
this.logger.info('ENRICHMENT phase complete', { duration: ((Date.now() - enrichmentStart) / 1000).toFixed(2) });
|
|
262
|
+
// STRICT MODE BARRIER: Check for fatal errors after ENRICHMENT (REG-330)
|
|
263
|
+
if (this.strictMode) {
|
|
264
|
+
const enrichmentDiagnostics = this.diagnosticCollector.getByPhase('ENRICHMENT');
|
|
265
|
+
const strictErrors = enrichmentDiagnostics.filter(d => d.severity === 'fatal');
|
|
266
|
+
if (strictErrors.length > 0) {
|
|
267
|
+
this.logger.error(`Strict mode: ${strictErrors.length} unresolved reference(s) found`);
|
|
268
|
+
for (const err of strictErrors) {
|
|
269
|
+
this.logger.error(` [${err.code}] ${err.message}`, {
|
|
270
|
+
file: err.file,
|
|
271
|
+
line: err.line,
|
|
272
|
+
plugin: err.plugin,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
throw new Error(`Strict mode: ${strictErrors.length} unresolved reference(s) found during ENRICHMENT. ` +
|
|
276
|
+
`Run without --strict for graceful degradation, or fix the underlying issues.`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
207
279
|
// PHASE 4: VALIDATION - проверка корректности графа (глобально)
|
|
208
280
|
const validationStart = Date.now();
|
|
209
281
|
this.profiler.start('VALIDATION');
|
|
210
282
|
this.onProgress({ phase: 'validation', currentPlugin: 'Starting validation...', message: 'Validating graph structure...', totalFiles: 0, processedFiles: 0 });
|
|
211
283
|
await this.runPhase('VALIDATION', { manifest, graph: this.graph, workerCount: this.workerCount });
|
|
212
284
|
this.profiler.end('VALIDATION');
|
|
213
|
-
|
|
285
|
+
this.logger.info('VALIDATION phase complete', { duration: ((Date.now() - validationStart) / 1000).toFixed(2) });
|
|
214
286
|
// Flush graph to ensure all edges are persisted and queryable
|
|
215
287
|
if (this.graph.flush) {
|
|
216
288
|
await this.graph.flush();
|
|
217
289
|
}
|
|
218
290
|
const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
|
|
219
|
-
|
|
291
|
+
this.logger.info('Analysis complete', { duration: totalTime, units: unitsToProcess.length });
|
|
220
292
|
// Print profiling summary
|
|
221
293
|
this.profiler.printSummary();
|
|
222
294
|
return manifest;
|
|
@@ -262,14 +334,82 @@ export class Orchestrator {
|
|
|
262
334
|
return units;
|
|
263
335
|
}
|
|
264
336
|
/**
|
|
265
|
-
* PHASE 0: Discovery - запуск плагинов DISCOVERY
|
|
337
|
+
* PHASE 0: Discovery - запуск плагинов DISCOVERY фазы.
|
|
338
|
+
* If config services are provided, they take precedence and plugins are skipped.
|
|
266
339
|
*/
|
|
267
340
|
async discover(projectPath) {
|
|
341
|
+
// REG-174: If config provided services, use them directly instead of running discovery plugins
|
|
342
|
+
if (this.configServices && this.configServices.length > 0) {
|
|
343
|
+
this.logger.info('Using config-provided services (skipping discovery plugins)', {
|
|
344
|
+
serviceCount: this.configServices.length
|
|
345
|
+
});
|
|
346
|
+
const services = [];
|
|
347
|
+
// For each config service:
|
|
348
|
+
// 1. Resolve path relative to project root (validation ensures paths are relative)
|
|
349
|
+
// 2. Auto-detect entrypoint from package.json if not specified
|
|
350
|
+
// 3. Fall back to 'index.js' if detection fails
|
|
351
|
+
for (const configSvc of this.configServices) {
|
|
352
|
+
// All paths are relative (absolute paths rejected by ConfigLoader validation)
|
|
353
|
+
const servicePath = join(projectPath, configSvc.path);
|
|
354
|
+
// Resolve entrypoint
|
|
355
|
+
let entrypoint;
|
|
356
|
+
if (configSvc.entryPoint) {
|
|
357
|
+
entrypoint = configSvc.entryPoint;
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
// Auto-detect if not provided
|
|
361
|
+
const packageJsonPath = join(servicePath, 'package.json');
|
|
362
|
+
if (existsSync(packageJsonPath)) {
|
|
363
|
+
try {
|
|
364
|
+
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
365
|
+
entrypoint = resolveSourceEntrypoint(servicePath, pkg) ?? pkg.main ?? 'index.js';
|
|
366
|
+
}
|
|
367
|
+
catch (e) {
|
|
368
|
+
this.logger.warn('Failed to read package.json for auto-detection', {
|
|
369
|
+
service: configSvc.name,
|
|
370
|
+
path: packageJsonPath,
|
|
371
|
+
error: e.message
|
|
372
|
+
});
|
|
373
|
+
entrypoint = 'index.js';
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
entrypoint = 'index.js';
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
// Create SERVICE node
|
|
381
|
+
const serviceNode = NodeFactory.createService(configSvc.name, servicePath, {
|
|
382
|
+
discoveryMethod: 'config',
|
|
383
|
+
entrypoint: entrypoint,
|
|
384
|
+
});
|
|
385
|
+
await this.graph.addNode(serviceNode);
|
|
386
|
+
services.push({
|
|
387
|
+
id: serviceNode.id,
|
|
388
|
+
name: configSvc.name,
|
|
389
|
+
path: servicePath,
|
|
390
|
+
metadata: {
|
|
391
|
+
entrypoint: join(servicePath, entrypoint),
|
|
392
|
+
},
|
|
393
|
+
});
|
|
394
|
+
this.logger.info('Registered config service', {
|
|
395
|
+
name: configSvc.name,
|
|
396
|
+
path: servicePath,
|
|
397
|
+
entrypoint: entrypoint
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
return {
|
|
401
|
+
services,
|
|
402
|
+
entrypoints: [], // Config services don't provide entrypoints
|
|
403
|
+
projectPath: projectPath
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
// ORIGINAL CODE: Run discovery plugins if no config services
|
|
268
407
|
const context = {
|
|
269
408
|
projectPath,
|
|
270
409
|
graph: this.graph,
|
|
271
410
|
config: this.config,
|
|
272
|
-
phase: 'DISCOVERY'
|
|
411
|
+
phase: 'DISCOVERY',
|
|
412
|
+
logger: this.logger,
|
|
273
413
|
};
|
|
274
414
|
// Фильтруем плагины для фазы DISCOVERY
|
|
275
415
|
const discoveryPlugins = this.plugins.filter(p => p.metadata.phase === 'DISCOVERY');
|
|
@@ -325,9 +465,58 @@ export class Orchestrator {
|
|
|
325
465
|
const pluginContext = {
|
|
326
466
|
...context,
|
|
327
467
|
onProgress: this.onProgress,
|
|
328
|
-
forceAnalysis: this.forceAnalysis
|
|
468
|
+
forceAnalysis: this.forceAnalysis,
|
|
469
|
+
logger: this.logger,
|
|
470
|
+
strictMode: this.strictMode, // REG-330: Pass strict mode flag
|
|
329
471
|
};
|
|
330
|
-
|
|
472
|
+
// Add reportIssue for VALIDATION phase
|
|
473
|
+
if (phaseName === 'VALIDATION') {
|
|
474
|
+
pluginContext.reportIssue = async (issue) => {
|
|
475
|
+
const node = NodeFactory.createIssue(issue.category, issue.severity, issue.message, plugin.metadata.name, issue.file, issue.line, issue.column || 0, { context: issue.context });
|
|
476
|
+
await context.graph.addNode(node);
|
|
477
|
+
if (issue.targetNodeId) {
|
|
478
|
+
await context.graph.addEdge({
|
|
479
|
+
src: node.id,
|
|
480
|
+
dst: issue.targetNodeId,
|
|
481
|
+
type: 'AFFECTS',
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
return node.id;
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
try {
|
|
488
|
+
const result = await plugin.execute(pluginContext);
|
|
489
|
+
// Collect errors into diagnostics
|
|
490
|
+
this.diagnosticCollector.addFromPluginResult(phaseName, plugin.metadata.name, result);
|
|
491
|
+
// Log plugin completion with warning if errors occurred
|
|
492
|
+
if (!result.success) {
|
|
493
|
+
console.warn(`[Orchestrator] Plugin ${plugin.metadata.name} reported failure`, {
|
|
494
|
+
errors: result.errors.length,
|
|
495
|
+
warnings: result.warnings.length,
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
// Check for fatal errors - STOP immediately
|
|
499
|
+
if (this.diagnosticCollector.hasFatal()) {
|
|
500
|
+
const allDiagnostics = this.diagnosticCollector.getAll();
|
|
501
|
+
const fatal = allDiagnostics.find(d => d.severity === 'fatal');
|
|
502
|
+
throw new Error(`Fatal error in ${plugin.metadata.name}: ${fatal?.message || 'Unknown fatal error'}`);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
catch (e) {
|
|
506
|
+
// Plugin threw an exception (not just returned errors)
|
|
507
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
508
|
+
// Don't re-add if this was already a fatal error we threw
|
|
509
|
+
if (!this.diagnosticCollector.hasFatal()) {
|
|
510
|
+
this.diagnosticCollector.add({
|
|
511
|
+
code: 'ERR_PLUGIN_THREW',
|
|
512
|
+
severity: 'fatal',
|
|
513
|
+
message: error.message,
|
|
514
|
+
phase: phaseName,
|
|
515
|
+
plugin: plugin.metadata.name,
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
throw error; // Re-throw to stop analysis
|
|
519
|
+
}
|
|
331
520
|
// Send completion for this plugin
|
|
332
521
|
this.onProgress({
|
|
333
522
|
phase: phaseName.toLowerCase(),
|
|
@@ -336,6 +525,12 @@ export class Orchestrator {
|
|
|
336
525
|
});
|
|
337
526
|
}
|
|
338
527
|
}
|
|
528
|
+
/**
|
|
529
|
+
* Get the diagnostic collector for retrieving all collected diagnostics
|
|
530
|
+
*/
|
|
531
|
+
getDiagnostics() {
|
|
532
|
+
return this.diagnosticCollector;
|
|
533
|
+
}
|
|
339
534
|
/**
|
|
340
535
|
* Run queue-based parallel analysis using worker_threads and RFDB server
|
|
341
536
|
*
|
|
@@ -429,13 +624,13 @@ export class Orchestrator {
|
|
|
429
624
|
}
|
|
430
625
|
// Check if server binary exists
|
|
431
626
|
const projectRoot = join(dirname(fileURLToPath(import.meta.url)), '../..');
|
|
432
|
-
const serverBinary = join(projectRoot, '
|
|
433
|
-
const debugBinary = join(projectRoot, '
|
|
627
|
+
const serverBinary = join(projectRoot, 'packages/rfdb-server/target/release/rfdb-server');
|
|
628
|
+
const debugBinary = join(projectRoot, 'packages/rfdb-server/target/debug/rfdb-server');
|
|
434
629
|
let binaryPath = existsSync(serverBinary) ? serverBinary : debugBinary;
|
|
435
630
|
if (!existsSync(binaryPath)) {
|
|
436
631
|
console.log(`[Orchestrator] RFDB server binary not found at ${binaryPath}, building...`);
|
|
437
632
|
execSync('cargo build --bin rfdb-server', {
|
|
438
|
-
cwd: join(projectRoot, '
|
|
633
|
+
cwd: join(projectRoot, 'packages/rfdb-server'),
|
|
439
634
|
stdio: 'inherit',
|
|
440
635
|
});
|
|
441
636
|
binaryPath = debugBinary;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ServiceDefinition } from '@grafema/types';
|
|
2
|
+
/**
|
|
3
|
+
* Grafema configuration schema.
|
|
4
|
+
*
|
|
5
|
+
* YAML Location: .grafema/config.yaml (preferred) or .grafema/config.json (deprecated)
|
|
6
|
+
*
|
|
7
|
+
* Example config.yaml:
|
|
8
|
+
*
|
|
9
|
+
* ```yaml
|
|
10
|
+
* # Plugins for each analysis phase
|
|
11
|
+
* plugins:
|
|
12
|
+
* indexing:
|
|
13
|
+
* - JSModuleIndexer
|
|
14
|
+
* analysis:
|
|
15
|
+
* - JSASTAnalyzer
|
|
16
|
+
* - ExpressRouteAnalyzer
|
|
17
|
+
* enrichment:
|
|
18
|
+
* - MethodCallResolver
|
|
19
|
+
* validation:
|
|
20
|
+
* - EvalBanValidator
|
|
21
|
+
*
|
|
22
|
+
* # Optional: Explicit service definitions (bypass auto-discovery)
|
|
23
|
+
* services:
|
|
24
|
+
* - name: "backend"
|
|
25
|
+
* path: "apps/backend" # Relative to project root
|
|
26
|
+
* entryPoint: "src/index.ts" # Optional, auto-detected if omitted
|
|
27
|
+
* - name: "frontend"
|
|
28
|
+
* path: "apps/frontend"
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* If 'services' is not specified or empty, auto-discovery is used (SimpleProjectDiscovery).
|
|
32
|
+
* If 'services' is specified and non-empty, auto-discovery plugins are skipped entirely.
|
|
33
|
+
*/
|
|
34
|
+
export interface GrafemaConfig {
|
|
35
|
+
plugins: {
|
|
36
|
+
discovery?: string[];
|
|
37
|
+
indexing: string[];
|
|
38
|
+
analysis: string[];
|
|
39
|
+
enrichment: string[];
|
|
40
|
+
validation: string[];
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Optional explicit services for manual configuration.
|
|
44
|
+
* If provided and non-empty, auto-discovery is skipped.
|
|
45
|
+
*/
|
|
46
|
+
services: ServiceDefinition[];
|
|
47
|
+
/**
|
|
48
|
+
* Glob patterns for files to include during indexing (optional).
|
|
49
|
+
* See OrchestratorConfig.include for documentation.
|
|
50
|
+
*/
|
|
51
|
+
include?: string[];
|
|
52
|
+
/**
|
|
53
|
+
* Glob patterns for files to exclude during indexing (optional).
|
|
54
|
+
* See OrchestratorConfig.exclude for documentation.
|
|
55
|
+
*/
|
|
56
|
+
exclude?: string[];
|
|
57
|
+
/**
|
|
58
|
+
* Enable strict mode for fail-fast debugging.
|
|
59
|
+
* When true, analysis fails if enrichers cannot resolve references.
|
|
60
|
+
* When false (default), graceful degradation with warnings.
|
|
61
|
+
*
|
|
62
|
+
* Can be overridden via CLI: --strict
|
|
63
|
+
*/
|
|
64
|
+
strict?: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Default plugin configuration.
|
|
68
|
+
* Matches current DEFAULT_PLUGINS in analyze.ts and config.ts (MCP).
|
|
69
|
+
*/
|
|
70
|
+
export declare const DEFAULT_CONFIG: GrafemaConfig;
|
|
71
|
+
/**
|
|
72
|
+
* Load Grafema config from project directory.
|
|
73
|
+
*
|
|
74
|
+
* Priority:
|
|
75
|
+
* 1. config.yaml (preferred)
|
|
76
|
+
* 2. config.json (deprecated, fallback)
|
|
77
|
+
* 3. DEFAULT_CONFIG (if neither exists)
|
|
78
|
+
*
|
|
79
|
+
* Warnings:
|
|
80
|
+
* - Logs deprecation warning if config.json is used
|
|
81
|
+
* - Logs parse errors but doesn't throw (returns defaults)
|
|
82
|
+
*
|
|
83
|
+
* @param projectPath - Absolute path to project root
|
|
84
|
+
* @param logger - Optional logger for warnings (defaults to console.warn)
|
|
85
|
+
* @returns Parsed config or defaults
|
|
86
|
+
*/
|
|
87
|
+
export declare function loadConfig(projectPath: string, logger?: {
|
|
88
|
+
warn: (msg: string) => void;
|
|
89
|
+
}): GrafemaConfig;
|
|
90
|
+
//# sourceMappingURL=ConfigLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF;;;OAGG;IACH,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,aAqC5B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAY,GAChD,aAAa,CAoEf"}
|