@grafema/core 0.1.1-alpha → 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 (319) hide show
  1. package/dist/Orchestrator.d.ts +7 -0
  2. package/dist/Orchestrator.d.ts.map +1 -1
  3. package/dist/Orchestrator.js +25 -3
  4. package/dist/config/ConfigLoader.d.ts +18 -0
  5. package/dist/config/ConfigLoader.d.ts.map +1 -1
  6. package/dist/config/ConfigLoader.js +65 -3
  7. package/dist/core/FileExplainer.d.ts +101 -0
  8. package/dist/core/FileExplainer.d.ts.map +1 -0
  9. package/dist/core/FileExplainer.js +139 -0
  10. package/dist/core/NodeFactory.d.ts +44 -5
  11. package/dist/core/NodeFactory.d.ts.map +1 -1
  12. package/dist/core/NodeFactory.js +52 -7
  13. package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -1
  14. package/dist/core/nodes/ArrayLiteralNode.js +4 -2
  15. package/dist/core/nodes/BranchNode.d.ts +41 -0
  16. package/dist/core/nodes/BranchNode.d.ts.map +1 -0
  17. package/dist/core/nodes/BranchNode.js +82 -0
  18. package/dist/core/nodes/CallSiteNode.d.ts +2 -2
  19. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
  20. package/dist/core/nodes/CallSiteNode.js +9 -5
  21. package/dist/core/nodes/CaseNode.d.ts +43 -0
  22. package/dist/core/nodes/CaseNode.d.ts.map +1 -0
  23. package/dist/core/nodes/CaseNode.js +81 -0
  24. package/dist/core/nodes/ClassNode.d.ts +2 -2
  25. package/dist/core/nodes/ClassNode.d.ts.map +1 -1
  26. package/dist/core/nodes/ClassNode.js +8 -4
  27. package/dist/core/nodes/ConstantNode.d.ts +2 -2
  28. package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
  29. package/dist/core/nodes/ConstantNode.js +6 -4
  30. package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
  31. package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
  32. package/dist/core/nodes/ConstructorCallNode.js +171 -0
  33. package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
  34. package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
  35. package/dist/core/nodes/DatabaseQueryNode.js +5 -2
  36. package/dist/core/nodes/DecoratorNode.d.ts +2 -2
  37. package/dist/core/nodes/DecoratorNode.d.ts.map +1 -1
  38. package/dist/core/nodes/DecoratorNode.js +5 -3
  39. package/dist/core/nodes/EnumNode.d.ts +2 -2
  40. package/dist/core/nodes/EnumNode.d.ts.map +1 -1
  41. package/dist/core/nodes/EnumNode.js +5 -3
  42. package/dist/core/nodes/EventListenerNode.d.ts +4 -4
  43. package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
  44. package/dist/core/nodes/EventListenerNode.js +7 -4
  45. package/dist/core/nodes/ExportNode.d.ts +2 -2
  46. package/dist/core/nodes/ExportNode.d.ts.map +1 -1
  47. package/dist/core/nodes/ExportNode.js +8 -4
  48. package/dist/core/nodes/ExpressionNode.d.ts +2 -2
  49. package/dist/core/nodes/ExpressionNode.d.ts.map +1 -1
  50. package/dist/core/nodes/ExpressionNode.js +6 -4
  51. package/dist/core/nodes/ExternalModuleNode.d.ts +4 -0
  52. package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -1
  53. package/dist/core/nodes/ExternalModuleNode.js +10 -2
  54. package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
  55. package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
  56. package/dist/core/nodes/HttpRequestNode.js +7 -4
  57. package/dist/core/nodes/ImportNode.d.ts +10 -2
  58. package/dist/core/nodes/ImportNode.d.ts.map +1 -1
  59. package/dist/core/nodes/ImportNode.js +21 -4
  60. package/dist/core/nodes/InterfaceNode.d.ts +2 -2
  61. package/dist/core/nodes/InterfaceNode.d.ts.map +1 -1
  62. package/dist/core/nodes/InterfaceNode.js +5 -3
  63. package/dist/core/nodes/LiteralNode.d.ts +2 -2
  64. package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
  65. package/dist/core/nodes/LiteralNode.js +6 -4
  66. package/dist/core/nodes/MethodCallNode.d.ts +2 -2
  67. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
  68. package/dist/core/nodes/MethodCallNode.js +9 -5
  69. package/dist/core/nodes/MethodNode.d.ts +2 -2
  70. package/dist/core/nodes/MethodNode.d.ts.map +1 -1
  71. package/dist/core/nodes/MethodNode.js +8 -4
  72. package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -1
  73. package/dist/core/nodes/ObjectLiteralNode.js +4 -2
  74. package/dist/core/nodes/ParameterNode.d.ts +2 -2
  75. package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
  76. package/dist/core/nodes/ParameterNode.js +5 -3
  77. package/dist/core/nodes/TypeNode.d.ts +2 -2
  78. package/dist/core/nodes/TypeNode.d.ts.map +1 -1
  79. package/dist/core/nodes/TypeNode.js +5 -3
  80. package/dist/core/nodes/VariableDeclarationNode.d.ts +2 -2
  81. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
  82. package/dist/core/nodes/VariableDeclarationNode.js +9 -5
  83. package/dist/core/nodes/index.d.ts +3 -0
  84. package/dist/core/nodes/index.d.ts.map +1 -1
  85. package/dist/core/nodes/index.js +3 -0
  86. package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
  87. package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
  88. package/dist/data/builtins/BuiltinRegistry.js +110 -0
  89. package/dist/data/builtins/definitions.d.ts +28 -0
  90. package/dist/data/builtins/definitions.d.ts.map +1 -0
  91. package/dist/data/builtins/definitions.js +250 -0
  92. package/dist/data/builtins/index.d.ts +10 -0
  93. package/dist/data/builtins/index.d.ts.map +1 -0
  94. package/dist/data/builtins/index.js +8 -0
  95. package/dist/data/builtins/jsGlobals.d.ts +18 -0
  96. package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
  97. package/dist/data/builtins/jsGlobals.js +26 -0
  98. package/dist/data/builtins/types.d.ts +34 -0
  99. package/dist/data/builtins/types.d.ts.map +1 -0
  100. package/dist/data/builtins/types.js +7 -0
  101. package/dist/data/globals/definitions.d.ts +27 -0
  102. package/dist/data/globals/definitions.d.ts.map +1 -0
  103. package/dist/data/globals/definitions.js +117 -0
  104. package/dist/data/globals/index.d.ts +36 -0
  105. package/dist/data/globals/index.d.ts.map +1 -0
  106. package/dist/data/globals/index.js +52 -0
  107. package/dist/diagnostics/DiagnosticReporter.d.ts +23 -0
  108. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -1
  109. package/dist/diagnostics/DiagnosticReporter.js +88 -0
  110. package/dist/diagnostics/index.d.ts +1 -1
  111. package/dist/diagnostics/index.d.ts.map +1 -1
  112. package/dist/errors/GrafemaError.d.ts +43 -0
  113. package/dist/errors/GrafemaError.d.ts.map +1 -1
  114. package/dist/errors/GrafemaError.js +50 -0
  115. package/dist/index.d.ts +17 -1
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +17 -1
  118. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  119. package/dist/plugins/analysis/DatabaseAnalyzer.js +3 -2
  120. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  121. package/dist/plugins/analysis/ExpressAnalyzer.js +3 -1
  122. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
  123. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
  124. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
  125. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  126. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +53 -18
  127. package/dist/plugins/analysis/FetchAnalyzer.d.ts +40 -0
  128. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  129. package/dist/plugins/analysis/FetchAnalyzer.js +163 -15
  130. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +157 -26
  131. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  132. package/dist/plugins/analysis/JSASTAnalyzer.js +2418 -191
  133. package/dist/plugins/analysis/RustAnalyzer.js +4 -4
  134. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  135. package/dist/plugins/analysis/SQLiteAnalyzer.js +4 -2
  136. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
  137. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  138. package/dist/plugins/analysis/SocketIOAnalyzer.js +91 -7
  139. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +173 -0
  140. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  141. package/dist/plugins/analysis/ast/GraphBuilder.js +1256 -65
  142. package/dist/plugins/analysis/ast/types.d.ts +294 -0
  143. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  144. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +5 -1
  145. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  146. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +1 -0
  147. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  148. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +12 -1
  149. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +10 -0
  150. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  151. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +62 -0
  152. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
  153. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  154. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +101 -0
  155. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +16 -1
  156. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  157. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +233 -39
  158. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -1
  159. package/dist/plugins/discovery/WorkspaceDiscovery.js +9 -4
  160. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
  161. package/dist/plugins/enrichment/AliasTracker.js +16 -1
  162. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
  163. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
  164. package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
  165. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
  166. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
  167. package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
  168. package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
  169. package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
  170. package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
  171. package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
  172. package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
  173. package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
  174. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
  175. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  176. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +64 -20
  177. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  178. package/dist/plugins/enrichment/MethodCallResolver.js +15 -1
  179. package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
  180. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  181. package/dist/plugins/enrichment/MountPointResolver.js +172 -151
  182. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
  183. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
  184. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
  185. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +5 -27
  186. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  187. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +62 -139
  188. package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
  189. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  190. package/dist/plugins/indexing/JSModuleIndexer.js +58 -0
  191. package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
  192. package/dist/plugins/indexing/RustModuleIndexer.js +4 -4
  193. package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
  194. package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
  195. package/dist/plugins/validation/BrokenImportValidator.js +249 -0
  196. package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
  197. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  198. package/dist/plugins/validation/CallResolverValidator.js +101 -76
  199. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
  200. package/dist/plugins/validation/DataFlowValidator.js +49 -41
  201. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  202. package/dist/plugins/validation/GraphConnectivityValidator.js +25 -1
  203. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  204. package/dist/plugins/validation/SQLInjectionValidator.js +2 -3
  205. package/dist/queries/findCallsInFunction.d.ts +52 -0
  206. package/dist/queries/findCallsInFunction.d.ts.map +1 -0
  207. package/dist/queries/findCallsInFunction.js +135 -0
  208. package/dist/queries/findContainingFunction.d.ts +45 -0
  209. package/dist/queries/findContainingFunction.d.ts.map +1 -0
  210. package/dist/queries/findContainingFunction.js +54 -0
  211. package/dist/queries/index.d.ts +14 -0
  212. package/dist/queries/index.d.ts.map +1 -0
  213. package/dist/queries/index.js +11 -0
  214. package/dist/queries/traceValues.d.ts +70 -0
  215. package/dist/queries/traceValues.d.ts.map +1 -0
  216. package/dist/queries/traceValues.js +299 -0
  217. package/dist/queries/types.d.ts +163 -0
  218. package/dist/queries/types.d.ts.map +1 -0
  219. package/dist/queries/types.js +9 -0
  220. package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
  221. package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
  222. package/dist/schema/GraphSchemaExtractor.js +124 -0
  223. package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
  224. package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
  225. package/dist/schema/InterfaceSchemaExtractor.js +112 -0
  226. package/dist/schema/index.d.ts +5 -0
  227. package/dist/schema/index.d.ts.map +1 -0
  228. package/dist/schema/index.js +2 -0
  229. package/dist/storage/backends/RFDBServerBackend.d.ts +12 -18
  230. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  231. package/dist/storage/backends/RFDBServerBackend.js +41 -52
  232. package/dist/storage/backends/typeValidation.d.ts.map +1 -1
  233. package/dist/storage/backends/typeValidation.js +1 -0
  234. package/package.json +3 -3
  235. package/src/Orchestrator.ts +35 -3
  236. package/src/config/ConfigLoader.ts +94 -3
  237. package/src/core/FileExplainer.ts +179 -0
  238. package/src/core/NodeFactory.ts +72 -8
  239. package/src/core/nodes/ArrayLiteralNode.ts +3 -2
  240. package/src/core/nodes/BranchNode.ts +113 -0
  241. package/src/core/nodes/CallSiteNode.ts +7 -5
  242. package/src/core/nodes/CaseNode.ts +123 -0
  243. package/src/core/nodes/ClassNode.ts +6 -4
  244. package/src/core/nodes/ConstantNode.ts +5 -4
  245. package/src/core/nodes/ConstructorCallNode.ts +217 -0
  246. package/src/core/nodes/DatabaseQueryNode.ts +5 -1
  247. package/src/core/nodes/DecoratorNode.ts +4 -3
  248. package/src/core/nodes/EnumNode.ts +4 -3
  249. package/src/core/nodes/EventListenerNode.ts +7 -4
  250. package/src/core/nodes/ExportNode.ts +6 -4
  251. package/src/core/nodes/ExpressionNode.ts +5 -4
  252. package/src/core/nodes/ExternalModuleNode.ts +11 -2
  253. package/src/core/nodes/HttpRequestNode.ts +7 -4
  254. package/src/core/nodes/ImportNode.ts +31 -4
  255. package/src/core/nodes/InterfaceNode.ts +4 -3
  256. package/src/core/nodes/LiteralNode.ts +5 -4
  257. package/src/core/nodes/MethodCallNode.ts +7 -5
  258. package/src/core/nodes/MethodNode.ts +6 -4
  259. package/src/core/nodes/ObjectLiteralNode.ts +3 -2
  260. package/src/core/nodes/ParameterNode.ts +4 -3
  261. package/src/core/nodes/TypeNode.ts +4 -3
  262. package/src/core/nodes/VariableDeclarationNode.ts +7 -5
  263. package/src/core/nodes/index.ts +3 -0
  264. package/src/data/builtins/BuiltinRegistry.ts +124 -0
  265. package/src/data/builtins/definitions.ts +267 -0
  266. package/src/data/builtins/index.ts +10 -0
  267. package/src/data/builtins/jsGlobals.ts +28 -0
  268. package/src/data/builtins/types.ts +36 -0
  269. package/src/data/globals/definitions.ts +156 -0
  270. package/src/data/globals/index.ts +66 -0
  271. package/src/diagnostics/DiagnosticReporter.ts +120 -0
  272. package/src/diagnostics/index.ts +1 -1
  273. package/src/errors/GrafemaError.ts +65 -0
  274. package/src/index.ts +45 -0
  275. package/src/plugins/analysis/DatabaseAnalyzer.ts +4 -2
  276. package/src/plugins/analysis/ExpressAnalyzer.ts +5 -1
  277. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
  278. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +57 -18
  279. package/src/plugins/analysis/FetchAnalyzer.ts +204 -16
  280. package/src/plugins/analysis/JSASTAnalyzer.ts +2958 -260
  281. package/src/plugins/analysis/RustAnalyzer.ts +4 -4
  282. package/src/plugins/analysis/SQLiteAnalyzer.ts +5 -2
  283. package/src/plugins/analysis/SocketIOAnalyzer.ts +121 -7
  284. package/src/plugins/analysis/ast/GraphBuilder.ts +1578 -70
  285. package/src/plugins/analysis/ast/types.ts +387 -0
  286. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +8 -0
  287. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +16 -1
  288. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +77 -2
  289. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +112 -1
  290. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +272 -47
  291. package/src/plugins/discovery/WorkspaceDiscovery.ts +11 -4
  292. package/src/plugins/enrichment/AliasTracker.ts +22 -1
  293. package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
  294. package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
  295. package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
  296. package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
  297. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +70 -20
  298. package/src/plugins/enrichment/MethodCallResolver.ts +21 -1
  299. package/src/plugins/enrichment/MountPointResolver.ts +206 -198
  300. package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
  301. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +67 -184
  302. package/src/plugins/indexing/JSModuleIndexer.ts +66 -0
  303. package/src/plugins/indexing/RustModuleIndexer.ts +4 -4
  304. package/src/plugins/validation/BrokenImportValidator.ts +325 -0
  305. package/src/plugins/validation/CallResolverValidator.ts +129 -109
  306. package/src/plugins/validation/DataFlowValidator.ts +75 -58
  307. package/src/plugins/validation/GraphConnectivityValidator.ts +39 -1
  308. package/src/plugins/validation/SQLInjectionValidator.ts +2 -5
  309. package/src/queries/README.md +46 -0
  310. package/src/queries/findCallsInFunction.ts +206 -0
  311. package/src/queries/findContainingFunction.ts +83 -0
  312. package/src/queries/index.ts +23 -0
  313. package/src/queries/traceValues.ts +398 -0
  314. package/src/queries/types.ts +187 -0
  315. package/src/schema/GraphSchemaExtractor.ts +177 -0
  316. package/src/schema/InterfaceSchemaExtractor.ts +173 -0
  317. package/src/schema/index.ts +5 -0
  318. package/src/storage/backends/RFDBServerBackend.ts +58 -70
  319. package/src/storage/backends/typeValidation.ts +1 -0
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * @grafema/core - Core analysis engine for GraphDD
3
3
  */
