@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
@@ -0,0 +1,81 @@
1
+ /**
2
+ * CaseNode - contract for CASE node
3
+ *
4
+ * Represents a case clause in a switch statement.
5
+ *
6
+ * ID format (legacy): {file}:CASE:{value}:{line}:{counter}
7
+ * Semantic ID format: {file}->{scope_path}->CASE->{value}#N
8
+ */
9
+ import { computeSemanticId } from '../SemanticId.js';
10
+ export class CaseNode {
11
+ static TYPE = 'CASE';
12
+ static REQUIRED = ['file', 'line', 'column'];
13
+ static OPTIONAL = ['value', 'isDefault', 'fallsThrough', 'isEmpty', 'parentBranchId'];
14
+ /**
15
+ * Create CASE node (legacy ID)
16
+ */
17
+ static create(value, isDefault, fallsThrough, isEmpty, file, line, column, options = {}) {
18
+ if (!file)
19
+ throw new Error('CaseNode.create: file is required');
20
+ if (line === undefined)
21
+ throw new Error('CaseNode.create: line is required');
22
+ if (column === undefined)
23
+ throw new Error('CaseNode.create: column is required');
24
+ const valueName = isDefault ? 'default' : String(value);
25
+ const counter = options.counter !== undefined ? `:${options.counter}` : '';
26
+ const id = `${file}:CASE:${valueName}:${line}${counter}`;
27
+ return {
28
+ id,
29
+ type: this.TYPE,
30
+ name: isDefault ? 'default' : `case ${String(value)}`,
31
+ file,
32
+ line,
33
+ column,
34
+ value,
35
+ isDefault,
36
+ fallsThrough,
37
+ isEmpty,
38
+ parentBranchId: options.parentBranchId
39
+ };
40
+ }
41
+ /**
42
+ * Create CASE node with semantic ID (NEW API)
43
+ */
44
+ static createWithContext(value, isDefault, fallsThrough, isEmpty, context, location, options) {
45
+ if (!context.file)
46
+ throw new Error('CaseNode.createWithContext: file is required');
47
+ if (location.line === undefined)
48
+ throw new Error('CaseNode.createWithContext: line is required');
49
+ if (location.column === undefined)
50
+ throw new Error('CaseNode.createWithContext: column is required');
51
+ if (options.discriminator === undefined)
52
+ throw new Error('CaseNode.createWithContext: discriminator is required');
53
+ const valueName = isDefault ? 'default' : String(value);
54
+ const id = computeSemanticId('CASE', valueName, context, {
55
+ discriminator: options.discriminator
56
+ });
57
+ return {
58
+ id,
59
+ type: this.TYPE,
60
+ name: isDefault ? 'default' : `case ${String(value)}`,
61
+ file: context.file,
62
+ line: location.line,
63
+ column: location.column,
64
+ value,
65
+ isDefault,
66
+ fallsThrough,
67
+ isEmpty,
68
+ parentBranchId: options.parentBranchId
69
+ };
70
+ }
71
+ static validate(node) {
72
+ const errors = [];
73
+ if (node.type !== this.TYPE) {
74
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
75
+ }
76
+ if (!node.file) {
77
+ errors.push('Missing required field: file');
78
+ }
79
+ return errors;
80
+ }
81
+ }
@@ -1,24 +1,56 @@
1
1
  /**
2
2
  * ClassNode - contract for CLASS node
3
+ *
4
+ * Supports two creation modes:
5
+ * 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
6
+ * 2. create() - LEGACY: Uses line-based IDs for backward compatibility
7
+ *
8
+ * Semantic ID format: {file}->{scope_path}->CLASS->{name}
9
+ * Example: src/models/User.js->global->CLASS->User
3
10
  */
4
11
  import type { BaseNodeRecord } from '@grafema/types';
12
+ import { type ScopeContext, type Location } from '../SemanticId.js';
5
13
  interface ClassNodeRecord extends BaseNodeRecord {
6
14
  type: 'CLASS';
7
15
  column: number;
8
16
  exported: boolean;
9
17
  superClass?: string;
10
18
  methods: string[];
19
+ isInstantiationRef?: boolean;
11
20
  }
