@jafreck/lore 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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +405 -0
  3. package/dist/cli.d.ts +19 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +345 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/index.d.ts +22 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +16 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/indexer/call-graph.d.ts +39 -0
  12. package/dist/indexer/call-graph.d.ts.map +1 -0
  13. package/dist/indexer/call-graph.js +193 -0
  14. package/dist/indexer/call-graph.js.map +1 -0
  15. package/dist/indexer/complexity.d.ts +9 -0
  16. package/dist/indexer/complexity.d.ts.map +1 -0
  17. package/dist/indexer/complexity.js +66 -0
  18. package/dist/indexer/complexity.js.map +1 -0
  19. package/dist/indexer/config-parser.d.ts +16 -0
  20. package/dist/indexer/config-parser.d.ts.map +1 -0
  21. package/dist/indexer/config-parser.js +261 -0
  22. package/dist/indexer/config-parser.js.map +1 -0
  23. package/dist/indexer/coverage.d.ts +13 -0
  24. package/dist/indexer/coverage.d.ts.map +1 -0
  25. package/dist/indexer/coverage.js +84 -0
  26. package/dist/indexer/coverage.js.map +1 -0
  27. package/dist/indexer/db.d.ts +38 -0
  28. package/dist/indexer/db.d.ts.map +1 -0
  29. package/dist/indexer/db.js +275 -0
  30. package/dist/indexer/db.js.map +1 -0
  31. package/dist/indexer/embedder.d.ts +70 -0
  32. package/dist/indexer/embedder.d.ts.map +1 -0
  33. package/dist/indexer/embedder.js +186 -0
  34. package/dist/indexer/embedder.js.map +1 -0
  35. package/dist/indexer/ensure-python-deps.d.ts +22 -0
  36. package/dist/indexer/ensure-python-deps.d.ts.map +1 -0
  37. package/dist/indexer/ensure-python-deps.js +47 -0
  38. package/dist/indexer/ensure-python-deps.js.map +1 -0
  39. package/dist/indexer/extractors/bash.d.ts +12 -0
  40. package/dist/indexer/extractors/bash.d.ts.map +1 -0
  41. package/dist/indexer/extractors/bash.js +57 -0
  42. package/dist/indexer/extractors/bash.js.map +1 -0
  43. package/dist/indexer/extractors/c.d.ts +12 -0
  44. package/dist/indexer/extractors/c.d.ts.map +1 -0
  45. package/dist/indexer/extractors/c.js +106 -0
  46. package/dist/indexer/extractors/c.js.map +1 -0
  47. package/dist/indexer/extractors/cpp.d.ts +12 -0
  48. package/dist/indexer/extractors/cpp.d.ts.map +1 -0
  49. package/dist/indexer/extractors/cpp.js +84 -0
  50. package/dist/indexer/extractors/cpp.js.map +1 -0
  51. package/dist/indexer/extractors/csharp.d.ts +12 -0
  52. package/dist/indexer/extractors/csharp.d.ts.map +1 -0
  53. package/dist/indexer/extractors/csharp.js +79 -0
  54. package/dist/indexer/extractors/csharp.js.map +1 -0
  55. package/dist/indexer/extractors/dart.d.ts +12 -0
  56. package/dist/indexer/extractors/dart.d.ts.map +1 -0
  57. package/dist/indexer/extractors/dart.js +80 -0
  58. package/dist/indexer/extractors/dart.js.map +1 -0
  59. package/dist/indexer/extractors/elixir.d.ts +12 -0
  60. package/dist/indexer/extractors/elixir.d.ts.map +1 -0
  61. package/dist/indexer/extractors/elixir.js +87 -0
  62. package/dist/indexer/extractors/elixir.js.map +1 -0
  63. package/dist/indexer/extractors/elm.d.ts +12 -0
  64. package/dist/indexer/extractors/elm.d.ts.map +1 -0
  65. package/dist/indexer/extractors/elm.js +87 -0
  66. package/dist/indexer/extractors/elm.js.map +1 -0
  67. package/dist/indexer/extractors/go.d.ts +12 -0
  68. package/dist/indexer/extractors/go.d.ts.map +1 -0
  69. package/dist/indexer/extractors/go.js +158 -0
  70. package/dist/indexer/extractors/go.js.map +1 -0
  71. package/dist/indexer/extractors/haskell.d.ts +12 -0
  72. package/dist/indexer/extractors/haskell.d.ts.map +1 -0
  73. package/dist/indexer/extractors/haskell.js +104 -0
  74. package/dist/indexer/extractors/haskell.js.map +1 -0
  75. package/dist/indexer/extractors/java.d.ts +12 -0
  76. package/dist/indexer/extractors/java.d.ts.map +1 -0
  77. package/dist/indexer/extractors/java.js +68 -0
  78. package/dist/indexer/extractors/java.js.map +1 -0
  79. package/dist/indexer/extractors/javascript.d.ts +13 -0
  80. package/dist/indexer/extractors/javascript.d.ts.map +1 -0
  81. package/dist/indexer/extractors/javascript.js +180 -0
  82. package/dist/indexer/extractors/javascript.js.map +1 -0
  83. package/dist/indexer/extractors/julia.d.ts +12 -0
  84. package/dist/indexer/extractors/julia.d.ts.map +1 -0
  85. package/dist/indexer/extractors/julia.js +94 -0
  86. package/dist/indexer/extractors/julia.js.map +1 -0
  87. package/dist/indexer/extractors/kotlin.d.ts +12 -0
  88. package/dist/indexer/extractors/kotlin.d.ts.map +1 -0
  89. package/dist/indexer/extractors/kotlin.js +71 -0
  90. package/dist/indexer/extractors/kotlin.js.map +1 -0
  91. package/dist/indexer/extractors/lua.d.ts +12 -0
  92. package/dist/indexer/extractors/lua.d.ts.map +1 -0
  93. package/dist/indexer/extractors/lua.js +68 -0
  94. package/dist/indexer/extractors/lua.js.map +1 -0
  95. package/dist/indexer/extractors/objc.d.ts +12 -0
  96. package/dist/indexer/extractors/objc.d.ts.map +1 -0
  97. package/dist/indexer/extractors/objc.js +129 -0
  98. package/dist/indexer/extractors/objc.js.map +1 -0
  99. package/dist/indexer/extractors/ocaml.d.ts +12 -0
  100. package/dist/indexer/extractors/ocaml.d.ts.map +1 -0
  101. package/dist/indexer/extractors/ocaml.js +92 -0
  102. package/dist/indexer/extractors/ocaml.js.map +1 -0
  103. package/dist/indexer/extractors/php.d.ts +12 -0
  104. package/dist/indexer/extractors/php.d.ts.map +1 -0
  105. package/dist/indexer/extractors/php.js +99 -0
  106. package/dist/indexer/extractors/php.js.map +1 -0
  107. package/dist/indexer/extractors/python.d.ts +12 -0
  108. package/dist/indexer/extractors/python.d.ts.map +1 -0
  109. package/dist/indexer/extractors/python.js +129 -0
  110. package/dist/indexer/extractors/python.js.map +1 -0
  111. package/dist/indexer/extractors/ruby.d.ts +12 -0
  112. package/dist/indexer/extractors/ruby.d.ts.map +1 -0
  113. package/dist/indexer/extractors/ruby.js +100 -0
  114. package/dist/indexer/extractors/ruby.js.map +1 -0
  115. package/dist/indexer/extractors/rust.d.ts +12 -0
  116. package/dist/indexer/extractors/rust.d.ts.map +1 -0
  117. package/dist/indexer/extractors/rust.js +82 -0
  118. package/dist/indexer/extractors/rust.js.map +1 -0
  119. package/dist/indexer/extractors/scala.d.ts +12 -0
  120. package/dist/indexer/extractors/scala.d.ts.map +1 -0
  121. package/dist/indexer/extractors/scala.js +91 -0
  122. package/dist/indexer/extractors/scala.js.map +1 -0
  123. package/dist/indexer/extractors/swift.d.ts +12 -0
  124. package/dist/indexer/extractors/swift.d.ts.map +1 -0
  125. package/dist/indexer/extractors/swift.js +90 -0
  126. package/dist/indexer/extractors/swift.js.map +1 -0
  127. package/dist/indexer/extractors/types.d.ts +118 -0
  128. package/dist/indexer/extractors/types.d.ts.map +1 -0
  129. package/dist/indexer/extractors/types.js +43 -0
  130. package/dist/indexer/extractors/types.js.map +1 -0
  131. package/dist/indexer/extractors/typescript.d.ts +14 -0
  132. package/dist/indexer/extractors/typescript.d.ts.map +1 -0
  133. package/dist/indexer/extractors/typescript.js +172 -0
  134. package/dist/indexer/extractors/typescript.js.map +1 -0
  135. package/dist/indexer/extractors/zig.d.ts +12 -0
  136. package/dist/indexer/extractors/zig.d.ts.map +1 -0
  137. package/dist/indexer/extractors/zig.js +95 -0
  138. package/dist/indexer/extractors/zig.js.map +1 -0
  139. package/dist/indexer/git-history.d.ts +23 -0
  140. package/dist/indexer/git-history.d.ts.map +1 -0
  141. package/dist/indexer/git-history.js +144 -0
  142. package/dist/indexer/git-history.js.map +1 -0
  143. package/dist/indexer/git-hooks.d.ts +19 -0
  144. package/dist/indexer/git-hooks.d.ts.map +1 -0
  145. package/dist/indexer/git-hooks.js +74 -0
  146. package/dist/indexer/git-hooks.js.map +1 -0
  147. package/dist/indexer/index.d.ts +83 -0
  148. package/dist/indexer/index.d.ts.map +1 -0
  149. package/dist/indexer/index.js +431 -0
  150. package/dist/indexer/index.js.map +1 -0
  151. package/dist/indexer/parser.d.ts +30 -0
  152. package/dist/indexer/parser.d.ts.map +1 -0
  153. package/dist/indexer/parser.js +114 -0
  154. package/dist/indexer/parser.js.map +1 -0
  155. package/dist/indexer/poller.d.ts +50 -0
  156. package/dist/indexer/poller.d.ts.map +1 -0
  157. package/dist/indexer/poller.js +140 -0
  158. package/dist/indexer/poller.js.map +1 -0
  159. package/dist/indexer/resolver.d.ts +52 -0
  160. package/dist/indexer/resolver.d.ts.map +1 -0
  161. package/dist/indexer/resolver.js +271 -0
  162. package/dist/indexer/resolver.js.map +1 -0
  163. package/dist/indexer/test-mapper.d.ts +6 -0
  164. package/dist/indexer/test-mapper.d.ts.map +1 -0
  165. package/dist/indexer/test-mapper.js +48 -0
  166. package/dist/indexer/test-mapper.js.map +1 -0
  167. package/dist/indexer/walker.d.ts +51 -0
  168. package/dist/indexer/walker.d.ts.map +1 -0
  169. package/dist/indexer/walker.js +100 -0
  170. package/dist/indexer/walker.js.map +1 -0
  171. package/dist/indexer/watcher.d.ts +51 -0
  172. package/dist/indexer/watcher.d.ts.map +1 -0
  173. package/dist/indexer/watcher.js +107 -0
  174. package/dist/indexer/watcher.js.map +1 -0
  175. package/dist/kb-server/db.d.ts +241 -0
  176. package/dist/kb-server/db.d.ts.map +1 -0
  177. package/dist/kb-server/db.js +659 -0
  178. package/dist/kb-server/db.js.map +1 -0
  179. package/dist/kb-server/server.d.ts +35 -0
  180. package/dist/kb-server/server.d.ts.map +1 -0
  181. package/dist/kb-server/server.js +240 -0
  182. package/dist/kb-server/server.js.map +1 -0
  183. package/dist/kb-server/tools/annotations.d.ts +40 -0
  184. package/dist/kb-server/tools/annotations.d.ts.map +1 -0
  185. package/dist/kb-server/tools/annotations.js +35 -0
  186. package/dist/kb-server/tools/annotations.js.map +1 -0
  187. package/dist/kb-server/tools/architecture.d.ts +60 -0
  188. package/dist/kb-server/tools/architecture.d.ts.map +1 -0
  189. package/dist/kb-server/tools/architecture.js +174 -0
  190. package/dist/kb-server/tools/architecture.js.map +1 -0
  191. package/dist/kb-server/tools/blame.d.ts +67 -0
  192. package/dist/kb-server/tools/blame.d.ts.map +1 -0
  193. package/dist/kb-server/tools/blame.js +162 -0
  194. package/dist/kb-server/tools/blame.js.map +1 -0
  195. package/dist/kb-server/tools/coverage.d.ts +67 -0
  196. package/dist/kb-server/tools/coverage.d.ts.map +1 -0
  197. package/dist/kb-server/tools/coverage.js +74 -0
  198. package/dist/kb-server/tools/coverage.js.map +1 -0
  199. package/dist/kb-server/tools/graph.d.ts +56 -0
  200. package/dist/kb-server/tools/graph.d.ts.map +1 -0
  201. package/dist/kb-server/tools/graph.js +188 -0
  202. package/dist/kb-server/tools/graph.js.map +1 -0
  203. package/dist/kb-server/tools/history.d.ts +47 -0
  204. package/dist/kb-server/tools/history.d.ts.map +1 -0
  205. package/dist/kb-server/tools/history.js +91 -0
  206. package/dist/kb-server/tools/history.js.map +1 -0
  207. package/dist/kb-server/tools/lookup.d.ts +36 -0
  208. package/dist/kb-server/tools/lookup.d.ts.map +1 -0
  209. package/dist/kb-server/tools/lookup.js +45 -0
  210. package/dist/kb-server/tools/lookup.js.map +1 -0
  211. package/dist/kb-server/tools/metrics.d.ts +73 -0
  212. package/dist/kb-server/tools/metrics.d.ts.map +1 -0
  213. package/dist/kb-server/tools/metrics.js +79 -0
  214. package/dist/kb-server/tools/metrics.js.map +1 -0
  215. package/dist/kb-server/tools/notes.d.ts +165 -0
  216. package/dist/kb-server/tools/notes.d.ts.map +1 -0
  217. package/dist/kb-server/tools/notes.js +175 -0
  218. package/dist/kb-server/tools/notes.js.map +1 -0
  219. package/dist/kb-server/tools/routes.d.ts +38 -0
  220. package/dist/kb-server/tools/routes.d.ts.map +1 -0
  221. package/dist/kb-server/tools/routes.js +38 -0
  222. package/dist/kb-server/tools/routes.js.map +1 -0
  223. package/dist/kb-server/tools/search.d.ts +60 -0
  224. package/dist/kb-server/tools/search.d.ts.map +1 -0
  225. package/dist/kb-server/tools/search.js +170 -0
  226. package/dist/kb-server/tools/search.js.map +1 -0
  227. package/dist/kb-server/tools/snippet.d.ts +44 -0
  228. package/dist/kb-server/tools/snippet.d.ts.map +1 -0
  229. package/dist/kb-server/tools/snippet.js +49 -0
  230. package/dist/kb-server/tools/snippet.js.map +1 -0
  231. package/dist/kb-server/tools/test-map.d.ts +38 -0
  232. package/dist/kb-server/tools/test-map.d.ts.map +1 -0
  233. package/dist/kb-server/tools/test-map.js +32 -0
  234. package/dist/kb-server/tools/test-map.js.map +1 -0
  235. package/dist/kb-server/tools/writeback.d.ts +49 -0
  236. package/dist/kb-server/tools/writeback.d.ts.map +1 -0
  237. package/dist/kb-server/tools/writeback.js +68 -0
  238. package/dist/kb-server/tools/writeback.js.map +1 -0
  239. package/package.json +92 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @module indexer/extractors/bash