4
4
  // Error types
5
- export { GrafemaError, ConfigError, FileAccessError, LanguageError, DatabaseError, PluginError, AnalysisError, } from './errors/GrafemaError.js';
5
+ export { GrafemaError, ConfigError, FileAccessError, LanguageError, DatabaseError, PluginError, AnalysisError, ValidationError, StrictModeError, } from './errors/GrafemaError.js';
6
6
  // Logging
7
7
  export { ConsoleLogger, createLogger } from './logging/Logger.js';
8
8
  // Diagnostics
@@ -28,6 +28,7 @@ export { ASTWorkerPool } from './core/ASTWorkerPool.js';
28
28
  export { GuaranteeManager } from './core/GuaranteeManager.js';
29
29
  export { clearFileNodesIfNeeded, clearServiceNodeIfExists } from './core/FileNodeManager.js';
30
30
  export { CoverageAnalyzer } from './core/CoverageAnalyzer.js';
31
+ export { FileExplainer } from './core/FileExplainer.js';
31
32
  // Hash utilities
32
33
  export { calculateFileHash, calculateFileHashAsync, calculateContentHash } from './core/HashUtils.js';
33
34
  // Type validation and path validation
@@ -74,6 +75,7 @@ export { RustModuleIndexer } from './plugins/indexing/RustModuleIndexer.js';
74
75
  // Analysis plugins
