@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
@@ -10,22 +10,23 @@
10
10
  */
11
11
  import { createHash } from 'crypto';
12
12
  import { basename, relative } from 'path';
13
- import { ServiceNode, EntrypointNode, ModuleNode, FunctionNode, ScopeNode, CallSiteNode, MethodCallNode, VariableDeclarationNode, ConstantNode, LiteralNode, ExternalStdioNode, EventListenerNode, HttpRequestNode, DatabaseQueryNode, } from './nodes/index.js';
13
+ import { ServiceNode, EntrypointNode, ModuleNode, FunctionNode, ScopeNode, BranchNode, CaseNode, CallSiteNode, MethodCallNode, ConstructorCallNode, VariableDeclarationNode, ConstantNode, LiteralNode, ObjectLiteralNode, ArrayLiteralNode, ExternalStdioNode, NetworkRequestNode, EventListenerNode, HttpRequestNode, DatabaseQueryNode, ImportNode, ClassNode, ExportNode, ExternalModuleNode, InterfaceNode, TypeNode, EnumNode, DecoratorNode, ExpressionNode, ArgumentExpressionNode, IssueNode, } from './nodes/index.js';
14
+ import { brandNode } from '@grafema/types';
14
15
  export class NodeFactory {
15
16
  /**
16
17
  * Create SERVICE node
17
18
  */
18
19
  static createService(name, projectPath, options = {}) {
19
- return ServiceNode.create(name, projectPath, options);
20
+ return brandNode(ServiceNode.create(name, projectPath, options));
20
21
  }
21
22
  /**
22
23
  * Create ENTRYPOINT node
23
24
  */
24
25
  static createEntrypoint(file, entrypointType, options = {}) {
25
- return EntrypointNode.create(file, entrypointType, options);
26
+ return brandNode(EntrypointNode.create(file, entrypointType, options));
26
27
  }
27
28
  /**
28
- * Create MODULE node
29
+ * Create MODULE node (LEGACY)
29
30
  */
30
31
  static createModule(filePath, projectPath, options = {}) {
31
32
  if (!filePath)
@@ -34,73 +35,288 @@ export class NodeFactory {
34
35
  throw new Error('NodeFactory.createModule: projectPath is required');
35
36
  const contentHash = options.contentHash || this._hashFile(filePath);
36
37
  const relativePath = relative(projectPath, filePath) || basename(filePath);
37
- return ModuleNode.create(filePath, relativePath, contentHash, options);
38
+ return brandNode(ModuleNode.create(filePath, relativePath, contentHash, options));
39
+ }
40
+ /**
41
+ * Create MODULE node with semantic ID (NEW API)
42
+ *
43
+ * Uses ScopeContext for stable identifiers.
44
+ *
45
+ * @param context - Scope context with file path (relative to project root)
46
+ * @param options - Optional contentHash and isTest flag
47
+ * @returns ModuleNodeRecord with semantic ID
48
+ */
49
+ static createModuleWithContext(context, options = {}) {
50
+ return brandNode(ModuleNode.createWithContext(context, options));
38
51
  }
39
52
  /**
40
53
  * Create FUNCTION node
41
54
  */
42
55
  static createFunction(name, file, line, column, options = {}) {
43
- return FunctionNode.create(name, file, line, column, options);
56
+ return brandNode(FunctionNode.create(name, file, line, column, options));
44
57
  }
45
58
  /**
46
59
  * Create SCOPE node
47
60
  */
48
61
  static createScope(scopeType, file, line, options = {}) {
49
- return ScopeNode.create(scopeType, file, line, options);
62
+ return brandNode(ScopeNode.create(scopeType, file, line, options));
63
+ }
64
+ /**
65
+ * Create BRANCH node
66
+ */
67
+ static createBranch(branchType, file, line, column, options = {}) {
68
+ return brandNode(BranchNode.create(branchType, file, line, column, options));
69
+ }
70
+ /**
71
+ * Create CASE node
72
+ */
73
+ static createCase(value, isDefault, fallsThrough, isEmpty, file, line, column, options = {}) {
74
+ return brandNode(CaseNode.create(value, isDefault, fallsThrough, isEmpty, file, line, column, options));
50
75
  }
51
76
  /**
52
77
  * Create CALL_SITE node
53
78
  */
54
79
  static createCallSite(targetName, file, line, column, options = {}) {
55
- return CallSiteNode.create(targetName, file, line, column, options);
80
+ return brandNode(CallSiteNode.create(targetName, file, line, column, options));
56
81
  }
57
82
  /**
58
83
  * Create METHOD_CALL node
59
84
  */
60
85
  static createMethodCall(objectName, methodName, file, line, column, options = {}) {
61
- return MethodCallNode.create(objectName, methodName, file, line, column, options);
86
+ return brandNode(MethodCallNode.create(objectName, methodName, file, line, column, options));
87
+ }
88
+ /**
89
+ * Create CONSTRUCTOR_CALL node
90
+ *
91
+ * Represents a `new ClassName()` expression.
92
+ * Used for data flow: VARIABLE --ASSIGNED_FROM--> CONSTRUCTOR_CALL
93
+ *
94
+ * @param className - Name of the constructor (e.g., 'Date', 'MyClass')
95
+ * @param file - File path
96
+ * @param line - Line number
97
+ * @param column - Column position
98
+ * @param options - Optional counter for disambiguation
99
+ */
100
+ static createConstructorCall(className, file, line, column, options = {}) {
101
+ return brandNode(ConstructorCallNode.create(className, file, line, column, options));
102
+ }
103
+ /**
104
+ * Generate CONSTRUCTOR_CALL node ID without creating the full node
105
+ *
106
+ * Used by JSASTAnalyzer when creating assignment metadata.
107
+ * The full node is created later by GraphBuilder.
108
+ */
109
+ static generateConstructorCallId(className, file, line, column, options = {}) {
110
+ return ConstructorCallNode.generateId(className, file, line, column, options);
111
+ }
112
+ /**
113
+ * Check if a class name is a built-in JavaScript constructor
114
+ */
115
+ static isBuiltinConstructor(className) {
116
+ return ConstructorCallNode.isBuiltinConstructor(className);
62
117
  }
63
118
  /**
64
119
  * Create VARIABLE_DECLARATION node
65
120
  */
66
121
  static createVariableDeclaration(name, file, line, column, options = {}) {
67
- return VariableDeclarationNode.create(name, file, line, column, options);
122
+ return brandNode(VariableDeclarationNode.create(name, file, line, column, options));
68
123
  }
69
124
  /**
70
125
  * Create CONSTANT node
71
126
  */
72
127
  static createConstant(name, file, line, column, options = {}) {
73
- return ConstantNode.create(name, file, line, column, options);
128
+ return brandNode(ConstantNode.create(name, file, line, column, options));
74
129
  }
75
130
  /**
76
131
  * Create LITERAL node
77
132
  */
78
133
  static createLiteral(value, file, line, column, options = {}) {
79
- return LiteralNode.create(value, file, line, column, options);
134
+ return brandNode(LiteralNode.create(value, file, line, column, options));
135
+ }
136
+ /**
137
+ * Create OBJECT_LITERAL node
138
+ */
139
+ static createObjectLiteral(file, line, column, options = {}) {
140
+ return brandNode(ObjectLiteralNode.create(file, line, column, options));
141
+ }
142
+ /**
143
+ * Create ARRAY_LITERAL node
144
+ */
145
+ static createArrayLiteral(file, line, column, options = {}) {
146
+ return brandNode(ArrayLiteralNode.create(file, line, column, options));
80
147
  }
81
148
  /**
82
149
  * Create EXTERNAL_STDIO node (singleton)
83
150
  */
84
151
  static createExternalStdio() {
85
- return ExternalStdioNode.create();
152
+ return brandNode(ExternalStdioNode.create());
153
+ }
154
+ /**
155
+ * Create net:request singleton node
156
+ *
157
+ * This node represents the external network as a system resource.
158
+ * Should be created once per graph.
159
+ *
160
+ * All HTTP_REQUEST nodes connect to this singleton via CALLS edges.
161
+ *
162
+ * @returns NetworkRequestNodeRecord - singleton node
163
+ */
164
+ static createNetworkRequest() {
165
+ return brandNode(NetworkRequestNode.create());
86
166
  }
87
167
  /**
88
168
  * Create EVENT_LISTENER node
89
169
  */
90
- static createEventListener(eventName, objectName, file, line, options = {}) {
91
- return EventListenerNode.create(eventName, objectName, file, line, options);
170
+ static createEventListener(eventName, objectName, file, line, column, options = {}) {
171
+ return brandNode(EventListenerNode.create(eventName, objectName, file, line, column, options));
92
172
  }
93
173
  /**
94
174
  * Create HTTP_REQUEST node
95
175
  */
96
- static createHttpRequest(url, method, file, line, options = {}) {
97
- return HttpRequestNode.create(url, method, file, line, options);
176
+ static createHttpRequest(url, method, file, line, column, options = {}) {
177
+ return brandNode(HttpRequestNode.create(url, method, file, line, column, options));
98
178
  }
99
179
  /**
100
180
  * Create DATABASE_QUERY node
101
181
  */
102
- static createDatabaseQuery(query, operation, file, line, options = {}) {
103
- return DatabaseQueryNode.create(query, operation, file, line, options);
182
+ static createDatabaseQuery(query, operation, file, line, column, options = {}) {
183
+ return brandNode(DatabaseQueryNode.create(query, operation, file, line, column, options));
184
+ }
185
+ /**
186
+ * Create IMPORT node
187
+ *
188
+ * ImportNode automatically detects importType from imported field:
189
+ * - imported === 'default' → importType: 'default'
190
+ * - imported === '*' → importType: 'namespace'
191
+ * - anything else → importType: 'named'
192
+ *
193
+ * @param name - Local binding name (how it's used in this file)
194
+ * @param file - Absolute file path
195
+ * @param line - Line number (for debugging, not part of ID)
196
+ * @param column - Column position (0 if unavailable)
197
+ * @param source - Source module (e.g., 'react', './utils')
198
+ * @param options - Optional fields
199
+ * @returns ImportNodeRecord
200
+ */
201
+ static createImport(name, file, line, column, source, options = {}) {
202
+ return brandNode(ImportNode.create(name, file, line, column, source, options));
203
+ }
204
+ /**
205
+ * Create CLASS node
206
+ */
207
+ static createClass(name, file, line, column, options = {}) {
208
+ return brandNode(ClassNode.create(name, file, line, column, options));
209
+ }
210
+ /**
211
+ * Create EXPORT node
212
+ */
213
+ static createExport(name, file, line, column, options = {}) {
214
+ return brandNode(ExportNode.create(name, file, line, column, options));
215
+ }
216
+ /**
217
+ * Create EXTERNAL_MODULE node
218
+ *
219
+ * Represents external npm packages or Node.js built-in modules.
220
+ * Uses singleton pattern - same source always produces same ID.
221
+ *
222
+ * @param source - Module name (e.g., 'lodash', '@tanstack/react-query', 'node:fs')
223
+ */
224
+ static createExternalModule(source) {
225
+ return brandNode(ExternalModuleNode.create(source));
226
+ }
227
+ /**
228
+ * Create INTERFACE node
229
+ */
230
+ static createInterface(name, file, line, column, options = {}) {
231
+ return brandNode(InterfaceNode.create(name, file, line, column, options));
232
+ }
233
+ /**
234
+ * Create TYPE node
235
+ */
236
+ static createType(name, file, line, column, options = {}) {
237
+ return brandNode(TypeNode.create(name, file, line, column, options));
238
+ }
239
+ /**
240
+ * Create ENUM node
241
+ */
242
+ static createEnum(name, file, line, column, options = {}) {
243
+ return brandNode(EnumNode.create(name, file, line, column, options));
244
+ }
245
+ /**
246
+ * Create DECORATOR node
247
+ */
248
+ static createDecorator(name, file, line, column, targetId, targetType, options = {}) {
249
+ return brandNode(DecoratorNode.create(name, file, line, column, targetId, targetType, options));
250
+ }
251
+ /**
252
+ * Create EXPRESSION node
253
+ */
254
+ static createExpression(expressionType, file, line, column, options = {}) {
255
+ return brandNode(ExpressionNode.create(expressionType, file, line, column, options));
256
+ }
257
+ /**
258
+ * Generate EXPRESSION node ID without creating the full node
259
+ *
260
+ * Used by JSASTAnalyzer when creating assignment metadata.
261
+ * The full node is created later by GraphBuilder.
262
+ *
263
+ * @param expressionType - Type of expression (MemberExpression, BinaryExpression, etc.)
264
+ * @param file - File path
265
+ * @param line - Line number
266
+ * @param column - Column position
267
+ * @returns Generated ID string in colon format
268
+ */
269
+ static generateExpressionId(expressionType, file, line, column) {
270
+ return ExpressionNode.generateId(expressionType, file, line, column);
271
+ }
272
+ /**
273
+ * Create EXPRESSION node from assignment metadata
274
+ *
275
+ * Used by GraphBuilder when processing variableAssignments.
276
+ * The ID is provided from upstream (generated by JSASTAnalyzer).
277
+ *
278
+ * @param expressionType - Type of expression
279
+ * @param file - File path
280
+ * @param line - Line number
281
+ * @param column - Column position
282
+ * @param options - Must include id; optional: expression properties
283
+ */
284
+ static createExpressionFromMetadata(expressionType, file, line, column, options) {
285
+ return brandNode(ExpressionNode.createFromMetadata(expressionType, file, line, column, options));
286
+ }
287
+ /**
288
+ * Create EXPRESSION node with argument context
289
+ *
290
+ * Used when EXPRESSION appears as a call argument and we need to track
291
+ * which call and argument position for data flow analysis.
292
+ *
293
+ * @param expressionType - Type of expression (BinaryExpression, LogicalExpression, etc.)
294
+ * @param file - File path
295
+ * @param line - Line number
296
+ * @param column - Column position
297
+ * @param options - Required: parentCallId, argIndex; Optional: expression properties, counter
298
+ * @returns ArgumentExpressionNodeRecord
299
+ */
300
+ static createArgumentExpression(expressionType, file, line, column, options) {
301
+ return brandNode(ArgumentExpressionNode.create(expressionType, file, line, column, options));
302
+ }
303
+ /**
304
+ * Create ISSUE node
305
+ *
306
+ * Issues represent detected problems in the codebase.
307
+ * Used by validation plugins to persist findings in the graph.
308
+ *
309
+ * @param category - Issue category (security, performance, style, smell)
310
+ * @param severity - error | warning | info
311
+ * @param message - Human-readable description
312
+ * @param plugin - Name of the plugin that detected this issue
313
+ * @param file - File path where issue was detected
314
+ * @param line - Line number
315
+ * @param column - Column number (optional)
316
+ * @param options - Optional context data
317
+ */
318
+ static createIssue(category, severity, message, plugin, file, line, column = 0, options = {}) {
319
+ return brandNode(IssueNode.create(category, severity, message, plugin, file, line, column, options));
104
320
  }
105
321
  /**
106
322
  * Validate node by its type
@@ -112,16 +328,35 @@ export class NodeFactory {
112
328
  'MODULE': ModuleNode,
113
329
  'FUNCTION': FunctionNode,
114
330
  'SCOPE': ScopeNode,
331
+ 'BRANCH': BranchNode,
332
+ 'CASE': CaseNode,
115
333
  'CALL_SITE': CallSiteNode,
116
334
  'METHOD_CALL': MethodCallNode,
335
+ 'CONSTRUCTOR_CALL': ConstructorCallNode,
117
336
  'VARIABLE_DECLARATION': VariableDeclarationNode,
118
337
  'CONSTANT': ConstantNode,
119
338
  'LITERAL': LiteralNode,
120
- 'EXTERNAL_STDIO': ExternalStdioNode,
339
+ 'OBJECT_LITERAL': ObjectLiteralNode,
340
+ 'ARRAY_LITERAL': ArrayLiteralNode,
341
+ 'net:stdio': ExternalStdioNode,
342
+ 'net:request': NetworkRequestNode,
121
343
  'EVENT_LISTENER': EventListenerNode,
122
344
  'HTTP_REQUEST': HttpRequestNode,
123
- 'DATABASE_QUERY': DatabaseQueryNode
345
+ 'DATABASE_QUERY': DatabaseQueryNode,
346
+ 'IMPORT': ImportNode,
347
+ 'CLASS': ClassNode,
348
+ 'EXPORT': ExportNode,
349
+ 'EXTERNAL_MODULE': ExternalModuleNode,
350
+ 'INTERFACE': InterfaceNode,
351
+ 'TYPE': TypeNode,
352
+ 'ENUM': EnumNode,
353
+ 'DECORATOR': DecoratorNode,
354
+ 'EXPRESSION': ExpressionNode
124
355
  };
356
+ // Handle issue:* types dynamically
357
+ if (IssueNode.isIssueType(node.type)) {
358
+ return IssueNode.validate(node);
359
+ }
125
360
  const validator = validators[node.type];
126
361
  if (!validator) {
127
362
  return [`Unknown node type: ${node.type}`];
@@ -0,0 +1,84 @@
1
+ /**
2
+ * ScopeTracker - Track scope hierarchy during AST traversal
3
+ *
4
+ * Maintains the current scope path and provides counters for:
5
+ * - Counted scopes (if#0, try#1, etc.)
6
+ * - Item counters (CALL, LITERAL, etc.)
7
+ * - Sibling tracking (anonymous[0], anonymous[1], etc.)
8
+ *
9
+ * Used with SemanticId to generate stable identifiers.
10
+ */
11
+ import type { ScopeContext } from './SemanticId.js';
12
+ /**
13
+ * Entry in the scope stack
14
+ */
15
+ export interface ScopeEntry {
16
+ name: string;
17
+ type: string;
18
+ counter?: number;
19
+ }
20
+ /**
21
+ * Result of entering a counted scope
22
+ */
23
+ export interface CountedScopeResult {
24
+ name: string;
25
+ discriminator: number;
26
+ }
27
+ /**
28
+ * ScopeTracker - Manages scope hierarchy and counters during AST traversal
29
+ */
30
+ export declare class ScopeTracker {
31
+ /** Source file path */
32
+ readonly file: string;
33
+ /** Current scope stack */
34
+ private scopeStack;
35
+ /** Counters for various purposes (scoped by scope path) */
36
+ private counters;
37
+ constructor(file: string);
38
+ /**
39
+ * Enter a named scope (function, class, etc.)
40
+ */
41
+ enterScope(name: string, type: string): void;
42
+ /**
43
+ * Enter a counted scope (if, try, for, etc.)
44
+ * Automatically assigns a discriminator.
45
+ */
46
+ enterCountedScope(type: string): CountedScopeResult;
47
+ /**
48
+ * Exit the current scope
49
+ */
50
+ exitScope(): void;
51
+ /**
52
+ * Get current scope context for semantic ID generation
53
+ */
54
+ getContext(): ScopeContext;
55
+ /**
56
+ * Get scope path as string (for display/debugging)
57
+ */
58
+ getScopePath(): string;
59
+ /**
60
+ * Get the innermost enclosing scope of a specific type.
61
+ * Searches from innermost to outermost.
62
+ *
63
+ * @param scopeType - Type to search for ('CLASS', 'FUNCTION', etc.)
64
+ * @returns The scope entry name if found, undefined otherwise
65
+ */
66
+ getEnclosingScope(scopeType: string): string | undefined;
67
+ /**
68
+ * Get next counter for item type within current scope.
69
+ * Used for CALL, LITERAL, etc. that need #N discriminators.
70
+ */
71
+ getItemCounter(itemType: string): number;
72
+ /**
73
+ * Get current count without incrementing.
74
+ * Used to check for collisions.
75
+ */
76
+ peekItemCounter(itemType: string): number;
77
+ /**
78
+ * Track siblings by name within current scope.
79
+ * Used for anonymous functions: anonymous[0], anonymous[1]
80
+ */
81
+ getSiblingIndex(name: string): number;
82
+ private counterKey;
83
+ }
84
+ //# sourceMappingURL=ScopeTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeTracker.d.ts","sourceRoot":"","sources":["../../src/core/ScopeTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0BAA0B;IAC1B,OAAO,CAAC,UAAU,CAAoB;IAEtC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,IAAI,EAAE,MAAM;IAMxB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;IAUnD;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACH,UAAU,IAAI,YAAY;IAO1B;;OAEG;IACH,YAAY,IAAI,MAAM;IAKtB;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYxD;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOxC;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMzC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASrC,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * ScopeTracker - Track scope hierarchy during AST traversal
3
+ *
4
+ * Maintains the current scope path and provides counters for:
5
+ * - Counted scopes (if#0, try#1, etc.)
6
+ * - Item counters (CALL, LITERAL, etc.)
7
+ * - Sibling tracking (anonymous[0], anonymous[1], etc.)
8
+ *
9
+ * Used with SemanticId to generate stable identifiers.
10
+ */
11
+ /**
12
+ * ScopeTracker - Manages scope hierarchy and counters during AST traversal
13
+ */
14
+ export class ScopeTracker {
15
+ /** Source file path */
16
+ file;
17
+ /** Current scope stack */
18
+ scopeStack = [];
19
+ /** Counters for various purposes (scoped by scope path) */
20
+ counters = new Map();
21
+ constructor(file) {
22
+ this.file = file;
23
+ }
24
+ // === Scope Management ===
25
+ /**
26
+ * Enter a named scope (function, class, etc.)
27
+ */
28
+ enterScope(name, type) {
29
+ this.scopeStack.push({ name, type });
30
+ }
31
+ /**
32
+ * Enter a counted scope (if, try, for, etc.)
33
+ * Automatically assigns a discriminator.
34
+ */
35
+ enterCountedScope(type) {
36
+ const key = this.counterKey(type);
37
+ const n = this.counters.get(key) || 0;
38
+ this.counters.set(key, n + 1);
39
+ const name = `${type}#${n}`;
40
+ this.scopeStack.push({ name, type, counter: n });
41
+ return { name, discriminator: n };
42
+ }
43
+ /**
44
+ * Exit the current scope
45
+ */
46
+ exitScope() {
47
+ this.scopeStack.pop();
48
+ }
49
+ // === ID Generation ===
50
+ /**
51
+ * Get current scope context for semantic ID generation
52
+ */
53
+ getContext() {
54
+ return {
55
+ file: this.file,
56
+ scopePath: this.scopeStack.map(s => s.name)
57
+ };
58
+ }
59
+ /**
60
+ * Get scope path as string (for display/debugging)
61
+ */
62
+ getScopePath() {
63
+ if (this.scopeStack.length === 0)
64
+ return 'global';
65
+ return this.scopeStack.map(s => s.name).join('->');
66
+ }
67
+ /**
68
+ * Get the innermost enclosing scope of a specific type.
69
+ * Searches from innermost to outermost.
70
+ *
71
+ * @param scopeType - Type to search for ('CLASS', 'FUNCTION', etc.)
72
+ * @returns The scope entry name if found, undefined otherwise
73
+ */
74
+ getEnclosingScope(scopeType) {
75
+ // Search from end (innermost) to start (outermost)
76
+ for (let i = this.scopeStack.length - 1; i >= 0; i--) {
77
+ if (this.scopeStack[i].type === scopeType) {
78
+ return this.scopeStack[i].name;
79
+ }
80
+ }
81
+ return undefined;
82
+ }
83
+ // === Counter Management ===
84
+ /**
85
+ * Get next counter for item type within current scope.
86
+ * Used for CALL, LITERAL, etc. that need #N discriminators.
87
+ */
88
+ getItemCounter(itemType) {
89
+ const key = this.counterKey(itemType);
90
+ const n = this.counters.get(key) || 0;
91
+ this.counters.set(key, n + 1);
92
+ return n;
93
+ }
94
+ /**
95
+ * Get current count without incrementing.
96
+ * Used to check for collisions.
97
+ */
98
+ peekItemCounter(itemType) {
99
+ return this.counters.get(this.counterKey(itemType)) || 0;
100
+ }
101
+ // === Sibling Tracking ===
102
+ /**
103
+ * Track siblings by name within current scope.
104
+ * Used for anonymous functions: anonymous[0], anonymous[1]
105
+ */
106
+ getSiblingIndex(name) {
107
+ const key = `${this.getScopePath()}:sibling:${name}`;
108
+ const n = this.counters.get(key) || 0;
109
+ this.counters.set(key, n + 1);
110
+ return n;
111
+ }
112
+ // === Private ===
113
+ counterKey(itemType) {
114
+ return `${this.getScopePath()}:${itemType}`;
115
+ }
116
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * SemanticId - Stable identifiers for code elements
3
+ *
4
+ * Semantic IDs provide stable identifiers for code elements that don't change
5
+ * when unrelated code is added/removed (no line numbers in IDs).
6
+ *
7
+ * Format: {file}->{scope_path}->{type}->{name}[#discriminator]
8
+ *
9
+ * Examples:
10
+ * src/app.js->global->FUNCTION->processData
11
+ * src/app.js->UserService->METHOD->login
12
+ * src/app.js->getUser->if#0->CALL->console.log#0
13
+ *
14
+ * Special formats:
15
+ * Singletons: net:stdio->__stdio__
16
+ * External modules: EXTERNAL_MODULE->lodash
17
+ */
18
+ /**
19
+ * Location in source file
20
+ */
21
+ export interface Location {
22
+ line: number;
23
+ column: number;
24
+ endLine?: number;
25
+ endColumn?: number;
26
+ }
27
+ /**
28
+ * Scope context for semantic ID generation
29
+ */
30
+ export interface ScopeContext {
31
+ /** Source file path */
32
+ file: string;
33
+ /** Array of scope names, e.g. ['MyClass', 'myMethod', 'if#1'] */
34
+ scopePath: string[];
35
+ }
36
+ /**
37
+ * Options for semantic ID generation
38
+ */
39
+ export interface SemanticIdOptions {
40
+ /** Counter for disambiguation (#N) */
41
+ discriminator?: number;
42
+ /** Context string for special cases ([context]) */
43
+ context?: string;
44
+ }
45
+ /**
46
+ * Parsed semantic ID components
47
+ */
48
+ export interface ParsedSemanticId {
49
+ file: string;
50
+ scopePath: string[];
51
+ type: string;
52
+ name: string;
53
+ discriminator?: number;
54
+ context?: string;
55
+ }
56
+ /**
57
+ * Item with name and location for discriminator computation
58
+ */
59
+ export interface LocatedItem {
60
+ name: string;
61
+ location: Location;
62
+ }
63
+ /**
64
+ * Compute semantic ID for any node type.
65
+ *
66
+ * @param type - Node type (FUNCTION, CALL, VARIABLE, etc.)
67
+ * @param name - Node name
68
+ * @param context - Scope context from ScopeTracker
69
+ * @param options - Optional discriminator or context
70
+ * @returns Semantic ID string
71
+ */
72
+ export declare function computeSemanticId(type: string, name: string, context: ScopeContext, options?: SemanticIdOptions): string;
73
+ /**
74
+ * Parse semantic ID back to components.
75
+ *
76
+ * @param id - Semantic ID to parse
77
+ * @returns Parsed components or null if invalid
78
+ */
79
+ export declare function parseSemanticId(id: string): ParsedSemanticId | null;
80
+ /**
81
+ * Compute discriminator for items with same name in same scope.
82
+ * Uses line/column for stable ordering.
83
+ *
84
+ * @param items - All items in scope
85
+ * @param targetName - Name to find discriminator for
86
+ * @param targetLocation - Location of target item
87
+ * @returns Discriminator (0-based index among same-named items)
88
+ */
89
+ export declare function computeDiscriminator(items: LocatedItem[], targetName: string, targetLocation: Location): number;
90
+ //# sourceMappingURL=SemanticId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticId.d.ts","sourceRoot":"","sources":["../../src/core/SemanticId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAaR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAiDnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAAE,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,QAAQ,GACvB,MAAM,CAwBR"}