@optave/codegraph 3.6.0 → 3.8.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 (186) hide show
  1. package/README.md +32 -16
  2. package/dist/ast-analysis/engine.d.ts.map +1 -1
  3. package/dist/ast-analysis/engine.js +158 -1
  4. package/dist/ast-analysis/engine.js.map +1 -1
  5. package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
  6. package/dist/ast-analysis/rules/javascript.js +0 -1
  7. package/dist/ast-analysis/rules/javascript.js.map +1 -1
  8. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -1
  9. package/dist/ast-analysis/visitors/ast-store-visitor.js +2 -75
  10. package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
  11. package/dist/cli/commands/ast.js +2 -2
  12. package/dist/cli/commands/ast.js.map +1 -1
  13. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
  14. package/dist/domain/graph/builder/pipeline.js +128 -6
  15. package/dist/domain/graph/builder/pipeline.js.map +1 -1
  16. package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
  17. package/dist/domain/graph/builder/stages/build-edges.js +101 -1
  18. package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
  19. package/dist/domain/graph/builder/stages/collect-files.d.ts.map +1 -1
  20. package/dist/domain/graph/builder/stages/collect-files.js +17 -5
  21. package/dist/domain/graph/builder/stages/collect-files.js.map +1 -1
  22. package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
  23. package/dist/domain/graph/builder/stages/detect-changes.js +98 -50
  24. package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
  25. package/dist/domain/graph/builder/stages/finalize.d.ts.map +1 -1
  26. package/dist/domain/graph/builder/stages/finalize.js +32 -5
  27. package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
  28. package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
  29. package/dist/domain/graph/builder/stages/insert-nodes.js +20 -7
  30. package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
  31. package/dist/domain/parser.d.ts +1 -1
  32. package/dist/domain/parser.d.ts.map +1 -1
  33. package/dist/domain/parser.js +129 -3
  34. package/dist/domain/parser.js.map +1 -1
  35. package/dist/extractors/clojure.d.ts +12 -0
  36. package/dist/extractors/clojure.d.ts.map +1 -0
  37. package/dist/extractors/clojure.js +245 -0
  38. package/dist/extractors/clojure.js.map +1 -0
  39. package/dist/extractors/cuda.d.ts +11 -0
  40. package/dist/extractors/cuda.d.ts.map +1 -0
  41. package/dist/extractors/cuda.js +302 -0
  42. package/dist/extractors/cuda.js.map +1 -0
  43. package/dist/extractors/dart.d.ts +6 -0
  44. package/dist/extractors/dart.d.ts.map +1 -0
  45. package/dist/extractors/dart.js +277 -0
  46. package/dist/extractors/dart.js.map +1 -0
  47. package/dist/extractors/elixir.d.ts +9 -0
  48. package/dist/extractors/elixir.d.ts.map +1 -0
  49. package/dist/extractors/elixir.js +223 -0
  50. package/dist/extractors/elixir.js.map +1 -0
  51. package/dist/extractors/erlang.d.ts +14 -0
  52. package/dist/extractors/erlang.d.ts.map +1 -0
  53. package/dist/extractors/erlang.js +239 -0
  54. package/dist/extractors/erlang.js.map +1 -0
  55. package/dist/extractors/fsharp.d.ts +13 -0
  56. package/dist/extractors/fsharp.d.ts.map +1 -0
  57. package/dist/extractors/fsharp.js +218 -0
  58. package/dist/extractors/fsharp.js.map +1 -0
  59. package/dist/extractors/gleam.d.ts +14 -0
  60. package/dist/extractors/gleam.d.ts.map +1 -0
  61. package/dist/extractors/gleam.js +229 -0
  62. package/dist/extractors/gleam.js.map +1 -0
  63. package/dist/extractors/groovy.d.ts +10 -0
  64. package/dist/extractors/groovy.d.ts.map +1 -0
  65. package/dist/extractors/groovy.js +304 -0
  66. package/dist/extractors/groovy.js.map +1 -0
  67. package/dist/extractors/haskell.d.ts +8 -0
  68. package/dist/extractors/haskell.d.ts.map +1 -0
  69. package/dist/extractors/haskell.js +217 -0
  70. package/dist/extractors/haskell.js.map +1 -0
  71. package/dist/extractors/index.d.ts +17 -0
  72. package/dist/extractors/index.d.ts.map +1 -1
  73. package/dist/extractors/index.js +17 -0
  74. package/dist/extractors/index.js.map +1 -1
  75. package/dist/extractors/julia.d.ts +16 -0
  76. package/dist/extractors/julia.d.ts.map +1 -0
  77. package/dist/extractors/julia.js +287 -0
  78. package/dist/extractors/julia.js.map +1 -0
  79. package/dist/extractors/lua.d.ts +6 -0
  80. package/dist/extractors/lua.d.ts.map +1 -0
  81. package/dist/extractors/lua.js +162 -0
  82. package/dist/extractors/lua.js.map +1 -0
  83. package/dist/extractors/objc.d.ts +9 -0
  84. package/dist/extractors/objc.d.ts.map +1 -0
  85. package/dist/extractors/objc.js +406 -0
  86. package/dist/extractors/objc.js.map +1 -0
  87. package/dist/extractors/ocaml.d.ts +6 -0
  88. package/dist/extractors/ocaml.d.ts.map +1 -0
  89. package/dist/extractors/ocaml.js +310 -0
  90. package/dist/extractors/ocaml.js.map +1 -0
  91. package/dist/extractors/r.d.ts +13 -0
  92. package/dist/extractors/r.d.ts.map +1 -0
  93. package/dist/extractors/r.js +251 -0
  94. package/dist/extractors/r.js.map +1 -0
  95. package/dist/extractors/solidity.d.ts +9 -0
  96. package/dist/extractors/solidity.d.ts.map +1 -0
  97. package/dist/extractors/solidity.js +374 -0
  98. package/dist/extractors/solidity.js.map +1 -0
  99. package/dist/extractors/verilog.d.ts +9 -0
  100. package/dist/extractors/verilog.d.ts.map +1 -0
  101. package/dist/extractors/verilog.js +286 -0
  102. package/dist/extractors/verilog.js.map +1 -0
  103. package/dist/extractors/zig.d.ts +9 -0
  104. package/dist/extractors/zig.d.ts.map +1 -0
  105. package/dist/extractors/zig.js +276 -0
  106. package/dist/extractors/zig.js.map +1 -0
  107. package/dist/features/ast.d.ts.map +1 -1
  108. package/dist/features/ast.js +1 -2
  109. package/dist/features/ast.js.map +1 -1
  110. package/dist/features/cfg.d.ts +1 -1
  111. package/dist/features/cfg.d.ts.map +1 -1
  112. package/dist/features/cfg.js +6 -51
  113. package/dist/features/cfg.js.map +1 -1
  114. package/dist/graph/algorithms/bfs.d.ts +2 -0
  115. package/dist/graph/algorithms/bfs.d.ts.map +1 -1
  116. package/dist/graph/algorithms/bfs.js +27 -0
  117. package/dist/graph/algorithms/bfs.js.map +1 -1
  118. package/dist/graph/algorithms/centrality.d.ts +2 -0
  119. package/dist/graph/algorithms/centrality.d.ts.map +1 -1
  120. package/dist/graph/algorithms/centrality.js +28 -0
  121. package/dist/graph/algorithms/centrality.js.map +1 -1
  122. package/dist/graph/algorithms/louvain.d.ts +3 -4
  123. package/dist/graph/algorithms/louvain.d.ts.map +1 -1
  124. package/dist/graph/algorithms/louvain.js +29 -0
  125. package/dist/graph/algorithms/louvain.js.map +1 -1
  126. package/dist/graph/algorithms/shortest-path.d.ts +2 -0
  127. package/dist/graph/algorithms/shortest-path.d.ts.map +1 -1
  128. package/dist/graph/algorithms/shortest-path.js +18 -1
  129. package/dist/graph/algorithms/shortest-path.js.map +1 -1
  130. package/dist/types.d.ts +122 -2
  131. package/dist/types.d.ts.map +1 -1
  132. package/grammars/tree-sitter-clojure.wasm +0 -0
  133. package/grammars/tree-sitter-cuda.wasm +0 -0
  134. package/grammars/tree-sitter-dart.wasm +0 -0
  135. package/grammars/tree-sitter-elixir.wasm +0 -0
  136. package/grammars/tree-sitter-erlang.wasm +0 -0
  137. package/grammars/tree-sitter-fsharp.wasm +0 -0
  138. package/grammars/tree-sitter-gleam.wasm +0 -0
  139. package/grammars/tree-sitter-groovy.wasm +0 -0
  140. package/grammars/tree-sitter-haskell.wasm +0 -0
  141. package/grammars/tree-sitter-julia.wasm +0 -0
  142. package/grammars/tree-sitter-lua.wasm +0 -0
  143. package/grammars/tree-sitter-objc.wasm +0 -0
  144. package/grammars/tree-sitter-ocaml.wasm +0 -0
  145. package/grammars/tree-sitter-ocaml_interface.wasm +0 -0
  146. package/grammars/tree-sitter-r.wasm +0 -0
  147. package/grammars/tree-sitter-solidity.wasm +0 -0
  148. package/grammars/tree-sitter-verilog.wasm +0 -0
  149. package/grammars/tree-sitter-zig.wasm +0 -0
  150. package/package.json +24 -7
  151. package/src/ast-analysis/engine.ts +183 -1
  152. package/src/ast-analysis/rules/javascript.ts +0 -1
  153. package/src/ast-analysis/visitors/ast-store-visitor.ts +2 -75
  154. package/src/cli/commands/ast.ts +2 -2
  155. package/src/domain/graph/builder/pipeline.ts +142 -6
  156. package/src/domain/graph/builder/stages/build-edges.ts +158 -1
  157. package/src/domain/graph/builder/stages/collect-files.ts +18 -7
  158. package/src/domain/graph/builder/stages/detect-changes.ts +109 -55
  159. package/src/domain/graph/builder/stages/finalize.ts +39 -9
  160. package/src/domain/graph/builder/stages/insert-nodes.ts +18 -7
  161. package/src/domain/parser.ts +161 -1
  162. package/src/extractors/clojure.ts +273 -0
  163. package/src/extractors/cuda.ts +316 -0
  164. package/src/extractors/dart.ts +304 -0
  165. package/src/extractors/elixir.ts +251 -0
  166. package/src/extractors/erlang.ts +252 -0
  167. package/src/extractors/fsharp.ts +253 -0
  168. package/src/extractors/gleam.ts +246 -0
  169. package/src/extractors/groovy.ts +332 -0
  170. package/src/extractors/haskell.ts +235 -0
  171. package/src/extractors/index.ts +17 -0
  172. package/src/extractors/julia.ts +318 -0
  173. package/src/extractors/lua.ts +169 -0
  174. package/src/extractors/objc.ts +431 -0
  175. package/src/extractors/ocaml.ts +337 -0
  176. package/src/extractors/r.ts +253 -0
  177. package/src/extractors/solidity.ts +398 -0
  178. package/src/extractors/verilog.ts +315 -0
  179. package/src/extractors/zig.ts +294 -0
  180. package/src/features/ast.ts +1 -2
  181. package/src/features/cfg.ts +6 -51
  182. package/src/graph/algorithms/bfs.ts +34 -0
  183. package/src/graph/algorithms/centrality.ts +30 -0
  184. package/src/graph/algorithms/louvain.ts +31 -4
  185. package/src/graph/algorithms/shortest-path.ts +20 -1
  186. package/src/types.ts +123 -2