75
76
  export { JSASTAnalyzer } from './plugins/analysis/JSASTAnalyzer.js';
76
77
  export { ExpressRouteAnalyzer } from './plugins/analysis/ExpressRouteAnalyzer.js';
78
+ export { ExpressResponseAnalyzer } from './plugins/analysis/ExpressResponseAnalyzer.js';
77
79
  export { ExpressAnalyzer } from './plugins/analysis/ExpressAnalyzer.js';
78
80
  export { SocketIOAnalyzer } from './plugins/analysis/SocketIOAnalyzer.js';
79
81
  export { DatabaseAnalyzer } from './plugins/analysis/DatabaseAnalyzer.js';
@@ -86,6 +88,7 @@ export { SystemDbAnalyzer } from './plugins/analysis/SystemDbAnalyzer.js';
86
88
  export { IncrementalAnalysisPlugin } from './plugins/analysis/IncrementalAnalysisPlugin.js';
87
89
  // Enrichment plugins
88
90
  export { MethodCallResolver } from './plugins/enrichment/MethodCallResolver.js';
91
+ export { ArgumentParameterLinker } from './plugins/enrichment/ArgumentParameterLinker.js';
89
92
  export { AliasTracker } from './plugins/enrichment/AliasTracker.js';
90
93
  export { ValueDomainAnalyzer } from './plugins/enrichment/ValueDomainAnalyzer.js';
