@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
@@ -18,20 +18,43 @@ import {
18
18
  ModuleNode,
19
19
  FunctionNode,
20
20
  ScopeNode,
21
+ BranchNode,
22
+ CaseNode,
21
23
  CallSiteNode,
22
24
  MethodCallNode,
25
+ ConstructorCallNode,
23
26
  VariableDeclarationNode,
24
27
  ConstantNode,
25
28
  LiteralNode,
29
+ ObjectLiteralNode,
30
+ ArrayLiteralNode,
26
31
  ExternalStdioNode,
32
+ NetworkRequestNode,
27
33
  EventListenerNode,
28
34
  HttpRequestNode,
29
35
  DatabaseQueryNode,
36
+ ImportNode,
37
+ ClassNode,
38
+ ExportNode,
39
+ ExternalModuleNode,
40
+ InterfaceNode,
41
+ TypeNode,
42
+ EnumNode,
43
+ DecoratorNode,
44
+ ExpressionNode,
45
+ ArgumentExpressionNode,
46
+ IssueNode,
30
47
  type EntrypointType,
31
48
  type EntrypointTrigger,
49
+ type DecoratorTargetType,
50
+ type InterfacePropertyRecord,
51
+ type EnumMemberRecord,
52
+ type IssueSeverity,
32
53
  } from './nodes/index.js';
33
54
 
34
- import type { BaseNodeRecord } from '@grafema/types';
55
+ import type { BaseNodeRecord, BrandedNode } from '@grafema/types';
56
+ import { brandNode } from '@grafema/types';
57
+ import type { ScopeContext } from './SemanticId.js';
35
58
 
