@grafema/core 0.2.4-beta → 0.2.5-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 (557) hide show
  1. package/dist/Orchestrator.d.ts +37 -0
  2. package/dist/Orchestrator.d.ts.map +1 -1
  3. package/dist/Orchestrator.js +322 -35
  4. package/dist/Orchestrator.js.map +1 -0
  5. package/dist/api/GraphAPI.d.ts +1 -1
  6. package/dist/api/GraphAPI.d.ts.map +1 -1
  7. package/dist/api/GraphAPI.js +3 -1
  8. package/dist/api/GraphAPI.js.map +1 -0
  9. package/dist/api/GuaranteeAPI.d.ts.map +1 -1
  10. package/dist/api/GuaranteeAPI.js +4 -2
  11. package/dist/api/GuaranteeAPI.js.map +1 -0
  12. package/dist/config/ConfigLoader.d.ts +66 -0
  13. package/dist/config/ConfigLoader.d.ts.map +1 -1
  14. package/dist/config/ConfigLoader.js +77 -3
  15. package/dist/config/ConfigLoader.js.map +1 -0
  16. package/dist/config/index.d.ts +1 -1
  17. package/dist/config/index.d.ts.map +1 -1
  18. package/dist/config/index.js +2 -1
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/core/ASTWorker.d.ts.map +1 -1
  21. package/dist/core/ASTWorker.js +6 -4
  22. package/dist/core/ASTWorker.js.map +1 -0
  23. package/dist/core/ASTWorkerPool.js +2 -1
  24. package/dist/core/ASTWorkerPool.js.map +1 -0
  25. package/dist/core/AnalysisQueue.js +1 -0
  26. package/dist/core/AnalysisQueue.js.map +1 -0
  27. package/dist/core/CoverageAnalyzer.d.ts.map +1 -1
  28. package/dist/core/CoverageAnalyzer.js +1 -0
  29. package/dist/core/CoverageAnalyzer.js.map +1 -0
  30. package/dist/core/FileExplainer.js +1 -0
  31. package/dist/core/FileExplainer.js.map +1 -0
  32. package/dist/core/FileNodeManager.d.ts.map +1 -1
  33. package/dist/core/FileNodeManager.js +4 -2
  34. package/dist/core/FileNodeManager.js.map +1 -0
  35. package/dist/core/GraphBackend.js +1 -0
  36. package/dist/core/GraphBackend.js.map +1 -0
  37. package/dist/core/GraphFreshnessChecker.js +1 -0
  38. package/dist/core/GraphFreshnessChecker.js.map +1 -0
  39. package/dist/core/GuaranteeManager.js +2 -1
  40. package/dist/core/GuaranteeManager.js.map +1 -0
  41. package/dist/core/HashUtils.js +1 -0
  42. package/dist/core/HashUtils.js.map +1 -0
  43. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -1
  44. package/dist/core/IncrementalReanalyzer.js +7 -3
  45. package/dist/core/IncrementalReanalyzer.js.map +1 -0
  46. package/dist/core/ManifestStore.js +1 -0
  47. package/dist/core/ManifestStore.js.map +1 -0
  48. package/dist/core/NodeFactory.d.ts +54 -34
  49. package/dist/core/NodeFactory.d.ts.map +1 -1
  50. package/dist/core/NodeFactory.js +20 -1
  51. package/dist/core/NodeFactory.js.map +1 -0
  52. package/dist/core/NodeId.js +1 -0
  53. package/dist/core/NodeId.js.map +1 -0
  54. package/dist/core/PriorityQueue.js +1 -0
  55. package/dist/core/PriorityQueue.js.map +1 -0
  56. package/dist/core/Profiler.js +1 -0
  57. package/dist/core/Profiler.js.map +1 -0
  58. package/dist/core/ScopeTracker.js +1 -0
  59. package/dist/core/ScopeTracker.js.map +1 -0
  60. package/dist/core/SemanticId.js +1 -0
  61. package/dist/core/SemanticId.js.map +1 -0
  62. package/dist/core/Task.js +1 -0
  63. package/dist/core/Task.js.map +1 -0
  64. package/dist/core/TaskTypes.js +1 -0
  65. package/dist/core/TaskTypes.js.map +1 -0
  66. package/dist/core/VersionManager.js +1 -0
  67. package/dist/core/VersionManager.js.map +1 -0
  68. package/dist/core/WorkerPool.d.ts.map +1 -1
  69. package/dist/core/WorkerPool.js +3 -1
  70. package/dist/core/WorkerPool.js.map +1 -0
  71. package/dist/core/nodes/ArgumentExpressionNode.js +1 -0
  72. package/dist/core/nodes/ArgumentExpressionNode.js.map +1 -0
  73. package/dist/core/nodes/ArrayLiteralNode.js +1 -0
  74. package/dist/core/nodes/ArrayLiteralNode.js.map +1 -0
  75. package/dist/core/nodes/BranchNode.js +1 -0
  76. package/dist/core/nodes/BranchNode.js.map +1 -0
  77. package/dist/core/nodes/CallSiteNode.js +1 -0
  78. package/dist/core/nodes/CallSiteNode.js.map +1 -0
  79. package/dist/core/nodes/CaseNode.js +1 -0
  80. package/dist/core/nodes/CaseNode.js.map +1 -0
  81. package/dist/core/nodes/ClassNode.js +1 -0
  82. package/dist/core/nodes/ClassNode.js.map +1 -0
  83. package/dist/core/nodes/ConstantNode.js +1 -0
  84. package/dist/core/nodes/ConstantNode.js.map +1 -0
  85. package/dist/core/nodes/ConstructorCallNode.js +1 -0
  86. package/dist/core/nodes/ConstructorCallNode.js.map +1 -0
  87. package/dist/core/nodes/DatabaseQueryNode.js +1 -0
  88. package/dist/core/nodes/DatabaseQueryNode.js.map +1 -0
  89. package/dist/core/nodes/DecoratorNode.js +1 -0
  90. package/dist/core/nodes/DecoratorNode.js.map +1 -0
  91. package/dist/core/nodes/EntrypointNode.js +1 -0
  92. package/dist/core/nodes/EntrypointNode.js.map +1 -0
  93. package/dist/core/nodes/EnumNode.js +1 -0
  94. package/dist/core/nodes/EnumNode.js.map +1 -0
  95. package/dist/core/nodes/EventListenerNode.js +1 -0
  96. package/dist/core/nodes/EventListenerNode.js.map +1 -0
  97. package/dist/core/nodes/ExportNode.js +1 -0
  98. package/dist/core/nodes/ExportNode.js.map +1 -0
  99. package/dist/core/nodes/ExpressionNode.js +1 -0
  100. package/dist/core/nodes/ExpressionNode.js.map +1 -0
  101. package/dist/core/nodes/ExternalModuleNode.js +1 -0
  102. package/dist/core/nodes/ExternalModuleNode.js.map +1 -0
  103. package/dist/core/nodes/ExternalStdioNode.js +1 -0
  104. package/dist/core/nodes/ExternalStdioNode.js.map +1 -0
  105. package/dist/core/nodes/FunctionNode.js +1 -0
  106. package/dist/core/nodes/FunctionNode.js.map +1 -0
  107. package/dist/core/nodes/GuaranteeNode.js +1 -0
  108. package/dist/core/nodes/GuaranteeNode.js.map +1 -0
  109. package/dist/core/nodes/HttpRequestNode.js +1 -0
  110. package/dist/core/nodes/HttpRequestNode.js.map +1 -0
  111. package/dist/core/nodes/ImportNode.js +1 -0
  112. package/dist/core/nodes/ImportNode.js.map +1 -0
  113. package/dist/core/nodes/InterfaceNode.js +1 -0
  114. package/dist/core/nodes/InterfaceNode.js.map +1 -0
  115. package/dist/core/nodes/IssueNode.js +1 -0
  116. package/dist/core/nodes/IssueNode.js.map +1 -0
  117. package/dist/core/nodes/LiteralNode.js +1 -0
  118. package/dist/core/nodes/LiteralNode.js.map +1 -0
  119. package/dist/core/nodes/MethodCallNode.js +1 -0
  120. package/dist/core/nodes/MethodCallNode.js.map +1 -0
  121. package/dist/core/nodes/MethodNode.js +1 -0
  122. package/dist/core/nodes/MethodNode.js.map +1 -0
  123. package/dist/core/nodes/ModuleNode.js +1 -0
  124. package/dist/core/nodes/ModuleNode.js.map +1 -0
  125. package/dist/core/nodes/NetworkRequestNode.js +1 -0
  126. package/dist/core/nodes/NetworkRequestNode.js.map +1 -0
  127. package/dist/core/nodes/NodeKind.d.ts +5 -0
  128. package/dist/core/nodes/NodeKind.d.ts.map +1 -1
  129. package/dist/core/nodes/NodeKind.js +11 -0
  130. package/dist/core/nodes/NodeKind.js.map +1 -0
  131. package/dist/core/nodes/ObjectLiteralNode.js +1 -0
  132. package/dist/core/nodes/ObjectLiteralNode.js.map +1 -0
  133. package/dist/core/nodes/ParameterNode.js +1 -0
  134. package/dist/core/nodes/ParameterNode.js.map +1 -0
  135. package/dist/core/nodes/PluginNode.d.ts +69 -0
  136. package/dist/core/nodes/PluginNode.d.ts.map +1 -0
  137. package/dist/core/nodes/PluginNode.js +106 -0
  138. package/dist/core/nodes/PluginNode.js.map +1 -0
  139. package/dist/core/nodes/ScopeNode.js +1 -0
  140. package/dist/core/nodes/ScopeNode.js.map +1 -0
  141. package/dist/core/nodes/ServiceNode.js +1 -0
  142. package/dist/core/nodes/ServiceNode.js.map +1 -0
  143. package/dist/core/nodes/TypeNode.js +2 -1
  144. package/dist/core/nodes/TypeNode.js.map +1 -0
  145. package/dist/core/nodes/VariableDeclarationNode.js +1 -0
  146. package/dist/core/nodes/VariableDeclarationNode.js.map +1 -0
  147. package/dist/core/nodes/index.d.ts +2 -1
  148. package/dist/core/nodes/index.d.ts.map +1 -1
  149. package/dist/core/nodes/index.js +4 -1
  150. package/dist/core/nodes/index.js.map +1 -0
  151. package/dist/core/toposort.d.ts +38 -0
  152. package/dist/core/toposort.d.ts.map +1 -0
  153. package/dist/core/toposort.js +129 -0
  154. package/dist/core/toposort.js.map +1 -0
  155. package/dist/data/builtins/BuiltinRegistry.js +1 -0
  156. package/dist/data/builtins/BuiltinRegistry.js.map +1 -0
  157. package/dist/data/builtins/definitions.js +1 -0
  158. package/dist/data/builtins/definitions.js.map +1 -0
  159. package/dist/data/builtins/index.js +1 -0
  160. package/dist/data/builtins/index.js.map +1 -0
  161. package/dist/data/builtins/jsGlobals.js +1 -0
  162. package/dist/data/builtins/jsGlobals.js.map +1 -0
  163. package/dist/data/builtins/types.js +1 -0
  164. package/dist/data/builtins/types.js.map +1 -0
  165. package/dist/data/globals/definitions.js +1 -0
  166. package/dist/data/globals/definitions.js.map +1 -0
  167. package/dist/data/globals/index.js +1 -0
  168. package/dist/data/globals/index.js.map +1 -0
  169. package/dist/diagnostics/DiagnosticCollector.d.ts +5 -0
  170. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -1
  171. package/dist/diagnostics/DiagnosticCollector.js +4 -0
  172. package/dist/diagnostics/DiagnosticCollector.js.map +1 -0
  173. package/dist/diagnostics/DiagnosticReporter.d.ts +23 -1
  174. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -1
  175. package/dist/diagnostics/DiagnosticReporter.js +68 -15
  176. package/dist/diagnostics/DiagnosticReporter.js.map +1 -0
  177. package/dist/diagnostics/DiagnosticWriter.js +1 -0
  178. package/dist/diagnostics/DiagnosticWriter.js.map +1 -0
  179. package/dist/diagnostics/categories.d.ts +57 -0
  180. package/dist/diagnostics/categories.d.ts.map +1 -0
  181. package/dist/diagnostics/categories.js +71 -0
  182. package/dist/diagnostics/categories.js.map +1 -0
  183. package/dist/diagnostics/index.d.ts +3 -0
  184. package/dist/diagnostics/index.d.ts.map +1 -1
  185. package/dist/diagnostics/index.js +4 -0
  186. package/dist/diagnostics/index.js.map +1 -0
  187. package/dist/errors/GrafemaError.d.ts +39 -0
  188. package/dist/errors/GrafemaError.d.ts.map +1 -1
  189. package/dist/errors/GrafemaError.js +28 -0
  190. package/dist/errors/GrafemaError.js.map +1 -0
  191. package/dist/index.d.ts +21 -10
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +19 -7
  194. package/dist/index.js.map +1 -0
  195. package/dist/instructions/index.d.ts +8 -0
  196. package/dist/instructions/index.d.ts.map +1 -0
  197. package/dist/instructions/index.js +20 -0
  198. package/dist/instructions/index.js.map +1 -0
  199. package/dist/instructions/onboarding.md +121 -0
  200. package/dist/logging/Logger.d.ts +53 -3
  201. package/dist/logging/Logger.d.ts.map +1 -1
  202. package/dist/logging/Logger.js +144 -4
  203. package/dist/logging/Logger.js.map +1 -0
  204. package/dist/plugins/Plugin.js +1 -0
  205. package/dist/plugins/Plugin.js.map +1 -0
  206. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  207. package/dist/plugins/analysis/DatabaseAnalyzer.js +20 -14
  208. package/dist/plugins/analysis/DatabaseAnalyzer.js.map +1 -0
  209. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  210. package/dist/plugins/analysis/ExpressAnalyzer.js +23 -16
  211. package/dist/plugins/analysis/ExpressAnalyzer.js.map +1 -0
  212. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +2 -1
  213. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -1
  214. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +53 -76
  215. package/dist/plugins/analysis/ExpressResponseAnalyzer.js.map +1 -0
  216. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  217. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +47 -37
  218. package/dist/plugins/analysis/ExpressRouteAnalyzer.js.map +1 -0
  219. package/dist/plugins/analysis/FetchAnalyzer.d.ts +8 -14
  220. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  221. package/dist/plugins/analysis/FetchAnalyzer.js +144 -97
  222. package/dist/plugins/analysis/FetchAnalyzer.js.map +1 -0
  223. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  224. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +3 -5
  225. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js.map +1 -0
  226. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +59 -2
  227. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  228. package/dist/plugins/analysis/JSASTAnalyzer.js +926 -422
  229. package/dist/plugins/analysis/JSASTAnalyzer.js.map +1 -0
  230. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  231. package/dist/plugins/analysis/ReactAnalyzer.js +24 -19
  232. package/dist/plugins/analysis/ReactAnalyzer.js.map +1 -0
  233. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  234. package/dist/plugins/analysis/RustAnalyzer.js +39 -26
  235. package/dist/plugins/analysis/RustAnalyzer.js.map +1 -0
  236. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  237. package/dist/plugins/analysis/SQLiteAnalyzer.js +14 -7
  238. package/dist/plugins/analysis/SQLiteAnalyzer.js.map +1 -0
  239. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  240. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +33 -28
  241. package/dist/plugins/analysis/ServiceLayerAnalyzer.js.map +1 -0
  242. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  243. package/dist/plugins/analysis/SocketIOAnalyzer.js +24 -14
  244. package/dist/plugins/analysis/SocketIOAnalyzer.js.map +1 -0
  245. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  246. package/dist/plugins/analysis/SystemDbAnalyzer.js +19 -11
  247. package/dist/plugins/analysis/SystemDbAnalyzer.js.map +1 -0
  248. package/dist/plugins/analysis/ast/ConditionParser.js +1 -0
  249. package/dist/plugins/analysis/ast/ConditionParser.js.map +1 -0
  250. package/dist/plugins/analysis/ast/ExpressionEvaluator.d.ts.map +1 -1
  251. package/dist/plugins/analysis/ast/ExpressionEvaluator.js +1 -0
  252. package/dist/plugins/analysis/ast/ExpressionEvaluator.js.map +1 -0
  253. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +58 -6
  254. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  255. package/dist/plugins/analysis/ast/GraphBuilder.js +440 -56
  256. package/dist/plugins/analysis/ast/GraphBuilder.js.map +1 -0
  257. package/dist/plugins/analysis/ast/IdGenerator.js +1 -0
  258. package/dist/plugins/analysis/ast/IdGenerator.js.map +1 -0
  259. package/dist/plugins/analysis/ast/OxcAdapter.js +1 -0
  260. package/dist/plugins/analysis/ast/OxcAdapter.js.map +1 -0
  261. package/dist/plugins/analysis/ast/types.d.ts +152 -1
  262. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  263. package/dist/plugins/analysis/ast/types.js +1 -0
  264. package/dist/plugins/analysis/ast/types.js.map +1 -0
  265. package/dist/plugins/analysis/ast/utils/babelTraverse.d.ts +27 -0
  266. package/dist/plugins/analysis/ast/utils/babelTraverse.d.ts.map +1 -0
  267. package/dist/plugins/analysis/ast/utils/babelTraverse.js +45 -0
  268. package/dist/plugins/analysis/ast/utils/babelTraverse.js.map +1 -0
  269. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +1 -1
  270. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -1
  271. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +1 -0
  272. package/dist/plugins/analysis/ast/utils/createParameterNodes.js.map +1 -0
  273. package/dist/plugins/analysis/ast/utils/index.js +1 -0
  274. package/dist/plugins/analysis/ast/utils/index.js.map +1 -0
  275. package/dist/plugins/analysis/ast/utils/location.js +1 -0
  276. package/dist/plugins/analysis/ast/utils/location.js.map +1 -0
  277. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +3 -1
  278. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  279. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +1 -0
  280. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js.map +1 -0
  281. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +9 -2
  282. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  283. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +145 -14
  284. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js.map +1 -0
  285. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +1 -1
  286. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  287. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +198 -0
  288. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js.map +1 -0
  289. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +4 -3
  290. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  291. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +5 -2
  292. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js.map +1 -0
  293. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +1 -0
  294. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js.map +1 -0
  295. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.d.ts +83 -0
  296. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.d.ts.map +1 -0
  297. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.js +258 -0
  298. package/dist/plugins/analysis/ast/visitors/PropertyAccessVisitor.js.map +1 -0
  299. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +1 -1
  300. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  301. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +1 -0
  302. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js.map +1 -0
  303. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +1 -1
  304. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  305. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +1 -0
  306. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js.map +1 -0
  307. package/dist/plugins/analysis/ast/visitors/index.d.ts +1 -0
  308. package/dist/plugins/analysis/ast/visitors/index.d.ts.map +1 -1
  309. package/dist/plugins/analysis/ast/visitors/index.js +2 -0
  310. package/dist/plugins/analysis/ast/visitors/index.js.map +1 -0
  311. package/dist/plugins/discovery/DiscoveryPlugin.d.ts +42 -10
  312. package/dist/plugins/discovery/DiscoveryPlugin.d.ts.map +1 -1
  313. package/dist/plugins/discovery/DiscoveryPlugin.js +17 -1
  314. package/dist/plugins/discovery/DiscoveryPlugin.js.map +1 -0
  315. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  316. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  317. package/dist/plugins/discovery/MonorepoServiceDiscovery.js.map +1 -0
  318. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  319. package/dist/plugins/discovery/SimpleProjectDiscovery.js +3 -2
  320. package/dist/plugins/discovery/SimpleProjectDiscovery.js.map +1 -0
  321. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -1
  322. package/dist/plugins/discovery/WorkspaceDiscovery.js +3 -2
  323. package/dist/plugins/discovery/WorkspaceDiscovery.js.map +1 -0
  324. package/dist/plugins/discovery/resolveSourceEntrypoint.js +1 -0
  325. package/dist/plugins/discovery/resolveSourceEntrypoint.js.map +1 -0
  326. package/dist/plugins/discovery/workspaces/detector.js +1 -0
  327. package/dist/plugins/discovery/workspaces/detector.js.map +1 -0
  328. package/dist/plugins/discovery/workspaces/globResolver.js +1 -0
  329. package/dist/plugins/discovery/workspaces/globResolver.js.map +1 -0
  330. package/dist/plugins/discovery/workspaces/index.js +1 -0
  331. package/dist/plugins/discovery/workspaces/index.js.map +1 -0
  332. package/dist/plugins/discovery/workspaces/parsers.js +1 -0
  333. package/dist/plugins/discovery/workspaces/parsers.js.map +1 -0
  334. package/dist/plugins/enrichment/AliasTracker.js +3 -2
  335. package/dist/plugins/enrichment/AliasTracker.js.map +1 -0
  336. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -1
  337. package/dist/plugins/enrichment/ArgumentParameterLinker.js +1 -1
  338. package/dist/plugins/enrichment/ArgumentParameterLinker.js.map +1 -0
  339. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -1
  340. package/dist/plugins/enrichment/ClosureCaptureEnricher.js +1 -1
  341. package/dist/plugins/enrichment/ClosureCaptureEnricher.js.map +1 -0
  342. package/dist/plugins/enrichment/ExpressHandlerLinker.d.ts +21 -0
  343. package/dist/plugins/enrichment/ExpressHandlerLinker.d.ts.map +1 -0
  344. package/dist/plugins/enrichment/ExpressHandlerLinker.js +137 -0
  345. package/dist/plugins/enrichment/ExpressHandlerLinker.js.map +1 -0
  346. package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -1
  347. package/dist/plugins/enrichment/ExternalCallResolver.js +1 -1
  348. package/dist/plugins/enrichment/ExternalCallResolver.js.map +1 -0
  349. package/dist/plugins/enrichment/FunctionCallResolver.d.ts +5 -0
  350. package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -1
  351. package/dist/plugins/enrichment/FunctionCallResolver.js +11 -9
  352. package/dist/plugins/enrichment/FunctionCallResolver.js.map +1 -0
  353. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +2 -0
  354. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  355. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +51 -13
  356. package/dist/plugins/enrichment/HTTPConnectionEnricher.js.map +1 -0
  357. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  358. package/dist/plugins/enrichment/ImportExportLinker.js +1 -1
  359. package/dist/plugins/enrichment/ImportExportLinker.js.map +1 -0
  360. package/dist/plugins/enrichment/InstanceOfResolver.js +3 -2
  361. package/dist/plugins/enrichment/InstanceOfResolver.js.map +1 -0
  362. package/dist/plugins/enrichment/MethodCallResolver.d.ts +39 -1
  363. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  364. package/dist/plugins/enrichment/MethodCallResolver.js +422 -11
  365. package/dist/plugins/enrichment/MethodCallResolver.js.map +1 -0
  366. package/dist/plugins/enrichment/MountPointResolver.d.ts +1 -1
  367. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  368. package/dist/plugins/enrichment/MountPointResolver.js +7 -23
  369. package/dist/plugins/enrichment/MountPointResolver.js.map +1 -0
  370. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -1
  371. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +2 -2
  372. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js.map +1 -0
  373. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  374. package/dist/plugins/enrichment/PrefixEvaluator.js +5 -4
  375. package/dist/plugins/enrichment/PrefixEvaluator.js.map +1 -0
  376. package/dist/plugins/enrichment/RejectionPropagationEnricher.d.ts +30 -0
  377. package/dist/plugins/enrichment/RejectionPropagationEnricher.d.ts.map +1 -0
  378. package/dist/plugins/enrichment/RejectionPropagationEnricher.js +190 -0
  379. package/dist/plugins/enrichment/RejectionPropagationEnricher.js.map +1 -0
  380. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  381. package/dist/plugins/enrichment/RustFFIEnricher.js +1 -1
  382. package/dist/plugins/enrichment/RustFFIEnricher.js.map +1 -0
  383. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +1 -1
  384. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  385. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +4 -3
  386. package/dist/plugins/enrichment/ValueDomainAnalyzer.js.map +1 -0
  387. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts +3 -1
  388. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  389. package/dist/plugins/indexing/IncrementalModuleIndexer.js +22 -29
  390. package/dist/plugins/indexing/IncrementalModuleIndexer.js.map +1 -0
  391. package/dist/plugins/indexing/JSModuleIndexer.d.ts +3 -1
  392. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  393. package/dist/plugins/indexing/JSModuleIndexer.js +22 -31
  394. package/dist/plugins/indexing/JSModuleIndexer.js.map +1 -0
  395. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  396. package/dist/plugins/indexing/RustModuleIndexer.js +11 -5
  397. package/dist/plugins/indexing/RustModuleIndexer.js.map +1 -0
  398. package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -1
  399. package/dist/plugins/validation/BrokenImportValidator.js +3 -3
  400. package/dist/plugins/validation/BrokenImportValidator.js.map +1 -0
  401. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  402. package/dist/plugins/validation/CallResolverValidator.js +3 -3
  403. package/dist/plugins/validation/CallResolverValidator.js.map +1 -0
  404. package/dist/plugins/validation/DataFlowValidator.js +2 -1
  405. package/dist/plugins/validation/DataFlowValidator.js.map +1 -0
  406. package/dist/plugins/validation/EvalBanValidator.js +2 -1
  407. package/dist/plugins/validation/EvalBanValidator.js.map +1 -0
  408. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  409. package/dist/plugins/validation/GraphConnectivityValidator.js +2 -1
  410. package/dist/plugins/validation/GraphConnectivityValidator.js.map +1 -0
  411. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  412. package/dist/plugins/validation/SQLInjectionValidator.js +4 -2
  413. package/dist/plugins/validation/SQLInjectionValidator.js.map +1 -0
  414. package/dist/plugins/validation/ShadowingDetector.js +2 -1
  415. package/dist/plugins/validation/ShadowingDetector.js.map +1 -0
  416. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  417. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +3 -3
  418. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js.map +1 -0
  419. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  420. package/dist/plugins/vcs/GitPlugin.js +13 -6
  421. package/dist/plugins/vcs/GitPlugin.js.map +1 -0
  422. package/dist/plugins/vcs/VCSPlugin.js +1 -0
  423. package/dist/plugins/vcs/VCSPlugin.js.map +1 -0
  424. package/dist/plugins/vcs/index.js +1 -0
  425. package/dist/plugins/vcs/index.js.map +1 -0
  426. package/dist/queries/findCallsInFunction.d.ts +1 -1
  427. package/dist/queries/findCallsInFunction.d.ts.map +1 -1
  428. package/dist/queries/findCallsInFunction.js +3 -2
  429. package/dist/queries/findCallsInFunction.js.map +1 -0
  430. package/dist/queries/findContainingFunction.d.ts +1 -1
  431. package/dist/queries/findContainingFunction.d.ts.map +1 -1
  432. package/dist/queries/findContainingFunction.js +1 -0
  433. package/dist/queries/findContainingFunction.js.map +1 -0
  434. package/dist/queries/index.js +1 -0
  435. package/dist/queries/index.js.map +1 -0
  436. package/dist/queries/traceValues.d.ts.map +1 -1
  437. package/dist/queries/traceValues.js +1 -0
  438. package/dist/queries/traceValues.js.map +1 -0
  439. package/dist/queries/types.js +1 -0
  440. package/dist/queries/types.js.map +1 -0
  441. package/dist/schema/GraphSchemaExtractor.js +1 -0
  442. package/dist/schema/GraphSchemaExtractor.js.map +1 -0
  443. package/dist/schema/InterfaceSchemaExtractor.js +1 -0
  444. package/dist/schema/InterfaceSchemaExtractor.js.map +1 -0
  445. package/dist/schema/index.js +1 -0
  446. package/dist/schema/index.js.map +1 -0
  447. package/dist/storage/backends/RFDBServerBackend.d.ts +25 -1
  448. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  449. package/dist/storage/backends/RFDBServerBackend.js +100 -22
  450. package/dist/storage/backends/RFDBServerBackend.js.map +1 -0
  451. package/dist/storage/backends/typeValidation.d.ts.map +1 -1
  452. package/dist/storage/backends/typeValidation.js +3 -0
  453. package/dist/storage/backends/typeValidation.js.map +1 -0
  454. package/dist/utils/findRfdbBinary.js +1 -0
  455. package/dist/utils/findRfdbBinary.js.map +1 -0
  456. package/dist/utils/moduleResolution.d.ts +134 -0
  457. package/dist/utils/moduleResolution.d.ts.map +1 -0
  458. package/dist/utils/moduleResolution.js +164 -0
  459. package/dist/utils/moduleResolution.js.map +1 -0
  460. package/dist/validation/PathValidator.d.ts.map +1 -1
  461. package/dist/validation/PathValidator.js +1 -0
  462. package/dist/validation/PathValidator.js.map +1 -0
  463. package/package.json +4 -3
  464. package/src/Orchestrator.ts +371 -41
  465. package/src/api/GraphAPI.ts +4 -2
  466. package/src/api/GuaranteeAPI.ts +3 -2
  467. package/src/config/ConfigLoader.ts +121 -3
  468. package/src/config/index.ts +7 -1
  469. package/src/core/ASTWorker.ts +8 -20
  470. package/src/core/ASTWorkerPool.ts +1 -1
  471. package/src/core/CoverageAnalyzer.ts +2 -2
  472. package/src/core/FileNodeManager.ts +3 -2
  473. package/src/core/GuaranteeManager.ts +1 -1
  474. package/src/core/IncrementalReanalyzer.ts +6 -3
  475. package/src/core/NodeFactory.ts +34 -1
  476. package/src/core/WorkerPool.ts +2 -1
  477. package/src/core/nodes/NodeKind.ts +11 -0
  478. package/src/core/nodes/PluginNode.ts +144 -0
  479. package/src/core/nodes/TypeNode.ts +1 -1
  480. package/src/core/nodes/index.ts +4 -0
  481. package/src/core/toposort.ts +160 -0
  482. package/src/diagnostics/DiagnosticCollector.ts +8 -1
  483. package/src/diagnostics/DiagnosticReporter.ts +87 -16
  484. package/src/diagnostics/categories.ts +104 -0
  485. package/src/diagnostics/index.ts +14 -0
  486. package/src/errors/GrafemaError.ts +58 -0
  487. package/src/index.ts +53 -9
  488. package/src/instructions/index.ts +21 -0
  489. package/src/instructions/onboarding.md +121 -0
  490. package/src/logging/Logger.ts +155 -4
  491. package/src/plugins/analysis/DatabaseAnalyzer.ts +22 -15
  492. package/src/plugins/analysis/ExpressAnalyzer.ts +30 -18
  493. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +72 -88
  494. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +54 -39
  495. package/src/plugins/analysis/FetchAnalyzer.ts +165 -113
  496. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +6 -7
  497. package/src/plugins/analysis/JSASTAnalyzer.ts +1122 -487
  498. package/src/plugins/analysis/ReactAnalyzer.ts +27 -20
  499. package/src/plugins/analysis/RustAnalyzer.ts +41 -27
  500. package/src/plugins/analysis/SQLiteAnalyzer.ts +18 -8
  501. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +38 -34
  502. package/src/plugins/analysis/SocketIOAnalyzer.ts +30 -15
  503. package/src/plugins/analysis/SystemDbAnalyzer.ts +24 -13
  504. package/src/plugins/analysis/ast/ExpressionEvaluator.ts +1 -3
  505. package/src/plugins/analysis/ast/GraphBuilder.ts +532 -66
  506. package/src/plugins/analysis/ast/types.ts +200 -2
  507. package/src/plugins/analysis/ast/utils/babelTraverse.ts +74 -0
  508. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +1 -1
  509. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +7 -2
  510. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +163 -15
  511. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +249 -3
  512. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +9 -4
  513. package/src/plugins/analysis/ast/visitors/PropertyAccessVisitor.ts +342 -0
  514. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +2 -3
  515. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +1 -27
  516. package/src/plugins/analysis/ast/visitors/index.ts +2 -0
  517. package/src/plugins/discovery/DiscoveryPlugin.ts +42 -11
  518. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +2 -2
  519. package/src/plugins/discovery/SimpleProjectDiscovery.ts +2 -2
  520. package/src/plugins/discovery/WorkspaceDiscovery.ts +2 -2
  521. package/src/plugins/discovery/workspaces/globResolver.ts +1 -1
  522. package/src/plugins/enrichment/AliasTracker.ts +2 -2
  523. package/src/plugins/enrichment/ArgumentParameterLinker.ts +0 -1
  524. package/src/plugins/enrichment/ClosureCaptureEnricher.ts +0 -1
  525. package/src/plugins/enrichment/ExpressHandlerLinker.ts +178 -0
  526. package/src/plugins/enrichment/ExternalCallResolver.ts +0 -1
  527. package/src/plugins/enrichment/FunctionCallResolver.ts +10 -15
  528. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +65 -14
  529. package/src/plugins/enrichment/ImportExportLinker.ts +0 -1
  530. package/src/plugins/enrichment/InstanceOfResolver.ts +2 -2
  531. package/src/plugins/enrichment/MethodCallResolver.ts +526 -12
  532. package/src/plugins/enrichment/MountPointResolver.ts +6 -24
  533. package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +1 -2
  534. package/src/plugins/enrichment/PrefixEvaluator.ts +4 -4
  535. package/src/plugins/enrichment/RejectionPropagationEnricher.ts +253 -0
  536. package/src/plugins/enrichment/RustFFIEnricher.ts +0 -1
  537. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +3 -3
  538. package/src/plugins/indexing/IncrementalModuleIndexer.ts +24 -30
  539. package/src/plugins/indexing/JSModuleIndexer.ts +21 -22
  540. package/src/plugins/indexing/RustModuleIndexer.ts +10 -5
  541. package/src/plugins/validation/BrokenImportValidator.ts +2 -3
  542. package/src/plugins/validation/CallResolverValidator.ts +2 -3
  543. package/src/plugins/validation/DataFlowValidator.ts +1 -1
  544. package/src/plugins/validation/EvalBanValidator.ts +1 -1
  545. package/src/plugins/validation/GraphConnectivityValidator.ts +1 -9
  546. package/src/plugins/validation/SQLInjectionValidator.ts +3 -2
  547. package/src/plugins/validation/ShadowingDetector.ts +1 -1
  548. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +2 -3
  549. package/src/plugins/vcs/GitPlugin.ts +12 -6
  550. package/src/queries/findCallsInFunction.ts +4 -4
  551. package/src/queries/findContainingFunction.ts +1 -1
  552. package/src/queries/traceValues.ts +0 -1
  553. package/src/storage/backends/RFDBServerBackend.ts +115 -25
  554. package/src/storage/backends/typeValidation.ts +2 -0
  555. package/src/utils/moduleResolution.ts +244 -0
  556. package/src/validation/PathValidator.ts +0 -8
  557. package/src/plugins/validation/NodeCreationValidator.ts +0 -554