91
94
  export { MountPointResolver } from './plugins/enrichment/MountPointResolver.js';
@@ -93,7 +96,15 @@ export { PrefixEvaluator } from './plugins/enrichment/PrefixEvaluator.js';
93
96
  export { InstanceOfResolver } from './plugins/enrichment/InstanceOfResolver.js';
94
97
  export { HTTPConnectionEnricher } from './plugins/enrichment/HTTPConnectionEnricher.js';
95
98
  export { ImportExportLinker } from './plugins/enrichment/ImportExportLinker.js';
99
+ export { FunctionCallResolver } from './plugins/enrichment/FunctionCallResolver.js';
96
100
  export { RustFFIEnricher } from './plugins/enrichment/RustFFIEnricher.js';
101
+ export { NodejsBuiltinsResolver } from './plugins/enrichment/NodejsBuiltinsResolver.js';
102
+ export { ExternalCallResolver } from './plugins/enrichment/ExternalCallResolver.js';
103
+ export { ClosureCaptureEnricher } from './plugins/enrichment/ClosureCaptureEnricher.js';
104
+ // Builtin registry
105
+ export { BuiltinRegistry } from './data/builtins/index.js';
106
+ // Globals registry
107
+ export { GlobalsRegistry, ALL_GLOBALS } from './data/globals/index.js';
97
108
  // Validation plugins
