@grafema/core 0.1.0-alpha.1

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 (402) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +76 -0
  3. package/dist/Orchestrator.d.ts +142 -0
  4. package/dist/Orchestrator.d.ts.map +1 -0
  5. package/dist/Orchestrator.js +481 -0
  6. package/dist/api/GraphAPI.d.ts +87 -0
  7. package/dist/api/GraphAPI.d.ts.map +1 -0
  8. package/dist/api/GraphAPI.js +210 -0
  9. package/dist/api/GuaranteeAPI.d.ts +147 -0
  10. package/dist/api/GuaranteeAPI.d.ts.map +1 -0
  11. package/dist/api/GuaranteeAPI.js +288 -0
  12. package/dist/core/ASTWorker.d.ts +133 -0
  13. package/dist/core/ASTWorker.d.ts.map +1 -0
  14. package/dist/core/ASTWorker.js +352 -0
  15. package/dist/core/ASTWorkerPool.d.ts +85 -0
  16. package/dist/core/ASTWorkerPool.d.ts.map +1 -0
  17. package/dist/core/ASTWorkerPool.js +207 -0
  18. package/dist/core/AnalysisQueue.d.ts +104 -0
  19. package/dist/core/AnalysisQueue.d.ts.map +1 -0
  20. package/dist/core/AnalysisQueue.js +299 -0
  21. package/dist/core/AnalysisWorker.d.ts +14 -0
  22. package/dist/core/AnalysisWorker.d.ts.map +1 -0
  23. package/dist/core/AnalysisWorker.js +307 -0
  24. package/dist/core/GraphBackend.d.ts +156 -0
  25. package/dist/core/GraphBackend.d.ts.map +1 -0
  26. package/dist/core/GraphBackend.js +85 -0
  27. package/dist/core/GuaranteeManager.d.ts +230 -0
  28. package/dist/core/GuaranteeManager.d.ts.map +1 -0
  29. package/dist/core/GuaranteeManager.js +352 -0
  30. package/dist/core/ManifestStore.d.ts +71 -0
  31. package/dist/core/ManifestStore.d.ts.map +1 -0
  32. package/dist/core/ManifestStore.js +146 -0
  33. package/dist/core/NodeFactory.d.ts +160 -0
  34. package/dist/core/NodeFactory.d.ts.map +1 -0
  35. package/dist/core/NodeFactory.js +137 -0
  36. package/dist/core/NodeId.d.ts +88 -0
  37. package/dist/core/NodeId.d.ts.map +1 -0
  38. package/dist/core/NodeId.js +170 -0
  39. package/dist/core/ParallelAnalyzer.d.ts +120 -0
  40. package/dist/core/ParallelAnalyzer.d.ts.map +1 -0
  41. package/dist/core/ParallelAnalyzer.js +331 -0
  42. package/dist/core/PriorityQueue.d.ts +106 -0
  43. package/dist/core/PriorityQueue.d.ts.map +1 -0
  44. package/dist/core/PriorityQueue.js +168 -0
  45. package/dist/core/Profiler.d.ts +75 -0
  46. package/dist/core/Profiler.d.ts.map +1 -0
  47. package/dist/core/Profiler.js +149 -0
  48. package/dist/core/QueueWorker.d.ts +12 -0
  49. package/dist/core/QueueWorker.d.ts.map +1 -0
  50. package/dist/core/QueueWorker.js +567 -0
  51. package/dist/core/RFDBClient.d.ts +179 -0
  52. package/dist/core/RFDBClient.d.ts.map +1 -0
  53. package/dist/core/RFDBClient.js +429 -0
  54. package/dist/core/Task.d.ts +56 -0
  55. package/dist/core/Task.d.ts.map +1 -0
  56. package/dist/core/Task.js +85 -0
  57. package/dist/core/TaskTypes.d.ts +20 -0
  58. package/dist/core/TaskTypes.d.ts.map +1 -0
  59. package/dist/core/TaskTypes.js +10 -0
  60. package/dist/core/VersionManager.d.ts +166 -0
  61. package/dist/core/VersionManager.d.ts.map +1 -0
  62. package/dist/core/VersionManager.js +237 -0
  63. package/dist/core/WorkerPool.d.ts +82 -0
  64. package/dist/core/WorkerPool.d.ts.map +1 -0
  65. package/dist/core/WorkerPool.js +109 -0
  66. package/dist/core/nodes/CallSiteNode.d.ts +26 -0
  67. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -0
  68. package/dist/core/nodes/CallSiteNode.js +44 -0
  69. package/dist/core/nodes/ClassNode.d.ts +25 -0
  70. package/dist/core/nodes/ClassNode.d.ts.map +1 -0
  71. package/dist/core/nodes/ClassNode.js +40 -0
  72. package/dist/core/nodes/ConstantNode.d.ts +24 -0
  73. package/dist/core/nodes/ConstantNode.d.ts.map +1 -0
  74. package/dist/core/nodes/ConstantNode.js +39 -0
  75. package/dist/core/nodes/DatabaseQueryNode.d.ts +22 -0
  76. package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -0
  77. package/dist/core/nodes/DatabaseQueryNode.js +37 -0
  78. package/dist/core/nodes/EntrypointNode.d.ts +102 -0
  79. package/dist/core/nodes/EntrypointNode.d.ts.map +1 -0
  80. package/dist/core/nodes/EntrypointNode.js +119 -0
  81. package/dist/core/nodes/EventListenerNode.d.ts +25 -0
  82. package/dist/core/nodes/EventListenerNode.d.ts.map +1 -0
  83. package/dist/core/nodes/EventListenerNode.js +39 -0
  84. package/dist/core/nodes/ExportNode.d.ts +26 -0
  85. package/dist/core/nodes/ExportNode.d.ts.map +1 -0
  86. package/dist/core/nodes/ExportNode.js +40 -0
  87. package/dist/core/nodes/ExternalStdioNode.d.ts +17 -0
  88. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -0
  89. package/dist/core/nodes/ExternalStdioNode.js +26 -0
  90. package/dist/core/nodes/FunctionNode.d.ts +27 -0
  91. package/dist/core/nodes/FunctionNode.d.ts.map +1 -0
  92. package/dist/core/nodes/FunctionNode.js +53 -0
  93. package/dist/core/nodes/GuaranteeNode.d.ts +76 -0
  94. package/dist/core/nodes/GuaranteeNode.d.ts.map +1 -0
  95. package/dist/core/nodes/GuaranteeNode.js +117 -0
  96. package/dist/core/nodes/HttpRequestNode.d.ts +24 -0
  97. package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -0
  98. package/dist/core/nodes/HttpRequestNode.js +38 -0
  99. package/dist/core/nodes/ImportNode.d.ts +27 -0
  100. package/dist/core/nodes/ImportNode.d.ts.map +1 -0
  101. package/dist/core/nodes/ImportNode.js +43 -0
  102. package/dist/core/nodes/LiteralNode.d.ts +26 -0
  103. package/dist/core/nodes/LiteralNode.d.ts.map +1 -0
  104. package/dist/core/nodes/LiteralNode.js +40 -0
  105. package/dist/core/nodes/MethodCallNode.d.ts +29 -0
  106. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -0
  107. package/dist/core/nodes/MethodCallNode.js +47 -0
  108. package/dist/core/nodes/MethodNode.d.ts +29 -0
  109. package/dist/core/nodes/MethodNode.d.ts.map +1 -0
  110. package/dist/core/nodes/MethodNode.js +44 -0
  111. package/dist/core/nodes/ModuleNode.d.ts +29 -0
  112. package/dist/core/nodes/ModuleNode.d.ts.map +1 -0
  113. package/dist/core/nodes/ModuleNode.js +49 -0
  114. package/dist/core/nodes/NodeKind.d.ts +91 -0
  115. package/dist/core/nodes/NodeKind.d.ts.map +1 -0
  116. package/dist/core/nodes/NodeKind.js +146 -0
  117. package/dist/core/nodes/ParameterNode.d.ts +26 -0
  118. package/dist/core/nodes/ParameterNode.d.ts.map +1 -0
  119. package/dist/core/nodes/ParameterNode.js +43 -0
  120. package/dist/core/nodes/ScopeNode.d.ts +32 -0
  121. package/dist/core/nodes/ScopeNode.d.ts.map +1 -0
  122. package/dist/core/nodes/ScopeNode.js +47 -0
  123. package/dist/core/nodes/ServiceNode.d.ts +44 -0
  124. package/dist/core/nodes/ServiceNode.d.ts.map +1 -0
  125. package/dist/core/nodes/ServiceNode.js +49 -0
  126. package/dist/core/nodes/VariableDeclarationNode.d.ts +22 -0
  127. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -0
  128. package/dist/core/nodes/VariableDeclarationNode.js +38 -0
  129. package/dist/core/nodes/index.d.ts +25 -0
  130. package/dist/core/nodes/index.d.ts.map +1 -0
  131. package/dist/core/nodes/index.js +30 -0
  132. package/dist/index.d.ts +57 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +63 -0
  135. package/dist/plugins/Plugin.d.ts +44 -0
  136. package/dist/plugins/Plugin.d.ts.map +1 -0
  137. package/dist/plugins/Plugin.js +46 -0
  138. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts +23 -0
  139. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -0
  140. package/dist/plugins/analysis/DatabaseAnalyzer.js +260 -0
  141. package/dist/plugins/analysis/ExpressAnalyzer.d.ts +19 -0
  142. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -0
  143. package/dist/plugins/analysis/ExpressAnalyzer.js +306 -0
  144. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts +17 -0
  145. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -0
  146. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +308 -0
  147. package/dist/plugins/analysis/FetchAnalyzer.d.ts +38 -0
  148. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -0
  149. package/dist/plugins/analysis/FetchAnalyzer.js +344 -0
  150. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +65 -0
  151. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -0
  152. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +472 -0
  153. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +84 -0
  154. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -0
  155. package/dist/plugins/analysis/JSASTAnalyzer.js +1378 -0
  156. package/dist/plugins/analysis/ReactAnalyzer.d.ts +90 -0
  157. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -0
  158. package/dist/plugins/analysis/ReactAnalyzer.js +1153 -0
  159. package/dist/plugins/analysis/RustAnalyzer.d.ts +13 -0
  160. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -0
  161. package/dist/plugins/analysis/RustAnalyzer.js +259 -0
  162. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts +21 -0
  163. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -0
  164. package/dist/plugins/analysis/SQLiteAnalyzer.js +317 -0
  165. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts +35 -0
  166. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -0
  167. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +303 -0
  168. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +33 -0
  169. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -0
  170. package/dist/plugins/analysis/SocketIOAnalyzer.js +283 -0
  171. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts +27 -0
  172. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -0
  173. package/dist/plugins/analysis/SystemDbAnalyzer.js +211 -0
  174. package/dist/plugins/analysis/ast/ConditionParser.d.ts +85 -0
  175. package/dist/plugins/analysis/ast/ConditionParser.d.ts.map +1 -0
  176. package/dist/plugins/analysis/ast/ConditionParser.js +277 -0
  177. package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts +15 -0
  178. package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts.map +1 -0
  179. package/dist/plugins/analysis/ast/ExpressionEvaluator.js +91 -0
  180. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +77 -0
  181. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -0
  182. package/dist/plugins/analysis/ast/GraphBuilder.js +1077 -0
  183. package/dist/plugins/analysis/ast/OxcAdapter.d.ts +41 -0
  184. package/dist/plugins/analysis/ast/OxcAdapter.d.ts.map +1 -0
  185. package/dist/plugins/analysis/ast/OxcAdapter.js +40 -0
  186. package/dist/plugins/analysis/ast/types.d.ts +346 -0
  187. package/dist/plugins/analysis/ast/types.d.ts.map +1 -0
  188. package/dist/plugins/analysis/ast/types.js +4 -0
  189. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +93 -0
  190. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -0
  191. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +24 -0
  192. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +77 -0
  193. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -0
  194. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +377 -0
  195. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +27 -0
  196. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -0
  197. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +232 -0
  198. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +25 -0
  199. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -0
  200. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +172 -0
  201. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +29 -0
  202. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -0
  203. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +180 -0
  204. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +14 -0
  205. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -0
  206. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +200 -0
  207. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +45 -0
  208. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -0
  209. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +150 -0
  210. package/dist/plugins/analysis/ast/visitors/index.d.ts +17 -0
  211. package/dist/plugins/analysis/ast/visitors/index.d.ts.map +1 -0
  212. package/dist/plugins/analysis/ast/visitors/index.js +13 -0
  213. package/dist/plugins/discovery/DiscoveryPlugin.d.ts +34 -0
  214. package/dist/plugins/discovery/DiscoveryPlugin.d.ts.map +1 -0
  215. package/dist/plugins/discovery/DiscoveryPlugin.js +26 -0
  216. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts +26 -0
  217. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -0
  218. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +79 -0
  219. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts +14 -0
  220. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -0
  221. package/dist/plugins/discovery/SimpleProjectDiscovery.js +65 -0
  222. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +19 -0
  223. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +1 -0
  224. package/dist/plugins/discovery/ZonServiceDiscovery.js +204 -0
  225. package/dist/plugins/enrichment/AliasTracker.d.ts +40 -0
  226. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -0
  227. package/dist/plugins/enrichment/AliasTracker.js +290 -0
  228. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +30 -0
  229. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -0
  230. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +135 -0
  231. package/dist/plugins/enrichment/ImportExportLinker.d.ts +30 -0
  232. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -0
  233. package/dist/plugins/enrichment/ImportExportLinker.js +176 -0
  234. package/dist/plugins/enrichment/InstanceOfResolver.d.ts +21 -0
  235. package/dist/plugins/enrichment/InstanceOfResolver.d.ts.map +1 -0
  236. package/dist/plugins/enrichment/InstanceOfResolver.js +117 -0
  237. package/dist/plugins/enrichment/MethodCallResolver.d.ts +41 -0
  238. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -0
  239. package/dist/plugins/enrichment/MethodCallResolver.js +252 -0
  240. package/dist/plugins/enrichment/MountPointResolver.d.ts +26 -0
  241. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -0
  242. package/dist/plugins/enrichment/MountPointResolver.js +189 -0
  243. package/dist/plugins/enrichment/PrefixEvaluator.d.ts +89 -0
  244. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -0
  245. package/dist/plugins/enrichment/PrefixEvaluator.js +415 -0
  246. package/dist/plugins/enrichment/RustFFIEnricher.d.ts +25 -0
  247. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -0
  248. package/dist/plugins/enrichment/RustFFIEnricher.js +170 -0
  249. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +114 -0
  250. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -0
  251. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +464 -0
  252. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts +27 -0
  253. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -0
  254. package/dist/plugins/indexing/IncrementalModuleIndexer.js +238 -0
  255. package/dist/plugins/indexing/JSModuleIndexer.d.ts +33 -0
  256. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -0
  257. package/dist/plugins/indexing/JSModuleIndexer.js +299 -0
  258. package/dist/plugins/indexing/RustModuleIndexer.d.ts +28 -0
  259. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -0
  260. package/dist/plugins/indexing/RustModuleIndexer.js +140 -0
  261. package/dist/plugins/indexing/ServiceDetector.d.ts +46 -0
  262. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -0
  263. package/dist/plugins/indexing/ServiceDetector.js +164 -0
  264. package/dist/plugins/validation/CallResolverValidator.d.ts +23 -0
  265. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -0
  266. package/dist/plugins/validation/CallResolverValidator.js +108 -0
  267. package/dist/plugins/validation/DataFlowValidator.d.ts +24 -0
  268. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -0
  269. package/dist/plugins/validation/DataFlowValidator.js +148 -0
  270. package/dist/plugins/validation/EvalBanValidator.d.ts +25 -0
  271. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -0
  272. package/dist/plugins/validation/EvalBanValidator.js +123 -0
  273. package/dist/plugins/validation/GraphConnectivityValidator.d.ts +11 -0
  274. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -0
  275. package/dist/plugins/validation/GraphConnectivityValidator.js +135 -0
  276. package/dist/plugins/validation/SQLInjectionValidator.d.ts +43 -0
  277. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -0
  278. package/dist/plugins/validation/SQLInjectionValidator.js +251 -0
  279. package/dist/plugins/validation/ShadowingDetector.d.ts +26 -0
  280. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -0
  281. package/dist/plugins/validation/ShadowingDetector.js +119 -0
  282. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts +21 -0
  283. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -0
  284. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +151 -0
  285. package/dist/plugins/vcs/GitPlugin.d.ts +84 -0
  286. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -0
  287. package/dist/plugins/vcs/GitPlugin.js +295 -0
  288. package/dist/plugins/vcs/VCSPlugin.d.ts +133 -0
  289. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -0
  290. package/dist/plugins/vcs/VCSPlugin.js +82 -0
  291. package/dist/plugins/vcs/index.d.ts +10 -0
  292. package/dist/plugins/vcs/index.d.ts.map +1 -0
  293. package/dist/plugins/vcs/index.js +18 -0
  294. package/dist/storage/backends/RFDBServerBackend.d.ts +258 -0
  295. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -0
  296. package/dist/storage/backends/RFDBServerBackend.js +565 -0
  297. package/dist/storage/backends/typeValidation.d.ts +47 -0
  298. package/dist/storage/backends/typeValidation.d.ts.map +1 -0
  299. package/dist/storage/backends/typeValidation.js +137 -0
  300. package/dist/validation/PathValidator.d.ts +81 -0
  301. package/dist/validation/PathValidator.d.ts.map +1 -0
  302. package/dist/validation/PathValidator.js +251 -0
  303. package/package.json +57 -0
  304. package/src/.rfguard/current-session.txt +1 -0
  305. package/src/Orchestrator.ts +673 -0
  306. package/src/api/GraphAPI.ts +305 -0
  307. package/src/api/GuaranteeAPI.ts +401 -0
  308. package/src/core/ASTWorker.ts +567 -0
  309. package/src/core/ASTWorkerPool.ts +299 -0
  310. package/src/core/AnalysisQueue.ts +447 -0
  311. package/src/core/AnalysisWorker.ts +410 -0
  312. package/src/core/GraphBackend.ts +265 -0
  313. package/src/core/GuaranteeManager.ts +581 -0
  314. package/src/core/ManifestStore.ts +196 -0
  315. package/src/core/NodeFactory.ts +274 -0
  316. package/src/core/NodeId.ts +257 -0
  317. package/src/core/ParallelAnalyzer.ts +476 -0
  318. package/src/core/PriorityQueue.ts +227 -0
  319. package/src/core/Profiler.ts +188 -0
  320. package/src/core/QueueWorker.ts +780 -0
  321. package/src/core/Task.ts +107 -0
  322. package/src/core/TaskTypes.ts +40 -0
  323. package/src/core/VersionManager.ts +404 -0
  324. package/src/core/WorkerPool.ts +180 -0
  325. package/src/core/nodes/CallSiteNode.ts +72 -0
  326. package/src/core/nodes/ClassNode.ts +69 -0
  327. package/src/core/nodes/ConstantNode.ts +63 -0
  328. package/src/core/nodes/DatabaseQueryNode.ts +60 -0
  329. package/src/core/nodes/EntrypointNode.ts +164 -0
  330. package/src/core/nodes/EventListenerNode.ts +64 -0
  331. package/src/core/nodes/ExportNode.ts +71 -0
  332. package/src/core/nodes/ExternalStdioNode.ts +36 -0
  333. package/src/core/nodes/FunctionNode.ts +78 -0
  334. package/src/core/nodes/GuaranteeNode.ts +162 -0
  335. package/src/core/nodes/HttpRequestNode.ts +63 -0
  336. package/src/core/nodes/ImportNode.ts +75 -0
  337. package/src/core/nodes/LiteralNode.ts +67 -0
  338. package/src/core/nodes/MethodCallNode.ts +79 -0
  339. package/src/core/nodes/MethodNode.ts +78 -0
  340. package/src/core/nodes/ModuleNode.ts +74 -0
  341. package/src/core/nodes/NodeKind.ts +171 -0
  342. package/src/core/nodes/ParameterNode.ts +73 -0
  343. package/src/core/nodes/ScopeNode.ts +80 -0
  344. package/src/core/nodes/ServiceNode.ts +86 -0
  345. package/src/core/nodes/VariableDeclarationNode.ts +60 -0
  346. package/src/core/nodes/index.ts +49 -0
  347. package/src/index.ts +93 -0
  348. package/src/plugins/Plugin.ts +74 -0
  349. package/src/plugins/analysis/DatabaseAnalyzer.ts +322 -0
  350. package/src/plugins/analysis/ExpressAnalyzer.ts +401 -0
  351. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +414 -0
  352. package/src/plugins/analysis/FetchAnalyzer.ts +441 -0
  353. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +686 -0
  354. package/src/plugins/analysis/JSASTAnalyzer.ts +1680 -0
  355. package/src/plugins/analysis/ReactAnalyzer.ts +1368 -0
  356. package/src/plugins/analysis/RustAnalyzer.ts +438 -0
  357. package/src/plugins/analysis/SQLiteAnalyzer.ts +388 -0
  358. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +429 -0
  359. package/src/plugins/analysis/SocketIOAnalyzer.ts +395 -0
  360. package/src/plugins/analysis/SystemDbAnalyzer.ts +284 -0
  361. package/src/plugins/analysis/ast/ConditionParser.ts +333 -0
  362. package/src/plugins/analysis/ast/ExpressionEvaluator.ts +117 -0
  363. package/src/plugins/analysis/ast/GraphBuilder.ts +1371 -0
  364. package/src/plugins/analysis/ast/OxcAdapter.ts +63 -0
  365. package/src/plugins/analysis/ast/types.ts +400 -0
  366. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +137 -0
  367. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +528 -0
  368. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +339 -0
  369. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +273 -0
  370. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +259 -0
  371. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +235 -0
  372. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +268 -0
  373. package/src/plugins/analysis/ast/visitors/index.ts +36 -0
  374. package/src/plugins/discovery/DiscoveryPlugin.ts +50 -0
  375. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +117 -0
  376. package/src/plugins/discovery/SimpleProjectDiscovery.ts +102 -0
  377. package/src/plugins/enrichment/AliasTracker.ts +399 -0
  378. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +192 -0
  379. package/src/plugins/enrichment/ImportExportLinker.ts +221 -0
  380. package/src/plugins/enrichment/InstanceOfResolver.ts +165 -0
  381. package/src/plugins/enrichment/MethodCallResolver.ts +333 -0
  382. package/src/plugins/enrichment/MountPointResolver.ts +264 -0
  383. package/src/plugins/enrichment/PrefixEvaluator.ts +527 -0
  384. package/src/plugins/enrichment/RustFFIEnricher.ts +218 -0
  385. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +682 -0
  386. package/src/plugins/indexing/IncrementalModuleIndexer.ts +287 -0
  387. package/src/plugins/indexing/JSModuleIndexer.ts +374 -0
  388. package/src/plugins/indexing/RustModuleIndexer.ts +160 -0
  389. package/src/plugins/indexing/ServiceDetector.ts +230 -0
  390. package/src/plugins/validation/CallResolverValidator.ts +170 -0
  391. package/src/plugins/validation/DataFlowValidator.ts +233 -0
  392. package/src/plugins/validation/EvalBanValidator.ts +175 -0
  393. package/src/plugins/validation/GraphConnectivityValidator.ts +201 -0
  394. package/src/plugins/validation/SQLInjectionValidator.ts +363 -0
  395. package/src/plugins/validation/ShadowingDetector.ts +173 -0
  396. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +203 -0
  397. package/src/plugins/vcs/GitPlugin.ts +344 -0
  398. package/src/plugins/vcs/VCSPlugin.ts +190 -0
  399. package/src/plugins/vcs/index.ts +32 -0
  400. package/src/storage/backends/RFDBServerBackend.ts +687 -0
  401. package/src/storage/backends/typeValidation.ts +151 -0
  402. package/src/validation/PathValidator.ts +342 -0
