@grafema/core 0.1.0-alpha.5 → 0.2.0-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 (530) hide show
  1. package/README.md +0 -1
  2. package/dist/Orchestrator.d.ts +31 -2
  3. package/dist/Orchestrator.d.ts.map +1 -1
  4. package/dist/Orchestrator.js +222 -27
  5. package/dist/config/ConfigLoader.d.ts +90 -0
  6. package/dist/config/ConfigLoader.d.ts.map +1 -0
  7. package/dist/config/ConfigLoader.js +249 -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/FileExplainer.d.ts +101 -0
  18. package/dist/core/FileExplainer.d.ts.map +1 -0
  19. package/dist/core/FileExplainer.js +139 -0
  20. package/dist/core/FileNodeManager.d.ts +40 -0
  21. package/dist/core/FileNodeManager.d.ts.map +1 -0
  22. package/dist/core/FileNodeManager.js +84 -0
  23. package/dist/core/GraphFreshnessChecker.d.ts +33 -0
  24. package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
  25. package/dist/core/GraphFreshnessChecker.js +101 -0
  26. package/dist/core/HashUtils.d.ts +24 -0
  27. package/dist/core/HashUtils.d.ts.map +1 -0
  28. package/dist/core/HashUtils.js +45 -0
  29. package/dist/core/IncrementalReanalyzer.d.ts +36 -0
  30. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
  31. package/dist/core/IncrementalReanalyzer.js +132 -0
  32. package/dist/core/NodeFactory.d.ts +266 -19
  33. package/dist/core/NodeFactory.d.ts.map +1 -1
  34. package/dist/core/NodeFactory.js +256 -21
  35. package/dist/core/ScopeTracker.d.ts +84 -0
  36. package/dist/core/ScopeTracker.d.ts.map +1 -0
  37. package/dist/core/ScopeTracker.js +116 -0
  38. package/dist/core/SemanticId.d.ts +90 -0
  39. package/dist/core/SemanticId.d.ts.map +1 -0
  40. package/dist/core/SemanticId.js +115 -0
  41. package/dist/core/VersionManager.d.ts.map +1 -1
  42. package/dist/core/VersionManager.js +3 -2
  43. package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
  44. package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
  45. package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
  46. package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
  47. package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
  48. package/dist/core/nodes/ArrayLiteralNode.js +43 -0
  49. package/dist/core/nodes/BranchNode.d.ts +41 -0
  50. package/dist/core/nodes/BranchNode.d.ts.map +1 -0
  51. package/dist/core/nodes/BranchNode.js +82 -0
  52. package/dist/core/nodes/CallSiteNode.d.ts +30 -2
  53. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
  54. package/dist/core/nodes/CallSiteNode.js +54 -4
  55. package/dist/core/nodes/CaseNode.d.ts +43 -0
  56. package/dist/core/nodes/CaseNode.d.ts.map +1 -0
  57. package/dist/core/nodes/CaseNode.js +81 -0
  58. package/dist/core/nodes/ClassNode.d.ts +34 -2
  59. package/dist/core/nodes/ClassNode.d.ts.map +1 -1
  60. package/dist/core/nodes/ClassNode.js +52 -4
  61. package/dist/core/nodes/ConstantNode.d.ts +2 -2
  62. package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
  63. package/dist/core/nodes/ConstantNode.js +6 -4
  64. package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
  65. package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
  66. package/dist/core/nodes/ConstructorCallNode.js +171 -0
  67. package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
  68. package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
  69. package/dist/core/nodes/DatabaseQueryNode.js +5 -2
  70. package/dist/core/nodes/DecoratorNode.d.ts +42 -0
  71. package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
  72. package/dist/core/nodes/DecoratorNode.js +64 -0
  73. package/dist/core/nodes/EnumNode.d.ts +42 -0
  74. package/dist/core/nodes/EnumNode.d.ts.map +1 -0
  75. package/dist/core/nodes/EnumNode.js +56 -0
  76. package/dist/core/nodes/EventListenerNode.d.ts +4 -4
  77. package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
  78. package/dist/core/nodes/EventListenerNode.js +7 -4
  79. package/dist/core/nodes/ExportNode.d.ts +38 -2
  80. package/dist/core/nodes/ExportNode.d.ts.map +1 -1
  81. package/dist/core/nodes/ExportNode.js +54 -4
  82. package/dist/core/nodes/ExpressionNode.d.ts +97 -0
  83. package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
  84. package/dist/core/nodes/ExpressionNode.js +180 -0
  85. package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
  86. package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
  87. package/dist/core/nodes/ExternalModuleNode.js +49 -0
  88. package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
  89. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
  90. package/dist/core/nodes/ExternalStdioNode.js +15 -8
  91. package/dist/core/nodes/FunctionNode.d.ts +36 -0
  92. package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
  93. package/dist/core/nodes/FunctionNode.js +80 -1
  94. package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
  95. package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
  96. package/dist/core/nodes/HttpRequestNode.js +7 -4
  97. package/dist/core/nodes/ImportNode.d.ts +28 -6
  98. package/dist/core/nodes/ImportNode.d.ts.map +1 -1
  99. package/dist/core/nodes/ImportNode.js +43 -8
  100. package/dist/core/nodes/InterfaceNode.d.ts +46 -0
  101. package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
  102. package/dist/core/nodes/InterfaceNode.js +57 -0
  103. package/dist/core/nodes/IssueNode.d.ts +73 -0
  104. package/dist/core/nodes/IssueNode.d.ts.map +1 -0
  105. package/dist/core/nodes/IssueNode.js +129 -0
  106. package/dist/core/nodes/LiteralNode.d.ts +2 -2
  107. package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
  108. package/dist/core/nodes/LiteralNode.js +6 -4
  109. package/dist/core/nodes/MethodCallNode.d.ts +32 -2
  110. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
  111. package/dist/core/nodes/MethodCallNode.js +57 -4
  112. package/dist/core/nodes/MethodNode.d.ts +34 -2
  113. package/dist/core/nodes/MethodNode.d.ts.map +1 -1
  114. package/dist/core/nodes/MethodNode.js +55 -3
  115. package/dist/core/nodes/ModuleNode.d.ts +31 -0
  116. package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
  117. package/dist/core/nodes/ModuleNode.js +37 -0
  118. package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
  119. package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
  120. package/dist/core/nodes/NetworkRequestNode.js +65 -0
  121. package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
  122. package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
  123. package/dist/core/nodes/ObjectLiteralNode.js +43 -0
  124. package/dist/core/nodes/ParameterNode.d.ts +2 -2
  125. package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
  126. package/dist/core/nodes/ParameterNode.js +5 -3
  127. package/dist/core/nodes/ScopeNode.d.ts +31 -0
  128. package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
  129. package/dist/core/nodes/ScopeNode.js +49 -0
  130. package/dist/core/nodes/TypeNode.d.ts +36 -0
  131. package/dist/core/nodes/TypeNode.d.ts.map +1 -0
  132. package/dist/core/nodes/TypeNode.js +55 -0
  133. package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
  134. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
  135. package/dist/core/nodes/VariableDeclarationNode.js +48 -4
  136. package/dist/core/nodes/index.d.ts +15 -1
  137. package/dist/core/nodes/index.d.ts.map +1 -1
  138. package/dist/core/nodes/index.js +17 -0
  139. package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
  140. package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
  141. package/dist/data/builtins/BuiltinRegistry.js +110 -0
  142. package/dist/data/builtins/definitions.d.ts +28 -0
  143. package/dist/data/builtins/definitions.d.ts.map +1 -0
  144. package/dist/data/builtins/definitions.js +250 -0
  145. package/dist/data/builtins/index.d.ts +10 -0
  146. package/dist/data/builtins/index.d.ts.map +1 -0
  147. package/dist/data/builtins/index.js +8 -0
  148. package/dist/data/builtins/jsGlobals.d.ts +18 -0
  149. package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
  150. package/dist/data/builtins/jsGlobals.js +26 -0
  151. package/dist/data/builtins/types.d.ts +34 -0
  152. package/dist/data/builtins/types.d.ts.map +1 -0
  153. package/dist/data/builtins/types.js +7 -0
  154. package/dist/data/globals/definitions.d.ts +27 -0
  155. package/dist/data/globals/definitions.d.ts.map +1 -0
  156. package/dist/data/globals/definitions.js +117 -0
  157. package/dist/data/globals/index.d.ts +36 -0
  158. package/dist/data/globals/index.d.ts.map +1 -0
  159. package/dist/data/globals/index.js +52 -0
  160. package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
  161. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
  162. package/dist/diagnostics/DiagnosticCollector.js +129 -0
  163. package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
  164. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
  165. package/dist/diagnostics/DiagnosticReporter.js +247 -0
  166. package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
  167. package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
  168. package/dist/diagnostics/DiagnosticWriter.js +43 -0
  169. package/dist/diagnostics/index.d.ts +14 -0
  170. package/dist/diagnostics/index.d.ts.map +1 -0
  171. package/dist/diagnostics/index.js +11 -0
  172. package/dist/errors/GrafemaError.d.ts +161 -0
  173. package/dist/errors/GrafemaError.d.ts.map +1 -0
  174. package/dist/errors/GrafemaError.js +181 -0
  175. package/dist/index.d.ts +73 -1
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +70 -1
  178. package/dist/logging/Logger.d.ts +48 -0
  179. package/dist/logging/Logger.d.ts.map +1 -0
  180. package/dist/logging/Logger.js +134 -0
  181. package/dist/plugins/Plugin.d.ts +5 -1
  182. package/dist/plugins/Plugin.d.ts.map +1 -1
  183. package/dist/plugins/Plugin.js +33 -0
  184. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  185. package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
  186. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  187. package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
  188. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
  189. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
  190. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
  191. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  192. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
  193. package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
  194. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  195. package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
  196. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
  197. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  198. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
  199. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
  200. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  201. package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
  202. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  203. package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
  204. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  205. package/dist/plugins/analysis/RustAnalyzer.js +16 -11
  206. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  207. package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
  208. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  209. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
  210. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
  211. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  212. package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
  213. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  214. package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
  215. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
  216. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  217. package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
  218. package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
  219. package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
  220. package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
  221. package/dist/plugins/analysis/ast/types.d.ts +470 -5
  222. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  223. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
  224. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
  225. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
  226. package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
  227. package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
  228. package/dist/plugins/analysis/ast/utils/index.js +5 -0
  229. package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
  230. package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
  231. package/dist/plugins/analysis/ast/utils/location.js +78 -0
  232. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
  233. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  234. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
  235. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
  236. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  237. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
  238. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
  239. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  240. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
  241. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
  242. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  243. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
  244. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
  245. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  246. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
  247. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
  248. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  249. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
  250. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
  251. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  252. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
  253. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  254. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  255. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  256. package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
  257. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
  258. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
  259. package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
  260. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
  261. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
  262. package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
  263. package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
  264. package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
  265. package/dist/plugins/discovery/workspaces/detector.js +49 -0
  266. package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
  267. package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
  268. package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
  269. package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
  270. package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
  271. package/dist/plugins/discovery/workspaces/index.js +8 -0
  272. package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
  273. package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
  274. package/dist/plugins/discovery/workspaces/parsers.js +80 -0
  275. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
  276. package/dist/plugins/enrichment/AliasTracker.js +29 -8
  277. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
  278. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
  279. package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
  280. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
  281. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
  282. package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
  283. package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
  284. package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
  285. package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
  286. package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
  287. package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
  288. package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
  289. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
  290. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  291. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
  292. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  293. package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
  294. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  295. package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
  296. package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
  297. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  298. package/dist/plugins/enrichment/MountPointResolver.js +173 -147
  299. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
  300. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
  301. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
  302. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  303. package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
  304. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  305. package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
  306. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
  307. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  308. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
  309. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  310. package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
  311. package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
  312. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  313. package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
  314. package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
  315. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  316. package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
  317. package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
  318. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
  319. package/dist/plugins/indexing/ServiceDetector.js +28 -15
  320. package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
  321. package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
  322. package/dist/plugins/validation/BrokenImportValidator.js +249 -0
  323. package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
  324. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  325. package/dist/plugins/validation/CallResolverValidator.js +103 -77
  326. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
  327. package/dist/plugins/validation/DataFlowValidator.js +62 -49
  328. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
  329. package/dist/plugins/validation/EvalBanValidator.js +17 -16
  330. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  331. package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
  332. package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
  333. package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
  334. package/dist/plugins/validation/NodeCreationValidator.js +415 -0
  335. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  336. package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
  337. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
  338. package/dist/plugins/validation/ShadowingDetector.js +6 -5
  339. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  340. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
  341. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  342. package/dist/plugins/vcs/GitPlugin.js +10 -12
  343. package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
  344. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
  345. package/dist/plugins/vcs/VCSPlugin.js +5 -5
  346. package/dist/queries/findCallsInFunction.d.ts +52 -0
  347. package/dist/queries/findCallsInFunction.d.ts.map +1 -0
  348. package/dist/queries/findCallsInFunction.js +135 -0
  349. package/dist/queries/findContainingFunction.d.ts +45 -0
  350. package/dist/queries/findContainingFunction.d.ts.map +1 -0
  351. package/dist/queries/findContainingFunction.js +54 -0
  352. package/dist/queries/index.d.ts +14 -0
  353. package/dist/queries/index.d.ts.map +1 -0
  354. package/dist/queries/index.js +11 -0
  355. package/dist/queries/traceValues.d.ts +70 -0
  356. package/dist/queries/traceValues.d.ts.map +1 -0
  357. package/dist/queries/traceValues.js +299 -0
  358. package/dist/queries/types.d.ts +163 -0
  359. package/dist/queries/types.d.ts.map +1 -0
  360. package/dist/queries/types.js +9 -0
  361. package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
  362. package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
  363. package/dist/schema/GraphSchemaExtractor.js +124 -0
  364. package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
  365. package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
  366. package/dist/schema/InterfaceSchemaExtractor.js +112 -0
  367. package/dist/schema/index.d.ts +5 -0
  368. package/dist/schema/index.d.ts.map +1 -0
  369. package/dist/schema/index.js +2 -0
  370. package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
  371. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  372. package/dist/storage/backends/RFDBServerBackend.js +72 -62
  373. package/dist/storage/backends/typeValidation.d.ts.map +1 -1
  374. package/dist/storage/backends/typeValidation.js +1 -0
  375. package/dist/validation/PathValidator.d.ts +1 -2
  376. package/dist/validation/PathValidator.d.ts.map +1 -1
  377. package/package.json +3 -3
  378. package/src/Orchestrator.ts +272 -27
  379. package/src/config/ConfigLoader.ts +354 -0
  380. package/src/config/index.ts +5 -0
  381. package/src/core/ASTWorker.ts +143 -139
  382. package/src/core/CoverageAnalyzer.ts +243 -0
  383. package/src/core/FileExplainer.ts +179 -0
  384. package/src/core/FileNodeManager.ts +100 -0
  385. package/src/core/GraphFreshnessChecker.ts +143 -0
  386. package/src/core/HashUtils.ts +48 -0
  387. package/src/core/IncrementalReanalyzer.ts +192 -0
  388. package/src/core/NodeFactory.ts +470 -23
  389. package/src/core/ScopeTracker.ts +154 -0
  390. package/src/core/SemanticId.ts +192 -0
  391. package/src/core/VersionManager.ts +3 -2
  392. package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
  393. package/src/core/nodes/ArrayLiteralNode.ts +66 -0
  394. package/src/core/nodes/BranchNode.ts +113 -0
  395. package/src/core/nodes/CallSiteNode.ts +64 -4
  396. package/src/core/nodes/CaseNode.ts +123 -0
  397. package/src/core/nodes/ClassNode.ts +67 -4
  398. package/src/core/nodes/ConstantNode.ts +5 -4
  399. package/src/core/nodes/ConstructorCallNode.ts +217 -0
  400. package/src/core/nodes/DatabaseQueryNode.ts +5 -1
  401. package/src/core/nodes/DecoratorNode.ts +92 -0
  402. package/src/core/nodes/EnumNode.ts +87 -0
  403. package/src/core/nodes/EventListenerNode.ts +7 -4
  404. package/src/core/nodes/ExportNode.ts +74 -4
  405. package/src/core/nodes/ExpressionNode.ts +232 -0
  406. package/src/core/nodes/ExternalModuleNode.ts +65 -0
  407. package/src/core/nodes/ExternalStdioNode.ts +17 -9
  408. package/src/core/nodes/FunctionNode.ts +101 -1
  409. package/src/core/nodes/HttpRequestNode.ts +7 -4
  410. package/src/core/nodes/ImportNode.ts +62 -13
  411. package/src/core/nodes/InterfaceNode.ts +92 -0
  412. package/src/core/nodes/IssueNode.ts +177 -0
  413. package/src/core/nodes/LiteralNode.ts +5 -4
  414. package/src/core/nodes/MethodCallNode.ts +70 -4
  415. package/src/core/nodes/MethodNode.ts +68 -3
  416. package/src/core/nodes/ModuleNode.ts +50 -0
  417. package/src/core/nodes/NetworkRequestNode.ts +77 -0
  418. package/src/core/nodes/ObjectLiteralNode.ts +66 -0
  419. package/src/core/nodes/ParameterNode.ts +4 -3
  420. package/src/core/nodes/ScopeNode.ts +65 -0
  421. package/src/core/nodes/TypeNode.ts +79 -0
  422. package/src/core/nodes/VariableDeclarationNode.ts +58 -4
  423. package/src/core/nodes/index.ts +21 -1
  424. package/src/data/builtins/BuiltinRegistry.ts +124 -0
  425. package/src/data/builtins/definitions.ts +267 -0
  426. package/src/data/builtins/index.ts +10 -0
  427. package/src/data/builtins/jsGlobals.ts +28 -0
  428. package/src/data/builtins/types.ts +36 -0
  429. package/src/data/globals/definitions.ts +156 -0
  430. package/src/data/globals/index.ts +66 -0
  431. package/src/diagnostics/DiagnosticCollector.ts +163 -0
  432. package/src/diagnostics/DiagnosticReporter.ts +324 -0
  433. package/src/diagnostics/DiagnosticWriter.ts +50 -0
  434. package/src/diagnostics/index.ts +16 -0
  435. package/src/errors/GrafemaError.ts +239 -0
  436. package/src/index.ts +193 -1
  437. package/src/logging/Logger.ts +152 -0
  438. package/src/plugins/Plugin.ts +42 -0
  439. package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
  440. package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
  441. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
  442. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
  443. package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
  444. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
  445. package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
  446. package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
  447. package/src/plugins/analysis/RustAnalyzer.ts +16 -11
  448. package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
  449. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
  450. package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
  451. package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
  452. package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
  453. package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
  454. package/src/plugins/analysis/ast/types.ts +596 -6
  455. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
  456. package/src/plugins/analysis/ast/utils/index.ts +12 -0
  457. package/src/plugins/analysis/ast/utils/location.ts +103 -0
  458. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
  459. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
  460. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
  461. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
  462. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
  463. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
  464. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
  465. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
  466. package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
  467. package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
  468. package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
  469. package/src/plugins/discovery/workspaces/detector.ts +63 -0
  470. package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
  471. package/src/plugins/discovery/workspaces/index.ts +23 -0
  472. package/src/plugins/discovery/workspaces/parsers.ts +99 -0
  473. package/src/plugins/enrichment/AliasTracker.ts +35 -8
  474. package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
  475. package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
  476. package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
  477. package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
  478. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
  479. package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
  480. package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
  481. package/src/plugins/enrichment/MountPointResolver.ts +208 -195
  482. package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
  483. package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
  484. package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
  485. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
  486. package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
  487. package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
  488. package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
  489. package/src/plugins/validation/BrokenImportValidator.ts +325 -0
  490. package/src/plugins/validation/CallResolverValidator.ts +131 -110
  491. package/src/plugins/validation/DataFlowValidator.ts +88 -67
  492. package/src/plugins/validation/EvalBanValidator.ts +17 -16
  493. package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
  494. package/src/plugins/validation/NodeCreationValidator.ts +554 -0
  495. package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
  496. package/src/plugins/validation/ShadowingDetector.ts +6 -5
  497. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
  498. package/src/plugins/vcs/GitPlugin.ts +40 -12
  499. package/src/plugins/vcs/VCSPlugin.ts +7 -5
  500. package/src/queries/README.md +46 -0
  501. package/src/queries/findCallsInFunction.ts +206 -0
  502. package/src/queries/findContainingFunction.ts +83 -0
  503. package/src/queries/index.ts +23 -0
  504. package/src/queries/traceValues.ts +398 -0
  505. package/src/queries/types.ts +187 -0
  506. package/src/schema/GraphSchemaExtractor.ts +177 -0
  507. package/src/schema/InterfaceSchemaExtractor.ts +173 -0
  508. package/src/schema/index.ts +5 -0
  509. package/src/storage/backends/RFDBServerBackend.ts +100 -98
  510. package/src/storage/backends/typeValidation.ts +1 -0
  511. package/src/validation/PathValidator.ts +1 -1
  512. package/dist/core/AnalysisWorker.d.ts +0 -14
  513. package/dist/core/AnalysisWorker.d.ts.map +0 -1
  514. package/dist/core/AnalysisWorker.js +0 -307
  515. package/dist/core/ParallelAnalyzer.d.ts +0 -120
  516. package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
  517. package/dist/core/ParallelAnalyzer.js +0 -331
  518. package/dist/core/QueueWorker.d.ts +0 -12
  519. package/dist/core/QueueWorker.d.ts.map +0 -1
  520. package/dist/core/QueueWorker.js +0 -567
  521. package/dist/core/RFDBClient.d.ts +0 -179
  522. package/dist/core/RFDBClient.d.ts.map +0 -1
  523. package/dist/core/RFDBClient.js +0 -429
  524. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
  525. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
  526. package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
  527. package/src/core/AnalysisWorker.ts +0 -410
  528. package/src/core/ParallelAnalyzer.ts +0 -476
  529. package/src/core/QueueWorker.ts +0 -780
  530. package/src/plugins/indexing/ServiceDetector.ts +0 -230