98
109
  export { CallResolverValidator } from './plugins/validation/CallResolverValidator.js';
99
110
  export { EvalBanValidator } from './plugins/validation/EvalBanValidator.js';
@@ -103,6 +114,7 @@ export { GraphConnectivityValidator } from './plugins/validation/GraphConnectivi
103
114
  export { DataFlowValidator } from './plugins/validation/DataFlowValidator.js';
104
115
  export { TypeScriptDeadCodeValidator } from './plugins/validation/TypeScriptDeadCodeValidator.js';
105
116
  export { NodeCreationValidator } from './plugins/validation/NodeCreationValidator.js';
117
+ export { BrokenImportValidator } from './plugins/validation/BrokenImportValidator.js';
106
118
  // Discovery plugins
107
119
  export { SimpleProjectDiscovery } from './plugins/discovery/SimpleProjectDiscovery.js';
108
120
  export { DiscoveryPlugin } from './plugins/discovery/DiscoveryPlugin.js';
@@ -114,3 +126,7 @@ export { detectWorkspaceType, parsePnpmWorkspace, parseNpmWorkspace, parseLernaC
114
126
  // VCS plugins
115
127
  export { GitPlugin } from './plugins/vcs/GitPlugin.js';
116
128
  export { VCSPlugin, VCSPluginFactory, FileStatus } from './plugins/vcs/VCSPlugin.js';
129
+ // Schema extraction
130
+ export { InterfaceSchemaExtractor, GraphSchemaExtractor } from './schema/index.js';
131
+ // Graph Query Utilities
132
+ export { findCallsInFunction, findContainingFunction, traceValues, aggregateValues, NONDETERMINISTIC_PATTERNS, NONDETERMINISTIC_OBJECTS } from './queries/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/DatabaseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAgChF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD5D;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,aAAa;IAsL3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAc3B"}
1
+ {"version":3,"file":"DatabaseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/DatabaseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiChF,qBAAa,gBAAiB,SAAQ,MAAM;IAC1C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD5D;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,aAAa;IAuL3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAc3B"}
@@ -6,7 +6,7 @@ import { readFileSync } from 'fs';
6
6
  import { parse } from '@babel/parser';
7
7
  import traverseModule from '@babel/traverse';
8
8
  import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
9
- import { getLine } from './ast/utils/location.js';
9
+ import { getLine, getColumn } from './ast/utils/location.js';
10
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
11
  const traverse = traverseModule.default || traverseModule;
12
12
  export class DatabaseAnalyzer extends Plugin {
@@ -177,7 +177,8 @@ export class DatabaseAnalyzer extends Plugin {
177
177
  object: objectName,
178
178
  method: methodName,
179
179
  file: module.file,
180
- line: getLine(node)
180
+ line: getLine(node),
181
+ column: getColumn(node)
181
182
  });
182
183
  }