3
+ *
4
+ * Bash/Shell language extractor. Extracts function definitions and `source`
5
+ * / `.` commands as imports.
6
+ */
7
+ import { emptyResult, nodeSignature, walk, } from './types.js';
8
+ // ─── BashExtractor ────────────────────────────────────────────────────────────
9
+ export class BashExtractor {
10
+ extract(tree, _source, _filePath) {
11
+ const result = emptyResult();
12
+ for (const node of walk(tree.rootNode)) {
13
+ switch (node.type) {
14
+ case 'function_definition':
15
+ result.symbols.push(extractFunction(node));
16
+ break;
17
+ case 'command': {
18
+ const imp = tryExtractSource(node);
19
+ if (imp)
20
+ result.imports.push(imp);
21
+ break;
22
+ }
23
+ }
24
+ }
25
+ return result;
26
+ }
27
+ }
28
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
29
+ function extractFunction(node) {
30
+ const nameNode = node.childForFieldName('name');
31
+ return {
32
+ name: nameNode?.text ?? '',
33
+ kind: 'function',
34
+ startLine: node.startPosition.row,
35
+ endLine: node.endPosition.row,
36
+ signature: nodeSignature(node),
37
+ };
38
+ }
39
+ /**
40
+ * Detects `source file.sh` and `. file.sh` commands.
41
+ */
42
+ function tryExtractSource(node) {
43
+ const nameNode = node.childForFieldName('name');
44
+ if (!nameNode)
45
+ return null;
46
+ const cmd = nameNode.text;
47
+ if (cmd !== 'source' && cmd !== '.')
48
+ return null;
49
+ // The sourced file is the first argument after the command name
50
+ const args = node.namedChildren.filter(c => c !== nameNode);
51
+ const firstArg = args[0];
52
+ if (!firstArg)
53
+ return null;
54
+ const source = firstArg.text.replace(/^['"]|['"]$/g, '');
55
+ return { source, importedNames: [] };
56
+ }
57
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/indexer/extractors/bash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAKL,WAAW,EACX,aAAa,EACb,IAAI,GACL,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AAEjF,MAAM,OAAO,aAAa;IACxB,OAAO,CAAC,IAAiB,EAAE,OAAe,EAAE,SAAiB;QAC3D,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,qBAAqB;oBACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3C,MAAM;gBACR,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACnC,IAAI,GAAG;wBAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,iFAAiF;AAEjF,SAAS,eAAe,CAAC,IAAuB;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;QAC1B,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;QACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;QAC7B,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAuB;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC1B,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAEjD,gEAAgE;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module indexer/extractors/c
3
+ *
4
+ * P0 C language extractor. Extracts function definitions,
5
+ * struct/enum/typedef declarations, and #include directives.
6
+ */
7
+ import type Parser from 'tree-sitter';
8
+ import { type ExtractionResult, type SymbolExtractor } from './types.js';
9
+ export declare class CExtractor implements SymbolExtractor {
10
+ extract(tree: Parser.Tree, _source: string, _filePath: string): ExtractionResult;
11
+ }
12
+ //# sourceMappingURL=c.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AAIpB,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CA8BjF"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @module indexer/extractors/c
3
+ *
4
+ * P0 C language extractor. Extracts function definitions,
5
+ * struct/enum/typedef declarations, and #include directives.
6
+ */
7
+ import { emptyResult, findFirst, nodeSignature, walk, } from './types.js';
8
+ // ─── CExtractor ───────────────────────────────────────────────────────────────
9
+ export class CExtractor {
10
+ extract(tree, _source, _filePath) {
11
+ const result = emptyResult();
12
+ for (const node of walk(tree.rootNode)) {
13
+ switch (node.type) {
14
+ case 'function_definition':
15
+ result.symbols.push(extractFunction(node));
16
+ break;
17
+ case 'struct_specifier':
18
+ // Only capture named structs at file scope (skip anonymous inner structs)
19
+ if (node.childForFieldName('name')) {
20
+ result.symbols.push(extractNamedSpecifier(node, 'struct'));
21
+ }
22
+ break;
23
+ case 'enum_specifier':
24
+ if (node.childForFieldName('name')) {
25
+ result.symbols.push(extractNamedSpecifier(node, 'enum'));
26
+ }
27
+ break;
28
+ case 'typedef_declaration':
29
+ result.symbols.push(extractTypedef(node));
30
+ break;
31
+ case 'preproc_include':
32
+ result.imports.push(extractInclude(node));
33
+ break;
34
+ }
35
+ }
36
+ return result;
37
+ }
38
+ }
39
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
40
+ function extractFunction(node) {
41
+ const declarator = node.childForFieldName('declarator');
42
+ const name = declarator ? extractDeclaratorName(declarator) : '';
43
+ return {
44
+ name,
45
+ kind: 'function',
46
+ startLine: node.startPosition.row,
47
+ endLine: node.endPosition.row,
48
+ signature: nodeSignature(node),
49
+ };
50
+ }
51
+ /**
52
+ * Walks down pointer/array declarators to find the function_declarator, then
53
+ * extracts the innermost identifier.
54
+ */
55
+ function extractDeclaratorName(declarator) {
56
+ // Peel off pointer/array wrappers
57
+ let node = declarator;
58
+ while (node && node.type !== 'function_declarator') {
59
+ const inner = node.childForFieldName('declarator') ??
60
+ node.namedChildren[0] ??
61
+ null;
62
+ if (!inner || inner === node)
63
+ break;
64
+ node = inner;
65
+ }
66
+ if (node?.type === 'function_declarator') {
67
+ const inner = node.childForFieldName('declarator');
68
+ if (inner) {
69
+ return findFirst(inner, 'identifier')?.text ?? '';
70
+ }
71
+ }
72
+ return findFirst(declarator, 'identifier')?.text ?? '';
73
+ }
74
+ function extractNamedSpecifier(node, kind) {
75
+ const nameNode = node.childForFieldName('name');
76
+ return {
77
+ name: nameNode?.text ?? '',
78
+ kind,
79
+ startLine: node.startPosition.row,
80
+ endLine: node.endPosition.row,
81
+ signature: nodeSignature(node),
82
+ };
83
+ }
84
+ function extractTypedef(node) {
85
+ // The typedef name is the last named child (the identifier after the type)
86
+ const children = node.namedChildren;
87
+ const nameNode = children[children.length - 1] ?? null;
88
+ return {
89
+ name: nameNode?.text ?? '',
90
+ kind: 'typedef',
91
+ startLine: node.startPosition.row,
92
+ endLine: node.endPosition.row,
93
+ signature: nodeSignature(node),
94
+ };
95
+ }
96
+ function extractInclude(node) {
97
+ // path child is either string_literal or system_lib_string
98
+ const pathNode = node.childForFieldName('path') ??
99
+ node.namedChildren[0] ??
100
+ null;
101
+ const raw = pathNode?.text ?? '';
102
+ // Strip surrounding quotes or angle brackets
103
+ const source = raw.replace(/^["<]|[">]$/g, '');
104
+ return { source, importedNames: [] };
105
+ }
106
+ //# sourceMappingURL=c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c.js","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module indexer/extractors/cpp
3
+ *
4
+ * P1 C++ language extractor. Extracts function definitions, class/struct
5
+ * declarations, and #include directives.
6
+ */
7
+ import type Parser from 'tree-sitter';
8
+ import { type ExtractionResult, type SymbolExtractor } from './types.js';
9
+ export declare class CppExtractor implements SymbolExtractor {
10
+ extract(tree: Parser.Tree, _source: string, _filePath: string): ExtractionResult;
11
+ }
12
+ //# sourceMappingURL=cpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/cpp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AAIpB,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CA0BjF"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @module indexer/extractors/cpp
3
+ *
4
+ * P1 C++ language extractor. Extracts function definitions, class/struct
5
+ * declarations, and #include directives.
6
+ */
7
+ import { emptyResult, findFirst, nodeSignature, walk, } from './types.js';
8
+ // ─── CppExtractor ─────────────────────────────────────────────────────────────
9
+ export class CppExtractor {
10
+ extract(tree, _source, _filePath) {
11
+ const result = emptyResult();
12
+ for (const node of walk(tree.rootNode)) {
13
+ switch (node.type) {
14
+ case 'function_definition':
15
+ result.symbols.push(extractFunction(node));
16
+ break;
17
+ case 'class_specifier':
18
+ if (node.childForFieldName('name')) {
19
+ result.symbols.push(extractSpecifier(node, 'class'));
20
+ }
21
+ break;
22
+ case 'struct_specifier':
23
+ if (node.childForFieldName('name')) {
24
+ result.symbols.push(extractSpecifier(node, 'struct'));
25
+ }
26
+ break;
27
+ case 'preproc_include':
28
+ result.imports.push(extractInclude(node));
29
+ break;
30
+ }
31
+ }
32
+ return result;
33
+ }
34
+ }
35
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
36
+ function extractFunction(node) {
37
+ const declarator = node.childForFieldName('declarator');
38
+ const name = declarator ? extractDeclaratorName(declarator) : '';
39
+ return {
40
+ name,
41
+ kind: 'function',
42
+ startLine: node.startPosition.row,
43
+ endLine: node.endPosition.row,
44
+ signature: nodeSignature(node),
45
+ };
46
+ }
47
+ function extractDeclaratorName(declarator) {
48
+ let node = declarator;
49
+ while (node && node.type !== 'function_declarator') {
50
+ const inner = node.childForFieldName('declarator') ??
51
+ node.namedChildren[0] ??
52
+ null;
53
+ if (!inner || inner === node)
54
+ break;
55
+ node = inner;
56
+ }
57
+ if (node?.type === 'function_declarator') {
58
+ const inner = node.childForFieldName('declarator');
59
+ if (inner) {
60
+ // Prefer qualified identifier (e.g. Foo::bar) over plain identifier
61
+ return (findFirst(inner, 'qualified_identifier')?.text ??
62
+ findFirst(inner, 'identifier')?.text ??
63
+ '');
64
+ }
65
+ }
66
+ return findFirst(declarator, 'identifier')?.text ?? '';
67
+ }
68
+ function extractSpecifier(node, kind) {
69
+ const nameNode = node.childForFieldName('name');
70
+ return {
71
+ name: nameNode?.text ?? '',
72
+ kind,
73
+ startLine: node.startPosition.row,
74
+ endLine: node.endPosition.row,
75
+ signature: nodeSignature(node),
76
+ };
77
+ }
78
+ function extractInclude(node) {
79
+ const pathNode = node.childForFieldName('path') ?? node.namedChildren[0] ?? null;
80
+ const raw = pathNode?.text ?? '';
81
+ const source = raw.replace(/^["<]|[">]$/g, '');
82
+ return { source, importedNames: [] };
83
+ }
84
+ //# sourceMappingURL=cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../../src/indexer/extractors/cpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module indexer/extractors/csharp
3
+ *
4
+ * P2/P3 C# language extractor. Extracts class declarations, interface
5
+ * declarations, method declarations, and using directives.
6
+ */
7
+ import type Parser from 'tree-sitter';
8
+ import { type ExtractionResult, type SymbolExtractor } from './types.js';
9
+ export declare class CSharpExtractor implements SymbolExtractor {
10
+ extract(tree: Parser.Tree, _source: string, _filePath: string): ExtractionResult;
11
+ }
12
+ //# sourceMappingURL=csharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/csharp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAIpB,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CA4BjF"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @module indexer/extractors/csharp
3
+ *
4
+ * P2/P3 C# language extractor. Extracts class declarations, interface
5
+ * declarations, method declarations, and using directives.
6
+ */
7
+ import { emptyResult, nodeSignature, walk, } from './types.js';
8
+ // ─── CSharpExtractor ──────────────────────────────────────────────────────────
9
+ export class CSharpExtractor {
10
+ extract(tree, _source, _filePath) {
11
+ const result = emptyResult();
12
+ for (const node of walk(tree.rootNode)) {
13
+ switch (node.type) {
14
+ case 'class_declaration':
15
+ result.symbols.push(extractNamedNode(node, 'class'));
16
+ break;
17
+ case 'interface_declaration':
18
+ result.symbols.push(extractNamedNode(node, 'interface'));
19
+ break;
20
+ case 'struct_declaration':
21
+ result.symbols.push(extractNamedNode(node, 'struct'));
22
+ break;
23
+ case 'enum_declaration':
24
+ result.symbols.push(extractNamedNode(node, 'enum'));
25
+ break;
26
+ case 'method_declaration':
27
+ result.symbols.push(extractMethod(node));
28
+ break;
29
+ case 'using_directive':
30
+ result.imports.push(extractUsingDirective(node));
31
+ break;
32
+ }
33
+ }
34
+ return result;
35
+ }
36
+ }
37
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
38
+ function extractNamedNode(node, kind) {
39
+ const nameNode = node.childForFieldName('name');
40
+ return {
41
+ name: nameNode?.text ?? '',
42
+ kind,
43
+ startLine: node.startPosition.row,
44
+ endLine: node.endPosition.row,
45
+ signature: nodeSignature(node),
46
+ };
47
+ }
48
+ function extractMethod(node) {
49
+ const nameNode = node.childForFieldName('name');
50
+ return {
51
+ name: nameNode?.text ?? '',
52
+ kind: 'function',
53
+ startLine: node.startPosition.row,
54
+ endLine: node.endPosition.row,
55
+ signature: nodeSignature(node),
56
+ };
57
+ }
58
+ function extractUsingDirective(node) {
59
+ // `using System.Collections.Generic;` or `using alias = Namespace;`
60
+ const text = node.text
61
+ .replace(/^using\s+(static\s+)?/, '')
62
+ .replace(/\s*;?\s*$/, '')
63
+ .trim();
64
+ // If there is an alias (`alias = Namespace`), split on '='
65
+ const eqIdx = text.indexOf('=');
66
+ let source;
67
+ let importedNames;
68
+ if (eqIdx !== -1) {
69
+ source = text.slice(eqIdx + 1).trim();
70
+ importedNames = [text.slice(0, eqIdx).trim()];
71
+ }
72
+ else {
73
+ source = text;
74
+ const parts = text.split('.');
75
+ importedNames = [parts[parts.length - 1] ?? ''];
76
+ }
77
+ return { source, importedNames };
78
+ }
79
+ //# sourceMappingURL=csharp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/indexer/extractors/csharp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAKL,WAAW,EACX,aAAa,EACb,IAAI,GACL,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AAEjF,MAAM,OAAO,eAAe;IAC1B,OAAO,CAAC,IAAiB,EAAE,OAAe,EAAE,SAAiB;QAC3D,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,mBAAmB;oBACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,uBAAuB;oBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,oBAAoB;oBACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACtD,MAAM;gBACR,KAAK,kBAAkB;oBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,oBAAoB;oBACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,iBAAiB;oBACpB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjD,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,iFAAiF;AAEjF,SAAS,gBAAgB,CAAC,IAAuB,EAAE,IAAY;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;QAC1B,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;QACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;QAC7B,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAuB;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;QAC1B,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;QACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;QAC7B,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAuB;IACpD,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;SACnB,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,IAAI,EAAE,CAAC;IAEV,2DAA2D;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,MAAc,CAAC;IACnB,IAAI,aAAuB,CAAC;IAC5B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,aAAa,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module indexer/extractors/dart
3
+ *
4
+ * Dart language extractor. Extracts function declarations, class/mixin/enum/
5
+ * extension declarations, method declarations, and import directives.
6
+ */
7
+ import type Parser from 'tree-sitter';
8
+ import { type ExtractionResult, type SymbolExtractor } from './types.js';
9
+ export declare class DartExtractor implements SymbolExtractor {
10
+ extract(tree: Parser.Tree, _source: string, _filePath: string): ExtractionResult;
11
+ }
12
+ //# sourceMappingURL=dart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dart.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/dart.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAIpB,qBAAa,aAAc,YAAW,eAAe;IACnD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAgCjF"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @module indexer/extractors/dart
3
+ *
4
+ * Dart language extractor. Extracts function declarations, class/mixin/enum/
5
+ * extension declarations, method declarations, and import directives.
6
+ */
7
+ import { emptyResult, nodeSignature, walk, } from './types.js';
8
+ // ─── DartExtractor ────────────────────────────────────────────────────────────
9
+ export class DartExtractor {
10
+ extract(tree, _source, _filePath) {
11
+ const result = emptyResult();
12
+ for (const node of walk(tree.rootNode)) {
13
+ switch (node.type) {
14
+ case 'function_signature':
15
+ case 'function_declaration':
16
+ result.symbols.push(extractFunction(node));
17
+ break;
18
+ case 'method_signature':
19
+ result.symbols.push(extractFunction(node));
20
+ break;
21
+ case 'class_definition':
22
+ result.symbols.push(extractNamedNode(node, 'class'));
23
+ break;
24
+ case 'mixin_declaration':
25
+ result.symbols.push(extractNamedNode(node, 'mixin'));
26
+ break;
27
+ case 'enum_declaration':
28
+ result.symbols.push(extractNamedNode(node, 'enum'));
29
+ break;
30
+ case 'extension_declaration':
31
+ result.symbols.push(extractNamedNode(node, 'extension'));
32
+ break;
33
+ case 'import_or_export':
34
+ result.imports.push(extractImport(node));
35
+ break;
36
+ }
37
+ }
38
+ return result;
39
+ }
40
+ }
41
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
42
+ function extractFunction(node) {
43
+ const nameNode = node.childForFieldName('name') ??
44
+ node.namedChildren.find(c => c.type === 'identifier');
45
+ return {
46
+ name: nameNode?.text ?? '',
47
+ kind: 'function',
48
+ startLine: node.startPosition.row,
49
+ endLine: node.endPosition.row,
50
+ signature: nodeSignature(node),
51
+ };
52
+ }
53
+ function extractNamedNode(node, kind) {
54
+ const nameNode = node.childForFieldName('name') ??
55
+ node.namedChildren.find(c => c.type === 'identifier');
56
+ return {
57
+ name: nameNode?.text ?? '',
58
+ kind,
59
+ startLine: node.startPosition.row,
60
+ endLine: node.endPosition.row,
61
+ signature: nodeSignature(node),
62
+ };
63
+ }
64
+ function extractImport(node) {
65
+ // `import 'package:foo/bar.dart';` or `export 'package:foo/bar.dart';`
66
+ const text = node.text
67
+ .replace(/^(import|export)\s+/, '')
68
+ .replace(/\s*;?\s*$/, '')
69
+ .trim();
70
+ // Strip quotes
71
+ const source = text.replace(/^['"]|['"]$/g, '').split(/\s/)[0] ?? '';
72
+ // Check for `show` / `hide` clauses
73
+ const importedNames = [];
74
+ const showMatch = text.match(/show\s+([\w,\s]+)/);
75
+ if (showMatch) {
76
+ importedNames.push(...showMatch[1].split(',').map(s => s.trim()).filter(Boolean));
77
+ }
78
+ return { source, importedNames };
79
+ }
80
+ //# sourceMappingURL=dart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dart.js","sourceRoot":"","sources":["../../../src/indexer/extractors/dart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module indexer/extractors/elixir
3
+ *
4
+ * Elixir language extractor. Extracts def/defp functions, defmodule declarations,
5
+ * defmacro/defmacrop macros, and alias/import/use directives.
6
+ */
7
+ import type Parser from 'tree-sitter';
8
+ import { type ExtractionResult, type SymbolExtractor } from './types.js';
9
+ export declare class ElixirExtractor implements SymbolExtractor {
10
+ extract(tree: Parser.Tree, _source: string, _filePath: string): ExtractionResult;
11
+ }
12
+ //# sourceMappingURL=elixir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elixir.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/elixir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAIpB,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CA2CjF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @module indexer/extractors/elixir
3
+ *
4
+ * Elixir language extractor. Extracts def/defp functions, defmodule declarations,
5
+ * defmacro/defmacrop macros, and alias/import/use directives.
6
+ */
7
+ import { emptyResult, nodeSignature, walk, } from './types.js';
8
+ // ─── ElixirExtractor ──────────────────────────────────────────────────────────
9
+ export class ElixirExtractor {
10
+ extract(tree, _source, _filePath) {
11
+ const result = emptyResult();
12
+ for (const node of walk(tree.rootNode)) {
13
+ if (node.type !== 'call')
14
+ continue;
15
+ const target = node.childForFieldName('target');
16
+ if (!target)
17
+ continue;
18
+ const targetText = target.text;
19
+ switch (targetText) {
20
+ case 'def':
21
+ case 'defp':
22
+ result.symbols.push(extractDef(node, 'function'));
23
+ break;
24
+ case 'defmodule':
25
+ result.symbols.push(extractDef(node, 'module'));
26
+ break;
27
+ case 'defmacro':
28
+ case 'defmacrop':
29
+ result.symbols.push(extractDef(node, 'macro'));
30
+ break;
31
+ case 'defstruct':
32
+ result.symbols.push(extractDef(node, 'struct'));
33
+ break;
34
+ case 'defprotocol':
35
+ result.symbols.push(extractDef(node, 'interface'));
36
+ break;
37
+ case 'defimpl':
38
+ result.symbols.push(extractDef(node, 'impl'));
39
+ break;
40
+ case 'alias':
41
+ case 'import':
42
+ case 'use':
43
+ case 'require':
44
+ result.imports.push(extractElixirImport(node, targetText));
45
+ break;
46
+ }
47
+ }
48
+ return result;
49
+ }
50
+ }
51
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
52
+ function extractDef(node, kind) {
53
+ // In Elixir's tree-sitter grammar, `def foo(bar)` is a call node
54
+ // where the first argument is another call node or identifier.
55
+ const argsNode = node.childForFieldName('arguments');
56
+ let name = '';
57
+ if (argsNode && argsNode.namedChildren.length > 0) {
58
+ const firstArg = argsNode.namedChildren[0];
59
+ if (firstArg.type === 'call') {
60
+ const callTarget = firstArg.childForFieldName('target');
61
+ name = callTarget?.text ?? firstArg.text;
62
+ }
63
+ else if (firstArg.type === 'identifier' || firstArg.type === 'alias') {
64
+ name = firstArg.text;
65
+ }
66
+ else {
67
+ // Fallback: take first child text
68
+ name = firstArg.text.split(/[\s(]/)[0] ?? '';
69
+ }
70
+ }
71
+ return {
72
+ name,
73
+ kind,
74
+ startLine: node.startPosition.row,
75
+ endLine: node.endPosition.row,
76
+ signature: nodeSignature(node),
77
+ };
78
+ }
79
+ function extractElixirImport(node, directive) {
80
+ const argsNode = node.childForFieldName('arguments');
81
+ let source = '';
82
+ if (argsNode && argsNode.namedChildren.length > 0) {
83
+ source = argsNode.namedChildren[0]?.text ?? '';
84
+ }
85
+ return { source, importedNames: [directive] };
86
+ }
87
+ //# sourceMappingURL=elixir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elixir.js","sourceRoot":"","sources":["../../../src/indexer/extractors/elixir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAKL,WAAW,EACX,aAAa,EACb,IAAI,GACL,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AAEjF,MAAM,OAAO,eAAe;IAC1B,OAAO,CAAC,IAAiB,EAAE,OAAe,EAAE,SAAiB;QAC3D,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAE/B,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,KAAK,CAAC;gBACX,KAAK,MAAM;oBACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;oBAClD,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAChD,MAAM;gBACR,KAAK,UAAU,CAAC;gBAChB,KAAK,WAAW;oBACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAChD,MAAM;gBACR,KAAK,aAAa;oBAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,SAAS;oBACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,OAAO,CAAC;gBACb,KAAK,QAAQ,CAAC;gBACd,KAAK,KAAK,CAAC;gBACX,KAAK,SAAS;oBACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;oBAC3D,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,iFAAiF;AAEjF,SAAS,UAAU,CAAC,IAAuB,EAAE,IAAY;IACvD,iEAAiE;IACjE,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;QAC3C,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;QACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;QAC7B,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAuB,EAAE,SAAiB;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module indexer/extractors/elm
3
+ *
4
+ * Elm language extractor. Extracts function declarations, type declarations,
5
+ * type alias declarations, and import clauses.
6
+ */
7
+ import type Parser from 'tree-sitter';
8
+ import { type ExtractionResult, type SymbolExtractor } from './types.js';
9
+ export declare class ElmExtractor implements SymbolExtractor {
10
+ extract(tree: Parser.Tree, _source: string, _filePath: string): ExtractionResult;
11
+ }
12
+ //# sourceMappingURL=elm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elm.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/elm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAIpB,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAyBjF"}