@colbymchenry/codegraph-darwin-x64 0.9.9 → 1.0.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 (296) hide show
  1. package/lib/dist/bin/codegraph.d.ts +1 -0
  2. package/lib/dist/bin/codegraph.d.ts.map +1 -1
  3. package/lib/dist/bin/codegraph.js +246 -3
  4. package/lib/dist/bin/codegraph.js.map +1 -1
  5. package/lib/dist/context/index.d.ts.map +1 -1
  6. package/lib/dist/context/index.js +7 -0
  7. package/lib/dist/context/index.js.map +1 -1
  8. package/lib/dist/db/index.d.ts.map +1 -1
  9. package/lib/dist/db/index.js +2 -1
  10. package/lib/dist/db/index.js.map +1 -1
  11. package/lib/dist/db/migrations.d.ts +1 -1
  12. package/lib/dist/db/migrations.d.ts.map +1 -1
  13. package/lib/dist/db/migrations.js +10 -1
  14. package/lib/dist/db/migrations.js.map +1 -1
  15. package/lib/dist/db/queries.d.ts +43 -0
  16. package/lib/dist/db/queries.d.ts.map +1 -1
  17. package/lib/dist/db/queries.js +103 -7
  18. package/lib/dist/db/queries.js.map +1 -1
  19. package/lib/dist/db/schema.sql +1 -0
  20. package/lib/dist/db/sqlite-adapter.d.ts +7 -0
  21. package/lib/dist/db/sqlite-adapter.d.ts.map +1 -1
  22. package/lib/dist/db/sqlite-adapter.js +3 -0
  23. package/lib/dist/db/sqlite-adapter.js.map +1 -1
  24. package/lib/dist/directory.d.ts +34 -2
  25. package/lib/dist/directory.d.ts.map +1 -1
  26. package/lib/dist/directory.js +129 -35
  27. package/lib/dist/directory.js.map +1 -1
  28. package/lib/dist/extraction/astro-extractor.d.ts +79 -0
  29. package/lib/dist/extraction/astro-extractor.d.ts.map +1 -0
  30. package/lib/dist/extraction/astro-extractor.js +320 -0
  31. package/lib/dist/extraction/astro-extractor.js.map +1 -0
  32. package/lib/dist/extraction/extraction-version.d.ts +25 -0
  33. package/lib/dist/extraction/extraction-version.d.ts.map +1 -0
  34. package/lib/dist/extraction/extraction-version.js +28 -0
  35. package/lib/dist/extraction/extraction-version.js.map +1 -0
  36. package/lib/dist/extraction/function-ref.d.ts +118 -0
  37. package/lib/dist/extraction/function-ref.d.ts.map +1 -0
  38. package/lib/dist/extraction/function-ref.js +727 -0
  39. package/lib/dist/extraction/function-ref.js.map +1 -0
  40. package/lib/dist/extraction/generated-detection.d.ts.map +1 -1
  41. package/lib/dist/extraction/generated-detection.js +3 -0
  42. package/lib/dist/extraction/generated-detection.js.map +1 -1
  43. package/lib/dist/extraction/grammars.d.ts +7 -1
  44. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  45. package/lib/dist/extraction/grammars.js +52 -4
  46. package/lib/dist/extraction/grammars.js.map +1 -1
  47. package/lib/dist/extraction/index.d.ts +34 -0
  48. package/lib/dist/extraction/index.d.ts.map +1 -1
  49. package/lib/dist/extraction/index.js +346 -62
  50. package/lib/dist/extraction/index.js.map +1 -1
  51. package/lib/dist/extraction/languages/c-cpp.d.ts +8 -0
  52. package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  53. package/lib/dist/extraction/languages/c-cpp.js +87 -28
  54. package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
  55. package/lib/dist/extraction/languages/csharp.d.ts +22 -0
  56. package/lib/dist/extraction/languages/csharp.d.ts.map +1 -1
  57. package/lib/dist/extraction/languages/csharp.js +84 -2
  58. package/lib/dist/extraction/languages/csharp.js.map +1 -1
  59. package/lib/dist/extraction/languages/dart.d.ts.map +1 -1
  60. package/lib/dist/extraction/languages/dart.js +161 -1
  61. package/lib/dist/extraction/languages/dart.js.map +1 -1
  62. package/lib/dist/extraction/languages/go.d.ts.map +1 -1
  63. package/lib/dist/extraction/languages/go.js +43 -2
  64. package/lib/dist/extraction/languages/go.js.map +1 -1
  65. package/lib/dist/extraction/languages/index.d.ts.map +1 -1
  66. package/lib/dist/extraction/languages/index.js +2 -0
  67. package/lib/dist/extraction/languages/index.js.map +1 -1
  68. package/lib/dist/extraction/languages/java.d.ts.map +1 -1
  69. package/lib/dist/extraction/languages/java.js +42 -1
  70. package/lib/dist/extraction/languages/java.js.map +1 -1
  71. package/lib/dist/extraction/languages/javascript.d.ts.map +1 -1
  72. package/lib/dist/extraction/languages/javascript.js +16 -0
  73. package/lib/dist/extraction/languages/javascript.js.map +1 -1
  74. package/lib/dist/extraction/languages/kotlin.d.ts.map +1 -1
  75. package/lib/dist/extraction/languages/kotlin.js +69 -0
  76. package/lib/dist/extraction/languages/kotlin.js.map +1 -1
  77. package/lib/dist/extraction/languages/objc.d.ts.map +1 -1
  78. package/lib/dist/extraction/languages/objc.js +42 -0
  79. package/lib/dist/extraction/languages/objc.js.map +1 -1
  80. package/lib/dist/extraction/languages/pascal.d.ts.map +1 -1
  81. package/lib/dist/extraction/languages/pascal.js +11 -0
  82. package/lib/dist/extraction/languages/pascal.js.map +1 -1
  83. package/lib/dist/extraction/languages/php.d.ts.map +1 -1
  84. package/lib/dist/extraction/languages/php.js +90 -1
  85. package/lib/dist/extraction/languages/php.js.map +1 -1
  86. package/lib/dist/extraction/languages/r.d.ts +3 -0
  87. package/lib/dist/extraction/languages/r.d.ts.map +1 -0
  88. package/lib/dist/extraction/languages/r.js +314 -0
  89. package/lib/dist/extraction/languages/r.js.map +1 -0
  90. package/lib/dist/extraction/languages/ruby.d.ts.map +1 -1
  91. package/lib/dist/extraction/languages/ruby.js +35 -0
  92. package/lib/dist/extraction/languages/ruby.js.map +1 -1
  93. package/lib/dist/extraction/languages/rust.d.ts.map +1 -1
  94. package/lib/dist/extraction/languages/rust.js +35 -2
  95. package/lib/dist/extraction/languages/rust.js.map +1 -1
  96. package/lib/dist/extraction/languages/scala.d.ts.map +1 -1
  97. package/lib/dist/extraction/languages/scala.js +61 -1
  98. package/lib/dist/extraction/languages/scala.js.map +1 -1
  99. package/lib/dist/extraction/languages/swift.d.ts.map +1 -1
  100. package/lib/dist/extraction/languages/swift.js +61 -0
  101. package/lib/dist/extraction/languages/swift.js.map +1 -1
  102. package/lib/dist/extraction/languages/typescript.d.ts +13 -0
  103. package/lib/dist/extraction/languages/typescript.d.ts.map +1 -1
  104. package/lib/dist/extraction/languages/typescript.js +38 -0
  105. package/lib/dist/extraction/languages/typescript.js.map +1 -1
  106. package/lib/dist/extraction/liquid-extractor.d.ts +7 -0
  107. package/lib/dist/extraction/liquid-extractor.d.ts.map +1 -1
  108. package/lib/dist/extraction/liquid-extractor.js +53 -9
  109. package/lib/dist/extraction/liquid-extractor.js.map +1 -1
  110. package/lib/dist/extraction/razor-extractor.d.ts +42 -0
  111. package/lib/dist/extraction/razor-extractor.d.ts.map +1 -0
  112. package/lib/dist/extraction/razor-extractor.js +285 -0
  113. package/lib/dist/extraction/razor-extractor.js.map +1 -0
  114. package/lib/dist/extraction/svelte-extractor.d.ts.map +1 -1
  115. package/lib/dist/extraction/svelte-extractor.js +6 -3
  116. package/lib/dist/extraction/svelte-extractor.js.map +1 -1
  117. package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
  118. package/lib/dist/extraction/tree-sitter-helpers.js +59 -10
  119. package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
  120. package/lib/dist/extraction/tree-sitter-types.d.ts +33 -0
  121. package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  122. package/lib/dist/extraction/tree-sitter.d.ts +211 -0
  123. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  124. package/lib/dist/extraction/tree-sitter.js +1681 -49
  125. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  126. package/lib/dist/extraction/vue-extractor.d.ts +15 -0
  127. package/lib/dist/extraction/vue-extractor.d.ts.map +1 -1
  128. package/lib/dist/extraction/vue-extractor.js +94 -3
  129. package/lib/dist/extraction/vue-extractor.js.map +1 -1
  130. package/lib/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  131. package/lib/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  132. package/lib/dist/graph/queries.d.ts.map +1 -1
  133. package/lib/dist/graph/queries.js +13 -40
  134. package/lib/dist/graph/queries.js.map +1 -1
  135. package/lib/dist/graph/traversal.d.ts.map +1 -1
  136. package/lib/dist/graph/traversal.js +16 -4
  137. package/lib/dist/graph/traversal.js.map +1 -1
  138. package/lib/dist/index.d.ts +34 -2
  139. package/lib/dist/index.d.ts.map +1 -1
  140. package/lib/dist/index.js +90 -8
  141. package/lib/dist/index.js.map +1 -1
  142. package/lib/dist/installer/index.d.ts.map +1 -1
  143. package/lib/dist/installer/index.js +52 -2
  144. package/lib/dist/installer/index.js.map +1 -1
  145. package/lib/dist/installer/instructions-template.d.ts +34 -11
  146. package/lib/dist/installer/instructions-template.d.ts.map +1 -1
  147. package/lib/dist/installer/instructions-template.js +44 -12
  148. package/lib/dist/installer/instructions-template.js.map +1 -1
  149. package/lib/dist/installer/targets/claude.d.ts.map +1 -1
  150. package/lib/dist/installer/targets/claude.js +6 -10
  151. package/lib/dist/installer/targets/claude.js.map +1 -1
  152. package/lib/dist/installer/targets/codex.js +4 -6
  153. package/lib/dist/installer/targets/codex.js.map +1 -1
  154. package/lib/dist/installer/targets/gemini.js +4 -6
  155. package/lib/dist/installer/targets/gemini.js.map +1 -1
  156. package/lib/dist/installer/targets/opencode.d.ts +9 -1
  157. package/lib/dist/installer/targets/opencode.d.ts.map +1 -1
  158. package/lib/dist/installer/targets/opencode.js +91 -40
  159. package/lib/dist/installer/targets/opencode.js.map +1 -1
  160. package/lib/dist/installer/targets/shared.d.ts +14 -0
  161. package/lib/dist/installer/targets/shared.d.ts.map +1 -1
  162. package/lib/dist/installer/targets/shared.js +16 -0
  163. package/lib/dist/installer/targets/shared.js.map +1 -1
  164. package/lib/dist/mcp/daemon.d.ts +60 -1
  165. package/lib/dist/mcp/daemon.d.ts.map +1 -1
  166. package/lib/dist/mcp/daemon.js +221 -8
  167. package/lib/dist/mcp/daemon.js.map +1 -1
  168. package/lib/dist/mcp/dynamic-boundaries.d.ts +41 -0
  169. package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
  170. package/lib/dist/mcp/dynamic-boundaries.js +359 -0
  171. package/lib/dist/mcp/dynamic-boundaries.js.map +1 -0
  172. package/lib/dist/mcp/index.d.ts.map +1 -1
  173. package/lib/dist/mcp/index.js +18 -9
  174. package/lib/dist/mcp/index.js.map +1 -1
  175. package/lib/dist/mcp/ppid-watchdog.d.ts +44 -0
  176. package/lib/dist/mcp/ppid-watchdog.d.ts.map +1 -0
  177. package/lib/dist/mcp/ppid-watchdog.js +27 -0
  178. package/lib/dist/mcp/ppid-watchdog.js.map +1 -0
  179. package/lib/dist/mcp/proxy.d.ts +6 -0
  180. package/lib/dist/mcp/proxy.d.ts.map +1 -1
  181. package/lib/dist/mcp/proxy.js +153 -24
  182. package/lib/dist/mcp/proxy.js.map +1 -1
  183. package/lib/dist/mcp/server-instructions.d.ts +12 -1
  184. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  185. package/lib/dist/mcp/server-instructions.js +43 -16
  186. package/lib/dist/mcp/server-instructions.js.map +1 -1
  187. package/lib/dist/mcp/session.d.ts +2 -0
  188. package/lib/dist/mcp/session.d.ts.map +1 -1
  189. package/lib/dist/mcp/session.js +49 -2
  190. package/lib/dist/mcp/session.js.map +1 -1
  191. package/lib/dist/mcp/stdin-teardown.d.ts +27 -0
  192. package/lib/dist/mcp/stdin-teardown.d.ts.map +1 -0
  193. package/lib/dist/mcp/stdin-teardown.js +49 -0
  194. package/lib/dist/mcp/stdin-teardown.js.map +1 -0
  195. package/lib/dist/mcp/tools.d.ts +71 -0
  196. package/lib/dist/mcp/tools.d.ts.map +1 -1
  197. package/lib/dist/mcp/tools.js +703 -85
  198. package/lib/dist/mcp/tools.js.map +1 -1
  199. package/lib/dist/mcp/transport.d.ts.map +1 -1
  200. package/lib/dist/mcp/transport.js +18 -2
  201. package/lib/dist/mcp/transport.js.map +1 -1
  202. package/lib/dist/resolution/callback-synthesizer.d.ts +3 -3
  203. package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  204. package/lib/dist/resolution/callback-synthesizer.js +549 -21
  205. package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
  206. package/lib/dist/resolution/frameworks/astro.d.ts +9 -0
  207. package/lib/dist/resolution/frameworks/astro.d.ts.map +1 -0
  208. package/lib/dist/resolution/frameworks/astro.js +169 -0
  209. package/lib/dist/resolution/frameworks/astro.js.map +1 -0
  210. package/lib/dist/resolution/frameworks/expo-modules.d.ts.map +1 -1
  211. package/lib/dist/resolution/frameworks/expo-modules.js +6 -1
  212. package/lib/dist/resolution/frameworks/expo-modules.js.map +1 -1
  213. package/lib/dist/resolution/frameworks/index.d.ts +1 -0
  214. package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
  215. package/lib/dist/resolution/frameworks/index.js +5 -1
  216. package/lib/dist/resolution/frameworks/index.js.map +1 -1
  217. package/lib/dist/resolution/frameworks/java.js +6 -1
  218. package/lib/dist/resolution/frameworks/java.js.map +1 -1
  219. package/lib/dist/resolution/frameworks/python.d.ts.map +1 -1
  220. package/lib/dist/resolution/frameworks/python.js +7 -3
  221. package/lib/dist/resolution/frameworks/python.js.map +1 -1
  222. package/lib/dist/resolution/frameworks/react-native.d.ts.map +1 -1
  223. package/lib/dist/resolution/frameworks/react-native.js +53 -3
  224. package/lib/dist/resolution/frameworks/react-native.js.map +1 -1
  225. package/lib/dist/resolution/frameworks/react.d.ts.map +1 -1
  226. package/lib/dist/resolution/frameworks/react.js +15 -3
  227. package/lib/dist/resolution/frameworks/react.js.map +1 -1
  228. package/lib/dist/resolution/frameworks/svelte.js +5 -1
  229. package/lib/dist/resolution/frameworks/svelte.js.map +1 -1
  230. package/lib/dist/resolution/frameworks/vue.js +24 -27
  231. package/lib/dist/resolution/frameworks/vue.js.map +1 -1
  232. package/lib/dist/resolution/import-resolver.d.ts +10 -0
  233. package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
  234. package/lib/dist/resolution/import-resolver.js +564 -2
  235. package/lib/dist/resolution/import-resolver.js.map +1 -1
  236. package/lib/dist/resolution/index.d.ts +80 -0
  237. package/lib/dist/resolution/index.d.ts.map +1 -1
  238. package/lib/dist/resolution/index.js +457 -7
  239. package/lib/dist/resolution/index.js.map +1 -1
  240. package/lib/dist/resolution/name-matcher.d.ts +61 -0
  241. package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
  242. package/lib/dist/resolution/name-matcher.js +590 -14
  243. package/lib/dist/resolution/name-matcher.js.map +1 -1
  244. package/lib/dist/resolution/types.d.ts +27 -3
  245. package/lib/dist/resolution/types.d.ts.map +1 -1
  246. package/lib/dist/resolution/workspace-packages.d.ts +48 -0
  247. package/lib/dist/resolution/workspace-packages.d.ts.map +1 -0
  248. package/lib/dist/resolution/workspace-packages.js +208 -0
  249. package/lib/dist/resolution/workspace-packages.js.map +1 -0
  250. package/lib/dist/search/query-utils.d.ts +17 -1
  251. package/lib/dist/search/query-utils.d.ts.map +1 -1
  252. package/lib/dist/search/query-utils.js +79 -10
  253. package/lib/dist/search/query-utils.js.map +1 -1
  254. package/lib/dist/sync/watcher.d.ts +124 -32
  255. package/lib/dist/sync/watcher.d.ts.map +1 -1
  256. package/lib/dist/sync/watcher.js +326 -111
  257. package/lib/dist/sync/watcher.js.map +1 -1
  258. package/lib/dist/telemetry/index.d.ts +146 -0
  259. package/lib/dist/telemetry/index.d.ts.map +1 -0
  260. package/lib/dist/telemetry/index.js +544 -0
  261. package/lib/dist/telemetry/index.js.map +1 -0
  262. package/lib/dist/types.d.ts +17 -2
  263. package/lib/dist/types.d.ts.map +1 -1
  264. package/lib/dist/types.js +3 -0
  265. package/lib/dist/types.js.map +1 -1
  266. package/lib/dist/upgrade/index.d.ts +132 -0
  267. package/lib/dist/upgrade/index.d.ts.map +1 -0
  268. package/lib/dist/upgrade/index.js +462 -0
  269. package/lib/dist/upgrade/index.js.map +1 -0
  270. package/lib/dist/utils.d.ts +30 -24
  271. package/lib/dist/utils.d.ts.map +1 -1
  272. package/lib/dist/utils.js +64 -48
  273. package/lib/dist/utils.js.map +1 -1
  274. package/lib/node_modules/.package-lock.json +1 -29
  275. package/lib/package.json +1 -2
  276. package/package.json +1 -1
  277. package/lib/node_modules/chokidar/LICENSE +0 -21
  278. package/lib/node_modules/chokidar/README.md +0 -305
  279. package/lib/node_modules/chokidar/esm/handler.d.ts +0 -90
  280. package/lib/node_modules/chokidar/esm/handler.js +0 -629
  281. package/lib/node_modules/chokidar/esm/index.d.ts +0 -215
  282. package/lib/node_modules/chokidar/esm/index.js +0 -798
  283. package/lib/node_modules/chokidar/esm/package.json +0 -1
  284. package/lib/node_modules/chokidar/handler.d.ts +0 -90
  285. package/lib/node_modules/chokidar/handler.js +0 -635
  286. package/lib/node_modules/chokidar/index.d.ts +0 -215
  287. package/lib/node_modules/chokidar/index.js +0 -804
  288. package/lib/node_modules/chokidar/package.json +0 -69
  289. package/lib/node_modules/readdirp/LICENSE +0 -21
  290. package/lib/node_modules/readdirp/README.md +0 -120
  291. package/lib/node_modules/readdirp/esm/index.d.ts +0 -108
  292. package/lib/node_modules/readdirp/esm/index.js +0 -257
  293. package/lib/node_modules/readdirp/esm/package.json +0 -1
  294. package/lib/node_modules/readdirp/index.d.ts +0 -108
  295. package/lib/node_modules/readdirp/index.js +0 -263
  296. package/lib/node_modules/readdirp/package.json +0 -70
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rExtractor = void 0;
4
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ /**
6
+ * R language extractor (#828).
7
+ *
8
+ * R has no declaration syntax — everything is an expression, so every symbol
9
+ * the graph needs arrives through the visitNode hook rather than node-type
10
+ * lists:
11
+ *
12
+ * - functions: `name <- function(x) …` / `name = function(x) …` parse as
13
+ * binary_operator(lhs: identifier, rhs: function_definition).
14
+ * (`function(x) … -> name` right-assign of a function does
15
+ * not survive the grammar's precedence — the `->` binds inside
16
+ * the body — and the style is rare; deliberate gap.)
17
+ * - variables: top-level assignments only (locals would bloat the graph);
18
+ * ALL_CAPS / dotted-caps names extract as constants.
19
+ * - imports: `library(x)` / `require(x)` / `requireNamespace("x")` are
20
+ * ordinary calls; `source("file.R")` references another file.
21
+ * All are claimed so no noise call-edge to `library` remains
22
+ * (same pattern as Lua's `require`).
23
+ * - classes: S4 `setClass("Name", …)`, R5 `setRefClass("Name", …)`, and
24
+ * R6 `R6Class("Name", public = list(m = function() …))` are
25
+ * calls too; the class node is named by the first string
26
+ * argument and `name = function` entries in its list() args
27
+ * extract as methods inside the class scope.
28
+ * - S4 generics: `setGeneric("name", …)` / `setMethod("name", "Class", fn)`
29
+ * extract as functions named by the first string argument.
30
+ *
31
+ * Calls themselves go through the generic call extraction (`call` nodes with a
32
+ * `function` field). Namespaced `pkg::fn(…)` keeps its qualified text;
33
+ * `obj$method(…)` extracts under its full text (resolution of `$`-dispatch is
34
+ * a known gap — R's S3 dispatch is runtime by design).
35
+ */
36
+ const ASSIGN_LEFT = new Set(['<-', '<<-', '=']);
37
+ const ASSIGN_RIGHT = new Set(['->', '->>']);
38
+ const IMPORT_FNS = new Set(['library', 'require', 'requireNamespace', 'loadNamespace']);
39
+ const CLASS_FNS = new Set(['setClass', 'setRefClass', 'R6Class', 'ggproto']);
40
+ const GENERIC_FNS = new Set(['setGeneric', 'setMethod']);
41
+ /** ALL_CAPS or DOTTED.CAPS top-level assignment → constant. */
42
+ const CONSTANT_NAME = /^[A-Z][A-Z0-9._]*$/;
43
+ /** The call's callee name when it is a bare identifier or `pkg::fn` (→ `fn`). */
44
+ function calleeName(call, source) {
45
+ const fn = (0, tree_sitter_helpers_1.getChildByField)(call, 'function');
46
+ if (!fn)
47
+ return null;
48
+ if (fn.type === 'identifier')
49
+ return (0, tree_sitter_helpers_1.getNodeText)(fn, source);
50
+ if (fn.type === 'namespace_operator') {
51
+ const rhs = (0, tree_sitter_helpers_1.getChildByField)(fn, 'rhs');
52
+ if (rhs)
53
+ return (0, tree_sitter_helpers_1.getNodeText)(rhs, source);
54
+ }
55
+ return null;
56
+ }
57
+ /** First positional argument's value node of a call. */
58
+ function firstArgValue(call) {
59
+ const args = (0, tree_sitter_helpers_1.getChildByField)(call, 'arguments');
60
+ if (!args)
61
+ return null;
62
+ for (let i = 0; i < args.namedChildCount; i++) {
63
+ const arg = args.namedChild(i);
64
+ if (arg?.type !== 'argument')
65
+ continue;
66
+ return (0, tree_sitter_helpers_1.getChildByField)(arg, 'value');
67
+ }
68
+ return null;
69
+ }
70
+ /** Text of a string node's content, or an identifier's text. */
71
+ function literalOrIdentifier(node, source) {
72
+ if (!node)
73
+ return null;
74
+ if (node.type === 'identifier')
75
+ return (0, tree_sitter_helpers_1.getNodeText)(node, source);
76
+ if (node.type === 'string') {
77
+ for (let i = 0; i < node.namedChildCount; i++) {
78
+ const c = node.namedChild(i);
79
+ if (c?.type === 'string_content')
80
+ return (0, tree_sitter_helpers_1.getNodeText)(c, source);
81
+ }
82
+ return ''; // empty string literal
83
+ }
84
+ return null;
85
+ }
86
+ /** Emit one `name = function(…)` argument entry as a method in the current scope. */
87
+ function emitMethodArg(entry, ctx) {
88
+ const entryName = (0, tree_sitter_helpers_1.getChildByField)(entry, 'name');
89
+ const entryValue = (0, tree_sitter_helpers_1.getChildByField)(entry, 'value');
90
+ if (!entryName || entryValue?.type !== 'function_definition')
91
+ return;
92
+ const params = (0, tree_sitter_helpers_1.getChildByField)(entryValue, 'parameters');
93
+ const method = ctx.createNode('method', (0, tree_sitter_helpers_1.getNodeText)(entryName, ctx.source), entry, {
94
+ signature: params ? (0, tree_sitter_helpers_1.getNodeText)(params, ctx.source) : undefined,
95
+ });
96
+ const body = (0, tree_sitter_helpers_1.getChildByField)(entryValue, 'body');
97
+ if (method && body) {
98
+ ctx.pushScope(method.id);
99
+ ctx.visitNode(body); // hook-aware walk — see the function-assignment note below
100
+ ctx.popScope();
101
+ }
102
+ }
103
+ /**
104
+ * Extract a class call's methods. Two shapes:
105
+ * - inside list() arguments — R5 `methods = list(deposit = function(x) …)`,
106
+ * R6 `public = list(…)` / `private = list(…)`;
107
+ * - DIRECT named function arguments — ggproto's style:
108
+ * `ggproto("GeomPoint", Geom, draw_panel = function(…) …)`.
109
+ * Also records the parent class as an `extends` reference: ggproto's second
110
+ * positional identifier argument, R6's `inherit = Parent`, S4's
111
+ * `contains = "Parent"`.
112
+ */
113
+ function extractClassMembers(classCall, classId, ctx) {
114
+ const args = (0, tree_sitter_helpers_1.getChildByField)(classCall, 'arguments');
115
+ if (!args)
116
+ return;
117
+ let positional = 0;
118
+ for (let i = 0; i < args.namedChildCount; i++) {
119
+ const arg = args.namedChild(i);
120
+ if (arg?.type !== 'argument')
121
+ continue;
122
+ const argName = (0, tree_sitter_helpers_1.getChildByField)(arg, 'name');
123
+ const value = (0, tree_sitter_helpers_1.getChildByField)(arg, 'value');
124
+ if (!argName) {
125
+ positional++;
126
+ // ggproto("Name", Parent, …) — the 2nd positional identifier is the parent.
127
+ if (positional === 2 && value?.type === 'identifier') {
128
+ ctx.addUnresolvedReference({
129
+ fromNodeId: classId,
130
+ referenceName: (0, tree_sitter_helpers_1.getNodeText)(value, ctx.source),
131
+ referenceKind: 'extends',
132
+ line: value.startPosition.row + 1,
133
+ column: value.startPosition.column,
134
+ });
135
+ }
136
+ continue;
137
+ }
138
+ const argNameText = (0, tree_sitter_helpers_1.getNodeText)(argName, ctx.source);
139
+ // R6 `inherit = Parent` / S4 `contains = "Parent"`.
140
+ if ((argNameText === 'inherit' || argNameText === 'contains') && value) {
141
+ const parent = literalOrIdentifier(value, ctx.source);
142
+ if (parent) {
143
+ ctx.addUnresolvedReference({
144
+ fromNodeId: classId,
145
+ referenceName: parent,
146
+ referenceKind: 'extends',
147
+ line: value.startPosition.row + 1,
148
+ column: value.startPosition.column,
149
+ });
150
+ }
151
+ continue;
152
+ }
153
+ // Direct named function argument (ggproto methods).
154
+ if (value?.type === 'function_definition') {
155
+ emitMethodArg(arg, ctx);
156
+ continue;
157
+ }
158
+ // list(…) of named function arguments (R5/R6 methods).
159
+ if (value?.type === 'call' && calleeName(value, ctx.source) === 'list') {
160
+ const listArgs = (0, tree_sitter_helpers_1.getChildByField)(value, 'arguments');
161
+ if (!listArgs)
162
+ continue;
163
+ for (let j = 0; j < listArgs.namedChildCount; j++) {
164
+ const entry = listArgs.namedChild(j);
165
+ if (entry?.type === 'argument')
166
+ emitMethodArg(entry, ctx);
167
+ }
168
+ }
169
+ }
170
+ }
171
+ exports.rExtractor = {
172
+ functionTypes: [], // named functions are assignments — handled in visitNode
173
+ classTypes: [],
174
+ methodTypes: [],
175
+ interfaceTypes: [],
176
+ structTypes: [],
177
+ enumTypes: [],
178
+ typeAliasTypes: [],
179
+ importTypes: [], // library()/require()/source() are calls — handled in visitNode
180
+ callTypes: ['call'],
181
+ variableTypes: [], // top-level assignments — handled in visitNode
182
+ nameField: 'name',
183
+ bodyField: 'body',
184
+ paramsField: 'parameters',
185
+ visitNode: (node, ctx) => {
186
+ const source = ctx.source;
187
+ if (node.type === 'call') {
188
+ const fname = calleeName(node, source);
189
+ if (!fname)
190
+ return false;
191
+ // library(dplyr) / require(stats) / requireNamespace("jsonlite") —
192
+ // and source("helpers.R"), which references another file in the project.
193
+ if (IMPORT_FNS.has(fname) || fname === 'source') {
194
+ const mod = literalOrIdentifier(firstArgValue(node), source);
195
+ if (!mod)
196
+ return true; // dynamic argument — nothing to record, still not a call edge
197
+ const imp = ctx.createNode('import', mod, node, {
198
+ signature: (0, tree_sitter_helpers_1.getNodeText)(node, source).trim().slice(0, 100),
199
+ });
200
+ if (imp && ctx.nodeStack.length > 0) {
201
+ const parentId = ctx.nodeStack[ctx.nodeStack.length - 1];
202
+ if (parentId) {
203
+ ctx.addUnresolvedReference({
204
+ fromNodeId: parentId,
205
+ referenceName: mod,
206
+ referenceKind: 'imports',
207
+ line: node.startPosition.row + 1,
208
+ column: node.startPosition.column,
209
+ });
210
+ }
211
+ }
212
+ return true;
213
+ }
214
+ // setClass("Patient", …) / setRefClass("Account", …) / R6Class("Stack", …)
215
+ if (CLASS_FNS.has(fname)) {
216
+ const name = literalOrIdentifier(firstArgValue(node), source);
217
+ if (!name)
218
+ return false;
219
+ const cls = ctx.createNode('class', name, node, {});
220
+ if (cls) {
221
+ ctx.pushScope(cls.id);
222
+ extractClassMembers(node, cls.id, ctx);
223
+ ctx.popScope();
224
+ }
225
+ return true;
226
+ }
227
+ // setGeneric("describe", …) / setMethod("describe", "Patient", function(obj) …)
228
+ if (GENERIC_FNS.has(fname)) {
229
+ const name = literalOrIdentifier(firstArgValue(node), source);
230
+ if (!name)
231
+ return false;
232
+ // The implementing function_definition, when present (setMethod always,
233
+ // setGeneric usually via the def= argument).
234
+ const args = (0, tree_sitter_helpers_1.getChildByField)(node, 'arguments');
235
+ let impl = null;
236
+ if (args) {
237
+ for (let i = 0; i < args.namedChildCount; i++) {
238
+ const v = args.namedChild(i)?.type === 'argument'
239
+ ? (0, tree_sitter_helpers_1.getChildByField)(args.namedChild(i), 'value') : null;
240
+ if (v?.type === 'function_definition') {
241
+ impl = v;
242
+ break;
243
+ }
244
+ }
245
+ }
246
+ const params = impl ? (0, tree_sitter_helpers_1.getChildByField)(impl, 'parameters') : null;
247
+ const fn = ctx.createNode('function', name, node, {
248
+ signature: params ? (0, tree_sitter_helpers_1.getNodeText)(params, source) : undefined,
249
+ });
250
+ const body = impl ? (0, tree_sitter_helpers_1.getChildByField)(impl, 'body') : null;
251
+ if (fn && body) {
252
+ ctx.pushScope(fn.id);
253
+ ctx.visitNode(body); // hook-aware walk — see the function-assignment note below
254
+ ctx.popScope();
255
+ }
256
+ return true;
257
+ }
258
+ return false; // ordinary call — generic extraction records the edge
259
+ }
260
+ if (node.type === 'binary_operator') {
261
+ const op = node.childForFieldName('operator')?.text;
262
+ if (!op)
263
+ return false;
264
+ const lhs = (0, tree_sitter_helpers_1.getChildByField)(node, 'lhs');
265
+ const rhs = (0, tree_sitter_helpers_1.getChildByField)(node, 'rhs');
266
+ // name <- function(…) / name = function(…) (any scope — nested
267
+ // functions extract inside their enclosing function's scope). The body
268
+ // is walked through ctx.visitNode, NOT ctx.visitFunctionBody: the body
269
+ // walker doesn't consult this hook, and in R every nested definition is
270
+ // an assignment expression that only this hook can recognize. visitNode
271
+ // dispatches calls and the hook alike, with the function on the scope
272
+ // stack so attribution is right.
273
+ if (ASSIGN_LEFT.has(op) && lhs?.type === 'identifier' && rhs?.type === 'function_definition') {
274
+ const params = (0, tree_sitter_helpers_1.getChildByField)(rhs, 'parameters');
275
+ const fn = ctx.createNode('function', (0, tree_sitter_helpers_1.getNodeText)(lhs, source), node, {
276
+ signature: params ? (0, tree_sitter_helpers_1.getNodeText)(params, source) : undefined,
277
+ });
278
+ const body = (0, tree_sitter_helpers_1.getChildByField)(rhs, 'body');
279
+ if (fn && body) {
280
+ ctx.pushScope(fn.id);
281
+ ctx.visitNode(body);
282
+ ctx.popScope();
283
+ }
284
+ return true;
285
+ }
286
+ // Top-level value assignments → variable/constant. Locals are skipped
287
+ // deliberately (graph bloat); the initializer is still visited so its
288
+ // calls and nested definitions extract.
289
+ const topLevel = node.parent?.type === 'program';
290
+ if (topLevel && ASSIGN_LEFT.has(op) && lhs?.type === 'identifier' && rhs) {
291
+ // `Account <- setRefClass("Account", …)` is the CLASS definition idiom
292
+ // (same for R6Class / setClass / setGeneric) — the call hook makes the
293
+ // class/function node; a twin variable node would just be noise.
294
+ const rhsCallee = rhs.type === 'call' ? calleeName(rhs, source) : null;
295
+ if (!rhsCallee || (!CLASS_FNS.has(rhsCallee) && !GENERIC_FNS.has(rhsCallee))) {
296
+ const name = (0, tree_sitter_helpers_1.getNodeText)(lhs, source);
297
+ ctx.createNode(CONSTANT_NAME.test(name) ? 'constant' : 'variable', name, node, {});
298
+ }
299
+ ctx.visitNode(rhs);
300
+ return true;
301
+ }
302
+ // value -> name / value ->> name (right assign)
303
+ if (topLevel && ASSIGN_RIGHT.has(op) && rhs?.type === 'identifier' && lhs) {
304
+ const name = (0, tree_sitter_helpers_1.getNodeText)(rhs, source);
305
+ ctx.createNode(CONSTANT_NAME.test(name) ? 'constant' : 'variable', name, node, {});
306
+ ctx.visitNode(lhs);
307
+ return true;
308
+ }
309
+ return false;
310
+ }
311
+ return false;
312
+ },
313
+ };
314
+ //# sourceMappingURL=r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r.js","sourceRoot":"","sources":["../../../src/extraction/languages/r.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/ruby.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,iBA0G3B,CAAC"}
1
+ {"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/ruby.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,iBA8I3B,CAAC"}
@@ -17,6 +17,41 @@ exports.rubyExtractor = {
17
17
  bodyField: 'body',
18
18
  paramsField: 'parameters',
19
19
  visitNode: (node, ctx) => {
20
+ // Ruby mixins: `include Mod`, `extend Mod`, `prepend Mod[, Other]` — the
21
+ // primary composition mechanism (ActiveSupport concerns, Comparable, …).
22
+ // These parse as a bare `call` to `include`/`extend`/`prepend` with the
23
+ // module(s) as constant arguments, so without special handling they'd be
24
+ // mis-extracted as a call to a method named "include" and the module would
25
+ // record no dependent — even though it's mixed into a class. Emit an
26
+ // `implements` edge (enclosing class/module → mixed-in module), so editing a
27
+ // concern surfaces every class that includes it.
28
+ if (node.type === 'call' && !node.childForFieldName('receiver')) {
29
+ const method = node.childForFieldName('method');
30
+ const mname = method?.text;
31
+ if (mname === 'include' || mname === 'extend' || mname === 'prepend') {
32
+ const parentId = ctx.nodeStack.length > 0 ? ctx.nodeStack[ctx.nodeStack.length - 1] : undefined;
33
+ const args = node.childForFieldName('arguments')
34
+ ?? node.namedChildren.find((c) => c.type === 'argument_list');
35
+ if (parentId && args) {
36
+ for (let i = 0; i < args.namedChildCount; i++) {
37
+ const arg = args.namedChild(i);
38
+ // `Mod` is `constant`, `Foo::Bar` is `scope_resolution`. Skip
39
+ // `extend self` / dynamic args (`include foo()`).
40
+ if (arg && (arg.type === 'constant' || arg.type === 'scope_resolution')) {
41
+ ctx.addUnresolvedReference({
42
+ fromNodeId: parentId,
43
+ referenceName: (0, tree_sitter_helpers_1.getNodeText)(arg, ctx.source),
44
+ referenceKind: 'implements',
45
+ filePath: ctx.filePath,
46
+ line: node.startPosition.row + 1,
47
+ column: node.startPosition.column,
48
+ });
49
+ }
50
+ }
51
+ return true; // handled — don't also extract as a call to "include"
52
+ }
53
+ }
54
+ }
20
55
  if (node.type !== 'module')
21
56
  return false;
22
57
  const nameNode = node.childForFieldName('name');
@@ -1 +1 @@
1
- {"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../src/extraction/languages/ruby.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../src/extraction/languages/ruby.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/rust.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,iBA+G3B,CAAC"}
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/rust.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgC9D,eAAO,MAAM,aAAa,EAAE,iBAoH3B,CAAC"}
@@ -2,10 +2,42 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rustExtractor = void 0;
4
4
  const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ /**
6
+ * A Rust function's declared return type, normalized to the bare type a chained
7
+ * `Foo::new().bar()` could be called on (the #645/#608 mechanism). Reads the
8
+ * `return_type` field: `-> Self` yields the marker `self` (resolved to the impl's
9
+ * own type at resolution time, like PHP's `self`/`static`); a concrete `-> Foo` /
10
+ * `-> FooBuilder` its name; a reference (`&Foo`) is unwrapped; generics are reduced
11
+ * to the base type (`Vec<Foo>` → `Vec`); primitives / unit / tuple yield undefined.
12
+ * Stdlib types that aren't in the graph simply fail the later existence check.
13
+ */
14
+ function extractRustReturnType(node, source) {
15
+ let rt = (0, tree_sitter_helpers_1.getChildByField)(node, 'return_type');
16
+ if (!rt)
17
+ return undefined;
18
+ if (rt.type === 'reference_type') {
19
+ rt =
20
+ rt.namedChildren.find((c) => c.type === 'type_identifier' ||
21
+ c.type === 'scoped_type_identifier' ||
22
+ c.type === 'generic_type') ?? rt;
23
+ }
24
+ if (!rt || rt.type === 'primitive_type' || rt.type === 'unit_type' || rt.type === 'tuple_type') {
25
+ return undefined;
26
+ }
27
+ const text = (0, tree_sitter_helpers_1.getNodeText)(rt, source).trim().replace(/<[^>]*>/g, '');
28
+ const last = text.split('::').pop()?.trim();
29
+ if (!last || !/^[A-Za-z_]\w*$/.test(last))
30
+ return undefined;
31
+ return last === 'Self' ? 'self' : last;
32
+ }
5
33
  exports.rustExtractor = {
6
- functionTypes: ['function_item'],
34
+ // `function_signature_item` is a trait method DECLARATION (`fn render(&self);`,
35
+ // no body). Extracting it makes a trait's method set first-class, which
36
+ // impl-navigation and trait-dispatch synthesis need (a struct's method set is
37
+ // matched against the trait's).
38
+ functionTypes: ['function_item', 'function_signature_item'],
7
39
  classTypes: [], // Rust has impl blocks
8
- methodTypes: ['function_item'], // Methods are functions in impl blocks
40
+ methodTypes: ['function_item', 'function_signature_item'],
9
41
  interfaceTypes: ['trait_item'],
10
42
  structTypes: ['struct_item'],
11
43
  enumTypes: ['enum_item'],
@@ -19,6 +51,7 @@ exports.rustExtractor = {
19
51
  bodyField: 'body',
20
52
  paramsField: 'parameters',
21
53
  returnField: 'return_type',
54
+ getReturnType: extractRustReturnType,
22
55
  getSignature: (node, source) => {
23
56
  const params = (0, tree_sitter_helpers_1.getChildByField)(node, 'parameters');
24
57
  const returnType = (0, tree_sitter_helpers_1.getChildByField)(node, 'return_type');
@@ -1 +1 @@
1
- {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/extraction/languages/rust.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/extraction/languages/rust.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scala.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/scala.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAuB9D,eAAO,MAAM,cAAc,EAAE,iBAqH5B,CAAC"}
1
+ {"version":3,"file":"scala.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/scala.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA+E9D,eAAO,MAAM,cAAc,EAAE,iBAuH5B,CAAC"}
@@ -11,6 +11,63 @@ function getValVarName(node, source) {
11
11
  const identChild = patternNode.namedChildren.find((c) => c.type === 'identifier');
12
12
  return identChild ? (0, tree_sitter_helpers_1.getNodeText)(identChild, source) : null;
13
13
  }
14
+ // Capitalized Scala primitives/ubiquitous aliases that shouldn't create refs.
15
+ const SCALA_BUILTIN_TYPES = new Set([
16
+ 'Int', 'Long', 'Short', 'Byte', 'Float', 'Double', 'Boolean', 'Char', 'Unit',
17
+ 'String', 'Any', 'AnyRef', 'AnyVal', 'Nothing', 'Null',
18
+ ]);
19
+ /**
20
+ * Emit `references` edges for every type identifier in a Scala type subtree
21
+ * (a `val`/`var` type annotation), unwrapping `generic_type` etc. Mirrors the
22
+ * generic type-annotation extraction the core extractor runs for method
23
+ * parameter/return types, but Scala `val`s are created here in visitNode so
24
+ * their type is walked here too. A trait used only as a field type (the common
25
+ * `implicit val x: Monoid[Int]` instance pattern) thus gains a dependent.
26
+ */
27
+ function emitScalaTypeRefs(typeNode, fromId, ctx, source) {
28
+ if (typeNode.type === 'type_identifier') {
29
+ const name = source.substring(typeNode.startIndex, typeNode.endIndex);
30
+ if (name && !SCALA_BUILTIN_TYPES.has(name)) {
31
+ ctx.addUnresolvedReference({
32
+ fromNodeId: fromId,
33
+ referenceName: name,
34
+ referenceKind: 'references',
35
+ line: typeNode.startPosition.row + 1,
36
+ column: typeNode.startPosition.column,
37
+ });
38
+ }
39
+ return;
40
+ }
41
+ for (let i = 0; i < typeNode.namedChildCount; i++) {
42
+ const child = typeNode.namedChild(i);
43
+ if (child)
44
+ emitScalaTypeRefs(child, fromId, ctx, source);
45
+ }
46
+ }
47
+ /**
48
+ * Capture a Scala method's declared return type as a bare type name, for the
49
+ * chained static-factory / fluent call mechanism (#750). `def create(): Bar`
50
+ * yields `Bar`; a generic `List[Bar]` yields its base `List` (the method is on
51
+ * the container, not the element); a qualified `pkg.Bar` yields `Bar`. A
52
+ * singleton self-type (`this.type`, the fluent-builder idiom) is left undefined
53
+ * — its type can't be recovered here, so the chain falls through rather than
54
+ * inferring a wrong receiver.
55
+ */
56
+ function extractScalaReturnType(node, source) {
57
+ const rt = node.childForFieldName('return_type');
58
+ if (!rt)
59
+ return undefined;
60
+ const raw = (0, tree_sitter_helpers_1.getNodeText)(rt, source).trim();
61
+ if (raw.startsWith('this.'))
62
+ return undefined; // `this.type` singleton — unhandled
63
+ const base = raw
64
+ .replace(/\[[^\]]*\]/g, '') // strip generic args: List[Bar] → List
65
+ .replace(/\s+/g, '');
66
+ const last = base.split('.').pop(); // qualified pkg.Bar → Bar
67
+ if (!last || !/^[A-Za-z_]\w*$/.test(last))
68
+ return undefined;
69
+ return last;
70
+ }
14
71
  function extractVisibility(node) {
15
72
  for (let i = 0; i < node.namedChildCount; i++) {
16
73
  const child = node.namedChild(i);
@@ -45,6 +102,7 @@ exports.scalaExtractor = {
45
102
  bodyField: 'body',
46
103
  paramsField: 'parameters',
47
104
  returnField: 'return_type',
105
+ getReturnType: extractScalaReturnType,
48
106
  interfaceKind: 'trait',
49
107
  classifyClassNode: (node) => {
50
108
  if (node.type === 'trait_definition')
@@ -91,7 +149,9 @@ exports.scalaExtractor = {
91
149
  const sig = typeNode
92
150
  ? `${t === 'val_definition' ? 'val' : 'var'} ${name}: ${(0, tree_sitter_helpers_1.getNodeText)(typeNode, ctx.source)}`
93
151
  : undefined;
94
- ctx.createNode(kind, name, node, { signature: sig, visibility: extractVisibility(node) });
152
+ const created = ctx.createNode(kind, name, node, { signature: sig, visibility: extractVisibility(node) });
153
+ if (created && typeNode)
154
+ emitScalaTypeRefs(typeNode, created.id, ctx, ctx.source);
95
155
  return true;
96
156
  }
97
157
  // enum_case_definitions wraps simple_enum_case / full_enum_case children
@@ -1 +1 @@
1
- {"version":3,"file":"scala.js","sourceRoot":"","sources":["../../../src/extraction/languages/scala.ts"],"names":[],"mappings":";;;AACA,gEAAqD;AAGrD,SAAS,aAAa,CAAC,IAAgB,EAAE,MAAc;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAA,iCAAW,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC9F,OAAO,UAAU,CAAC,CAAC,CAAC,IAAA,iCAAW,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgB;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,WAAW,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEY,QAAA,cAAc,GAAsB;IAC/C,oFAAoF;IACpF,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;IACzE,WAAW,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IAC5D,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,CAAC,iBAAiB,CAAC;IAC9B,eAAe,EAAE,EAAE,EAAS,+DAA+D;IAC3F,cAAc,EAAE,CAAC,iBAAiB,CAAC;IACnC,WAAW,EAAE,CAAC,oBAAoB,CAAC;IACnC,SAAS,EAAE,CAAC,iBAAiB,CAAC;IAC9B,aAAa,EAAE,EAAE,EAAW,iEAAiE;IAC7F,UAAU,EAAE,EAAE;IACd,mBAAmB,EAAE,EAAE;IAEvB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,OAAO;IAEtB,iBAAiB,EAAE,CAAC,IAAgB,EAAE,EAAE;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO,OAAO,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,EAAE,CAAC,IAAgB,EAAE,MAAc,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,iCAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,IAAI,UAAU;YAAE,GAAG,IAAI,IAAI,GAAG,IAAA,iCAAW,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,GAAG,IAAI,SAAS,CAAC;IAC1B,CAAC;IAED,aAAa,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAE5D,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;IAEpB,QAAQ,EAAE,CAAC,IAAgB,EAAE,EAAE;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;QAChF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,EAAE,CAAC,IAAgB,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAEpB,+DAA+D;QAC/D,IAAI,CAAC,KAAK,gBAAgB,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YAExB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACxC,CAAC,GAAG,EAAE;oBACJ,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;oBAC5D,OAAO,UAAU,IAAI,IAAI,IAAI,CAC3B,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;wBAC1D,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ;wBAC/D,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,CAC3D,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,QAAQ;gBAClB,CAAC,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,IAAA,iCAAW,EAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;gBAC3F,CAAC,CAAC,SAAS,CAAC;YAEd,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yEAAyE;QACzE,IAAI,CAAC,KAAK,uBAAuB,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBACjD,IAAI,QAAQ;wBAAE,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,IAAA,iCAAW,EAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,KAAK,sBAAsB,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,KAAK;wBAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,aAAa,EAAE,CAAC,IAAgB,EAAE,MAAc,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,IAAA,iCAAW,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ;YAAE,OAAO,EAAE,UAAU,EAAE,IAAA,iCAAW,EAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAC1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACxE,OAAO,EAAE,UAAU,EAAE,IAAA,iCAAW,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"scala.js","sourceRoot":"","sources":["../../../src/extraction/languages/scala.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/swift.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,cAAc,EAAE,iBA8E5B,CAAC"}
1
+ {"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/swift.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAwC9D,eAAO,MAAM,cAAc,EAAE,iBA+F5B,CAAC"}