12
21
  interface ClassNodeOptions {
13
22
  exported?: boolean;
14
23
  superClass?: string;
15
24
  methods?: string[];
25
+ isInstantiationRef?: boolean;
26
+ }
27
+ /**
28
+ * Options for createWithContext
29
+ */
30
+ interface ClassContextOptions {
31
+ exported?: boolean;
32
+ superClass?: string;
33
+ methods?: string[];
34
+ isInstantiationRef?: boolean;
16
35
  }
17
36
  export declare class ClassNode {
18
37
  static readonly TYPE: "CLASS";
19
- static readonly REQUIRED: readonly ["name", "file", "line"];
20
- static readonly OPTIONAL: readonly ["column", "exported", "superClass", "methods"];
38
+ static readonly REQUIRED: readonly ["name", "file", "line", "column"];
39
+ static readonly OPTIONAL: readonly ["exported", "superClass", "methods", "isInstantiationRef"];
21
40
  static create(name: string, file: string, line: number, column: number, options?: ClassNodeOptions): ClassNodeRecord;
41
+ /**
42
+ * Create CLASS node with semantic ID (NEW API)
43
+ *
44
+ * Uses ScopeContext from ScopeTracker for stable identifiers.
45
+ * Class names are unique within scope, so no discriminator needed.
46
+ *
47
+ * @param name - Class name
48
+ * @param context - Scope context from ScopeTracker.getContext()
49
+ * @param location - Source location { line, column }
50
+ * @param options - Optional class properties
51
+ * @returns ClassNodeRecord with semantic ID
52
+ */
53
+ static createWithContext(name: string, context: ScopeContext, location: Partial<Location>, options?: ClassContextOptions): ClassNodeRecord;
22
54
  static validate(node: ClassNodeRecord): string[];
23
55
  }
24
56
  export type { ClassNodeRecord };
