@samchon/graph 0.1.0

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 (391) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -0
  3. package/lib/AsyncSamchonGraphSource.d.ts +2 -0
  4. package/lib/AsyncSamchonGraphSource.js +3 -0
  5. package/lib/AsyncSamchonGraphSource.js.map +1 -0
  6. package/lib/SamchonGraphApplication.d.ts +10 -0
  7. package/lib/SamchonGraphApplication.js +64 -0
  8. package/lib/SamchonGraphApplication.js.map +1 -0
  9. package/lib/SamchonGraphSource.d.ts +2 -0
  10. package/lib/SamchonGraphSource.js +3 -0
  11. package/lib/SamchonGraphSource.js.map +1 -0
  12. package/lib/application.d.ts +3 -0
  13. package/lib/application.js +20 -0
  14. package/lib/application.js.map +1 -0
  15. package/lib/bin.d.ts +2 -0
  16. package/lib/bin.js +8 -0
  17. package/lib/bin.js.map +1 -0
  18. package/lib/index.d.ts +13 -0
  19. package/lib/index.js +30 -0
  20. package/lib/index.js.map +1 -0
  21. package/lib/indexer/IBuildGraphOptions.d.ts +41 -0
  22. package/lib/indexer/IBuildGraphOptions.js +3 -0
  23. package/lib/indexer/IBuildGraphOptions.js.map +1 -0
  24. package/lib/indexer/IIndexerResult.d.ts +5 -0
  25. package/lib/indexer/IIndexerResult.js +3 -0
  26. package/lib/indexer/IIndexerResult.js.map +1 -0
  27. package/lib/indexer/ILanguageSpec.d.ts +10 -0
  28. package/lib/indexer/ILanguageSpec.js +3 -0
  29. package/lib/indexer/ILanguageSpec.js.map +1 -0
  30. package/lib/indexer/LANGUAGE_SPECS.d.ts +2 -0
  31. package/lib/indexer/LANGUAGE_SPECS.js +114 -0
  32. package/lib/indexer/LANGUAGE_SPECS.js.map +1 -0
  33. package/lib/indexer/allExtensions.d.ts +2 -0
  34. package/lib/indexer/allExtensions.js +16 -0
  35. package/lib/indexer/allExtensions.js.map +1 -0
  36. package/lib/indexer/buildGraph.d.ts +3 -0
  37. package/lib/indexer/buildGraph.js +10 -0
  38. package/lib/indexer/buildGraph.js.map +1 -0
  39. package/lib/indexer/buildGraphDump.d.ts +3 -0
  40. package/lib/indexer/buildGraphDump.js +394 -0
  41. package/lib/indexer/buildGraphDump.js.map +1 -0
  42. package/lib/indexer/buildLspGraph.d.ts +3 -0
  43. package/lib/indexer/buildLspGraph.js +617 -0
  44. package/lib/indexer/buildLspGraph.js.map +1 -0
  45. package/lib/indexer/buildStaticGraph.d.ts +3 -0
  46. package/lib/indexer/buildStaticGraph.js +479 -0
  47. package/lib/indexer/buildStaticGraph.js.map +1 -0
  48. package/lib/indexer/decoratorsAbove.d.ts +1 -0
  49. package/lib/indexer/decoratorsAbove.js +14 -0
  50. package/lib/indexer/decoratorsAbove.js.map +1 -0
  51. package/lib/indexer/languageOf.d.ts +2 -0
  52. package/lib/indexer/languageOf.js +19 -0
  53. package/lib/indexer/languageOf.js.map +1 -0
  54. package/lib/indexer/languages.d.ts +5 -0
  55. package/lib/indexer/languages.js +22 -0
  56. package/lib/indexer/languages.js.map +1 -0
  57. package/lib/indexer/lspIndexer.d.ts +1 -0
  58. package/lib/indexer/lspIndexer.js +18 -0
  59. package/lib/indexer/lspIndexer.js.map +1 -0
  60. package/lib/indexer/overrideEdges.d.ts +2 -0
  61. package/lib/indexer/overrideEdges.js +45 -0
  62. package/lib/indexer/overrideEdges.js.map +1 -0
  63. package/lib/indexer/resolveType.d.ts +2 -0
  64. package/lib/indexer/resolveType.js +11 -0
  65. package/lib/indexer/resolveType.js.map +1 -0
  66. package/lib/indexer/specOf.d.ts +3 -0
  67. package/lib/indexer/specOf.js +8 -0
  68. package/lib/indexer/specOf.js.map +1 -0
  69. package/lib/indexer/staticIndexer.d.ts +1 -0
  70. package/lib/indexer/staticIndexer.js +18 -0
  71. package/lib/indexer/staticIndexer.js.map +1 -0
  72. package/lib/indexer/supertypesOf.d.ts +4 -0
  73. package/lib/indexer/supertypesOf.js +48 -0
  74. package/lib/indexer/supertypesOf.js.map +1 -0
  75. package/lib/lsp/DocumentSymbolResult.d.ts +3 -0
  76. package/lib/lsp/DocumentSymbolResult.js +3 -0
  77. package/lib/lsp/DocumentSymbolResult.js.map +1 -0
  78. package/lib/lsp/IDiagnostic.d.ts +8 -0
  79. package/lib/lsp/IDiagnostic.js +3 -0
  80. package/lib/lsp/IDiagnostic.js.map +1 -0
  81. package/lib/lsp/IDocumentSymbol.d.ts +9 -0
  82. package/lib/lsp/IDocumentSymbol.js +3 -0
  83. package/lib/lsp/IDocumentSymbol.js.map +1 -0
  84. package/lib/lsp/ILocation.d.ts +5 -0
  85. package/lib/lsp/ILocation.js +3 -0
  86. package/lib/lsp/ILocation.js.map +1 -0
  87. package/lib/lsp/IPosition.d.ts +4 -0
  88. package/lib/lsp/IPosition.js +3 -0
  89. package/lib/lsp/IPosition.js.map +1 -0
  90. package/lib/lsp/IRange.d.ts +5 -0
  91. package/lib/lsp/IRange.js +3 -0
  92. package/lib/lsp/IRange.js.map +1 -0
  93. package/lib/lsp/ISymbolInformation.d.ts +7 -0
  94. package/lib/lsp/ISymbolInformation.js +3 -0
  95. package/lib/lsp/ISymbolInformation.js.map +1 -0
  96. package/lib/lsp/LspClient.d.ts +17 -0
  97. package/lib/lsp/LspClient.js +140 -0
  98. package/lib/lsp/LspClient.js.map +1 -0
  99. package/lib/lsp/isDocumentSymbol.d.ts +3 -0
  100. package/lib/lsp/isDocumentSymbol.js +7 -0
  101. package/lib/lsp/isDocumentSymbol.js.map +1 -0
  102. package/lib/lsp/types.d.ts +8 -0
  103. package/lib/lsp/types.js +25 -0
  104. package/lib/lsp/types.js.map +1 -0
  105. package/lib/mcp/createServer.d.ts +3 -0
  106. package/lib/mcp/createServer.js +1947 -0
  107. package/lib/mcp/createServer.js.map +1 -0
  108. package/lib/mcp/startServer.d.ts +5 -0
  109. package/lib/mcp/startServer.js +23 -0
  110. package/lib/mcp/startServer.js.map +1 -0
  111. package/lib/model/GraphMemory.d.ts +25 -0
  112. package/lib/model/GraphMemory.js +141 -0
  113. package/lib/model/GraphMemory.js.map +1 -0
  114. package/lib/operations/bound.d.ts +1 -0
  115. package/lib/operations/bound.js +8 -0
  116. package/lib/operations/bound.js.map +1 -0
  117. package/lib/operations/common.d.ts +15 -0
  118. package/lib/operations/common.js +32 -0
  119. package/lib/operations/common.js.map +1 -0
  120. package/lib/operations/compareEdges.d.ts +2 -0
  121. package/lib/operations/compareEdges.js +10 -0
  122. package/lib/operations/compareEdges.js.map +1 -0
  123. package/lib/operations/edgeRank.d.ts +1 -0
  124. package/lib/operations/edgeRank.js +25 -0
  125. package/lib/operations/edgeRank.js.map +1 -0
  126. package/lib/operations/isExecution.d.ts +1 -0
  127. package/lib/operations/isExecution.js +11 -0
  128. package/lib/operations/isExecution.js.map +1 -0
  129. package/lib/operations/isPublicApiNoisePath.d.ts +2 -0
  130. package/lib/operations/isPublicApiNoisePath.js +11 -0
  131. package/lib/operations/isPublicApiNoisePath.js.map +1 -0
  132. package/lib/operations/isStructural.d.ts +1 -0
  133. package/lib/operations/isStructural.js +7 -0
  134. package/lib/operations/isStructural.js.map +1 -0
  135. package/lib/operations/isSupportPath.d.ts +2 -0
  136. package/lib/operations/isSupportPath.js +16 -0
  137. package/lib/operations/isSupportPath.js.map +1 -0
  138. package/lib/operations/isTestPath.d.ts +1 -0
  139. package/lib/operations/isTestPath.js +9 -0
  140. package/lib/operations/isTestPath.js.map +1 -0
  141. package/lib/operations/isTypeEdge.d.ts +1 -0
  142. package/lib/operations/isTypeEdge.js +11 -0
  143. package/lib/operations/isTypeEdge.js.map +1 -0
  144. package/lib/operations/publicEvidence.d.ts +2 -0
  145. package/lib/operations/publicEvidence.js +13 -0
  146. package/lib/operations/publicEvidence.js.map +1 -0
  147. package/lib/operations/referencesFromEdges.d.ts +3 -0
  148. package/lib/operations/referencesFromEdges.js +38 -0
  149. package/lib/operations/referencesFromEdges.js.map +1 -0
  150. package/lib/operations/resolveHandle.d.ts +6 -0
  151. package/lib/operations/resolveHandle.js +28 -0
  152. package/lib/operations/resolveHandle.js.map +1 -0
  153. package/lib/operations/resultGuide.d.ts +1 -0
  154. package/lib/operations/resultGuide.js +7 -0
  155. package/lib/operations/resultGuide.js.map +1 -0
  156. package/lib/operations/resultNext.d.ts +2 -0
  157. package/lib/operations/resultNext.js +7 -0
  158. package/lib/operations/resultNext.js.map +1 -0
  159. package/lib/operations/runDetails.d.ts +8 -0
  160. package/lib/operations/runDetails.js +190 -0
  161. package/lib/operations/runDetails.js.map +1 -0
  162. package/lib/operations/runEntrypoints.d.ts +9 -0
  163. package/lib/operations/runEntrypoints.js +122 -0
  164. package/lib/operations/runEntrypoints.js.map +1 -0
  165. package/lib/operations/runLookup.d.ts +10 -0
  166. package/lib/operations/runLookup.js +229 -0
  167. package/lib/operations/runLookup.js.map +1 -0
  168. package/lib/operations/runOverview.d.ts +10 -0
  169. package/lib/operations/runOverview.js +142 -0
  170. package/lib/operations/runOverview.js.map +1 -0
  171. package/lib/operations/runTour.d.ts +8 -0
  172. package/lib/operations/runTour.js +539 -0
  173. package/lib/operations/runTour.js.map +1 -0
  174. package/lib/operations/runTrace.d.ts +10 -0
  175. package/lib/operations/runTrace.js +283 -0
  176. package/lib/operations/runTrace.js.map +1 -0
  177. package/lib/operations/signatureOf.d.ts +2 -0
  178. package/lib/operations/signatureOf.js +45 -0
  179. package/lib/operations/signatureOf.js.map +1 -0
  180. package/lib/operations/subwords.d.ts +1 -0
  181. package/lib/operations/subwords.js +12 -0
  182. package/lib/operations/subwords.js.map +1 -0
  183. package/lib/operations/summaryOf.d.ts +2 -0
  184. package/lib/operations/summaryOf.js +24 -0
  185. package/lib/operations/summaryOf.js.map +1 -0
  186. package/lib/runGraph.d.ts +1 -0
  187. package/lib/runGraph.js +165 -0
  188. package/lib/runGraph.js.map +1 -0
  189. package/lib/structures/GraphEdgeKind.d.ts +10 -0
  190. package/lib/structures/GraphEdgeKind.js +3 -0
  191. package/lib/structures/GraphEdgeKind.js.map +1 -0
  192. package/lib/structures/GraphLanguage.d.ts +2 -0
  193. package/lib/structures/GraphLanguage.js +3 -0
  194. package/lib/structures/GraphLanguage.js.map +1 -0
  195. package/lib/structures/GraphNodeKind.d.ts +11 -0
  196. package/lib/structures/GraphNodeKind.js +3 -0
  197. package/lib/structures/GraphNodeKind.js.map +1 -0
  198. package/lib/structures/IGraphDecorator.d.ts +22 -0
  199. package/lib/structures/IGraphDecorator.js +3 -0
  200. package/lib/structures/IGraphDecorator.js.map +1 -0
  201. package/lib/structures/IGraphDetails.d.ts +126 -0
  202. package/lib/structures/IGraphDetails.js +3 -0
  203. package/lib/structures/IGraphDetails.js.map +1 -0
  204. package/lib/structures/IGraphDiagnostic.d.ts +23 -0
  205. package/lib/structures/IGraphDiagnostic.js +3 -0
  206. package/lib/structures/IGraphDiagnostic.js.map +1 -0
  207. package/lib/structures/IGraphDump.d.ts +37 -0
  208. package/lib/structures/IGraphDump.js +3 -0
  209. package/lib/structures/IGraphDump.js.map +1 -0
  210. package/lib/structures/IGraphEdge.d.ts +20 -0
  211. package/lib/structures/IGraphEdge.js +3 -0
  212. package/lib/structures/IGraphEdge.js.map +1 -0
  213. package/lib/structures/IGraphEntrypoints.d.ts +57 -0
  214. package/lib/structures/IGraphEntrypoints.js +3 -0
  215. package/lib/structures/IGraphEntrypoints.js.map +1 -0
  216. package/lib/structures/IGraphEscape.d.ts +40 -0
  217. package/lib/structures/IGraphEscape.js +3 -0
  218. package/lib/structures/IGraphEscape.js.map +1 -0
  219. package/lib/structures/IGraphEvidence.d.ts +24 -0
  220. package/lib/structures/IGraphEvidence.js +3 -0
  221. package/lib/structures/IGraphEvidence.js.map +1 -0
  222. package/lib/structures/IGraphLookup.d.ts +66 -0
  223. package/lib/structures/IGraphLookup.js +3 -0
  224. package/lib/structures/IGraphLookup.js.map +1 -0
  225. package/lib/structures/IGraphNext.d.ts +15 -0
  226. package/lib/structures/IGraphNext.js +3 -0
  227. package/lib/structures/IGraphNext.js.map +1 -0
  228. package/lib/structures/IGraphNode.d.ts +62 -0
  229. package/lib/structures/IGraphNode.js +3 -0
  230. package/lib/structures/IGraphNode.js.map +1 -0
  231. package/lib/structures/IGraphOverview.d.ts +100 -0
  232. package/lib/structures/IGraphOverview.js +3 -0
  233. package/lib/structures/IGraphOverview.js.map +1 -0
  234. package/lib/structures/IGraphTour.d.ts +54 -0
  235. package/lib/structures/IGraphTour.js +3 -0
  236. package/lib/structures/IGraphTour.js.map +1 -0
  237. package/lib/structures/IGraphTrace.d.ts +126 -0
  238. package/lib/structures/IGraphTrace.js +3 -0
  239. package/lib/structures/IGraphTrace.js.map +1 -0
  240. package/lib/structures/ISamchonGraphApplication.d.ts +162 -0
  241. package/lib/structures/ISamchonGraphApplication.js +3 -0
  242. package/lib/structures/ISamchonGraphApplication.js.map +1 -0
  243. package/lib/structures/index.d.ts +18 -0
  244. package/lib/structures/index.js +35 -0
  245. package/lib/structures/index.js.map +1 -0
  246. package/lib/structures.d.ts +1 -0
  247. package/lib/structures.js +18 -0
  248. package/lib/structures.js.map +1 -0
  249. package/lib/utils/DEFAULT_IGNORES.d.ts +1 -0
  250. package/lib/utils/DEFAULT_IGNORES.js +39 -0
  251. package/lib/utils/DEFAULT_IGNORES.js.map +1 -0
  252. package/lib/utils/IWalkOptions.d.ts +5 -0
  253. package/lib/utils/IWalkOptions.js +3 -0
  254. package/lib/utils/IWalkOptions.js.map +1 -0
  255. package/lib/utils/basename.d.ts +1 -0
  256. package/lib/utils/basename.js +10 -0
  257. package/lib/utils/basename.js.map +1 -0
  258. package/lib/utils/dirname.d.ts +1 -0
  259. package/lib/utils/dirname.js +10 -0
  260. package/lib/utils/dirname.js.map +1 -0
  261. package/lib/utils/fileFromUri.d.ts +1 -0
  262. package/lib/utils/fileFromUri.js +20 -0
  263. package/lib/utils/fileFromUri.js.map +1 -0
  264. package/lib/utils/fileUri.d.ts +1 -0
  265. package/lib/utils/fileUri.js +19 -0
  266. package/lib/utils/fileUri.js.map +1 -0
  267. package/lib/utils/fs.d.ts +6 -0
  268. package/lib/utils/fs.js +23 -0
  269. package/lib/utils/fs.js.map +1 -0
  270. package/lib/utils/isSubPath.d.ts +1 -0
  271. package/lib/utils/isSubPath.js +15 -0
  272. package/lib/utils/isSubPath.js.map +1 -0
  273. package/lib/utils/normalizePath.d.ts +1 -0
  274. package/lib/utils/normalizePath.js +7 -0
  275. package/lib/utils/normalizePath.js.map +1 -0
  276. package/lib/utils/path.d.ts +7 -0
  277. package/lib/utils/path.js +24 -0
  278. package/lib/utils/path.js.map +1 -0
  279. package/lib/utils/projectRelative.d.ts +1 -0
  280. package/lib/utils/projectRelative.js +9 -0
  281. package/lib/utils/projectRelative.js.map +1 -0
  282. package/lib/utils/readLines.d.ts +1 -0
  283. package/lib/utils/readLines.js +8 -0
  284. package/lib/utils/readLines.js.map +1 -0
  285. package/lib/utils/readText.d.ts +1 -0
  286. package/lib/utils/readText.js +17 -0
  287. package/lib/utils/readText.js.map +1 -0
  288. package/lib/utils/relativePath.d.ts +1 -0
  289. package/lib/utils/relativePath.js +12 -0
  290. package/lib/utils/relativePath.js.map +1 -0
  291. package/lib/utils/walkSourceFiles.d.ts +2 -0
  292. package/lib/utils/walkSourceFiles.js +44 -0
  293. package/lib/utils/walkSourceFiles.js.map +1 -0
  294. package/package.json +55 -0
  295. package/src/AsyncSamchonGraphSource.ts +5 -0
  296. package/src/SamchonGraphApplication.ts +74 -0
  297. package/src/SamchonGraphSource.ts +3 -0
  298. package/src/application.ts +3 -0
  299. package/src/bin.ts +6 -0
  300. package/src/index.ts +13 -0
  301. package/src/indexer/IBuildGraphOptions.ts +42 -0
  302. package/src/indexer/IIndexerResult.ts +6 -0
  303. package/src/indexer/ILanguageSpec.ts +11 -0
  304. package/src/indexer/LANGUAGE_SPECS.ts +112 -0
  305. package/src/indexer/allExtensions.ts +12 -0
  306. package/src/indexer/buildGraph.ts +10 -0
  307. package/src/indexer/buildGraphDump.ts +29 -0
  308. package/src/indexer/buildLspGraph.ts +710 -0
  309. package/src/indexer/buildStaticGraph.ts +507 -0
  310. package/src/indexer/decoratorsAbove.ts +9 -0
  311. package/src/indexer/languageOf.ts +13 -0
  312. package/src/indexer/languages.ts +5 -0
  313. package/src/indexer/lspIndexer.ts +1 -0
  314. package/src/indexer/overrideEdges.ts +42 -0
  315. package/src/indexer/resolveType.ts +14 -0
  316. package/src/indexer/specOf.ts +7 -0
  317. package/src/indexer/staticIndexer.ts +1 -0
  318. package/src/indexer/supertypesOf.ts +43 -0
  319. package/src/lsp/DocumentSymbolResult.ts +4 -0
  320. package/src/lsp/IDiagnostic.ts +9 -0
  321. package/src/lsp/IDocumentSymbol.ts +10 -0
  322. package/src/lsp/ILocation.ts +6 -0
  323. package/src/lsp/IPosition.ts +4 -0
  324. package/src/lsp/IRange.ts +6 -0
  325. package/src/lsp/ISymbolInformation.ts +8 -0
  326. package/src/lsp/LspClient.ts +165 -0
  327. package/src/lsp/isDocumentSymbol.ts +8 -0
  328. package/src/lsp/types.ts +8 -0
  329. package/src/mcp/createServer.ts +23 -0
  330. package/src/mcp/startServer.ts +23 -0
  331. package/src/model/GraphMemory.ts +165 -0
  332. package/src/operations/bound.ts +9 -0
  333. package/src/operations/common.ts +15 -0
  334. package/src/operations/compareEdges.ts +10 -0
  335. package/src/operations/edgeRank.ts +23 -0
  336. package/src/operations/isExecution.ts +9 -0
  337. package/src/operations/isPublicApiNoisePath.ts +10 -0
  338. package/src/operations/isStructural.ts +3 -0
  339. package/src/operations/isSupportPath.ts +16 -0
  340. package/src/operations/isTestPath.ts +7 -0
  341. package/src/operations/isTypeEdge.ts +9 -0
  342. package/src/operations/publicEvidence.ts +11 -0
  343. package/src/operations/referencesFromEdges.ts +37 -0
  344. package/src/operations/resolveHandle.ts +27 -0
  345. package/src/operations/resultGuide.ts +3 -0
  346. package/src/operations/resultNext.ts +9 -0
  347. package/src/operations/runDetails.ts +240 -0
  348. package/src/operations/runEntrypoints.ts +153 -0
  349. package/src/operations/runLookup.ts +269 -0
  350. package/src/operations/runOverview.ts +158 -0
  351. package/src/operations/runTour.ts +582 -0
  352. package/src/operations/runTrace.ts +339 -0
  353. package/src/operations/signatureOf.ts +40 -0
  354. package/src/operations/subwords.ts +8 -0
  355. package/src/operations/summaryOf.ts +21 -0
  356. package/src/runGraph.ts +144 -0
  357. package/src/structures/GraphEdgeKind.ts +24 -0
  358. package/src/structures/GraphLanguage.ts +21 -0
  359. package/src/structures/GraphNodeKind.ts +27 -0
  360. package/src/structures/IGraphDecorator.ts +25 -0
  361. package/src/structures/IGraphDetails.ts +153 -0
  362. package/src/structures/IGraphDiagnostic.ts +29 -0
  363. package/src/structures/IGraphDump.ts +45 -0
  364. package/src/structures/IGraphEdge.ts +24 -0
  365. package/src/structures/IGraphEntrypoints.ts +70 -0
  366. package/src/structures/IGraphEscape.ts +49 -0
  367. package/src/structures/IGraphEvidence.ts +29 -0
  368. package/src/structures/IGraphLookup.ts +80 -0
  369. package/src/structures/IGraphNext.ts +23 -0
  370. package/src/structures/IGraphNode.ts +76 -0
  371. package/src/structures/IGraphOverview.ts +121 -0
  372. package/src/structures/IGraphTour.ts +68 -0
  373. package/src/structures/IGraphTrace.ts +154 -0
  374. package/src/structures/ISamchonGraphApplication.ts +186 -0
  375. package/src/structures/index.ts +18 -0
  376. package/src/structures.ts +1 -0
  377. package/src/utils/DEFAULT_IGNORES.ts +35 -0
  378. package/src/utils/IWalkOptions.ts +5 -0
  379. package/src/utils/basename.ts +7 -0
  380. package/src/utils/dirname.ts +7 -0
  381. package/src/utils/fileFromUri.ts +14 -0
  382. package/src/utils/fileUri.ts +13 -0
  383. package/src/utils/fs.ts +6 -0
  384. package/src/utils/isSubPath.ts +9 -0
  385. package/src/utils/normalizePath.ts +3 -0
  386. package/src/utils/path.ts +7 -0
  387. package/src/utils/projectRelative.ts +6 -0
  388. package/src/utils/readLines.ts +5 -0
  389. package/src/utils/readText.ts +10 -0
  390. package/src/utils/relativePath.ts +7 -0
  391. package/src/utils/walkSourceFiles.ts +35 -0
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runTrace = runTrace;
4
+ const common_1 = require("./common");
5
+ const DEFAULT_DEPTH = 2;
6
+ const DEFAULT_MAX_NODES = 6;
7
+ const MAX_OPEN_DEPTH = 2;
8
+ const MAX_OPEN_NODES = 8;
9
+ const MAX_IMPACT_DEPTH = 4;
10
+ const MAX_IMPACT_NODES = 16;
11
+ const MAX_HOPS_PER_NODE = 2;
12
+ const MAX_STEPS = 6;
13
+ const MAX_PATH_DEPTH = 12;
14
+ /**
15
+ * Breadth-first trace along the dependency graph. Structural
16
+ * (contains/exports/imports) edges are excluded so the path is real call/type
17
+ * flow; forward walks callees, reverse and impact walk callers. Impact
18
+ * additionally tags each reached node's role so the blast radius on the public
19
+ * surface is legible.
20
+ */
21
+ function runTrace(graph, props) {
22
+ const direction = props.direction ?? "forward";
23
+ const focus = props.focus ?? "all";
24
+ const impact = direction === "impact";
25
+ const reverse = direction === "reverse" || direction === "impact";
26
+ const includeExternal = props.includeExternal === true;
27
+ const maxDepth = (0, common_1.bound)(props.maxDepth, DEFAULT_DEPTH, 1, impact ? MAX_IMPACT_DEPTH : MAX_OPEN_DEPTH);
28
+ const maxNodes = (0, common_1.bound)(props.maxNodes, DEFAULT_MAX_NODES, 1, impact ? MAX_IMPACT_NODES : MAX_OPEN_NODES);
29
+ const maxHops = maxNodes * MAX_HOPS_PER_NODE;
30
+ const start = (0, common_1.resolveHandle)(graph, props.from);
31
+ if (start.candidates !== undefined) {
32
+ return {
33
+ type: "trace",
34
+ direction,
35
+ hops: [],
36
+ reached: [],
37
+ truncated: false,
38
+ candidates: start.candidates.map((node) => traceNode(graph, node)),
39
+ next: (0, common_1.resultNext)("clarify", "The start handle is ambiguous; choose one candidate."),
40
+ guide: (0, common_1.resultGuide)("Disambiguate with returned candidates."),
41
+ };
42
+ }
43
+ if (start.node === undefined) {
44
+ return {
45
+ type: "trace",
46
+ direction,
47
+ hops: [],
48
+ reached: [],
49
+ truncated: false,
50
+ next: (0, common_1.resultNext)("clarify", "The start handle did not resolve in the graph."),
51
+ guide: (0, common_1.resultGuide)("Answer that the graph has no trace from this handle."),
52
+ };
53
+ }
54
+ // Path mode: with `to`, return the dependency path from `from` to `to`, the
55
+ // one-call answer for "how does A reach B", instead of an open-ended trace.
56
+ if (props.to !== undefined && props.to.trim() !== "") {
57
+ const target = (0, common_1.resolveHandle)(graph, props.to);
58
+ const startNode = traceNode(graph, start.node);
59
+ // Mirror the start handle: an ambiguous or unresolved target must ask to
60
+ // clarify, not report an empty path with next: "answer" (which reads as
61
+ // "no flow exists").
62
+ if (target.candidates !== undefined) {
63
+ return {
64
+ type: "trace",
65
+ direction: "path",
66
+ start: startNode,
67
+ hops: [],
68
+ reached: [],
69
+ truncated: false,
70
+ candidates: target.candidates.map((node) => traceNode(graph, node)),
71
+ next: (0, common_1.resultNext)("clarify", "The target handle is ambiguous; choose one candidate."),
72
+ guide: (0, common_1.resultGuide)("Disambiguate the target with returned candidates."),
73
+ };
74
+ }
75
+ if (target.node === undefined) {
76
+ return {
77
+ type: "trace",
78
+ direction: "path",
79
+ start: startNode,
80
+ hops: [],
81
+ reached: [],
82
+ truncated: false,
83
+ next: (0, common_1.resultNext)("clarify", "The target handle did not resolve in the graph."),
84
+ guide: (0, common_1.resultGuide)("Answer that the graph has no path to this target."),
85
+ };
86
+ }
87
+ const found = findPath(graph, start.node.id, target.node.id, (0, common_1.bound)(props.maxDepth, MAX_PATH_DEPTH, 1, MAX_PATH_DEPTH), focus, includeExternal);
88
+ return {
89
+ type: "trace",
90
+ direction: "path",
91
+ start: startNode,
92
+ target: traceNode(graph, target.node),
93
+ path: (found?.path ?? []).map((node, depth) => traceNode(graph, node, depth, true)),
94
+ hops: found?.hops ?? [],
95
+ reached: [],
96
+ truncated: false,
97
+ steps: steps(graph, found?.hops ?? []),
98
+ next: (0, common_1.resultNext)("answer", "The path result is the flow answer; cite path nodes and evidence ranges."),
99
+ guide: (0, common_1.resultGuide)("Use path, hops, and evidence as the flow answer."),
100
+ };
101
+ }
102
+ const hops = [];
103
+ const reached = new Map();
104
+ const visited = new Set([start.node.id]);
105
+ let queue = [{ id: start.node.id, depth: 0 }];
106
+ let truncated = false;
107
+ while (queue.length > 0) {
108
+ const next = [];
109
+ for (const { id, depth } of queue) {
110
+ if (depth >= maxDepth) {
111
+ truncated = true;
112
+ continue;
113
+ }
114
+ const edges = orderedEdges(graph, reverse ? graph.incoming(id) : graph.outgoing(id), impact).filter((edge) => traversable(edge, focus));
115
+ for (const edge of edges) {
116
+ const otherId = reverse ? edge.from : edge.to;
117
+ const other = graph.node(otherId);
118
+ if (other === undefined || other.kind === "file")
119
+ continue;
120
+ if (!includeExternal && other.external)
121
+ continue;
122
+ const hop = hopOf(edge, depth + 1);
123
+ // A back-edge to the start or an already-reached node: record the hop;
124
+ // its endpoints are already represented.
125
+ if (visited.has(otherId)) {
126
+ if (hops.length >= maxHops)
127
+ truncated = true;
128
+ else
129
+ hops.push(hop);
130
+ continue;
131
+ }
132
+ // A new node past the cap is left unrepresented, so drop its hop too:
133
+ // every hop's endpoints stay resolvable in `reached`/`start`.
134
+ if (reached.size >= maxNodes) {
135
+ truncated = true;
136
+ continue;
137
+ }
138
+ if (hops.length >= maxHops) {
139
+ truncated = true;
140
+ continue;
141
+ }
142
+ visited.add(otherId);
143
+ reached.set(otherId, traceNode(graph, other, depth + 1, false, impact));
144
+ next.push({ id: otherId, depth: depth + 1 });
145
+ hops.push(hop);
146
+ }
147
+ }
148
+ queue = next;
149
+ }
150
+ return {
151
+ type: "trace",
152
+ start: traceNode(graph, start.node),
153
+ direction,
154
+ hops,
155
+ reached: [...reached.values()],
156
+ truncated,
157
+ steps: steps(graph, hops),
158
+ next: (0, common_1.resultNext)("answer", "Steps, hops, reached nodes, and evidence ranges are the flow answer surface."),
159
+ guide: (0, common_1.resultGuide)("Use steps, hops, reached nodes, and evidence ranges as the flow answer."),
160
+ };
161
+ }
162
+ function findPath(graph, startId, targetId, maxDepth, focus, includeExternal) {
163
+ const parent = new Map();
164
+ const queue = [{ id: startId, depth: 0 }];
165
+ const visited = new Set([startId]);
166
+ while (queue.length > 0) {
167
+ const item = queue.shift();
168
+ /* c8 ignore next */
169
+ if (item.depth >= maxDepth)
170
+ continue;
171
+ for (const edge of graph.outgoing(item.id).filter((e) => traversable(e, focus)).sort(common_1.compareEdges)) {
172
+ const other = graph.node(edge.to);
173
+ if (other === undefined || other.kind === "file")
174
+ continue;
175
+ if (!includeExternal && other.external)
176
+ continue;
177
+ if (visited.has(edge.to))
178
+ continue;
179
+ visited.add(edge.to);
180
+ parent.set(edge.to, { from: item.id, edge });
181
+ if (edge.to === targetId) {
182
+ const ids = [targetId];
183
+ let cursor = targetId;
184
+ while (cursor !== startId) {
185
+ const p = parent.get(cursor);
186
+ ids.unshift(p.from);
187
+ cursor = p.from;
188
+ }
189
+ const nodes = ids
190
+ .map((id) => graph.node(id))
191
+ .filter((node) => node !== undefined);
192
+ const pathHops = [];
193
+ for (let i = 1; i < ids.length; i++) {
194
+ const p = parent.get(ids[i]);
195
+ if (p !== undefined)
196
+ pathHops.push(hopOf(p.edge, i));
197
+ }
198
+ return { path: nodes, hops: pathHops };
199
+ }
200
+ queue.push({ id: edge.to, depth: item.depth + 1 });
201
+ }
202
+ }
203
+ return null;
204
+ }
205
+ /**
206
+ * Order edges before traversal. A normal trace ranks by edge kind then
207
+ * evidence; an impact trace ranks reached endpoints by public-surface role
208
+ * first so the blast radius on the exported/test surface leads.
209
+ */
210
+ // Only the impact BFS orders edges here, and it always traverses incoming
211
+ // edges, so the ranked endpoint is the edge's `from`.
212
+ function orderedEdges(graph, edges, impact) {
213
+ if (!impact)
214
+ return [...edges].sort(common_1.compareEdges);
215
+ return [...edges].sort((a, b) => impactEndpointRank(graph, a.from) - impactEndpointRank(graph, b.from) ||
216
+ (0, common_1.edgeRank)(a.kind) - (0, common_1.edgeRank)(b.kind) ||
217
+ (a.evidence?.startLine ?? 999999) - (b.evidence?.startLine ?? 999999));
218
+ }
219
+ function impactEndpointRank(graph, id) {
220
+ const node = graph.node(id);
221
+ // `id` is always an endpoint of a real graph edge, so it resolves.
222
+ /* c8 ignore next */
223
+ if (node === undefined)
224
+ return 9;
225
+ if ((0, common_1.isTestPath)(node.file))
226
+ return 0;
227
+ if (node.exported)
228
+ return 1;
229
+ if (node.external || node.ignored)
230
+ return 4;
231
+ return 2;
232
+ }
233
+ function traversable(edge, focus) {
234
+ if (edge.kind === "contains" || edge.kind === "exports" || edge.kind === "imports") {
235
+ return false;
236
+ }
237
+ if (focus === "execution")
238
+ return (0, common_1.isExecution)(edge.kind);
239
+ if (focus === "types")
240
+ return (0, common_1.isTypeEdge)(edge.kind);
241
+ return true;
242
+ }
243
+ function hopOf(edge, depth) {
244
+ return {
245
+ from: edge.from,
246
+ to: edge.to,
247
+ kind: edge.kind,
248
+ depth,
249
+ ...(edge.evidence !== undefined ? { evidence: (0, common_1.publicEvidence)(edge.evidence) } : {}),
250
+ };
251
+ }
252
+ function traceNode(graph, node, depth, withSignature = false, withRoles = false) {
253
+ const out = {
254
+ ...(0, common_1.summaryOf)(node),
255
+ ...(depth !== undefined ? { depth } : {}),
256
+ };
257
+ if (withSignature) {
258
+ const signature = (0, common_1.signatureOf)(graph.project, node);
259
+ if (signature !== undefined)
260
+ out.signature = signature;
261
+ }
262
+ if (withRoles) {
263
+ const roles = [];
264
+ if (node.exported)
265
+ roles.push("exported");
266
+ if ((0, common_1.isTestPath)(node.file))
267
+ roles.push("test");
268
+ if (roles.length > 0)
269
+ out.roles = roles;
270
+ }
271
+ return out;
272
+ }
273
+ function steps(graph, hops) {
274
+ return hops.slice(0, MAX_STEPS).map((hop) => {
275
+ const from = graph.node(hop.from);
276
+ const to = graph.node(hop.to);
277
+ const lhs = from.qualifiedName ?? from.name;
278
+ const rhs = to.qualifiedName ?? to.name;
279
+ const at = hop.evidence === undefined ? "" : ` at ${hop.evidence.file}:${hop.evidence.startLine}`;
280
+ return `${lhs} -[${hop.kind}${at}]-> ${rhs}`;
281
+ });
282
+ }
283
+ //# sourceMappingURL=runTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runTrace.js","sourceRoot":"","sources":["../../src/operations/runTrace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { IGraphNode } from "../structures";
2
+ export declare function signatureOf(project: string, node: IGraphNode): string | undefined;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.signatureOf = signatureOf;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const fs_1 = require("../utils/fs");
9
+ function signatureOf(project, node) {
10
+ if (node.signature !== undefined && node.signature.trim() !== "") {
11
+ return compactSignature(node.signature);
12
+ }
13
+ if (node.evidence === undefined || node.file === "")
14
+ return undefined;
15
+ const lines = (0, fs_1.readLines)(node_path_1.default.join(project, node.evidence.file));
16
+ if (lines === undefined)
17
+ return undefined;
18
+ const start = Math.max(0, node.evidence.startLine - 1);
19
+ const end = node.evidence.endLine === undefined
20
+ ? Math.min(lines.length, start + 4)
21
+ : Math.min(lines.length, node.evidence.endLine);
22
+ const out = [];
23
+ for (let i = start; i < end && out.length < 4; i++) {
24
+ const line = lines[i];
25
+ /* c8 ignore next */
26
+ if (line === undefined)
27
+ break;
28
+ out.push(line);
29
+ const trimmed = line.trimEnd();
30
+ if (trimmed.endsWith(";") || trimmed.endsWith("{") || trimmed.endsWith("}")) {
31
+ break;
32
+ }
33
+ }
34
+ const text = out.join("\n").trim();
35
+ return text === "" ? undefined : compactSignature(text);
36
+ }
37
+ function compactSignature(text) {
38
+ return text
39
+ .split(/\r?\n/)
40
+ .slice(0, 4)
41
+ .join("\n")
42
+ .replace(/\s+$/gm, "")
43
+ .trim();
44
+ }
45
+ //# sourceMappingURL=signatureOf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatureOf.js","sourceRoot":"","sources":["../../src/operations/signatureOf.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAG7B,oCAAwC;AAExC,qBAA4B,OAAe,EAAE,IAAgB;IAC3D,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,KAAK,GAAG,IAAA,cAAS,EAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GACP,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;QACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,oBAAoB;QACpB,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM;QAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5E,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,KAAK,CAAC,OAAO,CAAC;SACd,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,IAAI,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function subwords(text: string): string[];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subwords = subwords;
4
+ function subwords(text) {
5
+ return text
6
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
7
+ .replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2")
8
+ .split(/[^a-zA-Z0-9_$]+/)
9
+ .map((word) => word.toLowerCase())
10
+ .filter((word) => word.length > 0);
11
+ }
12
+ //# sourceMappingURL=subwords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subwords.js","sourceRoot":"","sources":["../../src/operations/subwords.ts"],"names":[],"mappings":";;;AAAA,kBAAyB,IAAY;IACnC,OAAO,IAAI;SACR,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,KAAK,CAAC,iBAAiB,CAAC;SACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { IGraphNode, IGraphOverview } from "../structures";
2
+ export declare function summaryOf(node: IGraphNode): IGraphOverview.INode;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.summaryOf = summaryOf;
4
+ function summaryOf(node) {
5
+ const out = {
6
+ id: node.id,
7
+ name: node.qualifiedName ?? node.name,
8
+ kind: node.kind,
9
+ language: node.language,
10
+ file: node.file,
11
+ };
12
+ if (node.evidence?.startLine !== undefined)
13
+ out.line = node.evidence.startLine;
14
+ const span = node.implementation ?? node.evidence;
15
+ if (span !== undefined) {
16
+ out.sourceSpan = {
17
+ file: span.file,
18
+ startLine: span.startLine,
19
+ ...(span.endLine !== undefined ? { endLine: span.endLine } : {}),
20
+ };
21
+ }
22
+ return out;
23
+ }
24
+ //# sourceMappingURL=summaryOf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summaryOf.js","sourceRoot":"","sources":["../../src/operations/summaryOf.ts"],"names":[],"mappings":";;;AAEA,mBAA0B,IAAgB;IACxC,MAAM,GAAG,GAAyB;QAChC,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI;QACrC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IACF,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC;IAClD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,UAAU,GAAG;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function runGraph(argv?: readonly string[]): number | void;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runGraph = runGraph;
7
+ const buildGraphDump_1 = require("./indexer/buildGraphDump");
8
+ const LANGUAGE_SPECS_1 = require("./indexer/LANGUAGE_SPECS");
9
+ const startServer_1 = require("./mcp/startServer");
10
+ const package_json_1 = __importDefault(require("../package.json"));
11
+ const VERSION = package_json_1.default.version;
12
+ function runGraph(argv = process.argv.slice(2)) {
13
+ try {
14
+ if (argv[0] === "dump") {
15
+ void runDump(argv.slice(1));
16
+ return;
17
+ }
18
+ if (argv[0] === "help" || argv[0] === "--help" || argv[0] === "-h") {
19
+ process.stdout.write(helpText());
20
+ return 0;
21
+ }
22
+ const options = parseArgs(argv);
23
+ void (0, startServer_1.startServer)({ ...options, version: VERSION }).catch((error) => {
24
+ /* c8 ignore next 2 */
25
+ writeError(error);
26
+ process.exit(1);
27
+ });
28
+ }
29
+ catch (error) {
30
+ writeError(error);
31
+ return 1;
32
+ }
33
+ }
34
+ async function runDump(argv) {
35
+ try {
36
+ const dump = await (0, buildGraphDump_1.buildGraphDump)(parseArgs(argv));
37
+ process.stdout.write(`${JSON.stringify(dump, null, 2)}\n`);
38
+ }
39
+ catch (error) {
40
+ writeError(error);
41
+ process.exitCode = 1;
42
+ }
43
+ }
44
+ function parseArgs(argv) {
45
+ const options = {};
46
+ for (let i = 0; i < argv.length; i++) {
47
+ const arg = argv[i];
48
+ const next = () => {
49
+ const value = argv[++i];
50
+ if (value === undefined)
51
+ throw new Error(`Missing value for ${arg}`);
52
+ return value;
53
+ };
54
+ if (arg === "--cwd")
55
+ options.cwd = next();
56
+ else if (arg.startsWith("--cwd="))
57
+ options.cwd = arg.slice("--cwd=".length);
58
+ else if (arg === "--mode")
59
+ options.mode = parseMode(next());
60
+ else if (arg.startsWith("--mode="))
61
+ options.mode = parseMode(arg.slice("--mode=".length));
62
+ else if (arg === "--language")
63
+ options.languages = [...(options.languages ?? []), parseLanguage(next())];
64
+ else if (arg.startsWith("--language=")) {
65
+ options.languages = [
66
+ ...(options.languages ?? []),
67
+ parseLanguage(arg.slice("--language=".length)),
68
+ ];
69
+ }
70
+ else if (arg === "--server")
71
+ options.server = next();
72
+ else if (arg.startsWith("--server="))
73
+ options.server = arg.slice("--server=".length);
74
+ else if (arg === "--server-arg") {
75
+ options.serverArgs = [...(options.serverArgs ?? []), next()];
76
+ }
77
+ else if (arg.startsWith("--server-arg=")) {
78
+ options.serverArgs = [
79
+ ...(options.serverArgs ?? []),
80
+ arg.slice("--server-arg=".length),
81
+ ];
82
+ }
83
+ else if (arg === "--max-files")
84
+ options.maxFiles = parseInteger(next());
85
+ else if (arg.startsWith("--max-files=")) {
86
+ options.maxFiles = parseInteger(arg.slice("--max-files=".length));
87
+ }
88
+ else if (arg === "--lsp-timeout-ms") {
89
+ options.lspTimeoutMs = parseInteger(next());
90
+ }
91
+ else if (arg.startsWith("--lsp-timeout-ms=")) {
92
+ options.lspTimeoutMs = parseInteger(arg.slice("--lsp-timeout-ms=".length));
93
+ }
94
+ else if (arg === "--lsp-reference-limit") {
95
+ options.lspReferenceLimit = parseInteger(next());
96
+ }
97
+ else if (arg.startsWith("--lsp-reference-limit=")) {
98
+ options.lspReferenceLimit = parseInteger(arg.slice("--lsp-reference-limit=".length));
99
+ }
100
+ else if (arg === "--lsp-concurrency") {
101
+ options.lspConcurrency = parseInteger(next());
102
+ }
103
+ else if (arg.startsWith("--lsp-concurrency=")) {
104
+ options.lspConcurrency = parseInteger(arg.slice("--lsp-concurrency=".length));
105
+ }
106
+ else if (arg === "--lsp-warmup-timeout-ms") {
107
+ options.lspWarmupTimeoutMs = parseInteger(next());
108
+ }
109
+ else if (arg.startsWith("--lsp-warmup-timeout-ms=")) {
110
+ options.lspWarmupTimeoutMs = parseInteger(arg.slice("--lsp-warmup-timeout-ms=".length));
111
+ }
112
+ else if (arg === "--graph-file") {
113
+ options.graphFile = next();
114
+ }
115
+ else if (arg.startsWith("--graph-file=")) {
116
+ options.graphFile = arg.slice("--graph-file=".length);
117
+ }
118
+ else {
119
+ throw new Error(`Unknown argument: ${arg}`);
120
+ }
121
+ }
122
+ return options;
123
+ }
124
+ function parseMode(value) {
125
+ if (value === "auto" || value === "lsp" || value === "static")
126
+ return value;
127
+ throw new Error(`Invalid --mode: ${value}`);
128
+ }
129
+ const ALLOWED_LANGUAGES = new Set([
130
+ ...LANGUAGE_SPECS_1.LANGUAGE_SPECS.map((spec) => spec.language),
131
+ "unknown",
132
+ ]);
133
+ function parseLanguage(value) {
134
+ if (!ALLOWED_LANGUAGES.has(value))
135
+ throw new Error(`Invalid --language: ${value}`);
136
+ return value;
137
+ }
138
+ function parseInteger(value) {
139
+ const parsed = Number(value);
140
+ if (!Number.isFinite(parsed) || parsed < 1) {
141
+ throw new Error(`Expected positive integer, got: ${value}`);
142
+ }
143
+ return Math.floor(parsed);
144
+ }
145
+ function helpText() {
146
+ return `@samchon/graph
147
+
148
+ Usage:
149
+ samchon-graph [--cwd DIR] [--mode auto|lsp|static] [--language LANG]
150
+ samchon-graph dump [same options]
151
+
152
+ Options:
153
+ --server CMD Override the language server command.
154
+ --server-arg ARG Add one language server argument.
155
+ --max-files N Cap source files indexed.
156
+ --lsp-timeout-ms N Per-request LSP timeout.
157
+ --lsp-reference-limit N Reference targets to collect edges for.
158
+ --lsp-concurrency N Concurrent reference requests.
159
+ --graph-file PATH Serve a pre-built dump instead of indexing.
160
+ `;
161
+ }
162
+ function writeError(error) {
163
+ process.stderr.write(`@samchon/graph: ${error.message}\n`);
164
+ }
165
+ //# sourceMappingURL=runGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runGraph.js","sourceRoot":"","sources":["../src/runGraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The relationship a directed edge encodes between two {@link IGraphNode}s.
3
+ *
4
+ * Structural edges (`contains`, `exports`, `imports`) come from the declaration
5
+ * pass. Value and type edges (`calls`, `accesses`, `instantiates`, `type_ref`,
6
+ * `extends`, `implements`, `overrides`, `renders`) are resolved by the language
7
+ * server — `renders` is a component use. `decorates` carries a decorator fact
8
+ * and `tests` a test-to-subject relationship.
9
+ */
10
+ export type GraphEdgeKind = "contains" | "exports" | "imports" | "calls" | "accesses" | "instantiates" | "type_ref" | "extends" | "implements" | "overrides" | "decorates" | "renders" | "tests" | "references";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GraphEdgeKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphEdgeKind.js","sourceRoot":"","sources":["../../src/structures/GraphEdgeKind.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ /** A source language a graph node can be declared in. */
2
+ export type GraphLanguage = "typescript" | "javascript" | "go" | "rust" | "cpp" | "c" | "java" | "csharp" | "kotlin" | "swift" | "scala" | "zig" | "python" | "ruby" | "php" | "lua" | "bash" | "dart" | "unknown";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GraphLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphLanguage.js","sourceRoot":"","sources":["../../src/structures/GraphLanguage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * What a graph node represents.
3
+ *
4
+ * The symbol kinds (`file` through `constructor`) are declarations the language
5
+ * server owns and resolves. `external_symbol` is a dependency-boundary leaf the
6
+ * workspace references but does not declare. The graph keeps it as a named
7
+ * endpoint without walking into the dependency's internals.
8
+ *
9
+ * Used as the `kind` discriminant on {@link IGraphNode}.
10
+ */
11
+ export type GraphNodeKind = "file" | "package" | "namespace" | "module" | "function" | "class" | "interface" | "type" | "enum" | "variable" | "method" | "property" | "parameter" | "field" | "constructor" | "external_symbol";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GraphNodeKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphNodeKind.js","sourceRoot":"","sources":["../../src/structures/GraphNodeKind.ts"],"names":[],"mappings":""}