183
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsDhF,qBAAa,eAAgB,SAAQ,MAAM;IACzC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2C5D;;OAEG;YACW,aAAa;IA6N3B;;OAEG;YACW,gBAAgB;CA4D/B"}
1
+ {"version":3,"file":"ExpressAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwDhF,qBAAa,eAAgB,SAAQ,MAAM;IACzC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2C5D;;OAEG;YACW,aAAa;IA+N3B;;OAEG;YACW,gBAAgB;CA4D/B"}
@@ -8,7 +8,7 @@ import traverseModule from '@babel/traverse';
8
8
  import { dirname, resolve, relative } from 'path';
9
9
  import { Plugin, createSuccessResult, createErrorResult } from '../Plugin.js';
10
10
  import { NetworkRequestNode } from '../../core/nodes/NetworkRequestNode.js';
11
- import { getLine } from './ast/utils/location.js';
11
+ import { getLine, getColumn } from './ast/utils/location.js';
12
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
13
  const traverse = traverseModule.default || traverseModule;
14
14
  export class ExpressAnalyzer extends Plugin {
@@ -131,6 +131,7 @@ export class ExpressAnalyzer extends Plugin {
131
131
  localPath: routePath,
132
132
  file: module.file,
133
133
  line: getLine(node),
134
+ column: getColumn(node),
134
135
  mountedOn: objectName
135
136
  });
