@grafema/core 0.1.0-alpha.5 → 0.1.1-alpha

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 (391) hide show
  1. package/README.md +0 -1
  2. package/dist/Orchestrator.d.ts +24 -2
  3. package/dist/Orchestrator.d.ts.map +1 -1
  4. package/dist/Orchestrator.js +197 -24
  5. package/dist/config/ConfigLoader.d.ts +72 -0
  6. package/dist/config/ConfigLoader.d.ts.map +1 -0
  7. package/dist/config/ConfigLoader.js +187 -0
  8. package/dist/config/index.d.ts +6 -0
  9. package/dist/config/index.d.ts.map +1 -0
  10. package/dist/config/index.js +4 -0
  11. package/dist/core/ASTWorker.d.ts +11 -36
  12. package/dist/core/ASTWorker.d.ts.map +1 -1
  13. package/dist/core/ASTWorker.js +93 -99
  14. package/dist/core/CoverageAnalyzer.d.ts +65 -0
  15. package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
  16. package/dist/core/CoverageAnalyzer.js +198 -0
  17. package/dist/core/FileNodeManager.d.ts +40 -0
  18. package/dist/core/FileNodeManager.d.ts.map +1 -0
  19. package/dist/core/FileNodeManager.js +84 -0
  20. package/dist/core/GraphFreshnessChecker.d.ts +33 -0
  21. package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
  22. package/dist/core/GraphFreshnessChecker.js +101 -0
  23. package/dist/core/HashUtils.d.ts +24 -0
  24. package/dist/core/HashUtils.d.ts.map +1 -0
  25. package/dist/core/HashUtils.js +45 -0
  26. package/dist/core/IncrementalReanalyzer.d.ts +36 -0
  27. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
  28. package/dist/core/IncrementalReanalyzer.js +132 -0
  29. package/dist/core/NodeFactory.d.ts +225 -17
  30. package/dist/core/NodeFactory.d.ts.map +1 -1
  31. package/dist/core/NodeFactory.js +208 -18
  32. package/dist/core/ScopeTracker.d.ts +84 -0
  33. package/dist/core/ScopeTracker.d.ts.map +1 -0
  34. package/dist/core/ScopeTracker.js +116 -0
  35. package/dist/core/SemanticId.d.ts +90 -0
  36. package/dist/core/SemanticId.d.ts.map +1 -0
  37. package/dist/core/SemanticId.js +115 -0
  38. package/dist/core/VersionManager.d.ts.map +1 -1
  39. package/dist/core/VersionManager.js +3 -2
  40. package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
  41. package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
  42. package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
  43. package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
  44. package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
  45. package/dist/core/nodes/ArrayLiteralNode.js +41 -0
  46. package/dist/core/nodes/CallSiteNode.d.ts +28 -0
  47. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
  48. package/dist/core/nodes/CallSiteNode.js +46 -0
  49. package/dist/core/nodes/ClassNode.d.ts +33 -1
  50. package/dist/core/nodes/ClassNode.d.ts.map +1 -1
  51. package/dist/core/nodes/ClassNode.js +46 -2
  52. package/dist/core/nodes/DecoratorNode.d.ts +42 -0
  53. package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
  54. package/dist/core/nodes/DecoratorNode.js +62 -0
  55. package/dist/core/nodes/EnumNode.d.ts +42 -0
  56. package/dist/core/nodes/EnumNode.d.ts.map +1 -0
  57. package/dist/core/nodes/EnumNode.js +54 -0
  58. package/dist/core/nodes/ExportNode.d.ts +37 -1
  59. package/dist/core/nodes/ExportNode.d.ts.map +1 -1
  60. package/dist/core/nodes/ExportNode.js +48 -2
  61. package/dist/core/nodes/ExpressionNode.d.ts +97 -0
  62. package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
  63. package/dist/core/nodes/ExpressionNode.js +178 -0
  64. package/dist/core/nodes/ExternalModuleNode.d.ts +28 -0
  65. package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
  66. package/dist/core/nodes/ExternalModuleNode.js +41 -0
  67. package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
  68. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
  69. package/dist/core/nodes/ExternalStdioNode.js +15 -8
  70. package/dist/core/nodes/FunctionNode.d.ts +36 -0
  71. package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
  72. package/dist/core/nodes/FunctionNode.js +80 -1
  73. package/dist/core/nodes/ImportNode.d.ts +19 -5
  74. package/dist/core/nodes/ImportNode.d.ts.map +1 -1
  75. package/dist/core/nodes/ImportNode.js +23 -5
  76. package/dist/core/nodes/InterfaceNode.d.ts +46 -0
  77. package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
  78. package/dist/core/nodes/InterfaceNode.js +55 -0
  79. package/dist/core/nodes/IssueNode.d.ts +73 -0
  80. package/dist/core/nodes/IssueNode.d.ts.map +1 -0
  81. package/dist/core/nodes/IssueNode.js +129 -0
  82. package/dist/core/nodes/MethodCallNode.d.ts +30 -0
  83. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
  84. package/dist/core/nodes/MethodCallNode.js +49 -0
  85. package/dist/core/nodes/MethodNode.d.ts +32 -0
  86. package/dist/core/nodes/MethodNode.d.ts.map +1 -1
  87. package/dist/core/nodes/MethodNode.js +48 -0
  88. package/dist/core/nodes/ModuleNode.d.ts +31 -0
  89. package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
  90. package/dist/core/nodes/ModuleNode.js +37 -0
  91. package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
  92. package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
  93. package/dist/core/nodes/NetworkRequestNode.js +65 -0
  94. package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
  95. package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
  96. package/dist/core/nodes/ObjectLiteralNode.js +41 -0
  97. package/dist/core/nodes/ScopeNode.d.ts +31 -0
  98. package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
  99. package/dist/core/nodes/ScopeNode.js +49 -0
  100. package/dist/core/nodes/TypeNode.d.ts +36 -0
  101. package/dist/core/nodes/TypeNode.d.ts.map +1 -0
  102. package/dist/core/nodes/TypeNode.js +53 -0
  103. package/dist/core/nodes/VariableDeclarationNode.d.ts +27 -0
  104. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
  105. package/dist/core/nodes/VariableDeclarationNode.js +40 -0
  106. package/dist/core/nodes/index.d.ts +12 -1
  107. package/dist/core/nodes/index.d.ts.map +1 -1
  108. package/dist/core/nodes/index.js +14 -0
  109. package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
  110. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
  111. package/dist/diagnostics/DiagnosticCollector.js +129 -0
  112. package/dist/diagnostics/DiagnosticReporter.d.ts +77 -0
  113. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
  114. package/dist/diagnostics/DiagnosticReporter.js +159 -0
  115. package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
  116. package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
  117. package/dist/diagnostics/DiagnosticWriter.js +43 -0
  118. package/dist/diagnostics/index.d.ts +14 -0
  119. package/dist/diagnostics/index.d.ts.map +1 -0
  120. package/dist/diagnostics/index.js +11 -0
  121. package/dist/errors/GrafemaError.d.ts +118 -0
  122. package/dist/errors/GrafemaError.d.ts.map +1 -0
  123. package/dist/errors/GrafemaError.js +131 -0
  124. package/dist/index.d.ts +57 -1
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +54 -1
  127. package/dist/logging/Logger.d.ts +48 -0
  128. package/dist/logging/Logger.d.ts.map +1 -0
  129. package/dist/logging/Logger.js +134 -0
  130. package/dist/plugins/Plugin.d.ts +5 -1
  131. package/dist/plugins/Plugin.d.ts.map +1 -1
  132. package/dist/plugins/Plugin.js +33 -0
  133. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  134. package/dist/plugins/analysis/DatabaseAnalyzer.js +13 -6
  135. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  136. package/dist/plugins/analysis/ExpressAnalyzer.js +27 -19
  137. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  138. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +21 -14
  139. package/dist/plugins/analysis/FetchAnalyzer.d.ts +1 -0
  140. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  141. package/dist/plugins/analysis/FetchAnalyzer.js +34 -14
  142. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
  143. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  144. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
  145. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +180 -17
  146. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  147. package/dist/plugins/analysis/JSASTAnalyzer.js +1171 -471
  148. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  149. package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
  150. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  151. package/dist/plugins/analysis/RustAnalyzer.js +15 -10
  152. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  153. package/dist/plugins/analysis/SQLiteAnalyzer.js +9 -7
  154. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  155. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
  156. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  157. package/dist/plugins/analysis/SocketIOAnalyzer.js +27 -15
  158. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  159. package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
  160. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +34 -4
  161. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  162. package/dist/plugins/analysis/ast/GraphBuilder.js +318 -298
  163. package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
  164. package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
  165. package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
  166. package/dist/plugins/analysis/ast/types.d.ts +176 -5
  167. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  168. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
  169. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
  170. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
  171. package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
  172. package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
  173. package/dist/plugins/analysis/ast/utils/index.js +5 -0
  174. package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
  175. package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
  176. package/dist/plugins/analysis/ast/utils/location.js +78 -0
  177. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +9 -4
  178. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  179. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
  180. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +99 -9
  181. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  182. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +663 -125
  183. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
  184. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  185. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
  186. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +4 -1
  187. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  188. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +128 -63
  189. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  190. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +11 -8
  191. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
  192. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  193. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
  194. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +4 -1
  195. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  196. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +17 -13
  197. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  198. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  199. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  200. package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
  201. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
  202. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
  203. package/dist/plugins/discovery/WorkspaceDiscovery.js +136 -0
  204. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
  205. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
  206. package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
  207. package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
  208. package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
  209. package/dist/plugins/discovery/workspaces/detector.js +49 -0
  210. package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
  211. package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
  212. package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
  213. package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
  214. package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
  215. package/dist/plugins/discovery/workspaces/index.js +8 -0
  216. package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
  217. package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
  218. package/dist/plugins/discovery/workspaces/parsers.js +80 -0
  219. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
  220. package/dist/plugins/enrichment/AliasTracker.js +14 -8
  221. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  222. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +14 -7
  223. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  224. package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
  225. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  226. package/dist/plugins/enrichment/MethodCallResolver.js +18 -12
  227. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  228. package/dist/plugins/enrichment/MountPointResolver.js +8 -3
  229. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  230. package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
  231. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  232. package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
  233. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +17 -0
  234. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  235. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +129 -10
  236. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  237. package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
  238. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  239. package/dist/plugins/indexing/JSModuleIndexer.js +63 -31
  240. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  241. package/dist/plugins/indexing/RustModuleIndexer.js +5 -4
  242. package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
  243. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
  244. package/dist/plugins/indexing/ServiceDetector.js +28 -15
  245. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  246. package/dist/plugins/validation/CallResolverValidator.js +8 -7
  247. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
  248. package/dist/plugins/validation/DataFlowValidator.js +17 -12
  249. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
  250. package/dist/plugins/validation/EvalBanValidator.js +17 -16
  251. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  252. package/dist/plugins/validation/GraphConnectivityValidator.js +19 -23
  253. package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
  254. package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
  255. package/dist/plugins/validation/NodeCreationValidator.js +415 -0
  256. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  257. package/dist/plugins/validation/SQLInjectionValidator.js +59 -16
  258. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
  259. package/dist/plugins/validation/ShadowingDetector.js +6 -5
  260. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  261. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
  262. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  263. package/dist/plugins/vcs/GitPlugin.js +10 -12
  264. package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
  265. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
  266. package/dist/plugins/vcs/VCSPlugin.js +5 -5
  267. package/dist/storage/backends/RFDBServerBackend.d.ts +10 -17
  268. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  269. package/dist/storage/backends/RFDBServerBackend.js +31 -10
  270. package/dist/validation/PathValidator.d.ts +1 -2
  271. package/dist/validation/PathValidator.d.ts.map +1 -1
  272. package/package.json +3 -3
  273. package/src/Orchestrator.ts +237 -24
  274. package/src/config/ConfigLoader.ts +263 -0
  275. package/src/config/index.ts +5 -0
  276. package/src/core/ASTWorker.ts +143 -139
  277. package/src/core/CoverageAnalyzer.ts +243 -0
  278. package/src/core/FileNodeManager.ts +100 -0
  279. package/src/core/GraphFreshnessChecker.ts +143 -0
  280. package/src/core/HashUtils.ts +48 -0
  281. package/src/core/IncrementalReanalyzer.ts +192 -0
  282. package/src/core/NodeFactory.ts +401 -18
  283. package/src/core/ScopeTracker.ts +154 -0
  284. package/src/core/SemanticId.ts +192 -0
  285. package/src/core/VersionManager.ts +3 -2
  286. package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
  287. package/src/core/nodes/ArrayLiteralNode.ts +65 -0
  288. package/src/core/nodes/CallSiteNode.ts +58 -0
  289. package/src/core/nodes/ClassNode.ts +63 -2
  290. package/src/core/nodes/DecoratorNode.ts +91 -0
  291. package/src/core/nodes/EnumNode.ts +86 -0
  292. package/src/core/nodes/ExportNode.ts +70 -2
  293. package/src/core/nodes/ExpressionNode.ts +231 -0
  294. package/src/core/nodes/ExternalModuleNode.ts +56 -0
  295. package/src/core/nodes/ExternalStdioNode.ts +17 -9
  296. package/src/core/nodes/FunctionNode.ts +101 -1
  297. package/src/core/nodes/ImportNode.ts +32 -10
  298. package/src/core/nodes/InterfaceNode.ts +91 -0
  299. package/src/core/nodes/IssueNode.ts +177 -0
  300. package/src/core/nodes/MethodCallNode.ts +64 -0
  301. package/src/core/nodes/MethodNode.ts +63 -0
  302. package/src/core/nodes/ModuleNode.ts +50 -0
  303. package/src/core/nodes/NetworkRequestNode.ts +77 -0
  304. package/src/core/nodes/ObjectLiteralNode.ts +65 -0
  305. package/src/core/nodes/ScopeNode.ts +65 -0
  306. package/src/core/nodes/TypeNode.ts +78 -0
  307. package/src/core/nodes/VariableDeclarationNode.ts +52 -0
  308. package/src/core/nodes/index.ts +18 -1
  309. package/src/diagnostics/DiagnosticCollector.ts +163 -0
  310. package/src/diagnostics/DiagnosticReporter.ts +204 -0
  311. package/src/diagnostics/DiagnosticWriter.ts +50 -0
  312. package/src/diagnostics/index.ts +16 -0
  313. package/src/errors/GrafemaError.ts +174 -0
  314. package/src/index.ts +148 -1
  315. package/src/logging/Logger.ts +152 -0
  316. package/src/plugins/Plugin.ts +42 -0
  317. package/src/plugins/analysis/DatabaseAnalyzer.ts +14 -8
  318. package/src/plugins/analysis/ExpressAnalyzer.ts +29 -19
  319. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +22 -21
  320. package/src/plugins/analysis/FetchAnalyzer.ts +39 -16
  321. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
  322. package/src/plugins/analysis/JSASTAnalyzer.ts +1483 -503
  323. package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
  324. package/src/plugins/analysis/RustAnalyzer.ts +15 -10
  325. package/src/plugins/analysis/SQLiteAnalyzer.ts +10 -7
  326. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
  327. package/src/plugins/analysis/SocketIOAnalyzer.ts +31 -22
  328. package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
  329. package/src/plugins/analysis/ast/GraphBuilder.ts +439 -327
  330. package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
  331. package/src/plugins/analysis/ast/types.ts +209 -6
  332. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
  333. package/src/plugins/analysis/ast/utils/index.ts +12 -0
  334. package/src/plugins/analysis/ast/utils/location.ts +103 -0
  335. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +11 -8
  336. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +909 -83
  337. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
  338. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +159 -93
  339. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +12 -8
  340. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
  341. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +37 -17
  342. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
  343. package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
  344. package/src/plugins/discovery/WorkspaceDiscovery.ts +177 -0
  345. package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
  346. package/src/plugins/discovery/workspaces/detector.ts +63 -0
  347. package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
  348. package/src/plugins/discovery/workspaces/index.ts +23 -0
  349. package/src/plugins/discovery/workspaces/parsers.ts +99 -0
  350. package/src/plugins/enrichment/AliasTracker.ts +14 -8
  351. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +14 -7
  352. package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
  353. package/src/plugins/enrichment/MethodCallResolver.ts +18 -12
  354. package/src/plugins/enrichment/MountPointResolver.ts +8 -3
  355. package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
  356. package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
  357. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +149 -12
  358. package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
  359. package/src/plugins/indexing/JSModuleIndexer.ts +74 -34
  360. package/src/plugins/indexing/RustModuleIndexer.ts +5 -4
  361. package/src/plugins/validation/CallResolverValidator.ts +8 -7
  362. package/src/plugins/validation/DataFlowValidator.ts +16 -12
  363. package/src/plugins/validation/EvalBanValidator.ts +17 -16
  364. package/src/plugins/validation/GraphConnectivityValidator.ts +19 -23
  365. package/src/plugins/validation/NodeCreationValidator.ts +554 -0
  366. package/src/plugins/validation/SQLInjectionValidator.ts +61 -15
  367. package/src/plugins/validation/ShadowingDetector.ts +6 -5
  368. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
  369. package/src/plugins/vcs/GitPlugin.ts +40 -12
  370. package/src/plugins/vcs/VCSPlugin.ts +7 -5
  371. package/src/storage/backends/RFDBServerBackend.ts +43 -29
  372. package/src/validation/PathValidator.ts +1 -1
  373. package/dist/core/AnalysisWorker.d.ts +0 -14
  374. package/dist/core/AnalysisWorker.d.ts.map +0 -1
  375. package/dist/core/AnalysisWorker.js +0 -307
  376. package/dist/core/ParallelAnalyzer.d.ts +0 -120
  377. package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
  378. package/dist/core/ParallelAnalyzer.js +0 -331
  379. package/dist/core/QueueWorker.d.ts +0 -12
  380. package/dist/core/QueueWorker.d.ts.map +0 -1
  381. package/dist/core/QueueWorker.js +0 -567
  382. package/dist/core/RFDBClient.d.ts +0 -179
  383. package/dist/core/RFDBClient.d.ts.map +0 -1
  384. package/dist/core/RFDBClient.js +0 -429
  385. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
  386. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
  387. package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
  388. package/src/core/AnalysisWorker.ts +0 -410
  389. package/src/core/ParallelAnalyzer.ts +0 -476
  390. package/src/core/QueueWorker.ts +0 -780
  391. package/src/plugins/indexing/ServiceDetector.ts +0 -230
