@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,307 @@
1
+ /**
2
+ * AnalysisWorker - worker thread for parallel AST analysis
3
+ *
4
+ * Each worker:
5
+ * 1. Connects to RFDB server
6
+ * 2. Receives file paths to analyze
7
+ * 3. Parses AST and writes nodes/edges directly to RFDB
8
+ *
9
+ * Communication:
10
+ * Main -> Worker: { type: 'analyze', file, moduleId, moduleName }
11
+ * Worker -> Main: { type: 'done', file, stats } | { type: 'error', file, error }
12
+ */
13
+ import { parentPort, workerData } from 'worker_threads';
14
+ import { readFileSync } from 'fs';
15
+ import { parse } from '@babel/parser';
16
+ import traverseModule from '@babel/traverse';
17
+ import { RFDBClient } from '@grafema/rfdb-client';
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ const traverse = traverseModule.default || traverseModule;
20
+ // Worker state
21
+ let client = null;
22
+ const workerId = workerData?.workerId || 0;
23
+ let socketPath = workerData?.socketPath || '/tmp/rfdb.sock';
24
+ let connected = false;
25
+ /**
26
+ * Connect to RFDB server
27
+ */
28
+ async function connect() {
29
+ if (connected)
30
+ return;
31
+ client = new RFDBClient(socketPath);
32
+ await client.connect();
33
+ connected = true;
34
+ parentPort?.postMessage({ type: 'ready', workerId });
35
+ }
36
+ /**
37
+ * Parse a file and write results directly to RFDB
38
+ */
39
+ async function analyzeFile(filePath, moduleId, moduleName) {
40
+ const stats = { nodes: 0, edges: 0, functions: 0, calls: 0 };
41
+ try {
42
+ const code = readFileSync(filePath, 'utf-8');
43
+ const ast = parse(code, {
44
+ sourceType: 'module',
45
+ plugins: ['jsx', 'typescript'],
46
+ errorRecovery: true
47
+ });
48
+ // Collections to batch write
49
+ const nodes = [];
50
+ const edges = [];
51
+ // Counters for unique IDs
52
+ let callCounter = 0;
53
+ // Add module node
54
+ nodes.push({
55
+ id: moduleId,
56
+ type: 'MODULE',
57
+ name: moduleName,
58
+ file: filePath
59
+ });
60
+ // Extract imports
61
+ traverse(ast, {
62
+ ImportDeclaration(path) {
63
+ const node = path.node;
64
+ const source = node.source.value;
65
+ node.specifiers.forEach(spec => {
66
+ let importedName;
67
+ let localName;
68
+ if (spec.type === 'ImportDefaultSpecifier') {
69
+ importedName = 'default';
70
+ localName = spec.local.name;
71
+ }
72
+ else if (spec.type === 'ImportNamespaceSpecifier') {
73
+ importedName = '*';
74
+ localName = spec.local.name;
75
+ }
76
+ else {
77
+ importedName = spec.imported?.name || spec.local.name;
78
+ localName = spec.local.name;
79
+ }
80
+ const importId = `IMPORT#${localName}#${filePath}#${node.loc.start.line}`;
81
+ nodes.push({
82
+ id: importId,
83
+ type: 'IMPORT',
84
+ name: localName,
85
+ file: filePath,
86
+ metadata: JSON.stringify({ importedName, source, line: node.loc.start.line })
87
+ });
88
+ edges.push({ src: moduleId, dst: importId, type: 'CONTAINS' });
89
+ });
90
+ }
91
+ });
92
+ // Extract functions
93
+ traverse(ast, {
94
+ FunctionDeclaration(path) {
95
+ if (path.getFunctionParent())
96
+ return;
97
+ const node = path.node;
98
+ if (!node.id)
99
+ return;
100
+ const funcName = node.id.name;
101
+ const functionId = `FUNCTION#${funcName}#${filePath}#${node.loc.start.line}`;
102
+ nodes.push({
103
+ id: functionId,
104
+ type: 'FUNCTION',
105
+ name: funcName,
106
+ file: filePath,
107
+ metadata: JSON.stringify({
108
+ line: node.loc.start.line,
109
+ async: node.async || false,
110
+ generator: node.generator || false,
111
+ exported: path.parent?.type?.includes('Export') || false
112
+ })
113
+ });
114
+ edges.push({ src: moduleId, dst: functionId, type: 'CONTAINS' });
115
+ stats.functions++;
116
+ // Extract parameters
117
+ node.params.forEach((param, index) => {
118
+ if (param.type === 'Identifier') {
119
+ const paramId = `PARAMETER#${param.name}#${functionId}#${index}`;
120
+ nodes.push({
121
+ id: paramId,
122
+ type: 'PARAMETER',
123
+ name: param.name,
124
+ file: filePath,
125
+ metadata: JSON.stringify({ index, functionId })
126
+ });
127
+ edges.push({ src: functionId, dst: paramId, type: 'CONTAINS' });
128
+ }
129
+ });
130
+ },
131
+ ArrowFunctionExpression(path) {
132
+ // Only process top-level arrow functions assigned to variables
133
+ if (path.getFunctionParent())
134
+ return;
135
+ const parent = path.parent;
136
+ if (parent.type !== 'VariableDeclarator')
137
+ return;
138
+ if (!('id' in parent) || !parent.id || parent.id.type !== 'Identifier')
139
+ return;
140
+ const funcName = parent.id.name;
141
+ const functionId = `FUNCTION#${funcName}#${filePath}#${path.node.loc.start.line}`;
142
+ nodes.push({
143
+ id: functionId,
144
+ type: 'FUNCTION',
145
+ name: funcName,
146
+ file: filePath,
147
+ metadata: JSON.stringify({
148
+ line: path.node.loc.start.line,
149
+ async: path.node.async || false,
150
+ arrowFunction: true
151
+ })
152
+ });
153
+ edges.push({ src: moduleId, dst: functionId, type: 'CONTAINS' });
154
+ stats.functions++;
155
+ }
156
+ });
157
+ // Extract classes
158
+ traverse(ast, {
159
+ ClassDeclaration(path) {
160
+ if (path.getFunctionParent())
161
+ return;
162
+ const node = path.node;
163
+ if (!node.id)
164
+ return;
165
+ const className = node.id.name;
166
+ const classId = `CLASS#${className}#${filePath}#${node.loc.start.line}`;
167
+ nodes.push({
168
+ id: classId,
169
+ type: 'CLASS',
170
+ name: className,
171
+ file: filePath,
172
+ metadata: JSON.stringify({
173
+ line: node.loc.start.line,
174
+ superClass: node.superClass?.name || null
175
+ })
176
+ });
177
+ edges.push({ src: moduleId, dst: classId, type: 'CONTAINS' });
178
+ // Extract methods
179
+ node.body.body.forEach(member => {
180
+ if (member.type === 'ClassMethod' && member.key.type === 'Identifier') {
181
+ const methodName = member.key.name;
182
+ const methodId = `METHOD#${className}.${methodName}#${filePath}#${member.loc.start.line}`;
183
+ nodes.push({
184
+ id: methodId,
185
+ type: 'METHOD',
186
+ name: methodName,
187
+ file: filePath,
188
+ metadata: JSON.stringify({
189
+ className,
190
+ line: member.loc.start.line,
191
+ async: member.async || false,
192
+ static: member.static || false,
193
+ isConstructor: member.kind === 'constructor'
194
+ })
195
+ });
196
+ edges.push({ src: classId, dst: methodId, type: 'CONTAINS' });
197
+ stats.functions++;
198
+ }
199
+ });
200
+ }
201
+ });
202
+ // Extract call expressions (simplified)
203
+ traverse(ast, {
204
+ CallExpression(path) {
205
+ const node = path.node;
206
+ if (node.callee.type === 'Identifier') {
207
+ const callId = `CALL#${node.callee.name}#${filePath}#${node.loc.start.line}:${callCounter++}`;
208
+ nodes.push({
209
+ id: callId,
210
+ type: 'CALL',
211
+ name: node.callee.name,
212
+ file: filePath,
213
+ metadata: JSON.stringify({
214
+ line: node.loc.start.line,
215
+ argsCount: node.arguments.length
216
+ })
217
+ });
218
+ // Find parent function to connect
219
+ const parentFunc = path.getFunctionParent();
220
+ if (parentFunc) {
221
+ const parentName = parentFunc.node.id?.name ||
222
+ (parentFunc.parent?.id?.name) ||
223
+ 'anonymous';
224
+ edges.push({
225
+ src: `FUNCTION#${parentName}#${filePath}#${parentFunc.node.loc.start.line}`,
226
+ dst: callId,
227
+ type: 'CONTAINS'
228
+ });
229
+ }
230
+ else {
231
+ edges.push({ src: moduleId, dst: callId, type: 'CONTAINS' });
232
+ }
233
+ stats.calls++;
234
+ }
235
+ }
236
+ });
237
+ // Batch write to RFDB
238
+ if (nodes.length > 0 && client) {
239
+ await client.addNodes(nodes);
240
+ stats.nodes = nodes.length;
241
+ }
242
+ if (edges.length > 0 && client) {
243
+ await client.addEdges(edges, true); // skipValidation for speed
244
+ stats.edges = edges.length;
245
+ }
246
+ return stats;
247
+ }
248
+ catch (err) {
249
+ throw new Error(`Failed to analyze ${filePath}: ${err.message}`);
250
+ }
251
+ }
252
+ /**
253
+ * Handle messages from main thread
254
+ */
255
+ if (parentPort) {
256
+ parentPort.on('message', async (msg) => {
257
+ switch (msg.type) {
258
+ case 'connect':
259
+ try {
260
+ socketPath = msg.socketPath || socketPath;
261
+ await connect();
262
+ }
263
+ catch (err) {
264
+ parentPort.postMessage({ type: 'error', error: err.message });
265
+ }
266
+ break;
267
+ case 'analyze':
268
+ try {
269
+ const stats = await analyzeFile(msg.file, msg.moduleId, msg.moduleName);
270
+ parentPort.postMessage({
271
+ type: 'done',
272
+ file: msg.file,
273
+ stats,
274
+ workerId
275
+ });
276
+ }
277
+ catch (err) {
278
+ parentPort.postMessage({
279
+ type: 'error',
280
+ file: msg.file,
281
+ error: err.message,
282
+ workerId
283
+ });
284
+ }
285
+ break;
286
+ case 'disconnect':
287
+ if (client) {
288
+ await client.close();
289
+ connected = false;
290
+ }
291
+ parentPort.postMessage({ type: 'disconnected', workerId });
292
+ break;
293
+ case 'exit':
294
+ if (client) {
295
+ await client.close();
296
+ }
297
+ process.exit(0);
298
+ break;
299
+ }
300
+ });
301
+ // Auto-connect on start if socketPath provided
302
+ if (workerData?.autoConnect) {
303
+ connect().catch(err => {
304
+ parentPort.postMessage({ type: 'error', error: err.message });
305
+ });
306
+ }
307
+ }
@@ -0,0 +1,156 @@
1
+ /**
2
+ * GraphBackend - abstract base class for graph storage implementations
3
+ *
4
+ * This defines the full contract for graph storage backends.
5
+ * All operations are async for compatibility with disk-based storage.
6
+ *
7
+ * Implementations:
8
+ * - RFDBServerBackend (Rust-based, production)
9
+ * - TestBackend (wrapper over RFDBServerBackend for tests)
10
+ */
11
+ import type { NodeRecord } from '@grafema/types';
12
+ import type { EdgeRecord, EdgeType } from '@grafema/types';
13
+ export type { NodeRecord as Node } from '@grafema/types';
14
+ export type { EdgeRecord as Edge, EdgeType } from '@grafema/types';
15
+ /**
16
+ * Query filter for finding nodes by attributes
17
+ */
18
+ export interface AttrQuery {
19
+ kind?: number;
20
+ version?: string;
21
+ file_id?: string;
22
+ file?: string;
23
+ exported?: boolean;
24
+ type?: string;
25
+ name?: string;
26
+ [key: string]: unknown;
27
+ }
28
+ /**
29
+ * Graph statistics
30
+ */
31
+ export interface GraphStats {
32
+ nodeCount: number;
33
+ edgeCount: number;
34
+ }
35
+ /**
36
+ * Exported graph data
37
+ */
38
+ export interface GraphExport {
39
+ nodes: NodeRecord[];
40
+ edges: EdgeRecord[];
41
+ }
42
+ /**
43
+ * Abstract GraphBackend class - base for all graph storage implementations
44
+ */
45
+ export declare abstract class GraphBackend {
46
+ /**
47
+ * Initialize backend
48
+ */
49
+ abstract initialize(): Promise<void>;
50
+ /**
51
+ * Connect to storage (alias for initialize)
52
+ */
53
+ connect(): Promise<void>;
54
+ /**
55
+ * Close connection and flush data to disk
56
+ */
57
+ abstract close(): Promise<void>;
58
+ /**
59
+ * Clear all data
60
+ */
61
+ abstract clear(): Promise<void>;
62
+ /**
63
+ * Add a single node
64
+ */
65
+ abstract addNode(node: NodeRecord): Promise<void>;
66
+ /**
67
+ * Add multiple nodes (batch operation)
68
+ */
69
+ abstract addNodes(nodes: NodeRecord[]): Promise<void>;
70
+ /**
71
+ * Get node by ID
72
+ */
73
+ abstract getNode(id: string): Promise<NodeRecord | null>;
74
+ /**
75
+ * Check if node exists
76
+ */
77
+ abstract nodeExists(id: string): Promise<boolean>;
78
+ /**
79
+ * Delete a node
80
+ */
81
+ abstract deleteNode(id: string): Promise<void>;
82
+ /**
83
+ * Find nodes by attributes
84
+ * @returns Array of node IDs
85
+ */
86
+ abstract findByAttr(query: AttrQuery): Promise<string[]>;
87
+ /**
88
+ * Add a single edge
89
+ */
90
+ abstract addEdge(edge: EdgeRecord): Promise<void>;
91
+ /**
92
+ * Add multiple edges (batch operation)
93
+ */
94
+ abstract addEdges(edges: EdgeRecord[]): Promise<void>;
95
+ /**
96
+ * Delete an edge
97
+ */
98
+ abstract deleteEdge(src: string, dst: string, type: string): Promise<void>;
99
+ /**
100
+ * Get outgoing edges from a node
101
+ * @param nodeId - Node ID
102
+ * @param edgeTypes - Filter by edge types (optional)
103
+ */
104
+ abstract getOutgoingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<EdgeRecord[]>;
105
+ /**
106
+ * Get incoming edges to a node
107
+ * @param nodeId - Node ID
108
+ * @param edgeTypes - Filter by edge types (optional)
109
+ */
110
+ abstract getIncomingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<EdgeRecord[]>;
111
+ /**
112
+ * BFS traversal from start nodes
113
+ * @param startIds - Starting nodes
114
+ * @param maxDepth - Maximum depth
115
+ * @param edgeTypes - Edge types to traverse (as numbers)
116
+ * @returns Array of reachable node IDs
117
+ */
118
+ abstract bfs(startIds: string[], maxDepth: number, edgeTypes: number[]): Promise<string[]>;
119
+ /**
120
+ * Flush data to disk
121
+ */
122
+ abstract flush(): Promise<void>;
123
+ /**
124
+ * Get graph statistics
125
+ */
126
+ abstract getStats(): Promise<GraphStats>;
127
+ /**
128
+ * Export entire graph to memory (only for tests!)
129
+ * WARNING: Do not use on large graphs
130
+ */
131
+ abstract export(): Promise<GraphExport>;
132
+ /**
133
+ * Find nodes by predicate (for demo-gui compatibility)
134
+ * WARNING: May be slow on large graphs
135
+ */
136
+ abstract findNodes(predicate: (node: NodeRecord) => boolean): Promise<NodeRecord[]>;
137
+ /**
138
+ * Get all nodes (for GUI - only for first level visualization)
139
+ * WARNING: Do not use on large graphs
140
+ */
141
+ abstract getAllNodes(): Promise<NodeRecord[]>;
142
+ /**
143
+ * Get all edges (for GUI)
144
+ * WARNING: Do not use on large graphs
145
+ */
146
+ abstract getAllEdges(): Promise<EdgeRecord[]>;
147
+ }
148
+ /**
149
+ * Convert node type to numeric kind
150
+ */
151
+ export declare function typeToKind(type: string): number;
152
+ /**
153
+ * Convert edge type to number
154
+ */
155
+ export declare function edgeTypeToNumber(type: string): number;
156
+ //# sourceMappingURL=GraphBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphBackend.d.ts","sourceRoot":"","sources":["../../src/core/GraphBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * GraphBackend - abstract base class for graph storage implementations
3
+ *
4
+ * This defines the full contract for graph storage backends.
5
+ * All operations are async for compatibility with disk-based storage.
6
+ *
7
+ * Implementations:
8
+ * - RFDBServerBackend (Rust-based, production)
9
+ * - TestBackend (wrapper over RFDBServerBackend for tests)
10
+ */
11
+ /**
12
+ * Abstract GraphBackend class - base for all graph storage implementations
13
+ */
14
+ export class GraphBackend {
15
+ /**
16
+ * Connect to storage (alias for initialize)
17
+ */
18
+ async connect() {
19
+ return this.initialize();
20
+ }
21
+ }
22
+ /**
23
+ * Node type to numeric kind mapping
24
+ */
25
+ const NODE_TYPE_TO_KIND = {
26
+ 'PROJECT': 1,
27
+ 'SERVICE': 2,
28
+ 'FUNCTION': 3,
29
+ 'CLASS': 4,
30
+ 'METHOD': 5,
31
+ 'VARIABLE': 6,
32
+ 'PARAMETER': 7,
33
+ 'MODULE': 8,
34
+ 'ROUTE': 9,
35
+ 'ENDPOINT': 10,
36
+ 'FILE': 11,
37
+ 'EXTERNAL_MODULE': 12,
38
+ 'IMPORT': 13,
39
+ 'EXPORT': 14,
40
+ 'CALL_SITE': 15,
41
+ 'METHOD_CALL': 16,
42
+ 'SCOPE': 17,
43
+ 'VARIABLE_DECLARATION': 18,
44
+ 'CONSTANT': 19,
45
+ 'EVENT_LISTENER': 20,
46
+ 'HTTP_REQUEST': 21,
47
+ };
48
+ /**
49
+ * Convert node type to numeric kind
50
+ */
51
+ export function typeToKind(type) {
52
+ return NODE_TYPE_TO_KIND[type] || 0;
53
+ }
54
+ /**
55
+ * Edge type to numeric mapping
56
+ */
57
+ const EDGE_TYPE_TO_NUMBER = {
58
+ 'CONTAINS': 1,
59
+ 'DEPENDS_ON': 2,
60
+ 'CALLS': 3,
61
+ 'EXTENDS': 4,
62
+ 'IMPLEMENTS': 5,
63
+ 'USES': 6,
64
+ 'DEFINES': 7,
65
+ 'IMPORTS': 8,
66
+ 'EXPORTS': 9,
67
+ 'ROUTES_TO': 10,
68
+ 'DECLARES': 11,
69
+ 'HAS_SCOPE': 12,
70
+ 'CAPTURES': 13,
71
+ 'MODIFIES': 14,
72
+ 'WRITES_TO': 15,
73
+ 'INSTANCE_OF': 16,
74
+ 'HANDLED_BY': 17,
75
+ 'HAS_CALLBACK': 18,
76
+ 'MAKES_REQUEST': 19,
77
+ 'IMPORTS_FROM': 20,
78
+ 'EXPORTS_TO': 21,
79
+ };
80
+ /**
81
+ * Convert edge type to number
82
+ */
83
+ export function edgeTypeToNumber(type) {
84
+ return EDGE_TYPE_TO_NUMBER[type] || 0;
85
+ }