@@ -0,0 +1,310 @@
1
+ import { findChild, nodeEndLine } from './helpers.js';
2
+ /**
3
+ * Extract symbols from OCaml files.
4
+ */
5
+ export function extractOCamlSymbols(tree, _filePath) {
6
+ const ctx = {
7
+ definitions: [],
8
+ calls: [],
9
+ imports: [],
10
+ classes: [],
11
+ exports: [],
12
+ typeMap: new Map(),
13
+ };
14
+ walkOCamlNode(tree.rootNode, ctx);
15
+ return ctx;
16
+ }
17
+ function walkOCamlNode(node, ctx) {
18
+ switch (node.type) {
19
+ case 'value_definition':
20
+ handleOCamlValueDef(node, ctx);
21
+ break;
22
+ case 'let_binding':
23
+ // Only handle top-level let bindings not inside value_definition
24
+ if (node.parent?.type !== 'value_definition') {
25
+ handleOCamlLetBinding(node, ctx);
26
+ }
27
+ break;
28
+ case 'module_definition':
29
+ handleOCamlModuleDef(node, ctx);
30
+ break;
31
+ case 'type_definition':
32
+ handleOCamlTypeDef(node, ctx);
33
+ break;
34
+ case 'class_definition':
35
+ handleOCamlClassDef(node, ctx);
36
+ break;
37
+ case 'open_module':
38
+ handleOCamlOpen(node, ctx);
39
+ break;
40
+ case 'application_expression':
41
+ handleOCamlApplication(node, ctx);
42
+ break;
43
+ // Shared node types present in both .ml and .mli files
44
+ case 'value_specification':
45
+ handleOCamlValueSpec(node, ctx);
46
+ break;
47
+ case 'external':
48
+ handleOCamlExternal(node, ctx);
49
+ break;
50
+ case 'module_type_definition':
51
+ handleOCamlModuleTypeDef(node, ctx);
52
+ break;
53
+ case 'exception_definition':
54
+ handleOCamlExceptionDef(node, ctx);
55
+ break;
56
+ }
57
+ for (let i = 0; i < node.childCount; i++) {
58
+ const child = node.child(i);
59
+ if (child)
60
+ walkOCamlNode(child, ctx);
61
+ }
62
+ }
63
+ function handleOCamlValueDef(node, ctx) {
64
+ // value_definition contains one or more let_bindings
65
+ for (let i = 0; i < node.childCount; i++) {
66
+ const child = node.child(i);
67
+ if (child && child.type === 'let_binding') {
68
+ handleOCamlLetBinding(child, ctx);
69
+ }
70
+ }
71
+ }
72
+ function handleOCamlLetBinding(node, ctx) {
73
+ // let_binding has a pattern (the name) and optionally a body
74
+ const pattern = node.childForFieldName('pattern');
75
+ if (!pattern)
76
+ return;
77
+ // Check if this is a function (has parameter children)
78
+ const hasParams = hasOCamlParams(node);
79
+ const name = extractOCamlPatternName(pattern);
80
+ if (!name)
81
+ return;
82
+ if (hasParams) {
83
+ const params = extractOCamlParams(node);
84
+ ctx.definitions.push({
85
+ name,
86
+ kind: 'function',
87
+ line: node.startPosition.row + 1,
88
+ endLine: nodeEndLine(node),
89
+ children: params.length > 0 ? params : undefined,
90
+ });
91
+ }
92
+ else {
93
+ ctx.definitions.push({
94
+ name,
95
+ kind: 'variable',
96
+ line: node.startPosition.row + 1,
97
+ endLine: nodeEndLine(node),
98
+ });
99
+ }
100
+ }
101
+ function extractOCamlPatternName(pattern) {
102
+ if (pattern.type === 'value_name' || pattern.type === 'identifier') {
103
+ return pattern.text;
104
+ }
105
+ // Operator definitions like `let (+) a b = ...`
106
+ if (pattern.type === 'parenthesized_operator') {
107
+ return pattern.text;
108
+ }
109
+ const nameNode = findChild(pattern, 'value_name') || findChild(pattern, 'identifier');
110
+ return nameNode ? nameNode.text : null;
111
+ }
112
+ function hasOCamlParams(letBinding) {
113
+ for (let i = 0; i < letBinding.childCount; i++) {
114
+ const child = letBinding.child(i);
115
+ if (!child)
116
+ continue;
117
+ if (child.type === 'parameter' || child.type === 'value_pattern')
118
+ return true;
119
+ }
120
+ return false;
121
+ }
122
+ function extractOCamlParams(letBinding) {
123
+ const params = [];
124
+ for (let i = 0; i < letBinding.childCount; i++) {
125
+ const child = letBinding.child(i);
126
+ if (!child)
127
+ continue;
128
+ if (child.type === 'parameter' || child.type === 'value_pattern') {
129
+ const name = extractOCamlPatternName(child);
130
+ if (name) {
131
+ params.push({ name, kind: 'parameter', line: child.startPosition.row + 1 });
132
+ }
133
+ }
134
+ }
135
+ return params;
136
+ }
137
+ function handleOCamlModuleDef(node, ctx) {
138
+ const binding = findChild(node, 'module_binding');
139
+ if (!binding)
140
+ return;
141
+ const nameNode = binding.childForFieldName('name') ||
142
+ findChild(binding, 'module_name') ||
143
+ findChild(binding, 'identifier');
144
+ if (!nameNode)
145
+ return;
146
+ ctx.definitions.push({
147
+ name: nameNode.text,
148
+ kind: 'module',
149
+ line: node.startPosition.row + 1,
150
+ endLine: nodeEndLine(node),
151
+ });
152
+ }
153
+ function handleOCamlTypeDef(node, ctx) {
154
+ // type_definition contains one or more type_bindings
155
+ for (let i = 0; i < node.childCount; i++) {
156
+ const child = node.child(i);
157
+ if (!child || child.type !== 'type_binding')
158
+ continue;
159
+ const nameNode = child.childForFieldName('name') ||
160
+ findChild(child, 'type_constructor') ||
161
+ findChild(child, 'identifier');
162
+ if (!nameNode)
163
+ continue;
164
+ const children = [];
165
+ extractOCamlTypeConstructors(child, children);
166
+ ctx.definitions.push({
167
+ name: nameNode.text,
168
+ kind: 'type',
169
+ line: child.startPosition.row + 1,
170
+ endLine: nodeEndLine(child),
171
+ children: children.length > 0 ? children : undefined,
172
+ });
173
+ }
174
+ }
175
+ function extractOCamlTypeConstructors(typeBinding, children) {
176
+ for (let i = 0; i < typeBinding.childCount; i++) {
177
+ const child = typeBinding.child(i);
178
+ if (!child)
179
+ continue;
180
+ if (child.type === 'constructor_declaration') {
181
+ const nameNode = findChild(child, 'constructor_name') || findChild(child, 'identifier');
182
+ if (nameNode) {
183
+ children.push({ name: nameNode.text, kind: 'property', line: child.startPosition.row + 1 });
184
+ }
185
+ }
186
+ }
187
+ }
188
+ function handleOCamlClassDef(node, ctx) {
189
+ const binding = findChild(node, 'class_binding');
190
+ if (!binding)
191
+ return;
192
+ const nameNode = binding.childForFieldName('name') || findChild(binding, 'identifier');
193
+ if (!nameNode)
194
+ return;
195
+ ctx.definitions.push({
196
+ name: nameNode.text,
197
+ kind: 'class',
198
+ line: node.startPosition.row + 1,
199
+ endLine: nodeEndLine(node),
200
+ });
201
+ }
202
+ function handleOCamlOpen(node, ctx) {
203
+ // open_module contains a module_path
204
+ let moduleName = null;
205
+ for (let i = 0; i < node.childCount; i++) {
206
+ const child = node.child(i);
207
+ if (!child)
208
+ continue;
209
+ if (child.type === 'module_path' ||
210
+ child.type === 'module_name' ||
211
+ child.type === 'extended_module_path' ||
212
+ child.type === 'constructor_name') {
213
+ moduleName = child.text;
214
+ break;
215
+ }
216
+ }
217
+ if (!moduleName)
218
+ return;
219
+ ctx.imports.push({
220
+ source: moduleName,
221
+ names: [moduleName.split('.').pop() || moduleName],
222
+ line: node.startPosition.row + 1,
223
+ });
224
+ }
225
+ function hasDescendantType(node, type) {
226
+ if (node.type === type)
227
+ return true;
228
+ for (let i = 0; i < node.childCount; i++) {
229
+ const child = node.child(i);
230
+ if (child && hasDescendantType(child, type))
231
+ return true;
232
+ }
233
+ return false;
234
+ }
235
+ function handleOCamlValueSpec(node, ctx) {
236
+ const nameNode = findChild(node, 'value_name') || findChild(node, 'parenthesized_operator');
237
+ if (!nameNode)
238
+ return;
239
+ // Check if the type contains `->` (function_type node)
240
+ const typeNode = node.childForFieldName('type');
241
+ const isFunction = typeNode ? hasDescendantType(typeNode, 'function_type') : false;
242
+ ctx.definitions.push({
243
+ name: nameNode.text,
244
+ kind: isFunction ? 'function' : 'variable',
245
+ line: node.startPosition.row + 1,
246
+ endLine: nodeEndLine(node),
247
+ });
248
+ }
249
+ function handleOCamlExternal(node, ctx) {
250
+ const nameNode = findChild(node, 'value_name') || findChild(node, 'parenthesized_operator');
251
+ if (!nameNode)
252
+ return;
253
+ ctx.definitions.push({
254
+ name: nameNode.text,
255
+ kind: 'function',
256
+ line: node.startPosition.row + 1,
257
+ endLine: nodeEndLine(node),
258
+ });
259
+ }
260
+ function handleOCamlModuleTypeDef(node, ctx) {
261
+ const nameNode = findChild(node, 'module_type_name');
262
+ if (!nameNode)
263
+ return;
264
+ ctx.definitions.push({
265
+ name: nameNode.text,
266
+ kind: 'interface',
267
+ line: node.startPosition.row + 1,
268
+ endLine: nodeEndLine(node),
269
+ });
270
+ }
271
+ function handleOCamlExceptionDef(node, ctx) {
272
+ // Standard: `exception Foo of bar` — name is inside constructor_declaration
273
+ const ctorDecl = findChild(node, 'constructor_declaration');
274
+ const nameNode = ctorDecl
275
+ ? findChild(ctorDecl, 'constructor_name')
276
+ : findChild(node, 'constructor_name'); // fallback for `exception Foo = Bar` (alias)
277
+ if (!nameNode)
278
+ return;
279
+ ctx.definitions.push({
280
+ name: nameNode.text,
281
+ kind: 'type',
282
+ line: node.startPosition.row + 1,
283
+ endLine: nodeEndLine(node),
284
+ });
285
+ }
286
+ function handleOCamlApplication(node, ctx) {
287
+ // application_expression: first child is the function, rest are arguments
288
+ const funcNode = node.child(0);
289
+ if (!funcNode)
290
+ return;
291
+ if (funcNode.type === 'value_path' ||
292
+ funcNode.type === 'value_name' ||
293
+ funcNode.type === 'identifier') {
294
+ ctx.calls.push({ name: funcNode.text, line: node.startPosition.row + 1 });
295
+ }
296
+ else if (funcNode.type === 'field_get_expression') {
297
+ // Module.function calls
298
+ const field = funcNode.childForFieldName('field') ||
299
+ findChild(funcNode, 'value_name') ||
300
+ findChild(funcNode, 'identifier');
301
+ const record = funcNode.child(0);
302
+ if (field) {
303
+ const call = { name: field.text, line: node.startPosition.row + 1 };
304
+ if (record && record !== field)
305
+ call.receiver = record.text;
306
+ ctx.calls.push(call);
307
+ }
308
+ }
309
+ }
310
+ //# sourceMappingURL=ocaml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocaml.js","sourceRoot":"","sources":["../../src/extractors/ocaml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ExtractorOutput, TreeSitterTree } from '../types.js';
2
+ /**
3
+ * Extract symbols from R files.
4
+ *
5
+ * tree-sitter-r grammar (r-lib/tree-sitter-r) notes:
6
+ * - Assignments: binary_operator with `<-` or `=` operator
7
+ * - Functions: function_definition as RHS of assignment
8
+ * - Calls: call node with function/arguments fields
9
+ * - Imports: library() and require() calls
10
+ * - S4 classes: setClass(), setRefClass()
11
+ */
12
+ export declare function extractRSymbols(tree: TreeSitterTree, _filePath: string): ExtractorOutput;
13
+ //# sourceMappingURL=r.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r.d.ts","sourceRoot":"","sources":["../../src/extractors/r.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAkC,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnG;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAYxF"}
@@ -0,0 +1,251 @@
1
+ import { findChild, nodeEndLine } from './helpers.js';
2
+ /**
3
+ * Extract symbols from R files.
4
+ *
5
+ * tree-sitter-r grammar (r-lib/tree-sitter-r) notes:
6
+ * - Assignments: binary_operator with `<-` or `=` operator
7
+ * - Functions: function_definition as RHS of assignment
8
+ * - Calls: call node with function/arguments fields
9
+ * - Imports: library() and require() calls
10
+ * - S4 classes: setClass(), setRefClass()
11
+ */
12
+ export function extractRSymbols(tree, _filePath) {
13
+ const ctx = {
14
+ definitions: [],
15
+ calls: [],
16
+ imports: [],
17
+ classes: [],
18
+ exports: [],
19
+ typeMap: new Map(),
20
+ };
21
+ walkRNode(tree.rootNode, ctx);
22
+ return ctx;
23
+ }
24
+ function walkRNode(node, ctx) {
25
+ switch (node.type) {
26
+ case 'binary_operator':
27
+ handleBinaryOp(node, ctx);
28
+ break;
29
+ case 'call':
30
+ handleCall(node, ctx);
31
+ break;
32
+ }
33
+ for (let i = 0; i < node.childCount; i++) {
34
+ const child = node.child(i);
35
+ if (child)
36
+ walkRNode(child, ctx);
37
+ }
38
+ }
39
+ function handleBinaryOp(node, ctx) {
40
+ // binary_operator: child[0]=LHS, child[1]=operator (<- or =), child[2]=RHS
41
+ if (node.childCount < 3)
42
+ return;
43
+ const lhs = node.child(0);
44
+ const op = node.child(1);
45
+ const rhs = node.child(2);
46
+ if (!lhs || !op || !rhs)
47
+ return;
48
+ if (op.text !== '<-' && op.text !== '=' && op.text !== '<<-')
49
+ return;
50
+ if (lhs.type !== 'identifier')
51
+ return;
52
+ if (rhs.type === 'function_definition') {
53
+ const params = extractRParams(rhs);
54
+ ctx.definitions.push({
55
+ name: lhs.text,
56
+ kind: 'function',
57
+ line: node.startPosition.row + 1,
58
+ endLine: nodeEndLine(node),
59
+ children: params.length > 0 ? params : undefined,
60
+ });
61
+ }
62
+ else {
63
+ // Variable assignment — only record top-level
64
+ if (node.parent?.type === 'program') {
65
+ ctx.definitions.push({
66
+ name: lhs.text,
67
+ kind: 'variable',
68
+ line: node.startPosition.row + 1,
69
+ endLine: nodeEndLine(node),
70
+ });
71
+ }
72
+ }
73
+ }
74
+ function extractRParams(funcDef) {
75
+ const params = [];
76
+ const paramsNode = findChild(funcDef, 'parameters');
77
+ if (!paramsNode)
78
+ return params;
79
+ for (let i = 0; i < paramsNode.childCount; i++) {
80
+ const child = paramsNode.child(i);
81
+ if (!child)
82
+ continue;
83
+ if (child.type === 'parameter') {
84
+ // parameter node has name and possibly default value
85
+ const nameNode = child.childForFieldName('name') || findChild(child, 'identifier');
86
+ if (nameNode) {
87
+ params.push({ name: nameNode.text, kind: 'parameter', line: child.startPosition.row + 1 });
88
+ }
89
+ else if (child.text && child.text !== ',' && child.text !== '(' && child.text !== ')') {
90
+ // Some grammars have the param as plain text
91
+ params.push({ name: child.text, kind: 'parameter', line: child.startPosition.row + 1 });
92
+ }
93
+ }
94
+ if (child.type === 'identifier') {
95
+ params.push({ name: child.text, kind: 'parameter', line: child.startPosition.row + 1 });
96
+ }
97
+ }
98
+ return params;
99
+ }
100
+ function handleCall(node, ctx) {
101
+ // call: child[0]=function, then arguments
102
+ const funcNode = node.child(0);
103
+ if (!funcNode)
104
+ return;
105
+ const funcName = funcNode.text;
106
+ // library() and require() are imports
107
+ if (funcName === 'library' || funcName === 'require') {
108
+ handleLibraryCall(node, ctx);
109
+ return;
110
+ }
111
+ // source() is a file import
112
+ if (funcName === 'source') {
113
+ handleSourceCall(node, ctx);
114
+ return;
115
+ }
116
+ // setClass / setRefClass for S4
117
+ if (funcName === 'setClass' || funcName === 'setRefClass') {
118
+ handleSetClass(node, ctx);
119
+ return;
120
+ }
121
+ if (funcName === 'setGeneric' || funcName === 'setMethod') {
122
+ handleSetGeneric(node, ctx);
123
+ return;
124
+ }
125
+ // Regular call
126
+ if (funcNode.type === 'identifier') {
127
+ ctx.calls.push({ name: funcName, line: node.startPosition.row + 1 });
128
+ }
129
+ else if (funcNode.type === 'namespace_operator') {
130
+ // pkg::func
131
+ const parts = funcName.split('::');
132
+ if (parts.length >= 2) {
133
+ ctx.calls.push({
134
+ name: parts[parts.length - 1],
135
+ receiver: parts.slice(0, -1).join('::'),
136
+ line: node.startPosition.row + 1,
137
+ });
138
+ }
139
+ }
140
+ }
141
+ function handleLibraryCall(node, ctx) {
142
+ // Find the package name in arguments
143
+ for (let i = 0; i < node.childCount; i++) {
144
+ const child = node.child(i);
145
+ if (!child)
146
+ continue;
147
+ if (child.type === 'arguments') {
148
+ for (let j = 0; j < child.childCount; j++) {
149
+ const arg = child.child(j);
150
+ if (!arg)
151
+ continue;
152
+ if (arg.type === 'identifier') {
153
+ ctx.imports.push({
154
+ source: arg.text,
155
+ names: [arg.text],
156
+ line: node.startPosition.row + 1,
157
+ });
158
+ return;
159
+ }
160
+ if (arg.type === 'string' || arg.type === 'string_content') {
161
+ const text = arg.text.replace(/^["']|["']$/g, '');
162
+ ctx.imports.push({
163
+ source: text,
164
+ names: [text],
165
+ line: node.startPosition.row + 1,
166
+ });
167
+ return;
168
+ }
169
+ // Argument might be wrapped
170
+ if (arg.type === 'argument') {
171
+ const id = findChild(arg, 'identifier') || findChild(arg, 'string');
172
+ if (id) {
173
+ const text = id.text.replace(/^["']|["']$/g, '');
174
+ ctx.imports.push({
175
+ source: text,
176
+ names: [text],
177
+ line: node.startPosition.row + 1,
178
+ });
179
+ return;
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ function handleSourceCall(node, ctx) {
187
+ for (let i = 0; i < node.childCount; i++) {
188
+ const child = node.child(i);
189
+ if (!child || child.type !== 'arguments')
190
+ continue;
191
+ for (let j = 0; j < child.childCount; j++) {
192
+ const arg = child.child(j);
193
+ if (!arg)
194
+ continue;
195
+ if (arg.type === 'string') {
196
+ const text = arg.text.replace(/^["']|["']$/g, '');
197
+ ctx.imports.push({
198
+ source: text,
199
+ names: ['source'],
200
+ line: node.startPosition.row + 1,
201
+ });
202
+ return;
203
+ }
204
+ }
205
+ }
206
+ }
207
+ function handleSetClass(node, ctx) {
208
+ for (let i = 0; i < node.childCount; i++) {
209
+ const child = node.child(i);
210
+ if (!child || child.type !== 'arguments')
211
+ continue;
212
+ for (let j = 0; j < child.childCount; j++) {
213
+ const arg = child.child(j);
214
+ if (!arg)
215
+ continue;
216
+ if (arg.type === 'string') {
217
+ const name = arg.text.replace(/^["']|["']$/g, '');
218
+ ctx.definitions.push({
219
+ name,
220
+ kind: 'class',
221
+ line: node.startPosition.row + 1,
222
+ endLine: nodeEndLine(node),
223
+ });
224
+ return;
225
+ }
226
+ }
227
+ }
228
+ }
229
+ function handleSetGeneric(node, ctx) {
230
+ for (let i = 0; i < node.childCount; i++) {
231
+ const child = node.child(i);
232
+ if (!child || child.type !== 'arguments')
233
+ continue;
234
+ for (let j = 0; j < child.childCount; j++) {
235
+ const arg = child.child(j);
236
+ if (!arg)
237
+ continue;
238
+ if (arg.type === 'string') {
239
+ const name = arg.text.replace(/^["']|["']$/g, '');
240
+ ctx.definitions.push({
241
+ name,
242
+ kind: 'function',
243
+ line: node.startPosition.row + 1,
244
+ endLine: nodeEndLine(node),
245
+ });
246
+ return;
247
+ }
248
+ }
249
+ }
250
+ }
251
+ //# sourceMappingURL=r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r.js","sourceRoot":"","sources":["../../src/extractors/r.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,IAAoB,EAAE,SAAiB;IACrE,MAAM,GAAG,GAAoB;QAC3B,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,IAAI,GAAG,EAAE;KACnB,CAAC;IAEF,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAoB,EAAE,GAAoB;IAC3D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,iBAAiB;YACpB,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,MAAM;YACT,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtB,MAAM;IACV,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK;YAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAoB,EAAE,GAAoB;IAChE,2EAA2E;IAC3E,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;QAAE,OAAO;IAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,OAAO;IAChC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IACrE,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO;IAEtC,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAChC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACjD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,8CAA8C;QAC9C,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;gBAChC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAuB;IAC7C,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,qDAAqD;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YACnF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxF,6CAA6C;gBAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,IAAoB,EAAE,GAAoB;IAC5D,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE/B,sCAAsC;IACtC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrD,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,4BAA4B;IAC5B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,gCAAgC;IAChC,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC1D,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC1D,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,eAAe;IACf,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClD,YAAY;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE;gBAC9B,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAoB,EAAE,GAAoB;IACnE,qCAAqC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,GAAG;oBAAE,SAAS;gBACnB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,MAAM,EAAE,GAAG,CAAC,IAAI;wBAChB,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;qBACjC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBAClD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;qBACjC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,4BAA4B;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC5B,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACpE,IAAI,EAAE,EAAE,CAAC;wBACP,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;wBACjD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;4BACf,MAAM,EAAE,IAAI;4BACZ,KAAK,EAAE,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;yBACjC,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB,EAAE,GAAoB;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAClD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;oBACf,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;oBACjB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;iBACjC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAoB,EAAE,GAAoB;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAClD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;oBACnB,IAAI;oBACJ,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;oBAChC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;iBAC3B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB,EAAE,GAAoB;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAClD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;oBACnB,IAAI;oBACJ,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;oBAChC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC;iBAC3B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ExtractorOutput, TreeSitterTree } from '../types.js';
2
+ /**
3
+ * Extract symbols from Solidity files.
4
+ *
5
+ * Solidity's tree-sitter grammar covers contracts, interfaces, libraries,
6
+ * structs, enums, events, errors, functions, modifiers, and import paths.
7
+ */
8
+ export declare function extractSoliditySymbols(tree: TreeSitterTree, _filePath: string): ExtractorOutput;
9
+ //# sourceMappingURL=solidity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solidity.d.ts","sourceRoot":"","sources":["../../src/extractors/solidity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAGf,cAAc,EACf,MAAM,aAAa,CAAC;AASrB;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAY/F"}