@@ -1,476 +0,0 @@
1
- /**
2
- * ParallelAnalyzer - orchestrates parallel AST analysis using worker threads
3
- *
4
- * Features:
5
- * - Configurable number of workers (default: CPU cores)
6
- * - Each worker connects to RFDB server directly
7
- * - Real-time statistics available during analysis
8
- * - Concurrent reads while writes are happening
9
- *
10
- * Usage:
11
- * const analyzer = new ParallelAnalyzer({
12
- * socketPath: '/tmp/rfdb.sock',
13
- * maxWorkers: 4,
14
- * });
15
- * await analyzer.start();
16
- * const stats = await analyzer.analyzeFiles(files);
17
- * await analyzer.stop();
18
- */
19
-
20
- import { Worker } from 'worker_threads';
21
- import { EventEmitter } from 'events';
22
- import { cpus } from 'os';
23
- import { fileURLToPath } from 'url';
24
- import { dirname, join } from 'path';
25
-
26
- import { RFDBClient } from '@grafema/rfdb-client';
27
-
28
- const __filename = fileURLToPath(import.meta.url);
29
- const __dirname = dirname(__filename);
30
- const WORKER_SCRIPT = join(__dirname, 'AnalysisWorker.js');
31
-
32
- /**
33
- * Analyzer options
34
- */
35
- export interface ParallelAnalyzerOptions {
36
- socketPath?: string;
37
- maxWorkers?: number;
38
- }
39
-
40
- /**
41
- * File info for analysis
42
- */
43
- export interface FileInfo {
44
- file: string;
45
- id?: string;
46
- moduleId?: string;
47
- name?: string;
48
- moduleName?: string;
49
- }
50
-
51
- /**
52
- * Analysis stats per file
53
- */
54
- export interface FileStats {
55
- nodes?: number;
56
- edges?: number;
57
- functions?: number;
58
- calls?: number;
59
- }
60
-
61
- /**
62
- * Overall analysis statistics
63
- */
64
- export interface AnalysisStats {
65
- filesTotal: number;
66
- filesProcessed: number;
67
- filesFailed: number;
68
- nodesCreated: number;
69
- edgesCreated: number;
70
- functionsFound: number;
71
- callsFound: number;
72
- startTime: number | null;
73
- errors: Array<{ file: string; error: string }>;
74
- }
75
-
76
- /**
77
- * Analysis task
78
- */
79
- interface AnalysisTask {
80
- taskId: number;
81
- file: string;
82
- moduleId: string;
83
- moduleName: string;
84
- resolve: (stats: FileStats | null) => void;
85
- reject: (error: Error) => void;
86
- }
87
-
88
- /**
89
- * Worker message types
90
- */
91
- interface ReadyMessage {
92
- type: 'ready';
93
- workerId: number;
94
- }
95
-
96
- interface DoneMessage {
97
- type: 'done';
98
- file: string;
99
- stats: FileStats;
100
- workerId: number;
101
- }
102
-
103
- interface ErrorMessage {
104
- type: 'error';
105
- file?: string;
106
- error: string;
107
- workerId?: number;
108
- }
109
-
110
- type WorkerResponse = ReadyMessage | DoneMessage | ErrorMessage;
111
-
112
- /**
113
- * Graph stats from RFDB
114
- */
115
- export interface GraphStats {
116
- nodeCount: number;
117
- edgeCount: number;
118
- nodesByType: Record<string, number>;
119
- edgesByType: Record<string, number>;
120
- }
121
-
122
- export class ParallelAnalyzer extends EventEmitter {
123
- private socketPath: string;
124
- private maxWorkers: number;
125
- private workers: Worker[];
126
- private readyWorkers: Worker[];
127
- private taskQueue: AnalysisTask[];
128
- private pendingTasks: Map<number, AnalysisTask>;
129
- private taskIdCounter: number;
130
- private running: boolean;
131
- private stats: AnalysisStats;
132
- private statsClient: RFDBClient | null;
133
-
134
- constructor(options: ParallelAnalyzerOptions = {}) {
135
- super();
136
-
137
- // Configuration
138
- this.socketPath = options.socketPath || '/tmp/rfdb.sock';
139
- this.maxWorkers = options.maxWorkers || cpus().length;
140
- this.maxWorkers = Math.min(this.maxWorkers, 16); // Cap at 16
141
-
142
- // State
143
- this.workers = [];
144
- this.readyWorkers = [];
145
- this.taskQueue = [];
146
- this.pendingTasks = new Map();
147
- this.taskIdCounter = 0;
148
- this.running = false;
149
-
150
- // Stats (updated in real-time)
151
- this.stats = {
152
- filesTotal: 0,
153
- filesProcessed: 0,
154
- filesFailed: 0,
155
- nodesCreated: 0,
156
- edgesCreated: 0,
157
- functionsFound: 0,
158
- callsFound: 0,
159
- startTime: null,
160
- errors: []
161
- };
162
-
163
- // Stats client (for reading during analysis)
164
- this.statsClient = null;
165
- }
166
-
167
- /**
168
- * Start the analyzer (spawn workers)
169
- */
170
- async start(): Promise<void> {
171
- if (this.running) return;
172
-
173
- console.log(`[ParallelAnalyzer] Starting ${this.maxWorkers} workers...`);
174
-
175
- // Connect stats client for real-time queries
176
- this.statsClient = new RFDBClient(this.socketPath);
177
- await this.statsClient.connect();
178
-
179
- // Spawn workers
180
- const initPromises: Promise<void>[] = [];
181
-
182
- for (let i = 0; i < this.maxWorkers; i++) {
183
- const worker = new Worker(WORKER_SCRIPT, {
184
- workerData: {
185
- workerId: i,
186
- socketPath: this.socketPath,
187
- autoConnect: true
188
- }
189
- });
190
-
191
- const initPromise = new Promise<void>((resolve, reject) => {
192
- const timeout = setTimeout(() => {
193
- reject(new Error(`Worker ${i} initialization timeout`));
194
- }, 30000);
195
-
196
- const onMessage = (msg: WorkerResponse) => {
197
- if (msg.type === 'ready') {
198
- clearTimeout(timeout);
199
- worker.removeListener('message', onMessage);
200
- resolve();
201
- } else if (msg.type === 'error' && !this.running) {
202
- clearTimeout(timeout);
203
- worker.removeListener('message', onMessage);
204
- reject(new Error(msg.error));
205
- }
206
- };
207
-
208
- worker.on('message', onMessage);
209
- worker.once('error', (err: Error) => {
210
- clearTimeout(timeout);
211
- reject(err);
212
- });
213
- });
214
-
215
- worker.on('message', (msg: WorkerResponse) => this._handleWorkerMessage(worker, msg));
216
- worker.on('error', (err: Error) => this._handleWorkerError(worker, err));
217
- worker.on('exit', (code: number) => this._handleWorkerExit(worker, code));
218
-
219
- this.workers.push(worker);
220
- initPromises.push(initPromise);
221
- }
222
-
223
- await Promise.all(initPromises);
224
-
225
- this.readyWorkers = [...this.workers];
226
- this.running = true;
227
-
228
- console.log(`[ParallelAnalyzer] ${this.maxWorkers} workers ready`);
229
- this.emit('started', { workerCount: this.maxWorkers });
230
- }
231
-
232
- /**
233
- * Stop the analyzer (terminate workers)
234
- */
235
- async stop(): Promise<void> {
236
- if (!this.running) return;
237
-
238
- console.log('[ParallelAnalyzer] Stopping workers...');
239
-
240
- // Close stats client
241
- if (this.statsClient) {
242
- await this.statsClient.close();
243
- this.statsClient = null;
244
- }
245
-
246
- // Terminate workers
247
- const terminatePromises = this.workers.map(worker => {
248
- return new Promise<void>((resolve) => {
249
- worker.once('exit', () => resolve());
250
- worker.postMessage({ type: 'exit' });
251
- });
252
- });
253
-
254
- await Promise.all(terminatePromises);
255
-
256
- this.workers = [];
257
- this.readyWorkers = [];
258
- this.running = false;
259
-
260
- console.log('[ParallelAnalyzer] Stopped');
261
- this.emit('stopped');
262
- }
263
-
264
- /**
265
- * Analyze multiple files in parallel
266
- */
267
- async analyzeFiles(files: FileInfo[]): Promise<AnalysisStats> {
268
- if (!this.running) {
269
- throw new Error('Analyzer not started. Call start() first.');
270
- }
271
-
272
- this.stats = {
273
- filesTotal: files.length,
274
- filesProcessed: 0,
275
- filesFailed: 0,
276
- nodesCreated: 0,
277
- edgesCreated: 0,
278
- functionsFound: 0,
279
- callsFound: 0,
280
- startTime: Date.now(),
281
- errors: []
282
- };
283
-
284
- console.log(`[ParallelAnalyzer] Analyzing ${files.length} files with ${this.maxWorkers} workers...`);
285
-
286
- // Create promises for all files
287
- const promises = files.map(f => this._analyzeFile(f));
288
-
289
- // Wait for all to complete
290
- await Promise.all(promises);
291
-
292
- const duration = Date.now() - this.stats.startTime!;
293
- const filesPerSecond = (this.stats.filesProcessed / (duration / 1000)).toFixed(2);
294
-
295
- console.log(`[ParallelAnalyzer] Done in ${duration}ms (${filesPerSecond} files/sec)`);
296
- console.log(`[ParallelAnalyzer] ${this.stats.filesProcessed} succeeded, ${this.stats.filesFailed} failed`);
297
- console.log(`[ParallelAnalyzer] ${this.stats.nodesCreated} nodes, ${this.stats.edgesCreated} edges`);
298
-
299
- this.emit('completed', { ...this.stats, duration });
300
-
301
- return this.stats;
302
- }
303
-
304
- /**
305
- * Get current statistics (can be called during analysis)
306
- */
307
- getStats(): AnalysisStats & { elapsed: number; activeWorkers: number; queuedTasks: number } {
308
- return {
309
- ...this.stats,
310
- elapsed: this.stats.startTime ? Date.now() - this.stats.startTime : 0,
311
- activeWorkers: this.maxWorkers - this.readyWorkers.length,
312
- queuedTasks: this.taskQueue.length
313
- };
314
- }
315
-
316
- /**
317
- * Get graph statistics from RFDB (can be called during analysis)
318
- */
319
- async getGraphStats(): Promise<GraphStats> {
320
- if (!this.statsClient) {
321
- throw new Error('Analyzer not started');
322
- }
323
-
324
- const [nodeCount, edgeCount, nodesByType, edgesByType] = await Promise.all([
325
- this.statsClient.nodeCount(),
326
- this.statsClient.edgeCount(),
327
- this.statsClient.countNodesByType(),
328
- this.statsClient.countEdgesByType()
329
- ]);
330
-
331
- return { nodeCount, edgeCount, nodesByType, edgesByType };
332
- }
333
-
334
- /**
335
- * Query nodes from RFDB (can be called during analysis)
336
- */
337
- async queryNodes(nodeType: string): Promise<string[]> {
338
- if (!this.statsClient) {
339
- throw new Error('Analyzer not started');
340
- }
341
- return this.statsClient.findByType(nodeType as never);
342
- }
343
-
344
- // ===========================================================================
345
- // Internal methods
346
- // ===========================================================================
347
-
348
- private _analyzeFile(fileInfo: FileInfo): Promise<FileStats | null> {
349
- return new Promise((resolve, reject) => {
350
- const taskId = this.taskIdCounter++;
351
- const task: AnalysisTask = {
352
- taskId,
353
- file: fileInfo.file,
354
- moduleId: fileInfo.moduleId || fileInfo.id || fileInfo.file,
355
- moduleName: fileInfo.moduleName || fileInfo.name || fileInfo.file,
356
- resolve,
357
- reject
358
- };
359
-
360
- this.pendingTasks.set(taskId, task);
361
- this._dispatchTask(task);
362
- });
363
- }
364
-
365
- private _dispatchTask(task: AnalysisTask): void {
366
- if (this.readyWorkers.length > 0) {
367
- const worker = this.readyWorkers.pop()!;
368
- worker.postMessage({
369
- type: 'analyze',
370
- file: task.file,
371
- moduleId: task.moduleId,
372
- moduleName: task.moduleName,
373
- taskId: task.taskId
374
- });
375
- this.emit('taskStarted', { file: task.file });
376
- } else {
377
- this.taskQueue.push(task);
378
- }
379
- }
380
-
381
- private _handleWorkerMessage(worker: Worker, msg: WorkerResponse): void {
382
- switch (msg.type) {
383
- case 'done': {
384
- // Find task by file (workers don't track taskId internally)
385
- let task: AnalysisTask | null = null;
386
- for (const [id, t] of this.pendingTasks) {
387
- if (t.file === msg.file) {
388
- task = t;
389
- this.pendingTasks.delete(id);
390
- break;
391
- }
392
- }
393
-
394
- if (task) {
395
- // Update stats
396
- this.stats.filesProcessed++;
397
- this.stats.nodesCreated += msg.stats?.nodes || 0;
398
- this.stats.edgesCreated += msg.stats?.edges || 0;
399
- this.stats.functionsFound += msg.stats?.functions || 0;
400
- this.stats.callsFound += msg.stats?.calls || 0;
401
-
402
- this.emit('fileCompleted', { file: msg.file, stats: msg.stats });
403
- task.resolve(msg.stats);
404
- }
405
-
406
- this._workerReady(worker);
407
- break;
408
- }
409
-
410
- case 'error': {
411
- let task: AnalysisTask | null = null;
412
- for (const [id, t] of this.pendingTasks) {
413
- if (t.file === msg.file) {
414
- task = t;
415
- this.pendingTasks.delete(id);
416
- break;
417
- }
418
- }
419
-
420
- if (task) {
421
- this.stats.filesFailed++;
422
- this.stats.errors.push({ file: msg.file!, error: msg.error });
423
-
424
- this.emit('fileError', { file: msg.file, error: msg.error });
425
- task.resolve(null); // Don't reject, just continue
426
- }
427
-
428
- this._workerReady(worker);
429
- break;
430
- }
431
-
432
- case 'ready':
433
- // Worker reconnected
434
- if (!this.readyWorkers.includes(worker)) {
435
- this._workerReady(worker);
436
- }
437
- break;
438
- }
439
- }
440
-
441
- private _workerReady(worker: Worker): void {
442
- if (this.taskQueue.length > 0) {
443
- const nextTask = this.taskQueue.shift()!;
444
- worker.postMessage({
445
- type: 'analyze',
446
- file: nextTask.file,
447
- moduleId: nextTask.moduleId,
448
- moduleName: nextTask.moduleName,
449
- taskId: nextTask.taskId
450
- });
451
- this.emit('taskStarted', { file: nextTask.file });
452
- } else {
453
- this.readyWorkers.push(worker);
454
- }
455
- }
456
-
457
- private _handleWorkerError(worker: Worker, error: Error): void {
458
- console.error('[ParallelAnalyzer] Worker error:', error);
459
- this.emit('workerError', { error });
460
- }
461
-
462
- private _handleWorkerExit(worker: Worker, code: number): void {
463
- if (code !== 0 && this.running) {
464
- console.error(`[ParallelAnalyzer] Worker exited with code ${code}`);
465
- }
466
-
467
- // Remove from lists
468
- const idx = this.workers.indexOf(worker);
469
- if (idx !== -1) this.workers.splice(idx, 1);
470
-
471
- const readyIdx = this.readyWorkers.indexOf(worker);
472
- if (readyIdx !== -1) this.readyWorkers.splice(readyIdx, 1);
473
- }
474
- }
475
-
476
- export default ParallelAnalyzer;