@grafema/core 0.1.0-alpha.1
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/LICENSE +190 -0
- package/README.md +76 -0
- package/dist/Orchestrator.d.ts +142 -0
- package/dist/Orchestrator.d.ts.map +1 -0
- package/dist/Orchestrator.js +481 -0
- package/dist/api/GraphAPI.d.ts +87 -0
- package/dist/api/GraphAPI.d.ts.map +1 -0
- package/dist/api/GraphAPI.js +210 -0
- package/dist/api/GuaranteeAPI.d.ts +147 -0
- package/dist/api/GuaranteeAPI.d.ts.map +1 -0
- package/dist/api/GuaranteeAPI.js +288 -0
- package/dist/core/ASTWorker.d.ts +133 -0
- package/dist/core/ASTWorker.d.ts.map +1 -0
- package/dist/core/ASTWorker.js +352 -0
- package/dist/core/ASTWorkerPool.d.ts +85 -0
- package/dist/core/ASTWorkerPool.d.ts.map +1 -0
- package/dist/core/ASTWorkerPool.js +207 -0
- package/dist/core/AnalysisQueue.d.ts +104 -0
- package/dist/core/AnalysisQueue.d.ts.map +1 -0
- package/dist/core/AnalysisQueue.js +299 -0
- package/dist/core/AnalysisWorker.d.ts +14 -0
- package/dist/core/AnalysisWorker.d.ts.map +1 -0
- package/dist/core/AnalysisWorker.js +307 -0
- package/dist/core/GraphBackend.d.ts +156 -0
- package/dist/core/GraphBackend.d.ts.map +1 -0
- package/dist/core/GraphBackend.js +85 -0
- package/dist/core/GuaranteeManager.d.ts +230 -0
- package/dist/core/GuaranteeManager.d.ts.map +1 -0
- package/dist/core/GuaranteeManager.js +352 -0
- package/dist/core/ManifestStore.d.ts +71 -0
- package/dist/core/ManifestStore.d.ts.map +1 -0
- package/dist/core/ManifestStore.js +146 -0
- package/dist/core/NodeFactory.d.ts +160 -0
- package/dist/core/NodeFactory.d.ts.map +1 -0
- package/dist/core/NodeFactory.js +137 -0
- package/dist/core/NodeId.d.ts +88 -0
- package/dist/core/NodeId.d.ts.map +1 -0
- package/dist/core/NodeId.js +170 -0
- package/dist/core/ParallelAnalyzer.d.ts +120 -0
- package/dist/core/ParallelAnalyzer.d.ts.map +1 -0
- package/dist/core/ParallelAnalyzer.js +331 -0
- package/dist/core/PriorityQueue.d.ts +106 -0
- package/dist/core/PriorityQueue.d.ts.map +1 -0
- package/dist/core/PriorityQueue.js +168 -0
- package/dist/core/Profiler.d.ts +75 -0
- package/dist/core/Profiler.d.ts.map +1 -0
- package/dist/core/Profiler.js +149 -0
- package/dist/core/QueueWorker.d.ts +12 -0
- package/dist/core/QueueWorker.d.ts.map +1 -0
- package/dist/core/QueueWorker.js +567 -0
- package/dist/core/RFDBClient.d.ts +179 -0
- package/dist/core/RFDBClient.d.ts.map +1 -0
- package/dist/core/RFDBClient.js +429 -0
- package/dist/core/Task.d.ts +56 -0
- package/dist/core/Task.d.ts.map +1 -0
- package/dist/core/Task.js +85 -0
- package/dist/core/TaskTypes.d.ts +20 -0
- package/dist/core/TaskTypes.d.ts.map +1 -0
- package/dist/core/TaskTypes.js +10 -0
- package/dist/core/VersionManager.d.ts +166 -0
- package/dist/core/VersionManager.d.ts.map +1 -0
- package/dist/core/VersionManager.js +237 -0
- package/dist/core/WorkerPool.d.ts +82 -0
- package/dist/core/WorkerPool.d.ts.map +1 -0
- package/dist/core/WorkerPool.js +109 -0
- package/dist/core/nodes/CallSiteNode.d.ts +26 -0
- package/dist/core/nodes/CallSiteNode.d.ts.map +1 -0
- package/dist/core/nodes/CallSiteNode.js +44 -0
- package/dist/core/nodes/ClassNode.d.ts +25 -0
- package/dist/core/nodes/ClassNode.d.ts.map +1 -0
- package/dist/core/nodes/ClassNode.js +40 -0
- package/dist/core/nodes/ConstantNode.d.ts +24 -0
- package/dist/core/nodes/ConstantNode.d.ts.map +1 -0
- package/dist/core/nodes/ConstantNode.js +39 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts +22 -0
- package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -0
- package/dist/core/nodes/DatabaseQueryNode.js +37 -0
- package/dist/core/nodes/EntrypointNode.d.ts +102 -0
- package/dist/core/nodes/EntrypointNode.d.ts.map +1 -0
- package/dist/core/nodes/EntrypointNode.js +119 -0
- package/dist/core/nodes/EventListenerNode.d.ts +25 -0
- package/dist/core/nodes/EventListenerNode.d.ts.map +1 -0
- package/dist/core/nodes/EventListenerNode.js +39 -0
- package/dist/core/nodes/ExportNode.d.ts +26 -0
- package/dist/core/nodes/ExportNode.d.ts.map +1 -0
- package/dist/core/nodes/ExportNode.js +40 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts +17 -0
- package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -0
- package/dist/core/nodes/ExternalStdioNode.js +26 -0
- package/dist/core/nodes/FunctionNode.d.ts +27 -0
- package/dist/core/nodes/FunctionNode.d.ts.map +1 -0
- package/dist/core/nodes/FunctionNode.js +53 -0
- package/dist/core/nodes/GuaranteeNode.d.ts +76 -0
- package/dist/core/nodes/GuaranteeNode.d.ts.map +1 -0
- package/dist/core/nodes/GuaranteeNode.js +117 -0
- package/dist/core/nodes/HttpRequestNode.d.ts +24 -0
- package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -0
- package/dist/core/nodes/HttpRequestNode.js +38 -0
- package/dist/core/nodes/ImportNode.d.ts +27 -0
- package/dist/core/nodes/ImportNode.d.ts.map +1 -0
- package/dist/core/nodes/ImportNode.js +43 -0
- package/dist/core/nodes/LiteralNode.d.ts +26 -0
- package/dist/core/nodes/LiteralNode.d.ts.map +1 -0
- package/dist/core/nodes/LiteralNode.js +40 -0
- package/dist/core/nodes/MethodCallNode.d.ts +29 -0
- package/dist/core/nodes/MethodCallNode.d.ts.map +1 -0
- package/dist/core/nodes/MethodCallNode.js +47 -0
- package/dist/core/nodes/MethodNode.d.ts +29 -0
- package/dist/core/nodes/MethodNode.d.ts.map +1 -0
- package/dist/core/nodes/MethodNode.js +44 -0
- package/dist/core/nodes/ModuleNode.d.ts +29 -0
- package/dist/core/nodes/ModuleNode.d.ts.map +1 -0
- package/dist/core/nodes/ModuleNode.js +49 -0
- package/dist/core/nodes/NodeKind.d.ts +91 -0
- package/dist/core/nodes/NodeKind.d.ts.map +1 -0
- package/dist/core/nodes/NodeKind.js +146 -0
- package/dist/core/nodes/ParameterNode.d.ts +26 -0
- package/dist/core/nodes/ParameterNode.d.ts.map +1 -0
- package/dist/core/nodes/ParameterNode.js +43 -0
- package/dist/core/nodes/ScopeNode.d.ts +32 -0
- package/dist/core/nodes/ScopeNode.d.ts.map +1 -0
- package/dist/core/nodes/ScopeNode.js +47 -0
- package/dist/core/nodes/ServiceNode.d.ts +44 -0
- package/dist/core/nodes/ServiceNode.d.ts.map +1 -0
- package/dist/core/nodes/ServiceNode.js +49 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts +22 -0
- package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -0
- package/dist/core/nodes/VariableDeclarationNode.js +38 -0
- package/dist/core/nodes/index.d.ts +25 -0
- package/dist/core/nodes/index.d.ts.map +1 -0
- package/dist/core/nodes/index.js +30 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/plugins/Plugin.d.ts +44 -0
- package/dist/plugins/Plugin.d.ts.map +1 -0
- package/dist/plugins/Plugin.js +46 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts +23 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/DatabaseAnalyzer.js +260 -0
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts +19 -0
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressAnalyzer.js +306 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts +17 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +308 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts +38 -0
- package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/FetchAnalyzer.js +344 -0
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +65 -0
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -0
- package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +472 -0
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts +84 -0
- package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/JSASTAnalyzer.js +1378 -0
- package/dist/plugins/analysis/ReactAnalyzer.d.ts +90 -0
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ReactAnalyzer.js +1153 -0
- package/dist/plugins/analysis/RustAnalyzer.d.ts +13 -0
- package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/RustAnalyzer.js +259 -0
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts +21 -0
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/SQLiteAnalyzer.js +317 -0
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts +35 -0
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +303 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +33 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.js +283 -0
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts +27 -0
- package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -0
- package/dist/plugins/analysis/SystemDbAnalyzer.js +211 -0
- package/dist/plugins/analysis/ast/ConditionParser.d.ts +85 -0
- package/dist/plugins/analysis/ast/ConditionParser.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/ConditionParser.js +277 -0
- package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts +15 -0
- package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/ExpressionEvaluator.js +91 -0
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +77 -0
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/GraphBuilder.js +1077 -0
- package/dist/plugins/analysis/ast/OxcAdapter.d.ts +41 -0
- package/dist/plugins/analysis/ast/OxcAdapter.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/OxcAdapter.js +40 -0
- package/dist/plugins/analysis/ast/types.d.ts +346 -0
- package/dist/plugins/analysis/ast/types.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/types.js +4 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +93 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +24 -0
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +77 -0
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +377 -0
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +27 -0
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +232 -0
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +25 -0
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +172 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +29 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +180 -0
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +14 -0
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +200 -0
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +45 -0
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +150 -0
- package/dist/plugins/analysis/ast/visitors/index.d.ts +17 -0
- package/dist/plugins/analysis/ast/visitors/index.d.ts.map +1 -0
- package/dist/plugins/analysis/ast/visitors/index.js +13 -0
- package/dist/plugins/discovery/DiscoveryPlugin.d.ts +34 -0
- package/dist/plugins/discovery/DiscoveryPlugin.d.ts.map +1 -0
- package/dist/plugins/discovery/DiscoveryPlugin.js +26 -0
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts +26 -0
- package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/MonorepoServiceDiscovery.js +79 -0
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts +14 -0
- package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/SimpleProjectDiscovery.js +65 -0
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +19 -0
- package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +1 -0
- package/dist/plugins/discovery/ZonServiceDiscovery.js +204 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts +40 -0
- package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -0
- package/dist/plugins/enrichment/AliasTracker.js +290 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +30 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/HTTPConnectionEnricher.js +135 -0
- package/dist/plugins/enrichment/ImportExportLinker.d.ts +30 -0
- package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -0
- package/dist/plugins/enrichment/ImportExportLinker.js +176 -0
- package/dist/plugins/enrichment/InstanceOfResolver.d.ts +21 -0
- package/dist/plugins/enrichment/InstanceOfResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/InstanceOfResolver.js +117 -0
- package/dist/plugins/enrichment/MethodCallResolver.d.ts +41 -0
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/MethodCallResolver.js +252 -0
- package/dist/plugins/enrichment/MountPointResolver.d.ts +26 -0
- package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -0
- package/dist/plugins/enrichment/MountPointResolver.js +189 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts +89 -0
- package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -0
- package/dist/plugins/enrichment/PrefixEvaluator.js +415 -0
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts +25 -0
- package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -0
- package/dist/plugins/enrichment/RustFFIEnricher.js +170 -0
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +114 -0
- package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -0
- package/dist/plugins/enrichment/ValueDomainAnalyzer.js +464 -0
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts +27 -0
- package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -0
- package/dist/plugins/indexing/IncrementalModuleIndexer.js +238 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts +33 -0
- package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -0
- package/dist/plugins/indexing/JSModuleIndexer.js +299 -0
- package/dist/plugins/indexing/RustModuleIndexer.d.ts +28 -0
- package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -0
- package/dist/plugins/indexing/RustModuleIndexer.js +140 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts +46 -0
- package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -0
- package/dist/plugins/indexing/ServiceDetector.js +164 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts +23 -0
- package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -0
- package/dist/plugins/validation/CallResolverValidator.js +108 -0
- package/dist/plugins/validation/DataFlowValidator.d.ts +24 -0
- package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -0
- package/dist/plugins/validation/DataFlowValidator.js +148 -0
- package/dist/plugins/validation/EvalBanValidator.d.ts +25 -0
- package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -0
- package/dist/plugins/validation/EvalBanValidator.js +123 -0
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts +11 -0
- package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -0
- package/dist/plugins/validation/GraphConnectivityValidator.js +135 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts +43 -0
- package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -0
- package/dist/plugins/validation/SQLInjectionValidator.js +251 -0
- package/dist/plugins/validation/ShadowingDetector.d.ts +26 -0
- package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -0
- package/dist/plugins/validation/ShadowingDetector.js +119 -0
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts +21 -0
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -0
- package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +151 -0
- package/dist/plugins/vcs/GitPlugin.d.ts +84 -0
- package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -0
- package/dist/plugins/vcs/GitPlugin.js +295 -0
- package/dist/plugins/vcs/VCSPlugin.d.ts +133 -0
- package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -0
- package/dist/plugins/vcs/VCSPlugin.js +82 -0
- package/dist/plugins/vcs/index.d.ts +10 -0
- package/dist/plugins/vcs/index.d.ts.map +1 -0
- package/dist/plugins/vcs/index.js +18 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +258 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -0
- package/dist/storage/backends/RFDBServerBackend.js +565 -0
- package/dist/storage/backends/typeValidation.d.ts +47 -0
- package/dist/storage/backends/typeValidation.d.ts.map +1 -0
- package/dist/storage/backends/typeValidation.js +137 -0
- package/dist/validation/PathValidator.d.ts +81 -0
- package/dist/validation/PathValidator.d.ts.map +1 -0
- package/dist/validation/PathValidator.js +251 -0
- package/package.json +57 -0
- package/src/.rfguard/current-session.txt +1 -0
- package/src/Orchestrator.ts +673 -0
- package/src/api/GraphAPI.ts +305 -0
- package/src/api/GuaranteeAPI.ts +401 -0
- package/src/core/ASTWorker.ts +567 -0
- package/src/core/ASTWorkerPool.ts +299 -0
- package/src/core/AnalysisQueue.ts +447 -0
- package/src/core/AnalysisWorker.ts +410 -0
- package/src/core/GraphBackend.ts +265 -0
- package/src/core/GuaranteeManager.ts +581 -0
- package/src/core/ManifestStore.ts +196 -0
- package/src/core/NodeFactory.ts +274 -0
- package/src/core/NodeId.ts +257 -0
- package/src/core/ParallelAnalyzer.ts +476 -0
- package/src/core/PriorityQueue.ts +227 -0
- package/src/core/Profiler.ts +188 -0
- package/src/core/QueueWorker.ts +780 -0
- package/src/core/Task.ts +107 -0
- package/src/core/TaskTypes.ts +40 -0
- package/src/core/VersionManager.ts +404 -0
- package/src/core/WorkerPool.ts +180 -0
- package/src/core/nodes/CallSiteNode.ts +72 -0
- package/src/core/nodes/ClassNode.ts +69 -0
- package/src/core/nodes/ConstantNode.ts +63 -0
- package/src/core/nodes/DatabaseQueryNode.ts +60 -0
- package/src/core/nodes/EntrypointNode.ts +164 -0
- package/src/core/nodes/EventListenerNode.ts +64 -0
- package/src/core/nodes/ExportNode.ts +71 -0
- package/src/core/nodes/ExternalStdioNode.ts +36 -0
- package/src/core/nodes/FunctionNode.ts +78 -0
- package/src/core/nodes/GuaranteeNode.ts +162 -0
- package/src/core/nodes/HttpRequestNode.ts +63 -0
- package/src/core/nodes/ImportNode.ts +75 -0
- package/src/core/nodes/LiteralNode.ts +67 -0
- package/src/core/nodes/MethodCallNode.ts +79 -0
- package/src/core/nodes/MethodNode.ts +78 -0
- package/src/core/nodes/ModuleNode.ts +74 -0
- package/src/core/nodes/NodeKind.ts +171 -0
- package/src/core/nodes/ParameterNode.ts +73 -0
- package/src/core/nodes/ScopeNode.ts +80 -0
- package/src/core/nodes/ServiceNode.ts +86 -0
- package/src/core/nodes/VariableDeclarationNode.ts +60 -0
- package/src/core/nodes/index.ts +49 -0
- package/src/index.ts +93 -0
- package/src/plugins/Plugin.ts +74 -0
- package/src/plugins/analysis/DatabaseAnalyzer.ts +322 -0
- package/src/plugins/analysis/ExpressAnalyzer.ts +401 -0
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +414 -0
- package/src/plugins/analysis/FetchAnalyzer.ts +441 -0
- package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +686 -0
- package/src/plugins/analysis/JSASTAnalyzer.ts +1680 -0
- package/src/plugins/analysis/ReactAnalyzer.ts +1368 -0
- package/src/plugins/analysis/RustAnalyzer.ts +438 -0
- package/src/plugins/analysis/SQLiteAnalyzer.ts +388 -0
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +429 -0
- package/src/plugins/analysis/SocketIOAnalyzer.ts +395 -0
- package/src/plugins/analysis/SystemDbAnalyzer.ts +284 -0
- package/src/plugins/analysis/ast/ConditionParser.ts +333 -0
- package/src/plugins/analysis/ast/ExpressionEvaluator.ts +117 -0
- package/src/plugins/analysis/ast/GraphBuilder.ts +1371 -0
- package/src/plugins/analysis/ast/OxcAdapter.ts +63 -0
- package/src/plugins/analysis/ast/types.ts +400 -0
- package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +137 -0
- package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +528 -0
- package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +339 -0
- package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +273 -0
- package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +259 -0
- package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +235 -0
- package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +268 -0
- package/src/plugins/analysis/ast/visitors/index.ts +36 -0
- package/src/plugins/discovery/DiscoveryPlugin.ts +50 -0
- package/src/plugins/discovery/MonorepoServiceDiscovery.ts +117 -0
- package/src/plugins/discovery/SimpleProjectDiscovery.ts +102 -0
- package/src/plugins/enrichment/AliasTracker.ts +399 -0
- package/src/plugins/enrichment/HTTPConnectionEnricher.ts +192 -0
- package/src/plugins/enrichment/ImportExportLinker.ts +221 -0
- package/src/plugins/enrichment/InstanceOfResolver.ts +165 -0
- package/src/plugins/enrichment/MethodCallResolver.ts +333 -0
- package/src/plugins/enrichment/MountPointResolver.ts +264 -0
- package/src/plugins/enrichment/PrefixEvaluator.ts +527 -0
- package/src/plugins/enrichment/RustFFIEnricher.ts +218 -0
- package/src/plugins/enrichment/ValueDomainAnalyzer.ts +682 -0
- package/src/plugins/indexing/IncrementalModuleIndexer.ts +287 -0
- package/src/plugins/indexing/JSModuleIndexer.ts +374 -0
- package/src/plugins/indexing/RustModuleIndexer.ts +160 -0
- package/src/plugins/indexing/ServiceDetector.ts +230 -0
- package/src/plugins/validation/CallResolverValidator.ts +170 -0
- package/src/plugins/validation/DataFlowValidator.ts +233 -0
- package/src/plugins/validation/EvalBanValidator.ts +175 -0
- package/src/plugins/validation/GraphConnectivityValidator.ts +201 -0
- package/src/plugins/validation/SQLInjectionValidator.ts +363 -0
- package/src/plugins/validation/ShadowingDetector.ts +173 -0
- package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +203 -0
- package/src/plugins/vcs/GitPlugin.ts +344 -0
- package/src/plugins/vcs/VCSPlugin.ts +190 -0
- package/src/plugins/vcs/index.ts +32 -0
- package/src/storage/backends/RFDBServerBackend.ts +687 -0
- package/src/storage/backends/typeValidation.ts +151 -0
- package/src/validation/PathValidator.ts +342 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task - базовая единица работы в очереди
|
|
3
|
+
*/
|
|
4
|
+
export class Task {
|
|
5
|
+
id;
|
|
6
|
+
type;
|
|
7
|
+
priority;
|
|
8
|
+
data;
|
|
9
|
+
dependencies;
|
|
10
|
+
status;
|
|
11
|
+
result;
|
|
12
|
+
error;
|
|
13
|
+
startedAt;
|
|
14
|
+
completedAt;
|
|
15
|
+
retries;
|
|
16
|
+
maxRetries;
|
|
17
|
+
constructor({ id, type, priority = 50, data, dependencies = [] }) {
|
|
18
|
+
this.id = id;
|
|
19
|
+
this.type = type;
|
|
20
|
+
this.priority = priority;
|
|
21
|
+
this.data = data;
|
|
22
|
+
this.dependencies = dependencies;
|
|
23
|
+
this.status = 'pending';
|
|
24
|
+
this.result = null;
|
|
25
|
+
this.error = null;
|
|
26
|
+
this.startedAt = null;
|
|
27
|
+
this.completedAt = null;
|
|
28
|
+
this.retries = 0;
|
|
29
|
+
this.maxRetries = 3;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Может ли задача выполняться (все зависимости готовы)
|
|
33
|
+
*/
|
|
34
|
+
canExecute(completedTasks) {
|
|
35
|
+
return this.dependencies.every(depId => completedTasks.has(depId));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Начать выполнение
|
|
39
|
+
*/
|
|
40
|
+
start() {
|
|
41
|
+
this.status = 'running';
|
|
42
|
+
this.startedAt = Date.now();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Завершить успешно
|
|
46
|
+
*/
|
|
47
|
+
complete(result) {
|
|
48
|
+
this.status = 'completed';
|
|
49
|
+
this.result = result;
|
|
50
|
+
this.completedAt = Date.now();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Завершить с ошибкой
|
|
54
|
+
*/
|
|
55
|
+
fail(error) {
|
|
56
|
+
this.status = 'failed';
|
|
57
|
+
this.error = error;
|
|
58
|
+
this.completedAt = Date.now();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Можно ли повторить
|
|
62
|
+
*/
|
|
63
|
+
canRetry() {
|
|
64
|
+
return this.retries < this.maxRetries;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Повторить задачу
|
|
68
|
+
*/
|
|
69
|
+
retry() {
|
|
70
|
+
this.retries++;
|
|
71
|
+
this.status = 'pending';
|
|
72
|
+
this.error = null;
|
|
73
|
+
this.startedAt = null;
|
|
74
|
+
this.completedAt = null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Продолжительность выполнения (мс)
|
|
78
|
+
*/
|
|
79
|
+
get duration() {
|
|
80
|
+
if (!this.startedAt)
|
|
81
|
+
return 0;
|
|
82
|
+
const end = this.completedAt || Date.now();
|
|
83
|
+
return end - this.startedAt;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Types - конкретные типы данных для задач
|
|
3
|
+
*
|
|
4
|
+
* Extensibility: добавляйте новые типы в TaskData union
|
|
5
|
+
*/
|
|
6
|
+
import type { ModuleNode } from '../plugins/analysis/ast/types.js';
|
|
7
|
+
export type TaskType = 'ANALYZE_MODULE';
|
|
8
|
+
/**
|
|
9
|
+
* Данные для ANALYZE_MODULE задачи
|
|
10
|
+
*/
|
|
11
|
+
export interface AnalyzeModuleData {
|
|
12
|
+
module: ModuleNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Union всех возможных TaskData
|
|
16
|
+
* Расширяется при добавлении новых типов задач
|
|
17
|
+
*/
|
|
18
|
+
export type TaskData = AnalyzeModuleData;
|
|
19
|
+
export declare function isAnalyzeModuleData(data: TaskData): data is AnalyzeModuleData;
|
|
20
|
+
//# sourceMappingURL=TaskTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskTypes.d.ts","sourceRoot":"","sources":["../../src/core/TaskTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAGnE,MAAM,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAKxC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;CACpB;AASD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,iBAAiB,CAE7E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Types - конкретные типы данных для задач
|
|
3
|
+
*
|
|
4
|
+
* Extensibility: добавляйте новые типы в TaskData union
|
|
5
|
+
*/
|
|
6
|
+
// При добавлении: AnalyzeModuleData | NewTypeData;
|
|
7
|
+
// === TYPE GUARDS ===
|
|
8
|
+
export function isAnalyzeModuleData(data) {
|
|
9
|
+
return 'module' in data && data.module !== null && typeof data.module === 'object';
|
|
10
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VersionManager - управление версиями нод для incremental analysis
|
|
3
|
+
*
|
|
4
|
+
* КОНЦЕПЦИЯ:
|
|
5
|
+
* - Храним несколько версий кода одновременно (main, __local, branch names)
|
|
6
|
+
* - Используем stable IDs для сравнения версий
|
|
7
|
+
* - Поддерживаем fine-grained merge (только изменённые ноды)
|
|
8
|
+
*
|
|
9
|
+
* ВЕРСИИ:
|
|
10
|
+
* - "main" - committed код из git HEAD
|
|
11
|
+
* - "__local" - uncommitted изменения (working directory)
|
|
12
|
+
* - "branch-name" - другие ветки (будущее)
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Version constants
|
|
16
|
+
*/
|
|
17
|
+
export interface VersionConstants {
|
|
18
|
+
MAIN: 'main';
|
|
19
|
+
LOCAL: '__local';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Node types for stable ID generation
|
|
23
|
+
*/
|
|
24
|
+
export type StableIdNodeType = 'FUNCTION' | 'CLASS' | 'INTERFACE' | 'TYPE_ALIAS' | 'VARIABLE_DECLARATION' | 'MODULE' | 'SERVICE' | 'CALL_SITE' | 'SCOPE' | 'EXPRESSION' | 'STATEMENT' | 'DATABASE_QUERY' | 'HTTP_REQUEST' | 'FILESYSTEM' | 'NETWORK' | 'ENDPOINT';
|
|
25
|
+
/**
|
|
26
|
+
* Node for stable ID generation
|
|
27
|
+
*/
|
|
28
|
+
export interface VersionedNode {
|
|
29
|
+
type: string;
|
|
30
|
+
name?: string;
|
|
31
|
+
file?: string;
|
|
32
|
+
line?: number;
|
|
33
|
+
column?: number;
|
|
34
|
+
query?: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
path?: string;
|
|
37
|
+
endpoint?: string;
|
|
38
|
+
params?: unknown[];
|
|
39
|
+
returnType?: string;
|
|
40
|
+
async?: boolean;
|
|
41
|
+
exported?: boolean;
|
|
42
|
+
bodyHash?: string;
|
|
43
|
+
methods?: unknown[];
|
|
44
|
+
properties?: unknown[];
|
|
45
|
+
extends?: string;
|
|
46
|
+
implements?: string[];
|
|
47
|
+
kind?: string;
|
|
48
|
+
value?: unknown;
|
|
49
|
+
contentHash?: string;
|
|
50
|
+
imports?: unknown[];
|
|
51
|
+
exports?: unknown[];
|
|
52
|
+
arguments?: unknown[];
|
|
53
|
+
callee?: string;
|
|
54
|
+
operation?: string;
|
|
55
|
+
collection?: string;
|
|
56
|
+
method?: string;
|
|
57
|
+
handler?: string;
|
|
58
|
+
id?: string;
|
|
59
|
+
version?: string;
|
|
60
|
+
_stableId?: string;
|
|
61
|
+
_replaces?: string;
|
|
62
|
+
updatedAt?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* REPLACES edge structure
|
|
66
|
+
*/
|
|
67
|
+
export interface ReplacesEdge {
|
|
68
|
+
type: 'REPLACES';
|
|
69
|
+
fromId: string;
|
|
70
|
+
toId: string;
|
|
71
|
+
version: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Enrichment options
|
|
75
|
+
*/
|
|
76
|
+
export interface EnrichOptions {
|
|
77
|
+
replacesId?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Modified node info
|
|
81
|
+
*/
|
|
82
|
+
export interface ModifiedNodeInfo {
|
|
83
|
+
old: VersionedNode;
|
|
84
|
+
new: VersionedNode;
|
|
85
|
+
stableId: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Changes summary
|
|
89
|
+
*/
|
|
90
|
+
export interface ChangesSummary {
|
|
91
|
+
addedCount: number;
|
|
92
|
+
modifiedCount: number;
|
|
93
|
+
unchangedCount: number;
|
|
94
|
+
deletedCount: number;
|
|
95
|
+
totalChanges: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Classification result
|
|
99
|
+
*/
|
|
100
|
+
export interface ClassifyChangesResult {
|
|
101
|
+
added: VersionedNode[];
|
|
102
|
+
modified: ModifiedNodeInfo[];
|
|
103
|
+
unchanged: VersionedNode[];
|
|
104
|
+
deleted: VersionedNode[];
|
|
105
|
+
summary: ChangesSummary;
|
|
106
|
+
}
|
|
107
|
+
export declare class VersionManager {
|
|
108
|
+
readonly versions: VersionConstants;
|
|
109
|
+
constructor();
|
|
110
|
+
/**
|
|
111
|
+
* Генерировать stable ID для ноды (без версии)
|
|
112
|
+
*
|
|
113
|
+
* Stable ID остаётся одинаковым для одной и той же сущности
|
|
114
|
+
* в разных версиях кода
|
|
115
|
+
*/
|
|
116
|
+
generateStableId(node: VersionedNode): string;
|
|
117
|
+
/**
|
|
118
|
+
* Генерировать versioned ID для ноды
|
|
119
|
+
*/
|
|
120
|
+
generateVersionedId(node: VersionedNode, version: string): string;
|
|
121
|
+
/**
|
|
122
|
+
* Извлечь stable ID из versioned ID
|
|
123
|
+
*/
|
|
124
|
+
extractStableId(versionedId: string): string;
|
|
125
|
+
/**
|
|
126
|
+
* Извлечь версию из versioned ID
|
|
127
|
+
*/
|
|
128
|
+
extractVersion(versionedId: string): string;
|
|
129
|
+
/**
|
|
130
|
+
* Проверить, имеет ли нода структурные изменения
|
|
131
|
+
*/
|
|
132
|
+
hasStructuralChanges(oldNode: VersionedNode, newNode: VersionedNode): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Получить ключи для сравнения в зависимости от типа ноды
|
|
135
|
+
*/
|
|
136
|
+
private _getComparisonKeys;
|
|
137
|
+
/**
|
|
138
|
+
* Вычислить хеш тела функции для сравнения
|
|
139
|
+
*/
|
|
140
|
+
calculateBodyHash(bodySource: string | null | undefined): string | null;
|
|
141
|
+
/**
|
|
142
|
+
* Создать REPLACES ребро между версиями
|
|
143
|
+
*/
|
|
144
|
+
createReplacesEdge(localNodeId: string, mainNodeId: string): ReplacesEdge;
|
|
145
|
+
/**
|
|
146
|
+
* Дополнить ноду полями для version-aware анализа
|
|
147
|
+
*/
|
|
148
|
+
enrichNodeWithVersion(node: VersionedNode, version: string, options?: EnrichOptions): VersionedNode;
|
|
149
|
+
/**
|
|
150
|
+
* Классифицировать изменения между версиями
|
|
151
|
+
*/
|
|
152
|
+
classifyChanges(mainNodes: VersionedNode[], localNodes: VersionedNode[]): ClassifyChangesResult;
|
|
153
|
+
/**
|
|
154
|
+
* Проверить, является ли версия локальной (uncommitted)
|
|
155
|
+
*/
|
|
156
|
+
isLocalVersion(version: string): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Проверить, является ли версия основной (committed)
|
|
159
|
+
*/
|
|
160
|
+
isMainVersion(version: string): boolean;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Singleton instance
|
|
164
|
+
*/
|
|
165
|
+
export declare const versionManager: VersionManager;
|
|
166
|
+
//# sourceMappingURL=VersionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersionManager.d.ts","sourceRoot":"","sources":["../../src/core/VersionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VersionManager - управление версиями нод для incremental analysis
|
|
3
|
+
*
|
|
4
|
+
* КОНЦЕПЦИЯ:
|
|
5
|
+
* - Храним несколько версий кода одновременно (main, __local, branch names)
|
|
6
|
+
* - Используем stable IDs для сравнения версий
|
|
7
|
+
* - Поддерживаем fine-grained merge (только изменённые ноды)
|
|
8
|
+
*
|
|
9
|
+
* ВЕРСИИ:
|
|
10
|
+
* - "main" - committed код из git HEAD
|
|
11
|
+
* - "__local" - uncommitted изменения (working directory)
|
|
12
|
+
* - "branch-name" - другие ветки (будущее)
|
|
13
|
+
*/
|
|
14
|
+
import { createHash } from 'crypto';
|
|
15
|
+
export class VersionManager {
|
|
16
|
+
versions;
|
|
17
|
+
constructor() {
|
|
18
|
+
this.versions = {
|
|
19
|
+
MAIN: 'main',
|
|
20
|
+
LOCAL: '__local'
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Генерировать stable ID для ноды (без версии)
|
|
25
|
+
*
|
|
26
|
+
* Stable ID остаётся одинаковым для одной и той же сущности
|
|
27
|
+
* в разных версиях кода
|
|
28
|
+
*/
|
|
29
|
+
generateStableId(node) {
|
|
30
|
+
const { type, name, file, line, column } = node;
|
|
31
|
+
// Для FUNCTION, CLASS - используем type:name:file
|
|
32
|
+
if (['FUNCTION', 'CLASS', 'INTERFACE', 'TYPE_ALIAS'].includes(type)) {
|
|
33
|
+
return `${type}:${name}:${file}`;
|
|
34
|
+
}
|
|
35
|
+
// Для VARIABLE_DECLARATION - добавляем line для различения локальных переменных
|
|
36
|
+
if (type === 'VARIABLE_DECLARATION') {
|
|
37
|
+
return `${type}:${name}:${file}:${line || 0}`;
|
|
38
|
+
}
|
|
39
|
+
// Для MODULE - только file
|
|
40
|
+
if (type === 'MODULE') {
|
|
41
|
+
return `MODULE:${file}`;
|
|
42
|
+
}
|
|
43
|
+
// Для SERVICE - используем имя или file
|
|
44
|
+
if (type === 'SERVICE') {
|
|
45
|
+
return `SERVICE:${name || file}`;
|
|
46
|
+
}
|
|
47
|
+
// Для вложенных нод (CALL_SITE, SCOPE, EXPRESSION) - используем file:line:column
|
|
48
|
+
if (['CALL_SITE', 'SCOPE', 'EXPRESSION', 'STATEMENT'].includes(type)) {
|
|
49
|
+
return `${type}:${file}:${line || 0}:${column || 0}`;
|
|
50
|
+
}
|
|
51
|
+
// Для EXTERNAL нод (DATABASE_QUERY, HTTP_REQUEST) - используем содержимое
|
|
52
|
+
if (['DATABASE_QUERY', 'HTTP_REQUEST', 'FILESYSTEM', 'NETWORK'].includes(type)) {
|
|
53
|
+
// Используем хеш содержимого для уникальности
|
|
54
|
+
const content = node.query || node.url || node.path || node.endpoint || '';
|
|
55
|
+
const hash = createHash('sha256').update(content).digest('hex').substring(0, 16);
|
|
56
|
+
return `${type}:${hash}`;
|
|
57
|
+
}
|
|
58
|
+
// По умолчанию - используем все доступные поля
|
|
59
|
+
const parts = [type, name, file, line, column].filter(p => p !== undefined && p !== null);
|
|
60
|
+
return parts.join(':');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Генерировать versioned ID для ноды
|
|
64
|
+
*/
|
|
65
|
+
generateVersionedId(node, version) {
|
|
66
|
+
const stableId = this.generateStableId(node);
|
|
67
|
+
return `${stableId}:${version}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Извлечь stable ID из versioned ID
|
|
71
|
+
*/
|
|
72
|
+
extractStableId(versionedId) {
|
|
73
|
+
const lastColonIndex = versionedId.lastIndexOf(':');
|
|
74
|
+
return versionedId.substring(0, lastColonIndex);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Извлечь версию из versioned ID
|
|
78
|
+
*/
|
|
79
|
+
extractVersion(versionedId) {
|
|
80
|
+
const lastColonIndex = versionedId.lastIndexOf(':');
|
|
81
|
+
return versionedId.substring(lastColonIndex + 1);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Проверить, имеет ли нода структурные изменения
|
|
85
|
+
*/
|
|
86
|
+
hasStructuralChanges(oldNode, newNode) {
|
|
87
|
+
// Список ключевых полей для сравнения (зависит от типа ноды)
|
|
88
|
+
const keysToCompare = this._getComparisonKeys(oldNode.type);
|
|
89
|
+
for (const key of keysToCompare) {
|
|
90
|
+
const oldValue = oldNode[key];
|
|
91
|
+
const newValue = newNode[key];
|
|
92
|
+
// Глубокое сравнение для массивов и объектов
|
|
93
|
+
if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Получить ключи для сравнения в зависимости от типа ноды
|
|
101
|
+
*/
|
|
102
|
+
_getComparisonKeys(nodeType) {
|
|
103
|
+
const commonKeys = ['name', 'line', 'column'];
|
|
104
|
+
const typeSpecificKeys = {
|
|
105
|
+
FUNCTION: ['params', 'returnType', 'async', 'exported', 'bodyHash'],
|
|
106
|
+
CLASS: ['methods', 'properties', 'extends', 'implements', 'exported'],
|
|
107
|
+
VARIABLE_DECLARATION: ['kind', 'value', 'exported'],
|
|
108
|
+
MODULE: ['contentHash', 'imports', 'exports'],
|
|
109
|
+
CALL_SITE: ['arguments', 'callee'],
|
|
110
|
+
DATABASE_QUERY: ['query', 'operation', 'collection'],
|
|
111
|
+
HTTP_REQUEST: ['method', 'url', 'endpoint'],
|
|
112
|
+
ENDPOINT: ['path', 'method', 'handler']
|
|
113
|
+
};
|
|
114
|
+
return [...commonKeys, ...(typeSpecificKeys[nodeType] || [])];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Вычислить хеш тела функции для сравнения
|
|
118
|
+
*/
|
|
119
|
+
calculateBodyHash(bodySource) {
|
|
120
|
+
if (!bodySource)
|
|
121
|
+
return null;
|
|
122
|
+
// Нормализуем код: убираем пробелы и комментарии для сравнения
|
|
123
|
+
const normalized = bodySource
|
|
124
|
+
.replace(/\/\*[\s\S]*?\*\//g, '') // Блочные комментарии
|
|
125
|
+
.replace(/\/\/.*/g, '') // Строчные комментарии
|
|
126
|
+
.replace(/\s+/g, ' ') // Множественные пробелы -> один пробел
|
|
127
|
+
.trim();
|
|
128
|
+
return createHash('sha256').update(normalized, 'utf-8').digest('hex');
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Создать REPLACES ребро между версиями
|
|
132
|
+
*/
|
|
133
|
+
createReplacesEdge(localNodeId, mainNodeId) {
|
|
134
|
+
return {
|
|
135
|
+
type: 'REPLACES',
|
|
136
|
+
fromId: localNodeId,
|
|
137
|
+
toId: mainNodeId,
|
|
138
|
+
version: '__local' // Edge тоже имеет версию
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Дополнить ноду полями для version-aware анализа
|
|
143
|
+
*/
|
|
144
|
+
enrichNodeWithVersion(node, version, options = {}) {
|
|
145
|
+
const stableId = this.generateStableId(node);
|
|
146
|
+
const versionedId = this.generateVersionedId(node, version);
|
|
147
|
+
const enriched = {
|
|
148
|
+
...node,
|
|
149
|
+
id: versionedId,
|
|
150
|
+
version: version,
|
|
151
|
+
_stableId: stableId
|
|
152
|
+
};
|
|
153
|
+
// Добавляем _replaces если это замена main версии
|
|
154
|
+
if (options.replacesId) {
|
|
155
|
+
enriched._replaces = options.replacesId;
|
|
156
|
+
}
|
|
157
|
+
// Добавляем timestamp
|
|
158
|
+
if (!enriched.updatedAt) {
|
|
159
|
+
enriched.updatedAt = Date.now();
|
|
160
|
+
}
|
|
161
|
+
return enriched;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Классифицировать изменения между версиями
|
|
165
|
+
*/
|
|
166
|
+
classifyChanges(mainNodes, localNodes) {
|
|
167
|
+
// Создаём Map по stable ID
|
|
168
|
+
const mainMap = new Map();
|
|
169
|
+
for (const node of mainNodes) {
|
|
170
|
+
const stableId = this.generateStableId(node);
|
|
171
|
+
mainMap.set(stableId, node);
|
|
172
|
+
}
|
|
173
|
+
const localMap = new Map();
|
|
174
|
+
for (const node of localNodes) {
|
|
175
|
+
const stableId = this.generateStableId(node);
|
|
176
|
+
localMap.set(stableId, node);
|
|
177
|
+
}
|
|
178
|
+
// Классификация
|
|
179
|
+
const added = [];
|
|
180
|
+
const modified = [];
|
|
181
|
+
const unchanged = [];
|
|
182
|
+
const deleted = [];
|
|
183
|
+
// Проверяем локальные ноды
|
|
184
|
+
for (const [stableId, localNode] of localMap) {
|
|
185
|
+
if (!mainMap.has(stableId)) {
|
|
186
|
+
// Нода добавлена
|
|
187
|
+
added.push(localNode);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
const mainNode = mainMap.get(stableId);
|
|
191
|
+
if (this.hasStructuralChanges(mainNode, localNode)) {
|
|
192
|
+
// Нода изменена
|
|
193
|
+
modified.push({ old: mainNode, new: localNode, stableId });
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// Нода не изменилась
|
|
197
|
+
unchanged.push(localNode);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Проверяем удалённые ноды (есть в main, нет в local)
|
|
202
|
+
for (const [stableId, mainNode] of mainMap) {
|
|
203
|
+
if (!localMap.has(stableId)) {
|
|
204
|
+
deleted.push(mainNode);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
added, // Новые ноды
|
|
209
|
+
modified, // Изменённые ноды
|
|
210
|
+
unchanged, // Неизменённые ноды
|
|
211
|
+
deleted, // Удалённые ноды
|
|
212
|
+
summary: {
|
|
213
|
+
addedCount: added.length,
|
|
214
|
+
modifiedCount: modified.length,
|
|
215
|
+
unchangedCount: unchanged.length,
|
|
216
|
+
deletedCount: deleted.length,
|
|
217
|
+
totalChanges: added.length + modified.length + deleted.length
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Проверить, является ли версия локальной (uncommitted)
|
|
223
|
+
*/
|
|
224
|
+
isLocalVersion(version) {
|
|
225
|
+
return version === this.versions.LOCAL;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Проверить, является ли версия основной (committed)
|
|
229
|
+
*/
|
|
230
|
+
isMainVersion(version) {
|
|
231
|
+
return version === this.versions.MAIN;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Singleton instance
|
|
236
|
+
*/
|
|
237
|
+
export const versionManager = new VersionManager();
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerPool - worker pool for parallel task execution
|
|
3
|
+
*
|
|
4
|
+
* Key property: HORIZONTAL SCALING
|
|
5
|
+
* More workers = faster processing (up to CPU/IO limit)
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import type { Task, QueueStats } from './PriorityQueue.js';
|
|
9
|
+
/**
|
|
10
|
+
* Task handler function type
|
|
11
|
+
*/
|
|
12
|
+
export type TaskHandler = (task: Task) => Promise<unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Handler registry
|
|
15
|
+
*/
|
|
16
|
+
export interface TaskHandlers {
|
|
17
|
+
[taskType: string]: TaskHandler;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Queue interface for WorkerPool
|
|
21
|
+
*/
|
|
22
|
+
export interface WorkerQueue {
|
|
23
|
+
isEmpty: boolean;
|
|
24
|
+
next(): Task | null;
|
|
25
|
+
complete(taskId: string, result: unknown): void;
|
|
26
|
+
fail(taskId: string, error: Error): void;
|
|
27
|
+
getStats(): QueueStats;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Worker pool statistics
|
|
31
|
+
*/
|
|
32
|
+
export interface WorkerPoolStats {
|
|
33
|
+
workerCount: number;
|
|
34
|
+
activeWorkers: number;
|
|
35
|
+
running: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface WorkerTaskStartEvent {
|
|
38
|
+
workerId: number;
|
|
39
|
+
task: Task;
|
|
40
|
+
}
|
|
41
|
+
export interface WorkerTaskCompletedEvent {
|
|
42
|
+
workerId: number;
|
|
43
|
+
task: Task;
|
|
44
|
+
result: unknown;
|
|
45
|
+
}
|
|
46
|
+
export interface WorkerTaskFailedEvent {
|
|
47
|
+
workerId: number;
|
|
48
|
+
task: Task;
|
|
49
|
+
error: unknown;
|
|
50
|
+
}
|
|
51
|
+
export declare class WorkerPool extends EventEmitter {
|
|
52
|
+
private workerCount;
|
|
53
|
+
private handlers;
|
|
54
|
+
private activeWorkers;
|
|
55
|
+
private running;
|
|
56
|
+
constructor(workerCount?: number, handlers?: TaskHandlers);
|
|
57
|
+
/**
|
|
58
|
+
* Register handler for task type
|
|
59
|
+
*/
|
|
60
|
+
registerHandler(taskType: string, handler: TaskHandler): void;
|
|
61
|
+
/**
|
|
62
|
+
* Start queue processing
|
|
63
|
+
*/
|
|
64
|
+
processQueue(queue: WorkerQueue): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Worker - picks task from queue and executes
|
|
67
|
+
*/
|
|
68
|
+
private _worker;
|
|
69
|
+
/**
|
|
70
|
+
* Sleep helper
|
|
71
|
+
*/
|
|
72
|
+
private _sleep;
|
|
73
|
+
/**
|
|
74
|
+
* Stop pool (graceful shutdown)
|
|
75
|
+
*/
|
|
76
|
+
stop(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Statistics
|
|
79
|
+
*/
|
|
80
|
+
getStats(): WorkerPoolStats;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=WorkerPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerPool.d.ts","sourceRoot":"","sources":["../../src/core/WorkerPool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACzC,QAAQ,IAAI,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,GAAE,MAAW,EAAE,QAAQ,GAAE,YAAiB;IAQjE;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAI7D;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;OAEG;YACW,OAAO;IA2CrB;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B;;OAEG;IACH,QAAQ,IAAI,eAAe;CAO5B"}
|