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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/README.md +0 -1
  2. package/dist/Orchestrator.d.ts +24 -2
  3. package/dist/Orchestrator.d.ts.map +1 -1
  4. package/dist/Orchestrator.js +197 -24
  5. package/dist/config/ConfigLoader.d.ts +72 -0
  6. package/dist/config/ConfigLoader.d.ts.map +1 -0
  7. package/dist/config/ConfigLoader.js +187 -0
  8. package/dist/config/index.d.ts +6 -0
  9. package/dist/config/index.d.ts.map +1 -0
  10. package/dist/config/index.js +4 -0
  11. package/dist/core/ASTWorker.d.ts +11 -36
  12. package/dist/core/ASTWorker.d.ts.map +1 -1
  13. package/dist/core/ASTWorker.js +93 -99
  14. package/dist/core/CoverageAnalyzer.d.ts +65 -0
  15. package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
  16. package/dist/core/CoverageAnalyzer.js +198 -0
  17. package/dist/core/FileNodeManager.d.ts +40 -0
  18. package/dist/core/FileNodeManager.d.ts.map +1 -0
  19. package/dist/core/FileNodeManager.js +84 -0
  20. package/dist/core/GraphFreshnessChecker.d.ts +33 -0
  21. package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
  22. package/dist/core/GraphFreshnessChecker.js +101 -0
  23. package/dist/core/HashUtils.d.ts +24 -0
  24. package/dist/core/HashUtils.d.ts.map +1 -0
  25. package/dist/core/HashUtils.js +45 -0
  26. package/dist/core/IncrementalReanalyzer.d.ts +36 -0
  27. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
  28. package/dist/core/IncrementalReanalyzer.js +132 -0
  29. package/dist/core/NodeFactory.d.ts +225 -17
  30. package/dist/core/NodeFactory.d.ts.map +1 -1
  31. package/dist/core/NodeFactory.js +208 -18
  32. package/dist/core/ScopeTracker.d.ts +84 -0
  33. package/dist/core/ScopeTracker.d.ts.map +1 -0
  34. package/dist/core/ScopeTracker.js +116 -0
  35. package/dist/core/SemanticId.d.ts +90 -0
  36. package/dist/core/SemanticId.d.ts.map +1 -0
  37. package/dist/core/SemanticId.js +115 -0
  38. package/dist/core/VersionManager.d.ts.map +1 -1
  39. package/dist/core/VersionManager.js +3 -2
  40. package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
  41. package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
  42. package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
  43. package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
  44. package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
  45. package/dist/core/nodes/ArrayLiteralNode.js +41 -0
  46. package/dist/core/nodes/CallSiteNode.d.ts +28 -0
  47. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
  48. package/dist/core/nodes/CallSiteNode.js +46 -0
  49. package/dist/core/nodes/ClassNode.d.ts +33 -1
  50. package/dist/core/nodes/ClassNode.d.ts.map +1 -1
  51. package/dist/core/nodes/ClassNode.js +46 -2
  52. package/dist/core/nodes/DecoratorNode.d.ts +42 -0
  53. package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
  54. package/dist/core/nodes/DecoratorNode.js +62 -0
  55. package/dist/core/nodes/EnumNode.d.ts +42 -0
  56. package/dist/core/nodes/EnumNode.d.ts.map +1 -0
  57. package/dist/core/nodes/EnumNode.js +54 -0
  58. package/dist/core/nodes/ExportNode.d.ts +37 -1
  59. package/dist/core/nodes/ExportNode.d.ts.map +1 -1
  60. package/dist/core/nodes/ExportNode.js +48 -2
  61. package/dist/core/nodes/ExpressionNode.d.ts +97 -0
  62. package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
  63. package/dist/core/nodes/ExpressionNode.js +178 -0
  64. package/dist/core/nodes/ExternalModuleNode.d.ts +28 -0
  65. package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
  66. package/dist/core/nodes/ExternalModuleNode.js +41 -0
  67. package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
  68. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
  69. package/dist/core/nodes/ExternalStdioNode.js +15 -8
  70. package/dist/core/nodes/FunctionNode.d.ts +36 -0
  71. package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
  72. package/dist/core/nodes/FunctionNode.js +80 -1
  73. package/dist/core/nodes/ImportNode.d.ts +19 -5
  74. package/dist/core/nodes/ImportNode.d.ts.map +1 -1
  75. package/dist/core/nodes/ImportNode.js +23 -5
  76. package/dist/core/nodes/InterfaceNode.d.ts +46 -0
  77. package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
  78. package/dist/core/nodes/InterfaceNode.js +55 -0
  79. package/dist/core/nodes/IssueNode.d.ts +73 -0
  80. package/dist/core/nodes/IssueNode.d.ts.map +1 -0
  81. package/dist/core/nodes/IssueNode.js +129 -0
  82. package/dist/core/nodes/MethodCallNode.d.ts +30 -0
  83. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
  84. package/dist/core/nodes/MethodCallNode.js +49 -0
  85. package/dist/core/nodes/MethodNode.d.ts +32 -0
  86. package/dist/core/nodes/MethodNode.d.ts.map +1 -1
  87. package/dist/core/nodes/MethodNode.js +48 -0
  88. package/dist/core/nodes/ModuleNode.d.ts +31 -0
  89. package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
  90. package/dist/core/nodes/ModuleNode.js +37 -0
  91. package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
  92. package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
  93. package/dist/core/nodes/NetworkRequestNode.js +65 -0
  94. package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
  95. package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
  96. package/dist/core/nodes/ObjectLiteralNode.js +41 -0
  97. package/dist/core/nodes/ScopeNode.d.ts +31 -0
  98. package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
  99. package/dist/core/nodes/ScopeNode.js +49 -0
  100. package/dist/core/nodes/TypeNode.d.ts +36 -0
  101. package/dist/core/nodes/TypeNode.d.ts.map +1 -0
  102. package/dist/core/nodes/TypeNode.js +53 -0
  103. package/dist/core/nodes/VariableDeclarationNode.d.ts +27 -0
  104. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
  105. package/dist/core/nodes/VariableDeclarationNode.js +40 -0
  106. package/dist/core/nodes/index.d.ts +12 -1
  107. package/dist/core/nodes/index.d.ts.map +1 -1
  108. package/dist/core/nodes/index.js +14 -0
  109. package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
  110. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
  111. package/dist/diagnostics/DiagnosticCollector.js +129 -0
  112. package/dist/diagnostics/DiagnosticReporter.d.ts +77 -0
  113. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
  114. package/dist/diagnostics/DiagnosticReporter.js +159 -0
  115. package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
  116. package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
  117. package/dist/diagnostics/DiagnosticWriter.js +43 -0
  118. package/dist/diagnostics/index.d.ts +14 -0
  119. package/dist/diagnostics/index.d.ts.map +1 -0
  120. package/dist/diagnostics/index.js +11 -0
  121. package/dist/errors/GrafemaError.d.ts +118 -0
  122. package/dist/errors/GrafemaError.d.ts.map +1 -0
  123. package/dist/errors/GrafemaError.js +131 -0
  124. package/dist/index.d.ts +57 -1
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +54 -1
  127. package/dist/logging/Logger.d.ts +48 -0
  128. package/dist/logging/Logger.d.ts.map +1 -0
  129. package/dist/logging/Logger.js +134 -0
  130. package/dist/plugins/Plugin.d.ts +5 -1
  131. package/dist/plugins/Plugin.d.ts.map +1 -1
  132. package/dist/plugins/Plugin.js +33 -0
  133. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  134. package/dist/plugins/analysis/DatabaseAnalyzer.js +13 -6
  135. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  136. package/dist/plugins/analysis/ExpressAnalyzer.js +27 -19
  137. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  138. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +21 -14
  139. package/dist/plugins/analysis/FetchAnalyzer.d.ts +1 -0
  140. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  141. package/dist/plugins/analysis/FetchAnalyzer.js +34 -14
  142. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
  143. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  144. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
  145. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +180 -17
  146. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  147. package/dist/plugins/analysis/JSASTAnalyzer.js +1171 -471
  148. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  149. package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
  150. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  151. package/dist/plugins/analysis/RustAnalyzer.js +15 -10
  152. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  153. package/dist/plugins/analysis/SQLiteAnalyzer.js +9 -7
  154. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  155. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
  156. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  157. package/dist/plugins/analysis/SocketIOAnalyzer.js +27 -15
  158. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  159. package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
  160. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +34 -4
  161. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  162. package/dist/plugins/analysis/ast/GraphBuilder.js +318 -298
  163. package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
  164. package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
  165. package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
  166. package/dist/plugins/analysis/ast/types.d.ts +176 -5
  167. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  168. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
  169. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
  170. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
  171. package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
  172. package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
  173. package/dist/plugins/analysis/ast/utils/index.js +5 -0
  174. package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
  175. package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
  176. package/dist/plugins/analysis/ast/utils/location.js +78 -0
  177. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +9 -4
  178. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  179. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
  180. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +99 -9
  181. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  182. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +663 -125
  183. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
  184. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  185. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
  186. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +4 -1
  187. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  188. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +128 -63
  189. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  190. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +11 -8
  191. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
  192. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  193. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
  194. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +4 -1
  195. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  196. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +17 -13
  197. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  198. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  199. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  200. package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
  201. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
  202. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
  203. package/dist/plugins/discovery/WorkspaceDiscovery.js +136 -0
  204. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
  205. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
  206. package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
  207. package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
  208. package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
  209. package/dist/plugins/discovery/workspaces/detector.js +49 -0
  210. package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
  211. package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
  212. package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
  213. package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
  214. package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
  215. package/dist/plugins/discovery/workspaces/index.js +8 -0
  216. package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
  217. package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
  218. package/dist/plugins/discovery/workspaces/parsers.js +80 -0
  219. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
  220. package/dist/plugins/enrichment/AliasTracker.js +14 -8
  221. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  222. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +14 -7
  223. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  224. package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
  225. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  226. package/dist/plugins/enrichment/MethodCallResolver.js +18 -12
  227. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  228. package/dist/plugins/enrichment/MountPointResolver.js +8 -3
  229. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  230. package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
  231. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  232. package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
  233. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +17 -0
  234. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  235. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +129 -10
  236. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  237. package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
  238. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  239. package/dist/plugins/indexing/JSModuleIndexer.js +63 -31
  240. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  241. package/dist/plugins/indexing/RustModuleIndexer.js +5 -4
  242. package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
  243. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
  244. package/dist/plugins/indexing/ServiceDetector.js +28 -15
  245. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  246. package/dist/plugins/validation/CallResolverValidator.js +8 -7
  247. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
  248. package/dist/plugins/validation/DataFlowValidator.js +17 -12
  249. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
  250. package/dist/plugins/validation/EvalBanValidator.js +17 -16
  251. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  252. package/dist/plugins/validation/GraphConnectivityValidator.js +19 -23
  253. package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
  254. package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
  255. package/dist/plugins/validation/NodeCreationValidator.js +415 -0
  256. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  257. package/dist/plugins/validation/SQLInjectionValidator.js +59 -16
  258. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
  259. package/dist/plugins/validation/ShadowingDetector.js +6 -5
  260. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  261. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
  262. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  263. package/dist/plugins/vcs/GitPlugin.js +10 -12
  264. package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
  265. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
  266. package/dist/plugins/vcs/VCSPlugin.js +5 -5
  267. package/dist/storage/backends/RFDBServerBackend.d.ts +10 -17
  268. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  269. package/dist/storage/backends/RFDBServerBackend.js +31 -10
  270. package/dist/validation/PathValidator.d.ts +1 -2
  271. package/dist/validation/PathValidator.d.ts.map +1 -1
  272. package/package.json +3 -3
  273. package/src/Orchestrator.ts +237 -24
  274. package/src/config/ConfigLoader.ts +263 -0
  275. package/src/config/index.ts +5 -0
  276. package/src/core/ASTWorker.ts +143 -139
  277. package/src/core/CoverageAnalyzer.ts +243 -0
  278. package/src/core/FileNodeManager.ts +100 -0
  279. package/src/core/GraphFreshnessChecker.ts +143 -0
  280. package/src/core/HashUtils.ts +48 -0
  281. package/src/core/IncrementalReanalyzer.ts +192 -0
  282. package/src/core/NodeFactory.ts +401 -18
  283. package/src/core/ScopeTracker.ts +154 -0
  284. package/src/core/SemanticId.ts +192 -0
  285. package/src/core/VersionManager.ts +3 -2
  286. package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
  287. package/src/core/nodes/ArrayLiteralNode.ts +65 -0
  288. package/src/core/nodes/CallSiteNode.ts +58 -0
  289. package/src/core/nodes/ClassNode.ts +63 -2
  290. package/src/core/nodes/DecoratorNode.ts +91 -0
  291. package/src/core/nodes/EnumNode.ts +86 -0
  292. package/src/core/nodes/ExportNode.ts +70 -2
  293. package/src/core/nodes/ExpressionNode.ts +231 -0
  294. package/src/core/nodes/ExternalModuleNode.ts +56 -0
  295. package/src/core/nodes/ExternalStdioNode.ts +17 -9
  296. package/src/core/nodes/FunctionNode.ts +101 -1
  297. package/src/core/nodes/ImportNode.ts +32 -10
  298. package/src/core/nodes/InterfaceNode.ts +91 -0
  299. package/src/core/nodes/IssueNode.ts +177 -0
  300. package/src/core/nodes/MethodCallNode.ts +64 -0
  301. package/src/core/nodes/MethodNode.ts +63 -0
  302. package/src/core/nodes/ModuleNode.ts +50 -0
  303. package/src/core/nodes/NetworkRequestNode.ts +77 -0
  304. package/src/core/nodes/ObjectLiteralNode.ts +65 -0
  305. package/src/core/nodes/ScopeNode.ts +65 -0
  306. package/src/core/nodes/TypeNode.ts +78 -0
  307. package/src/core/nodes/VariableDeclarationNode.ts +52 -0
  308. package/src/core/nodes/index.ts +18 -1
  309. package/src/diagnostics/DiagnosticCollector.ts +163 -0
  310. package/src/diagnostics/DiagnosticReporter.ts +204 -0
  311. package/src/diagnostics/DiagnosticWriter.ts +50 -0
  312. package/src/diagnostics/index.ts +16 -0
  313. package/src/errors/GrafemaError.ts +174 -0
  314. package/src/index.ts +148 -1
  315. package/src/logging/Logger.ts +152 -0
  316. package/src/plugins/Plugin.ts +42 -0
  317. package/src/plugins/analysis/DatabaseAnalyzer.ts +14 -8
  318. package/src/plugins/analysis/ExpressAnalyzer.ts +29 -19
  319. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +22 -21
  320. package/src/plugins/analysis/FetchAnalyzer.ts +39 -16
  321. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
  322. package/src/plugins/analysis/JSASTAnalyzer.ts +1483 -503
  323. package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
  324. package/src/plugins/analysis/RustAnalyzer.ts +15 -10
  325. package/src/plugins/analysis/SQLiteAnalyzer.ts +10 -7
  326. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
  327. package/src/plugins/analysis/SocketIOAnalyzer.ts +31 -22
  328. package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
  329. package/src/plugins/analysis/ast/GraphBuilder.ts +439 -327
  330. package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
  331. package/src/plugins/analysis/ast/types.ts +209 -6
  332. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
  333. package/src/plugins/analysis/ast/utils/index.ts +12 -0
  334. package/src/plugins/analysis/ast/utils/location.ts +103 -0
  335. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +11 -8
  336. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +909 -83
  337. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
  338. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +159 -93
  339. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +12 -8
  340. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
  341. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +37 -17
  342. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
  343. package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
  344. package/src/plugins/discovery/WorkspaceDiscovery.ts +177 -0
  345. package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
  346. package/src/plugins/discovery/workspaces/detector.ts +63 -0
  347. package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
  348. package/src/plugins/discovery/workspaces/index.ts +23 -0
  349. package/src/plugins/discovery/workspaces/parsers.ts +99 -0
  350. package/src/plugins/enrichment/AliasTracker.ts +14 -8
  351. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +14 -7
  352. package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
  353. package/src/plugins/enrichment/MethodCallResolver.ts +18 -12
  354. package/src/plugins/enrichment/MountPointResolver.ts +8 -3
  355. package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
  356. package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
  357. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +149 -12
  358. package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
  359. package/src/plugins/indexing/JSModuleIndexer.ts +74 -34
  360. package/src/plugins/indexing/RustModuleIndexer.ts +5 -4
  361. package/src/plugins/validation/CallResolverValidator.ts +8 -7
  362. package/src/plugins/validation/DataFlowValidator.ts +16 -12
  363. package/src/plugins/validation/EvalBanValidator.ts +17 -16
  364. package/src/plugins/validation/GraphConnectivityValidator.ts +19 -23
  365. package/src/plugins/validation/NodeCreationValidator.ts +554 -0
  366. package/src/plugins/validation/SQLInjectionValidator.ts +61 -15
  367. package/src/plugins/validation/ShadowingDetector.ts +6 -5
  368. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
  369. package/src/plugins/vcs/GitPlugin.ts +40 -12
  370. package/src/plugins/vcs/VCSPlugin.ts +7 -5
  371. package/src/storage/backends/RFDBServerBackend.ts +43 -29
  372. package/src/validation/PathValidator.ts +1 -1
  373. package/dist/core/AnalysisWorker.d.ts +0 -14
  374. package/dist/core/AnalysisWorker.d.ts.map +0 -1
  375. package/dist/core/AnalysisWorker.js +0 -307
  376. package/dist/core/ParallelAnalyzer.d.ts +0 -120
  377. package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
  378. package/dist/core/ParallelAnalyzer.js +0 -331
  379. package/dist/core/QueueWorker.d.ts +0 -12
  380. package/dist/core/QueueWorker.d.ts.map +0 -1
  381. package/dist/core/QueueWorker.js +0 -567
  382. package/dist/core/RFDBClient.d.ts +0 -179
  383. package/dist/core/RFDBClient.d.ts.map +0 -1
  384. package/dist/core/RFDBClient.js +0 -429
  385. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
  386. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
  387. package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
  388. package/src/core/AnalysisWorker.ts +0 -410
  389. package/src/core/ParallelAnalyzer.ts +0 -476
  390. package/src/core/QueueWorker.ts +0 -780
  391. package/src/plugins/indexing/ServiceDetector.ts +0 -230