36
59
  interface ServiceOptions {
37
60
  version?: string;
@@ -60,6 +83,11 @@ interface ModuleOptions {
60
83
  isTest?: boolean;
61
84
  }
62
85
 
86
+ interface ModuleContextOptions {
87
+ contentHash?: string;
88
+ isTest?: boolean;
89
+ }
90
+
63
91
  interface FunctionOptions {
64
92
  async?: boolean;
65
93
  generator?: boolean;
@@ -92,6 +120,10 @@ interface MethodCallOptions {
92
120
  counter?: number;
93
121
  }
94
122
 
123
+ interface ConstructorCallOptions {
124
+ counter?: number;
125
+ }
126
+
95
127
  interface VariableOptions {
96
128
  parentScopeId?: string;
97
129
  counter?: number;
@@ -109,15 +141,25 @@ interface LiteralOptions {
109
141
  counter?: number;
110
142
  }
111
143
 
144
+ interface ObjectLiteralOptions {
145
+ parentCallId?: string;
146
+ argIndex?: number;
147
+ counter?: number;
148
+ }
149
+
150
+ interface ArrayLiteralOptions {
151
+ parentCallId?: string;
152
+ argIndex?: number;
153
+ counter?: number;
154
+ }
155
+
112
156
  interface EventListenerOptions {
113
- column?: number;
114
157
  parentScopeId?: string;
115
158
  callbackArg?: string;
116
159
  counter?: number;
117
160
  }
118
161
 
119
162
  interface HttpRequestOptions {
120
- column?: number;
121
163
  parentScopeId?: string;
122
164
  counter?: number;
123
165
  }
@@ -126,6 +168,68 @@ interface DatabaseQueryOptions {
126
168
  parentScopeId?: string;
127
169
  }
128
170
 
171
+ interface ImportOptions {
172
+ importType?: 'default' | 'named' | 'namespace';
173
+ importBinding?: 'value' | 'type' | 'typeof';
174
+ imported?: string;
175
+ local?: string;
176
+ }
177
+
178
+ interface ClassOptions {
179
+ exported?: boolean;
180
+ superClass?: string;
181
+ methods?: string[];
182
+ isInstantiationRef?: boolean;
183
+ }
184
+
185
+ interface ExportOptions {
186
+ exportKind?: 'value' | 'type';
187
+ local?: string;
188
+ default?: boolean;
189
+ source?: string;
190
+ exportType?: 'default' | 'named' | 'all';
191
+ }
192
+
193
+ interface InterfaceOptions {
194
+ extends?: string[];
195
+ properties?: InterfacePropertyRecord[];
196
+ isExternal?: boolean;
197
+ }
198
+
199
+ interface TypeOptions {
200
+ aliasOf?: string;
201
+ }
202
+
203
+ interface EnumOptions {
204
+ isConst?: boolean;
205
+ members?: EnumMemberRecord[];
206
+ }
207
+
208
+ interface DecoratorOptions {
209
+ arguments?: unknown[];
210
+ }
211
+
212
+ interface ExpressionOptions {
213
+ // MemberExpression
214
+ object?: string;
215
+ property?: string;
216
+ computed?: boolean;
217
+ computedPropertyVar?: string;
218
+ // Binary/Logical
219
+ operator?: string;
220
+ // Tracking
221
+ path?: string;
222
+ baseName?: string;
223
+ propertyPath?: string[];
224
+ arrayIndex?: number;
225
+ }
226
+
227
+ interface ArgumentExpressionOptions extends ExpressionOptions {
228
+ parentCallId: string;
229
+ argIndex: number;
230
+ counter?: number;
231
+ }
232
+
129
233
  // Validator type for node classes
130
234
  interface NodeValidator {
131
235
  validate(node: BaseNodeRecord): string[];
@@ -136,18 +240,18 @@ export class NodeFactory {
136
240
  * Create SERVICE node
137
241
  */
138
242
  static createService(name: string, projectPath: string, options: ServiceOptions = {}) {
139
- return ServiceNode.create(name, projectPath, options);
243
+ return brandNode(ServiceNode.create(name, projectPath, options));
140
244
  }
141
245
 
142
246
  /**
143
247
  * Create ENTRYPOINT node
144
248
  */
145
249
  static createEntrypoint(file: string, entrypointType: EntrypointType, options: EntrypointOptions = {}) {
146
- return EntrypointNode.create(file, entrypointType, options);
250
+ return brandNode(EntrypointNode.create(file, entrypointType, options));
147
251
  }
148
252
 
149
253
  /**
150
- * Create MODULE node
254
+ * Create MODULE node (LEGACY)
151
255
  */
152
256
  static createModule(filePath: string, projectPath: string, options: ModuleOptions = {}) {
153
257
  if (!filePath) throw new Error('NodeFactory.createModule: filePath is required');
@@ -156,84 +260,407 @@ export class NodeFactory {
156
260
  const contentHash = options.contentHash || this._hashFile(filePath);
157
261
  const relativePath = relative(projectPath, filePath) || basename(filePath);
158
262
 
159
- return ModuleNode.create(filePath, relativePath, contentHash, options);
263
+ return brandNode(ModuleNode.create(filePath, relativePath, contentHash, options));
264
+ }
265
+
266
+ /**
267
+ * Create MODULE node with semantic ID (NEW API)
268
+ *
269
+ * Uses ScopeContext for stable identifiers.
270
+ *
271
+ * @param context - Scope context with file path (relative to project root)
272
+ * @param options - Optional contentHash and isTest flag
273
+ * @returns ModuleNodeRecord with semantic ID
274
+ */
275
+ static createModuleWithContext(context: ScopeContext, options: ModuleContextOptions = {}) {
276
+ return brandNode(ModuleNode.createWithContext(context, options));
160
277
  }
161
278
 
162
279
  /**
163
280
  * Create FUNCTION node
164
281
  */
165
282
  static createFunction(name: string, file: string, line: number, column: number, options: FunctionOptions = {}) {
166
- return FunctionNode.create(name, file, line, column, options);
283
+ return brandNode(FunctionNode.create(name, file, line, column, options));
167
284
  }
168
285
 
169
286
  /**
170
287
  * Create SCOPE node
171
288
  */
172
289
  static createScope(scopeType: string, file: string, line: number, options: ScopeOptions = {}) {
173
- return ScopeNode.create(scopeType, file, line, options);
290
+ return brandNode(ScopeNode.create(scopeType, file, line, options));
291
+ }
292
+
293
+ /**
294
+ * Create BRANCH node
295
+ */
296
+ static createBranch(branchType: 'switch' | 'if' | 'ternary', file: string, line: number, column: number, options: { parentScopeId?: string; counter?: number } = {}) {
297
+ return brandNode(BranchNode.create(branchType, file, line, column, options));
298
+ }
299
+
300
+ /**
301
+ * Create CASE node
302
+ */
303
+ static createCase(
304
+ value: unknown,
305
+ isDefault: boolean,
306
+ fallsThrough: boolean,
307
+ isEmpty: boolean,
308
+ file: string,
309
+ line: number,
310
+ column: number,
311
+ options: { parentBranchId?: string; counter?: number } = {}
312
+ ) {
313
+ return brandNode(CaseNode.create(value, isDefault, fallsThrough, isEmpty, file, line, column, options));
174
314
  }
175
315
 
176
316
  /**
177
317
  * Create CALL_SITE node
178
318
  */
179
319
  static createCallSite(targetName: string, file: string, line: number, column: number, options: CallSiteOptions = {}) {
180
- return CallSiteNode.create(targetName, file, line, column, options);
320
+ return brandNode(CallSiteNode.create(targetName, file, line, column, options));
181
321
  }
182
322
 
183
323
  /**
184
324
  * Create METHOD_CALL node
185
325
  */
186
326
  static createMethodCall(objectName: string | undefined, methodName: string, file: string, line: number, column: number, options: MethodCallOptions = {}) {
187
- return MethodCallNode.create(objectName, methodName, file, line, column, options);
327
+ return brandNode(MethodCallNode.create(objectName, methodName, file, line, column, options));
328
+ }
329
+
330
+ /**
331
+ * Create CONSTRUCTOR_CALL node
332
+ *
333
+ * Represents a `new ClassName()` expression.
334
+ * Used for data flow: VARIABLE --ASSIGNED_FROM--> CONSTRUCTOR_CALL
335
+ *
336
+ * @param className - Name of the constructor (e.g., 'Date', 'MyClass')
337
+ * @param file - File path
338
+ * @param line - Line number
339
+ * @param column - Column position
340
+ * @param options - Optional counter for disambiguation
341
+ */
342
+ static createConstructorCall(className: string, file: string, line: number, column: number, options: ConstructorCallOptions = {}) {
343
+ return brandNode(ConstructorCallNode.create(className, file, line, column, options));
344
+ }
345
+
346
+ /**
347
+ * Generate CONSTRUCTOR_CALL node ID without creating the full node
348
+ *
349
+ * Used by JSASTAnalyzer when creating assignment metadata.
350
+ * The full node is created later by GraphBuilder.
351
+ */
352
+ static generateConstructorCallId(className: string, file: string, line: number, column: number, options: ConstructorCallOptions = {}): string {
353
+ return ConstructorCallNode.generateId(className, file, line, column, options);
354
+ }
355
+
356
+ /**
357
+ * Check if a class name is a built-in JavaScript constructor
358
+ */
359
+ static isBuiltinConstructor(className: string): boolean {
360
+ return ConstructorCallNode.isBuiltinConstructor(className);
188
361
  }
189
362
 
190
363
  /**
191
364
  * Create VARIABLE_DECLARATION node
192
365
  */
193
366
  static createVariableDeclaration(name: string, file: string, line: number, column: number, options: VariableOptions = {}) {
194
- return VariableDeclarationNode.create(name, file, line, column, options);
367
+ return brandNode(VariableDeclarationNode.create(name, file, line, column, options));
195
368
  }
196
369
 
197
370
  /**
198
371
  * Create CONSTANT node
199
372
  */
200
373
  static createConstant(name: string, file: string, line: number, column: number, options: ConstantOptions = {}) {
201
- return ConstantNode.create(name, file, line, column, options);
374
+ return brandNode(ConstantNode.create(name, file, line, column, options));
202
375
  }
203
376
 
204
377
  /**
205
378
  * Create LITERAL node
206
379
  */
207
380
  static createLiteral(value: unknown, file: string, line: number, column: number, options: LiteralOptions = {}) {
208
- return LiteralNode.create(value, file, line, column, options);
381
+ return brandNode(LiteralNode.create(value, file, line, column, options));
382
+ }
383
+
384
+ /**
385
+ * Create OBJECT_LITERAL node
386
+ */
387
+ static createObjectLiteral(file: string, line: number, column: number, options: ObjectLiteralOptions = {}) {
388
+ return brandNode(ObjectLiteralNode.create(file, line, column, options));
389
+ }
390
+
391
+ /**
392
+ * Create ARRAY_LITERAL node
393
+ */
394
+ static createArrayLiteral(file: string, line: number, column: number, options: ArrayLiteralOptions = {}) {
395
+ return brandNode(ArrayLiteralNode.create(file, line, column, options));
209
396
  }
210
397
 
211
398
  /**
212
399
  * Create EXTERNAL_STDIO node (singleton)
213
400
  */
214
401
  static createExternalStdio() {
215
- return ExternalStdioNode.create();
402
+ return brandNode(ExternalStdioNode.create());
403
+ }
404
+
405
+ /**
406
+ * Create net:request singleton node
407
+ *
408
+ * This node represents the external network as a system resource.
409
+ * Should be created once per graph.
410
+ *
411
+ * All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
412
+ *
413
+ * @returns NetworkRequestNodeRecord - singleton node
414
+ */
415
+ static createNetworkRequest() {
416
+ return brandNode(NetworkRequestNode.create());
216
417
  }
217
418
 
218
419
  /**
219
420
  * Create EVENT_LISTENER node
220
421
  */
221
- static createEventListener(eventName: string, objectName: string | undefined, file: string, line: number, options: EventListenerOptions = {}) {
222
- return EventListenerNode.create(eventName, objectName, file, line, options);
422
+ static createEventListener(eventName: string, objectName: string | undefined, file: string, line: number, column: number, options: EventListenerOptions = {}) {
423
+ return brandNode(EventListenerNode.create(eventName, objectName, file, line, column, options));
223
424
  }
224
425
 
225
426
  /**
226
427
  * Create HTTP_REQUEST node
227
428
  */
228
- static createHttpRequest(url: string | undefined, method: string | undefined, file: string, line: number, options: HttpRequestOptions = {}) {
229
- return HttpRequestNode.create(url, method, file, line, options);
429
+ static createHttpRequest(url: string | undefined, method: string | undefined, file: string, line: number, column: number, options: HttpRequestOptions = {}) {
430
+ return brandNode(HttpRequestNode.create(url, method, file, line, column, options));
230
431
  }
231
432
 
232
433
  /**
233
434
  * Create DATABASE_QUERY node
234
435
  */
235
- static createDatabaseQuery(query: string | undefined, operation: string | undefined, file: string, line: number, options: DatabaseQueryOptions = {}) {
236
- return DatabaseQueryNode.create(query, operation, file, line, options);
436
+ static createDatabaseQuery(query: string | undefined, operation: string | undefined, file: string, line: number, column: number, options: DatabaseQueryOptions = {}) {
437
+ return brandNode(DatabaseQueryNode.create(query, operation, file, line, column, options));
438
+ }
439
+
440
+ /**
441
+ * Create IMPORT node
442
+ *
443
+ * ImportNode automatically detects importType from imported field:
444
+ * - imported === 'default' → importType: 'default'
445
+ * - imported === '*' → importType: 'namespace'
446
+ * - anything else → importType: 'named'
447
+ *
448
+ * @param name - Local binding name (how it's used in this file)
449
+ * @param file - Absolute file path
450
+ * @param line - Line number (for debugging, not part of ID)
451
+ * @param column - Column position (0 if unavailable)
452
+ * @param source - Source module (e.g., 'react', './utils')
453
+ * @param options - Optional fields
454
+ * @returns ImportNodeRecord
455
+ */
456
+ static createImport(
457
+ name: string,
458
+ file: string,
459
+ line: number,
460
+ column: number,
461
+ source: string,
462
+ options: ImportOptions = {}
463
+ ) {
464
+ return brandNode(ImportNode.create(name, file, line, column, source, options));
465
+ }
466
+
467
+ /**
468
+ * Create CLASS node
469
+ */
470
+ static createClass(
471
+ name: string,
472
+ file: string,
473
+ line: number,
474
+ column: number,
475
+ options: ClassOptions = {}
476
+ ) {
477
+ return brandNode(ClassNode.create(name, file, line, column, options));
478
+ }
479
+
480
+ /**
481
+ * Create EXPORT node
482
+ */
483
+ static createExport(
484
+ name: string,
485
+ file: string,
486
+ line: number,
487
+ column: number,
488
+ options: ExportOptions = {}
489
+ ) {
490
+ return brandNode(ExportNode.create(name, file, line, column, options));
491
+ }
492
+
493
+ /**
494
+ * Create EXTERNAL_MODULE node
495
+ *
496
+ * Represents external npm packages or Node.js built-in modules.
497
+ * Uses singleton pattern - same source always produces same ID.
498
+ *
499
+ * @param source - Module name (e.g., 'lodash', '@tanstack/react-query', 'node:fs')
500
+ */
501
+ static createExternalModule(source: string) {
502
+ return brandNode(ExternalModuleNode.create(source));
503
+ }
504
+
505
+ /**
506
+ * Create INTERFACE node
507
+ */
508
+ static createInterface(
509
+ name: string,
510
+ file: string,
511
+ line: number,
512
+ column: number,
513
+ options: InterfaceOptions = {}
514
+ ) {
515
+ return brandNode(InterfaceNode.create(name, file, line, column, options));
516
+ }
517
+
518
+ /**
519
+ * Create TYPE node
520
+ */
521
+ static createType(
522
+ name: string,
523
+ file: string,
524
+ line: number,
525
+ column: number,
526
+ options: TypeOptions = {}
527
+ ) {
528
+ return brandNode(TypeNode.create(name, file, line, column, options));
529
+ }
530
+
531
+ /**
532
+ * Create ENUM node
533
+ */
534
+ static createEnum(
535
+ name: string,
536
+ file: string,
537
+ line: number,
538
+ column: number,
539
+ options: EnumOptions = {}
540
+ ) {
541
+ return brandNode(EnumNode.create(name, file, line, column, options));
542
+ }
543
+
544
+ /**
545
+ * Create DECORATOR node
546
+ */
547
+ static createDecorator(
548
+ name: string,
549
+ file: string,
550
+ line: number,
551
+ column: number,
552
+ targetId: string,
553
+ targetType: DecoratorTargetType,
554
+ options: DecoratorOptions = {}
555
+ ) {
556
+ return brandNode(DecoratorNode.create(name, file, line, column, targetId, targetType, options));
557
+ }
558
+
559
+ /**
560
+ * Create EXPRESSION node
561
+ */
562
+ static createExpression(
563
+ expressionType: string,
564
+ file: string,
565
+ line: number,
566
+ column: number,
567
+ options: ExpressionOptions = {}
568
+ ) {
569
+ return brandNode(ExpressionNode.create(expressionType, file, line, column, options));
570
+ }
571
+
572
+ /**
573
+ * Generate EXPRESSION node ID without creating the full node
574
+ *
575
+ * Used by JSASTAnalyzer when creating assignment metadata.
576
+ * The full node is created later by GraphBuilder.
577
+ *
578
+ * @param expressionType - Type of expression (MemberExpression, BinaryExpression, etc.)
579
+ * @param file - File path
580
+ * @param line - Line number
581
+ * @param column - Column position
582
+ * @returns Generated ID string in colon format
583
+ */
584
+ static generateExpressionId(
585
+ expressionType: string,
586
+ file: string,
587
+ line: number,
588
+ column: number
589
+ ): string {
590
+ return ExpressionNode.generateId(expressionType, file, line, column);
591
+ }
592
+
593
+ /**
594
+ * Create EXPRESSION node from assignment metadata
595
+ *
596
+ * Used by GraphBuilder when processing variableAssignments.
597
+ * The ID is provided from upstream (generated by JSASTAnalyzer).
598
+ *
599
+ * @param expressionType - Type of expression
600
+ * @param file - File path
601
+ * @param line - Line number
602
+ * @param column - Column position
603
+ * @param options - Must include id; optional: expression properties
604
+ */
605
+ static createExpressionFromMetadata(
606
+ expressionType: string,
607
+ file: string,
608
+ line: number,
609
+ column: number,
610
+ options: ExpressionOptions & { id: string }
611
+ ) {
612
+ return brandNode(ExpressionNode.createFromMetadata(expressionType, file, line, column, options));
613
+ }
614
+
615
+ /**
616
+ * Create EXPRESSION node with argument context
617
+ *
618
+ * Used when EXPRESSION appears as a call argument and we need to track
619
+ * which call and argument position for data flow analysis.
620
+ *
621
+ * @param expressionType - Type of expression (BinaryExpression, LogicalExpression, etc.)
622
+ * @param file - File path
623
+ * @param line - Line number
624
+ * @param column - Column position
625
+ * @param options - Required: parentCallId, argIndex; Optional: expression properties, counter
626
+ * @returns ArgumentExpressionNodeRecord
627
+ */
628
+ static createArgumentExpression(
629
+ expressionType: string,
630
+ file: string,
631
+ line: number,
632
+ column: number,
633
+ options: ArgumentExpressionOptions
634
+ ) {
635
+ return brandNode(ArgumentExpressionNode.create(expressionType, file, line, column, options));
636
+ }
637
+
638
+ /**
639
+ * Create ISSUE node
640
+ *
641
+ * Issues represent detected problems in the codebase.
642
+ * Used by validation plugins to persist findings in the graph.
643
+ *
644
+ * @param category - Issue category (security, performance, style, smell)
645
+ * @param severity - error | warning | info
646
+ * @param message - Human-readable description
647
+ * @param plugin - Name of the plugin that detected this issue
648
+ * @param file - File path where issue was detected
649
+ * @param line - Line number
650
+ * @param column - Column number (optional)
651
+ * @param options - Optional context data
652
+ */
653
+ static createIssue(
654
+ category: string,
655
+ severity: IssueSeverity,
656
+ message: string,
657
+ plugin: string,
658
+ file: string,
659
+ line: number,
660
+ column: number = 0,
661
+ options: { context?: Record<string, unknown> } = {}
662
+ ) {
663
+ return brandNode(IssueNode.create(category, severity, message, plugin, file, line, column, options));
237
664
  }
238
665
 
239
666
  /**
@@ -246,17 +673,37 @@ export class NodeFactory {
246
673
  'MODULE': ModuleNode,
247
674
  'FUNCTION': FunctionNode,
248
675
  'SCOPE': ScopeNode,
676
+ 'BRANCH': BranchNode,
677
+ 'CASE': CaseNode,
249
678
  'CALL_SITE': CallSiteNode,
250
679
  'METHOD_CALL': MethodCallNode,
680
+ 'CONSTRUCTOR_CALL': ConstructorCallNode,
251
681
  'VARIABLE_DECLARATION': VariableDeclarationNode,
252
682
  'CONSTANT': ConstantNode,
253
683
  'LITERAL': LiteralNode,
254
- 'EXTERNAL_STDIO': ExternalStdioNode,
684
+ 'OBJECT_LITERAL': ObjectLiteralNode,
685
+ 'ARRAY_LITERAL': ArrayLiteralNode,
686
+ 'net:stdio': ExternalStdioNode,
687
+ 'net:request': NetworkRequestNode,
255
688
  'EVENT_LISTENER': EventListenerNode,
256
689
  'HTTP_REQUEST': HttpRequestNode,
257
- 'DATABASE_QUERY': DatabaseQueryNode
690
+ 'DATABASE_QUERY': DatabaseQueryNode,
691
+ 'IMPORT': ImportNode,
692
+ 'CLASS': ClassNode,
693
+ 'EXPORT': ExportNode,
694
+ 'EXTERNAL_MODULE': ExternalModuleNode,
695
+ 'INTERFACE': InterfaceNode,
696
+ 'TYPE': TypeNode,
697
+ 'ENUM': EnumNode,
698
+ 'DECORATOR': DecoratorNode,
699
+ 'EXPRESSION': ExpressionNode
258
700
  };
259
701
 
702
+ // Handle issue:* types dynamically
703
+ if (IssueNode.isIssueType(node.type)) {
704
+ return IssueNode.validate(node as Parameters<typeof IssueNode.validate>[0]);
705
+ }
706
+
260
707
  const validator = validators[node.type];
261
708
  if (!validator) {
262
709
  return [`Unknown node type: ${node.type}`];