@@ -1 +1 @@
1
- {"version":3,"file":"ClassNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ClassNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,eAAgB,SAAQ,cAAc;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAExC,MAAM,CAAC,QAAQ,CAAC,QAAQ,oCAAqC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,2DAA4D;IAEpF,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,eAAe;IAkBlB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE;CAgBjD;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"ClassNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ClassNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvF,UAAU,eAAgB,SAAQ,cAAc;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAExC,MAAM,CAAC,QAAQ,CAAC,QAAQ,8CAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,QAAQ,uEAAwE;IAEhG,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,eAAe;IAoBlB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,GAAE,mBAAwB,GAChC,eAAe;IAwBlB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE;CAgBjD;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -1,10 +1,18 @@
1
1
  /**
2
2
  * ClassNode - contract for CLASS node
3
+ *
4
+ * Supports two creation modes:
5
+ * 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
6
+ * 2. create() - LEGACY: Uses line-based IDs for backward compatibility
7
+ *
8
+ * Semantic ID format: {file}->{scope_path}->CLASS->{name}
9
+ * Example: src/models/User.js->global->CLASS->User
3
10
  */
11
+ import { computeSemanticId } from '../SemanticId.js';
4
12
  export class ClassNode {
5
13
  static TYPE = 'CLASS';
6
- static REQUIRED = ['name', 'file', 'line'];
7
- static OPTIONAL = ['column', 'exported', 'superClass', 'methods'];
14
+ static REQUIRED = ['name', 'file', 'line', 'column'];
15
+ static OPTIONAL = ['exported', 'superClass', 'methods', 'isInstantiationRef'];
8
16
  static create(name, file, line, column, options = {}) {
9
17
  if (!name)
10
18
  throw new Error('ClassNode.create: name is required');
@@ -12,16 +20,56 @@ export class ClassNode {
12
20
  throw new Error('ClassNode.create: file is required');
13
21
  if (!line)
14
22
  throw new Error('ClassNode.create: line is required');
23
+ if (column === undefined)
24
+ throw new Error('ClassNode.create: column is required');
15
25
  return {
16
26
  id: `${file}:CLASS:${name}:${line}`,
17
27
  type: this.TYPE,
18
28
  name,
19
29
  file,
20
30
  line,
21
- column: column || 0,
31
+ column,
22
32
  exported: options.exported || false,
23
33
  superClass: options.superClass,
24
- methods: options.methods || []
34
+ methods: options.methods || [],
35
+ ...(options.isInstantiationRef !== undefined && { isInstantiationRef: options.isInstantiationRef })
36
+ };
37
+ }
38
+ /**
39
+ * Create CLASS node with semantic ID (NEW API)
40
+ *
41
+ * Uses ScopeContext from ScopeTracker for stable identifiers.
42
+ * Class names are unique within scope, so no discriminator needed.
43
+ *
44
+ * @param name - Class name
45
+ * @param context - Scope context from ScopeTracker.getContext()
46
+ * @param location - Source location { line, column }
47
+ * @param options - Optional class properties
48
+ * @returns ClassNodeRecord with semantic ID
49
+ */
50
+ static createWithContext(name, context, location, options = {}) {
51
+ // Validate required fields
52
+ if (!name)
53
+ throw new Error('ClassNode.createWithContext: name is required');
54
+ if (!context.file)
55
+ throw new Error('ClassNode.createWithContext: file is required');
56
+ if (location.line === undefined)
57
+ throw new Error('ClassNode.createWithContext: line is required');
58
+ if (location.column === undefined)
59
+ throw new Error('ClassNode.createWithContext: column is required');
60
+ // Compute semantic ID
61
+ const id = computeSemanticId(this.TYPE, name, context);
62
+ return {
63
+ id,
64
+ type: this.TYPE,
65
+ name,
66
+ file: context.file,
67
+ line: location.line,
68
+ column: location.column,
69
+ exported: options.exported || false,
70
+ superClass: options.superClass,
71
+ methods: options.methods || [],
72
+ ...(options.isInstantiationRef !== undefined && { isInstantiationRef: options.isInstantiationRef })
25
73
  };
26
74
  }
27
75
  static validate(node) {
@@ -15,8 +15,8 @@ interface ConstantNodeOptions {
15
15
  }
16
16
  export declare class ConstantNode {
17
17
  static readonly TYPE: "CONSTANT";
18
- static readonly REQUIRED: readonly ["name", "file", "line"];
19
- static readonly OPTIONAL: readonly ["column", "value", "parentScopeId"];
18
+ static readonly REQUIRED: readonly ["name", "file", "line", "column"];
19
+ static readonly OPTIONAL: readonly ["value", "parentScopeId"];
20
20
  static create(name: string, file: string, line: number, column: number, options?: ConstantNodeOptions): ConstantNodeRecord;
21
21
  static validate(node: ConstantNodeRecord): string[];
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConstantNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ConstantNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,kBAAmB,SAAQ,cAAc;IACjD,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAE3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,oCAAqC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,gDAAiD;IAEzE,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,kBAAkB;IAoBrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,EAAE;CASpD;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"ConstantNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ConstantNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,kBAAmB,SAAQ,cAAc;IACjD,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAE3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,8CAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAuC;IAE/D,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,kBAAkB;IAqBrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,EAAE;CASpD;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
@@ -3,8 +3,8 @@
3
3
  */
4
4
  export class ConstantNode {
5
5
  static TYPE = 'CONSTANT';
6
- static REQUIRED = ['name', 'file', 'line'];
7
- static OPTIONAL = ['column', 'value', 'parentScopeId'];
6
+ static REQUIRED = ['name', 'file', 'line', 'column'];
7
+ static OPTIONAL = ['value', 'parentScopeId'];
8
8
  static create(name, file, line, column, options = {}) {
9
9
  if (!name)
10
10
  throw new Error('ConstantNode.create: name is required');
@@ -12,15 +12,17 @@ export class ConstantNode {
12
12
  throw new Error('ConstantNode.create: file is required');
13
13
  if (line === undefined)
14
14
  throw new Error('ConstantNode.create: line is required');
15
+ if (column === undefined)
16
+ throw new Error('ConstantNode.create: column is required');
15
17
  const counter = options.counter !== undefined ? `:${options.counter}` : '';
16
- const id = `${file}:CONSTANT:${name}:${line}:${column || 0}${counter}`;
18
+ const id = `${file}:CONSTANT:${name}:${line}:${column}${counter}`;
17
19
  return {
18
20
  id,
19
21
  type: this.TYPE,
20
22
  name,
21
23
  file,
22
24
  line,
23
- column: column || 0,
25
+ column,
24
26
  value: options.value,
25
27
  parentScopeId: options.parentScopeId
26
28
  };
@@ -0,0 +1,51 @@
1
+ /**
2
+ * ConstructorCallNode - contract for CONSTRUCTOR_CALL node
3
+ *
4
+ * Represents a `new ClassName()` expression in code.
5
+ * Used for data flow: VARIABLE --ASSIGNED_FROM--> CONSTRUCTOR_CALL
6
+ *
7
+ * ID format: {file}:CONSTRUCTOR_CALL:{className}:{line}:{column}
8
+ * Example: src/app.js:CONSTRUCTOR_CALL:Date:42:10
9
+ */
10
+ import type { BaseNodeRecord } from '@grafema/types';
11
+ interface ConstructorCallNodeRecord extends BaseNodeRecord {
12
+ type: 'CONSTRUCTOR_CALL';
13
+ className: string;
14
+ isBuiltin: boolean;
15
+ column: number;
16
+ }
17
+ interface ConstructorCallNodeOptions {
18
+ counter?: number;
19
+ }
20
+ export declare class ConstructorCallNode {
21
+ static readonly TYPE: "CONSTRUCTOR_CALL";
22
+ static readonly REQUIRED: readonly ["name", "file", "line", "column", "className", "isBuiltin"];
23
+ static readonly OPTIONAL: readonly [];
24
+ /**
25
+ * Check if a class name is a built-in JavaScript constructor
26
+ */
27
+ static isBuiltinConstructor(className: string): boolean;
28
+ /**
29
+ * Generate ID for CONSTRUCTOR_CALL node
30
+ *
31
+ * @param className - Name of the constructor
32
+ * @param file - File path
33
+ * @param line - Line number
34
+ * @param column - Column position
35
+ * @param options - Optional counter for disambiguation
36
+ */
37
+ static generateId(className: string, file: string, line: number, column: number, options?: ConstructorCallNodeOptions): string;
38
+ /**
39
+ * Create CONSTRUCTOR_CALL node
40
+ *
41
+ * @param className - Name of the constructor (e.g., 'Date', 'MyClass')
42
+ * @param file - File path
43
+ * @param line - Line number
44
+ * @param column - Column position
45
+ * @param options - Optional counter for disambiguation
46
+ */
47
+ static create(className: string, file: string, line: number, column: number, options?: ConstructorCallNodeOptions): ConstructorCallNodeRecord;
48
+ static validate(node: ConstructorCallNodeRecord): string[];
49
+ }
50
+ export type { ConstructorCallNodeRecord };
51
+ //# sourceMappingURL=ConstructorCallNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConstructorCallNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ConstructorCallNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,yBAA0B,SAAQ,cAAc;IACxD,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAwGD,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;IAEnD,MAAM,CAAC,QAAQ,CAAC,QAAQ,wEAAyE;IACjG,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAe;IAEvC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIvD;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,0BAA+B,GACvC,MAAM;IAKT;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,0BAA+B,GACvC,yBAAyB;IAqB5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,EAAE;CAoB3D;AAED,YAAY,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * ConstructorCallNode - contract for CONSTRUCTOR_CALL node
3
+ *
4
+ * Represents a `new ClassName()` expression in code.
5
+ * Used for data flow: VARIABLE --ASSIGNED_FROM--> CONSTRUCTOR_CALL
6
+ *
7
+ * ID format: {file}:CONSTRUCTOR_CALL:{className}:{line}:{column}
8
+ * Example: src/app.js:CONSTRUCTOR_CALL:Date:42:10
9
+ */
10
+ /**
11
+ * List of built-in JavaScript constructors
12
+ * These are globally available and don't require imports
13
+ */
14
+ const BUILTIN_CONSTRUCTORS = new Set([
15
+ // Fundamental objects
16
+ 'Object',
17
+ 'Function',
18
+ 'Boolean',
19
+ 'Symbol',
20
+ // Error types
21
+ 'Error',
22
+ 'EvalError',
23
+ 'RangeError',
24
+ 'ReferenceError',
25
+ 'SyntaxError',
26
+ 'TypeError',
27
+ 'URIError',
28
+ 'AggregateError',
29
+ // Numbers and dates
30
+ 'Number',
31
+ 'BigInt',
32
+ 'Math',
33
+ 'Date',
34
+ // Text processing
35
+ 'String',
36
+ 'RegExp',
37
+ // Indexed collections
38
+ 'Array',
39
+ 'Int8Array',
40
+ 'Uint8Array',
41
+ 'Uint8ClampedArray',
42
+ 'Int16Array',
43
+ 'Uint16Array',
44
+ 'Int32Array',
45
+ 'Uint32Array',
46
+ 'Float32Array',
47
+ 'Float64Array',
48
+ 'BigInt64Array',
49
+ 'BigUint64Array',
50
+ // Keyed collections
51
+ 'Map',
52
+ 'Set',
53
+ 'WeakMap',
54
+ 'WeakSet',
55
+ 'WeakRef',
56
+ // Structured data
57
+ 'ArrayBuffer',
58
+ 'SharedArrayBuffer',
59
+ 'DataView',
60
+ 'Atomics',
61
+ 'JSON',
62
+ // Control abstraction
63
+ 'Promise',
64
+ 'Generator',
65
+ 'GeneratorFunction',
66
+ 'AsyncFunction',
67
+ 'AsyncGenerator',
68
+ 'AsyncGeneratorFunction',
69
+ // Reflection
70
+ 'Reflect',
71
+ 'Proxy',
72
+ // Internationalization
73
+ 'Intl',
74
+ // Web APIs (commonly used)
75
+ 'URL',
76
+ 'URLSearchParams',
77
+ 'Headers',
78
+ 'Request',
79
+ 'Response',
80
+ 'FormData',
81
+ 'Blob',
82
+ 'File',
83
+ 'FileReader',
84
+ 'AbortController',
85
+ 'TextEncoder',
86
+ 'TextDecoder',
87
+ 'Event',
88
+ 'CustomEvent',
89
+ 'EventTarget',
90
+ 'WebSocket',
91
+ 'Worker',
92
+ 'MessageChannel',
93
+ 'MessagePort',
94
+ 'BroadcastChannel',
95
+ 'ReadableStream',
96
+ 'WritableStream',
97
+ 'TransformStream',
98
+ 'CompressionStream',
99
+ 'DecompressionStream',
100
+ ]);
101
+ export class ConstructorCallNode {
102
+ static TYPE = 'CONSTRUCTOR_CALL';
103
+ static REQUIRED = ['name', 'file', 'line', 'column', 'className', 'isBuiltin'];
104
+ static OPTIONAL = [];
105
+ /**
106
+ * Check if a class name is a built-in JavaScript constructor
107
+ */
108
+ static isBuiltinConstructor(className) {
109
+ return BUILTIN_CONSTRUCTORS.has(className);
110
+ }
111
+ /**
112
+ * Generate ID for CONSTRUCTOR_CALL node
113
+ *
114
+ * @param className - Name of the constructor
115
+ * @param file - File path
116
+ * @param line - Line number
117
+ * @param column - Column position
118
+ * @param options - Optional counter for disambiguation
119
+ */
120
+ static generateId(className, file, line, column, options = {}) {
121
+ const counter = options.counter !== undefined ? `:${options.counter}` : '';
122
+ return `${file}:CONSTRUCTOR_CALL:${className}:${line}:${column}${counter}`;
123
+ }
124
+ /**
125
+ * Create CONSTRUCTOR_CALL node
126
+ *
127
+ * @param className - Name of the constructor (e.g., 'Date', 'MyClass')
128
+ * @param file - File path
129
+ * @param line - Line number
130
+ * @param column - Column position
131
+ * @param options - Optional counter for disambiguation
132
+ */
133
+ static create(className, file, line, column, options = {}) {
134
+ if (!className)
135
+ throw new Error('ConstructorCallNode.create: className is required');
136
+ if (!file)
137
+ throw new Error('ConstructorCallNode.create: file is required');
138
+ if (line === undefined)
139
+ throw new Error('ConstructorCallNode.create: line is required');
140
+ if (column === undefined)
141
+ throw new Error('ConstructorCallNode.create: column is required');
142
+ const id = this.generateId(className, file, line, column, options);
143
+ const isBuiltin = this.isBuiltinConstructor(className);
144
+ return {
145
+ id,
146
+ type: this.TYPE,
147
+ name: `new ${className}()`,
148
+ className,
149
+ isBuiltin,
150
+ file,
151
+ line,
152
+ column
153
+ };
154
+ }
155
+ static validate(node) {
156
+ const errors = [];
157
+ if (node.type !== this.TYPE) {
158
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
159
+ }
160
+ const nodeRecord = node;
161
+ for (const field of this.REQUIRED) {
162
+ if (nodeRecord[field] === undefined || nodeRecord[field] === null) {
163
+ errors.push(`Missing required field: ${field}`);
164
+ }
165
+ }
166
+ if (typeof node.isBuiltin !== 'boolean') {
167
+ errors.push('isBuiltin must be a boolean');
168
+ }
169
+ return errors;
170
+ }
171
+ }
@@ -4,6 +4,7 @@
4
4
  import type { BaseNodeRecord } from '@grafema/types';
5
5
  interface DatabaseQueryNodeRecord extends BaseNodeRecord {
6
6
  type: 'DATABASE_QUERY';
7
+ column: number;
7
8
  query?: string;
8
9
  operation: string;
9
10
  parentScopeId?: string;
@@ -13,9 +14,9 @@ interface DatabaseQueryNodeOptions {
13
14
  }
14
15
  export declare class DatabaseQueryNode {
15
16
  static readonly TYPE: "DATABASE_QUERY";
16
- static readonly REQUIRED: readonly ["name", "file", "line"];
17
+ static readonly REQUIRED: readonly ["name", "file", "line", "column"];
17
18
  static readonly OPTIONAL: readonly ["query", "operation", "parentScopeId"];
18
- static create(query: string | undefined, operation: string | undefined, file: string, line: number, options?: DatabaseQueryNodeOptions): DatabaseQueryNodeRecord;
19
+ static create(query: string | undefined, operation: string | undefined, file: string, line: number, column: number, options?: DatabaseQueryNodeOptions): DatabaseQueryNodeRecord;
19
20
  static validate(node: DatabaseQueryNodeRecord): string[];
20
21
  }
21
22
  export type { DatabaseQueryNodeRecord };
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseQueryNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/DatabaseQueryNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,uBAAwB,SAAQ,cAAc;IACtD,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,wBAAwB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAEjD,MAAM,CAAC,QAAQ,CAAC,QAAQ,oCAAqC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,mDAAoD;IAE5E,MAAM,CAAC,MAAM,CACX,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,wBAA6B,GACrC,uBAAuB;IAmB1B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,EAAE;CASzD;AAED,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"DatabaseQueryNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/DatabaseQueryNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,uBAAwB,SAAQ,cAAc;IACtD,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,wBAAwB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAEjD,MAAM,CAAC,QAAQ,CAAC,QAAQ,8CAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,QAAQ,mDAAoD;IAE5E,MAAM,CAAC,MAAM,CACX,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,wBAA6B,GACrC,uBAAuB;IAqB1B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,EAAE;CASzD;AAED,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
@@ -3,13 +3,15 @@
3
3
  */
4
4
  export class DatabaseQueryNode {
5
5
  static TYPE = 'DATABASE_QUERY';
6
- static REQUIRED = ['name', 'file', 'line'];
6
+ static REQUIRED = ['name', 'file', 'line', 'column'];
7
7
  static OPTIONAL = ['query', 'operation', 'parentScopeId'];
8
- static create(query, operation, file, line, options = {}) {
8
+ static create(query, operation, file, line, column, options = {}) {
9
9
  if (!file)
10
10
  throw new Error('DatabaseQueryNode.create: file is required');
11
11
  if (line === undefined)
12
12
  throw new Error('DatabaseQueryNode.create: line is required');
13
+ if (column === undefined)
14
+ throw new Error('DatabaseQueryNode.create: column is required');
13
15
  const name = query || `${operation || 'QUERY'}`;
14
16
  const id = `${file}:DATABASE_QUERY:${name}:${line}`;
15
17
  return {
@@ -20,6 +22,7 @@ export class DatabaseQueryNode {
20
22
  operation: operation || 'UNKNOWN',
21
23
  file,
22
24
  line,
25
+ column,
23
26
  parentScopeId: options.parentScopeId
24
27
  };
25
28
  }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * DecoratorNode - contract for DECORATOR node
3
+ *
4
+ * Represents TypeScript/JavaScript decorators applied to
5
+ * classes, methods, properties, or parameters.
6
+ *
7
+ * ID format: {file}:DECORATOR:{name}:{line}:{column}
8
+ * Example: /src/services/UserService.ts:DECORATOR:Injectable:5:0
9
+ */
10
+ import type { BaseNodeRecord } from '@grafema/types';
11
+ type DecoratorTargetType = 'CLASS' | 'METHOD' | 'PROPERTY' | 'PARAMETER';
12
+ interface DecoratorNodeRecord extends BaseNodeRecord {
13
+ type: 'DECORATOR';
14
+ column: number;
15
+ arguments: unknown[];
16
+ targetId: string;
17
+ targetType: DecoratorTargetType;
18
+ }
19
+ interface DecoratorNodeOptions {
20
+ arguments?: unknown[];
21
+ }
22
+ export declare class DecoratorNode {
23
+ static readonly TYPE: "DECORATOR";
24
+ static readonly REQUIRED: readonly ["name", "file", "line", "column", "targetId", "targetType"];
25
+ static readonly OPTIONAL: readonly ["arguments"];
26
+ /**
27
+ * Create DECORATOR node
28
+ *
29
+ * @param name - Decorator name
30
+ * @param file - File path
31
+ * @param line - Line number
32
+ * @param column - Column position
33
+ * @param targetId - ID of decorated element
34
+ * @param targetType - Type of decorated element
35
+ * @param options - Optional decorator properties
36
+ * @returns DecoratorNodeRecord
37
+ */
38
+ static create(name: string, file: string, line: number, column: number, targetId: string, targetType: DecoratorTargetType, options?: DecoratorNodeOptions): DecoratorNodeRecord;
39
+ static validate(node: DecoratorNodeRecord): string[];
40
+ }
41
+ export type { DecoratorNodeRecord, DecoratorTargetType };
42
+ //# sourceMappingURL=DecoratorNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecoratorNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/DecoratorNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,KAAK,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzE,UAAU,mBAAoB,SAAQ,cAAc;IAClD,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAED,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;CACvB;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IAE5C,MAAM,CAAC,QAAQ,CAAC,QAAQ,wEAAyE;IACjG,MAAM,CAAC,QAAQ,CAAC,QAAQ,yBAA0B;IAElD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE,oBAAyB,GACjC,mBAAmB;IAqBtB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAgBrD;AAED,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC"}