@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
@@ -3,12 +3,13 @@
3
3
  * Строит дерево зависимостей от entrypoint через DFS (как в file2host.js)
4
4
  */
5
5
  import { readFileSync, existsSync } from 'fs';
6
- import { join, resolve, dirname } from 'path';
6
+ import { join, resolve, dirname, relative, basename } from 'path';
7
7
  import { createHash } from 'crypto';
8
- import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
8
+ import { minimatch } from 'minimatch';
9
+ import { Plugin, createErrorResult } from '../Plugin.js';
9
10
  // @ts-expect-error - no type declarations for node-source-walk
10
11
  import Walker from 'node-source-walk';
11
- import { NodeFactory } from '../../core/NodeFactory.js';
12
+ import { LanguageError } from '../../errors/GrafemaError.js';
12
13
  // Test file patterns (can be overridden in config)
13
14
  const DEFAULT_TEST_PATTERNS = [
14
15
  /[/\\]test[/\\]/, // /test/
@@ -25,9 +26,15 @@ export class JSModuleIndexer extends Plugin {
25
26
  cache;
26
27
  testPatterns;
27
28
  markTestFiles;
29
+ // Include/exclude pattern filtering (REG-185)
30
+ includePatterns;
31
+ excludePatterns;
32
+ projectPath = '';
28
33
  constructor() {
29
34
  super();
30
- this.walker = new Walker();
35
+ this.walker = new Walker({
36
+ plugins: ['jsx', 'typescript']
37
+ });
31
38
  this.cache = new Map(); // Кеш зависимостей файла
32
39
  this.testPatterns = DEFAULT_TEST_PATTERNS;
33
40
  this.markTestFiles = true; // Default: enabled
@@ -40,6 +47,39 @@ export class JSModuleIndexer extends Plugin {
40
47
  return false;
41
48
  return this.testPatterns.some(pattern => pattern.test(filePath));
42
49
  }
50
+ /**
51
+ * Check if a file should be skipped based on include/exclude patterns.
52
+ *
53
+ * Logic:
54
+ * 1. If file matches any exclude pattern -> SKIP
55
+ * 2. If include patterns specified AND file doesn't match any -> SKIP
56
+ * 3. Otherwise -> PROCESS
57
+ *
58
+ * @param absolutePath - Absolute path to the file
59
+ * @returns true if file should be skipped, false if it should be processed
60
+ */
61
+ shouldSkipFile(absolutePath) {
62
+ // Normalize to relative path for pattern matching
63
+ const relativePath = relative(this.projectPath, absolutePath).replace(/\\/g, '/');
64
+ // Check exclude patterns first (if any match, skip)
65
+ if (this.excludePatterns && this.excludePatterns.length > 0) {
66
+ for (const pattern of this.excludePatterns) {
67
+ if (minimatch(relativePath, pattern, { dot: true })) {
68
+ return true; // Excluded
69
+ }
70
+ }
71
+ }
72
+ // Check include patterns (if specified, file must match at least one)
73
+ if (this.includePatterns && this.includePatterns.length > 0) {
74
+ for (const pattern of this.includePatterns) {
75
+ if (minimatch(relativePath, pattern, { dot: true })) {
76
+ return false; // Included
77
+ }
78
+ }
79
+ return true; // Include specified but file didn't match any
80
+ }
81
+ return false; // No filtering, process file
82
+ }
43
83
  get metadata() {
44
84
  return {
45
85
  name: 'JSModuleIndexer',
@@ -161,22 +201,38 @@ export class JSModuleIndexer extends Plugin {
161
201
  return path;
162
202
  }
163
203
  async execute(context) {
204
+ const logger = this.log(context);
164
205
  try {
165
206
  const { graph, onProgress, config } = context;
166
207
  const manifest = context.manifest;
167
208
  const projectPath = manifest?.projectPath ?? '';
168
209
  const service = manifest?.service ?? { id: '', name: '', path: '' };
210
+ // Collect parse errors to report (REG-147)
211
+ const parseErrors = [];
212
+ // Store projectPath for shouldSkipFile()
213
+ this.projectPath = projectPath;
214
+ // Read include/exclude patterns from config (REG-185)
215
+ const orchConfig = config;
216
+ this.includePatterns = orchConfig?.include;
217
+ this.excludePatterns = orchConfig?.exclude;
218
+ // Log if patterns are configured
219
+ if (this.includePatterns || this.excludePatterns) {
220
+ logger.info('File filtering enabled', {
221
+ include: this.includePatterns?.length ?? 0,
222
+ exclude: this.excludePatterns?.length ?? 0,
223
+ });
224
+ }
169
225
  // Check config for test file marking
170
226
  if (config?.analysis?.tests?.markTestFiles === false) {
171
227
  this.markTestFiles = false;
172
228
  }
173
- const entrypoint = service.path;
174
- // const pkgPath = join(projectPath, 'pkg');
229
+ // Use metadata.entrypoint if available (from config services), otherwise fall back to path
230
+ const entrypoint = service.metadata?.entrypoint || service.path;
175
231
  // Резолвим entrypoint относительно projectPath
176
232
  const absoluteEntrypoint = entrypoint.startsWith('/')
177
233
  ? entrypoint
178
234
  : join(projectPath, entrypoint);
179
- console.log(`[JSModuleIndexer] Building dependency tree from ${service.name}`);
235
+ logger.info('Building dependency tree', { service: service.name });
180
236
  // DFS через стек (как в file2host.js)
181
237
  const visited = new Set();
182
238
  const stack = [{ file: absoluteEntrypoint, depth: 0 }];
@@ -192,6 +248,13 @@ export class JSModuleIndexer extends Plugin {
192
248
  const PROGRESS_INTERVAL = 10; // Report every N files
193
249
  while (stack.length > 0 && visited.size < MAX_MODULES) {
194
250
  const { file: currentFile, depth } = stack.pop();
251
+ // Check if file should be skipped based on include/exclude patterns (REG-185)
252
+ if (this.shouldSkipFile(currentFile)) {
253
+ logger.debug('Skipping file (filtered by patterns)', {
254
+ file: currentFile.replace(projectPath, '')
255
+ });
256
+ continue; // Don't process, don't follow imports
257
+ }
195
258
  // Report progress every PROGRESS_INTERVAL files
196
259
  if (onProgress && visited.size - lastProgressReport >= PROGRESS_INTERVAL) {
197
260
  onProgress({
@@ -203,31 +266,44 @@ export class JSModuleIndexer extends Plugin {
203
266
  });
204
267
  lastProgressReport = visited.size;
205
268
  }
206
- console.log(`[JSModuleIndexer] Processing: ${currentFile.replace(projectPath, '')} (depth ${depth})`);
269
+ logger.debug('Processing file', { file: currentFile.replace(projectPath, ''), depth });
207
270
  if (depth > MAX_DEPTH) {
208
- console.log(`[JSModuleIndexer] Max depth ${MAX_DEPTH} reached at ${currentFile}`);
271
+ logger.warn('Max depth reached', { maxDepth: MAX_DEPTH, file: currentFile });
209
272
  continue;
210
273
  }
211
274
  // Парсим зависимости
212
275
  const deps = this.processFile(currentFile, projectPath);
213
- console.log(`[JSModuleIndexer] Found ${deps instanceof Error ? 0 : deps.length} dependencies in ${currentFile.replace(projectPath, '')}`);
276
+ logger.debug('Found dependencies', { file: currentFile.replace(projectPath, ''), count: deps instanceof Error ? 0 : deps.length });
214
277
  if (deps instanceof Error) {
215
278
  if (!deps.message.includes('ENOENT')) {
216
- console.log(`[JSModuleIndexer] Error parsing ${currentFile}: ${deps.message}`);
279
+ const relativePath = relative(projectPath, currentFile) || basename(currentFile);
280
+ const error = new LanguageError(`Failed to parse ${relativePath}: ${deps.message}`, 'ERR_PARSE_FAILURE', {
281
+ filePath: currentFile,
282
+ phase: 'INDEXING',
283
+ plugin: 'JSModuleIndexer',
284
+ }, 'Check file syntax or ensure the file is a supported JavaScript/TypeScript file');
285
+ parseErrors.push(error);
286
+ logger.debug('Parse error', { file: currentFile, error: deps.message });
217
287
  }
218
288
  continue;
219
289
  }
220
- // Создаём MODULE ноду для текущего файла
290
+ // Создаём MODULE ноду для текущего файла с semantic ID
221
291
  const fileHash = this.calculateFileHash(currentFile);
222
- const moduleId = `MODULE:${fileHash}`; // StableID-based for deduplication
223
- // Используем NodeFactory для создания MODULE ноды
224
- // ВСЕГДА создаём ноду в графе (граф может быть пустой после force)
292
+ const relativePath = relative(projectPath, currentFile) || basename(currentFile);
293
+ const semanticId = `${relativePath}->global->MODULE->module`;
294
+ // Construct MODULE node manually to preserve absolute file path for analyzers
225
295
  const isTest = this.isTestFile(currentFile);
226
- const moduleNode = NodeFactory.createModule(currentFile, projectPath, {
227
- contentHash: fileHash ?? undefined,
296
+ const moduleNode = {
297
+ id: semanticId,
298
+ type: 'MODULE',
299
+ name: relativePath,
300
+ file: currentFile, // Keep absolute path for file reading in analyzers
301
+ line: 0,
302
+ contentHash: fileHash || '',
228
303
  isTest
229
- });
230
- console.log(`[JSModuleIndexer] Creating MODULE node: ${moduleNode.id}`);
304
+ };
305
+ const moduleId = moduleNode.id;
306
+ logger.debug('Creating MODULE node', { moduleId: moduleNode.id });
231
307
  await graph.addNode(moduleNode);
232
308
  nodesCreated++;
233
309
  // Always create SERVICE -> CONTAINS -> MODULE edge (even if module exists)
@@ -241,23 +317,24 @@ export class JSModuleIndexer extends Plugin {
241
317
  for (const dep of deps) {
242
318
  if (dep.startsWith('package::')) {
243
319
  // npm пакет - игнорируем пока
244
- console.log(`[JSModuleIndexer] Skipping npm package: ${dep}`);
320
+ logger.debug('Skipping npm package', { package: dep });
245
321
  continue;
246
322
  }
247
323
  const resolvedDep = this.resolveModulePath(dep);
248
- console.log(`[JSModuleIndexer] Resolved: ${dep} -> ${resolvedDep.replace(projectPath, '')}`);
324
+ logger.debug('Resolved dependency', { from: dep, to: resolvedDep.replace(projectPath, '') });
249
325
  // Добавляем в стек если ещё не посещали
250
326
  if (!visited.has(resolvedDep)) {
251
327
  visited.add(resolvedDep);
252
328
  stack.push({ file: resolvedDep, depth: depth + 1 });
253
- console.log(`[JSModuleIndexer] Added to stack (depth ${depth + 1})`);
329
+ logger.debug('Added to stack', { depth: depth + 1 });
254
330
  }
255
331
  else {
256
- console.log(`[JSModuleIndexer] Already visited, skipping`);
332
+ logger.debug('Already visited, skipping', { file: resolvedDep });
257
333
  }
258
334
  // Queue DEPENDS_ON edges for later (after all nodes exist)
259
- const depHash = this.calculateFileHash(resolvedDep);
260
- const depModuleId = `MODULE:${depHash}`;
335
+ // Use semantic ID format for dependency reference
336
+ const depRelativePath = relative(projectPath, resolvedDep) || basename(resolvedDep);
337
+ const depModuleId = `${depRelativePath}->global->MODULE->module`;
261
338
  pendingDependsOnEdges.push({
262
339
  src: moduleId,
263
340
  dst: depModuleId,
@@ -273,9 +350,11 @@ export class JSModuleIndexer extends Plugin {
273
350
  }
274
351
  // Warning if hit MAX_MODULES limit
275
352
  if (visited.size >= MAX_MODULES) {
276
- console.warn(`[JSModuleIndexer] ⚠️ ${service.name} hit MAX_MODULES limit (${MAX_MODULES})!`);
277
- console.warn(`[JSModuleIndexer] This service may be pulling in too many dependencies.`);
278
- console.warn(`[JSModuleIndexer] Unprocessed files in stack: ${stack.length}`);
353
+ logger.warn('Hit MAX_MODULES limit', {
354
+ service: service.name,
355
+ limit: MAX_MODULES,
356
+ unprocessedInStack: stack.length
357
+ });
279
358
  }
280
359
  // Final progress report
281
360
  if (onProgress) {
@@ -288,11 +367,22 @@ export class JSModuleIndexer extends Plugin {
288
367
  currentService: service.name
289
368
  });
290
369
  }
291
- console.log(`[JSModuleIndexer] ${service.name}: ${nodesCreated} modules, ${visited.size} total in tree`);
292
- return createSuccessResult({ nodes: nodesCreated, edges: edgesCreated }, { totalModules: visited.size });
370
+ logger.info('Indexing complete', {
371
+ service: service.name,
372
+ modulesCreated: nodesCreated,
373
+ totalInTree: visited.size
374
+ });
375
+ // Return result with parse errors (REG-147)
376
+ return {
377
+ success: true,
378
+ created: { nodes: nodesCreated, edges: edgesCreated },
379
+ errors: parseErrors,
380
+ warnings: [],
381
+ metadata: { totalModules: visited.size },
382
+ };
293
383
  }
294
384
  catch (error) {
295
- console.error(`[JSModuleIndexer] Error:`, error);
385
+ logger.error('Indexing failed', { error });
296
386
  return createErrorResult(error);
297
387
  }
298
388
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * RustModuleIndexer - plugin for indexing Rust modules
3
- * Discovers .rs files in rust-engine/src/ directory
3
+ * Discovers .rs files in packages/rfdb-server/src/ directory
4
4
  */
5
5
  import { Plugin } from '../Plugin.js';
6
6
  import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
@@ -1 +1 @@
1
- {"version":3,"file":"RustModuleIndexer.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/RustModuleIndexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUhF,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,OAAO,CAAC,YAAY,CAAW;;IAO/B,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAclB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAiE7D"}
1
+ {"version":3,"file":"RustModuleIndexer.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/RustModuleIndexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUhF,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,OAAO,CAAC,YAAY,CAAW;;IAO/B,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAclB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAkE7D"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * RustModuleIndexer - plugin for indexing Rust modules
3
- * Discovers .rs files in rust-engine/src/ directory
3
+ * Discovers .rs files in packages/rfdb-server/src/ directory
4
4
  */
5
5
  import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
6
6
  import { resolve, relative, basename, join } from 'path';
@@ -84,19 +84,20 @@ export class RustModuleIndexer extends Plugin {
84
84
  return name;
85
85
  }
86
86
  async execute(context) {
87
+ const logger = this.log(context);
87
88
  const { manifest, graph, onProgress } = context;
88
89
  // Cast manifest to expected shape
89
90
  const typedManifest = manifest;
90
91
  const { projectPath } = typedManifest;
91
- // Find rust-engine/src directory
92
- const rustRoot = resolve(projectPath, 'rust-engine/src');
92
+ // Find packages/rfdb-server/src directory
93
+ const rustRoot = resolve(projectPath, 'packages/rfdb-server/src');
93
94
  if (!existsSync(rustRoot)) {
94
- console.log('[RustModuleIndexer] rust-engine/src not found, skipping');
95
+ logger.info('packages/rfdb-server/src not found, skipping');
95
96
  return createSuccessResult({ nodes: 0, edges: 0 }, { skipped: true });
96
97
  }
97
98
  // Discover all .rs files recursively
98
99
  const rsFiles = this.findRustFiles(rustRoot);
99
- console.log(`[RustModuleIndexer] Found ${rsFiles.length} .rs files`);
100
+ logger.info('Found Rust files', { count: rsFiles.length });
100
101
  let nodesCreated = 0;
101
102
  const errors = [];
102
103
  for (const filePath of rsFiles) {
@@ -132,9 +133,9 @@ export class RustModuleIndexer extends Plugin {
132
133
  }
133
134
  }
134
135
  if (errors.length > 0) {
135
- console.warn(`[RustModuleIndexer] ${errors.length} errors during indexing`);
136
+ logger.warn('Errors during indexing', { errorCount: errors.length });
136
137
  }
137
- console.log(`[RustModuleIndexer] Indexed ${nodesCreated} Rust modules`);
138
+ logger.info('Rust modules indexed', { count: nodesCreated });
138
139
  return createSuccessResult({ nodes: nodesCreated, edges: 0 }, { errors: errors.length });
139
140
  }
140
141
  }
@@ -15,6 +15,11 @@ interface DetectorContext {
15
15
  graph: {
16
16
  addNode(node: NodeRecord): Promise<void>;
17
17
  };
18
+ logger?: {
19
+ info(message: string, data?: Record<string, unknown>): void;
20
+ debug(message: string, data?: Record<string, unknown>): void;
21
+ warn(message: string, data?: Record<string, unknown>): void;
22
+ };
18
23
  }
19
24
  export declare class ServiceDetector {
20
25
  name: string;
@@ -39,6 +44,11 @@ export declare class ServiceDetector {
39
44
  private createServiceFromDir;
40
45
  /**
41
46
  * Находит entry point сервиса
47
+ *
48
+ * Resolution priority:
49
+ * 1. TypeScript source (via resolveSourceEntrypoint)
50
+ * 2. package.json main field
51
+ * 3. Standard fallback candidates
42
52
  */
43
53
  private findEntryPoint;
44
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceDetector.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/ServiceDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1C,CAAC;CACH;AAuBD,qBAAa,eAAe;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;;IAQjB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CjE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;OAEG;IACH,OAAO,CAAC,cAAc;CA8BvB"}
1
+ {"version":3,"file":"ServiceDetector.d.ts","sourceRoot":"","sources":["../../../src/plugins/indexing/ServiceDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD;;GAEG;AACH,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1C,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC7D,CAAC;CACH;AAwBD,qBAAa,eAAe;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;;IAQjB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CjE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CAsCvB"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
10
10
  import { join, basename } from 'path';
11
+ import { resolveSourceEntrypoint } from '../discovery/resolveSourceEntrypoint.js';
11
12
  export class ServiceDetector {
12
13
  name;
13
14
  phase;
@@ -21,21 +22,21 @@ export class ServiceDetector {
21
22
  * Анализирует проект и создаёт SERVICE ноды
22
23
  */
23
24
  async analyze(context) {
24
- const { projectPath, graph } = context;
25
+ const { projectPath, graph, logger } = context;
25
26
  const services = [];
26
- console.log(`[${this.name}] Detecting services in: ${projectPath}`);
27
+ logger?.info('Detecting services', { projectPath });
27
28
  // Паттерн 1: Монорепо структура (apps/, packages/, services/)
28
29
  const monorepoPatterns = ['apps', 'packages', 'services'];
29
30
  for (const pattern of monorepoPatterns) {
30
31
  const monorepoDir = join(projectPath, pattern);
31
32
  if (existsSync(monorepoDir)) {
32
- const detected = this.detectServicesInDir(monorepoDir, projectPath);
33
+ const detected = this.detectServicesInDir(monorepoDir, projectPath, logger);
33
34
  services.push(...detected);
34
35
  }
35
36
  }
36
37
  // Паттерн 2: Корневой проект (если нет монорепо)
37
38
  if (services.length === 0) {
38
- const rootService = this.detectRootService(projectPath);
39
+ const rootService = this.detectRootService(projectPath, logger);
39
40
  if (rootService) {
40
41
  services.push(rootService);
41
42
  }
@@ -54,14 +55,14 @@ export class ServiceDetector {
54
55
  }
55
56
  });
56
57
  }
57
- console.log(`[${this.name}] Detected ${services.length} services`);
58
- services.forEach(s => console.log(` - ${s.name} (${s.path})`));
58
+ logger?.info('Services detected', { count: services.length });
59
+ services.forEach(s => logger?.debug('Service found', { name: s.name, path: s.path }));
59
60
  return context;
60
61
  }
61
62
  /**
62
63
  * Обнаруживает сервисы в директории монорепо
63
64
  */
64
- detectServicesInDir(dir, projectPath) {
65
+ detectServicesInDir(dir, projectPath, logger) {
65
66
  const services = [];
66
67
  try {
67
68
  const entries = readdirSync(dir);
@@ -75,7 +76,7 @@ export class ServiceDetector {
75
76
  const packageJsonPath = join(fullPath, 'package.json');
76
77
  const hasPackageJson = existsSync(packageJsonPath);
77
78
  if (hasPackageJson) {
78
- const service = this.createServiceFromDir(fullPath, entry, projectPath);
79
+ const service = this.createServiceFromDir(fullPath, entry, projectPath, logger);
79
80
  if (service) {
80
81
  services.push(service);
81
82
  }
@@ -83,25 +84,25 @@ export class ServiceDetector {
83
84
  }
84
85
  }
85
86
  catch (error) {
86
- console.warn(`[${this.name}] Error scanning ${dir}:`, error.message);
87
+ logger?.warn('Error scanning directory', { dir, error: error.message });
87
88
  }
88
89
  return services;
89
90
  }
90
91
  /**
91
92
  * Обнаруживает корневой сервис (не монорепо)
92
93
  */
93
- detectRootService(projectPath) {
94
+ detectRootService(projectPath, logger) {
94
95
  const packageJsonPath = join(projectPath, 'package.json');
95
96
  if (!existsSync(packageJsonPath)) {
96
97
  return null;
97
98
  }
98
99
  const projectName = basename(projectPath);
99
- return this.createServiceFromDir(projectPath, projectName, projectPath);
100
+ return this.createServiceFromDir(projectPath, projectName, projectPath, logger);
100
101
  }
101
102
  /**
102
103
  * Создаёт объект сервиса из директории
103
104
  */
104
- createServiceFromDir(servicePath, serviceName, projectPath) {
105
+ createServiceFromDir(servicePath, serviceName, projectPath, logger) {
105
106
  try {
106
107
  const packageJsonPath = join(servicePath, 'package.json');
107
108
  let packageJson = null;
@@ -127,19 +128,31 @@ export class ServiceDetector {
127
128
  };
128
129
  }
129
130
  catch (error) {
130
- console.warn(`[${this.name}] Error creating service from ${servicePath}:`, error.message);
131
+ logger?.warn('Error creating service', { servicePath, error: error.message });
131
132
  return null;
132
133
  }
133
134
  }
134
135
  /**
135
136
  * Находит entry point сервиса
137
+ *
138
+ * Resolution priority:
139
+ * 1. TypeScript source (via resolveSourceEntrypoint)
140
+ * 2. package.json main field
141
+ * 3. Standard fallback candidates
136
142
  */
137
143
  findEntryPoint(servicePath, packageJson) {
138
- // 1. Из package.json main
144
+ // 1. Try TypeScript source first (prefers src/ over dist/)
145
+ if (packageJson) {
146
+ const tsSource = resolveSourceEntrypoint(servicePath, packageJson);
147
+ if (tsSource) {
148
+ return tsSource;
149
+ }
150
+ }
151
+ // 2. Fallback to package.json main (for JS projects or when source not found)
139
152
  if (packageJson?.main) {
140
153
  return packageJson.main;
141
154
  }
142
- // 2. Стандартные entry points
155
+ // 3. Standard fallback candidates
143
156
  const candidates = [
144
157
  'src/index.js',
145
158
  'src/index.ts',
@@ -0,0 +1,31 @@
1
+ /**
2
+ * BrokenImportValidator - detects broken imports and undefined symbols (REG-261)
3
+ *
4
+ * This VALIDATION plugin queries the graph (built by ANALYSIS and ENRICHMENT phases)
5
+ * to detect:
6
+ *
7
+ * 1. ERR_BROKEN_IMPORT: Named/default import references non-existent export
8
+ * - IMPORT node with relative source but no IMPORTS_FROM edge
9
+ * - Skips: external (npm) imports, namespace imports, type-only imports
10
+ *
11
+ * 2. ERR_UNDEFINED_SYMBOL: Symbol used but not defined, imported, or global
12
+ * - CALL node without CALLS edge
13
+ * - Not a method call (no `object` property)
14
+ * - Not a local definition (FUNCTION/CLASS/VARIABLE in same file)
15
+ * - Not an import (IMPORT with matching local name)
16
+ * - Not a known global (console, setTimeout, etc.)
17
+ *
18
+ * Architecture follows existing validator patterns:
19
+ * - Phase: VALIDATION
20
+ * - Priority: 85 (after enrichment, before general validators)
21
+ * - Returns: ValidationError[] collected via DiagnosticCollector
22
+ */
23
+ import { Plugin } from '../Plugin.js';
24
+ import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
25
+ export declare class BrokenImportValidator extends Plugin {
26
+ private globalsRegistry;
27
+ constructor(config?: Record<string, unknown>);
28
+ get metadata(): PluginMetadata;
29
+ execute(context: PluginContext): Promise<PluginResult>;
30
+ }
31
+ //# sourceMappingURL=BrokenImportValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrokenImportValidator.d.ts","sourceRoot":"","sources":["../../../src/plugins/validation/BrokenImportValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqChF,qBAAa,qBAAsB,SAAQ,MAAM;IAC/C,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAWhD,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CA4O7D"}