136
137
  }
@@ -210,6 +211,7 @@ export class ExpressAnalyzer extends Plugin {
210
211
  targetVariable: targetVariable,
211
212
  file: module.file,
212
213
  line: getLine(node),
214
+ column: getColumn(node),
213
215
  mountedOn: objectName
214
216
  });
215
217
  }
@@ -0,0 +1,148 @@
1
+ /**
2
+ * ExpressResponseAnalyzer - detects Express response patterns
3
+ *
4
+ * For each http:route node:
5
+ * 1. Follow HANDLED_BY edge to get handler function
6
+ * 2. Traverse handler AST for res.json(...), res.send(...) patterns
7
+ * 3. Create RESPONDS_WITH edge from http:route to response argument node
8
+ *
9
+ * Patterns:
10
+ * - res.json({ data })
11
+ * - res.send(variable)
12
+ * - res.status(200).json(data)
13
+ */
14
+ import { Plugin } from '../Plugin.js';
15
+ import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
16
+ export declare class ExpressResponseAnalyzer extends Plugin {
17
+ private responseNodeCounter;
18
+ get metadata(): PluginMetadata;
19
+ execute(context: PluginContext): Promise<PluginResult>;
20
+ /**
21
+ * Analyze a single http:route for response patterns
22
+ */
23
+ private analyzeRouteResponses;
24
+ /**
25
+ * Find res.json/res.send calls within a function at given line
26
+ */
27
+ private findResponseCalls;
28
+ /**
29
+ * Get response parameter name from function params (typically 'res')
30
+ */
31
+ private getResponseParamName;
32
+ /**
33
+ * Extract response method info from callee
34
+ * Handles: res.json(), res.send(), res.status(200).json()
35
+ */
36
+ private extractResponseInfo;
37
+ /**
38
+ * Check if callee is res.methodName()
39
+ */
40
+ private isResMethodCall;
41
+ /**
42
+ * Resolve response node: find existing variable or create stub.
43
+ *
44
+ * For Identifier arguments (e.g., res.json(statusData)):
45
+ * 1. Try to find existing VARIABLE/PARAMETER/CONSTANT with same name in handler scope
46
+ * 2. If found, return existing node ID (no stub needed)
47
+ * 3. If not found, fall back to creating stub (external/global variables)
48
+ *
49
+ * For non-Identifier arguments (ObjectExpression, CallExpression, etc.):
50
+ * - Always create stub node (existing behavior)
51
+ *
52
+ * @param graph - Graph backend
53
+ * @param file - Handler file path
54
+ * @param call - Response call info (includes identifierName)
55
+ * @param routeId - Route ID (for metadata)
56
+ * @param handlerSemanticId - Handler function's semantic ID (for scope matching)
57
+ * @returns Node ID (existing or newly created)
58
+ */
59
+ private resolveOrCreateResponseNode;
60
+ /**
61
+ * Find existing VARIABLE/CONSTANT/PARAMETER node in handler scope.
62
+ *
63
+ * Strategy:
64
+ * 1. Parse handler semantic ID to extract scope prefix
65
+ * 2. Query VARIABLE/CONSTANT nodes: match by name, file, scope prefix, and line <= useLine
66
+ * 3. Query PARAMETER nodes: match by name, file, parentFunctionId === handlerSemanticId
67
+ *
68
+ * Scope matching:
69
+ * - Handler ID: "routes.js->anonymous[1]->FUNCTION->anonymous[1]"
70
+ * - Scope prefix: "routes.js->anonymous[1]->"
71
+ * - Variable ID: "routes.js->anonymous[1]->VARIABLE->statusData" (matches prefix)
72
+ * - External ID: "utils.js->VARIABLE->config" (different file)
73
+ *
74
+ * @param graph - Graph backend
75
+ * @param file - File path
76
+ * @param name - Variable name to find
77
+ * @param handlerSemanticId - Handler function's semantic ID
78
+ * @param useLine - Line where identifier is used (variable must be declared before this)
79
+ * @returns Node ID if found, null otherwise
80
+ */
81
+ private findIdentifierInScope;
82
+ /**
83
+ * Extract scope prefix from handler function's semantic ID.
84
+ *
85
+ * Handler function semantic IDs follow the pattern:
86
+ * {file}->{scope_path}->{type}->{name}
87
+ *
88
+ * Variables declared INSIDE the handler have IDs where the handler's NAME
89
+ * becomes part of THEIR scope path:
90
+ * {file}->{handler_name}->{type}->{var_name}
91
+ *
92
+ * Examples:
93
+ * - Handler: "index.js->global->FUNCTION->anonymous[0]"
94
+ * -> Variables inside: "index.js->anonymous[0]->CONSTANT->statusData"
95
+ * -> Scope prefix: "index.js->anonymous[0]->"
96
+ *
97
+ * - Handler: "routes.js->anonymous[1]->FUNCTION->anonymous[1]"
98
+ * -> Variables inside: "routes.js->anonymous[1]->VARIABLE->data"
99
+ * -> Scope prefix: "routes.js->anonymous[1]->"
100
+ *
101
+ * - Handler: "app.js->global->FUNCTION->handleRequest"
102
+ * -> Variables inside: "app.js->handleRequest->VARIABLE->result"
103
+ * -> Scope prefix: "app.js->handleRequest->"
104
+ *
105
+ * Algorithm:
106
+ * 1. Split by "->"
107
+ * 2. Take file (first part) and handler name (last part)
108
+ * 3. Join with "->" and add trailing "->"
109
+ *
110
+ * @param semanticId - Handler function's semantic ID
111
+ * @returns Scope prefix for matching variables declared inside the handler
112
+ */
113
+ private extractScopePrefix;
114
+ /**
115
+ * Extract module prefix from semantic ID (for module-level variable access).
116
+ *
117
+ * Examples:
118
+ * - "routes.js->anonymous[1]->FUNCTION->anonymous[1]" -> "routes.js->"
119
+ * - "app.js->startServer->FUNCTION->startServer" -> "app.js->"
120
+ *
121
+ * @param semanticId - Handler function's semantic ID
122
+ * @returns Module prefix for matching module-level variables
123
+ */
124
+ private extractModulePrefix;
125
+ /**
126
+ * Check if a semantic ID represents a true module-level variable.
127
+ *
128
+ * Semantic IDs have format: file->scope->TYPE->name
129
+ * - Module-level variables have "global" as the scope: "file.js->global->TYPE->name"
130
+ * - Function-local variables have function name as scope: "file.js->funcName->TYPE->name"
131
+ *
132
+ * Examples:
133
+ * - "index.js->global->CONSTANT->CONFIG" -> true (module-level)
134
+ * - "index.js->global->VARIABLE->counter" -> true (module-level)
135
+ * - "index.js->anonymous[0]->CONSTANT->data" -> false (function-local)
136
+ * - "routes.js->handler->VARIABLE->result" -> false (function-local)
137
+ *
138
+ * @param nodeId - The node's semantic ID
139
+ * @param modulePrefix - The module prefix (e.g., "index.js->")
140
+ * @returns true if this is a module-level variable
141
+ */
142
+ private isModuleLevelId;
143
+ /**
144
+ * Create a node for the response argument
145
+ */
146
+ private createResponseArgumentNode;
147
+ }
148
+ //# sourceMappingURL=ExpressResponseAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressResponseAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/analysis/ExpressResponseAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,MAAM,EAA0C,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqBhF,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,OAAO,CAAC,mBAAmB,CAAK;IAEhC,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC5D;;OAEG;YACW,qBAAqB;IAgEnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwEzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;;;;;;;;;;OAiBG;YACW,2BAA2B;IAoCzC;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,qBAAqB;IAqEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,0BAA0B;CAiFzC"}