@@ -1,38 +1,49 @@
1
1
  /**
2
2
  * MountPointResolver - ENRICHMENT plugin for resolving mount points
3
3
  *
4
- * Updates ENDPOINT nodes by adding fullPath based on MOUNT_POINT prefixes.
4
+ * REG-248 Fix: Now works with ExpressRouteAnalyzer's node types:
5
+ * - express:middleware (with mountPath) instead of MOUNT_POINT
6
+ * - http:route instead of ENDPOINT
5
7
  *
6
- * Graph traversal:
7
- * MOUNT_POINT --MOUNTS--> MODULE --EXPOSES--> ENDPOINT
8
+ * REG-318 Fix: Uses IMPORT nodes to determine which file a router variable
9
+ * comes from, then applies mount prefix ONLY to routes in that specific file.
8
10
  *
9
- * Updates:
10
- * endpoint.fullPath = mountPoint.prefix + endpoint.localPath
11
+ * Algorithm:
12
+ * 1. Find express:middleware nodes with mountPath
13
+ * 2. Build import map: for each mount file, map local variable names to resolved file paths
14
+ * 3. For each mount, find the specific imported file matching mount.name
15
+ * 4. Apply mount prefix only to routes in that specific file
11
16
  */
12
17
 
13
18
  import { Plugin } from '../Plugin.js';
