@grafema/core 0.2.3-beta → 0.2.5-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/dist/Orchestrator.d.ts +37 -0
  2. package/dist/Orchestrator.d.ts.map +1 -1
  3. package/dist/Orchestrator.js +322 -35
  4. package/dist/Orchestrator.js.map +1 -0
  5. package/dist/api/GraphAPI.d.ts +1 -1
  6. package/dist/api/GraphAPI.d.ts.map +1 -1
  7. package/dist/api/GraphAPI.js +3 -1
  8. package/dist/api/GraphAPI.js.map +1 -0
  9. package/dist/api/GuaranteeAPI.d.ts.map +1 -1
  10. package/dist/api/GuaranteeAPI.js +4 -2
  11. package/dist/api/GuaranteeAPI.js.map +1 -0
  12. package/dist/config/ConfigLoader.d.ts +66 -0
  13. package/dist/config/ConfigLoader.d.ts.map +1 -1
  14. package/dist/config/ConfigLoader.js +77 -3
  15. package/dist/config/ConfigLoader.js.map +1 -0
  16. package/dist/config/index.d.ts +1 -1
  17. package/dist/config/index.d.ts.map +1 -1
  18. package/dist/config/index.js +2 -1
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/core/ASTWorker.d.ts.map +1 -1
  21. package/dist/core/ASTWorker.js +6 -4
  22. package/dist/core/ASTWorker.js.map +1 -0
  23. package/dist/core/ASTWorkerPool.js +2 -1
  24. package/dist/core/ASTWorkerPool.js.map +1 -0
  25. package/dist/core/AnalysisQueue.js +1 -0
  26. package/dist/core/AnalysisQueue.js.map +1 -0
  27. package/dist/core/CoverageAnalyzer.d.ts.map +1 -1
  28. package/dist/core/CoverageAnalyzer.js +1 -0
  29. package/dist/core/CoverageAnalyzer.js.map +1 -0
  30. package/dist/core/FileExplainer.js +1 -0
  31. package/dist/core/FileExplainer.js.map +1 -0
  32. package/dist/core/FileNodeManager.d.ts.map +1 -1
  33. package/dist/core/FileNodeManager.js +4 -2
  34. package/dist/core/FileNodeManager.js.map +1 -0
  35. package/dist/core/GraphBackend.js +1 -0
  36. package/dist/core/GraphBackend.js.map +1 -0
  37. package/dist/core/GraphFreshnessChecker.js +1 -0
  38. package/dist/core/GraphFreshnessChecker.js.map +1 -0
  39. package/dist/core/GuaranteeManager.js +2 -1
  40. package/dist/core/GuaranteeManager.js.map +1 -0
  41. package/dist/core/HashUtils.js +1 -0
  42. package/dist/core/HashUtils.js.map +1 -0
  43. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -1
  44. package/dist/core/IncrementalReanalyzer.js +7 -3
  45. package/dist/core/IncrementalReanalyzer.js.map +1 -0
  46. package/dist/core/ManifestStore.js +1 -0
  47. package/dist/core/ManifestStore.js.map +1 -0
  48. package/dist/core/NodeFactory.d.ts +54 -34
  49. package/dist/core/NodeFactory.d.ts.map +1 -1
  50. package/dist/core/NodeFactory.js +20 -1
  51. package/dist/core/NodeFactory.js.map +1 -0
  52. package/dist/core/NodeId.js +1 -0
  53. package/dist/core/NodeId.js.map +1 -0
  54. package/dist/core/PriorityQueue.js +1 -0
  55. package/dist/core/PriorityQueue.js.map +1 -0
  56. package/dist/core/Profiler.js +1 -0
  57. package/dist/core/Profiler.js.map +1 -0
  58. package/dist/core/ScopeTracker.js +1 -0
  59. package/dist/core/ScopeTracker.js.map +1 -0
  60. package/dist/core/SemanticId.js +1 -0
  61. package/dist/core/SemanticId.js.map +1 -0
  62. package/dist/core/Task.js +1 -0
  63. package/dist/core/Task.js.map +1 -0
  64. package/dist/core/TaskTypes.js +1 -0
  65. package/dist/core/TaskTypes.js.map +1 -0
  66. package/dist/core/VersionManager.js +1 -0
  67. package/dist/core/VersionManager.js.map +1 -0
  68. package/dist/core/WorkerPool.d.ts.map +1 -1
  69. package/dist/core/WorkerPool.js +3 -1
  70. package/dist/core/WorkerPool.js.map +1 -0
  71. package/dist/core/nodes/ArgumentExpressionNode.js +1 -0
  72. package/dist/core/nodes/ArgumentExpressionNode.js.map +1 -0
  73. package/dist/core/nodes/ArrayLiteralNode.js +1 -0
  74. package/dist/core/nodes/ArrayLiteralNode.js.map +1 -0
  75. package/dist/core/nodes/BranchNode.js +1 -0
  76. package/dist/core/nodes/BranchNode.js.map +1 -0
  77. package/dist/core/nodes/CallSiteNode.js +1 -0
  78. package/dist/core/nodes/CallSiteNode.js.map +1 -0
  79. package/dist/core/nodes/CaseNode.js +1 -0
  80. package/dist/core/nodes/CaseNode.js.map +1 -0
  81. package/dist/core/nodes/ClassNode.js +1 -0
  82. package/dist/core/nodes/ClassNode.js.map +1 -0
  83. package/dist/core/nodes/ConstantNode.js +1 -0
  84. package/dist/core/nodes/ConstantNode.js.map +1 -0
  85. package/dist/core/nodes/ConstructorCallNode.js +1 -0
  86. package/dist/core/nodes/ConstructorCallNode.js.map +1 -0
  87. package/dist/core/nodes/DatabaseQueryNode.js +1 -0
  88. package/dist/core/nodes/DatabaseQueryNode.js.map +1 -0
  89. package/dist/core/nodes/DecoratorNode.js +1 -0
  90. package/dist/core/nodes/DecoratorNode.js.map +1 -0
  91. package/dist/core/nodes/EntrypointNode.js +1 -0
  92. package/dist/core/nodes/EntrypointNode.js.map +1 -0
  93. package/dist/core/nodes/EnumNode.js +1 -0
  94. package/dist/core/nodes/EnumNode.js.map +1 -0
  95. package/dist/core/nodes/EventListenerNode.js +1 -0
  96. package/dist/core/nodes/EventListenerNode.js.map +1 -0
  97. package/dist/core/nodes/ExportNode.js +1 -0
  98. package/dist/core/nodes/ExportNode.js.map +1 -0
  99. package/dist/core/nodes/ExpressionNode.js +1 -0
  100. package/dist/core/nodes/ExpressionNode.js.map +1 -0
  101. package/dist/core/nodes/ExternalModuleNode.js +1 -0
  102. package/dist/core/nodes/ExternalModuleNode.js.map +1 -0
  103. package/dist/core/nodes/ExternalStdioNode.js +1 -0
  104. package/dist/core/nodes/ExternalStdioNode.js.map +1 -0
  105. package/dist/core/nodes/FunctionNode.js +1 -0
  106. package/dist/core/nodes/FunctionNode.js.map +1 -0
  107. package/dist/core/nodes/GuaranteeNode.js +1 -0
  108. package/dist/core/nodes/GuaranteeNode.js.map +1 -0
  109. package/dist/core/nodes/HttpRequestNode.js +1 -0
  110. package/dist/core/nodes/HttpRequestNode.js.map +1 -0
  111. package/dist/core/nodes/ImportNode.js +1 -0
  112. package/dist/core/nodes/ImportNode.js.map +1 -0
  113. package/dist/core/nodes/InterfaceNode.js +1 -0
  114. package/dist/core/nodes/InterfaceNode.js.map +1 -0
  115. package/dist/core/nodes/IssueNode.js +1 -0
  116. package/dist/core/nodes/IssueNode.js.map +1 -0
  117. package/dist/core/nodes/LiteralNode.js +1 -0
  118. package/dist/core/nodes/LiteralNode.js.map +1 -0
  119. package/dist/core/nodes/MethodCallNode.js +1 -0
  120. package/dist/core/nodes/MethodCallNode.js.map +1 -0
  121. package/dist/core/nodes/MethodNode.js +1 -0
  122. package/dist/core/nodes/MethodNode.js.map +1 -0
  123. package/dist/core/nodes/ModuleNode.js +1 -0
  124. package/dist/core/nodes/ModuleNode.js.map +1 -0
  125. package/dist/core/nodes/NetworkRequestNode.js +1 -0
  126. package/dist/core/nodes/NetworkRequestNode.js.map +1 -0
  127. package/dist/core/nodes/NodeKind.d.ts +5 -0
  128. package/dist/core/nodes/NodeKind.d.ts.map +1 -1
  129. package/dist/core/nodes/NodeKind.js +11 -0
  130. package/dist/core/nodes/NodeKind.js.map +1 -0
  131. package/dist/core/nodes/ObjectLiteralNode.js +1 -0
  132. package/dist/core/nodes/ObjectLiteralNode.js.map +1 -0
  133. package/dist/core/nodes/ParameterNode.js +1 -0
  134. package/dist/core/nodes/ParameterNode.js.map +1 -0
  135. package/dist/core/nodes/PluginNode.d.ts +69 -0
  136. package/dist/core/nodes/PluginNode.d.ts.map +1 -0
  137. package/dist/core/nodes/PluginNode.js +106 -0
  138. package/dist/core/nodes/PluginNode.js.map +1 -0
  139. package/dist/core/nodes/ScopeNode.js +1 -0
  140. package/dist/core/nodes/ScopeNode.js.map +1 -0
  141. package/dist/core/nodes/ServiceNode.js +1 -0
  142. package/dist/core/nodes/ServiceNode.js.map +1 -0
  143. package/dist/core/nodes/TypeNode.js +2 -1
  144. package/dist/core/nodes/TypeNode.js.map +1 -0
  145. package/dist/core/nodes/VariableDeclarationNode.js +1 -0
  146. package/dist/core/nodes/VariableDeclarationNode.js.map +1 -0
  147. package/dist/core/nodes/index.d.ts +2 -1
  148. package/dist/core/nodes/index.d.ts.map +1 -1
  149. package/dist/core/nodes/index.js +4 -1
  150. package/dist/core/nodes/index.js.map +1 -0
  151. package/dist/core/toposort.d.ts +38 -0
  152. package/dist/core/toposort.d.ts.map +1 -0
  153. package/dist/core/toposort.js +129 -0
  154. package/dist/core/toposort.js.map +1 -0
  155. package/dist/data/builtins/BuiltinRegistry.js +1 -0
  156. package/dist/data/builtins/BuiltinRegistry.js.map +1 -0
  157. package/dist/data/builtins/definitions.js +1 -0
  158. package/dist/data/builtins/definitions.js.map +1 -0
  159. package/dist/data/builtins/index.js +1 -0
  160. package/dist/data/builtins/index.js.map +1 -0
  161. package/dist/data/builtins/jsGlobals.js +1 -0
  162. package/dist/data/builtins/jsGlobals.js.map +1 -0
  163. package/dist/data/builtins/types.js +1 -0
  164. package/dist/data/builtins/types.js.map +1 -0
  165. package/dist/data/globals/definitions.js +1 -0
  166. package/dist/data/globals/definitions.js.map +1 -0
  167. package/dist/data/globals/index.js +1 -0
  168. package/dist/data/globals/index.js.map +1 -0
  169. package/dist/diagnostics/DiagnosticCollector.d.ts +5 -0
  170. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -1
  171. package/dist/diagnostics/DiagnosticCollector.js +4 -0
  172. package/dist/diagnostics/DiagnosticCollector.js.map +1 -0
  173. package/dist/diagnostics/DiagnosticReporter.d.ts +23 -1
  174. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -1
  175. package/dist/diagnostics/DiagnosticReporter.js +68 -15
  176. package/dist/diagnostics/DiagnosticReporter.js.map +1 -0
  177. package/dist/diagnostics/DiagnosticWriter.js +1 -0
  178. package/dist/diagnostics/DiagnosticWriter.js.map +1 -0
  179. package/dist/diagnostics/categories.d.ts +57 -0
  180. package/dist/diagnostics/categories.d.ts.map +1 -0
  181. package/dist/diagnostics/categories.js +71 -0
  182. package/dist/diagnostics/categories.js.map +1 -0
  183. package/dist/diagnostics/index.d.ts +3 -0
  184. package/dist/diagnostics/index.d.ts.map +1 -1
  185. package/dist/diagnostics/index.js +4 -0
  186. package/dist/diagnostics/index.js.map +1 -0
  187. package/dist/errors/GrafemaError.d.ts +39 -0
  188. package/dist/errors/GrafemaError.d.ts.map +1 -1
  189. package/dist/errors/GrafemaError.js +28 -0
  190. package/dist/errors/GrafemaError.js.map +1 -0
  191. package/dist/index.d.ts +21 -8
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +19 -6
  194. package/dist/index.js.map +1 -0
  195. package/dist/instructions/index.d.ts +8 -0
  196. package/dist/instructions/index.d.ts.map +1 -0
  197. package/dist/instructions/index.js +20 -0
  198. package/dist/instructions/index.js.map +1 -0
  199. package/dist/instructions/onboarding.md +121 -0
  200. package/dist/logging/Logger.d.ts +53 -3
  201. package/dist/logging/Logger.d.ts.map +1 -1
  202. package/dist/logging/Logger.js +144 -4
  203. package/dist/logging/Logger.js.map +1 -0
  204. package/dist/plugins/Plugin.js +1 -0
  205. package/dist/plugins/Plugin.js.map +1 -0
  206. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  207. package/dist/plugins/analysis/DatabaseAnalyzer.js +20 -14
  208. package/dist/plugins/analysis/DatabaseAnalyzer.js.map +1 -0
  209. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  210. package/dist/plugins/analysis/ExpressAnalyzer.js +23 -16
  211. package/dist/plugins/analysis/ExpressAnalyzer.js.map +1 -0
  212. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +2 -1
  213. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -1
  214. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +53 -76
  215. package/dist/plugins/analysis/ExpressResponseAnalyzer.js.map +1 -0
  216. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  217. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +47 -37
  218. package/dist/plugins/analysis/ExpressRouteAnalyzer.js.map +1 -0
  219. package/dist/plugins/analysis/FetchAnalyzer.d.ts +8 -14
  220. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  221. package/dist/plugins/analysis/FetchAnalyzer.js +144 -97
  222. package/dist/plugins/analysis/FetchAnalyzer.js.map +1 -0
  223. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  224. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +3 -5
  225. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js.map +1 -0
  226. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +59 -2
  227. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  228. package/dist/plugins/analysis/JSASTAnalyzer.js +926 -422
  229. package/dist/plugins/analysis/JSASTAnalyzer.js.map +1 -0
  230. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  231. package/dist/plugins/analysis/ReactAnalyzer.js +24 -19
  232. package/dist/plugins/analysis/ReactAnalyzer.js.map +1 -0
  233. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  234. package/dist/plugins/analysis/RustAnalyzer.js +39 -26
  235. package/dist/plugins/analysis/RustAnalyzer.js.map +1 -0
  236. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  237. package/dist/plugins/analysis/SQLiteAnalyzer.js +14 -7
  238. package/dist/plugins/analysis/SQLiteAnalyzer.js.map +1 -0
  239. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  240. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +33 -28
  241. package/dist/plugins/analysis/ServiceLayerAnalyzer.js.map +1 -0
  242. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  243. package/dist/plugins/analysis/SocketIOAnalyzer.js +24 -14
  244. package/dist/plugins/analysis/SocketIOAnalyzer.js.map +1 -0
  245. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  246. package/dist/plugins/analysis/SystemDbAnalyzer.js +19 -11
  247. package/dist/plugins/analysis/SystemDbAnalyzer.js.map +1 -0
  248. package/dist/plugins/analysis/ast/ConditionParser.js +1 -0
  249. package/dist/plugins/analysis/ast/ConditionParser.js.map +1 -0
  250. package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts.map +1 -1
  251. package/dist/plugins/analysis/ast/ExpressionEvaluator.js +1 -0
  252. package/dist/plugins/analysis/ast/ExpressionEvaluator.js.map +1 -0
  253. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +58 -6
  254. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  255. package/dist/plugins/analysis/ast/GraphBuilder.js +440 -56
  256. package/dist/plugins/analysis/ast/GraphBuilder.js.map +1 -0
  257. package/dist/plugins/analysis/ast/IdGenerator.js +1 -0
  258. package/dist/plugins/analysis/ast/IdGenerator.js.map +1 -0
  259. package/dist/plugins/analysis/ast/OxcAdapter.js +1 -0
  260. package/dist/plugins/analysis/ast/OxcAdapter.js.map +1 -0
  261. package/dist/plugins/analysis/ast/types.d.ts +152 -1
  262. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  263. package/dist/plugins/analysis/ast/types.js +1 -0
  264. package/dist/plugins/analysis/ast/types.js.map +1 -0
  265. package/dist/plugins/analysis/ast/utils/babelTraverse.d.ts +27 -0
  266. package/dist/plugins/analysis/ast/utils/babelTraverse.d.ts.map +1 -0
  267. package/dist/plugins/analysis/ast/utils/babelTraverse.js +45 -0
  268. package/dist/plugins/analysis/ast/utils/babelTraverse.js.map +1 -0
  269. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +1 -1
  270. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -1
  271. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +1 -0
  272. package/dist/plugins/analysis/ast/utils/createParameterNodes.js.map +1 -0
  273. package/dist/plugins/analysis/ast/utils/index.js +1 -0
  274. package/dist/plugins/analysis/ast/utils/index.js.map +1 -0
  275. package/dist/plugins/analysis/ast/utils/location.js +1 -0
  276. package/dist/plugins/analysis/ast/utils/location.js.map +1 -0
  277. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +3 -1
  278. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  279. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +1 -0
  280. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js.map +1 -0
  281. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +9 -2
  282. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  283. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +145 -14
  284. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js.map +1 -0
  285. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +1 -1
  286. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  287. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +198 -0
  288. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js.map +1 -0
  289. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +4 -3
  290. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  291. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +5 -2
  292. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js.map +1 -0
  293. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +1 -0
  294. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js.map +1 -0
  295. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.d.ts +83 -0
  296. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.d.ts.map +1 -0
  297. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.js +258 -0
  298. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.js.map +1 -0
  299. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +1 -1
  300. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  301. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +1 -0
  302. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js.map +1 -0
  303. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +1 -1
  304. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  305. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +1 -0
  306. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js.map +1 -0
  307. package/dist/plugins/analysis/ast/visitors/index.d.ts +1 -0
  308. package/dist/plugins/analysis/ast/visitors/index.d.ts.map +1 -1
  309. package/dist/plugins/analysis/ast/visitors/index.js +2 -0
  310. package/dist/plugins/analysis/ast/visitors/index.js.map +1 -0
  311. package/dist/plugins/discovery/DiscoveryPlugin.d.ts +42 -10
  312. package/dist/plugins/discovery/DiscoveryPlugin.d.ts.map +1 -1
  313. package/dist/plugins/discovery/DiscoveryPlugin.js +17 -1
  314. package/dist/plugins/discovery/DiscoveryPlugin.js.map +1 -0
  315. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  316. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  317. package/dist/plugins/discovery/MonorepoServiceDiscovery.js.map +1 -0
  318. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  319. package/dist/plugins/discovery/SimpleProjectDiscovery.js +3 -2
  320. package/dist/plugins/discovery/SimpleProjectDiscovery.js.map +1 -0
  321. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -1
  322. package/dist/plugins/discovery/WorkspaceDiscovery.js +3 -2
  323. package/dist/plugins/discovery/WorkspaceDiscovery.js.map +1 -0
  324. package/dist/plugins/discovery/resolveSourceEntrypoint.js +1 -0
  325. package/dist/plugins/discovery/resolveSourceEntrypoint.js.map +1 -0
  326. package/dist/plugins/discovery/workspaces/detector.js +1 -0
  327. package/dist/plugins/discovery/workspaces/detector.js.map +1 -0
  328. package/dist/plugins/discovery/workspaces/globResolver.js +1 -0
  329. package/dist/plugins/discovery/workspaces/globResolver.js.map +1 -0
  330. package/dist/plugins/discovery/workspaces/index.js +1 -0
  331. package/dist/plugins/discovery/workspaces/index.js.map +1 -0
  332. package/dist/plugins/discovery/workspaces/parsers.js +1 -0
  333. package/dist/plugins/discovery/workspaces/parsers.js.map +1 -0
  334. package/dist/plugins/enrichment/AliasTracker.js +3 -2
  335. package/dist/plugins/enrichment/AliasTracker.js.map +1 -0
  336. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -1
  337. package/dist/plugins/enrichment/ArgumentParameterLinker.js +1 -1
  338. package/dist/plugins/enrichment/ArgumentParameterLinker.js.map +1 -0
  339. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -1
  340. package/dist/plugins/enrichment/ClosureCaptureEnricher.js +1 -1
  341. package/dist/plugins/enrichment/ClosureCaptureEnricher.js.map +1 -0
  342. package/dist/plugins/enrichment/ExpressHandlerLinker.d.ts +21 -0
  343. package/dist/plugins/enrichment/ExpressHandlerLinker.d.ts.map +1 -0
  344. package/dist/plugins/enrichment/ExpressHandlerLinker.js +137 -0
  345. package/dist/plugins/enrichment/ExpressHandlerLinker.js.map +1 -0
  346. package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -1
  347. package/dist/plugins/enrichment/ExternalCallResolver.js +1 -1
  348. package/dist/plugins/enrichment/ExternalCallResolver.js.map +1 -0
  349. package/dist/plugins/enrichment/FunctionCallResolver.d.ts +5 -0
  350. package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -1
  351. package/dist/plugins/enrichment/FunctionCallResolver.js +11 -9
  352. package/dist/plugins/enrichment/FunctionCallResolver.js.map +1 -0
  353. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +2 -0
  354. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  355. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +51 -13
  356. package/dist/plugins/enrichment/HTTPConnectionEnricher.js.map +1 -0
  357. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  358. package/dist/plugins/enrichment/ImportExportLinker.js +1 -1
  359. package/dist/plugins/enrichment/ImportExportLinker.js.map +1 -0
  360. package/dist/plugins/enrichment/InstanceOfResolver.js +3 -2
  361. package/dist/plugins/enrichment/InstanceOfResolver.js.map +1 -0
  362. package/dist/plugins/enrichment/MethodCallResolver.d.ts +39 -1
  363. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  364. package/dist/plugins/enrichment/MethodCallResolver.js +422 -11
  365. package/dist/plugins/enrichment/MethodCallResolver.js.map +1 -0
  366. package/dist/plugins/enrichment/MountPointResolver.d.ts +1 -1
  367. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  368. package/dist/plugins/enrichment/MountPointResolver.js +7 -23
  369. package/dist/plugins/enrichment/MountPointResolver.js.map +1 -0
  370. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -1
  371. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +2 -2
  372. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js.map +1 -0
  373. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  374. package/dist/plugins/enrichment/PrefixEvaluator.js +5 -4
  375. package/dist/plugins/enrichment/PrefixEvaluator.js.map +1 -0
  376. package/dist/plugins/enrichment/RejectionPropagationEnricher.d.ts +30 -0
  377. package/dist/plugins/enrichment/RejectionPropagationEnricher.d.ts.map +1 -0
  378. package/dist/plugins/enrichment/RejectionPropagationEnricher.js +190 -0
  379. package/dist/plugins/enrichment/RejectionPropagationEnricher.js.map +1 -0
  380. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  381. package/dist/plugins/enrichment/RustFFIEnricher.js +1 -1
  382. package/dist/plugins/enrichment/RustFFIEnricher.js.map +1 -0
  383. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +1 -1
  384. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  385. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +4 -3
  386. package/dist/plugins/enrichment/ValueDomainAnalyzer.js.map +1 -0
  387. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts +3 -1
  388. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  389. package/dist/plugins/indexing/IncrementalModuleIndexer.js +22 -29
  390. package/dist/plugins/indexing/IncrementalModuleIndexer.js.map +1 -0
  391. package/dist/plugins/indexing/JSModuleIndexer.d.ts +3 -1
  392. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  393. package/dist/plugins/indexing/JSModuleIndexer.js +22 -31
  394. package/dist/plugins/indexing/JSModuleIndexer.js.map +1 -0
  395. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  396. package/dist/plugins/indexing/RustModuleIndexer.js +11 -5
  397. package/dist/plugins/indexing/RustModuleIndexer.js.map +1 -0
  398. package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -1
  399. package/dist/plugins/validation/BrokenImportValidator.js +3 -3
  400. package/dist/plugins/validation/BrokenImportValidator.js.map +1 -0
  401. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  402. package/dist/plugins/validation/CallResolverValidator.js +3 -3
  403. package/dist/plugins/validation/CallResolverValidator.js.map +1 -0
  404. package/dist/plugins/validation/DataFlowValidator.js +2 -1
  405. package/dist/plugins/validation/DataFlowValidator.js.map +1 -0
  406. package/dist/plugins/validation/EvalBanValidator.js +2 -1
  407. package/dist/plugins/validation/EvalBanValidator.js.map +1 -0
  408. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  409. package/dist/plugins/validation/GraphConnectivityValidator.js +2 -1
  410. package/dist/plugins/validation/GraphConnectivityValidator.js.map +1 -0
  411. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  412. package/dist/plugins/validation/SQLInjectionValidator.js +4 -2
  413. package/dist/plugins/validation/SQLInjectionValidator.js.map +1 -0
  414. package/dist/plugins/validation/ShadowingDetector.js +2 -1
  415. package/dist/plugins/validation/ShadowingDetector.js.map +1 -0
  416. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  417. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +3 -3
  418. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js.map +1 -0
  419. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  420. package/dist/plugins/vcs/GitPlugin.js +13 -6
  421. package/dist/plugins/vcs/GitPlugin.js.map +1 -0
  422. package/dist/plugins/vcs/VCSPlugin.js +1 -0
  423. package/dist/plugins/vcs/VCSPlugin.js.map +1 -0
  424. package/dist/plugins/vcs/index.js +1 -0
  425. package/dist/plugins/vcs/index.js.map +1 -0
  426. package/dist/queries/findCallsInFunction.d.ts +1 -1
  427. package/dist/queries/findCallsInFunction.d.ts.map +1 -1
  428. package/dist/queries/findCallsInFunction.js +3 -2
  429. package/dist/queries/findCallsInFunction.js.map +1 -0
  430. package/dist/queries/findContainingFunction.d.ts +1 -1
  431. package/dist/queries/findContainingFunction.d.ts.map +1 -1
  432. package/dist/queries/findContainingFunction.js +1 -0
  433. package/dist/queries/findContainingFunction.js.map +1 -0
  434. package/dist/queries/index.js +1 -0
  435. package/dist/queries/index.js.map +1 -0
  436. package/dist/queries/traceValues.d.ts.map +1 -1
  437. package/dist/queries/traceValues.js +1 -0
  438. package/dist/queries/traceValues.js.map +1 -0
  439. package/dist/queries/types.js +1 -0
  440. package/dist/queries/types.js.map +1 -0
  441. package/dist/schema/GraphSchemaExtractor.js +1 -0
  442. package/dist/schema/GraphSchemaExtractor.js.map +1 -0
  443. package/dist/schema/InterfaceSchemaExtractor.js +1 -0
  444. package/dist/schema/InterfaceSchemaExtractor.js.map +1 -0
  445. package/dist/schema/index.js +1 -0
  446. package/dist/schema/index.js.map +1 -0
  447. package/dist/storage/backends/RFDBServerBackend.d.ts +20 -0
  448. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  449. package/dist/storage/backends/RFDBServerBackend.js +47 -19
  450. package/dist/storage/backends/RFDBServerBackend.js.map +1 -0
  451. package/dist/storage/backends/typeValidation.d.ts.map +1 -1
  452. package/dist/storage/backends/typeValidation.js +3 -0
  453. package/dist/storage/backends/typeValidation.js.map +1 -0
  454. package/dist/utils/findRfdbBinary.d.ts +39 -0
  455. package/dist/utils/findRfdbBinary.d.ts.map +1 -0
  456. package/dist/utils/findRfdbBinary.js +141 -0
  457. package/dist/utils/findRfdbBinary.js.map +1 -0
  458. package/dist/utils/moduleResolution.d.ts +134 -0
  459. package/dist/utils/moduleResolution.d.ts.map +1 -0
  460. package/dist/utils/moduleResolution.js +164 -0
  461. package/dist/utils/moduleResolution.js.map +1 -0
  462. package/dist/validation/PathValidator.d.ts.map +1 -1
  463. package/dist/validation/PathValidator.js +1 -0
  464. package/dist/validation/PathValidator.js.map +1 -0
  465. package/package.json +4 -3
  466. package/src/Orchestrator.ts +371 -41
  467. package/src/api/GraphAPI.ts +4 -2
  468. package/src/api/GuaranteeAPI.ts +3 -2
  469. package/src/config/ConfigLoader.ts +121 -3
  470. package/src/config/index.ts +7 -1
  471. package/src/core/ASTWorker.ts +8 -20
  472. package/src/core/ASTWorkerPool.ts +1 -1
  473. package/src/core/CoverageAnalyzer.ts +2 -2
  474. package/src/core/FileNodeManager.ts +3 -2
  475. package/src/core/GuaranteeManager.ts +1 -1
  476. package/src/core/IncrementalReanalyzer.ts +6 -3
  477. package/src/core/NodeFactory.ts +34 -1
  478. package/src/core/WorkerPool.ts +2 -1
  479. package/src/core/nodes/NodeKind.ts +11 -0
  480. package/src/core/nodes/PluginNode.ts +144 -0
  481. package/src/core/nodes/TypeNode.ts +1 -1
  482. package/src/core/nodes/index.ts +4 -0
  483. package/src/core/toposort.ts +160 -0
  484. package/src/diagnostics/DiagnosticCollector.ts +8 -1
  485. package/src/diagnostics/DiagnosticReporter.ts +87 -16
  486. package/src/diagnostics/categories.ts +104 -0
  487. package/src/diagnostics/index.ts +14 -0
  488. package/src/errors/GrafemaError.ts +58 -0
  489. package/src/index.ts +53 -7
  490. package/src/instructions/index.ts +21 -0
  491. package/src/instructions/onboarding.md +121 -0
  492. package/src/logging/Logger.ts +155 -4
  493. package/src/plugins/analysis/DatabaseAnalyzer.ts +22 -15
  494. package/src/plugins/analysis/ExpressAnalyzer.ts +30 -18
  495. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +72 -88
  496. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +54 -39
  497. package/src/plugins/analysis/FetchAnalyzer.ts +165 -113
  498. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +6 -7
  499. package/src/plugins/analysis/JSASTAnalyzer.ts +1122 -487
  500. package/src/plugins/analysis/ReactAnalyzer.ts +27 -20
  501. package/src/plugins/analysis/RustAnalyzer.ts +41 -27
  502. package/src/plugins/analysis/SQLiteAnalyzer.ts +18 -8
  503. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +38 -34
  504. package/src/plugins/analysis/SocketIOAnalyzer.ts +30 -15
  505. package/src/plugins/analysis/SystemDbAnalyzer.ts +24 -13
  506. package/src/plugins/analysis/ast/ExpressionEvaluator.ts +1 -3
  507. package/src/plugins/analysis/ast/GraphBuilder.ts +532 -66
  508. package/src/plugins/analysis/ast/types.ts +200 -2
  509. package/src/plugins/analysis/ast/utils/babelTraverse.ts +74 -0
  510. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +1 -1
  511. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +7 -2
  512. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +163 -15
  513. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +249 -3
  514. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +9 -4
  515. package/src/plugins/analysis/ast/visitors/PropertyAccessVisitor.ts +342 -0
  516. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +2 -3
  517. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +1 -27
  518. package/src/plugins/analysis/ast/visitors/index.ts +2 -0
  519. package/src/plugins/discovery/DiscoveryPlugin.ts +42 -11
  520. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +2 -2
  521. package/src/plugins/discovery/SimpleProjectDiscovery.ts +2 -2
  522. package/src/plugins/discovery/WorkspaceDiscovery.ts +2 -2
  523. package/src/plugins/discovery/workspaces/globResolver.ts +1 -1
  524. package/src/plugins/enrichment/AliasTracker.ts +2 -2
  525. package/src/plugins/enrichment/ArgumentParameterLinker.ts +0 -1
  526. package/src/plugins/enrichment/ClosureCaptureEnricher.ts +0 -1
  527. package/src/plugins/enrichment/ExpressHandlerLinker.ts +178 -0
  528. package/src/plugins/enrichment/ExternalCallResolver.ts +0 -1
  529. package/src/plugins/enrichment/FunctionCallResolver.ts +10 -15
  530. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +65 -14
  531. package/src/plugins/enrichment/ImportExportLinker.ts +0 -1
  532. package/src/plugins/enrichment/InstanceOfResolver.ts +2 -2
  533. package/src/plugins/enrichment/MethodCallResolver.ts +526 -12
  534. package/src/plugins/enrichment/MountPointResolver.ts +6 -24
  535. package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +1 -2
  536. package/src/plugins/enrichment/PrefixEvaluator.ts +4 -4
  537. package/src/plugins/enrichment/RejectionPropagationEnricher.ts +253 -0
  538. package/src/plugins/enrichment/RustFFIEnricher.ts +0 -1
  539. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +3 -3
  540. package/src/plugins/indexing/IncrementalModuleIndexer.ts +24 -30
  541. package/src/plugins/indexing/JSModuleIndexer.ts +21 -22
  542. package/src/plugins/indexing/RustModuleIndexer.ts +10 -5
  543. package/src/plugins/validation/BrokenImportValidator.ts +2 -3
  544. package/src/plugins/validation/CallResolverValidator.ts +2 -3
  545. package/src/plugins/validation/DataFlowValidator.ts +1 -1
  546. package/src/plugins/validation/EvalBanValidator.ts +1 -1
  547. package/src/plugins/validation/GraphConnectivityValidator.ts +1 -9
  548. package/src/plugins/validation/SQLInjectionValidator.ts +3 -2
  549. package/src/plugins/validation/ShadowingDetector.ts +1 -1
  550. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +2 -3
  551. package/src/plugins/vcs/GitPlugin.ts +12 -6
  552. package/src/queries/findCallsInFunction.ts +4 -4
  553. package/src/queries/findContainingFunction.ts +1 -1
  554. package/src/queries/traceValues.ts +0 -1
  555. package/src/storage/backends/RFDBServerBackend.ts +56 -22
  556. package/src/storage/backends/typeValidation.ts +2 -0
  557. package/src/utils/findRfdbBinary.ts +160 -0
  558. package/src/utils/moduleResolution.ts +244 -0
  559. package/src/validation/PathValidator.ts +0 -8
  560. package/src/plugins/validation/NodeCreationValidator.ts +0 -554
