@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.
Files changed (402) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +76 -0
  3. package/dist/Orchestrator.d.ts +142 -0
  4. package/dist/Orchestrator.d.ts.map +1 -0
  5. package/dist/Orchestrator.js +481 -0
  6. package/dist/api/GraphAPI.d.ts +87 -0
  7. package/dist/api/GraphAPI.d.ts.map +1 -0
  8. package/dist/api/GraphAPI.js +210 -0
  9. package/dist/api/GuaranteeAPI.d.ts +147 -0
  10. package/dist/api/GuaranteeAPI.d.ts.map +1 -0
  11. package/dist/api/GuaranteeAPI.js +288 -0
  12. package/dist/core/ASTWorker.d.ts +133 -0
  13. package/dist/core/ASTWorker.d.ts.map +1 -0
  14. package/dist/core/ASTWorker.js +352 -0
  15. package/dist/core/ASTWorkerPool.d.ts +85 -0
  16. package/dist/core/ASTWorkerPool.d.ts.map +1 -0
  17. package/dist/core/ASTWorkerPool.js +207 -0
  18. package/dist/core/AnalysisQueue.d.ts +104 -0
  19. package/dist/core/AnalysisQueue.d.ts.map +1 -0
  20. package/dist/core/AnalysisQueue.js +299 -0
  21. package/dist/core/AnalysisWorker.d.ts +14 -0
  22. package/dist/core/AnalysisWorker.d.ts.map +1 -0
  23. package/dist/core/AnalysisWorker.js +307 -0
  24. package/dist/core/GraphBackend.d.ts +156 -0
  25. package/dist/core/GraphBackend.d.ts.map +1 -0
  26. package/dist/core/GraphBackend.js +85 -0
  27. package/dist/core/GuaranteeManager.d.ts +230 -0
  28. package/dist/core/GuaranteeManager.d.ts.map +1 -0
  29. package/dist/core/GuaranteeManager.js +352 -0
  30. package/dist/core/ManifestStore.d.ts +71 -0
  31. package/dist/core/ManifestStore.d.ts.map +1 -0
  32. package/dist/core/ManifestStore.js +146 -0
  33. package/dist/core/NodeFactory.d.ts +160 -0
  34. package/dist/core/NodeFactory.d.ts.map +1 -0
  35. package/dist/core/NodeFactory.js +137 -0
  36. package/dist/core/NodeId.d.ts +88 -0
  37. package/dist/core/NodeId.d.ts.map +1 -0
  38. package/dist/core/NodeId.js +170 -0
  39. package/dist/core/ParallelAnalyzer.d.ts +120 -0
  40. package/dist/core/ParallelAnalyzer.d.ts.map +1 -0
  41. package/dist/core/ParallelAnalyzer.js +331 -0
  42. package/dist/core/PriorityQueue.d.ts +106 -0
  43. package/dist/core/PriorityQueue.d.ts.map +1 -0
  44. package/dist/core/PriorityQueue.js +168 -0
  45. package/dist/core/Profiler.d.ts +75 -0
  46. package/dist/core/Profiler.d.ts.map +1 -0
  47. package/dist/core/Profiler.js +149 -0
  48. package/dist/core/QueueWorker.d.ts +12 -0
  49. package/dist/core/QueueWorker.d.ts.map +1 -0
  50. package/dist/core/QueueWorker.js +567 -0
  51. package/dist/core/RFDBClient.d.ts +179 -0
  52. package/dist/core/RFDBClient.d.ts.map +1 -0
  53. package/dist/core/RFDBClient.js +429 -0
  54. package/dist/core/Task.d.ts +56 -0
  55. package/dist/core/Task.d.ts.map +1 -0
  56. package/dist/core/Task.js +85 -0
  57. package/dist/core/TaskTypes.d.ts +20 -0
  58. package/dist/core/TaskTypes.d.ts.map +1 -0
  59. package/dist/core/TaskTypes.js +10 -0
  60. package/dist/core/VersionManager.d.ts +166 -0
  61. package/dist/core/VersionManager.d.ts.map +1 -0
  62. package/dist/core/VersionManager.js +237 -0
  63. package/dist/core/WorkerPool.d.ts +82 -0
  64. package/dist/core/WorkerPool.d.ts.map +1 -0
  65. package/dist/core/WorkerPool.js +109 -0
  66. package/dist/core/nodes/CallSiteNode.d.ts +26 -0
  67. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -0
  68. package/dist/core/nodes/CallSiteNode.js +44 -0
  69. package/dist/core/nodes/ClassNode.d.ts +25 -0
  70. package/dist/core/nodes/ClassNode.d.ts.map +1 -0
  71. package/dist/core/nodes/ClassNode.js +40 -0
  72. package/dist/core/nodes/ConstantNode.d.ts +24 -0
  73. package/dist/core/nodes/ConstantNode.d.ts.map +1 -0
  74. package/dist/core/nodes/ConstantNode.js +39 -0
  75. package/dist/core/nodes/DatabaseQueryNode.d.ts +22 -0
  76. package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -0
  77. package/dist/core/nodes/DatabaseQueryNode.js +37 -0
  78. package/dist/core/nodes/EntrypointNode.d.ts +102 -0
  79. package/dist/core/nodes/EntrypointNode.d.ts.map +1 -0
  80. package/dist/core/nodes/EntrypointNode.js +119 -0
  81. package/dist/core/nodes/EventListenerNode.d.ts +25 -0
  82. package/dist/core/nodes/EventListenerNode.d.ts.map +1 -0
  83. package/dist/core/nodes/EventListenerNode.js +39 -0
  84. package/dist/core/nodes/ExportNode.d.ts +26 -0
  85. package/dist/core/nodes/ExportNode.d.ts.map +1 -0
  86. package/dist/core/nodes/ExportNode.js +40 -0
  87. package/dist/core/nodes/ExternalStdioNode.d.ts +17 -0
  88. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -0
  89. package/dist/core/nodes/ExternalStdioNode.js +26 -0
  90. package/dist/core/nodes/FunctionNode.d.ts +27 -0
  91. package/dist/core/nodes/FunctionNode.d.ts.map +1 -0
  92. package/dist/core/nodes/FunctionNode.js +53 -0
  93. package/dist/core/nodes/GuaranteeNode.d.ts +76 -0
  94. package/dist/core/nodes/GuaranteeNode.d.ts.map +1 -0
  95. package/dist/core/nodes/GuaranteeNode.js +117 -0
  96. package/dist/core/nodes/HttpRequestNode.d.ts +24 -0
  97. package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -0
  98. package/dist/core/nodes/HttpRequestNode.js +38 -0
  99. package/dist/core/nodes/ImportNode.d.ts +27 -0
  100. package/dist/core/nodes/ImportNode.d.ts.map +1 -0
  101. package/dist/core/nodes/ImportNode.js +43 -0
  102. package/dist/core/nodes/LiteralNode.d.ts +26 -0
  103. package/dist/core/nodes/LiteralNode.d.ts.map +1 -0
  104. package/dist/core/nodes/LiteralNode.js +40 -0
  105. package/dist/core/nodes/MethodCallNode.d.ts +29 -0
  106. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -0
  107. package/dist/core/nodes/MethodCallNode.js +47 -0
  108. package/dist/core/nodes/MethodNode.d.ts +29 -0
  109. package/dist/core/nodes/MethodNode.d.ts.map +1 -0
  110. package/dist/core/nodes/MethodNode.js +44 -0
  111. package/dist/core/nodes/ModuleNode.d.ts +29 -0
  112. package/dist/core/nodes/ModuleNode.d.ts.map +1 -0
  113. package/dist/core/nodes/ModuleNode.js +49 -0
  114. package/dist/core/nodes/NodeKind.d.ts +91 -0
  115. package/dist/core/nodes/NodeKind.d.ts.map +1 -0
  116. package/dist/core/nodes/NodeKind.js +146 -0
  117. package/dist/core/nodes/ParameterNode.d.ts +26 -0
  118. package/dist/core/nodes/ParameterNode.d.ts.map +1 -0
  119. package/dist/core/nodes/ParameterNode.js +43 -0
  120. package/dist/core/nodes/ScopeNode.d.ts +32 -0
  121. package/dist/core/nodes/ScopeNode.d.ts.map +1 -0
  122. package/dist/core/nodes/ScopeNode.js +47 -0
  123. package/dist/core/nodes/ServiceNode.d.ts +44 -0
  124. package/dist/core/nodes/ServiceNode.d.ts.map +1 -0
  125. package/dist/core/nodes/ServiceNode.js +49 -0
  126. package/dist/core/nodes/VariableDeclarationNode.d.ts +22 -0
  127. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -0
  128. package/dist/core/nodes/VariableDeclarationNode.js +38 -0
  129. package/dist/core/nodes/index.d.ts +25 -0
  130. package/dist/core/nodes/index.d.ts.map +1 -0
  131. package/dist/core/nodes/index.js +30 -0
  132. package/dist/index.d.ts +57 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +63 -0
  135. package/dist/plugins/Plugin.d.ts +44 -0
  136. package/dist/plugins/Plugin.d.ts.map +1 -0
  137. package/dist/plugins/Plugin.js +46 -0
  138. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts +23 -0
  139. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -0
  140. package/dist/plugins/analysis/DatabaseAnalyzer.js +260 -0
  141. package/dist/plugins/analysis/ExpressAnalyzer.d.ts +19 -0
  142. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -0
  143. package/dist/plugins/analysis/ExpressAnalyzer.js +306 -0
  144. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts +17 -0
  145. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -0
  146. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +308 -0
  147. package/dist/plugins/analysis/FetchAnalyzer.d.ts +38 -0
  148. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -0
  149. package/dist/plugins/analysis/FetchAnalyzer.js +344 -0
  150. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +65 -0
  151. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -0
  152. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +472 -0
  153. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +84 -0
  154. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -0
  155. package/dist/plugins/analysis/JSASTAnalyzer.js +1378 -0
  156. package/dist/plugins/analysis/ReactAnalyzer.d.ts +90 -0
  157. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -0
  158. package/dist/plugins/analysis/ReactAnalyzer.js +1153 -0
  159. package/dist/plugins/analysis/RustAnalyzer.d.ts +13 -0
  160. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -0
  161. package/dist/plugins/analysis/RustAnalyzer.js +259 -0
  162. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts +21 -0
  163. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -0
  164. package/dist/plugins/analysis/SQLiteAnalyzer.js +317 -0
  165. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts +35 -0
  166. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -0
  167. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +303 -0
  168. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +33 -0
  169. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -0
  170. package/dist/plugins/analysis/SocketIOAnalyzer.js +283 -0
  171. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts +27 -0
  172. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -0
  173. package/dist/plugins/analysis/SystemDbAnalyzer.js +211 -0
  174. package/dist/plugins/analysis/ast/ConditionParser.d.ts +85 -0
  175. package/dist/plugins/analysis/ast/ConditionParser.d.ts.map +1 -0
  176. package/dist/plugins/analysis/ast/ConditionParser.js +277 -0
  177. package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts +15 -0
  178. package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts.map +1 -0
  179. package/dist/plugins/analysis/ast/ExpressionEvaluator.js +91 -0
  180. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +77 -0
  181. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -0
  182. package/dist/plugins/analysis/ast/GraphBuilder.js +1077 -0
  183. package/dist/plugins/analysis/ast/OxcAdapter.d.ts +41 -0
  184. package/dist/plugins/analysis/ast/OxcAdapter.d.ts.map +1 -0
  185. package/dist/plugins/analysis/ast/OxcAdapter.js +40 -0
  186. package/dist/plugins/analysis/ast/types.d.ts +346 -0
  187. package/dist/plugins/analysis/ast/types.d.ts.map +1 -0
  188. package/dist/plugins/analysis/ast/types.js +4 -0
  189. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +93 -0
  190. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -0
  191. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +24 -0
  192. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +77 -0
  193. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -0
  194. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +377 -0
  195. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +27 -0
  196. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -0
  197. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +232 -0
  198. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +25 -0
  199. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -0
  200. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +172 -0
  201. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +29 -0
  202. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -0
  203. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +180 -0
  204. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +14 -0
  205. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -0
  206. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +200 -0
  207. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +45 -0
  208. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -0
  209. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +150 -0
  210. package/dist/plugins/analysis/ast/visitors/index.d.ts +17 -0
  211. package/dist/plugins/analysis/ast/visitors/index.d.ts.map +1 -0
  212. package/dist/plugins/analysis/ast/visitors/index.js +13 -0
  213. package/dist/plugins/discovery/DiscoveryPlugin.d.ts +34 -0
  214. package/dist/plugins/discovery/DiscoveryPlugin.d.ts.map +1 -0
  215. package/dist/plugins/discovery/DiscoveryPlugin.js +26 -0
  216. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts +26 -0
  217. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -0
  218. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +79 -0
  219. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts +14 -0
  220. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -0
  221. package/dist/plugins/discovery/SimpleProjectDiscovery.js +65 -0
  222. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +19 -0
  223. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +1 -0
  224. package/dist/plugins/discovery/ZonServiceDiscovery.js +204 -0
  225. package/dist/plugins/enrichment/AliasTracker.d.ts +40 -0
  226. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -0
  227. package/dist/plugins/enrichment/AliasTracker.js +290 -0
  228. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +30 -0
  229. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -0
  230. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +135 -0
  231. package/dist/plugins/enrichment/ImportExportLinker.d.ts +30 -0
  232. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -0
  233. package/dist/plugins/enrichment/ImportExportLinker.js +176 -0
  234. package/dist/plugins/enrichment/InstanceOfResolver.d.ts +21 -0
  235. package/dist/plugins/enrichment/InstanceOfResolver.d.ts.map +1 -0
  236. package/dist/plugins/enrichment/InstanceOfResolver.js +117 -0
  237. package/dist/plugins/enrichment/MethodCallResolver.d.ts +41 -0
  238. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -0
  239. package/dist/plugins/enrichment/MethodCallResolver.js +252 -0
  240. package/dist/plugins/enrichment/MountPointResolver.d.ts +26 -0
  241. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -0
  242. package/dist/plugins/enrichment/MountPointResolver.js +189 -0
  243. package/dist/plugins/enrichment/PrefixEvaluator.d.ts +89 -0
  244. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -0
  245. package/dist/plugins/enrichment/PrefixEvaluator.js +415 -0
  246. package/dist/plugins/enrichment/RustFFIEnricher.d.ts +25 -0
  247. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -0
  248. package/dist/plugins/enrichment/RustFFIEnricher.js +170 -0
  249. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +114 -0
  250. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -0
  251. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +464 -0
  252. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts +27 -0
  253. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -0
  254. package/dist/plugins/indexing/IncrementalModuleIndexer.js +238 -0
  255. package/dist/plugins/indexing/JSModuleIndexer.d.ts +33 -0
  256. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -0
  257. package/dist/plugins/indexing/JSModuleIndexer.js +299 -0
  258. package/dist/plugins/indexing/RustModuleIndexer.d.ts +28 -0
  259. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -0
  260. package/dist/plugins/indexing/RustModuleIndexer.js +140 -0
  261. package/dist/plugins/indexing/ServiceDetector.d.ts +46 -0
  262. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -0
  263. package/dist/plugins/indexing/ServiceDetector.js +164 -0
  264. package/dist/plugins/validation/CallResolverValidator.d.ts +23 -0
  265. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -0
  266. package/dist/plugins/validation/CallResolverValidator.js +108 -0
  267. package/dist/plugins/validation/DataFlowValidator.d.ts +24 -0
  268. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -0
  269. package/dist/plugins/validation/DataFlowValidator.js +148 -0
  270. package/dist/plugins/validation/EvalBanValidator.d.ts +25 -0
  271. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -0
  272. package/dist/plugins/validation/EvalBanValidator.js +123 -0
  273. package/dist/plugins/validation/GraphConnectivityValidator.d.ts +11 -0
  274. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -0
  275. package/dist/plugins/validation/GraphConnectivityValidator.js +135 -0
  276. package/dist/plugins/validation/SQLInjectionValidator.d.ts +43 -0
  277. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -0
  278. package/dist/plugins/validation/SQLInjectionValidator.js +251 -0
  279. package/dist/plugins/validation/ShadowingDetector.d.ts +26 -0
  280. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -0
  281. package/dist/plugins/validation/ShadowingDetector.js +119 -0
  282. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts +21 -0
  283. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -0
  284. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +151 -0
  285. package/dist/plugins/vcs/GitPlugin.d.ts +84 -0
  286. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -0
  287. package/dist/plugins/vcs/GitPlugin.js +295 -0
  288. package/dist/plugins/vcs/VCSPlugin.d.ts +133 -0
  289. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -0
  290. package/dist/plugins/vcs/VCSPlugin.js +82 -0
  291. package/dist/plugins/vcs/index.d.ts +10 -0
  292. package/dist/plugins/vcs/index.d.ts.map +1 -0
  293. package/dist/plugins/vcs/index.js +18 -0
  294. package/dist/storage/backends/RFDBServerBackend.d.ts +258 -0
  295. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -0
  296. package/dist/storage/backends/RFDBServerBackend.js +565 -0
  297. package/dist/storage/backends/typeValidation.d.ts +47 -0
  298. package/dist/storage/backends/typeValidation.d.ts.map +1 -0
  299. package/dist/storage/backends/typeValidation.js +137 -0
  300. package/dist/validation/PathValidator.d.ts +81 -0
  301. package/dist/validation/PathValidator.d.ts.map +1 -0
  302. package/dist/validation/PathValidator.js +251 -0
  303. package/package.json +57 -0
  304. package/src/.rfguard/current-session.txt +1 -0
  305. package/src/Orchestrator.ts +673 -0
  306. package/src/api/GraphAPI.ts +305 -0
  307. package/src/api/GuaranteeAPI.ts +401 -0
  308. package/src/core/ASTWorker.ts +567 -0
  309. package/src/core/ASTWorkerPool.ts +299 -0
  310. package/src/core/AnalysisQueue.ts +447 -0
  311. package/src/core/AnalysisWorker.ts +410 -0
  312. package/src/core/GraphBackend.ts +265 -0
  313. package/src/core/GuaranteeManager.ts +581 -0
  314. package/src/core/ManifestStore.ts +196 -0
  315. package/src/core/NodeFactory.ts +274 -0
  316. package/src/core/NodeId.ts +257 -0
  317. package/src/core/ParallelAnalyzer.ts +476 -0
  318. package/src/core/PriorityQueue.ts +227 -0
  319. package/src/core/Profiler.ts +188 -0
  320. package/src/core/QueueWorker.ts +780 -0
  321. package/src/core/Task.ts +107 -0
  322. package/src/core/TaskTypes.ts +40 -0
  323. package/src/core/VersionManager.ts +404 -0
  324. package/src/core/WorkerPool.ts +180 -0
  325. package/src/core/nodes/CallSiteNode.ts +72 -0
  326. package/src/core/nodes/ClassNode.ts +69 -0
  327. package/src/core/nodes/ConstantNode.ts +63 -0
  328. package/src/core/nodes/DatabaseQueryNode.ts +60 -0
  329. package/src/core/nodes/EntrypointNode.ts +164 -0
  330. package/src/core/nodes/EventListenerNode.ts +64 -0
  331. package/src/core/nodes/ExportNode.ts +71 -0
  332. package/src/core/nodes/ExternalStdioNode.ts +36 -0
  333. package/src/core/nodes/FunctionNode.ts +78 -0
  334. package/src/core/nodes/GuaranteeNode.ts +162 -0
  335. package/src/core/nodes/HttpRequestNode.ts +63 -0
  336. package/src/core/nodes/ImportNode.ts +75 -0
  337. package/src/core/nodes/LiteralNode.ts +67 -0
  338. package/src/core/nodes/MethodCallNode.ts +79 -0
  339. package/src/core/nodes/MethodNode.ts +78 -0
  340. package/src/core/nodes/ModuleNode.ts +74 -0
  341. package/src/core/nodes/NodeKind.ts +171 -0
  342. package/src/core/nodes/ParameterNode.ts +73 -0
  343. package/src/core/nodes/ScopeNode.ts +80 -0
  344. package/src/core/nodes/ServiceNode.ts +86 -0
  345. package/src/core/nodes/VariableDeclarationNode.ts +60 -0
  346. package/src/core/nodes/index.ts +49 -0
  347. package/src/index.ts +93 -0
  348. package/src/plugins/Plugin.ts +74 -0
  349. package/src/plugins/analysis/DatabaseAnalyzer.ts +322 -0
  350. package/src/plugins/analysis/ExpressAnalyzer.ts +401 -0
  351. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +414 -0
  352. package/src/plugins/analysis/FetchAnalyzer.ts +441 -0
  353. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +686 -0
  354. package/src/plugins/analysis/JSASTAnalyzer.ts +1680 -0
  355. package/src/plugins/analysis/ReactAnalyzer.ts +1368 -0
  356. package/src/plugins/analysis/RustAnalyzer.ts +438 -0
  357. package/src/plugins/analysis/SQLiteAnalyzer.ts +388 -0
  358. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +429 -0
  359. package/src/plugins/analysis/SocketIOAnalyzer.ts +395 -0
  360. package/src/plugins/analysis/SystemDbAnalyzer.ts +284 -0
  361. package/src/plugins/analysis/ast/ConditionParser.ts +333 -0
  362. package/src/plugins/analysis/ast/ExpressionEvaluator.ts +117 -0
  363. package/src/plugins/analysis/ast/GraphBuilder.ts +1371 -0
  364. package/src/plugins/analysis/ast/OxcAdapter.ts +63 -0
  365. package/src/plugins/analysis/ast/types.ts +400 -0
  366. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +137 -0
  367. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +528 -0
  368. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +339 -0
  369. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +273 -0
  370. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +259 -0
  371. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +235 -0
  372. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +268 -0
  373. package/src/plugins/analysis/ast/visitors/index.ts +36 -0
  374. package/src/plugins/discovery/DiscoveryPlugin.ts +50 -0
  375. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +117 -0
  376. package/src/plugins/discovery/SimpleProjectDiscovery.ts +102 -0
  377. package/src/plugins/enrichment/AliasTracker.ts +399 -0
  378. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +192 -0
  379. package/src/plugins/enrichment/ImportExportLinker.ts +221 -0
  380. package/src/plugins/enrichment/InstanceOfResolver.ts +165 -0
  381. package/src/plugins/enrichment/MethodCallResolver.ts +333 -0
  382. package/src/plugins/enrichment/MountPointResolver.ts +264 -0
  383. package/src/plugins/enrichment/PrefixEvaluator.ts +527 -0
  384. package/src/plugins/enrichment/RustFFIEnricher.ts +218 -0
  385. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +682 -0
  386. package/src/plugins/indexing/IncrementalModuleIndexer.ts +287 -0
  387. package/src/plugins/indexing/JSModuleIndexer.ts +374 -0
  388. package/src/plugins/indexing/RustModuleIndexer.ts +160 -0
  389. package/src/plugins/indexing/ServiceDetector.ts +230 -0
  390. package/src/plugins/validation/CallResolverValidator.ts +170 -0
  391. package/src/plugins/validation/DataFlowValidator.ts +233 -0
  392. package/src/plugins/validation/EvalBanValidator.ts +175 -0
  393. package/src/plugins/validation/GraphConnectivityValidator.ts +201 -0
  394. package/src/plugins/validation/SQLInjectionValidator.ts +363 -0
  395. package/src/plugins/validation/ShadowingDetector.ts +173 -0
  396. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +203 -0
  397. package/src/plugins/vcs/GitPlugin.ts +344 -0
  398. package/src/plugins/vcs/VCSPlugin.ts +190 -0
  399. package/src/plugins/vcs/index.ts +32 -0
  400. package/src/storage/backends/RFDBServerBackend.ts +687 -0
  401. package/src/storage/backends/typeValidation.ts +151 -0
  402. 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"}