@grafema/core 0.1.0-alpha.5 → 0.2.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/README.md +0 -1
  2. package/dist/Orchestrator.d.ts +31 -2
  3. package/dist/Orchestrator.d.ts.map +1 -1
  4. package/dist/Orchestrator.js +222 -27
  5. package/dist/config/ConfigLoader.d.ts +90 -0
  6. package/dist/config/ConfigLoader.d.ts.map +1 -0
  7. package/dist/config/ConfigLoader.js +249 -0
  8. package/dist/config/index.d.ts +6 -0
  9. package/dist/config/index.d.ts.map +1 -0
  10. package/dist/config/index.js +4 -0
  11. package/dist/core/ASTWorker.d.ts +11 -36
  12. package/dist/core/ASTWorker.d.ts.map +1 -1
  13. package/dist/core/ASTWorker.js +93 -99
  14. package/dist/core/CoverageAnalyzer.d.ts +65 -0
  15. package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
  16. package/dist/core/CoverageAnalyzer.js +198 -0
  17. package/dist/core/FileExplainer.d.ts +101 -0
  18. package/dist/core/FileExplainer.d.ts.map +1 -0
  19. package/dist/core/FileExplainer.js +139 -0
  20. package/dist/core/FileNodeManager.d.ts +40 -0
  21. package/dist/core/FileNodeManager.d.ts.map +1 -0
  22. package/dist/core/FileNodeManager.js +84 -0
  23. package/dist/core/GraphFreshnessChecker.d.ts +33 -0
  24. package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
  25. package/dist/core/GraphFreshnessChecker.js +101 -0
  26. package/dist/core/HashUtils.d.ts +24 -0
  27. package/dist/core/HashUtils.d.ts.map +1 -0
  28. package/dist/core/HashUtils.js +45 -0
  29. package/dist/core/IncrementalReanalyzer.d.ts +36 -0
  30. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
  31. package/dist/core/IncrementalReanalyzer.js +132 -0
  32. package/dist/core/NodeFactory.d.ts +266 -19
  33. package/dist/core/NodeFactory.d.ts.map +1 -1
  34. package/dist/core/NodeFactory.js +256 -21
  35. package/dist/core/ScopeTracker.d.ts +84 -0
  36. package/dist/core/ScopeTracker.d.ts.map +1 -0
  37. package/dist/core/ScopeTracker.js +116 -0
  38. package/dist/core/SemanticId.d.ts +90 -0
  39. package/dist/core/SemanticId.d.ts.map +1 -0
  40. package/dist/core/SemanticId.js +115 -0
  41. package/dist/core/VersionManager.d.ts.map +1 -1
  42. package/dist/core/VersionManager.js +3 -2
  43. package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
  44. package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
  45. package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
  46. package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
  47. package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
  48. package/dist/core/nodes/ArrayLiteralNode.js +43 -0
  49. package/dist/core/nodes/BranchNode.d.ts +41 -0
  50. package/dist/core/nodes/BranchNode.d.ts.map +1 -0
  51. package/dist/core/nodes/BranchNode.js +82 -0
  52. package/dist/core/nodes/CallSiteNode.d.ts +30 -2
  53. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
  54. package/dist/core/nodes/CallSiteNode.js +54 -4
  55. package/dist/core/nodes/CaseNode.d.ts +43 -0
  56. package/dist/core/nodes/CaseNode.d.ts.map +1 -0
  57. package/dist/core/nodes/CaseNode.js +81 -0
  58. package/dist/core/nodes/ClassNode.d.ts +34 -2
  59. package/dist/core/nodes/ClassNode.d.ts.map +1 -1
  60. package/dist/core/nodes/ClassNode.js +52 -4
  61. package/dist/core/nodes/ConstantNode.d.ts +2 -2
  62. package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
  63. package/dist/core/nodes/ConstantNode.js +6 -4
  64. package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
  65. package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
  66. package/dist/core/nodes/ConstructorCallNode.js +171 -0
  67. package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
  68. package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
  69. package/dist/core/nodes/DatabaseQueryNode.js +5 -2
  70. package/dist/core/nodes/DecoratorNode.d.ts +42 -0
  71. package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
  72. package/dist/core/nodes/DecoratorNode.js +64 -0
  73. package/dist/core/nodes/EnumNode.d.ts +42 -0
  74. package/dist/core/nodes/EnumNode.d.ts.map +1 -0
  75. package/dist/core/nodes/EnumNode.js +56 -0
  76. package/dist/core/nodes/EventListenerNode.d.ts +4 -4
  77. package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
  78. package/dist/core/nodes/EventListenerNode.js +7 -4
  79. package/dist/core/nodes/ExportNode.d.ts +38 -2
  80. package/dist/core/nodes/ExportNode.d.ts.map +1 -1
  81. package/dist/core/nodes/ExportNode.js +54 -4
  82. package/dist/core/nodes/ExpressionNode.d.ts +97 -0
  83. package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
  84. package/dist/core/nodes/ExpressionNode.js +180 -0
  85. package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
  86. package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
  87. package/dist/core/nodes/ExternalModuleNode.js +49 -0
  88. package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
  89. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
  90. package/dist/core/nodes/ExternalStdioNode.js +15 -8
  91. package/dist/core/nodes/FunctionNode.d.ts +36 -0
  92. package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
  93. package/dist/core/nodes/FunctionNode.js +80 -1
  94. package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
  95. package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
  96. package/dist/core/nodes/HttpRequestNode.js +7 -4
  97. package/dist/core/nodes/ImportNode.d.ts +28 -6
  98. package/dist/core/nodes/ImportNode.d.ts.map +1 -1
  99. package/dist/core/nodes/ImportNode.js +43 -8
  100. package/dist/core/nodes/InterfaceNode.d.ts +46 -0
  101. package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
  102. package/dist/core/nodes/InterfaceNode.js +57 -0
  103. package/dist/core/nodes/IssueNode.d.ts +73 -0
  104. package/dist/core/nodes/IssueNode.d.ts.map +1 -0
  105. package/dist/core/nodes/IssueNode.js +129 -0
  106. package/dist/core/nodes/LiteralNode.d.ts +2 -2
  107. package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
  108. package/dist/core/nodes/LiteralNode.js +6 -4
  109. package/dist/core/nodes/MethodCallNode.d.ts +32 -2
  110. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
  111. package/dist/core/nodes/MethodCallNode.js +57 -4
  112. package/dist/core/nodes/MethodNode.d.ts +34 -2
  113. package/dist/core/nodes/MethodNode.d.ts.map +1 -1
  114. package/dist/core/nodes/MethodNode.js +55 -3
  115. package/dist/core/nodes/ModuleNode.d.ts +31 -0
  116. package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
  117. package/dist/core/nodes/ModuleNode.js +37 -0
  118. package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
  119. package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
  120. package/dist/core/nodes/NetworkRequestNode.js +65 -0
  121. package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
  122. package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
  123. package/dist/core/nodes/ObjectLiteralNode.js +43 -0
  124. package/dist/core/nodes/ParameterNode.d.ts +2 -2
  125. package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
  126. package/dist/core/nodes/ParameterNode.js +5 -3
  127. package/dist/core/nodes/ScopeNode.d.ts +31 -0
  128. package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
  129. package/dist/core/nodes/ScopeNode.js +49 -0
  130. package/dist/core/nodes/TypeNode.d.ts +36 -0
  131. package/dist/core/nodes/TypeNode.d.ts.map +1 -0
  132. package/dist/core/nodes/TypeNode.js +55 -0
  133. package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
  134. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
  135. package/dist/core/nodes/VariableDeclarationNode.js +48 -4
  136. package/dist/core/nodes/index.d.ts +15 -1
  137. package/dist/core/nodes/index.d.ts.map +1 -1
  138. package/dist/core/nodes/index.js +17 -0
  139. package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
  140. package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
  141. package/dist/data/builtins/BuiltinRegistry.js +110 -0
  142. package/dist/data/builtins/definitions.d.ts +28 -0
  143. package/dist/data/builtins/definitions.d.ts.map +1 -0
  144. package/dist/data/builtins/definitions.js +250 -0
  145. package/dist/data/builtins/index.d.ts +10 -0
  146. package/dist/data/builtins/index.d.ts.map +1 -0
  147. package/dist/data/builtins/index.js +8 -0
  148. package/dist/data/builtins/jsGlobals.d.ts +18 -0
  149. package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
  150. package/dist/data/builtins/jsGlobals.js +26 -0
  151. package/dist/data/builtins/types.d.ts +34 -0
  152. package/dist/data/builtins/types.d.ts.map +1 -0
  153. package/dist/data/builtins/types.js +7 -0
  154. package/dist/data/globals/definitions.d.ts +27 -0
  155. package/dist/data/globals/definitions.d.ts.map +1 -0
  156. package/dist/data/globals/definitions.js +117 -0
  157. package/dist/data/globals/index.d.ts +36 -0
  158. package/dist/data/globals/index.d.ts.map +1 -0
  159. package/dist/data/globals/index.js +52 -0
  160. package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
  161. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
  162. package/dist/diagnostics/DiagnosticCollector.js +129 -0
  163. package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
  164. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
  165. package/dist/diagnostics/DiagnosticReporter.js +247 -0
  166. package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
  167. package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
  168. package/dist/diagnostics/DiagnosticWriter.js +43 -0
  169. package/dist/diagnostics/index.d.ts +14 -0
  170. package/dist/diagnostics/index.d.ts.map +1 -0
  171. package/dist/diagnostics/index.js +11 -0
  172. package/dist/errors/GrafemaError.d.ts +161 -0
  173. package/dist/errors/GrafemaError.d.ts.map +1 -0
  174. package/dist/errors/GrafemaError.js +181 -0
  175. package/dist/index.d.ts +73 -1
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +70 -1
  178. package/dist/logging/Logger.d.ts +48 -0
  179. package/dist/logging/Logger.d.ts.map +1 -0
  180. package/dist/logging/Logger.js +134 -0
  181. package/dist/plugins/Plugin.d.ts +5 -1
  182. package/dist/plugins/Plugin.d.ts.map +1 -1
  183. package/dist/plugins/Plugin.js +33 -0
  184. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  185. package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
  186. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  187. package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
  188. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
  189. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
  190. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
  191. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  192. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
  193. package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
  194. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  195. package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
  196. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
  197. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  198. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
  199. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
  200. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  201. package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
  202. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  203. package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
  204. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  205. package/dist/plugins/analysis/RustAnalyzer.js +16 -11
  206. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  207. package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
  208. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  209. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
  210. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
  211. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  212. package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
  213. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  214. package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
  215. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
  216. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  217. package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
  218. package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
  219. package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
  220. package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
  221. package/dist/plugins/analysis/ast/types.d.ts +470 -5
  222. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  223. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
  224. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
  225. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
  226. package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
  227. package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
  228. package/dist/plugins/analysis/ast/utils/index.js +5 -0
  229. package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
  230. package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
  231. package/dist/plugins/analysis/ast/utils/location.js +78 -0
  232. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
  233. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  234. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
  235. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
  236. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  237. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
  238. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
  239. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  240. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
  241. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
  242. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  243. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
  244. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
  245. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  246. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
  247. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
  248. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  249. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
  250. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
  251. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  252. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
  253. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  254. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  255. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  256. package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
  257. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
  258. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
  259. package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
  260. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
  261. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
  262. package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
  263. package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
  264. package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
  265. package/dist/plugins/discovery/workspaces/detector.js +49 -0
  266. package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
  267. package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
  268. package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
  269. package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
  270. package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
  271. package/dist/plugins/discovery/workspaces/index.js +8 -0
  272. package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
  273. package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
  274. package/dist/plugins/discovery/workspaces/parsers.js +80 -0
  275. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
  276. package/dist/plugins/enrichment/AliasTracker.js +29 -8
  277. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
  278. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
  279. package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
  280. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
  281. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
  282. package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
  283. package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
  284. package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
  285. package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
  286. package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
  287. package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
  288. package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
  289. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
  290. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  291. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
  292. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  293. package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
  294. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  295. package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
  296. package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
  297. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  298. package/dist/plugins/enrichment/MountPointResolver.js +173 -147
  299. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
  300. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
  301. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
  302. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  303. package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
  304. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  305. package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
  306. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
  307. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  308. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
  309. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  310. package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
  311. package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
  312. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  313. package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
  314. package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
  315. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  316. package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
  317. package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
  318. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
  319. package/dist/plugins/indexing/ServiceDetector.js +28 -15
  320. package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
  321. package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
  322. package/dist/plugins/validation/BrokenImportValidator.js +249 -0
  323. package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
  324. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  325. package/dist/plugins/validation/CallResolverValidator.js +103 -77
  326. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
  327. package/dist/plugins/validation/DataFlowValidator.js +62 -49
  328. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
  329. package/dist/plugins/validation/EvalBanValidator.js +17 -16
  330. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  331. package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
  332. package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
  333. package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
  334. package/dist/plugins/validation/NodeCreationValidator.js +415 -0
  335. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  336. package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
  337. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
  338. package/dist/plugins/validation/ShadowingDetector.js +6 -5
  339. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  340. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
  341. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  342. package/dist/plugins/vcs/GitPlugin.js +10 -12
  343. package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
  344. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
  345. package/dist/plugins/vcs/VCSPlugin.js +5 -5
  346. package/dist/queries/findCallsInFunction.d.ts +52 -0
  347. package/dist/queries/findCallsInFunction.d.ts.map +1 -0
  348. package/dist/queries/findCallsInFunction.js +135 -0
  349. package/dist/queries/findContainingFunction.d.ts +45 -0
  350. package/dist/queries/findContainingFunction.d.ts.map +1 -0
  351. package/dist/queries/findContainingFunction.js +54 -0
  352. package/dist/queries/index.d.ts +14 -0
  353. package/dist/queries/index.d.ts.map +1 -0
  354. package/dist/queries/index.js +11 -0
  355. package/dist/queries/traceValues.d.ts +70 -0
  356. package/dist/queries/traceValues.d.ts.map +1 -0
  357. package/dist/queries/traceValues.js +299 -0
  358. package/dist/queries/types.d.ts +163 -0
  359. package/dist/queries/types.d.ts.map +1 -0
  360. package/dist/queries/types.js +9 -0
  361. package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
  362. package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
  363. package/dist/schema/GraphSchemaExtractor.js +124 -0
  364. package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
  365. package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
  366. package/dist/schema/InterfaceSchemaExtractor.js +112 -0
  367. package/dist/schema/index.d.ts +5 -0
  368. package/dist/schema/index.d.ts.map +1 -0
  369. package/dist/schema/index.js +2 -0
  370. package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
  371. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  372. package/dist/storage/backends/RFDBServerBackend.js +72 -62
  373. package/dist/storage/backends/typeValidation.d.ts.map +1 -1
  374. package/dist/storage/backends/typeValidation.js +1 -0
  375. package/dist/validation/PathValidator.d.ts +1 -2
  376. package/dist/validation/PathValidator.d.ts.map +1 -1
  377. package/package.json +3 -3
  378. package/src/Orchestrator.ts +272 -27
  379. package/src/config/ConfigLoader.ts +354 -0
  380. package/src/config/index.ts +5 -0
  381. package/src/core/ASTWorker.ts +143 -139
  382. package/src/core/CoverageAnalyzer.ts +243 -0
  383. package/src/core/FileExplainer.ts +179 -0
  384. package/src/core/FileNodeManager.ts +100 -0
  385. package/src/core/GraphFreshnessChecker.ts +143 -0
  386. package/src/core/HashUtils.ts +48 -0
  387. package/src/core/IncrementalReanalyzer.ts +192 -0
  388. package/src/core/NodeFactory.ts +470 -23
  389. package/src/core/ScopeTracker.ts +154 -0
  390. package/src/core/SemanticId.ts +192 -0
  391. package/src/core/VersionManager.ts +3 -2
  392. package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
  393. package/src/core/nodes/ArrayLiteralNode.ts +66 -0
  394. package/src/core/nodes/BranchNode.ts +113 -0
  395. package/src/core/nodes/CallSiteNode.ts +64 -4
  396. package/src/core/nodes/CaseNode.ts +123 -0
  397. package/src/core/nodes/ClassNode.ts +67 -4
  398. package/src/core/nodes/ConstantNode.ts +5 -4
  399. package/src/core/nodes/ConstructorCallNode.ts +217 -0
  400. package/src/core/nodes/DatabaseQueryNode.ts +5 -1
  401. package/src/core/nodes/DecoratorNode.ts +92 -0
  402. package/src/core/nodes/EnumNode.ts +87 -0
  403. package/src/core/nodes/EventListenerNode.ts +7 -4
  404. package/src/core/nodes/ExportNode.ts +74 -4
  405. package/src/core/nodes/ExpressionNode.ts +232 -0
  406. package/src/core/nodes/ExternalModuleNode.ts +65 -0
  407. package/src/core/nodes/ExternalStdioNode.ts +17 -9
  408. package/src/core/nodes/FunctionNode.ts +101 -1
  409. package/src/core/nodes/HttpRequestNode.ts +7 -4
  410. package/src/core/nodes/ImportNode.ts +62 -13
  411. package/src/core/nodes/InterfaceNode.ts +92 -0
  412. package/src/core/nodes/IssueNode.ts +177 -0
  413. package/src/core/nodes/LiteralNode.ts +5 -4
  414. package/src/core/nodes/MethodCallNode.ts +70 -4
  415. package/src/core/nodes/MethodNode.ts +68 -3
  416. package/src/core/nodes/ModuleNode.ts +50 -0
  417. package/src/core/nodes/NetworkRequestNode.ts +77 -0
  418. package/src/core/nodes/ObjectLiteralNode.ts +66 -0
  419. package/src/core/nodes/ParameterNode.ts +4 -3
  420. package/src/core/nodes/ScopeNode.ts +65 -0
  421. package/src/core/nodes/TypeNode.ts +79 -0
  422. package/src/core/nodes/VariableDeclarationNode.ts +58 -4
  423. package/src/core/nodes/index.ts +21 -1
  424. package/src/data/builtins/BuiltinRegistry.ts +124 -0
  425. package/src/data/builtins/definitions.ts +267 -0
  426. package/src/data/builtins/index.ts +10 -0
  427. package/src/data/builtins/jsGlobals.ts +28 -0
  428. package/src/data/builtins/types.ts +36 -0
  429. package/src/data/globals/definitions.ts +156 -0
  430. package/src/data/globals/index.ts +66 -0
  431. package/src/diagnostics/DiagnosticCollector.ts +163 -0
  432. package/src/diagnostics/DiagnosticReporter.ts +324 -0
  433. package/src/diagnostics/DiagnosticWriter.ts +50 -0
  434. package/src/diagnostics/index.ts +16 -0
  435. package/src/errors/GrafemaError.ts +239 -0
  436. package/src/index.ts +193 -1
  437. package/src/logging/Logger.ts +152 -0
  438. package/src/plugins/Plugin.ts +42 -0
  439. package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
  440. package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
  441. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
  442. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
  443. package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
  444. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
  445. package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
  446. package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
  447. package/src/plugins/analysis/RustAnalyzer.ts +16 -11
  448. package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
  449. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
  450. package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
  451. package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
  452. package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
  453. package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
  454. package/src/plugins/analysis/ast/types.ts +596 -6
  455. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
  456. package/src/plugins/analysis/ast/utils/index.ts +12 -0
  457. package/src/plugins/analysis/ast/utils/location.ts +103 -0
  458. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
  459. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
  460. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
  461. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
  462. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
  463. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
  464. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
  465. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
  466. package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
  467. package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
  468. package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
  469. package/src/plugins/discovery/workspaces/detector.ts +63 -0
  470. package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
  471. package/src/plugins/discovery/workspaces/index.ts +23 -0
  472. package/src/plugins/discovery/workspaces/parsers.ts +99 -0
  473. package/src/plugins/enrichment/AliasTracker.ts +35 -8
  474. package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
  475. package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
  476. package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
  477. package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
  478. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
  479. package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
  480. package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
  481. package/src/plugins/enrichment/MountPointResolver.ts +208 -195
  482. package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
  483. package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
  484. package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
  485. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
  486. package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
  487. package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
  488. package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
  489. package/src/plugins/validation/BrokenImportValidator.ts +325 -0
  490. package/src/plugins/validation/CallResolverValidator.ts +131 -110
  491. package/src/plugins/validation/DataFlowValidator.ts +88 -67
  492. package/src/plugins/validation/EvalBanValidator.ts +17 -16
  493. package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
  494. package/src/plugins/validation/NodeCreationValidator.ts +554 -0
  495. package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
  496. package/src/plugins/validation/ShadowingDetector.ts +6 -5
  497. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
  498. package/src/plugins/vcs/GitPlugin.ts +40 -12
  499. package/src/plugins/vcs/VCSPlugin.ts +7 -5
  500. package/src/queries/README.md +46 -0
  501. package/src/queries/findCallsInFunction.ts +206 -0
  502. package/src/queries/findContainingFunction.ts +83 -0
  503. package/src/queries/index.ts +23 -0
  504. package/src/queries/traceValues.ts +398 -0
  505. package/src/queries/types.ts +187 -0
  506. package/src/schema/GraphSchemaExtractor.ts +177 -0
  507. package/src/schema/InterfaceSchemaExtractor.ts +173 -0
  508. package/src/schema/index.ts +5 -0
  509. package/src/storage/backends/RFDBServerBackend.ts +100 -98
  510. package/src/storage/backends/typeValidation.ts +1 -0
  511. package/src/validation/PathValidator.ts +1 -1
  512. package/dist/core/AnalysisWorker.d.ts +0 -14
  513. package/dist/core/AnalysisWorker.d.ts.map +0 -1
  514. package/dist/core/AnalysisWorker.js +0 -307
  515. package/dist/core/ParallelAnalyzer.d.ts +0 -120
  516. package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
  517. package/dist/core/ParallelAnalyzer.js +0 -331
  518. package/dist/core/QueueWorker.d.ts +0 -12
  519. package/dist/core/QueueWorker.d.ts.map +0 -1
  520. package/dist/core/QueueWorker.js +0 -567
  521. package/dist/core/RFDBClient.d.ts +0 -179
  522. package/dist/core/RFDBClient.d.ts.map +0 -1
  523. package/dist/core/RFDBClient.js +0 -429
  524. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
  525. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
  526. package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
  527. package/src/core/AnalysisWorker.ts +0 -410
  528. package/src/core/ParallelAnalyzer.ts +0 -476
  529. package/src/core/QueueWorker.ts +0 -780
  530. package/src/plugins/indexing/ServiceDetector.ts +0 -230