14
19
  import { createSuccessResult, createErrorResult } from '@grafema/types';
15
- import type { PluginMetadata, PluginContext, PluginResult, GraphBackend } from '@grafema/types';
20
+ import type { PluginMetadata, PluginContext, PluginResult } from '@grafema/types';
16
21
  import type { BaseNodeRecord } from '@grafema/types';
17
- import type { EdgeRecord } from '@grafema/types';
18
-
19
- interface EdgeCriteria {
20
- type?: string;
21
- src?: string;
22
- dst?: string;
23
- }
24
-
25
- interface MountPointNode extends BaseNodeRecord {
26
- prefix: string;
22
+ import { dirname, resolve, join } from 'path';
23
+ import { existsSync } from 'fs';
24
+
25
+ interface MountNode {
26
+ id: string;
27
+ type: string;
28
+ mountPath?: string;
29
+ prefix?: string; // Alternative field used by express:mount
30
+ name?: string; // The imported router variable name
31
+ file?: string;
32
+ [key: string]: unknown;
27
33
  }
28
34
 
29
- interface EndpointNode extends BaseNodeRecord {
30
- localPath?: string;
35
+ interface RouteNode {
36
+ id: string;
37
+ type: string;
31
38
  path?: string;
39
+ fullPath?: string;
40
+ localPath?: string;
41
+ mountPrefix?: string;
32
42
  mountPrefixes?: string[];
33
43
  fullPaths?: string[];
34
- mountPrefix?: string;
35
- fullPath?: string;
44
+ file?: string;
45
+ routerName?: string;
46
+ [key: string]: unknown;
36
47
  }
37
48
 
38
49
  export class MountPointResolver extends Plugin {
@@ -42,223 +53,225 @@ export class MountPointResolver extends Plugin {
42
53
  phase: 'ENRICHMENT',
43
54
  priority: 90, // High priority - one of first enrichment plugins
44
55
  creates: {
45
- nodes: [], // Doesn't create new nodes
46
- edges: [] // Doesn't create new edges
56
+ nodes: [], // Updates existing nodes
57
+ edges: [] // Doesn't create edges
47
58
  },
48
- dependencies: ['JSModuleIndexer', 'JSASTAnalyzer']
59
+ dependencies: ['JSModuleIndexer', 'JSASTAnalyzer', 'ExpressRouteAnalyzer']
49
60
  };
50
61
  }
51
62
 
63
+ /**
64
+ * Resolve relative import source to absolute file path.
65
+ * Replicates JSModuleIndexer.resolveModulePath() logic.
66
+ */
67
+ private resolveImportSource(importSource: string, containingFile: string): string | null {
68
+ // Only handle relative imports
69
+ if (!importSource.startsWith('./') && !importSource.startsWith('../')) {
70
+ return null; // External package
71
+ }
72
+
73
+ const dir = dirname(containingFile);
74
+ const basePath = resolve(dir, importSource);
75
+
76
+ // Try direct path
77
+ if (existsSync(basePath)) return basePath;
78
+
79
+ // Try extensions
80
+ for (const ext of ['.js', '.mjs', '.jsx', '.ts', '.tsx']) {
81
+ if (existsSync(basePath + ext)) return basePath + ext;
82
+ }
83
+
84
+ // Try index files
85
+ for (const indexFile of ['index.js', 'index.ts', 'index.mjs', 'index.tsx']) {
86
+ const indexPath = join(basePath, indexFile);
87
+ if (existsSync(indexPath)) return indexPath;
88
+ }
89
+
90
+ return null;
91
+ }
92
+
52
93
  async execute(context: PluginContext): Promise<PluginResult> {
53
94
  try {
54
95
  const { graph } = context;
96
+ const logger = this.log(context);
55
97
 
56
- let endpointsUpdated = 0;
98
+ let routesUpdated = 0;
57
99
  let mountPointsProcessed = 0;
58
100
 
59
- // Find all MOUNT_POINT nodes
60
- const allNodes = await graph.getAllNodes();
61
- const mountPoints = allNodes.filter(node => node.type === 'MOUNT_POINT') as MountPointNode[];
62
-
63
- console.log(`[MountPointResolver] Found ${mountPoints.length} mount points`);
64
-
65
- // For each top-level mount point (from app.use in index.js)
66
- // apply recursive resolver
67
- const processedMountPoints = new Set<string>();
101
+ // Step 1: Find all mount points (express:middleware with mountPath)
102
+ const mountNodes: MountNode[] = [];
103
+ for await (const node of graph.queryNodes({ type: 'express:middleware' })) {
104
+ const mount = node as MountNode;
105
+ // Only include mounts with a meaningful path (not global middleware)
106
+ if (mount.mountPath && mount.mountPath !== '/' && mount.name) {
107
+ mountNodes.push(mount);
108
+ }
109
+ }
68
110
 
69
- for (const mountPoint of mountPoints) {
70
- if (!processedMountPoints.has(mountPoint.id)) {
71
- const updated = await this.resolveMountPoint(graph, mountPoint, '', processedMountPoints);
72
- endpointsUpdated += updated;
73
- mountPointsProcessed++;
111
+ // Also check for express:mount (from ExpressAnalyzer, if enabled)
112
+ for await (const node of graph.queryNodes({ type: 'express:mount' })) {
113
+ const mount = node as MountNode;
114
+ if (mount.mountPath || (mount as { prefix?: string }).prefix) {
115
+ // express:mount uses 'prefix' field
116
+ const prefix = mount.mountPath || (mount as { prefix?: string }).prefix;
117
+ if (prefix && prefix !== '/') {
118
+ mountNodes.push({
119
+ ...mount,
120
+ mountPath: prefix
121
+ });
122
+ }
74
123
  }
75
124
  }
76
125
 
77
- // Fallback: process mount points without recursion (old logic for compatibility)
78
- for (const mountPoint of mountPoints) {
79
- if (processedMountPoints.has(mountPoint.id)) continue;
80
- // Find MOUNT_POINT --MOUNTS--> MODULE edge
81
- const mountsEdges = await this.findEdges(graph, {
82
- type: 'MOUNTS',
83
- src: mountPoint.id
84
- });
126
+ logger.info('Found mount points', { count: mountNodes.length });
85
127
 
86
- for (const mountsEdge of mountsEdges) {
87
- const targetModuleId = mountsEdge.dst;
128
+ // Debug: log mount point details
129
+ for (const mount of mountNodes) {
130
+ logger.debug('Mount point details', {
131
+ id: mount.id,
132
+ mountPath: mount.mountPath,
133
+ name: mount.name,
134
+ file: mount.file
135
+ });
136
+ }
88
137
 
89
- // Find MODULE --EXPOSES--> ENDPOINT edges
90
- const exposesEdges = await this.findEdges(graph, {
91
- type: 'EXPOSES',
92
- src: targetModuleId
93
- });
138
+ if (mountNodes.length === 0) {
139
+ return createSuccessResult(
140
+ { nodes: 0, edges: 0 },
141
+ { routesUpdated: 0, mountPointsProcessed: 0 }
142
+ );
143
+ }
94
144
 
95
- for (const exposesEdge of exposesEdges) {
96
- const endpointId = exposesEdge.dst;
97
- const endpoint = await graph.getNode(endpointId) as EndpointNode | null;
98
-
99
- if (endpoint && endpoint.type === 'ENDPOINT') {
100
- // Support multiple mount points for one endpoint
101
- // Store all prefixes and fullPaths in arrays
102
- const mountPrefixes = endpoint.mountPrefixes || [];
103
- const fullPaths = endpoint.fullPaths || [];
104
-
105
- const prefix = mountPoint.prefix;
106
- const fullPath = prefix + (endpoint.localPath || endpoint.path || '');
107
-
108
- // Only add if not already added (avoid duplicates)
109
- if (!mountPrefixes.includes(prefix)) {
110
- mountPrefixes.push(prefix);
111
- fullPaths.push(fullPath);
112
- }
113
-
114
- // Update endpoint node
115
- const updatedEndpoint: EndpointNode = {
116
- ...endpoint,
117
- mountPrefixes,
118
- fullPaths,
119
- mountPrefix: endpoint.mountPrefix || prefix,
120
- fullPath: endpoint.fullPath || fullPath
121
- };
122
-
123
- await graph.addNode(updatedEndpoint);
124
- endpointsUpdated++;
125
- }
145
+ // Step 2: Build import map for files that contain mount points
146
+ // Map<file, Map<localName, resolvedFile>>
147
+ const importMaps = new Map<string, Map<string, string>>();
148
+ const mountFiles = new Set(mountNodes.map(m => m.file).filter((f): f is string => Boolean(f)));
149
+
150
+ for (const mountFile of mountFiles) {
151
+ const importMap = new Map<string, string>();
152
+
153
+ // Query IMPORT nodes in this file
154
+ for await (const node of graph.queryNodes({ type: 'IMPORT' })) {
155
+ const importNode = node as { file?: string; local?: string; source?: string };
156
+
157
+ if (importNode.file !== mountFile) continue;
158
+ if (!importNode.local || !importNode.source) continue;
159
+
160
+ // Resolve source to absolute path
161
+ const resolvedPath = this.resolveImportSource(importNode.source, mountFile);
162
+ if (resolvedPath) {
163
+ importMap.set(importNode.local, resolvedPath);
164
+ logger.debug('Import mapped', {
165
+ local: importNode.local,
166
+ source: importNode.source,
167
+ resolved: resolvedPath
168
+ });
126
169
  }
127
170
  }
128
171
 
129
- mountPointsProcessed++;
172
+ importMaps.set(mountFile, importMap);
130
173
  }
131
174
 
132
- console.log(`[MountPointResolver] Updated ${endpointsUpdated} endpoints from ${mountPointsProcessed} mount points`);
175
+ logger.debug('Import maps built', {
176
+ files: importMaps.size,
177
+ totalMappings: [...importMaps.values()].reduce((sum, m) => sum + m.size, 0)
178
+ });
133
179
 
134
- return createSuccessResult(
135
- { nodes: 0, edges: 0 },
136
- { endpointsUpdated, mountPointsProcessed }
137
- );
180
+ // Step 3: Collect all routes by file
181
+ const routesByFile = new Map<string, RouteNode[]>();
182
+ for await (const node of graph.queryNodes({ type: 'http:route' })) {
183
+ const route = node as RouteNode;
184
+ if (route.file) {
185
+ if (!routesByFile.has(route.file)) {
186
+ routesByFile.set(route.file, []);
187
+ }
188
+ routesByFile.get(route.file)!.push(route);
189
+ }
190
+ }
138
191
 
139
- } catch (error) {
140
- console.error(`[MountPointResolver] Error:`, error);
141
- return createErrorResult(error as Error);
142
- }
143
- }
192
+ // Step 4: For each mount point, find and update routes
193
+ for (const mount of mountNodes) {
194
+ if (!mount.file || !mount.mountPath || !mount.name) continue;
144
195
 
145
- /**
146
- * Recursively resolve mount point and all nested mount points
147
- */
148
- private async resolveMountPoint(
149
- graph: GraphBackend,
150
- mountPoint: MountPointNode,
151
- parentPrefix: string,
152
- processedMountPoints: Set<string>
153
- ): Promise<number> {
154
- let endpointsUpdated = 0;
155
-
156
- // Mark as processed
157
- processedMountPoints.add(mountPoint.id);
158
-
159
- // Calculate full prefix (parent + current)
160
- const fullPrefix = parentPrefix + mountPoint.prefix;
161
-
162
- // Find MOUNT_POINT --MOUNTS--> MODULE edge
163
- const mountsEdges = await this.findEdges(graph, {
164
- type: 'MOUNTS',
165
- src: mountPoint.id
166
- });
167
-
168
- for (const mountsEdge of mountsEdges) {
169
- const targetModuleId = mountsEdge.dst;
170
-
171
- // 1. Process ENDPOINT in this module
172
- const exposesEdges = await this.findEdges(graph, {
173
- type: 'EXPOSES',
174
- src: targetModuleId
175
- });
196
+ // Get import map for this file
197
+ const importMap = importMaps.get(mount.file);
198
+ if (!importMap) {
199
+ logger.debug('No import map for mount file', { file: mount.file });
200
+ continue;
201
+ }
176
202
 
177
- for (const exposesEdge of exposesEdges) {
178
- const endpointId = exposesEdge.dst;
179
- const endpoint = await graph.getNode(endpointId) as EndpointNode | null;
203
+ // Find the specific imported file for this mount variable
204
+ const importedFile = importMap.get(mount.name);
205
+ if (!importedFile) {
206
+ logger.debug('No import found for mount name', {
207
+ file: mount.file,
208
+ mountName: mount.name,
209
+ availableImports: [...importMap.keys()]
210
+ });
211
+ continue;
212
+ }
180
213
 
181
- if (endpoint && endpoint.type === 'ENDPOINT') {
182
- // Support multiple mount points
183
- const mountPrefixes = endpoint.mountPrefixes || [];
184
- const fullPaths = endpoint.fullPaths || [];
214
+ // Get routes in that specific file
215
+ const routes = routesByFile.get(importedFile);
216
+ if (!routes || routes.length === 0) {
217
+ logger.debug('No routes in imported file', {
218
+ importedFile,
219
+ mountName: mount.name
220
+ });
221
+ continue;
222
+ }
223
+
224
+ logger.debug('Applying mount prefix', {
225
+ mountPath: mount.mountPath,
226
+ mountName: mount.name,
227
+ importedFile,
228
+ routeCount: routes.length
229
+ });
230
+
231
+ // Update routes with fullPath
232
+ for (const route of routes) {
233
+ const localPath = route.localPath || route.path || '';
234
+ const fullPath = mount.mountPath + localPath;
185
235
 
186
- const fullPath = fullPrefix + (endpoint.localPath || endpoint.path || '');
236
+ // Support multiple mount points
237
+ const mountPrefixes = route.mountPrefixes || [];
238
+ const fullPaths = route.fullPaths || [];
187
239
 
188
- // Only add if not already added
189
- if (!mountPrefixes.includes(fullPrefix)) {
190
- mountPrefixes.push(fullPrefix);
240
+ if (!mountPrefixes.includes(mount.mountPath)) {
241
+ mountPrefixes.push(mount.mountPath);
191
242
  fullPaths.push(fullPath);
192
243
  }
193
244
 
194
- // Update endpoint node with new data
195
- const updatedEndpoint: EndpointNode = {
196
- ...endpoint,
245
+ // Update route node
246
+ const updatedRoute: RouteNode = {
247
+ ...route,
197
248
  mountPrefixes,
198
249
  fullPaths,
199
- mountPrefix: endpoint.mountPrefix || fullPrefix,
200
- fullPath: endpoint.fullPath || fullPath
250
+ mountPrefix: route.mountPrefix || mount.mountPath,
251
+ fullPath: route.fullPath || fullPath
201
252
  };
202
253
 
203
- await graph.addNode(updatedEndpoint);
204
- endpointsUpdated++;
254
+ await graph.addNode(updatedRoute as BaseNodeRecord);
255
+ routesUpdated++;
205
256
  }
206
- }
207
257
 
208
- // 2. Recursively process nested MOUNT_POINT in this module
209
- const definesEdges = await this.findEdges(graph, {
210
- type: 'DEFINES',
211
- src: targetModuleId
212
- });
213
-
214
- for (const definesEdge of definesEdges) {
215
- const nestedMountPointId = definesEdge.dst;
216
- const nestedMountPoint = await graph.getNode(nestedMountPointId) as MountPointNode | null;
217
-
218
- if (nestedMountPoint && nestedMountPoint.type === 'MOUNT_POINT' &&
219
- !processedMountPoints.has(nestedMountPointId)) {
220
- // Recursively process nested mount point
221
- endpointsUpdated += await this.resolveMountPoint(
222
- graph,
223
- nestedMountPoint,
224
- fullPrefix, // Pass accumulated prefix
225
- processedMountPoints
226
- );
227
- }
258
+ mountPointsProcessed++;
228
259
  }
229
- }
230
-
231
- return endpointsUpdated;
232
- }
233
-
234
- /**
235
- * Helper method for finding edges by criteria
236
- */
237
- private async findEdges(graph: GraphBackend, criteria: EdgeCriteria): Promise<EdgeRecord[]> {
238
- const result: EdgeRecord[] = [];
239
260
 
240
- // Get all edges using RFDBServerBackend API
241
- if (!graph.getAllEdges) {
242
- return result;
243
- }
244
- const allEdges = await graph.getAllEdges();
245
-
246
- for (const edge of allEdges) {
247
- let matches = true;
261
+ logger.info('Updated routes with mount prefixes', {
262
+ routes: routesUpdated,
263
+ mountPoints: mountPointsProcessed
264
+ });
248
265
 
249
- for (const [key, value] of Object.entries(criteria)) {
250
- const edgeRecord = edge as unknown as Record<string, unknown>;
251
- if (edgeRecord[key] !== value) {
252
- matches = false;
253
- break;
254
- }
255
- }
266
+ return createSuccessResult(
267
+ { nodes: 0, edges: 0 },
268
+ { routesUpdated, mountPointsProcessed }
269
+ );
256
270
 
257
- if (matches) {
258
- result.push(edge);
259
- }
271
+ } catch (error) {
272
+ const logger = this.log(context);
273
+ logger.error('Error in MountPointResolver', { error });
274
+ return createErrorResult(error as Error);
260
275
  }
261
-
262
- return result;
263
276
  }
264
277
  }