@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
@@ -1,8 +1,16 @@
1
1
  /**
2
2
  * VariableDeclarationNode - contract for VARIABLE_DECLARATION node
3
+ *
4
+ * Supports two creation modes:
5
+ * 1. createWithContext() - NEW: Uses ScopeContext + Location for semantic IDs
6
+ * 2. create() - LEGACY: Uses line-based IDs for backward compatibility
7
+ *
8
+ * Semantic ID format: {file}->{scope_path}->VARIABLE->{name}
9
+ * Example: src/app.js->handler->VARIABLE->result
3
10
  */
4
11
 
5
12
  import type { BaseNodeRecord } from '@grafema/types';
13
+ import { computeSemanticId, type ScopeContext, type Location } from '../SemanticId.js';
6
14
 
7
15
  interface VariableDeclarationNodeRecord extends BaseNodeRecord {
8
16
  type: 'VARIABLE_DECLARATION';
@@ -15,11 +23,18 @@ interface VariableDeclarationNodeOptions {
15
23
  counter?: number;
16
24
  }
17
25
 
26
+ /**
27
+ * Options for createWithContext
28
+ */
29
+ interface VariableContextOptions {
30
+ parentScopeId?: string;
31
+ }
32
+
18
33
  export class VariableDeclarationNode {
19
34
  static readonly TYPE = 'VARIABLE_DECLARATION' as const;
20
35
 
21
- static readonly REQUIRED = ['name', 'file', 'line'] as const;
22
- static readonly OPTIONAL = ['column', 'parentScopeId'] as const;
36
+ static readonly REQUIRED = ['name', 'file', 'line', 'column'] as const;
37
+ static readonly OPTIONAL = ['parentScopeId'] as const;
23
38
 
24
39
  static create(
25
40
  name: string,
@@ -31,9 +46,10 @@ export class VariableDeclarationNode {
31
46
  if (!name) throw new Error('VariableDeclarationNode.create: name is required');
32
47
  if (!file) throw new Error('VariableDeclarationNode.create: file is required');
33
48
  if (line === undefined) throw new Error('VariableDeclarationNode.create: line is required');
49
+ if (column === undefined) throw new Error('VariableDeclarationNode.create: column is required');
34
50
 
35
51
  const counter = options.counter !== undefined ? `:${options.counter}` : '';
36
- const id = `${file}:VARIABLE_DECLARATION:${name}:${line}:${column || 0}${counter}`;
52
+ const id = `${file}:VARIABLE_DECLARATION:${name}:${line}:${column}${counter}`;
37
53
 
38
54
  return {
39
55
  id,
@@ -41,7 +57,45 @@ export class VariableDeclarationNode {
41
57
  name,
42
58
  file,
43
59
  line,
44
- column: column || 0,
60
+ column,
61
+ parentScopeId: options.parentScopeId
62
+ };
63
+ }
64
+
65
+ /**
66
+ * Create VARIABLE_DECLARATION node with semantic ID (NEW API)
67
+ *
68
+ * Uses ScopeContext from ScopeTracker for stable identifiers.
69
+ * Variable names are unique within scope (handles shadowing naturally).
70
+ *
71
+ * @param name - Variable name
72
+ * @param context - Scope context from ScopeTracker.getContext()
73
+ * @param location - Source location { line, column }
74
+ * @param options - Optional variable properties
75
+ * @returns VariableDeclarationNodeRecord with semantic ID
76
+ */
77
+ static createWithContext(
78
+ name: string,
79
+ context: ScopeContext,
80
+ location: Partial<Location>,
81
+ options: VariableContextOptions = {}
82
+ ): VariableDeclarationNodeRecord {
83
+ // Validate required fields
84
+ if (!name) throw new Error('VariableDeclarationNode.createWithContext: name is required');
85
+ if (!context.file) throw new Error('VariableDeclarationNode.createWithContext: file is required');
86
+ if (location.line === undefined) throw new Error('VariableDeclarationNode.createWithContext: line is required');
87
+ if (location.column === undefined) throw new Error('VariableDeclarationNode.createWithContext: column is required');
88
+
89
+ // Compute semantic ID using 'VARIABLE' type for cleaner IDs
90
+ const id = computeSemanticId('VARIABLE', name, context);
91
+
92
+ return {
93
+ id,
94
+ type: this.TYPE,
95
+ name,
96
+ file: context.file,
97
+ line: location.line,
98
+ column: location.column,
45
99
  parentScopeId: options.parentScopeId
46
100
  };
47
101
  }
@@ -11,20 +11,37 @@ export { ClassNode, type ClassNodeRecord } from './ClassNode.js';
11
11
  export { MethodNode, type MethodNodeRecord, type MethodKind } from './MethodNode.js';
12
12
  export { ParameterNode, type ParameterNodeRecord } from './ParameterNode.js';
13
13
  export { ScopeNode, type ScopeNodeRecord } from './ScopeNode.js';
14
+ export { BranchNode, type BranchNodeRecord } from './BranchNode.js';
15
+ export { CaseNode, type CaseNodeRecord } from './CaseNode.js';
14
16
 
15
17
  // Call/reference nodes
16
18
  export { CallSiteNode, type CallSiteNodeRecord } from './CallSiteNode.js';
17
19
  export { MethodCallNode, type MethodCallNodeRecord } from './MethodCallNode.js';
20
+ export { ConstructorCallNode, type ConstructorCallNodeRecord } from './ConstructorCallNode.js';
18
21
  export { VariableDeclarationNode, type VariableDeclarationNodeRecord } from './VariableDeclarationNode.js';
19
22
  export { ConstantNode, type ConstantNodeRecord } from './ConstantNode.js';
20
23
  export { LiteralNode, type LiteralNodeRecord } from './LiteralNode.js';
24
+ export { ObjectLiteralNode, type ObjectLiteralNodeRecord, type ObjectLiteralNodeOptions } from './ObjectLiteralNode.js';
25
+ export { ArrayLiteralNode, type ArrayLiteralNodeRecord, type ArrayLiteralNodeOptions } from './ArrayLiteralNode.js';
21
26
 
22
27
  // Import/Export nodes
23
- export { ImportNode, type ImportNodeRecord, type ImportKind } from './ImportNode.js';
28
+ export { ImportNode, type ImportNodeRecord, type ImportBinding, type ImportType } from './ImportNode.js';
24
29
  export { ExportNode, type ExportNodeRecord, type ExportKind } from './ExportNode.js';
30
+ export { ExternalModuleNode, type ExternalModuleNodeRecord } from './ExternalModuleNode.js';
31
+
32
+ // TypeScript declaration nodes
33
+ export { InterfaceNode, type InterfaceNodeRecord, type InterfacePropertyRecord } from './InterfaceNode.js';
34
+ export { TypeNode, type TypeNodeRecord } from './TypeNode.js';
35
+ export { EnumNode, type EnumNodeRecord, type EnumMemberRecord } from './EnumNode.js';
36
+ export { DecoratorNode, type DecoratorNodeRecord, type DecoratorTargetType } from './DecoratorNode.js';
37
+
38
+ // Expression nodes
39
+ export { ExpressionNode, type ExpressionNodeRecord, type ExpressionNodeOptions } from './ExpressionNode.js';
40
+ export { ArgumentExpressionNode, type ArgumentExpressionNodeRecord, type ArgumentExpressionNodeOptions } from './ArgumentExpressionNode.js';
25
41
 
26
42
  // External/IO nodes
27
43
  export { ExternalStdioNode, type ExternalStdioNodeRecord } from './ExternalStdioNode.js';
44
+ export { NetworkRequestNode, type NetworkRequestNodeRecord } from './NetworkRequestNode.js';
28
45
  export { EventListenerNode, type EventListenerNodeRecord } from './EventListenerNode.js';
29
46
  export { HttpRequestNode, type HttpRequestNodeRecord } from './HttpRequestNode.js';
30
47
  export { DatabaseQueryNode, type DatabaseQueryNodeRecord } from './DatabaseQueryNode.js';
@@ -32,6 +49,9 @@ export { DatabaseQueryNode, type DatabaseQueryNodeRecord } from './DatabaseQuery
32
49
  // Guarantee nodes (contract-based)
33
50
  export { GuaranteeNode, type GuaranteeNodeRecord, type GuaranteePriority, type GuaranteeStatus, type GuaranteeType } from './GuaranteeNode.js';
34
51
 
52
+ // Issue nodes (detected problems)
53
+ export { IssueNode, type IssueNodeRecord, type IssueSeverity, type IssueType } from './IssueNode.js';
54
+
35
55
  // Node type constants and helpers
36
56
  export {
37
57
  NODE_TYPE,
@@ -0,0 +1,124 @@
1
+ /**
2
+ * BuiltinRegistry - Registry for Node.js builtin functions (REG-218)
3
+ *
4
+ * Provides lookup for Node.js builtin modules and functions.
5
+ * Used by NodejsBuiltinsResolver for lazy EXTERNAL_FUNCTION node creation.
6
+ *
7
+ * Usage:
8
+ * const registry = new BuiltinRegistry();
9
+ * if (registry.isBuiltinModule('fs')) {
10
+ * const funcDef = registry.getFunction('fs', 'readFile');
11
+ * if (funcDef) {
12
+ * // Create EXTERNAL_FUNCTION node with metadata
13
+ * }
14
+ * }
15
+ */
16
+
17
+ import type { BuiltinFunctionDef, BuiltinModuleDef } from './types.js';
18
+ import { ALL_BUILTIN_MODULES } from './definitions.js';
19
+
20
+ export class BuiltinRegistry {
21
+ /** Map of module name to module definition */
22
+ private modules: Map<string, BuiltinModuleDef>;
23
+
24
+ /** Map of "module:funcName" to function definition for fast lookup */
25
+ private functions: Map<string, BuiltinFunctionDef>;
26
+
27
+ constructor(modules: BuiltinModuleDef[] = ALL_BUILTIN_MODULES) {
28
+ this.modules = new Map();
29
+ this.functions = new Map();
30
+
31
+ for (const mod of modules) {
32
+ this.modules.set(mod.name, mod);
33
+
34
+ for (const func of mod.functions) {
35
+ const key = `${mod.name}:${func.name}`;
36
+ this.functions.set(key, func);
37
+ }
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Check if module is a Node.js builtin module.
43
+ * Handles node: prefix automatically.
44
+ *
45
+ * @param moduleName - Module name (e.g., 'fs', 'node:fs', 'fs/promises')
46
+ * @returns true if module is a known builtin
47
+ */
48
+ isBuiltinModule(moduleName: string): boolean {
49
+ const normalized = this.normalizeModule(moduleName);
50
+ return this.modules.has(normalized);
51
+ }
52
+
53
+ /**
54
+ * Normalize module name by stripping node: prefix.
55
+ *
56
+ * @param moduleName - Module name (e.g., 'node:fs', 'fs')
57
+ * @returns Normalized module name (e.g., 'fs')
58
+ */
59
+ normalizeModule(moduleName: string): string {
60
+ if (moduleName.startsWith('node:')) {
61
+ return moduleName.slice(5); // Remove 'node:' prefix
62
+ }
63
+ return moduleName;
64
+ }
65
+
66
+ /**
67
+ * Get function definition by module and function name.
68
+ *
69
+ * @param module - Module name (e.g., 'fs', 'node:fs')
70
+ * @param funcName - Function name (e.g., 'readFile')
71
+ * @returns Function definition or null if not found
72
+ */
73
+ getFunction(module: string, funcName: string): BuiltinFunctionDef | null {
74
+ const normalizedModule = this.normalizeModule(module);
75
+ const key = `${normalizedModule}:${funcName}`;
76
+ return this.functions.get(key) || null;
77
+ }
78
+
79
+ /**
80
+ * Check if function is a known builtin function.
81
+ *
82
+ * @param module - Module name
83
+ * @param funcName - Function name
84
+ * @returns true if function is known
85
+ */
86
+ isKnownFunction(module: string, funcName: string): boolean {
87
+ return this.getFunction(module, funcName) !== null;
88
+ }
89
+
90
+ /**
91
+ * Get all functions for a module.
92
+ *
93
+ * @param module - Module name
94
+ * @returns Array of function definitions (empty if module not found)
95
+ */
96
+ getAllFunctions(module: string): BuiltinFunctionDef[] {
97
+ const normalizedModule = this.normalizeModule(module);
98
+ const mod = this.modules.get(normalizedModule);
99
+ return mod ? mod.functions : [];
100
+ }
101
+
102
+ /**
103
+ * List all supported builtin module names.
104
+ *
105
+ * @returns Array of module names
106
+ */
107
+ listModules(): string[] {
108
+ return Array.from(this.modules.keys());
109
+ }
110
+
111
+ /**
112
+ * Create node ID for EXTERNAL_FUNCTION node.
113
+ *
114
+ * Format: EXTERNAL_FUNCTION:{module}.{funcName}
115
+ *
116
+ * @param module - Module name (will be normalized)
117
+ * @param funcName - Function name
118
+ * @returns Node ID string
119
+ */
120
+ createNodeId(module: string, funcName: string): string {
121
+ const normalizedModule = this.normalizeModule(module);
122
+ return `EXTERNAL_FUNCTION:${normalizedModule}.${funcName}`;
123
+ }
124
+ }
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Node.js Builtin Definitions (REG-218)
3
+ *
4
+ * Tier 1 builtin module definitions:
5
+ * - fs (filesystem)
6
+ * - fs/promises (async filesystem)
7
+ * - path (path manipulation)
8
+ * - http/https (network)
9
+ * - crypto (cryptography)
10
+ * - child_process (process execution)
11
+ *
12
+ * Additional modules (Tier 2):
13
+ * - url, util, os, events, stream, buffer, worker_threads
14
+ */
15
+
16
+ import type { BuiltinModuleDef } from './types.js';
17
+
18
+ /**
19
+ * Tier 1: Core Node.js modules (most commonly used)
20
+ */
21
+ export const TIER_1_MODULES: BuiltinModuleDef[] = [
22
+ // fs - Filesystem operations
23
+ {
24
+ name: 'fs',
25
+ functions: [
26
+ { name: 'readFile', module: 'fs', security: 'file-io', pure: false },
27
+ { name: 'readFileSync', module: 'fs', security: 'file-io', pure: false },
28
+ { name: 'writeFile', module: 'fs', security: 'file-io', pure: false },
29
+ { name: 'writeFileSync', module: 'fs', security: 'file-io', pure: false },
30
+ { name: 'appendFile', module: 'fs', security: 'file-io', pure: false },
31
+ { name: 'appendFileSync', module: 'fs', security: 'file-io', pure: false },
32
+ { name: 'readdir', module: 'fs', security: 'file-io', pure: false },
33
+ { name: 'readdirSync', module: 'fs', security: 'file-io', pure: false },
34
+ { name: 'mkdir', module: 'fs', security: 'file-io', pure: false },
35
+ { name: 'mkdirSync', module: 'fs', security: 'file-io', pure: false },
36
+ { name: 'rmdir', module: 'fs', security: 'file-io', pure: false },
37
+ { name: 'rmdirSync', module: 'fs', security: 'file-io', pure: false },
38
+ { name: 'rm', module: 'fs', security: 'file-io', pure: false },
39
+ { name: 'rmSync', module: 'fs', security: 'file-io', pure: false },
40
+ { name: 'unlink', module: 'fs', security: 'file-io', pure: false },
41
+ { name: 'unlinkSync', module: 'fs', security: 'file-io', pure: false },
42
+ { name: 'stat', module: 'fs', security: 'file-io', pure: false },
43
+ { name: 'statSync', module: 'fs', security: 'file-io', pure: false },
44
+ { name: 'lstat', module: 'fs', security: 'file-io', pure: false },
45
+ { name: 'lstatSync', module: 'fs', security: 'file-io', pure: false },
46
+ { name: 'access', module: 'fs', security: 'file-io', pure: false },
47
+ { name: 'accessSync', module: 'fs', security: 'file-io', pure: false },
48
+ { name: 'chmod', module: 'fs', security: 'file-io', pure: false },
49
+ { name: 'chmodSync', module: 'fs', security: 'file-io', pure: false },
50
+ { name: 'chown', module: 'fs', security: 'file-io', pure: false },
51
+ { name: 'chownSync', module: 'fs', security: 'file-io', pure: false },
52
+ { name: 'rename', module: 'fs', security: 'file-io', pure: false },
53
+ { name: 'renameSync', module: 'fs', security: 'file-io', pure: false },
54
+ { name: 'copyFile', module: 'fs', security: 'file-io', pure: false },
55
+ { name: 'copyFileSync', module: 'fs', security: 'file-io', pure: false },
56
+ { name: 'createReadStream', module: 'fs', security: 'file-io', pure: false },
57
+ { name: 'createWriteStream', module: 'fs', security: 'file-io', pure: false },
58
+ { name: 'watch', module: 'fs', security: 'file-io', pure: false },
59
+ { name: 'watchFile', module: 'fs', security: 'file-io', pure: false },
60
+ { name: 'existsSync', module: 'fs', security: 'file-io', pure: false },
61
+ { name: 'truncate', module: 'fs', security: 'file-io', pure: false },
62
+ { name: 'truncateSync', module: 'fs', security: 'file-io', pure: false },
63
+ ]
64
+ },
65
+
66
+ // fs/promises - Async filesystem operations
67
+ {
68
+ name: 'fs/promises',
69
+ functions: [
70
+ { name: 'readFile', module: 'fs/promises', security: 'file-io', pure: false },
71
+ { name: 'writeFile', module: 'fs/promises', security: 'file-io', pure: false },
72
+ { name: 'appendFile', module: 'fs/promises', security: 'file-io', pure: false },
73
+ { name: 'readdir', module: 'fs/promises', security: 'file-io', pure: false },
74
+ { name: 'mkdir', module: 'fs/promises', security: 'file-io', pure: false },
75
+ { name: 'rmdir', module: 'fs/promises', security: 'file-io', pure: false },
76
+ { name: 'rm', module: 'fs/promises', security: 'file-io', pure: false },
77
+ { name: 'unlink', module: 'fs/promises', security: 'file-io', pure: false },
78
+ { name: 'stat', module: 'fs/promises', security: 'file-io', pure: false },
79
+ { name: 'lstat', module: 'fs/promises', security: 'file-io', pure: false },
80
+ { name: 'access', module: 'fs/promises', security: 'file-io', pure: false },
81
+ { name: 'chmod', module: 'fs/promises', security: 'file-io', pure: false },
82
+ { name: 'chown', module: 'fs/promises', security: 'file-io', pure: false },
83
+ { name: 'rename', module: 'fs/promises', security: 'file-io', pure: false },
84
+ { name: 'copyFile', module: 'fs/promises', security: 'file-io', pure: false },
85
+ { name: 'truncate', module: 'fs/promises', security: 'file-io', pure: false },
86
+ ]
87
+ },
88
+
89
+ // path - Path manipulation (pure functions)
90
+ {
91
+ name: 'path',
92
+ functions: [
93
+ { name: 'join', module: 'path', pure: true },
94
+ { name: 'resolve', module: 'path', pure: true },
95
+ { name: 'normalize', module: 'path', pure: true },
96
+ { name: 'basename', module: 'path', pure: true },
97
+ { name: 'dirname', module: 'path', pure: true },
98
+ { name: 'extname', module: 'path', pure: true },
99
+ { name: 'parse', module: 'path', pure: true },
100
+ { name: 'format', module: 'path', pure: true },
101
+ { name: 'relative', module: 'path', pure: true },
102
+ { name: 'isAbsolute', module: 'path', pure: true },
103
+ { name: 'sep', module: 'path', pure: true },
104
+ { name: 'delimiter', module: 'path', pure: true },
105
+ ]
106
+ },
107
+
108
+ // http - HTTP server/client
109
+ {
110
+ name: 'http',
111
+ functions: [
112
+ { name: 'createServer', module: 'http', security: 'net', pure: false },
113
+ { name: 'request', module: 'http', security: 'net', pure: false },
114
+ { name: 'get', module: 'http', security: 'net', pure: false },
115
+ ]
116
+ },
117
+
118
+ // https - HTTPS server/client
119
+ {
120
+ name: 'https',
121
+ functions: [
122
+ { name: 'createServer', module: 'https', security: 'net', pure: false },
123
+ { name: 'request', module: 'https', security: 'net', pure: false },
124
+ { name: 'get', module: 'https', security: 'net', pure: false },
125
+ ]
126
+ },
127
+
128
+ // crypto - Cryptographic operations
129
+ {
130
+ name: 'crypto',
131
+ functions: [
132
+ { name: 'createHash', module: 'crypto', security: 'crypto', pure: false },
133
+ { name: 'createHmac', module: 'crypto', security: 'crypto', pure: false },
134
+ { name: 'createCipher', module: 'crypto', security: 'crypto', pure: false },
135
+ { name: 'createDecipher', module: 'crypto', security: 'crypto', pure: false },
136
+ { name: 'createCipheriv', module: 'crypto', security: 'crypto', pure: false },
137
+ { name: 'createDecipheriv', module: 'crypto', security: 'crypto', pure: false },
138
+ { name: 'randomBytes', module: 'crypto', security: 'crypto', pure: false },
139
+ { name: 'randomFill', module: 'crypto', security: 'crypto', pure: false },
140
+ { name: 'randomFillSync', module: 'crypto', security: 'crypto', pure: false },
141
+ { name: 'randomUUID', module: 'crypto', security: 'crypto', pure: false },
142
+ { name: 'pbkdf2', module: 'crypto', security: 'crypto', pure: false },
143
+ { name: 'pbkdf2Sync', module: 'crypto', security: 'crypto', pure: false },
144
+ { name: 'scrypt', module: 'crypto', security: 'crypto', pure: false },
145
+ { name: 'scryptSync', module: 'crypto', security: 'crypto', pure: false },
146
+ { name: 'generateKey', module: 'crypto', security: 'crypto', pure: false },
147
+ { name: 'generateKeyPair', module: 'crypto', security: 'crypto', pure: false },
148
+ { name: 'generateKeyPairSync', module: 'crypto', security: 'crypto', pure: false },
149
+ ]
150
+ },
151
+
152
+ // child_process - Process execution (SECURITY SENSITIVE)
153
+ {
154
+ name: 'child_process',
155
+ functions: [
156
+ { name: 'exec', module: 'child_process', security: 'exec', pure: false },
157
+ { name: 'execSync', module: 'child_process', security: 'exec', pure: false },
158
+ { name: 'execFile', module: 'child_process', security: 'exec', pure: false },
159
+ { name: 'execFileSync', module: 'child_process', security: 'exec', pure: false },
160
+ { name: 'spawn', module: 'child_process', security: 'exec', pure: false },
161
+ { name: 'spawnSync', module: 'child_process', security: 'exec', pure: false },
162
+ { name: 'fork', module: 'child_process', security: 'exec', pure: false },
163
+ ]
164
+ },
165
+ ];
166
+
167
+ /**
168
+ * Tier 2: Additional commonly used modules
169
+ */
170
+ export const TIER_2_MODULES: BuiltinModuleDef[] = [
171
+ // url - URL parsing
172
+ {
173
+ name: 'url',
174
+ functions: [
175
+ { name: 'parse', module: 'url', pure: true },
176
+ { name: 'format', module: 'url', pure: true },
177
+ { name: 'resolve', module: 'url', pure: true },
178
+ { name: 'fileURLToPath', module: 'url', pure: true },
179
+ { name: 'pathToFileURL', module: 'url', pure: true },
180
+ ]
181
+ },
182
+
183
+ // util - Utilities
184
+ {
185
+ name: 'util',
186
+ functions: [
187
+ { name: 'promisify', module: 'util', pure: true },
188
+ { name: 'callbackify', module: 'util', pure: true },
189
+ { name: 'inspect', module: 'util', pure: true },
190
+ { name: 'format', module: 'util', pure: true },
191
+ { name: 'deprecate', module: 'util', pure: false },
192
+ { name: 'inherits', module: 'util', pure: false },
193
+ ]
194
+ },
195
+
196
+ // os - Operating system info
197
+ {
198
+ name: 'os',
199
+ functions: [
200
+ { name: 'platform', module: 'os', pure: true },
201
+ { name: 'arch', module: 'os', pure: true },
202
+ { name: 'cpus', module: 'os', pure: false },
203
+ { name: 'hostname', module: 'os', pure: false },
204
+ { name: 'homedir', module: 'os', pure: false },
205
+ { name: 'tmpdir', module: 'os', pure: false },
206
+ { name: 'type', module: 'os', pure: true },
207
+ { name: 'release', module: 'os', pure: true },
208
+ { name: 'totalmem', module: 'os', pure: false },
209
+ { name: 'freemem', module: 'os', pure: false },
210
+ ]
211
+ },
212
+
213
+ // events - Event emitter
214
+ {
215
+ name: 'events',
216
+ functions: [
217
+ { name: 'EventEmitter', module: 'events', pure: false },
218
+ { name: 'once', module: 'events', pure: false },
219
+ { name: 'on', module: 'events', pure: false },
220
+ ]
221
+ },
222
+
223
+ // stream - Streams
224
+ {
225
+ name: 'stream',
226
+ functions: [
227
+ { name: 'Readable', module: 'stream', pure: false },
228
+ { name: 'Writable', module: 'stream', pure: false },
229
+ { name: 'Duplex', module: 'stream', pure: false },
230
+ { name: 'Transform', module: 'stream', pure: false },
231
+ { name: 'pipeline', module: 'stream', pure: false },
232
+ { name: 'finished', module: 'stream', pure: false },
233
+ ]
234
+ },
235
+
236
+ // buffer - Buffer operations
237
+ {
238
+ name: 'buffer',
239
+ functions: [
240
+ { name: 'Buffer', module: 'buffer', pure: false },
241
+ { name: 'alloc', module: 'buffer', pure: true },
242
+ { name: 'allocUnsafe', module: 'buffer', pure: true },
243
+ { name: 'from', module: 'buffer', pure: true },
244
+ { name: 'concat', module: 'buffer', pure: true },
245
+ { name: 'isBuffer', module: 'buffer', pure: true },
246
+ ]
247
+ },
248
+
249
+ // worker_threads - Worker threads
250
+ {
251
+ name: 'worker_threads',
252
+ functions: [
253
+ { name: 'Worker', module: 'worker_threads', pure: false },
254
+ { name: 'isMainThread', module: 'worker_threads', pure: true },
255
+ { name: 'parentPort', module: 'worker_threads', pure: false },
256
+ { name: 'workerData', module: 'worker_threads', pure: false },
257
+ ]
258
+ },
259
+ ];
260
+
261
+ /**
262
+ * All builtin modules combined
263
+ */
264
+ export const ALL_BUILTIN_MODULES: BuiltinModuleDef[] = [
265
+ ...TIER_1_MODULES,
266
+ ...TIER_2_MODULES,
267
+ ];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Node.js Builtins Registry (REG-218)
3
+ *
4
+ * Exports for builtin function registry.
5
+ */
6
+
7
+ export { BuiltinRegistry } from './BuiltinRegistry.js';
8
+ export type { BuiltinFunctionDef, BuiltinModuleDef, SecurityCategory } from './types.js';
9
+ export { ALL_BUILTIN_MODULES, TIER_1_MODULES, TIER_2_MODULES } from './definitions.js';
10
+ export { JS_GLOBAL_FUNCTIONS } from './jsGlobals.js';
@@ -0,0 +1,28 @@
1
+ /**
2
+ * JavaScript Global Functions (REG-227)
3
+ *
4
+ * These are functions intrinsic to the JS runtime that don't need CALLS edges.
5
+ * They're available in all JS environments (browser, Node.js, etc.) and aren't
6
+ * "callable definitions" in the code sense.
7
+ *
8
+ * What is NOT included:
9
+ * - Constructors (Array, Object, Error) - handled as constructor calls
10
+ * - Objects with methods (Math, JSON) - method calls go through MethodCallResolver
11
+ * - Environment globals (window, document) - not functions, they're objects
12
+ *
13
+ * Used by:
14
+ * - ExternalCallResolver: skips these when resolving external calls
15
+ * - CallResolverValidator: recognizes these as resolved (no violation)
16
+ */
17
+ export const JS_GLOBAL_FUNCTIONS = new Set([
18
+ // Global functions (truly called as standalone functions)
19
+ 'parseInt', 'parseFloat', 'isNaN', 'isFinite', 'eval',
20
+ 'encodeURI', 'decodeURI', 'encodeURIComponent', 'decodeURIComponent',
21
+
22
+ // Timers (global functions in browser & Node.js)
23
+ 'setTimeout', 'setInterval', 'setImmediate',
24
+ 'clearTimeout', 'clearInterval', 'clearImmediate',
25
+
26
+ // CommonJS (special case - global in CJS environments)
27
+ 'require'
28
+ ]);
@@ -0,0 +1,36 @@
1
+ /**
2
+ * BuiltinRegistry Types (REG-218)
3
+ *
4
+ * Type definitions for Node.js builtin function registry.
5
+ * Used for lazy EXTERNAL_FUNCTION node creation.
6
+ */
7
+
8
+ /**
9
+ * Security category for builtin functions.
10
+ * Used for security analysis and auditing.
11
+ */
12
+ export type SecurityCategory = 'file-io' | 'exec' | 'net' | 'crypto';
13
+
14
+ /**
15
+ * Definition of a single builtin function.
16
+ */
17
+ export interface BuiltinFunctionDef {
18
+ /** Function name (e.g., 'readFile') */
19
+ name: string;
20
+ /** Module name (e.g., 'fs', 'path', 'fs/promises') */
21
+ module: string;
22
+ /** Security category (for dangerous functions) */
23
+ security?: SecurityCategory;
24
+ /** Whether function is pure (no side effects) */
25
+ pure?: boolean;
26
+ }
27
+
28
+ /**
29
+ * Definition of a builtin module with its functions.
30
+ */
31
+ export interface BuiltinModuleDef {
32
+ /** Module name (e.g., 'fs', 'path') */
33
+ name: string;
34
+ /** List of functions in this module */
35
+ functions: BuiltinFunctionDef[];
36
+ }