@@ -0,0 +1,29 @@
1
+ /**
2
+ * MethodCallNode - contract for METHOD_CALL node
3
+ */
4
+ import type { BaseNodeRecord } from '@grafema/types';
5
+ interface MethodCallNodeRecord extends BaseNodeRecord {
6
+ type: 'METHOD_CALL';
7
+ object?: string;
8
+ method: string;
9
+ column: number;
10
+ parentScopeId?: string;
11
+ args: unknown[];
12
+ }
13
+ interface MethodCallNodeOptions {
14
+ parentScopeId?: string;
15
+ args?: unknown[];
16
+ counter?: number;
17
+ }
18
+ export declare class MethodCallNode {
19
+ static readonly TYPE: "METHOD_CALL";
20
+ static readonly REQUIRED: readonly ["name", "file", "line", "args"];
21
+ static readonly OPTIONAL: readonly ["object", "method", "column", "parentScopeId"];
22
+ /**
23
+ * Create METHOD_CALL node
24
+ */
25
+ static create(objectName: string | undefined, methodName: string, file: string, line: number, column: number, options?: MethodCallNodeOptions): MethodCallNodeRecord;
26
+ static validate(node: MethodCallNodeRecord): string[];
27
+ }
28
+ export type { MethodCallNodeRecord };
29
+ //# sourceMappingURL=MethodCallNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodCallNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/MethodCallNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,oBAAqB,SAAQ,cAAc;IACnD,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAE9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,4CAA6C;IACrE,MAAM,CAAC,QAAQ,CAAC,QAAQ,2DAA4D;IAEpF;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,oBAAoB;IAuBvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,EAAE;CAgBtD;AAED,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * MethodCallNode - contract for METHOD_CALL node
3
+ */
4
+ export class MethodCallNode {
5
+ static TYPE = 'METHOD_CALL';
6
+ static REQUIRED = ['name', 'file', 'line', 'args'];
7
+ static OPTIONAL = ['object', 'method', 'column', 'parentScopeId'];
8
+ /**
9
+ * Create METHOD_CALL node
10
+ */
11
+ static create(objectName, methodName, file, line, column, options = {}) {
12
+ if (!methodName)
13
+ throw new Error('MethodCallNode.create: methodName is required');
14
+ if (!file)
15
+ throw new Error('MethodCallNode.create: file is required');
16
+ if (line === undefined)
17
+ throw new Error('MethodCallNode.create: line is required');
18
+ const fullName = objectName ? `${objectName}.${methodName}` : methodName;
19
+ const counter = options.counter !== undefined ? `:${options.counter}` : '';
20
+ const id = `${file}:METHOD_CALL:${fullName}:${line}:${column || 0}${counter}`;
21
+ return {
22
+ id,
23
+ type: this.TYPE,
24
+ name: fullName,
25
+ object: objectName,
26
+ method: methodName,
27
+ file,
28
+ line,
29
+ column: column || 0,
30
+ parentScopeId: options.parentScopeId,
31
+ args: options.args || []
32
+ };
33
+ }
34
+ static validate(node) {
35
+ const errors = [];
36
+ if (node.type !== this.TYPE) {
37
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
38
+ }
39
+ const nodeRecord = node;
40
+ for (const field of this.REQUIRED) {
41
+ if (nodeRecord[field] === undefined || nodeRecord[field] === null) {
42
+ errors.push(`Missing required field: ${field}`);
43
+ }
44
+ }
45
+ return errors;
46
+ }
47
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * MethodNode - contract for METHOD node (class method)
3
+ */
4
+ import type { BaseNodeRecord } from '@grafema/types';
5
+ type MethodKind = 'method' | 'get' | 'set' | 'constructor';
6
+ interface MethodNodeRecord extends BaseNodeRecord {
7
+ type: 'METHOD';
8
+ column: number;
9
+ className: string;
10
+ async: boolean;
11
+ generator: boolean;
12
+ static: boolean;
13
+ kind: MethodKind;
14
+ }
15
+ interface MethodNodeOptions {
16
+ async?: boolean;
17
+ generator?: boolean;
18
+ static?: boolean;
19
+ kind?: MethodKind;
20
+ }
21
+ export declare class MethodNode {
22
+ static readonly TYPE: "METHOD";
23
+ static readonly REQUIRED: readonly ["name", "file", "line", "className"];
24
+ static readonly OPTIONAL: readonly ["column", "async", "generator", "static", "kind"];
25
+ static create(name: string, file: string, line: number, column: number, className: string, options?: MethodNodeOptions): MethodNodeRecord;
26
+ static validate(node: MethodNodeRecord): string[];
27
+ }
28
+ export type { MethodNodeRecord, MethodKind };
29
+ //# sourceMappingURL=MethodNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/MethodNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,KAAK,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,CAAC;AAE3D,UAAU,gBAAiB,SAAQ,cAAc;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAEzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,iDAAkD;IAC1E,MAAM,CAAC,QAAQ,CAAC,QAAQ,8DAA+D;IAEvF,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB;IAqBnB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAAE;CAgBlD;AAED,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * MethodNode - contract for METHOD node (class method)
3
+ */
4
+ export class MethodNode {
5
+ static TYPE = 'METHOD';
6
+ static REQUIRED = ['name', 'file', 'line', 'className'];
7
+ static OPTIONAL = ['column', 'async', 'generator', 'static', 'kind'];
8
+ static create(name, file, line, column, className, options = {}) {
9
+ if (!name)
10
+ throw new Error('MethodNode.create: name is required');
11
+ if (!file)
12
+ throw new Error('MethodNode.create: file is required');
13
+ if (!line)
14
+ throw new Error('MethodNode.create: line is required');
15
+ if (!className)
16
+ throw new Error('MethodNode.create: className is required');
17
+ return {
18
+ id: `${file}:METHOD:${className}.${name}:${line}`,
19
+ type: this.TYPE,
20
+ name,
21
+ file,
22
+ line,
23
+ column: column || 0,
24
+ className,
25
+ async: options.async || false,
26
+ generator: options.generator || false,
27
+ static: options.static || false,
28
+ kind: options.kind || 'method'
29
+ };
30
+ }
31
+ static validate(node) {
32
+ const errors = [];
33
+ if (node.type !== this.TYPE) {
34
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
35
+ }
36
+ const nodeRecord = node;
37
+ for (const field of this.REQUIRED) {
38
+ if (!nodeRecord[field]) {
39
+ errors.push(`Missing required field: ${field}`);
40
+ }
41
+ }
42
+ return errors;
43
+ }
44
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ModuleNode - contract for MODULE node
3
+ */
4
+ import type { BaseNodeRecord } from '@grafema/types';
5
+ interface ModuleNodeRecord extends BaseNodeRecord {
6
+ type: 'MODULE';
7
+ contentHash: string;
8
+ isTest: boolean;
9
+ }
10
+ interface ModuleNodeOptions {
11
+ isTest?: boolean;
12
+ }
13
+ export declare class ModuleNode {
14
+ static readonly TYPE: "MODULE";
15
+ static readonly REQUIRED: readonly ["name", "file", "contentHash"];
16
+ static readonly OPTIONAL: readonly ["isTest"];
17
+ /**
18
+ * Create MODULE node
19
+ * @param filePath - Full file path
20
+ * @param relativePath - Relative path (module name)
21
+ * @param contentHash - Content hash
22
+ * @param options - Additional options (isTest, etc.)
23
+ */
24
+ static create(filePath: string, relativePath: string, contentHash: string, options?: ModuleNodeOptions): ModuleNodeRecord;
25
+ static _hashPath(path: string): string;
26
+ static validate(node: ModuleNodeRecord): string[];
27
+ }
28
+ export type { ModuleNodeRecord };
29
+ //# sourceMappingURL=ModuleNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ModuleNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,gBAAiB,SAAQ,cAAc;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAEzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,2CAA4C;IACpE,MAAM,CAAC,QAAQ,CAAC,QAAQ,sBAAuB;IAE/C;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB;IAgBnB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAItC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAAE;CAgBlD;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * ModuleNode - contract for MODULE node
3
+ */
4
+ import { createHash } from 'crypto';
5
+ export class ModuleNode {
6
+ static TYPE = 'MODULE';
7
+ static REQUIRED = ['name', 'file', 'contentHash'];
8
+ static OPTIONAL = ['isTest'];
9
+ /**
10
+ * Create MODULE node
11
+ * @param filePath - Full file path
12
+ * @param relativePath - Relative path (module name)
13
+ * @param contentHash - Content hash
14
+ * @param options - Additional options (isTest, etc.)
15
+ */
16
+ static create(filePath, relativePath, contentHash, options = {}) {
17
+ if (!filePath)
18
+ throw new Error('ModuleNode.create: filePath is required');
19
+ if (!relativePath)
20
+ throw new Error('ModuleNode.create: relativePath is required');
21
+ if (!contentHash)
22
+ throw new Error('ModuleNode.create: contentHash is required');
23
+ return {
24
+ id: `MODULE:${contentHash}`,
25
+ type: this.TYPE,
26
+ name: relativePath,
27
+ file: filePath,
28
+ line: 0,
29
+ contentHash,
30
+ isTest: options.isTest || false
31
+ };
32
+ }
33
+ static _hashPath(path) {
34
+ return createHash('md5').update(path).digest('hex').substring(0, 12);
35
+ }
36
+ static validate(node) {
37
+ const errors = [];
38
+ if (node.type !== this.TYPE) {
39
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
40
+ }
41
+ const nodeRecord = node;
42
+ for (const field of this.REQUIRED) {
43
+ if (!nodeRecord[field]) {
44
+ errors.push(`Missing required field: ${field}`);
45
+ }
46
+ }
47
+ return errors;
48
+ }
49
+ }
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Node Types - string type system for nodes
3
+ *
4
+ * Base types: FUNCTION, CLASS, METHOD, etc.
5
+ * Namespaced types: http:route, socketio:emit, express:router, etc.
6
+ *
7
+ * Namespace convention:
8
+ * - http:* - HTTP endpoints and requests
9
+ * - express:* - Express.js specifics
10
+ * - socketio:* - Socket.IO
11
+ * - db:* - Database queries
12
+ * - fs:* - Filesystem operations
13
+ */
14
+ export declare const NODE_TYPE: {
15
+ readonly FUNCTION: "FUNCTION";
16
+ readonly CLASS: "CLASS";
17
+ readonly METHOD: "METHOD";
18
+ readonly VARIABLE: "VARIABLE";
19
+ readonly PARAMETER: "PARAMETER";
20
+ readonly CONSTANT: "CONSTANT";
21
+ readonly LITERAL: "LITERAL";
22
+ readonly EXPRESSION: "EXPRESSION";
23
+ readonly MODULE: "MODULE";
24
+ readonly IMPORT: "IMPORT";
25
+ readonly EXPORT: "EXPORT";
26
+ readonly CALL: "CALL";
27
+ readonly PROJECT: "PROJECT";
28
+ readonly SERVICE: "SERVICE";
29
+ readonly FILE: "FILE";
30
+ readonly SCOPE: "SCOPE";
31
+ readonly EXTERNAL: "EXTERNAL";
32
+ readonly EXTERNAL_MODULE: "EXTERNAL_MODULE";
33
+ readonly SIDE_EFFECT: "SIDE_EFFECT";
34
+ };
35
+ export type BaseNodeType = typeof NODE_TYPE[keyof typeof NODE_TYPE];
36
+ export declare const NAMESPACED_TYPE: {
37
+ readonly HTTP_ROUTE: "http:route";
38
+ readonly HTTP_REQUEST: "http:request";
39
+ readonly EXPRESS_ROUTER: "express:router";
40
+ readonly EXPRESS_MIDDLEWARE: "express:middleware";
41
+ readonly EXPRESS_MOUNT: "express:mount";
42
+ readonly SOCKETIO_EMIT: "socketio:emit";
43
+ readonly SOCKETIO_ON: "socketio:on";
44
+ readonly SOCKETIO_NAMESPACE: "socketio:namespace";
45
+ readonly DB_QUERY: "db:query";
46
+ readonly DB_CONNECTION: "db:connection";
47
+ readonly FS_READ: "fs:read";
48
+ readonly FS_WRITE: "fs:write";
49
+ readonly FS_OPERATION: "fs:operation";
50
+ readonly NET_REQUEST: "net:request";
51
+ readonly NET_STDIO: "net:stdio";
52
+ readonly EVENT_LISTENER: "event:listener";
53
+ readonly EVENT_EMIT: "event:emit";
54
+ readonly GUARANTEE_QUEUE: "guarantee:queue";
55
+ readonly GUARANTEE_API: "guarantee:api";
56
+ readonly GUARANTEE_PERMISSION: "guarantee:permission";
57
+ };
58
+ export type NamespacedNodeType = typeof NAMESPACED_TYPE[keyof typeof NAMESPACED_TYPE];
59
+ export type NodeType = BaseNodeType | NamespacedNodeType | string;
60
+ /**
61
+ * Check if type is namespaced (contains :)
62
+ */
63
+ export declare function isNamespacedType(nodeType: string): boolean;
64
+ /**
65
+ * Get namespace from type
66
+ * @returns namespace or null for base types
67
+ */
68
+ export declare function getNamespace(nodeType: string): string | null;
69
+ /**
70
+ * Get base name from namespaced type
71
+ */
72
+ export declare function getBaseName(nodeType: string): string;
73
+ /**
74
+ * Check if type is an endpoint (HTTP route, WebSocket handler, etc.)
75
+ */
76
+ export declare function isEndpointType(nodeType: string): boolean;
77
+ /**
78
+ * Check if type is a side effect (DB, FS, Network)
79
+ */
80
+ export declare function isSideEffectType(nodeType: string): boolean;
81
+ /**
82
+ * Check if type matches a pattern with wildcard
83
+ * @param nodeType - node type
84
+ * @param pattern - pattern (e.g., "http:*", "FUNCTION")
85
+ */
86
+ export declare function matchesTypePattern(nodeType: string, pattern: string): boolean;
87
+ /**
88
+ * Check if type is a guarantee type (guarantee:queue, guarantee:api, etc.)
89
+ */
90
+ export declare function isGuaranteeType(nodeType: string): boolean;
91
+ //# sourceMappingURL=NodeKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeKind.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/NodeKind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAKpE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;CAoClB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,eAAe,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAGtF,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAIlE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAa7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGzD"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Node Types - string type system for nodes
3
+ *
4
+ * Base types: FUNCTION, CLASS, METHOD, etc.
5
+ * Namespaced types: http:route, socketio:emit, express:router, etc.
6
+ *
7
+ * Namespace convention:
8
+ * - http:* - HTTP endpoints and requests
9
+ * - express:* - Express.js specifics
10
+ * - socketio:* - Socket.IO
11
+ * - db:* - Database queries
12
+ * - fs:* - Filesystem operations
13
+ */
14
+ // === BASE TYPES ===
15
+ // Abstract types, not tied to language or framework
16
+ export const NODE_TYPE = {
17
+ // Core code entities
18
+ FUNCTION: 'FUNCTION',
19
+ CLASS: 'CLASS',
20
+ METHOD: 'METHOD',
21
+ VARIABLE: 'VARIABLE',
22
+ PARAMETER: 'PARAMETER',
23
+ CONSTANT: 'CONSTANT',
24
+ LITERAL: 'LITERAL',
25
+ EXPRESSION: 'EXPRESSION', // Generic expression node for data flow tracking
26
+ // Module system
27
+ MODULE: 'MODULE',
28
+ IMPORT: 'IMPORT',
29
+ EXPORT: 'EXPORT',
30
+ // Call graph
31
+ CALL: 'CALL', // unified METHOD_CALL + CALL_SITE
32
+ // Project structure
33
+ PROJECT: 'PROJECT',
34
+ SERVICE: 'SERVICE',
35
+ FILE: 'FILE',
36
+ SCOPE: 'SCOPE',
37
+ // External dependencies
38
+ EXTERNAL: 'EXTERNAL',
39
+ EXTERNAL_MODULE: 'EXTERNAL_MODULE',
40
+ // Generic side effects
41
+ SIDE_EFFECT: 'SIDE_EFFECT',
42
+ };
43
+ // === NAMESPACED TYPES ===
44
+ // Types specific to frameworks and libraries
45
+ export const NAMESPACED_TYPE = {
46
+ // HTTP (generic)
47
+ HTTP_ROUTE: 'http:route',
48
+ HTTP_REQUEST: 'http:request',
49
+ // Express.js
50
+ EXPRESS_ROUTER: 'express:router',
51
+ EXPRESS_MIDDLEWARE: 'express:middleware',
52
+ EXPRESS_MOUNT: 'express:mount',
53
+ // Socket.IO
54
+ SOCKETIO_EMIT: 'socketio:emit',
55
+ SOCKETIO_ON: 'socketio:on',
56
+ SOCKETIO_NAMESPACE: 'socketio:namespace',
57
+ // Database
58
+ DB_QUERY: 'db:query',
59
+ DB_CONNECTION: 'db:connection',
60
+ // Filesystem
61
+ FS_READ: 'fs:read',
62
+ FS_WRITE: 'fs:write',
63
+ FS_OPERATION: 'fs:operation',
64
+ // Network
65
+ NET_REQUEST: 'net:request',
66
+ NET_STDIO: 'net:stdio',
67
+ // Events
68
+ EVENT_LISTENER: 'event:listener',
69
+ EVENT_EMIT: 'event:emit',
70
+ // Guarantees (contract-based)
71
+ GUARANTEE_QUEUE: 'guarantee:queue',
72
+ GUARANTEE_API: 'guarantee:api',
73
+ GUARANTEE_PERMISSION: 'guarantee:permission',
74
+ };
75
+ // === HELPERS ===
76
+ /**
77
+ * Check if type is namespaced (contains :)
78
+ */
79
+ export function isNamespacedType(nodeType) {
80
+ return nodeType !== undefined && nodeType !== null && nodeType.includes(':');
81
+ }
82
+ /**
83
+ * Get namespace from type
84
+ * @returns namespace or null for base types
85
+ */
86
+ export function getNamespace(nodeType) {
87
+ if (!nodeType || !nodeType.includes(':'))
88
+ return null;
89
+ return nodeType.split(':')[0];
90
+ }
91
+ /**
92
+ * Get base name from namespaced type
93
+ */
94
+ export function getBaseName(nodeType) {
95
+ if (!nodeType)
96
+ return '';
97
+ if (!nodeType.includes(':'))
98
+ return nodeType;
99
+ return nodeType.split(':').slice(1).join(':');
100
+ }
101
+ /**
102
+ * Check if type is an endpoint (HTTP route, WebSocket handler, etc.)
103
+ */
104
+ export function isEndpointType(nodeType) {
105
+ if (!nodeType)
106
+ return false;
107
+ const ns = getNamespace(nodeType);
108
+ return ns === 'http' || ns === 'express' || ns === 'socketio';
109
+ }
110
+ /**
111
+ * Check if type is a side effect (DB, FS, Network)
112
+ */
113
+ export function isSideEffectType(nodeType) {
114
+ if (!nodeType)
115
+ return false;
116
+ if (nodeType === NODE_TYPE.SIDE_EFFECT)
117
+ return true;
118
+ const ns = getNamespace(nodeType);
119
+ return ns === 'db' || ns === 'fs' || ns === 'net';
120
+ }
121
+ /**
122
+ * Check if type matches a pattern with wildcard
123
+ * @param nodeType - node type
124
+ * @param pattern - pattern (e.g., "http:*", "FUNCTION")
125
+ */
126
+ export function matchesTypePattern(nodeType, pattern) {
127
+ if (!nodeType || !pattern)
128
+ return false;
129
+ // Exact match
130
+ if (nodeType === pattern)
131
+ return true;
132
+ // Wildcard match (e.g., "http:*" matches "http:route")
133
+ if (pattern.endsWith(':*')) {
134
+ const patternNs = pattern.slice(0, -2);
135
+ return getNamespace(nodeType) === patternNs;
136
+ }
137
+ return false;
138
+ }
139
+ /**
140
+ * Check if type is a guarantee type (guarantee:queue, guarantee:api, etc.)
141
+ */
142
+ export function isGuaranteeType(nodeType) {
143
+ if (!nodeType)
144
+ return false;
145
+ return getNamespace(nodeType) === 'guarantee';
146
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ParameterNode - contract for PARAMETER node
3
+ */
4
+ import type { BaseNodeRecord } from '@grafema/types';
5
+ interface ParameterNodeRecord extends BaseNodeRecord {
6
+ type: 'PARAMETER';
7
+ column: number;
8
+ functionId: string;
9
+ index: number;
10
+ defaultValue?: unknown;
11
+ rest: boolean;
12
+ }
13
+ interface ParameterNodeOptions {
14
+ index?: number;
15
+ defaultValue?: unknown;
16
+ rest?: boolean;
17
+ }
18
+ export declare class ParameterNode {
19
+ static readonly TYPE: "PARAMETER";
20
+ static readonly REQUIRED: readonly ["name", "file", "line", "functionId"];
21
+ static readonly OPTIONAL: readonly ["column", "index", "defaultValue", "rest"];
22
+ static create(name: string, file: string, line: number, column: number, functionId: string, options?: ParameterNodeOptions): ParameterNodeRecord;
23
+ static validate(node: ParameterNodeRecord): string[];
24
+ }
25
+ export type { ParameterNodeRecord };
26
+ //# sourceMappingURL=ParameterNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParameterNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ParameterNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,UAAU,mBAAoB,SAAQ,cAAc;IAClD,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IAE5C,MAAM,CAAC,QAAQ,CAAC,QAAQ,kDAAmD;IAC3E,MAAM,CAAC,QAAQ,CAAC,QAAQ,uDAAwD;IAEhF,MAAM,CAAC,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,oBAAyB,GACjC,mBAAmB;IAoBtB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAAE;CAgBrD;AAED,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * ParameterNode - contract for PARAMETER node
3
+ */
4
+ export class ParameterNode {
5
+ static TYPE = 'PARAMETER';
6
+ static REQUIRED = ['name', 'file', 'line', 'functionId'];
7
+ static OPTIONAL = ['column', 'index', 'defaultValue', 'rest'];
8
+ static create(name, file, line, column, functionId, options = {}) {
9
+ if (!name)
10
+ throw new Error('ParameterNode.create: name is required');
11
+ if (!file)
12
+ throw new Error('ParameterNode.create: file is required');
13
+ if (!line)
14
+ throw new Error('ParameterNode.create: line is required');
15
+ if (!functionId)
16
+ throw new Error('ParameterNode.create: functionId is required');
17
+ return {
18
+ id: `${file}:PARAMETER:${name}:${line}:${options.index || 0}`,
19
+ type: this.TYPE,
20
+ name,
21
+ file,
22
+ line,
23
+ column: column || 0,
24
+ functionId,
25
+ index: options.index || 0,
26
+ defaultValue: options.defaultValue,
27
+ rest: options.rest || false
28
+ };
29
+ }
30
+ static validate(node) {
31
+ const errors = [];
32
+ if (node.type !== this.TYPE) {
33
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
34
+ }
35
+ const nodeRecord = node;
36
+ for (const field of this.REQUIRED) {
37
+ if (!nodeRecord[field]) {
38
+ errors.push(`Missing required field: ${field}`);
39
+ }
40
+ }
41
+ return errors;
42
+ }
43
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ScopeNode - contract for SCOPE node
3
+ */
4
+ import type { BaseNodeRecord } from '@grafema/types';
5
+ interface ScopeNodeRecord extends BaseNodeRecord {
6
+ type: 'SCOPE';
7
+ scopeType: string;
8
+ conditional: boolean;
9
+ parentScopeId?: string;
10
+ parentFunctionId?: string;
11
+ capturesFrom?: string[];
12
+ }
13
+ interface ScopeNodeOptions {
14
+ name?: string;
15
+ conditional?: boolean;
16
+ parentScopeId?: string;
17
+ parentFunctionId?: string;
18
+ capturesFrom?: string[];
19
+ counter?: number;
20
+ }
21
+ export declare class ScopeNode {
22
+ static readonly TYPE: "SCOPE";
23
+ static readonly REQUIRED: readonly ["scopeType", "file", "line"];
24
+ static readonly OPTIONAL: readonly ["name", "conditional", "parentScopeId", "parentFunctionId", "capturesFrom"];
25
+ /**
26
+ * Create SCOPE node
27
+ */
28
+ static create(scopeType: string, file: string, line: number, options?: ScopeNodeOptions): ScopeNodeRecord;
29
+ static validate(node: ScopeNodeRecord): string[];
30
+ }
31
+ export type { ScopeNodeRecord };
32
+ //# sourceMappingURL=ScopeNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeNode.d.ts","sourceRoot":"","sources":["../../../src/core/nodes/ScopeNode.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,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAExC,MAAM,CAAC,QAAQ,CAAC,QAAQ,yCAA0C;IAClE,MAAM,CAAC,QAAQ,CAAC,QAAQ,wFAAyF;IAEjH;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC7B,eAAe;IAuBlB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE;CAgBjD;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ScopeNode - contract for SCOPE node
3
+ */
4
+ export class ScopeNode {
5
+ static TYPE = 'SCOPE';
6
+ static REQUIRED = ['scopeType', 'file', 'line'];
7
+ static OPTIONAL = ['name', 'conditional', 'parentScopeId', 'parentFunctionId', 'capturesFrom'];
8
+ /**
9
+ * Create SCOPE node
10
+ */
11
+ static create(scopeType, file, line, options = {}) {
12
+ if (!scopeType)
13
+ throw new Error('ScopeNode.create: scopeType is required');
14
+ if (!file)
15
+ throw new Error('ScopeNode.create: file is required');
16
+ if (line === undefined)
17
+ throw new Error('ScopeNode.create: line is required');
18
+ const name = options.name || scopeType;
19
+ const counter = options.counter !== undefined ? `:${options.counter}` : '';
20
+ const id = `${file}:SCOPE:${name}:${line}${counter}`;
21
+ return {
22
+ id,
23
+ type: this.TYPE,
24
+ scopeType,
25
+ name,
26
+ file,
27
+ line,
28
+ conditional: options.conditional || false,
29
+ parentScopeId: options.parentScopeId,
30
+ parentFunctionId: options.parentFunctionId,
31
+ capturesFrom: options.capturesFrom
32
+ };
33
+ }
34
+ static validate(node) {
35
+ const errors = [];
36
+ if (node.type !== this.TYPE) {
37
+ errors.push(`Expected type ${this.TYPE}, got ${node.type}`);
38
+ }
39
+ const nodeRecord = node;
40
+ for (const field of this.REQUIRED) {
41
+ if (nodeRecord[field] === undefined || nodeRecord[field] === null) {
42
+ errors.push(`Missing required field: ${field}`);
43
+ }
44
+ }
45
+ return errors;
46
+ }
47
+ }