@@ -0,0 +1,141 @@
1
+ /**
2
+ * WorkspaceDiscovery - Discovery plugin for npm/pnpm/yarn/lerna workspaces
3
+ *
4
+ * Detects workspace configuration and creates SERVICE nodes for each package.
5
+ * Priority: 110 (higher than MonorepoServiceDiscovery at 100)
6
+ *
7
+ * Supports:
8
+ * - pnpm-workspace.yaml
9
+ * - package.json workspaces (npm/yarn)
10
+ * - lerna.json
11
+ */
12
+ import { join } from 'path';
13
+ import { DiscoveryPlugin } from './DiscoveryPlugin.js';
14
+ import { createSuccessResult, createErrorResult } from '../Plugin.js';
15
+ import { detectWorkspaceType } from './workspaces/detector.js';
16
+ import { parsePnpmWorkspace, parseNpmWorkspace, parseLernaConfig } from './workspaces/parsers.js';
17
+ import { resolveWorkspacePackages } from './workspaces/globResolver.js';
18
+ import { NodeFactory } from '../../core/NodeFactory.js';
19
+ import { resolveSourceEntrypoint } from './resolveSourceEntrypoint.js';
20
+ export class WorkspaceDiscovery extends DiscoveryPlugin {
21
+ get metadata() {
22
+ return {
23
+ name: 'WorkspaceDiscovery',
24
+ phase: 'DISCOVERY',
25
+ priority: 110, // Higher than MonorepoServiceDiscovery (100)
26
+ creates: {
27
+ nodes: ['SERVICE'],
28
+ edges: []
29
+ },
30
+ dependencies: []
31
+ };
32
+ }
33
+ async execute(context) {
34
+ const logger = this.log(context);
35
+ const { projectPath, graph } = context;
36
+ // Validate projectPath
37
+ if (!projectPath) {
38
+ return createErrorResult(new Error('projectPath is required'));
39
+ }
40
+ logger.debug('Detecting workspace type', { projectPath });
41
+ // Step 1: Detect workspace type
42
+ const detection = detectWorkspaceType(projectPath);
43
+ if (!detection.type) {
44
+ logger.debug('Not a workspace project, skipping');
45
+ return createSuccessResult({ nodes: 0, edges: 0 }, {
46
+ services: [],
47
+ skipped: true,
48
+ reason: 'No workspace configuration found'
49
+ });
50
+ }
51
+ logger.info('Workspace detected', {
52
+ type: detection.type,
53
+ configPath: detection.configPath
54
+ });
55
+ // Step 2: Parse workspace configuration
56
+ let config;
57
+ try {
58
+ switch (detection.type) {
59
+ case 'pnpm':
60
+ config = parsePnpmWorkspace(detection.configPath);
61
+ break;
62
+ case 'npm':
63
+ case 'yarn':
64
+ config = parseNpmWorkspace(detection.configPath);
65
+ break;
66
+ case 'lerna':
67
+ config = parseLernaConfig(detection.configPath);
68
+ break;
69
+ default:
70
+ throw new Error(`Unknown workspace type: ${detection.type}`);
71
+ }
72
+ }
73
+ catch (error) {
74
+ return createErrorResult(error);
75
+ }
76
+ logger.debug('Workspace config parsed', {
77
+ patterns: config.patterns,
78
+ negativePatterns: config.negativePatterns
79
+ });
80
+ // Step 3: Resolve patterns to packages
81
+ const packages = resolveWorkspacePackages(projectPath, config);
82
+ logger.info('Workspace packages resolved', { count: packages.length });
83
+ // Step 4: Create SERVICE nodes
84
+ const services = [];
85
+ for (const pkg of packages) {
86
+ const serviceNode = this.createServiceNode(pkg, detection.type, projectPath);
87
+ await graph.addNode(serviceNode);
88
+ services.push({
89
+ id: serviceNode.id,
90
+ name: pkg.name,
91
+ path: pkg.path,
92
+ type: 'workspace-package',
93
+ metadata: {
94
+ workspaceType: detection.type,
95
+ relativePath: pkg.relativePath,
96
+ entrypoint: serviceNode.metadata?.entrypoint ?? null,
97
+ packageJson: pkg.packageJson
98
+ }
99
+ });
100
+ }
101
+ logger.info('Services created from workspace', {
102
+ count: services.length,
103
+ workspaceType: detection.type
104
+ });
105
+ return createSuccessResult({ nodes: services.length, edges: 0 }, { services, workspaceType: detection.type });
106
+ }
107
+ /**
108
+ * Create SERVICE node from workspace package.
109
+ */
110
+ createServiceNode(pkg, workspaceType, _projectPath) {
111
+ // Resolve entrypoint (prefer TypeScript source)
112
+ const relativeEntrypoint = resolveSourceEntrypoint(pkg.path, pkg.packageJson)
113
+ ?? pkg.packageJson.main
114
+ ?? null;
115
+ // Convert to absolute path (REG-247: JSModuleIndexer expects absolute paths)
116
+ const absoluteEntrypoint = relativeEntrypoint
117
+ ? join(pkg.path, relativeEntrypoint)
118
+ : null;
119
+ const serviceNode = NodeFactory.createService(pkg.name, pkg.path, {
120
+ discoveryMethod: 'workspace',
121
+ entrypoint: absoluteEntrypoint ?? undefined,
122
+ version: pkg.packageJson.version,
123
+ description: pkg.packageJson.description,
124
+ dependencies: Object.keys(pkg.packageJson.dependencies || {})
125
+ });
126
+ // Add metadata for workspace-specific information
127
+ // BaseNodeRecord supports optional metadata field
128
+ const nodeWithMetadata = serviceNode;
129
+ nodeWithMetadata.metadata = {
130
+ workspaceType,
131
+ discoveryMethod: 'workspace',
132
+ relativePath: pkg.relativePath,
133
+ version: pkg.packageJson.version,
134
+ description: pkg.packageJson.description,
135
+ private: pkg.packageJson.private,
136
+ dependencies: Object.keys(pkg.packageJson.dependencies || {}),
137
+ entrypoint: absoluteEntrypoint
138
+ };
139
+ return nodeWithMetadata;
140
+ }
141
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Resolves TypeScript source entrypoints for projects.
3
+ *
4
+ * This utility prefers TypeScript source files (src/index.ts) over compiled
5
+ * output (dist/index.js) when analyzing TypeScript projects.
6
+ *
7
+ * Resolution order:
8
+ * 1. If no tsconfig.json exists -> return null (not a TypeScript project)
9
+ * 2. Check package.json "source" field (explicit source declaration)
10
+ * 3. Try standard TypeScript source candidates
11
+ * 4. Return null if no source found (caller should fallback to main)
12
+ *
13
+ * @module resolveSourceEntrypoint
14
+ */
15
+ /**
16
+ * Package.json fields relevant for source resolution
17
+ */
18
+ export interface PackageJsonForResolution {
19
+ main?: string;
20
+ source?: string;
21
+ }
22
+ /**
23
+ * Resolves the source entrypoint for a project, preferring TypeScript source
24
+ * over compiled output.
25
+ *
26
+ * @param projectPath - Absolute path to the project/service directory
27
+ * @param packageJson - Parsed package.json content (only relevant fields needed)
28
+ * @returns Source entrypoint relative to projectPath, or null if not found
29
+ *
30
+ * @example
31
+ * // TypeScript project with src/index.ts
32
+ * resolveSourceEntrypoint('/path/to/project', { main: 'dist/index.js' })
33
+ * // Returns: 'src/index.ts'
34
+ *
35
+ * @example
36
+ * // JavaScript project (no tsconfig.json)
37
+ * resolveSourceEntrypoint('/path/to/project', { main: 'index.js' })
38
+ * // Returns: null
39
+ *
40
+ * @example
41
+ * // TypeScript project with explicit source field
42
+ * resolveSourceEntrypoint('/path/to/project', { main: 'dist/index.js', source: 'lib/entry.ts' })
43
+ * // Returns: 'lib/entry.ts' (if file exists)
44
+ */
45
+ export declare function resolveSourceEntrypoint(projectPath: string, packageJson: PackageJsonForResolution): string | null;
46
+ //# sourceMappingURL=resolveSourceEntrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSourceEntrypoint.d.ts","sourceRoot":"","sources":["../../../src/plugins/discovery/resolveSourceEntrypoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA2BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,wBAAwB,GACpC,MAAM,GAAG,IAAI,CAyBf"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Resolves TypeScript source entrypoints for projects.
3
+ *
4
+ * This utility prefers TypeScript source files (src/index.ts) over compiled
5
+ * output (dist/index.js) when analyzing TypeScript projects.
6
+ *
7
+ * Resolution order:
8
+ * 1. If no tsconfig.json exists -> return null (not a TypeScript project)
9
+ * 2. Check package.json "source" field (explicit source declaration)
10
+ * 3. Try standard TypeScript source candidates
11
+ * 4. Return null if no source found (caller should fallback to main)
12
+ *
13
+ * @module resolveSourceEntrypoint
14
+ */
15
+ import { existsSync } from 'fs';
16
+ import { join } from 'path';
17
+ /**
18
+ * Standard TypeScript source candidates in priority order.
19
+ *
20
+ * Order rationale:
21
+ * - src/ is the most common convention
22
+ * - lib/ is used by some projects
23
+ * - root-level is fallback
24
+ * - index is more common than main
25
+ * - .ts preferred over .tsx over .mts
26
+ */
27
+ const TS_SOURCE_CANDIDATES = [
28
+ 'src/index.ts',
29
+ 'src/index.tsx',
30
+ 'src/index.mts',
31
+ 'src/main.ts',
32
+ 'src/main.tsx',
33
+ 'lib/index.ts',
34
+ 'lib/index.tsx',
35
+ 'index.ts',
36
+ 'index.tsx',
37
+ 'index.mts',
38
+ 'main.ts',
39
+ 'main.tsx',
40
+ ];
41
+ /**
42
+ * Resolves the source entrypoint for a project, preferring TypeScript source
43
+ * over compiled output.
44
+ *
45
+ * @param projectPath - Absolute path to the project/service directory
46
+ * @param packageJson - Parsed package.json content (only relevant fields needed)
47
+ * @returns Source entrypoint relative to projectPath, or null if not found
48
+ *
49
+ * @example
50
+ * // TypeScript project with src/index.ts
51
+ * resolveSourceEntrypoint('/path/to/project', { main: 'dist/index.js' })
52
+ * // Returns: 'src/index.ts'
53
+ *
54
+ * @example
55
+ * // JavaScript project (no tsconfig.json)
56
+ * resolveSourceEntrypoint('/path/to/project', { main: 'index.js' })
57
+ * // Returns: null
58
+ *
59
+ * @example
60
+ * // TypeScript project with explicit source field
61
+ * resolveSourceEntrypoint('/path/to/project', { main: 'dist/index.js', source: 'lib/entry.ts' })
62
+ * // Returns: 'lib/entry.ts' (if file exists)
63
+ */
64
+ export function resolveSourceEntrypoint(projectPath, packageJson) {
65
+ // Step 1: Check for TypeScript project indicator
66
+ const tsconfigPath = join(projectPath, 'tsconfig.json');
67
+ if (!existsSync(tsconfigPath)) {
68
+ return null; // Not a TypeScript project
69
+ }
70
+ // Step 2: Check package.json "source" field (explicit source declaration)
71
+ if (packageJson.source) {
72
+ const sourcePath = join(projectPath, packageJson.source);
73
+ if (existsSync(sourcePath)) {
74
+ return packageJson.source;
75
+ }
76
+ }
77
+ // Step 3: Try standard TypeScript source candidates
78
+ for (const candidate of TS_SOURCE_CANDIDATES) {
79
+ const candidatePath = join(projectPath, candidate);
80
+ if (existsSync(candidatePath)) {
81
+ return candidate;
82
+ }
83
+ }
84
+ // Step 4: Not found - caller should fallback to main
85
+ return null;
86
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Workspace Type Detector
3
+ *
4
+ * Detects which workspace system is used in a project by checking
5
+ * for configuration files in priority order: pnpm > npm/yarn > lerna.
6
+ */
7
+ export type WorkspaceType = 'pnpm' | 'npm' | 'yarn' | 'lerna' | null;
8
+ export interface WorkspaceDetectionResult {
9
+ type: WorkspaceType;
10
+ configPath: string | null;
11
+ rootPath: string;
12
+ }
13
+ /**
14
+ * Detect workspace type by checking for configuration files.
15
+ * Priority: pnpm > npm/yarn > lerna (most specific first)
16
+ *
17
+ * @param projectPath - Root directory of the project
18
+ * @returns Detection result with type, config path, and root path
19
+ */
20
+ export declare function detectWorkspaceType(projectPath: string): WorkspaceDetectionResult;
21
+ //# sourceMappingURL=detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../src/plugins/discovery/workspaces/detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAqCjF"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Workspace Type Detector
3
+ *
4
+ * Detects which workspace system is used in a project by checking
5
+ * for configuration files in priority order: pnpm > npm/yarn > lerna.
6
+ */
7
+ import { existsSync, readFileSync } from 'fs';
8
+ import { join } from 'path';
9
+ /**
10
+ * Detect workspace type by checking for configuration files.
11
+ * Priority: pnpm > npm/yarn > lerna (most specific first)
12
+ *
13
+ * @param projectPath - Root directory of the project
14
+ * @returns Detection result with type, config path, and root path
15
+ */
16
+ export function detectWorkspaceType(projectPath) {
17
+ // 1. Check for pnpm-workspace.yaml (highest priority)
18
+ const pnpmYaml = join(projectPath, 'pnpm-workspace.yaml');
19
+ const pnpmYml = join(projectPath, 'pnpm-workspace.yml');
20
+ if (existsSync(pnpmYaml)) {
21
+ return { type: 'pnpm', configPath: pnpmYaml, rootPath: projectPath };
22
+ }
23
+ if (existsSync(pnpmYml)) {
24
+ return { type: 'pnpm', configPath: pnpmYml, rootPath: projectPath };
25
+ }
26
+ // 2. Check for npm/yarn workspaces in package.json
27
+ const packageJsonPath = join(projectPath, 'package.json');
28
+ if (existsSync(packageJsonPath)) {
29
+ try {
30
+ const content = readFileSync(packageJsonPath, 'utf-8');
31
+ const pkg = JSON.parse(content);
32
+ if (pkg.workspaces) {
33
+ // Both npm and yarn use package.json workspaces - detect as 'npm'
34
+ // The format is compatible for both
35
+ return { type: 'npm', configPath: packageJsonPath, rootPath: projectPath };
36
+ }
37
+ }
38
+ catch {
39
+ // Ignore JSON parse errors
40
+ }
41
+ }
42
+ // 3. Check for lerna.json
43
+ const lernaJsonPath = join(projectPath, 'lerna.json');
44
+ if (existsSync(lernaJsonPath)) {
45
+ return { type: 'lerna', configPath: lernaJsonPath, rootPath: projectPath };
46
+ }
47
+ // No workspace configuration found
48
+ return { type: null, configPath: null, rootPath: projectPath };
49
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Glob Resolver for Workspace Packages
3
+ *
4
+ * Resolves workspace glob patterns to actual directories containing package.json.
5
+ * Uses minimatch for pattern matching.
6
+ */
7
+ import type { WorkspaceConfig } from './parsers.js';
8
+ export interface WorkspacePackage {
9
+ path: string;
10
+ name: string;
11
+ relativePath: string;
12
+ packageJson: PackageJson;
13
+ }
14
+ interface PackageJson {
15
+ name?: string;
16
+ version?: string;
17
+ main?: string;
18
+ source?: string;
19
+ description?: string;
20
+ private?: boolean;
21
+ dependencies?: Record<string, string>;
22
+ devDependencies?: Record<string, string>;
23
+ [key: string]: unknown;
24
+ }
25
+ /**
26
+ * Resolve workspace glob patterns to actual packages.
27
+ * Only directories with package.json are considered valid packages.
28
+ *
29
+ * @param projectPath - Root directory of the project
30
+ * @param config - Parsed workspace config with patterns and negativePatterns
31
+ * @returns Array of resolved workspace packages
32
+ */
33
+ export declare function resolveWorkspacePackages(projectPath: string, config: WorkspaceConfig): WorkspacePackage[];
34
+ export {};
35
+ //# sourceMappingURL=globResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globResolver.d.ts","sourceRoot":"","sources":["../../../../src/plugins/discovery/workspaces/globResolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,gBAAgB,EAAE,CAwCpB"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Glob Resolver for Workspace Packages
3
+ *
4
+ * Resolves workspace glob patterns to actual directories containing package.json.
5
+ * Uses minimatch for pattern matching.
6
+ */
7
+ import { readdirSync, existsSync, readFileSync, lstatSync } from 'fs';
8
+ import { join, relative } from 'path';
9
+ import { minimatch } from 'minimatch';
10
+ /**
11
+ * Resolve workspace glob patterns to actual packages.
12
+ * Only directories with package.json are considered valid packages.
13
+ *
14
+ * @param projectPath - Root directory of the project
15
+ * @param config - Parsed workspace config with patterns and negativePatterns
16
+ * @returns Array of resolved workspace packages
17
+ */
18
+ export function resolveWorkspacePackages(projectPath, config) {
19
+ const packages = [];
20
+ const seen = new Set();
21
+ // Expand all positive patterns
22
+ for (const pattern of config.patterns) {
23
+ const matches = expandGlob(projectPath, pattern);
24
+ for (const dir of matches) {
25
+ // Check for package.json
26
+ const pkgJsonPath = join(dir, 'package.json');
27
+ if (!existsSync(pkgJsonPath))
28
+ continue;
29
+ // Check negative patterns
30
+ const relPath = relative(projectPath, dir);
31
+ if (config.negativePatterns.some(neg => matchesPattern(relPath, neg)))
32
+ continue;
33
+ // Avoid duplicates
34
+ if (seen.has(dir))
35
+ continue;
36
+ seen.add(dir);
37
+ // Parse package.json
38
+ let pkgJson;
39
+ try {
40
+ pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
41
+ }
42
+ catch {
43
+ // Skip malformed package.json
44
+ continue;
45
+ }
46
+ packages.push({
47
+ path: dir,
48
+ name: pkgJson.name || relPath.split('/').pop() || relPath,
49
+ relativePath: relPath,
50
+ packageJson: pkgJson
51
+ });
52
+ }
53
+ }
54
+ return packages;
55
+ }
56
+ /**
57
+ * Check if path matches pattern using minimatch.
58
+ * Normalizes path separators for cross-platform compatibility.
59
+ */
60
+ function matchesPattern(path, pattern) {
61
+ // Normalize path separators
62
+ const normalizedPath = path.replace(/\\/g, '/');
63
+ const normalizedPattern = pattern.replace(/\\/g, '/');
64
+ return minimatch(normalizedPath, normalizedPattern);
65
+ }
66
+ /**
67
+ * Expand glob pattern to actual directories.
68
+ */
69
+ function expandGlob(basePath, pattern) {
70
+ // Handle literal path (no wildcards)
71
+ if (!pattern.includes('*')) {
72
+ const fullPath = join(basePath, pattern);
73
+ if (existsSync(fullPath) && isDirectory(fullPath)) {
74
+ return [fullPath];
75
+ }
76
+ return [];
77
+ }
78
+ // Handle recursive glob (**)
79
+ if (pattern.includes('**')) {
80
+ return expandRecursiveGlob(basePath, pattern);
81
+ }
82
+ // Handle simple glob (packages/*)
83
+ return expandSimpleGlob(basePath, pattern);
84
+ }
85
+ /**
86
+ * Expand simple glob like "packages/*" or "apps/*".
87
+ */
88
+ function expandSimpleGlob(basePath, pattern) {
89
+ const parts = pattern.split('/');
90
+ const results = [];
91
+ // Find the first part with a wildcard
92
+ let currentPath = basePath;
93
+ let patternIndex = 0;
94
+ // Navigate to the parent directory of the glob
95
+ while (patternIndex < parts.length - 1) {
96
+ currentPath = join(currentPath, parts[patternIndex]);
97
+ patternIndex++;
98
+ }
99
+ // The last part contains the wildcard
100
+ const globPart = parts[patternIndex];
101
+ if (!existsSync(currentPath)) {
102
+ return [];
103
+ }
104
+ try {
105
+ const entries = readdirSync(currentPath);
106
+ for (const entry of entries) {
107
+ if (minimatch(entry, globPart)) {
108
+ const fullPath = join(currentPath, entry);
109
+ if (isDirectory(fullPath)) {
110
+ results.push(fullPath);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ catch {
116
+ // Ignore permission errors
117
+ }
118
+ return results;
119
+ }
120
+ /**
121
+ * Expand recursive glob like "apps/**" or "libs/**".
122
+ * Recursively walks directories and matches against pattern.
123
+ */
124
+ function expandRecursiveGlob(basePath, pattern) {
125
+ const results = [];
126
+ const maxDepth = 10; // Safety limit
127
+ function walk(dir, depth) {
128
+ if (depth > maxDepth)
129
+ return;
130
+ try {
131
+ const entries = readdirSync(dir);
132
+ for (const entry of entries) {
133
+ // Skip hidden directories and node_modules
134
+ if (entry.startsWith('.') || entry === 'node_modules')
135
+ continue;
136
+ const fullPath = join(dir, entry);
137
+ // Skip symlinks to avoid infinite loops
138
+ if (!isDirectory(fullPath))
139
+ continue;
140
+ const relPath = relative(basePath, fullPath);
141
+ // Check if this directory matches the pattern
142
+ if (minimatch(relPath, pattern, { dot: false })) {
143
+ results.push(fullPath);
144
+ }
145
+ // Continue walking regardless of match (** can match at any depth)
146
+ walk(fullPath, depth + 1);
147
+ }
148
+ }
149
+ catch {
150
+ // Ignore permission errors
151
+ }
152
+ }
153
+ // Start walking from pattern prefix or base
154
+ const parts = pattern.split('**');
155
+ const prefix = parts[0].replace(/\/$/, ''); // Remove trailing slash
156
+ if (prefix) {
157
+ const startPath = join(basePath, prefix);
158
+ if (existsSync(startPath) && isDirectory(startPath)) {
159
+ // Check if the start path itself matches
160
+ const relPath = relative(basePath, startPath);
161
+ if (minimatch(relPath, pattern, { dot: false })) {
162
+ results.push(startPath);
163
+ }
164
+ walk(startPath, 0);
165
+ }
166
+ }
167
+ else {
168
+ walk(basePath, 0);
169
+ }
170
+ return results;
171
+ }
172
+ /**
173
+ * Check if path is a directory (not following symlinks).
174
+ */
175
+ function isDirectory(path) {
176
+ try {
177
+ const stat = lstatSync(path);
178
+ // Return true for real directories, false for symlinks
179
+ return stat.isDirectory() && !stat.isSymbolicLink();
180
+ }
181
+ catch {
182
+ return false;
183
+ }
184
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Workspace Detection and Resolution
3
+ *
4
+ * Exports utilities for detecting workspace types and resolving workspace packages.
5
+ */
6
+ export { detectWorkspaceType, type WorkspaceType, type WorkspaceDetectionResult } from './detector.js';
7
+ export { parsePnpmWorkspace, parseNpmWorkspace, parseLernaConfig, type WorkspaceConfig } from './parsers.js';
8
+ export { resolveWorkspacePackages, type WorkspacePackage } from './globResolver.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/discovery/workspaces/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Workspace Detection and Resolution
3
+ *
4
+ * Exports utilities for detecting workspace types and resolving workspace packages.
5
+ */
6
+ export { detectWorkspaceType } from './detector.js';
7
+ export { parsePnpmWorkspace, parseNpmWorkspace, parseLernaConfig } from './parsers.js';
8
+ export { resolveWorkspacePackages } from './globResolver.js';
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Workspace Config Parsers
3
+ *
4
+ * Parse workspace configuration files and extract glob patterns.
5
+ * Supports pnpm-workspace.yaml, package.json workspaces, and lerna.json.
6
+ */
7
+ export interface WorkspaceConfig {
8
+ patterns: string[];
9
+ negativePatterns: string[];
10
+ }
11
+ /**
12
+ * Parse pnpm-workspace.yaml
13
+ *
14
+ * Format:
15
+ * packages:
16
+ * - 'packages/*'
17
+ * - 'apps/**'
18
+ * - '!packages/internal'
19
+ */
20
+ export declare function parsePnpmWorkspace(configPath: string): WorkspaceConfig;
21
+ /**
22
+ * Parse npm/yarn workspaces from package.json
23
+ *
24
+ * Formats:
25
+ * - Array: { "workspaces": ["packages/*", "apps/**"] }
26
+ * - Object (yarn): { "workspaces": { "packages": ["packages/*"], "nohoist": [...] } }
27
+ */
28
+ export declare function parseNpmWorkspace(packageJsonPath: string): WorkspaceConfig;
29
+ /**
30
+ * Parse lerna.json
31
+ *
32
+ * Format:
33
+ * { "packages": ["packages/*", "components/*"] }
34
+ *
35
+ * Default: ["packages/*"] if packages field is missing
36
+ */
37
+ export declare function parseLernaConfig(lernaJsonPath: string): WorkspaceConfig;
38
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/plugins/discovery/workspaces/parsers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,eAAe,CA0B1E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,CAavE"}