@@ -14,8 +14,7 @@ import type {
14
14
  TSPropertySignature,
15
15
  TSMethodSignature,
16
16
  Identifier,
17
- Expression,
18
- TSExpressionWithTypeArguments
17
+ Expression
19
18
  } from '@babel/types';
20
19
  import type { NodePath } from '@babel/traverse';
21
20
  import { ASTVisitor, type VisitorModule, type VisitorCollections, type VisitorHandlers } from './ASTVisitor.js';
@@ -26,7 +25,7 @@ import type {
26
25
  EnumDeclarationInfo,
27
26
  EnumMemberInfo
28
27
  } from '../types.js';
29
- import { ScopeTracker } from '../../../../core/ScopeTracker.js';
28
+ import type { ScopeTracker } from '../../../../core/ScopeTracker.js';
30
29
  import { computeSemanticId } from '../../../../core/SemanticId.js';
31
30
  import { getLine, getColumn } from '../utils/location.js';
32
31
 
@@ -17,9 +17,8 @@ import type {
17
17
  import type { NodePath } from '@babel/traverse';
18
18
  import { ASTVisitor, type VisitorModule, type VisitorCollections, type VisitorHandlers, type CounterRef } from './ASTVisitor.js';
19
19
  import { ExpressionEvaluator } from '../ExpressionEvaluator.js';
20
- import { ScopeTracker } from '../../../../core/ScopeTracker.js';
20
+ import type { ScopeTracker } from '../../../../core/ScopeTracker.js';
21
21
  import { IdGenerator } from '../IdGenerator.js';
22
- import { NodeFactory } from '../../../../core/NodeFactory.js';
23
22
 
24
23
  /**
25
24
  * Variable info extracted from pattern
@@ -78,31 +77,6 @@ interface ClassInstantiationInfo {
78
77
  parentScopeId: string;
79
78
  }
80
79
 
81
- /**
82
- * Literal/expression info for data flow
83
- */
84
- interface LiteralExpressionInfo {
85
- id: string;
86
- type: 'EXPRESSION';
87
- expressionType: string;
88
- path: string;
89
- baseName: string;
90
- propertyPath: string[] | null;
91
- arrayIndex?: number;
92
- file: string;
93
- line: number;
94
- }
95
-
96
- /**
97
- * Variable assignment info for data flow
98
- */
99
- interface VariableAssignmentInfo {
100
- variableId: string;
101
- sourceId: string | null;
102
- sourceName?: string;
103
- sourceType: string;
104
- file?: string;
105
- }
106
80
 
107
81
  /**
108
82
  * Call info extracted from CallExpression (REG-223)
@@ -34,3 +34,5 @@ export { ClassVisitor } from './ClassVisitor.js';
34
34
  export { CallExpressionVisitor } from './CallExpressionVisitor.js';
35
35
 
36
36
  export { TypeScriptVisitor } from './TypeScriptVisitor.js';
37
+
38
+ export { PropertyAccessVisitor } from './PropertyAccessVisitor.js';
@@ -5,6 +5,22 @@
5
5
  * 1. Поиск сервисов/компонентов в проекте
6
6
  * 2. Создание SERVICE нод
7
7
  * 3. Возврат манифеста для последующих фаз
8
+ *
9
+ * IMPORTANT CONTRACT:
10
+ * Discovery plugins MUST return found services via `result.metadata.services`
11
+ * (not `result.data.services` which doesn't exist in PluginResult interface).
12
+ *
13
+ * Example:
14
+ * ```typescript
15
+ * return createSuccessResult(
16
+ * { nodes: services.length, edges: 0 },
17
+ * { services: foundServices } // <-- This becomes result.metadata.services
18
+ * );
19
+ * ```
20
+ *
21
+ * The Orchestrator reads services from result.metadata.services to build
22
+ * the indexing queue. If services are not returned here, they won't be indexed
23
+ * even if SERVICE nodes were created in the graph.
8
24
  */
9
25
 
10
26
  import { Plugin } from '../Plugin.js';
@@ -19,7 +35,6 @@ export abstract class DiscoveryPlugin extends Plugin {
19
35
  return {
20
36
  name: this.constructor.name,
21
37
  phase: 'DISCOVERY',
22
- priority: 100,
23
38
  creates: {
24
39
  nodes: ['SERVICE'],
25
40
  edges: []
@@ -35,16 +50,32 @@ export abstract class DiscoveryPlugin extends Plugin {
35
50
  * context.projectPath - корневая директория проекта
36
51
  *
37
52
  * @returns Promise<PluginResult>
38
- * result.metadata.services - массив найденных сервисов
39
- * [
40
- * {
41
- * id: string,
42
- * name: string,
43
- * path: string,
44
- * type: string,
45
- * metadata: Object
46
- * }
47
- * ]
53
+ *
54
+ * CRITICAL: Services MUST be returned via result.metadata.services:
55
+ *
56
+ * ```typescript
57
+ * return createSuccessResult(
58
+ * { nodes: services.length, edges: 0 },
59
+ * { services: foundServices } // <-- metadata.services
60
+ * );
61
+ * ```
62
+ *
63
+ * ServiceInfo interface:
64
+ * ```typescript
65
+ * interface ServiceInfo {
66
+ * id: string; // Unique service identifier
67
+ * name: string; // Human-readable name
68
+ * path: string; // Directory path
69
+ * type: string; // Service type (e.g., 'express', 'fastify')
70
+ * metadata: {
71
+ * entrypoint?: string; // Main file path (e.g., 'src/index.ts')
72
+ * // ... other service-specific metadata
73
+ * };
74
+ * }
75
+ * ```
76
+ *
77
+ * If services are created in graph but NOT returned via metadata.services,
78
+ * Orchestrator will show "0 services" and won't index anything.
48
79
  */
49
80
  abstract execute(context: PluginContext): Promise<PluginResult>;
50
81
  }
@@ -47,7 +47,6 @@ export class MonorepoServiceDiscovery extends DiscoveryPlugin {
47
47
  return {
48
48
  name: 'MonorepoServiceDiscovery',
49
49
  phase: 'DISCOVERY',
50
- priority: 100,
51
50
  creates: {
52
51
  nodes: ['SERVICE'],
53
52
  edges: []
@@ -112,7 +111,8 @@ export class MonorepoServiceDiscovery extends DiscoveryPlugin {
112
111
  { services }
113
112
  );
114
113
  } catch (error) {
115
- return createErrorResult(error as Error);
114
+ const err = error instanceof Error ? error : new Error(String(error));
115
+ return createErrorResult(err);
116
116
  }
117
117
  }
118
118
  }
@@ -45,7 +45,6 @@ export class SimpleProjectDiscovery extends Plugin {
45
45
  return {
46
46
  name: 'SimpleProjectDiscovery',
47
47
  phase: 'DISCOVERY',
48
- priority: 50, // Lower priority than specialized discovery plugins
49
48
  creates: {
50
49
  nodes: ['SERVICE'],
51
50
  edges: []
@@ -101,7 +100,8 @@ export class SimpleProjectDiscovery extends Plugin {
101
100
 
102
101
  return createSuccessResult({ nodes: 1, edges: 0 }, { services: [service] });
103
102
  } catch (error) {
104
- return createErrorResult(error as Error);
103
+ const err = error instanceof Error ? error : new Error(String(error));
104
+ return createErrorResult(err);
105
105
  }
106
106
  }
107
107
  }
@@ -42,7 +42,6 @@ export class WorkspaceDiscovery extends DiscoveryPlugin {
42
42
  return {
43
43
  name: 'WorkspaceDiscovery',
44
44
  phase: 'DISCOVERY',
45
- priority: 110, // Higher than MonorepoServiceDiscovery (100)
46
45
  creates: {
47
46
  nodes: ['SERVICE'],
48
47
  edges: []
@@ -97,7 +96,8 @@ export class WorkspaceDiscovery extends DiscoveryPlugin {
97
96
  throw new Error(`Unknown workspace type: ${detection.type}`);
98
97
  }
99
98
  } catch (error) {
100
- return createErrorResult(error as Error);
99
+ const err = error instanceof Error ? error : new Error(String(error));
100
+ return createErrorResult(err);
101
101
  }
102
102
 
103
103
  logger.debug('Workspace config parsed', {
@@ -5,7 +5,7 @@
5
5
  * Uses minimatch for pattern matching.
6
6
  */
7
7
 
8
- import { readdirSync, statSync, existsSync, readFileSync, lstatSync } from 'fs';
8
+ import { readdirSync, existsSync, readFileSync, lstatSync } from 'fs';
9
9
  import { join, relative } from 'path';
10
10
  import { minimatch } from 'minimatch';
11
11
  import type { WorkspaceConfig } from './parsers.js';
@@ -71,11 +71,11 @@ export class AliasTracker extends Plugin {
71
71
  return {
72
72
  name: 'AliasTracker',
73
73
  phase: 'ENRICHMENT',
74
- priority: 60, // После MethodCallResolver (50)
75
74
  creates: {
76
75
  nodes: [],
77
76
  edges: ['CALLS', 'ALIAS_OF']
78
- }
77
+ },
78
+ dependencies: ['MethodCallResolver']
79
79
  };
80
80
  }
81
81
 
@@ -63,7 +63,6 @@ export class ArgumentParameterLinker extends Plugin {
63
63
  return {
64
64
  name: 'ArgumentParameterLinker',
65
65
  phase: 'ENRICHMENT',
66
- priority: 45, // Runs AFTER MethodCallResolver (50) which creates required CALLS edges
67
66
  creates: {
68
67
  nodes: [],
69
68
  edges: ['RECEIVES_ARGUMENT']
@@ -51,7 +51,6 @@ export class ClosureCaptureEnricher extends Plugin {
51
51
  return {
52
52
  name: 'ClosureCaptureEnricher',
53
53
  phase: 'ENRICHMENT',
54
- priority: 40, // Lower number = runs later. Runs after ImportExportLinker (90)
55
54
  creates: {
56
55
  nodes: [],
57
56
  edges: ['CAPTURES']
@@ -0,0 +1,178 @@
1
+ /**
2
+ * ExpressHandlerLinker - creates HANDLED_BY edges connecting
3
+ * http:route nodes to their handler FUNCTION nodes.
4
+ *
5
+ * This enricher runs AFTER ExpressRouteAnalyzer (analysis phase) and
6
+ * creates cross-references between routes and functions.
7
+ *
8
+ * Strategy:
9
+ * 1. For inline handlers (arrow/function expressions): match by byte offset (start)
10
+ * 2. For named handlers (Identifier references): match by function name
11
+ *
12
+ * This approach avoids duplicating semantic ID computation logic
13
+ * (which is solely owned by JSASTAnalyzer/ScopeTracker).
14
+ */
15
+
16
+ import { Plugin, createSuccessResult } from '../Plugin.js';
17
+ import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
18
+ import type { BaseNodeRecord } from '@grafema/types';
19
+
20
+ /**
21
+ * Extended http:route node with handler identification fields.
22
+ * Note: These fields are stored at the top level after metadata parsing,
23
+ * not nested under a metadata object.
24
+ */
25
+ interface HttpRouteNode extends BaseNodeRecord {
26
+ type: 'http:route';
27
+ handlerStart?: number; // Byte offset for inline handlers
28
+ handlerName?: string; // Function name for named handlers
29
+ }
30
+
31
+ /**
32
+ * Extended FUNCTION node with start field
33
+ */
34
+ interface FunctionNode extends BaseNodeRecord {
35
+ type: 'FUNCTION';
36
+ start?: number;
37
+ }
38
+
39
+ export class ExpressHandlerLinker extends Plugin {
40
+ get metadata(): PluginMetadata {
41
+ return {
42
+ name: 'ExpressHandlerLinker',
43
+ phase: 'ENRICHMENT',
44
+ creates: {
45
+ nodes: [],
46
+ edges: ['HANDLED_BY']
47
+ },
48
+ dependencies: ['JSASTAnalyzer', 'ExpressRouteAnalyzer']
49
+ };
50
+ }
51
+
52
+ async execute(context: PluginContext): Promise<PluginResult> {
53
+ const { graph, onProgress } = context;
54
+ const logger = this.log(context);
55
+
56
+ logger.info('Starting Express handler linking');
57
+
58
+ const startTime = Date.now();
59
+
60
+ let routesProcessed = 0;
61
+ let edgesCreated = 0;
62
+ let noHandlerInfo = 0;
63
+ let handlerNotFound = 0;
64
+
65
+ // Collect all http:route nodes
66
+ const routeNodes: HttpRouteNode[] = [];
67
+ for await (const node of graph.queryNodes({ type: 'http:route' })) {
68
+ routeNodes.push(node as HttpRouteNode);
69
+ }
70
+
71
+ logger.info('Found routes to process', { count: routeNodes.length });
72
+
73
+ if (routeNodes.length === 0) {
74
+ return createSuccessResult({ nodes: 0, edges: 0 });
75
+ }
76
+
77
+ // Group routes by file for efficient batch lookup
78
+ const routesByFile = new Map<string, HttpRouteNode[]>();
79
+ for (const route of routeNodes) {
80
+ const file = route.file;
81
+ if (!file) continue;
82
+ const routes = routesByFile.get(file) || [];
83
+ routes.push(route);
84
+ routesByFile.set(file, routes);
85
+ }
86
+
87
+ // Process routes file by file
88
+ for (const [file, fileRoutes] of routesByFile) {
89
+ // Build function lookup maps for this file
90
+ const functionsByStart = new Map<number, string>(); // start -> nodeId
91
+ const functionsByName = new Map<string, string>(); // name -> nodeId (first match)
92
+
93
+ for await (const fn of graph.queryNodes({ type: 'FUNCTION', file })) {
94
+ const funcNode = fn as FunctionNode;
95
+ if (funcNode.start !== undefined) {
96
+ functionsByStart.set(funcNode.start, funcNode.id);
97
+ }
98
+ if (funcNode.name && !functionsByName.has(funcNode.name)) {
99
+ functionsByName.set(funcNode.name, funcNode.id);
100
+ }
101
+ }
102
+
103
+ // Link routes to handlers
104
+ for (const route of fileRoutes) {
105
+ routesProcessed++;
106
+
107
+ // Report progress
108
+ if (onProgress && routesProcessed % 20 === 0) {
109
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
110
+ onProgress({
111
+ phase: 'enrichment',
112
+ currentPlugin: 'ExpressHandlerLinker',
113
+ message: `Linking handlers ${routesProcessed}/${routeNodes.length} (${elapsed}s)`,
114
+ totalFiles: routeNodes.length,
115
+ processedFiles: routesProcessed
116
+ });
117
+ }
118
+
119
+ // Handler identification is stored at top level after metadata parsing
120
+ const handlerStart = route.handlerStart;
121
+ const handlerName = route.handlerName;
122
+
123
+ // Try to find handler function
124
+ let handlerId: string | undefined;
125
+
126
+ if (handlerStart !== undefined) {
127
+ // Inline handler: lookup by byte offset
128
+ handlerId = functionsByStart.get(handlerStart);
129
+ } else if (handlerName !== undefined) {
130
+ // Named handler: lookup by name
131
+ handlerId = functionsByName.get(handlerName);
132
+ } else {
133
+ noHandlerInfo++;
134
+ continue;
135
+ }
136
+
137
+ if (!handlerId) {
138
+ handlerNotFound++;
139
+ logger.debug('Handler not found', {
140
+ route: route.id,
141
+ handlerStart,
142
+ handlerName,
143
+ file
144
+ });
145
+ continue;
146
+ }
147
+
148
+ // Create HANDLED_BY edge: route -> handler function
149
+ await graph.addEdge({
150
+ type: 'HANDLED_BY',
151
+ src: route.id,
152
+ dst: handlerId
153
+ });
154
+ edgesCreated++;
155
+ }
156
+ }
157
+
158
+ const totalTime = ((Date.now() - startTime) / 1000).toFixed(2);
159
+ logger.info('Complete', {
160
+ routesProcessed,
161
+ edgesCreated,
162
+ noHandlerInfo,
163
+ handlerNotFound,
164
+ time: `${totalTime}s`
165
+ });
166
+
167
+ return createSuccessResult(
168
+ { nodes: 0, edges: edgesCreated },
169
+ {
170
+ routesProcessed,
171
+ edgesCreated,
172
+ noHandlerInfo,
173
+ handlerNotFound,
174
+ timeMs: Date.now() - startTime
175
+ }
176
+ );
177
+ }
178
+ }
@@ -47,7 +47,6 @@ export class ExternalCallResolver extends Plugin {
47
47
  return {
48
48
  name: 'ExternalCallResolver',
49
49
  phase: 'ENRICHMENT',
50
- priority: 70, // After FunctionCallResolver (80)
51
50
  creates: {
52
51
  nodes: ['EXTERNAL_MODULE'],
53
52
  edges: ['CALLS']
@@ -16,6 +16,7 @@ import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
16
16
  import type { BaseNodeRecord } from '@grafema/types';
17
17
  import { dirname, resolve } from 'path';
18
18
  import { StrictModeError } from '../../errors/GrafemaError.js';
19
+ import { resolveModulePath as resolveModulePathUtil } from '../../utils/moduleResolution.js';
19
20
 
20
21
  // === INTERFACES ===
21
22
 
@@ -36,10 +37,6 @@ interface ExportNode extends BaseNodeRecord {
36
37
  source?: string; // Re-export source (if re-exporting)
37
38
  }
38
39
 
39
- interface ExportIndexEntry {
40
- node: ExportNode;
41
- exportKey: string; // "default" | "named:functionName"
42
- }
43
40
 
44
41
  interface ExternalModuleResult {
45
42
  type: 'external';
@@ -58,7 +55,6 @@ export class FunctionCallResolver extends Plugin {
58
55
  return {
59
56
  name: 'FunctionCallResolver',
60
57
  phase: 'ENRICHMENT',
61
- priority: 80, // After ImportExportLinker (90)
62
58
  creates: {
63
59
  nodes: ['EXTERNAL_MODULE'],
64
60
  edges: ['CALLS']
@@ -353,22 +349,21 @@ export class FunctionCallResolver extends Plugin {
353
349
  * @param fileIndex - Set or Map of known file paths for existence checking
354
350
  * @returns Resolved file path or null if not found
355
351
  */
352
+ /**
353
+ * Resolve module path using in-memory file index.
354
+ * Uses shared utility from moduleResolution.ts (REG-320).
355
+ * Now supports all extensions (.mjs, .cjs, etc.) - fixes previous bug.
356
+ */
356
357
  private resolveModulePath(
357
358
  currentDir: string,
358
359
  specifier: string,
359
360
  fileIndex: Set<string>
360
361
  ): string | null {
361
362
  const basePath = resolve(currentDir, specifier);
362
- const extensions = ['', '.js', '.ts', '.jsx', '.tsx', '/index.js', '/index.ts'];
363
-
364
- for (const ext of extensions) {
365
- const testPath = basePath + ext;
366
- if (fileIndex.has(testPath)) {
367
- return testPath;
368
- }
369
- }
370
-
371
- return null;
363
+ return resolveModulePathUtil(basePath, {
364
+ useFilesystem: false,
365
+ fileIndex
366
+ });
372
367
  }
373
368
 
374
369
  /**
@@ -12,6 +12,7 @@
12
12
  import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
13
13
  import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
14
14
  import type { BaseNodeRecord } from '@grafema/types';
15
+ import { StrictModeError, ValidationError } from '../../errors/GrafemaError.js';
15
16
 
16
17
  /**
17
18
  * HTTP route node
@@ -28,10 +29,13 @@ interface HTTPRouteNode extends BaseNodeRecord {
28
29
  */
29
30
  interface HTTPRequestNode extends BaseNodeRecord {
30
31
  method?: string;
32
+ methodSource?: MethodSource;
31
33
  url?: string;
32
34
  responseDataNode?: string; // ID of response.json() CALL node (set by FetchAnalyzer)
33
35
  }
34
36
 
37
+ type MethodSource = 'explicit' | 'default' | 'unknown';
38
+
35
39
  /**
36
40
  * Connection info for logging
37
41
  */
@@ -47,7 +51,6 @@ export class HTTPConnectionEnricher extends Plugin {
47
51
  return {
48
52
  name: 'HTTPConnectionEnricher',
49
53
  phase: 'ENRICHMENT',
50
- priority: 50, // После основных enrichers
51
54
  creates: {
52
55
  nodes: [],
53
56
  edges: ['INTERACTS_WITH', 'HTTP_RECEIVES']
@@ -88,25 +91,65 @@ export class HTTPConnectionEnricher extends Plugin {
88
91
  });
89
92
 
90
93
  let edgesCreated = 0;
94
+ const errors: Error[] = [];
91
95
  const connections: ConnectionInfo[] = [];
92
96
 
93
97
  // Для каждого request ищем matching route
94
98
  for (const request of uniqueRequests) {
95
- // Пропускаем dynamic URLs
96
- if (request.url === 'dynamic' || !request.url) {
99
+ const methodSource = request.methodSource ?? 'explicit';
100
+ const method = request.method ? request.method.toUpperCase() : null;
101
+ const url = request.url;
102
+
103
+ if (methodSource === 'unknown') {
104
+ const urlLabel = url ?? 'unknown';
105
+ const message = `Unknown HTTP method for request ${urlLabel}`;
106
+ if (context.strictMode) {
107
+ errors.push(new StrictModeError(
108
+ message,
109
+ 'STRICT_UNKNOWN_HTTP_METHOD',
110
+ {
111
+ filePath: request.file,
112
+ lineNumber: request.line as number | undefined,
113
+ phase: 'ENRICHMENT',
114
+ plugin: 'HTTPConnectionEnricher',
115
+ requestId: request.id,
116
+ },
117
+ 'Provide method as a string literal or resolvable const (e.g., method: \"POST\")'
118
+ ));
119
+ } else {
120
+ errors.push(new ValidationError(
121
+ message,
122
+ 'WARN_HTTP_METHOD_UNKNOWN',
123
+ {
124
+ filePath: request.file,
125
+ lineNumber: request.line as number | undefined,
126
+ phase: 'ENRICHMENT',
127
+ plugin: 'HTTPConnectionEnricher',
128
+ requestId: request.id,
129
+ },
130
+ 'Provide method as a string literal or resolvable const (e.g., method: \"POST\")',
131
+ 'warning'
132
+ ));
133
+ }
97
134
  continue;
98
135
  }
99
136
 
100
- const method = (request.method || 'GET').toUpperCase();
101
- const url = request.url;
137
+ // Пропускаем dynamic URLs
138
+ if (url === 'dynamic' || !url) {
139
+ continue;
140
+ }
102
141
 
103
142
  // Ищем matching route
104
143
  for (const route of uniqueRoutes) {
105
- const routeMethod = (route.method || 'GET').toUpperCase();
144
+ const routeMethod = route.method ? route.method.toUpperCase() : null;
106
145
  // Use fullPath (from MountPointResolver) if available, fallback to local path
107
146
  const routePath = route.fullPath || route.path;
108
147
 
109
- if (routePath && method === routeMethod && this.pathsMatch(url, routePath)) {
148
+ if (!routeMethod) continue;
149
+ if (methodSource === 'default' && routeMethod !== 'GET') continue;
150
+ if (methodSource === 'explicit' && (!method || method !== routeMethod)) continue;
151
+
152
+ if (routePath && this.pathsMatch(url, routePath)) {
110
153
  // 1. Create INTERACTS_WITH edge (existing)
111
154
  await graph.addEdge({
112
155
  type: 'INTERACTS_WITH',
@@ -137,8 +180,9 @@ export class HTTPConnectionEnricher extends Plugin {
137
180
  }
138
181
  }
139
182
 
183
+ const requestLabel = `${method ?? 'UNKNOWN'} ${url}`;
140
184
  connections.push({
141
- request: `${method} ${url}`,
185
+ request: requestLabel,
142
186
  route: `${routeMethod} ${routePath}`,
143
187
  requestFile: request.file,
144
188
  routeFile: route.file
@@ -163,7 +207,8 @@ export class HTTPConnectionEnricher extends Plugin {
163
207
  connections: connections.length,
164
208
  routesAnalyzed: uniqueRoutes.length,
165
209
  requestsAnalyzed: uniqueRequests.length
166
- }
210
+ },
211
+ errors
167
212
  );
168
213
 
169
214
  } catch (error) {
@@ -178,7 +223,7 @@ export class HTTPConnectionEnricher extends Plugin {
178
223
  */
179
224
  private normalizeUrl(url: string): string {
180
225
  return url
181
- .replace(/:[^/]+/g, '{param}') // :id -> {param}
226
+ .replace(/:[A-Za-z0-9_]+/g, '{param}') // :id -> {param}
182
227
  .replace(/\$\{[^}]*\}/g, '{param}'); // ${...} -> {param}, ${userId} -> {param}
183
228
  }
184
229
 
@@ -214,11 +259,17 @@ export class HTTPConnectionEnricher extends Plugin {
214
259
 
215
260
  // Handle case where request has concrete value (e.g., '/users/123')
216
261
  // and route has param (e.g., '/users/{param}')
217
- const routeRegex = normRoute
218
- .replace(/\{param\}/g, '[^/]+') // {param} -> [^/]+
219
- .replace(/\//g, '\\/'); // / -> \/
262
+ return this.buildParamRegex(normRoute).test(normRequest);
263
+ }
264
+
265
+ private escapeRegExp(value: string): string {
266
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
267
+ }
220
268
 
221
- return new RegExp(`^${routeRegex}$`).test(normRequest);
269
+ private buildParamRegex(normalizedRoute: string): RegExp {
270
+ const parts = normalizedRoute.split('{param}');
271
+ const pattern = parts.map(part => this.escapeRegExp(part)).join('[^/]+');
272
+ return new RegExp(`^${pattern}$`);
222
273
  }
223
274
 
224
275
  /**
@@ -39,7 +39,6 @@ export class ImportExportLinker extends Plugin {
39
39
  return {
40
40
  name: 'ImportExportLinker',
41
41
  phase: 'ENRICHMENT',
42
- priority: 90, // Run early in enrichment, after analysis
43
42
  creates: {
44
43
  nodes: [],
45
44
  edges: ['IMPORTS', 'IMPORTS_FROM']
@@ -48,11 +48,11 @@ export class InstanceOfResolver extends Plugin {
48
48
  return {
49
49
  name: 'InstanceOfResolver',
50
50
  phase: 'ENRICHMENT',
51
- priority: 100, // Высокий приоритет - должен выполняться перед другими enrichment плагинами
52
51
  creates: {
53
52
  nodes: [],
54
53
  edges: ['INSTANCE_OF'] // Пере-создаёт INSTANCE_OF edges
55
- }
54
+ },
55
+ dependencies: ['JSASTAnalyzer']
56
56
  };
57
57
  }
58
58