@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,333 @@
1
+ /**
2
+ * ConditionParser - парсит условия if/switch и извлекает constraints
3
+ *
4
+ * Поддерживаемые паттерны:
5
+ * - x === "value" → { variable: "x", operator: "===", value: "value" }
6
+ * - x !== "value" → { variable: "x", operator: "!==", value: "value", excludes: true }
7
+ * - x === "a" || x === "b" → { variable: "x", operator: "in", values: ["a", "b"] }
8
+ * - x === "a" && y === "b" → [{ variable: "x", ... }, { variable: "y", ... }]
9
+ */
10
+
11
+ import type * as t from '@babel/types';
12
+
13
+ /**
14
+ * Constraint operator types
15
+ */
16
+ type ConstraintOperator = '===' | '!==' | 'in' | 'not_in' | 'truthy' | 'falsy';
17
+
18
+ /**
19
+ * Simple constraint
20
+ */
21
+ export interface SimpleConstraint {
22
+ variable: string;
23
+ operator: ConstraintOperator;
24
+ value?: unknown;
25
+ values?: unknown[];
26
+ excludes?: boolean;
27
+ negated?: boolean;
28
+ }
29
+
30
+ /**
31
+ * Compound constraint (OR/AND groups)
32
+ */
33
+ export interface CompoundConstraint {
34
+ type: 'or' | 'and';
35
+ constraints: Constraint[];
36
+ }
37
+
38
+ /**
39
+ * Combined constraint type
40
+ */
41
+ export type Constraint = SimpleConstraint | CompoundConstraint;
42
+
43
+ /**
44
+ * Type guard for compound constraints
45
+ */
46
+ function isCompoundConstraint(c: Constraint): c is CompoundConstraint {
47
+ return 'type' in c && (c.type === 'or' || c.type === 'and');
48
+ }
49
+
50
+ export class ConditionParser {
51
+ /**
52
+ * Парсит AST условия и возвращает массив constraints
53
+ * @param testNode - AST нода условия (ifNode.test)
54
+ * @returns constraints
55
+ */
56
+ static parse(testNode: t.Node | null | undefined): Constraint[] {
57
+ if (!testNode) return [];
58
+
59
+ const constraints: Constraint[] = [];
60
+ this._parseNode(testNode, constraints, false);
61
+ return constraints;
62
+ }
63
+
64
+ /**
65
+ * Рекурсивно парсит ноду условия
66
+ * @param node - AST нода
67
+ * @param constraints - массив для накопления constraints
68
+ * @param negated - инвертировано ли условие (для else)
69
+ */
70
+ private static _parseNode(node: t.Node | null | undefined, constraints: Constraint[], negated: boolean): void {
71
+ if (!node) return;
72
+
73
+ switch (node.type) {
74
+ case 'BinaryExpression':
75
+ this._parseBinaryExpression(node as t.BinaryExpression, constraints, negated);
76
+ break;
77
+
78
+ case 'LogicalExpression':
79
+ this._parseLogicalExpression(node as t.LogicalExpression, constraints, negated);
80
+ break;
81
+
82
+ case 'UnaryExpression': {
83
+ const unaryNode = node as t.UnaryExpression;
84
+ if (unaryNode.operator === '!') {
85
+ // !condition → инвертируем
86
+ this._parseNode(unaryNode.argument, constraints, !negated);
87
+ }
88
+ break;
89
+ }
90
+
91
+ case 'Identifier': {
92
+ const identNode = node as t.Identifier;
93
+ // if (x) → x is truthy
94
+ constraints.push({
95
+ variable: identNode.name,
96
+ operator: 'truthy',
97
+ negated
98
+ });
99
+ break;
100
+ }
101
+
102
+ case 'MemberExpression': {
103
+ // if (obj.prop) → obj.prop is truthy
104
+ const memberName = this._getMemberExpressionName(node as t.MemberExpression);
105
+ if (memberName) {
106
+ constraints.push({
107
+ variable: memberName,
108
+ operator: 'truthy',
109
+ negated
110
+ });
111
+ }
112
+ break;
113
+ }
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Парсит BinaryExpression (===, !==, ==, !=)
119
+ */
120
+ private static _parseBinaryExpression(node: t.BinaryExpression, constraints: Constraint[], negated: boolean): void {
121
+ const { operator, left, right } = node;
122
+
123
+ // Поддерживаемые операторы
124
+ if (!['===', '!==', '==', '!='].includes(operator)) {
125
+ return;
126
+ }
127
+
128
+ // Определяем переменную и значение
129
+ let variable: string | null = null;
130
+ let value: unknown = null;
131
+
132
+ // x === "value" или "value" === x
133
+ if (left.type === 'Identifier' && this._isLiteralValue(right)) {
134
+ variable = (left as t.Identifier).name;
135
+ value = this._getLiteralValue(right);
136
+ } else if (right.type === 'Identifier' && this._isLiteralValue(left)) {
137
+ variable = (right as t.Identifier).name;
138
+ value = this._getLiteralValue(left);
139
+ }
140
+ // obj.prop === "value"
141
+ else if (left.type === 'MemberExpression' && this._isLiteralValue(right)) {
142
+ variable = this._getMemberExpressionName(left as t.MemberExpression);
143
+ value = this._getLiteralValue(right);
144
+ } else if (right.type === 'MemberExpression' && this._isLiteralValue(left)) {
145
+ variable = this._getMemberExpressionName(right as t.MemberExpression);
146
+ value = this._getLiteralValue(left);
147
+ }
148
+
149
+ if (variable === null || value === null) {
150
+ return;
151
+ }
152
+
153
+ // Определяем тип constraint
154
+ const isNegation = operator === '!==' || operator === '!=';
155
+ const effectiveNegated = negated ? !isNegation : isNegation;
156
+
157
+ constraints.push({
158
+ variable,
159
+ operator: effectiveNegated ? '!==' : '===',
160
+ value,
161
+ excludes: effectiveNegated
162
+ });
163
+ }
164
+
165
+ /**
166
+ * Парсит LogicalExpression (&&, ||)
167
+ */
168
+ private static _parseLogicalExpression(node: t.LogicalExpression, constraints: Constraint[], negated: boolean): void {
169
+ const { operator, left, right } = node;
170
+
171
+ if (operator === '||') {
172
+ // OR: проверяем можно ли объединить в одну constraint
173
+ // x === "a" || x === "b" → { variable: x, values: ["a", "b"] }
174
+ const leftConstraints: Constraint[] = [];
175
+ const rightConstraints: Constraint[] = [];
176
+
177
+ this._parseNode(left, leftConstraints, negated);
178
+ this._parseNode(right, rightConstraints, negated);
179
+
180
+ // Пытаемся объединить constraints для одной переменной
181
+ const merged = this._tryMergeOrConstraints(leftConstraints, rightConstraints);
182
+ if (merged) {
183
+ constraints.push(merged);
184
+ } else {
185
+ // Не удалось объединить - добавляем как OR группу
186
+ constraints.push({
187
+ type: 'or',
188
+ constraints: [...leftConstraints, ...rightConstraints]
189
+ });
190
+ }
191
+ } else if (operator === '&&') {
192
+ // AND: обе части должны быть true
193
+ this._parseNode(left, constraints, negated);
194
+ this._parseNode(right, constraints, negated);
195
+ }
196
+ }
197
+
198
+ /**
199
+ * Пытается объединить OR constraints для одной переменной
200
+ * x === "a" || x === "b" → { variable: x, operator: "in", values: ["a", "b"] }
201
+ */
202
+ private static _tryMergeOrConstraints(left: Constraint[], right: Constraint[]): SimpleConstraint | null {
203
+ // Проверяем что обе части - простые equality constraints для одной переменной
204
+ if (left.length !== 1 || right.length !== 1) return null;
205
+
206
+ const l = left[0];
207
+ const r = right[0];
208
+
209
+ // Type guards for simple constraints
210
+ if (isCompoundConstraint(l) || isCompoundConstraint(r)) return null;
211
+
212
+ if (l.variable !== r.variable) return null;
213
+ if (l.operator !== '===' || r.operator !== '===') return null;
214
+
215
+ return {
216
+ variable: l.variable,
217
+ operator: 'in',
218
+ values: [l.value, r.value]
219
+ };
220
+ }
221
+
222
+ /**
223
+ * Проверяет является ли нода литеральным значением
224
+ */
225
+ private static _isLiteralValue(node: t.Node | null | undefined): boolean {
226
+ if (!node) return false;
227
+
228
+ return (
229
+ node.type === 'StringLiteral' ||
230
+ node.type === 'NumericLiteral' ||
231
+ node.type === 'BooleanLiteral' ||
232
+ node.type === 'NullLiteral' ||
233
+ (node.type as string) === 'Literal' // для некоторых парсеров (ESTree)
234
+ );
235
+ }
236
+
237
+ /**
238
+ * Извлекает значение из литеральной ноды
239
+ */
240
+ private static _getLiteralValue(node: t.Node | null | undefined): unknown {
241
+ if (!node) return null;
242
+
243
+ switch (node.type) {
244
+ case 'StringLiteral':
245
+ return (node as t.StringLiteral).value;
246
+ case 'NumericLiteral':
247
+ return (node as t.NumericLiteral).value;
248
+ case 'BooleanLiteral':
249
+ return (node as t.BooleanLiteral).value;
250
+ case 'NullLiteral':
251
+ return null;
252
+ default:
253
+ // Handle ESTree 'Literal' type
254
+ if ((node.type as string) === 'Literal') {
255
+ return (node as unknown as { value: unknown }).value;
256
+ }
257
+ return null;
258
+ }
259
+ }
260
+
261
+ /**
262
+ * Получает имя MemberExpression как строку
263
+ * obj.prop → "obj.prop"
264
+ */
265
+ private static _getMemberExpressionName(node: t.MemberExpression): string | null {
266
+ if (node.type !== 'MemberExpression') return null;
267
+
268
+ const parts: string[] = [];
269
+ let current: t.Node = node;
270
+
271
+ while (current.type === 'MemberExpression') {
272
+ const memberNode = current as t.MemberExpression;
273
+ if (memberNode.computed) {
274
+ // obj[x] - не можем статически определить
275
+ return null;
276
+ }
277
+ if (memberNode.property.type === 'Identifier') {
278
+ parts.unshift((memberNode.property as t.Identifier).name);
279
+ } else {
280
+ return null;
281
+ }
282
+ current = memberNode.object;
283
+ }
284
+
285
+ if (current.type === 'Identifier') {
286
+ parts.unshift((current as t.Identifier).name);
287
+ return parts.join('.');
288
+ }
289
+
290
+ return null;
291
+ }
292
+
293
+ /**
294
+ * Создаёт negated версию constraints для else-блока
295
+ * @param constraints - оригинальные constraints
296
+ * @returns negated constraints
297
+ */
298
+ static negate(constraints: Constraint[]): Constraint[] {
299
+ return constraints.map(c => {
300
+ if (isCompoundConstraint(c)) {
301
+ if (c.type === 'or') {
302
+ // De Morgan: !(A || B) = !A && !B
303
+ return {
304
+ type: 'and' as const,
305
+ constraints: this.negate(c.constraints)
306
+ };
307
+ } else {
308
+ // De Morgan: !(A && B) = !A || !B
309
+ return {
310
+ type: 'or' as const,
311
+ constraints: this.negate(c.constraints)
312
+ };
313
+ }
314
+ }
315
+
316
+ // Инвертируем operator
317
+ const negatedOp: ConstraintOperator = c.operator === '===' ? '!==' :
318
+ c.operator === '!==' ? '===' :
319
+ c.operator === 'in' ? 'not_in' :
320
+ c.operator === 'truthy' ? 'falsy' :
321
+ c.operator;
322
+
323
+ return {
324
+ ...c,
325
+ operator: negatedOp,
326
+ excludes: !c.excludes,
327
+ negated: !c.negated
328
+ };
329
+ });
330
+ }
331
+ }
332
+
333
+ export default ConditionParser;
@@ -0,0 +1,117 @@
1
+ /**
2
+ * ExpressionEvaluator - utilities for evaluating AST expressions
3
+ */
4
+ import type {
5
+ Node,
6
+ StringLiteral,
7
+ NumericLiteral,
8
+ BooleanLiteral,
9
+ NullLiteral,
10
+ TemplateLiteral,
11
+ ArrayExpression,
12
+ ObjectExpression,
13
+ ObjectProperty,
14
+ SpreadElement
15
+ } from '@babel/types';
16
+
17
+ export type LiteralValue = string | number | boolean | null | undefined | LiteralValue[] | { [key: string]: LiteralValue };
18
+
19
+ export class ExpressionEvaluator {
20
+ /**
21
+ * Extract literal value from AST node
22
+ * Returns null if not a literal
23
+ */
24
+ static extractLiteralValue(node: Node | null | undefined): LiteralValue | null {
25
+ if (!node) return null;
26
+
27
+ switch (node.type) {
28
+ case 'StringLiteral':
29
+ return (node as StringLiteral).value;
30
+
31
+ case 'NumericLiteral':
32
+ return (node as NumericLiteral).value;
33
+
34
+ case 'BooleanLiteral':
35
+ return (node as BooleanLiteral).value;
36
+
37
+ case 'NullLiteral':
38
+ return null;
39
+
40
+ case 'TemplateLiteral': {
41
+ const templateNode = node as TemplateLiteral;
42
+ // Only if template literal has no expressions (simple string)
43
+ if (templateNode.expressions.length === 0) {
44
+ return templateNode.quasis[0].value.cooked ?? null;
45
+ }
46
+ return null;
47
+ }
48
+
49
+ case 'ArrayExpression': {
50
+ // Handle arrays with literal values
51
+ // Only if ALL elements are literals
52
+ const arrayNode = node as ArrayExpression;
53
+ const elements: LiteralValue[] = [];
54
+ for (const element of arrayNode.elements) {
55
+ if (!element) {
56
+ // Sparse array: [1, , 3]
57
+ elements.push(undefined);
58
+ continue;
59
+ }
60
+ if (element.type === 'SpreadElement') {
61
+ // Can't handle spread
62
+ return null;
63
+ }
64
+ const value = this.extractLiteralValue(element);
65
+ if (value === null && element.type !== 'NullLiteral') {
66
+ // Not a literal - can't handle entire array
67
+ return null;
68
+ }
69
+ elements.push(value);
70
+ }
71
+ return elements;
72
+ }
73
+
74
+ case 'ObjectExpression': {
75
+ // Handle objects with literal values
76
+ // Only if ALL properties are literals
77
+ const objNode = node as ObjectExpression;
78
+ const obj: { [key: string]: LiteralValue } = {};
79
+ for (const prop of objNode.properties) {
80
+ if (prop.type === 'SpreadElement') {
81
+ // Can't handle spread
82
+ return null;
83
+ }
84
+
85
+ const property = prop as ObjectProperty;
86
+
87
+ // Get key
88
+ let key: string;
89
+ if (property.key.type === 'Identifier') {
90
+ key = property.key.name;
91
+ } else if (property.key.type === 'StringLiteral') {
92
+ key = property.key.value;
93
+ } else {
94
+ // Computed property or other - can't handle
95
+ return null;
96
+ }
97
+
98
+ // Get value
99
+ // prop.value can be undefined in edge cases
100
+ if (!property.value) {
101
+ return null;
102
+ }
103
+ const value = this.extractLiteralValue(property.value);
104
+ if (value === null && property.value.type !== 'NullLiteral') {
105
+ // Not a literal - can't handle entire object
106
+ return null;
107
+ }
108
+ obj[key] = value;
109
+ }
110
+ return obj;
111
+ }
112
+
113
+ default:
114
+ return null;
115
+ }
116
+ }
117
+ }