@@ -1,6 +1,14 @@
1
1
  /**
2
2
  * ScopeNode - contract for SCOPE node
3
+ *
4
+ * Supports two creation modes:
5
+ * 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
6
+ * 2. create() - LEGACY: Uses line-based IDs for backward compatibility
7
+ *
8
+ * Semantic ID format: {file}->{scope_path}->SCOPE->{scopeType}#N
9
+ * Example: src/app.js->handler->SCOPE->if#0
3
10
  */
11
+ import { computeSemanticId } from '../SemanticId.js';
4
12
  export class ScopeNode {
5
13
  static TYPE = 'SCOPE';
6
14
  static REQUIRED = ['scopeType', 'file', 'line'];
@@ -31,6 +39,47 @@ export class ScopeNode {
31
39
  capturesFrom: options.capturesFrom
32
40
  };
33
41
  }
42
+ /**
43
+ * Create SCOPE node with semantic ID (NEW API)
44
+ *
45
+ * Uses ScopeContext from ScopeTracker for stable identifiers.
46
+ * Requires discriminator for multiple scopes of same type within parent scope.
47
+ *
48
+ * @param scopeType - Type of scope (if, else, try, catch, finally, for, while, switch)
49
+ * @param context - Scope context from ScopeTracker.getContext()
50
+ * @param location - Source location { line }
51
+ * @param options - Options including required discriminator
52
+ * @returns ScopeNodeRecord with semantic ID
53
+ */
54
+ static createWithContext(scopeType, context, location, options) {
55
+ // Validate required fields
56
+ if (!scopeType)
57
+ throw new Error('ScopeNode.createWithContext: scopeType is required');
58
+ if (!context.file)
59
+ throw new Error('ScopeNode.createWithContext: file is required');
60
+ if (location.line === undefined)
61
+ throw new Error('ScopeNode.createWithContext: line is required');
62
+ if (options.discriminator === undefined)
63
+ throw new Error('ScopeNode.createWithContext: discriminator is required');
64
+ // Compute semantic ID with discriminator
65
+ const id = computeSemanticId('SCOPE', scopeType, context, {
66
+ discriminator: options.discriminator
67
+ });
68
+ // Name includes the discriminator for display purposes
69
+ const name = `${scopeType}#${options.discriminator}`;
70
+ return {
71
+ id,
72
+ type: this.TYPE,
73
+ scopeType,
74
+ name,
75
+ file: context.file,
76
+ line: location.line,
77
+ conditional: options.conditional || false,
78
+ parentScopeId: options.parentScopeId,
79
+ parentFunctionId: options.parentFunctionId,
80
+ capturesFrom: options.capturesFrom
81
+ };
82
+ }
34
83
  static validate(node) {
35
84
  const errors = [];
36
85
  if (node.type !== this.TYPE) {
@@ -0,0 +1,36 @@
1
+ /**
2
+ * TypeNode - contract for TYPE node
3
+ *
4
+ * Represents TypeScript type alias declarations.
5
+ *
6
+ * ID format: {file}:TYPE:{name}:{line}
7
+ * Example: /src/types.ts:TYPE:UserId:10
8
+ */
9
+ import type { BaseNodeRecord } from '@grafema/types';
10
+ interface TypeNodeRecord extends BaseNodeRecord {
11
+ type: 'TYPE';
12
+ column: number;
13
+ aliasOf?: string;
14
+ }
15
+ interface TypeNodeOptions {
16
+ aliasOf?: string;
17
+ }
18
+ export declare class TypeNode {
19
+ static readonly TYPE: "TYPE";
20
+ static readonly REQUIRED: readonly ["name", "file", "line"];
21
+ static readonly OPTIONAL: readonly ["column", "aliasOf"];
22
+ /**
23
+ * Create TYPE node
24
+ *
25
+ * @param name - Type alias name
26
+ * @param file - File path
27
+ * @param line - Line number
28
+ * @param column - Column position
29
+ * @param options - Optional type properties
30
+ * @returns TypeNodeRecord
31
+ */
32
+ static create(name: string, file: string, line: number, column: number, options?: TypeNodeOptions): TypeNodeRecord;
33
+ static validate(node: TypeNodeRecord): string[];
34
+ }
35
+ export type { TypeNodeRecord };
36
+ //# sourceMappingURL=TypeNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/TypeNode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,cAAe,SAAQ,cAAc;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAEvC,MAAM,CAAC,QAAQ,CAAC,QAAQ,oCAAqC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,iCAAkC;IAE1D;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,cAAc;IAgBjB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE;CAgBhD;AAED,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TypeNode - contract for TYPE node
3
+ *
4
+ * Represents TypeScript type alias declarations.
5
+ *
6
+ * ID format: {file}:TYPE:{name}:{line}
7
+ * Example: /src/types.ts:TYPE:UserId:10
8
+ */
9
+ export class TypeNode {
10
+ static TYPE = 'TYPE';
11
+ static REQUIRED = ['name', 'file', 'line'];
12
+ static OPTIONAL = ['column', 'aliasOf'];
13
+ /**
14
+ * Create TYPE node
15
+ *
16
+ * @param name - Type alias name
17
+ * @param file - File path
18
+ * @param line - Line number
19
+ * @param column - Column position
20
+ * @param options - Optional type properties
21
+ * @returns TypeNodeRecord
22
+ */
23
+ static create(name, file, line, column, options = {}) {
24
+ if (!name)
25
+ throw new Error('TypeNode.create: name is required');
26
+ if (!file)
27
+ throw new Error('TypeNode.create: file is required');
28
+ if (!line)
29
+ throw new Error('TypeNode.create: line is required');
30
+ return {
31
+ id: `${file}:TYPE:${name}:${line}`,
32
+ type: this.TYPE,
33
+ name,
34
+ file,
35
+ line,
36
+ column: column || 0,
37
+ aliasOf: options.aliasOf
38
+ };
39
+ }
40
+ static validate(node) {
41
+ const errors = [];
42
+ if (node.type !== this.TYPE) {
43
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
44
+ }
45
+ const nodeRecord = node;
46
+ for (const field of this.REQUIRED) {
47
+ if (!nodeRecord[field]) {
48
+ errors.push(`Missing required field: ${field}`);
49
+ }
50
+ }
51
+ return errors;
52
+ }
53
+ }
@@ -1,7 +1,15 @@
1
1
  /**
2
2
  * VariableDeclarationNode - contract for VARIABLE_DECLARATION node
3
+ *
4
+ * Supports two creation modes:
5
+ * 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
6
+ * 2. create() - LEGACY: Uses line-based IDs for backward compatibility
7
+ *
8
+ * Semantic ID format: {file}->{scope_path}->VARIABLE->{name}
9
+ * Example: src/app.js->handler->VARIABLE->result
3
10
  */
4
11
  import type { BaseNodeRecord } from '@grafema/types';
12
+ import { type ScopeContext, type Location } from '../SemanticId.js';
5
13
  interface VariableDeclarationNodeRecord extends BaseNodeRecord {
6
14
  type: 'VARIABLE_DECLARATION';
7
15
  column: number;
@@ -11,11 +19,30 @@ interface VariableDeclarationNodeOptions {
11
19
  parentScopeId?: string;
12
20
  counter?: number;
13
21
  }
22
+ /**
23
+ * Options for createWithContext
24
+ */
25
+ interface VariableContextOptions {
26
+ parentScopeId?: string;
27
+ }
14
28
  export declare class VariableDeclarationNode {
15
29
  static readonly TYPE: "VARIABLE_DECLARATION";
16
30
  static readonly REQUIRED: readonly ["name", "file", "line"];
17
31
  static readonly OPTIONAL: readonly ["column", "parentScopeId"];
18
32
  static create(name: string, file: string, line: number, column: number, options?: VariableDeclarationNodeOptions): VariableDeclarationNodeRecord;
33
+ /**
34
+ * Create VARIABLE_DECLARATION node with semantic ID (NEW API)
35
+ *
36
+ * Uses ScopeContext from ScopeTracker for stable identifiers.
37
+ * Variable names are unique within scope (handles shadowing naturally).
38
+ *
39
+ * @param name - Variable name
40
+ * @param context - Scope context from ScopeTracker.getContext()
41
+ * @param location - Source location { line, column }
42
+ * @param options - Optional variable properties
43
+ * @returns VariableDeclarationNodeRecord with semantic ID
44
+ */
45
+ static createWithContext(name: string, context: ScopeContext, location: Partial<Location>, options?: VariableContextOptions): VariableDeclarationNodeRecord;
19
46
  static validate(node: VariableDeclarationNodeRecord): string[];
20
47
  }
21
48
  export type { VariableDeclarationNodeRecord };
@@ -1 +1 @@
1
- {"version":3,"file":"VariableDeclarationNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/VariableDeclarationNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,6BAA8B,SAAQ,cAAc;IAC5D,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,8BAA8B;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,uBAAuB;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAU;IAEvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,oCAAqC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,uCAAwC;IAEhE,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B;IAmBhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,GAAG,MAAM,EAAE;CAS/D;AAED,YAAY,EAAE,6BAA6B,EAAE,CAAC"}
1
+ {"version":3,"file":"VariableDeclarationNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/VariableDeclarationNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvF,UAAU,6BAA8B,SAAQ,cAAc;IAC5D,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,8BAA8B;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,sBAAsB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,uBAAuB;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAU;IAEvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,oCAAqC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,uCAAwC;IAEhE,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B;IAmBhC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,GAAE,sBAA2B,GACnC,6BAA6B;IAoBhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,GAAG,MAAM,EAAE;CAS/D;AAED,YAAY,EAAE,6BAA6B,EAAE,CAAC"}
@@ -1,6 +1,14 @@
1
1
  /**
2
2
  * VariableDeclarationNode - contract for VARIABLE_DECLARATION node
3
+ *
4
+ * Supports two creation modes:
5
+ * 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
6
+ * 2. create() - LEGACY: Uses line-based IDs for backward compatibility
7
+ *
8
+ * Semantic ID format: {file}->{scope_path}->VARIABLE->{name}
9
+ * Example: src/app.js->handler->VARIABLE->result
3
10
  */
11
+ import { computeSemanticId } from '../SemanticId.js';
4
12
  export class VariableDeclarationNode {
5
13
  static TYPE = 'VARIABLE_DECLARATION';
6
14
  static REQUIRED = ['name', 'file', 'line'];
@@ -24,6 +32,38 @@ export class VariableDeclarationNode {
24
32
  parentScopeId: options.parentScopeId
25
33
  };
26
34
  }
35
+ /**
36
+ * Create VARIABLE_DECLARATION node with semantic ID (NEW API)
37
+ *
38
+ * Uses ScopeContext from ScopeTracker for stable identifiers.
39
+ * Variable names are unique within scope (handles shadowing naturally).
40
+ *
41
+ * @param name - Variable name
42
+ * @param context - Scope context from ScopeTracker.getContext()
43
+ * @param location - Source location { line, column }
44
+ * @param options - Optional variable properties
45
+ * @returns VariableDeclarationNodeRecord with semantic ID
46
+ */
47
+ static createWithContext(name, context, location, options = {}) {
48
+ // Validate required fields
49
+ if (!name)
50
+ throw new Error('VariableDeclarationNode.createWithContext: name is required');
51
+ if (!context.file)
52
+ throw new Error('VariableDeclarationNode.createWithContext: file is required');
53
+ if (location.line === undefined)
54
+ throw new Error('VariableDeclarationNode.createWithContext: line is required');
55
+ // Compute semantic ID using 'VARIABLE' type for cleaner IDs
56
+ const id = computeSemanticId('VARIABLE', name, context);
57
+ return {
58
+ id,
59
+ type: this.TYPE,
60
+ name,
61
+ file: context.file,
62
+ line: location.line,
63
+ column: location.column ?? 0,
64
+ parentScopeId: options.parentScopeId
65
+ };
66
+ }
27
67
  static validate(node) {
28
68
  const errors = [];
29
69
  if (node.type !== this.TYPE)
@@ -14,12 +14,23 @@ export { MethodCallNode, type MethodCallNodeRecord } from './MethodCallNode.js';
14
14
  export { VariableDeclarationNode, type VariableDeclarationNodeRecord } from './VariableDeclarationNode.js';
15
15
  export { ConstantNode, type ConstantNodeRecord } from './ConstantNode.js';
16
16
  export { LiteralNode, type LiteralNodeRecord } from './LiteralNode.js';
17
- export { ImportNode, type ImportNodeRecord, type ImportKind } from './ImportNode.js';
17
+ export { ObjectLiteralNode, type ObjectLiteralNodeRecord, type ObjectLiteralNodeOptions } from './ObjectLiteralNode.js';
18
+ export { ArrayLiteralNode, type ArrayLiteralNodeRecord, type ArrayLiteralNodeOptions } from './ArrayLiteralNode.js';
19
+ export { ImportNode, type ImportNodeRecord, type ImportBinding, type ImportType } from './ImportNode.js';
18
20
  export { ExportNode, type ExportNodeRecord, type ExportKind } from './ExportNode.js';
21
+ export { ExternalModuleNode, type ExternalModuleNodeRecord } from './ExternalModuleNode.js';
22
+ export { InterfaceNode, type InterfaceNodeRecord, type InterfacePropertyRecord } from './InterfaceNode.js';
23
+ export { TypeNode, type TypeNodeRecord } from './TypeNode.js';
24
+ export { EnumNode, type EnumNodeRecord, type EnumMemberRecord } from './EnumNode.js';
25
+ export { DecoratorNode, type DecoratorNodeRecord, type DecoratorTargetType } from './DecoratorNode.js';
26
+ export { ExpressionNode, type ExpressionNodeRecord, type ExpressionNodeOptions } from './ExpressionNode.js';
27
+ export { ArgumentExpressionNode, type ArgumentExpressionNodeRecord, type ArgumentExpressionNodeOptions } from './ArgumentExpressionNode.js';
19
28
  export { ExternalStdioNode, type ExternalStdioNodeRecord } from './ExternalStdioNode.js';
29
+ export { NetworkRequestNode, type NetworkRequestNodeRecord } from './NetworkRequestNode.js';
20
30
  export { EventListenerNode, type EventListenerNodeRecord } from './EventListenerNode.js';
21
31
  export { HttpRequestNode, type HttpRequestNodeRecord } from './HttpRequestNode.js';
22
32
  export { DatabaseQueryNode, type DatabaseQueryNodeRecord } from './DatabaseQueryNode.js';
23
33
  export { GuaranteeNode, type GuaranteeNodeRecord, type GuaranteePriority, type GuaranteeStatus, type GuaranteeType } from './GuaranteeNode.js';
34
+ export { IssueNode, type IssueNodeRecord, type IssueSeverity, type IssueType } from './IssueNode.js';
24
35
  export { NODE_TYPE, NAMESPACED_TYPE, isNamespacedType, getNamespace, getBaseName, isEndpointType, isSideEffectType, matchesTypePattern, isGuaranteeType, type BaseNodeType, type NamespacedNodeType, type NodeType, } from './NodeKind.js';
25
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/M,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,KAAK,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGzF,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG/I,OAAO,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/index.ts"],"names":[],"mappings":"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"}
@@ -16,15 +16,29 @@ export { MethodCallNode } from './MethodCallNode.js';
16
16
  export { VariableDeclarationNode } from './VariableDeclarationNode.js';
17
17
  export { ConstantNode } from './ConstantNode.js';
18
18
  export { LiteralNode } from './LiteralNode.js';
19
+ export { ObjectLiteralNode } from './ObjectLiteralNode.js';
20
+ export { ArrayLiteralNode } from './ArrayLiteralNode.js';
19
21
  // Import/Export nodes
20
22
  export { ImportNode } from './ImportNode.js';
21
23
  export { ExportNode } from './ExportNode.js';
24
+ export { ExternalModuleNode } from './ExternalModuleNode.js';
25
+ // TypeScript declaration nodes
26
+ export { InterfaceNode } from './InterfaceNode.js';
27
+ export { TypeNode } from './TypeNode.js';
28
+ export { EnumNode } from './EnumNode.js';
29
+ export { DecoratorNode } from './DecoratorNode.js';
30
+ // Expression nodes
31
+ export { ExpressionNode } from './ExpressionNode.js';
32
+ export { ArgumentExpressionNode } from './ArgumentExpressionNode.js';
22
33
  // External/IO nodes
23
34
  export { ExternalStdioNode } from './ExternalStdioNode.js';
35
+ export { NetworkRequestNode } from './NetworkRequestNode.js';
24
36
  export { EventListenerNode } from './EventListenerNode.js';
25
37
  export { HttpRequestNode } from './HttpRequestNode.js';
26
38
  export { DatabaseQueryNode } from './DatabaseQueryNode.js';
27
39
  // Guarantee nodes (contract-based)
28
40
  export { GuaranteeNode } from './GuaranteeNode.js';
41
+ // Issue nodes (detected problems)
42
+ export { IssueNode } from './IssueNode.js';
29
43
  // Node type constants and helpers
30
44
  export { NODE_TYPE, NAMESPACED_TYPE, isNamespacedType, getNamespace, getBaseName, isEndpointType, isSideEffectType, matchesTypePattern, isGuaranteeType, } from './NodeKind.js';
@@ -0,0 +1,98 @@
1
+ /**
2
+ * DiagnosticCollector - Collects and filters diagnostics from plugin execution
3
+ *
4
+ * The DiagnosticCollector aggregates errors from PluginResult.errors[],
5
+ * converting both GrafemaError instances (with rich info) and plain Error
6
+ * instances (treated as generic errors) into unified Diagnostic entries.
7
+ *
8
+ * Usage:
9
+ * const collector = new DiagnosticCollector();
10
+ * collector.addFromPluginResult('INDEXING', 'JSModuleIndexer', result);
11
+ *
12
+ * if (collector.hasFatal()) {
13
+ * throw new Error('Fatal error detected');
14
+ * }
15
+ *
16
+ * console.log(collector.toDiagnosticsLog());
17
+ */
18
+ import type { PluginPhase, PluginResult } from '@grafema/types';
19
+ /**
20
+ * Diagnostic entry - unified format for all errors/warnings
21
+ */
22
+ export interface Diagnostic {
23
+ code: string;
24
+ severity: 'fatal' | 'error' | 'warning' | 'info';
25
+ message: string;
26
+ file?: string;
27
+ line?: number;
28
+ phase: PluginPhase;
29
+ plugin: string;
30
+ timestamp: number;
31
+ suggestion?: string;
32
+ }
33
+ /**
34
+ * Diagnostic input (without timestamp, which is auto-generated)
35
+ */
36
+ export type DiagnosticInput = Omit<Diagnostic, 'timestamp'>;
37
+ /**
38
+ * DiagnosticCollector - collects, filters, and formats diagnostics
39
+ */
40
+ export declare class DiagnosticCollector {
41
+ private diagnostics;
42
+ /**
43
+ * Extract errors from PluginResult and add as diagnostics.
44
+ *
45
+ * GrafemaError instances provide rich info (code, severity, context, suggestion).
46
+ * Plain Error instances are treated as generic errors with code 'ERR_UNKNOWN'.
47
+ */
48
+ addFromPluginResult(phase: PluginPhase, plugin: string, result: PluginResult): void;
49
+ /**
50
+ * Add a diagnostic directly.
51
+ * Timestamp is set automatically.
52
+ */
53
+ add(diagnostic: DiagnosticInput): void;
54
+ /**
55
+ * Get all diagnostics.
56
+ * Returns a copy to prevent external modification.
57
+ */
58
+ getAll(): Diagnostic[];
59
+ /**
60
+ * Get diagnostics filtered by phase.
61
+ */
62
+ getByPhase(phase: PluginPhase): Diagnostic[];
63
+ /**
64
+ * Get diagnostics filtered by plugin name (case-sensitive).
65
+ */
66
+ getByPlugin(plugin: string): Diagnostic[];
67
+ /**
68
+ * Get diagnostics filtered by error code.
69
+ */
70
+ getByCode(code: string): Diagnostic[];
71
+ /**
72
+ * Check if any fatal diagnostic exists.
73
+ * Fatal errors require immediate stop of analysis.
74
+ */
75
+ hasFatal(): boolean;
76
+ /**
77
+ * Check if any error (including fatal) exists.
78
+ */
79
+ hasErrors(): boolean;
80
+ /**
81
+ * Check if any warning exists.
82
+ */
83
+ hasWarnings(): boolean;
84
+ /**
85
+ * Get total count of diagnostics.
86
+ */
87
+ count(): number;
88
+ /**
89
+ * Format diagnostics as JSON lines (one JSON object per line).
90
+ * Suitable for .grafema/diagnostics.log file.
91
+ */
92
+ toDiagnosticsLog(): string;
93
+ /**
94
+ * Clear all diagnostics.
95
+ */
96
+ clear(): void;
97
+ }
98
+ //# sourceMappingURL=DiagnosticCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticCollector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticCollector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAE5D;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAoB;IAEvC;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IA0BnF;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAOtC;;;OAGG;IACH,MAAM,IAAI,UAAU,EAAE;IAItB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,EAAE;IAI5C;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAIzC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE;IAIrC;;;OAGG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;;OAGG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * DiagnosticCollector - Collects and filters diagnostics from plugin execution
3
+ *
4
+ * The DiagnosticCollector aggregates errors from PluginResult.errors[],
5
+ * converting both GrafemaError instances (with rich info) and plain Error
6
+ * instances (treated as generic errors) into unified Diagnostic entries.
7
+ *
8
+ * Usage:
9
+ * const collector = new DiagnosticCollector();
10
+ * collector.addFromPluginResult('INDEXING', 'JSModuleIndexer', result);
11
+ *
12
+ * if (collector.hasFatal()) {
13
+ * throw new Error('Fatal error detected');
14
+ * }
15
+ *
16
+ * console.log(collector.toDiagnosticsLog());
17
+ */
18
+ import { GrafemaError } from '../errors/GrafemaError.js';
19
+ /**
20
+ * DiagnosticCollector - collects, filters, and formats diagnostics
21
+ */
22
+ export class DiagnosticCollector {
23
+ diagnostics = [];
24
+ /**
25
+ * Extract errors from PluginResult and add as diagnostics.
26
+ *
27
+ * GrafemaError instances provide rich info (code, severity, context, suggestion).
28
+ * Plain Error instances are treated as generic errors with code 'ERR_UNKNOWN'.
29
+ */
30
+ addFromPluginResult(phase, plugin, result) {
31
+ for (const error of result.errors) {
32
+ if (error instanceof GrafemaError) {
33
+ this.add({
34
+ code: error.code,
35
+ severity: error.severity,
36
+ message: error.message,
37
+ file: error.context.filePath,
38
+ line: error.context.lineNumber,
39
+ phase,
40
+ plugin,
41
+ suggestion: error.suggestion,
42
+ });
43
+ }
44
+ else {
45
+ // Plain Error - treat as generic error
46
+ this.add({
47
+ code: 'ERR_UNKNOWN',
48
+ severity: 'error',
49
+ message: error.message,
50
+ phase,
51
+ plugin,
52
+ });
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Add a diagnostic directly.
58
+ * Timestamp is set automatically.
59
+ */
60
+ add(diagnostic) {
61
+ this.diagnostics.push({
62
+ ...diagnostic,
63
+ timestamp: Date.now(),
64
+ });
65
+ }
66
+ /**
67
+ * Get all diagnostics.
68
+ * Returns a copy to prevent external modification.
69
+ */
70
+ getAll() {
71
+ return [...this.diagnostics];
72
+ }
73
+ /**
74
+ * Get diagnostics filtered by phase.
75
+ */
76
+ getByPhase(phase) {
77
+ return this.diagnostics.filter(d => d.phase === phase);
78
+ }
79
+ /**
80
+ * Get diagnostics filtered by plugin name (case-sensitive).
81
+ */
82
+ getByPlugin(plugin) {
83
+ return this.diagnostics.filter(d => d.plugin === plugin);
84
+ }
85
+ /**
86
+ * Get diagnostics filtered by error code.
87
+ */
88
+ getByCode(code) {
89
+ return this.diagnostics.filter(d => d.code === code);
90
+ }
91
+ /**
92
+ * Check if any fatal diagnostic exists.
93
+ * Fatal errors require immediate stop of analysis.
94
+ */
95
+ hasFatal() {
96
+ return this.diagnostics.some(d => d.severity === 'fatal');
97
+ }
98
+ /**
99
+ * Check if any error (including fatal) exists.
100
+ */
101
+ hasErrors() {
102
+ return this.diagnostics.some(d => d.severity === 'error' || d.severity === 'fatal');
103
+ }
104
+ /**
105
+ * Check if any warning exists.
106
+ */
107
+ hasWarnings() {
108
+ return this.diagnostics.some(d => d.severity === 'warning');
109
+ }
110
+ /**
111
+ * Get total count of diagnostics.
112
+ */
113
+ count() {
114
+ return this.diagnostics.length;
115
+ }
116
+ /**
117
+ * Format diagnostics as JSON lines (one JSON object per line).
118
+ * Suitable for .grafema/diagnostics.log file.
119
+ */
120
+ toDiagnosticsLog() {
121
+ return this.diagnostics.map(d => JSON.stringify(d)).join('\n');
122
+ }
123
+ /**
124
+ * Clear all diagnostics.
125
+ */
126
+ clear() {
127
+ this.diagnostics = [];
128
+ }
129
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * DiagnosticReporter - Formats diagnostics for output
3
+ *
4
+ * Supports multiple output formats:
5
+ * - text: Human-readable format with severity indicators
6
+ * - json: Machine-readable JSON format for CI integration
7
+ * - csv: Spreadsheet-compatible format
8
+ *
9
+ * Usage:
10
+ * const reporter = new DiagnosticReporter(collector);
11
+ * console.log(reporter.report({ format: 'text', includeSummary: true }));
12
+ * console.log(reporter.summary());
13
+ */
14
+ import type { DiagnosticCollector } from './DiagnosticCollector.js';
15
+ /**
16
+ * Report output options
17
+ */
18
+ export interface ReportOptions {
19
+ format: 'text' | 'json' | 'csv';
20
+ includeSummary?: boolean;
21
+ includeTrace?: boolean;
22
+ }
23
+ /**
24
+ * Summary statistics
25
+ */
26
+ export interface SummaryStats {
27
+ total: number;
28
+ fatal: number;
29
+ errors: number;
30
+ warnings: number;
31
+ info: number;
32
+ }
33
+ /**
34
+ * DiagnosticReporter - formats diagnostics for different output formats
35
+ */
36
+ export declare class DiagnosticReporter {
37
+ private collector;
38
+ constructor(collector: DiagnosticCollector);
39
+ /**
40
+ * Generate a formatted report of all diagnostics.
41
+ */
42
+ report(options: ReportOptions): string;
43
+ /**
44
+ * Generate a human-readable summary of diagnostic counts.
45
+ */
46
+ summary(): string;
47
+ /**
48
+ * Get diagnostic statistics by severity.
49
+ */
50
+ getStats(): SummaryStats;
51
+ /**
52
+ * Generate human-readable text report.
53
+ */
54
+ private textReport;
55
+ /**
56
+ * Generate JSON report.
57
+ */
58
+ private jsonReport;
59
+ /**
60
+ * Generate CSV report.
61
+ */
62
+ private csvReport;
63
+ /**
64
+ * Get severity indicator for text output.
65
+ */
66
+ private getSeverityIcon;
67
+ /**
68
+ * Format file location for display.
69
+ */
70
+ private formatLocation;
71
+ /**
72
+ * Escape a value for CSV output.
73
+ * Wraps in quotes and escapes internal quotes.
74
+ */
75
+ private csvEscape;
76
+ }
77
+ //# sourceMappingURL=DiagnosticReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticReporter.d.ts","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticReporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,mBAAmB;IAElD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAYtC;;OAEG;IACH,OAAO,IAAI,MAAM;IAsBjB;;OAEG;IACH,QAAQ,IAAI,YAAY;IAWxB;;OAEG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;OAGG;IACH,OAAO,CAAC,SAAS;CAKlB"}