@@ -1 +1 @@
1
- {"version":3,"file":"ImportExportLinker.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/ImportExportLinker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBhF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAW7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2I5D;;;OAGG;YACW,gBAAgB;IA+B9B;;OAEG;YACW,iBAAiB;CAWhC"}
1
+ {"version":3,"file":"ImportExportLinker.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/ImportExportLinker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBhF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA2I5D;;;OAGG;YACW,gBAAgB;IA+B9B;;OAEG;YACW,iBAAiB;CAWhC"}
@@ -19,7 +19,6 @@ export class ImportExportLinker extends Plugin {
19
19
  return {
20
20
  name: 'ImportExportLinker',
21
21
  phase: 'ENRICHMENT',
22
- priority: 90, // Run early in enrichment, after analysis
23
22
  creates: {
24
23
  nodes: [],
25
24
  edges: ['IMPORTS', 'IMPORTS_FROM']
@@ -191,3 +190,4 @@ export class ImportExportLinker extends Plugin {
191
190
  return lookup;
192
191
  }
193
192
  }
193
+ //# sourceMappingURL=ImportExportLinker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportExportLinker.js","sourceRoot":"","sources":["../../../src/plugins/enrichment/ImportExportLinker.ts"],"names":[],"mappings":"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"}
@@ -19,11 +19,11 @@ export class InstanceOfResolver extends Plugin {
19
19
  return {
20
20
  name: 'InstanceOfResolver',
21
21
  phase: 'ENRICHMENT',
22
- priority: 100, // Высокий приоритет - должен выполняться перед другими enrichment плагинами
23
22
  creates: {
24
23
  nodes: [],
25
24
  edges: ['INSTANCE_OF'] // Пере-создаёт INSTANCE_OF edges
26
- }
25
+ },
26
+ dependencies: ['JSASTAnalyzer']
27
27
  };
28
28
  }
29
29
  async execute(context) {
@@ -115,3 +115,4 @@ export class InstanceOfResolver extends Plugin {
115
115
  return createSuccessResult({ nodes: 0, edges: resolvedCount }, { resolvedInstanceOf: resolvedCount, removedStubs: removedStubs });
116
116
  }
117
117
  }
118
+ //# sourceMappingURL=InstanceOfResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstanceOfResolver.js","sourceRoot":"","sources":["../../../src/plugins/enrichment/InstanceOfResolver.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,26 @@
12
12
  */
13
13
  import { Plugin } from '../Plugin.js';
14
14
  import type { PluginContext, PluginResult, PluginMetadata } from '../Plugin.js';
15
+ /**
16
+ * Semantic groups for library coverage reporting.
17
+ * Maps library namespaces to their semantic category and suggested plugin.
18
+ */
19
+ export declare const LIBRARY_SEMANTIC_GROUPS: Record<string, {
20
+ semantic: string;
21
+ suggestedPlugin: string;
22
+ description: string;
23
+ }>;
24
+ /**
25
+ * Library call statistics for coverage reporting
26
+ */
27
+ export interface LibraryCallStats {
28
+ object: string;
29
+ methods: Map<string, number>;
30
+ totalCalls: number;
31
+ semantic?: string;
32
+ suggestedPlugin?: string;
33
+ description?: string;
34
+ }
15
35
  export declare class MethodCallResolver extends Plugin {
16
36
  private _containingClassCache?;
17
37
  get metadata(): PluginMetadata;
@@ -34,8 +54,26 @@ export declare class MethodCallResolver extends Plugin {
34
54
  private findContainingClass;
35
55
  private findContainingClassRecursive;
36
56
  /**
37
- * Проверяет является ли метод внешним (console, Array, Promise, etc.)
57
+ * Checks if a method call is external (built-in or well-known library).
58
+ * In strict mode, external methods are skipped (no error if unresolved).
38
59
  */
39
60
  private isExternalMethod;
61
+ /**
62
+ * Check if object is a built-in JavaScript global (not a library namespace)
63
+ */
64
+ private isBuiltInObject;
65
+ /**
66
+ * Track a library method call for coverage reporting
67
+ */
68
+ private trackLibraryCall;
69
+ /**
70
+ * Analyze why method resolution failed (REG-332).
71
+ * Returns the failure reason and resolution chain for context-aware suggestions.
72
+ */
73
+ private analyzeResolutionFailure;
74
+ /**
75
+ * Generate context-aware suggestion based on failure reason (REG-332).
76
+ */
77
+ private generateContextualSuggestion;
40
78
  }
41
79
  //# sourceMappingURL=MethodCallResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoBhF,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAqC;IAEnE,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAuH5D;;OAEG;YACW,qBAAqB;IA0CnC;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;YACW,iBAAiB;IA0D/B;;OAEG;YACW,mBAAmB;YAqBnB,4BAA4B;IAyB1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA6JhF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAkDtH,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAoBD,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAqC;IAEnE,IAAI,QAAQ,IAAI,cAAc,CAU7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA+M5D;;OAEG;YACW,qBAAqB;IA0CnC;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;YACW,iBAAiB;IA0D/B;;OAEG;YACW,mBAAmB;YAqBnB,4BAA4B;IAyB1C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAwEhC;;OAEG;IACH,OAAO,CAAC,4BAA4B;CAwCrC"}
@@ -12,17 +12,187 @@
12
12
  */
13
13
  import { Plugin, createSuccessResult } from '../Plugin.js';
14
14
  import { StrictModeError } from '../../errors/GrafemaError.js';
15
+ /**
16
+ * Built-in JavaScript prototype methods that should never error in strict mode.
17
+ * These exist on primitive types and common objects.
18
+ */
19
+ const BUILTIN_PROTOTYPE_METHODS = new Set([
20
+ // Array.prototype
21
+ 'concat', 'copyWithin', 'entries', 'every', 'fill', 'filter', 'find',
22
+ 'findIndex', 'findLast', 'findLastIndex', 'flat', 'flatMap', 'forEach',
23
+ 'includes', 'indexOf', 'join', 'keys', 'lastIndexOf', 'map', 'pop',
24
+ 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some',
25
+ 'sort', 'splice', 'toLocaleString', 'toReversed', 'toSorted', 'toSpliced',
26
+ 'toString', 'unshift', 'values', 'with', 'at',
27
+ // String.prototype
28
+ 'charAt', 'charCodeAt', 'codePointAt', 'endsWith', 'localeCompare',
29
+ 'match', 'matchAll', 'normalize', 'padEnd', 'padStart', 'repeat',
30
+ 'replace', 'replaceAll', 'search', 'split', 'startsWith', 'substring',
31
+ 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase',
32
+ 'trim', 'trimEnd', 'trimStart',
33
+ // Object.prototype (commonly called on objects)
34
+ 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'valueOf',
35
+ // Number.prototype
36
+ 'toExponential', 'toFixed', 'toPrecision',
37
+ // Date.prototype
38
+ 'getDate', 'getDay', 'getFullYear', 'getHours', 'getMilliseconds',
39
+ 'getMinutes', 'getMonth', 'getSeconds', 'getTime', 'getTimezoneOffset',
40
+ 'getUTCDate', 'getUTCDay', 'getUTCFullYear', 'getUTCHours',
41
+ 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
42
+ 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', 'setMinutes',
43
+ 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
44
+ 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth',
45
+ 'setUTCSeconds', 'toDateString', 'toISOString', 'toJSON',
46
+ 'toLocaleDateString', 'toLocaleTimeString', 'toTimeString', 'toUTCString',
47
+ // Map.prototype
48
+ 'clear', 'delete', 'get', 'has', 'set', 'size',
49
+ // Set.prototype (same as Map + add)
50
+ 'add',
51
+ // Promise.prototype
52
+ 'then', 'catch', 'finally',
53
+ // Function.prototype
54
+ 'apply', 'bind', 'call',
55
+ // RegExp.prototype
56
+ 'exec', 'test',
57
+ ]);
58
+ /**
59
+ * Common library method patterns that should be treated as external.
60
+ * These are methods from well-known npm packages.
61
+ */
62
+ const COMMON_LIBRARY_METHODS = new Set([
63
+ // Express/HTTP response
64
+ 'json', 'status', 'send', 'redirect', 'render', 'sendFile', 'sendStatus',
65
+ 'type', 'format', 'attachment', 'download', 'end', 'cookie', 'clearCookie',
66
+ 'location', 'links', 'jsonp', 'vary', 'append', 'header', 'setHeader',
67
+ // Express router/app
68
+ 'use', 'route', 'param', 'all', 'listen',
69
+ // HTTP methods (router.get, router.post, etc.)
70
+ // Note: 'get' is also in BUILTIN_PROTOTYPE_METHODS (Map.get)
71
+ 'post', 'put', 'patch', 'options', 'head',
72
+ // Socket.io
73
+ 'on', 'emit', 'to', 'in', 'join', 'leave', 'disconnect', 'broadcast',
74
+ 'once', 'off', 'removeListener', 'removeAllListeners',
75
+ // EventEmitter
76
+ 'addListener', 'prependListener', 'prependOnceListener', 'listeners',
77
+ 'listenerCount', 'eventNames', 'rawListeners', 'setMaxListeners',
78
+ 'getMaxListeners',
79
+ // Fetch API / Response
80
+ 'text', 'blob', 'arrayBuffer', 'formData', 'clone', 'ok', 'redirected',
81
+ // Node.js streams
82
+ 'pipe', 'unpipe', 'read', 'write', 'pause', 'resume', 'destroy', 'cork',
83
+ 'uncork', 'setEncoding', 'setDefaultEncoding',
84
+ // Axios
85
+ 'request', 'interceptors', 'create',
86
+ // JWT (jsonwebtoken)
87
+ 'sign', 'verify', 'decode',
88
+ // Telegram bot API (node-telegram-bot-api)
89
+ 'sendMessage', 'sendPhoto', 'sendDocument', 'sendVideo', 'sendAudio',
90
+ 'sendSticker', 'sendVoice', 'sendLocation', 'sendVenue', 'sendContact',
91
+ 'sendPoll', 'sendDice', 'sendChatAction', 'onText', 'onMessage',
92
+ 'answerCallbackQuery', 'editMessageText', 'deleteMessage', 'forwardMessage',
93
+ 'copyMessage', 'getUpdates', 'setWebHook', 'deleteWebHook', 'getWebHookInfo',
94
+ // Database (SQLite, better-sqlite3, knex, sequelize)
95
+ 'run', 'all', 'prepare', 'exec', 'query', 'transaction', 'pragma',
96
+ 'backup', 'serialize', 'parallelize', 'raw', 'select', 'insert', 'update',
97
+ 'from', 'where', 'whereIn', 'whereNot', 'orWhere', 'andWhere',
98
+ 'orderBy', 'groupBy', 'having', 'limit', 'offset', 'first',
99
+ // Express-validator
100
+ 'custom', 'isEmail', 'isLength', 'isNumeric', 'isInt', 'isFloat',
101
+ 'isBoolean', 'isDate', 'isURL', 'isUUID', 'isEmpty', 'isNotEmpty',
102
+ 'exists', 'optional', 'notEmpty', 'bail', 'withMessage', 'sanitize',
103
+ 'trim', 'escape', 'normalizeEmail', 'toInt', 'toFloat', 'toBoolean',
104
+ 'toDate', 'check', 'body', 'param', 'validationResult',
105
+ // dotenv
106
+ 'config', 'parse',
107
+ // SQLite (statement methods)
108
+ 'finalize', 'step', 'bind', 'reset', 'columns', 'safeIntegers',
109
+ 'pluck', 'expand', 'iterate', 'reader',
110
+ // Additional Telegram bot methods
111
+ 'editMessageReplyMarkup', 'editMessageCaption', 'editMessageMedia',
112
+ 'stopPoll', 'sendMediaGroup', 'sendAnimation', 'sendVideoNote',
113
+ 'kickChatMember', 'banChatMember', 'unbanChatMember', 'restrictChatMember',
114
+ 'promoteChatMember', 'setChatPermissions', 'setChatPhoto', 'deleteChatPhoto',
115
+ 'setChatTitle', 'setChatDescription', 'pinChatMessage', 'unpinChatMessage',
116
+ 'leaveChat', 'getChat', 'getChatMember', 'getChatMembersCount',
117
+ 'getChatAdministrators', 'answerInlineQuery', 'sendInvoice',
118
+ 'answerShippingQuery', 'answerPreCheckoutQuery', 'getMe',
119
+ // Crypto
120
+ 'digest', 'update', 'hash', 'createHash', 'createHmac', 'createCipheriv',
121
+ 'createDecipheriv', 'randomBytes', 'pbkdf2', 'scrypt', 'generateKeyPair',
122
+ // Express factory methods
123
+ 'urlencoded', 'static', 'Router',
124
+ // DOM
125
+ 'addEventListener', 'removeEventListener', 'dispatchEvent', 'querySelector',
126
+ 'querySelectorAll', 'getElementById', 'getElementsByClassName',
127
+ 'getElementsByTagName', 'createElement', 'createTextNode', 'appendChild',
128
+ 'removeChild', 'insertBefore', 'replaceChild', 'cloneNode', 'getAttribute',
129
+ 'setAttribute', 'removeAttribute', 'hasAttribute', 'classList', 'focus',
130
+ 'blur', 'click', 'submit', 'reset', 'preventDefault', 'stopPropagation',
131
+ 'stopImmediatePropagation',
132
+ // Browser storage
133
+ 'getItem', 'setItem', 'removeItem', 'key', 'length',
134
+ // React
135
+ 'createRoot', 'render', 'unmount', 'useState', 'useEffect', 'useCallback',
136
+ 'useMemo', 'useRef', 'useContext', 'useReducer',
137
+ ]);
138
+ /**
139
+ * Semantic groups for library coverage reporting.
140
+ * Maps library namespaces to their semantic category and suggested plugin.
141
+ */
142
+ export const LIBRARY_SEMANTIC_GROUPS = {
143
+ // HTTP Clients
144
+ axios: { semantic: 'http-client', suggestedPlugin: 'FetchAnalyzer', description: 'HTTP requests not tracked' },
145
+ got: { semantic: 'http-client', suggestedPlugin: 'FetchAnalyzer', description: 'HTTP requests not tracked' },
146
+ superagent: { semantic: 'http-client', suggestedPlugin: 'FetchAnalyzer', description: 'HTTP requests not tracked' },
147
+ request: { semantic: 'http-client', suggestedPlugin: 'FetchAnalyzer', description: 'HTTP requests not tracked' },
148
+ ky: { semantic: 'http-client', suggestedPlugin: 'FetchAnalyzer', description: 'HTTP requests not tracked' },
149
+ // HTTP Response (Express-like)
150
+ res: { semantic: 'http-response', suggestedPlugin: 'ExpressResponseAnalyzer', description: 'Response data flow not tracked' },
151
+ ctx: { semantic: 'http-response', suggestedPlugin: 'KoaResponseAnalyzer', description: 'Response data flow not tracked' },
152
+ reply: { semantic: 'http-response', suggestedPlugin: 'FastifyResponseAnalyzer', description: 'Response data flow not tracked' },
153
+ // Routers
154
+ router: { semantic: 'http-router', suggestedPlugin: 'ExpressRouteAnalyzer', description: 'Routes may not be tracked' },
155
+ app: { semantic: 'http-router', suggestedPlugin: 'ExpressRouteAnalyzer', description: 'Routes may not be tracked' },
156
+ // WebSocket
157
+ socket: { semantic: 'websocket', suggestedPlugin: 'SocketIOAnalyzer', description: 'WebSocket events not tracked' },
158
+ io: { semantic: 'websocket', suggestedPlugin: 'SocketIOAnalyzer', description: 'WebSocket events not tracked' },
159
+ ws: { semantic: 'websocket', suggestedPlugin: 'WebSocketAnalyzer', description: 'WebSocket events not tracked' },
160
+ // Database
161
+ knex: { semantic: 'database', suggestedPlugin: 'KnexAnalyzer', description: 'Database queries not tracked' },
162
+ sequelize: { semantic: 'database', suggestedPlugin: 'SequelizeAnalyzer', description: 'Database queries not tracked' },
163
+ prisma: { semantic: 'database', suggestedPlugin: 'PrismaAnalyzer', description: 'Database queries not tracked' },
164
+ mongoose: { semantic: 'database', suggestedPlugin: 'MongooseAnalyzer', description: 'Database queries not tracked' },
165
+ db: { semantic: 'database', suggestedPlugin: 'DatabaseAnalyzer', description: 'Database queries not tracked' },
166
+ pool: { semantic: 'database', suggestedPlugin: 'DatabaseAnalyzer', description: 'Database queries not tracked' },
167
+ // Auth
168
+ jwt: { semantic: 'auth', suggestedPlugin: 'AuthAnalyzer', description: 'Auth flow not visible' },
169
+ jsonwebtoken: { semantic: 'auth', suggestedPlugin: 'AuthAnalyzer', description: 'Auth flow not visible' },
170
+ passport: { semantic: 'auth', suggestedPlugin: 'PassportAnalyzer', description: 'Auth strategies not tracked' },
171
+ bcrypt: { semantic: 'auth', suggestedPlugin: 'AuthAnalyzer', description: 'Password handling not tracked' },
172
+ // Validation
173
+ validator: { semantic: 'validation', suggestedPlugin: 'ValidationAnalyzer', description: 'Validation rules not tracked' },
174
+ joi: { semantic: 'validation', suggestedPlugin: 'JoiAnalyzer', description: 'Validation schemas not tracked' },
175
+ yup: { semantic: 'validation', suggestedPlugin: 'YupAnalyzer', description: 'Validation schemas not tracked' },
176
+ zod: { semantic: 'validation', suggestedPlugin: 'ZodAnalyzer', description: 'Validation schemas not tracked' },
177
+ // Logging
178
+ logger: { semantic: 'logging', suggestedPlugin: 'LoggingAnalyzer', description: 'Log statements not tracked' },
179
+ winston: { semantic: 'logging', suggestedPlugin: 'LoggingAnalyzer', description: 'Log statements not tracked' },
180
+ pino: { semantic: 'logging', suggestedPlugin: 'LoggingAnalyzer', description: 'Log statements not tracked' },
181
+ bunyan: { semantic: 'logging', suggestedPlugin: 'LoggingAnalyzer', description: 'Log statements not tracked' },
182
+ // Telegram bot
183
+ bot: { semantic: 'telegram-bot', suggestedPlugin: 'TelegramBotAnalyzer', description: 'Bot commands not tracked' },
184
+ };
15
185
  export class MethodCallResolver extends Plugin {
16
186
  _containingClassCache;
17
187
  get metadata() {
18
188
  return {
19
189
  name: 'MethodCallResolver',
20
190
  phase: 'ENRICHMENT',
21
- priority: 50,
22
191
  creates: {
23
192
  nodes: [],
24
193
  edges: ['CALLS']
25
- }
194
+ },
195
+ dependencies: ['ImportExportLinker']
26
196
  };
27
197
  }
28
198
  async execute(context) {
@@ -32,15 +202,40 @@ export class MethodCallResolver extends Plugin {
32
202
  let methodCallsProcessed = 0;
33
203
  let edgesCreated = 0;
34
204
  let unresolved = 0;
205
+ let externalSkipped = 0;
206
+ let suppressedByIgnore = 0; // REG-332: Count of errors suppressed by grafema-ignore
35
207
  const errors = [];
208
+ // Track library calls for coverage reporting
209
+ const libraryCallStats = new Map();
36
210
  // Собираем все METHOD_CALL ноды (CALL с object атрибутом)
37
- const methodCalls = [];
211
+ // REG-332: Deduplicate by (object, method, file, line), preferring nodes with grafemaIgnore
212
+ const methodCallMap = new Map();
38
213
  for await (const node of graph.queryNodes({ nodeType: 'CALL' })) {
39
214
  const callNode = node;
40
215
  if (callNode.object) {
41
- methodCalls.push(callNode);
216
+ // REG-332: Extract grafemaIgnore from metadata if present
217
+ if (callNode.metadata) {
218
+ try {
219
+ const meta = typeof callNode.metadata === 'string'
220
+ ? JSON.parse(callNode.metadata)
221
+ : callNode.metadata;
222
+ if (meta.grafemaIgnore) {
223
+ callNode.grafemaIgnore = meta.grafemaIgnore;
224
+ }
225
+ }
226
+ catch {
227
+ // Ignore parse errors
228
+ }
229
+ }
230
+ // Deduplicate: prefer node with grafemaIgnore if one exists
231
+ const key = `${callNode.object}.${callNode.method}:${callNode.file}:${callNode.line}`;
232
+ const existing = methodCallMap.get(key);
233
+ if (!existing || (callNode.grafemaIgnore && !existing.grafemaIgnore)) {
234
+ methodCallMap.set(key, callNode);
235
+ }
42
236
  }
43
237
  }
238
+ const methodCalls = Array.from(methodCallMap.values());
44
239
  logger.info('Found method calls to resolve', { count: methodCalls.length });
45
240
  // Собираем все классы и их методы для быстрого поиска
46
241
  const classMethodIndex = await this.buildClassMethodIndex(graph, logger);
@@ -74,6 +269,13 @@ export class MethodCallResolver extends Plugin {
74
269
  }
75
270
  // Пропускаем внешние методы (console, Array.prototype, etc.)
76
271
  if (this.isExternalMethod(methodCall.object, methodCall.method)) {
272
+ externalSkipped++;
273
+ // Track library calls for coverage reporting (skip built-in objects)
274
+ const obj = methodCall.object;
275
+ const method = methodCall.method;
276
+ if (!this.isBuiltInObject(obj) && !BUILTIN_PROTOTYPE_METHODS.has(method)) {
277
+ this.trackLibraryCall(libraryCallStats, obj, method);
278
+ }
77
279
  continue;
78
280
  }
79
281
  // Проверяем есть ли уже CALLS ребро
@@ -93,8 +295,21 @@ export class MethodCallResolver extends Plugin {
93
295
  }
94
296
  else {
95
297
  unresolved++;
96
- // In strict mode, collect error for later reporting
298
+ // In strict mode, collect error with context-aware analysis (REG-332)
97
299
  if (context.strictMode) {
300
+ // REG-332: Check for grafema-ignore suppression
301
+ if (methodCall.grafemaIgnore?.code === 'STRICT_UNRESOLVED_METHOD') {
302
+ suppressedByIgnore++;
303
+ logger.debug('Suppressed by grafema-ignore', {
304
+ call: `${methodCall.object}.${methodCall.method}`,
305
+ reason: methodCall.grafemaIgnore.reason,
306
+ });
307
+ continue;
308
+ }
309
+ // Analyze WHY resolution failed
310
+ const { reason, chain } = this.analyzeResolutionFailure(methodCall, classMethodIndex, variableTypes);
311
+ // Generate context-aware suggestion based on failure reason
312
+ const suggestion = this.generateContextualSuggestion(methodCall.object, methodCall.method, reason, chain);
98
313
  const error = new StrictModeError(`Cannot resolve method call: ${methodCall.object}.${methodCall.method}`, 'STRICT_UNRESOLVED_METHOD', {
99
314
  filePath: methodCall.file,
100
315
  lineNumber: methodCall.line,
@@ -102,18 +317,44 @@ export class MethodCallResolver extends Plugin {
102
317
  plugin: 'MethodCallResolver',
103
318
  object: methodCall.object,
104
319
  method: methodCall.method,
105
- }, `Check if class "${methodCall.object}" is imported and has method "${methodCall.method}"`);
320
+ resolutionChain: chain,
321
+ failureReason: reason,
322
+ }, suggestion);
106
323
  errors.push(error);
107
324
  }
108
325
  }
109
326
  }
327
+ // Convert library stats to array for reporting
328
+ const libraryStats = Array.from(libraryCallStats.values())
329
+ .sort((a, b) => b.totalCalls - a.totalCalls);
110
330
  const summary = {
111
331
  methodCallsProcessed,
112
332
  edgesCreated,
113
333
  unresolved,
114
- classesIndexed: classMethodIndex.size
334
+ externalSkipped,
335
+ suppressedByIgnore, // REG-332
336
+ classesIndexed: classMethodIndex.size,
337
+ libraryStats
115
338
  };
116
- logger.info('Summary', summary);
339
+ logger.info('Summary', {
340
+ methodCallsProcessed,
341
+ edgesCreated,
342
+ unresolved,
343
+ externalSkipped,
344
+ suppressedByIgnore, // REG-332
345
+ libraryCallsTracked: libraryStats.length
346
+ });
347
+ // Log library coverage report if there are tracked calls
348
+ if (libraryStats.length > 0) {
349
+ logger.info('Library coverage report', {
350
+ libraries: libraryStats.map(s => ({
351
+ library: s.object,
352
+ calls: s.totalCalls,
353
+ semantic: s.semantic,
354
+ suggestion: s.suggestedPlugin
355
+ }))
356
+ });
357
+ }
117
358
  return createSuccessResult({ nodes: 0, edges: edgesCreated }, summary, errors);
118
359
  }
119
360
  /**
@@ -257,16 +498,186 @@ export class MethodCallResolver extends Plugin {
257
498
  return null;
258
499
  }
259
500
  /**
260
- * Проверяет является ли метод внешним (console, Array, Promise, etc.)
501
+ * Checks if a method call is external (built-in or well-known library).
502
+ * In strict mode, external methods are skipped (no error if unresolved).
261
503
  */
262
504
  isExternalMethod(object, method) {
505
+ // Known global objects (console, Math, etc.)
263
506
  const externalObjects = new Set([
264
507
  'console', 'Math', 'JSON', 'Object', 'Array', 'String', 'Number',
265
508
  'Boolean', 'Date', 'RegExp', 'Error', 'Promise', 'Set', 'Map',
266
509
  'WeakSet', 'WeakMap', 'Symbol', 'Proxy', 'Reflect', 'Intl',
267
510
  'process', 'global', 'window', 'document', 'Buffer',
268
- 'fs', 'path', 'http', 'https', 'crypto', 'os', 'url', 'util'
511
+ 'fs', 'path', 'http', 'https', 'crypto', 'os', 'url', 'util',
512
+ 'localStorage', 'sessionStorage', 'navigator', 'location', 'history',
513
+ 'performance', 'fetch', 'XMLHttpRequest', 'WebSocket',
514
+ 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
515
+ 'requestAnimationFrame', 'cancelAnimationFrame',
516
+ 'Atomics', 'SharedArrayBuffer', 'DataView', 'ArrayBuffer',
517
+ 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array',
518
+ 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array',
519
+ 'Float64Array', 'BigInt64Array', 'BigUint64Array',
520
+ // Common npm package namespaces
521
+ 'dotenv', 'express', 'axios', 'lodash', '_', 'moment', 'dayjs',
522
+ 'sqlite3', 'pg', 'mysql', 'mysql2', 'mongodb', 'mongoose', 'sequelize',
523
+ 'knex', 'typeorm', 'prisma', 'jwt', 'jsonwebtoken', 'bcrypt', 'bcryptjs',
524
+ 'passport', 'multer', 'nodemailer', 'winston', 'bunyan', 'pino',
525
+ 'chalk', 'colors', 'yargs', 'commander', 'inquirer', 'ora', 'figlet',
526
+ 'uuid', 'nanoid', 'shortid', 'validator', 'joi', 'yup', 'zod',
527
+ 'cheerio', 'puppeteer', 'playwright', 'selenium', 'sharp', 'jimp',
528
+ 'socket', 'io', 'ws', 'Redis', 'redis', 'ioredis', 'amqp', 'amqplib',
529
+ 'aws', 'AWS', 's3', 'sqs', 'sns', 'lambda', 'dynamodb',
530
+ 'React', 'ReactDOM', 'Vue', 'vue', 'angular', 'Angular',
531
+ ]);
532
+ // Check if object is a known global
533
+ if (externalObjects.has(object)) {
534
+ return true;
535
+ }
536
+ // Check if method is a built-in prototype method
537
+ if (BUILTIN_PROTOTYPE_METHODS.has(method)) {
538
+ return true;
539
+ }
540
+ // Check if method is a common library method
541
+ if (COMMON_LIBRARY_METHODS.has(method)) {
542
+ return true;
543
+ }
544
+ return false;
545
+ }
546
+ /**
547
+ * Check if object is a built-in JavaScript global (not a library namespace)
548
+ */
549
+ isBuiltInObject(object) {
550
+ const builtInObjects = new Set([
551
+ 'console', 'Math', 'JSON', 'Object', 'Array', 'String', 'Number',
552
+ 'Boolean', 'Date', 'RegExp', 'Error', 'Promise', 'Set', 'Map',
553
+ 'WeakSet', 'WeakMap', 'Symbol', 'Proxy', 'Reflect', 'Intl',
554
+ 'process', 'global', 'window', 'document', 'Buffer',
555
+ 'fs', 'path', 'http', 'https', 'crypto', 'os', 'url', 'util',
556
+ 'localStorage', 'sessionStorage', 'navigator', 'location', 'history',
557
+ 'performance', 'fetch', 'XMLHttpRequest', 'WebSocket',
558
+ 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
559
+ 'requestAnimationFrame', 'cancelAnimationFrame',
560
+ 'Atomics', 'SharedArrayBuffer', 'DataView', 'ArrayBuffer',
561
+ 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array',
562
+ 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array',
563
+ 'Float64Array', 'BigInt64Array', 'BigUint64Array',
269
564
  ]);
270
- return externalObjects.has(object);
565
+ return builtInObjects.has(object);
566
+ }
567
+ /**
568
+ * Track a library method call for coverage reporting
569
+ */
570
+ trackLibraryCall(stats, object, method) {
571
+ if (!stats.has(object)) {
572
+ const semanticInfo = LIBRARY_SEMANTIC_GROUPS[object];
573
+ stats.set(object, {
574
+ object,
575
+ methods: new Map(),
576
+ totalCalls: 0,
577
+ semantic: semanticInfo?.semantic,
578
+ suggestedPlugin: semanticInfo?.suggestedPlugin,
579
+ description: semanticInfo?.description
580
+ });
581
+ }
582
+ const libStats = stats.get(object);
583
+ libStats.totalCalls++;
584
+ libStats.methods.set(method, (libStats.methods.get(method) || 0) + 1);
585
+ }
586
+ /**
587
+ * Analyze why method resolution failed (REG-332).
588
+ * Returns the failure reason and resolution chain for context-aware suggestions.
589
+ */
590
+ analyzeResolutionFailure(methodCall, classMethodIndex, _variableTypes) {
591
+ const { object, method, file } = methodCall;
592
+ const chain = [];
593
+ if (!object || !method) {
594
+ return { reason: 'unknown', chain };
595
+ }
596
+ // Check if object is a known class name (static call)
597
+ if (classMethodIndex.has(object)) {
598
+ const classEntry = classMethodIndex.get(object);
599
+ chain.push({
600
+ step: `${object} class lookup`,
601
+ result: 'found',
602
+ file: classEntry.classNode.file,
603
+ line: classEntry.classNode.line,
604
+ });
605
+ if (!classEntry.methods.has(method)) {
606
+ chain.push({
607
+ step: `${object}.${method} method`,
608
+ result: 'NOT FOUND in class',
609
+ });
610
+ return { reason: 'method_not_found', chain };
611
+ }
612
+ }
613
+ // Check for local class in same file
614
+ const localKey = `${file}:${object}`;
615
+ if (classMethodIndex.has(localKey)) {
616
+ const classEntry = classMethodIndex.get(localKey);
617
+ chain.push({
618
+ step: `${object} local class`,
619
+ result: 'found in same file',
620
+ });
621
+ if (!classEntry.methods.has(method)) {
622
+ chain.push({
623
+ step: `${object}.${method} method`,
624
+ result: 'NOT FOUND',
625
+ });
626
+ return { reason: 'method_not_found', chain };
627
+ }
628
+ }
629
+ // Check if this is a library call
630
+ if (LIBRARY_SEMANTIC_GROUPS[object]) {
631
+ const libInfo = LIBRARY_SEMANTIC_GROUPS[object];
632
+ chain.push({
633
+ step: `${object} lookup`,
634
+ result: `external library (${libInfo.semantic})`,
635
+ });
636
+ return { reason: 'external_dependency', chain };
637
+ }
638
+ // Object type is unknown
639
+ chain.push({
640
+ step: `${object} type lookup`,
641
+ result: 'unknown (not in class index)',
642
+ });
643
+ chain.push({
644
+ step: `${object}.${method}`,
645
+ result: 'FAILED (no type information)',
646
+ });
647
+ return { reason: 'unknown_object_type', chain };
648
+ }
649
+ /**
650
+ * Generate context-aware suggestion based on failure reason (REG-332).
651
+ */
652
+ generateContextualSuggestion(object, method, reason, chain) {
653
+ switch (reason) {
654
+ case 'unknown_object_type': {
655
+ // Find the source in chain that shows "unknown"
656
+ const sourceStep = chain.find(s => s.result.includes('unknown'));
657
+ const sourceDesc = sourceStep?.step || 'the source';
658
+ return `Variable "${object}" has unknown type from ${sourceDesc}. ` +
659
+ `Add JSDoc: /** @type {${object}Class} */ or check imports.`;
660
+ }
661
+ case 'class_not_imported':
662
+ return `Class "${object}" is not imported. Check your imports or ensure the class is defined.`;
663
+ case 'method_not_found':
664
+ return `Class "${object}" exists but has no method "${method}". ` +
665
+ `Check spelling or verify the method is defined in the class.`;
666
+ case 'external_dependency': {
667
+ const libInfo = LIBRARY_SEMANTIC_GROUPS[object];
668
+ if (libInfo?.suggestedPlugin) {
669
+ return `This call is to external library "${object}" (${libInfo.semantic}). ` +
670
+ `Consider using ${libInfo.suggestedPlugin} for semantic analysis.`;
671
+ }
672
+ return `This call is to external library "${object}". ` +
673
+ `Consider adding type stubs or a dedicated analyzer plugin.`;
674
+ }
675
+ case 'circular_reference':
676
+ return `Alias chain for "${object}" is too deep (possible cycle). ` +
677
+ `Simplify variable assignments or check for circular references.`;
678
+ default:
679
+ return `Check if class "${object}" is imported and has method "${method}".`;
680
+ }
271
681
  }
272
682
  }
683
+ //# sourceMappingURL=MethodCallResolver.js.map