@jafreck/lore 0.2.3 → 0.2.5

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 (150) hide show
  1. package/README.md +22 -13
  2. package/dist/cli.js +130 -14
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/indexer/call-graph.d.ts +24 -7
  9. package/dist/indexer/call-graph.d.ts.map +1 -1
  10. package/dist/indexer/call-graph.js +154 -22
  11. package/dist/indexer/call-graph.js.map +1 -1
  12. package/dist/indexer/config-parser.js +6 -1
  13. package/dist/indexer/config-parser.js.map +1 -1
  14. package/dist/indexer/coverage.js +3 -1
  15. package/dist/indexer/coverage.js.map +1 -1
  16. package/dist/indexer/db.d.ts.map +1 -1
  17. package/dist/indexer/db.js +43 -0
  18. package/dist/indexer/db.js.map +1 -1
  19. package/dist/indexer/docs.d.ts.map +1 -1
  20. package/dist/indexer/docs.js +4 -0
  21. package/dist/indexer/docs.js.map +1 -1
  22. package/dist/indexer/embedder.d.ts.map +1 -1
  23. package/dist/indexer/embedder.js +5 -0
  24. package/dist/indexer/embedder.js.map +1 -1
  25. package/dist/indexer/extractors/bash.d.ts.map +1 -1
  26. package/dist/indexer/extractors/bash.js +29 -1
  27. package/dist/indexer/extractors/bash.js.map +1 -1
  28. package/dist/indexer/extractors/c.d.ts +5 -2
  29. package/dist/indexer/extractors/c.d.ts.map +1 -1
  30. package/dist/indexer/extractors/c.js +277 -8
  31. package/dist/indexer/extractors/c.js.map +1 -1
  32. package/dist/indexer/extractors/cpp.d.ts +5 -2
  33. package/dist/indexer/extractors/cpp.d.ts.map +1 -1
  34. package/dist/indexer/extractors/cpp.js +349 -3
  35. package/dist/indexer/extractors/cpp.js.map +1 -1
  36. package/dist/indexer/extractors/csharp.d.ts.map +1 -1
  37. package/dist/indexer/extractors/csharp.js +166 -1
  38. package/dist/indexer/extractors/csharp.js.map +1 -1
  39. package/dist/indexer/extractors/dart.d.ts.map +1 -1
  40. package/dist/indexer/extractors/dart.js +134 -1
  41. package/dist/indexer/extractors/dart.js.map +1 -1
  42. package/dist/indexer/extractors/elixir.d.ts.map +1 -1
  43. package/dist/indexer/extractors/elixir.js +45 -0
  44. package/dist/indexer/extractors/elixir.js.map +1 -1
  45. package/dist/indexer/extractors/elm.d.ts.map +1 -1
  46. package/dist/indexer/extractors/elm.js +33 -0
  47. package/dist/indexer/extractors/elm.js.map +1 -1
  48. package/dist/indexer/extractors/go.d.ts.map +1 -1
  49. package/dist/indexer/extractors/go.js +206 -1
  50. package/dist/indexer/extractors/go.js.map +1 -1
  51. package/dist/indexer/extractors/haskell.d.ts.map +1 -1
  52. package/dist/indexer/extractors/haskell.js +29 -0
  53. package/dist/indexer/extractors/haskell.js.map +1 -1
  54. package/dist/indexer/extractors/java.d.ts.map +1 -1
  55. package/dist/indexer/extractors/java.js +170 -1
  56. package/dist/indexer/extractors/java.js.map +1 -1
  57. package/dist/indexer/extractors/javascript.d.ts.map +1 -1
  58. package/dist/indexer/extractors/javascript.js +24 -2
  59. package/dist/indexer/extractors/javascript.js.map +1 -1
  60. package/dist/indexer/extractors/julia.d.ts.map +1 -1
  61. package/dist/indexer/extractors/julia.js +23 -1
  62. package/dist/indexer/extractors/julia.js.map +1 -1
  63. package/dist/indexer/extractors/kotlin.d.ts.map +1 -1
  64. package/dist/indexer/extractors/kotlin.js +122 -1
  65. package/dist/indexer/extractors/kotlin.js.map +1 -1
  66. package/dist/indexer/extractors/lua.d.ts.map +1 -1
  67. package/dist/indexer/extractors/lua.js +19 -1
  68. package/dist/indexer/extractors/lua.js.map +1 -1
  69. package/dist/indexer/extractors/objc.d.ts.map +1 -1
  70. package/dist/indexer/extractors/objc.js +171 -1
  71. package/dist/indexer/extractors/objc.js.map +1 -1
  72. package/dist/indexer/extractors/ocaml.d.ts.map +1 -1
  73. package/dist/indexer/extractors/ocaml.js +29 -0
  74. package/dist/indexer/extractors/ocaml.js.map +1 -1
  75. package/dist/indexer/extractors/php.d.ts.map +1 -1
  76. package/dist/indexer/extractors/php.js +133 -1
  77. package/dist/indexer/extractors/php.js.map +1 -1
  78. package/dist/indexer/extractors/python.d.ts.map +1 -1
  79. package/dist/indexer/extractors/python.js +24 -3
  80. package/dist/indexer/extractors/python.js.map +1 -1
  81. package/dist/indexer/extractors/ruby.d.ts.map +1 -1
  82. package/dist/indexer/extractors/ruby.js +23 -1
  83. package/dist/indexer/extractors/ruby.js.map +1 -1
  84. package/dist/indexer/extractors/rust.d.ts.map +1 -1
  85. package/dist/indexer/extractors/rust.js +139 -2
  86. package/dist/indexer/extractors/rust.js.map +1 -1
  87. package/dist/indexer/extractors/scala.d.ts.map +1 -1
  88. package/dist/indexer/extractors/scala.js +24 -1
  89. package/dist/indexer/extractors/scala.js.map +1 -1
  90. package/dist/indexer/extractors/swift.d.ts.map +1 -1
  91. package/dist/indexer/extractors/swift.js +129 -1
  92. package/dist/indexer/extractors/swift.js.map +1 -1
  93. package/dist/indexer/extractors/types.d.ts +78 -2
  94. package/dist/indexer/extractors/types.d.ts.map +1 -1
  95. package/dist/indexer/extractors/types.js +167 -8
  96. package/dist/indexer/extractors/types.js.map +1 -1
  97. package/dist/indexer/extractors/typescript.d.ts.map +1 -1
  98. package/dist/indexer/extractors/typescript.js +217 -1
  99. package/dist/indexer/extractors/typescript.js.map +1 -1
  100. package/dist/indexer/extractors/zig.d.ts.map +1 -1
  101. package/dist/indexer/extractors/zig.js +30 -0
  102. package/dist/indexer/extractors/zig.js.map +1 -1
  103. package/dist/indexer/git-history.d.ts.map +1 -1
  104. package/dist/indexer/git-history.js +4 -8
  105. package/dist/indexer/git-history.js.map +1 -1
  106. package/dist/indexer/git-hooks.js +1 -1
  107. package/dist/indexer/git-hooks.js.map +1 -1
  108. package/dist/indexer/index.d.ts +24 -1
  109. package/dist/indexer/index.d.ts.map +1 -1
  110. package/dist/indexer/index.js +245 -66
  111. package/dist/indexer/index.js.map +1 -1
  112. package/dist/indexer/lsp/client.d.ts.map +1 -1
  113. package/dist/indexer/lsp/client.js +40 -15
  114. package/dist/indexer/lsp/client.js.map +1 -1
  115. package/dist/indexer/lsp/config.d.ts.map +1 -1
  116. package/dist/indexer/lsp/config.js +18 -4
  117. package/dist/indexer/lsp/config.js.map +1 -1
  118. package/dist/indexer/poller.d.ts +8 -0
  119. package/dist/indexer/poller.d.ts.map +1 -1
  120. package/dist/indexer/poller.js +3 -1
  121. package/dist/indexer/poller.js.map +1 -1
  122. package/dist/indexer/resolver.d.ts.map +1 -1
  123. package/dist/indexer/resolver.js +8 -4
  124. package/dist/indexer/resolver.js.map +1 -1
  125. package/dist/indexer/watcher.d.ts +8 -0
  126. package/dist/indexer/watcher.d.ts.map +1 -1
  127. package/dist/indexer/watcher.js +18 -1
  128. package/dist/indexer/watcher.js.map +1 -1
  129. package/dist/logger.d.ts +104 -0
  130. package/dist/logger.d.ts.map +1 -0
  131. package/dist/logger.js +170 -0
  132. package/dist/logger.js.map +1 -0
  133. package/dist/lore-server/db.d.ts.map +1 -1
  134. package/dist/lore-server/db.js +28 -24
  135. package/dist/lore-server/db.js.map +1 -1
  136. package/dist/lore-server/server.d.ts +3 -0
  137. package/dist/lore-server/server.d.ts.map +1 -1
  138. package/dist/lore-server/server.js +62 -102
  139. package/dist/lore-server/server.js.map +1 -1
  140. package/dist/lore-server/tools/graph.d.ts +4 -3
  141. package/dist/lore-server/tools/graph.d.ts.map +1 -1
  142. package/dist/lore-server/tools/graph.js +48 -10
  143. package/dist/lore-server/tools/graph.js.map +1 -1
  144. package/dist/lore-server/tools/notes.d.ts.map +1 -1
  145. package/dist/lore-server/tools/notes.js +6 -2
  146. package/dist/lore-server/tools/notes.js.map +1 -1
  147. package/dist/lore-server/tools/search.d.ts.map +1 -1
  148. package/dist/lore-server/tools/search.js +46 -14
  149. package/dist/lore-server/tools/search.js.map +1 -1
  150. package/package.json +2 -2
@@ -1 +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"}
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/indexer/extractors/bash.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * @module indexer/extractors/c
3
3
  *
4
- * P0 C language extractor. Extracts function definitions,
5
- * struct/enum/typedef declarations, and #include directives.
4
+ * C language extractor. Extracts:
5
+ * - Function definitions, struct/enum/typedef declarations
6
+ * - Preprocessor macro definitions (`preproc_function_def`, `preproc_def`)
7
+ * - `#include` directives
8
+ * - Call-expression references with function-pointer / indirect-call awareness
6
9
  */
7
10
  import type Parser from 'tree-sitter';
8
11
  import { type ExtractionResult, type SymbolExtractor } from './types.js';
@@ -1 +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"}
1
+ {"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EAMrB,KAAK,eAAe,EAMrB,MAAM,YAAY,CAAC;AAmBpB,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAiEjF"}
@@ -1,23 +1,51 @@
1
1
  /**
2
2
  * @module indexer/extractors/c
3
3
  *
4
- * P0 C language extractor. Extracts function definitions,
5
- * struct/enum/typedef declarations, and #include directives.
4
+ * C language extractor. Extracts:
5
+ * - Function definitions, struct/enum/typedef declarations
6
+ * - Preprocessor macro definitions (`preproc_function_def`, `preproc_def`)
7
+ * - `#include` directives
8
+ * - Call-expression references with function-pointer / indirect-call awareness
6
9
  */
7
- import { emptyResult, findFirst, nodeSignature, walk, } from './types.js';
10
+ import { emptyResult, findEnclosingSymbolName, findFirst, nodeSignature, walk, } from './types.js';
11
+ const C_SYMBOL_NODE_TYPES = [
12
+ 'function_definition',
13
+ ];
14
+ /**
15
+ * AST node types on the "function" child of a `call_expression` that indicate
16
+ * the call goes through a level of indirection (pointer deref, field access,
17
+ * subscript, etc.).
18
+ */
19
+ const INDIRECT_CALL_NODE_TYPES = new Set([
20
+ 'pointer_expression',
21
+ 'parenthesized_expression',
22
+ 'subscript_expression',
23
+ ]);
8
24
  // ─── CExtractor ───────────────────────────────────────────────────────────────
9
25
  export class CExtractor {
10
26
  extract(tree, _source, _filePath) {
11
27
  const result = emptyResult();
28
+ /** Track macro names so the call-ref pass can classify invocations. */
29
+ const macroNames = new Set();
30
+ // First pass: collect macro names.
31
+ for (const node of walk(tree.rootNode)) {
32
+ if (node.type === 'preproc_function_def' || node.type === 'preproc_def') {
33
+ const sym = extractMacro(node);
34
+ if (sym)
35
+ macroNames.add(sym.name);
36
+ }
37
+ }
38
+ // Main pass: symbols, imports, call-refs, type-refs.
12
39
  for (const node of walk(tree.rootNode)) {
13
40
  switch (node.type) {
14
41
  case 'function_definition':
15
42
  result.symbols.push(extractFunction(node));
43
+ extractFunctionTypeRefs(node, result.typeRefs);
16
44
  break;
17
45
  case 'struct_specifier':
18
- // Only capture named structs at file scope (skip anonymous inner structs)
19
46
  if (node.childForFieldName('name')) {
20
47
  result.symbols.push(extractNamedSpecifier(node, 'struct'));
48
+ extractStructFieldTypeRefs(node, result.typeRefs);
21
49
  }
22
50
  break;
23
51
  case 'enum_specifier':
@@ -28,9 +56,34 @@ export class CExtractor {
28
56
  case 'typedef_declaration':
29
57
  result.symbols.push(extractTypedef(node));
30
58
  break;
59
+ case 'preproc_function_def':
60
+ case 'preproc_def': {
61
+ const sym = extractMacro(node);
62
+ if (sym)
63
+ result.symbols.push(sym);
64
+ break;
65
+ }
31
66
  case 'preproc_include':
32
67
  result.imports.push(extractInclude(node));
33
68
  break;
69
+ case 'call_expression': {
70
+ const ref = extractCallRef(node, macroNames);
71
+ if (ref)
72
+ result.callRefs.push(ref);
73
+ break;
74
+ }
75
+ case 'declaration': {
76
+ extractVariableTypeRefs(node, result.typeRefs);
77
+ break;
78
+ }
79
+ case 'sizeof_expression': {
80
+ extractSizeofTypeRef(node, result.typeRefs);
81
+ break;
82
+ }
83
+ case 'cast_expression': {
84
+ extractCastTypeRef(node, result.typeRefs);
85
+ break;
86
+ }
34
87
  }
35
88
  }
36
89
  return result;
@@ -53,7 +106,6 @@ function extractFunction(node) {
53
106
  * extracts the innermost identifier.
54
107
  */
55
108
  function extractDeclaratorName(declarator) {
56
- // Peel off pointer/array wrappers
57
109
  let node = declarator;
58
110
  while (node && node.type !== 'function_declarator') {
59
111
  const inner = node.childForFieldName('declarator') ??
@@ -82,7 +134,6 @@ function extractNamedSpecifier(node, kind) {
82
134
  };
83
135
  }
84
136
  function extractTypedef(node) {
85
- // The typedef name is the last named child (the identifier after the type)
86
137
  const children = node.namedChildren;
87
138
  const nameNode = children[children.length - 1] ?? null;
88
139
  return {
@@ -93,14 +144,232 @@ function extractTypedef(node) {
93
144
  signature: nodeSignature(node),
94
145
  };
95
146
  }
147
+ // ─── Macro extraction ─────────────────────────────────────────────────────────
148
+ /**
149
+ * Extracts a `RawSymbol` with `kind: 'macro'` from `preproc_function_def`
150
+ * (function-like macros) and `preproc_def` (object-like macros).
151
+ */
152
+ function extractMacro(node) {
153
+ const nameNode = node.childForFieldName('name');
154
+ if (!nameNode)
155
+ return null;
156
+ return {
157
+ name: nameNode.text,
158
+ kind: 'macro',
159
+ startLine: node.startPosition.row,
160
+ endLine: node.endPosition.row,
161
+ signature: node.text.split('\n')[0]?.trim() ?? '',
162
+ };
163
+ }
164
+ // ─── Call-ref extraction with indirection awareness ───────────────────────────
165
+ function extractCallRef(node, macroNames) {
166
+ const fnNode = node.childForFieldName('function');
167
+ if (!fnNode)
168
+ return null;
169
+ const callerSymbol = findEnclosingSymbolName(node, C_SYMBOL_NODE_TYPES);
170
+ const line = node.startPosition.row;
171
+ const character = node.startPosition.column;
172
+ const { calleeName, isIndirect, callKind } = classifyCallee(fnNode, macroNames);
173
+ return {
174
+ callerSymbol,
175
+ calleeRaw: calleeName,
176
+ line,
177
+ character,
178
+ callKind,
179
+ isIndirect,
180
+ };
181
+ }
182
+ /**
183
+ * Walks the function-position subtree of a `call_expression` to extract the
184
+ * callee name and classify the call kind.
185
+ */
186
+ function classifyCallee(fnNode, macroNames) {
187
+ // Direct identifier: foo(...)
188
+ if (fnNode.type === 'identifier') {
189
+ const name = fnNode.text;
190
+ if (macroNames.has(name)) {
191
+ return { calleeName: name, isIndirect: false, callKind: 'macro' };
192
+ }
193
+ return { calleeName: name, isIndirect: false, callKind: 'direct' };
194
+ }
195
+ // Field expression: obj.method(...) / ptr->method(...)
196
+ if (fnNode.type === 'field_expression') {
197
+ return { calleeName: fnNode.text, isIndirect: false, callKind: 'direct' };
198
+ }
199
+ // Indirect calls through pointer deref, parens, or subscript:
200
+ // (*callback)(...) / (fnTable[i])(...)
201
+ if (INDIRECT_CALL_NODE_TYPES.has(fnNode.type)) {
202
+ const innerName = extractInnermostIdentifier(fnNode);
203
+ return {
204
+ calleeName: innerName ?? fnNode.text,
205
+ isIndirect: true,
206
+ callKind: 'indirect',
207
+ };
208
+ }
209
+ // Fallback
210
+ return { calleeName: fnNode.text, isIndirect: false, callKind: 'direct' };
211
+ }
212
+ /**
213
+ * Walks into pointer/parenthesised/subscript wrappers to find the innermost
214
+ * identifier being dereferenced.
215
+ */
216
+ function extractInnermostIdentifier(node) {
217
+ let current = node;
218
+ while (current) {
219
+ if (current.type === 'identifier')
220
+ return current.text;
221
+ if (current.type === 'field_expression')
222
+ return current.text;
223
+ if (current.type === 'pointer_expression') {
224
+ const arg = current.childForFieldName('argument') ?? current.namedChildren[current.namedChildren.length - 1] ?? null;
225
+ if (arg && arg !== current) {
226
+ current = arg;
227
+ continue;
228
+ }
229
+ }
230
+ if (current.type === 'parenthesized_expression') {
231
+ const inner = current.namedChildren[0] ?? null;
232
+ if (inner && inner !== current) {
233
+ current = inner;
234
+ continue;
235
+ }
236
+ }
237
+ if (current.type === 'subscript_expression') {
238
+ const arg = current.childForFieldName('argument') ?? current.namedChildren[0] ?? null;
239
+ if (arg && arg !== current) {
240
+ current = arg;
241
+ continue;
242
+ }
243
+ }
244
+ break;
245
+ }
246
+ return null;
247
+ }
96
248
  function extractInclude(node) {
97
- // path child is either string_literal or system_lib_string
98
249
  const pathNode = node.childForFieldName('path') ??
99
250
  node.namedChildren[0] ??
100
251
  null;
101
252
  const raw = pathNode?.text ?? '';
102
- // Strip surrounding quotes or angle brackets
103
253
  const source = raw.replace(/^["<]|[">]$/g, '');
104
254
  return { source, importedNames: [] };
105
255
  }
256
+ // ─── Type-ref extraction ──────────────────────────────────────────────────────
257
+ /**
258
+ * Extracts a type name from a C type node. Returns the text of the first
259
+ * `type_identifier`, `struct_specifier`, `enum_specifier`, or `sized_type_specifier`
260
+ * found within the node.
261
+ */
262
+ function extractCTypeName(typeNode) {
263
+ if (typeNode.type === 'type_identifier')
264
+ return typeNode.text;
265
+ if (typeNode.type === 'struct_specifier' || typeNode.type === 'enum_specifier') {
266
+ const nameNode = typeNode.childForFieldName('name');
267
+ if (nameNode && !typeNode.childForFieldName('body'))
268
+ return nameNode.text;
269
+ return null; // definition context, not a reference
270
+ }
271
+ if (typeNode.type === 'sized_type_specifier')
272
+ return typeNode.text;
273
+ // Walk children
274
+ for (const child of typeNode.namedChildren) {
275
+ const name = extractCTypeName(child);
276
+ if (name)
277
+ return name;
278
+ }
279
+ return null;
280
+ }
281
+ function emitTypeRef(refs, enclosingSymbol, typeRaw, refKind, line, character) {
282
+ refs.push({ enclosingSymbol, typeRaw, refKind, line, character });
283
+ }
284
+ function extractFunctionTypeRefs(funcNode, refs) {
285
+ const funcName = extractDeclaratorName(funcNode.childForFieldName('declarator') ?? funcNode);
286
+ // Return type
287
+ const typeNode = funcNode.childForFieldName('type');
288
+ if (typeNode) {
289
+ const typeName = extractCTypeName(typeNode);
290
+ if (typeName) {
291
+ emitTypeRef(refs, funcName, typeName, 'return', typeNode.startPosition.row, typeNode.startPosition.column);
292
+ }
293
+ }
294
+ // Parameters
295
+ const declarator = funcNode.childForFieldName('declarator');
296
+ if (declarator) {
297
+ const funcDeclarator = findFunctionDeclarator(declarator);
298
+ if (funcDeclarator) {
299
+ const params = funcDeclarator.childForFieldName('parameters');
300
+ if (params) {
301
+ for (const param of params.namedChildren) {
302
+ if (param.type === 'parameter_declaration') {
303
+ const paramType = param.childForFieldName('type');
304
+ if (paramType) {
305
+ const typeName = extractCTypeName(paramType);
306
+ if (typeName) {
307
+ emitTypeRef(refs, funcName, typeName, 'parameter', paramType.startPosition.row, paramType.startPosition.column);
308
+ }
309
+ }
310
+ }
311
+ }
312
+ }
313
+ }
314
+ }
315
+ }
316
+ function findFunctionDeclarator(node) {
317
+ if (node.type === 'function_declarator')
318
+ return node;
319
+ for (const child of node.namedChildren) {
320
+ const found = findFunctionDeclarator(child);
321
+ if (found)
322
+ return found;
323
+ }
324
+ return null;
325
+ }
326
+ function extractStructFieldTypeRefs(structNode, refs) {
327
+ const structName = structNode.childForFieldName('name')?.text ?? '';
328
+ const body = structNode.childForFieldName('body');
329
+ if (!body)
330
+ return;
331
+ for (const child of body.namedChildren) {
332
+ if (child.type === 'field_declaration') {
333
+ const typeNode = child.childForFieldName('type');
334
+ if (typeNode) {
335
+ const typeName = extractCTypeName(typeNode);
336
+ if (typeName) {
337
+ emitTypeRef(refs, structName, typeName, 'field', typeNode.startPosition.row, typeNode.startPosition.column);
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ function extractVariableTypeRefs(declNode, refs) {
344
+ // Skip if inside a function_definition (those are handled by extractFunctionTypeRefs)
345
+ const typeNode = declNode.childForFieldName('type');
346
+ if (!typeNode)
347
+ return;
348
+ const typeName = extractCTypeName(typeNode);
349
+ if (!typeName)
350
+ return;
351
+ const enclosing = findEnclosingSymbolName(declNode, C_SYMBOL_NODE_TYPES);
352
+ emitTypeRef(refs, enclosing, typeName, 'variable', typeNode.startPosition.row, typeNode.startPosition.column);
353
+ }
354
+ function extractSizeofTypeRef(node, refs) {
355
+ // sizeof(Type) — the type argument is typically a type_descriptor or parenthesized type
356
+ const valueNode = node.childForFieldName('value') ?? node.childForFieldName('type');
357
+ if (valueNode) {
358
+ const typeName = extractCTypeName(valueNode);
359
+ if (typeName) {
360
+ const enclosing = findEnclosingSymbolName(node, C_SYMBOL_NODE_TYPES);
361
+ emitTypeRef(refs, enclosing, typeName, 'sizeof', valueNode.startPosition.row, valueNode.startPosition.column);
362
+ }
363
+ }
364
+ }
365
+ function extractCastTypeRef(node, refs) {
366
+ const typeNode = node.childForFieldName('type');
367
+ if (typeNode) {
368
+ const typeName = extractCTypeName(typeNode);
369
+ if (typeName) {
370
+ const enclosing = findEnclosingSymbolName(node, C_SYMBOL_NODE_TYPES);
371
+ emitTypeRef(refs, enclosing, typeName, 'cast', typeNode.startPosition.row, typeNode.startPosition.column);
372
+ }
373
+ }
374
+ }
106
375
  //# sourceMappingURL=c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"c.js","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAKL,WAAW,EACX,SAAS,EACT,aAAa,EACb,IAAI,GACL,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AAEjF,MAAM,OAAO,UAAU;IACrB,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,kBAAkB;oBACrB,0EAA0E;oBAC1E,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM;gBACR,KAAK,gBAAgB;oBACnB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC3D,CAAC;oBACD,MAAM;gBACR,KAAK,qBAAqB;oBACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,iBAAiB;oBACpB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1C,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,iFAAiF;AAEjF,SAAS,eAAe,CAAC,IAAuB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO;QACL,IAAI;QACJ,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;;;GAGG;AACH,SAAS,qBAAqB,CAAC,UAA6B;IAC1D,kCAAkC;IAClC,IAAI,IAAI,GAA6B,UAAU,CAAC;IAChD,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACnD,MAAM,KAAK,GACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC;QACP,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM;QACpC,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAuB,EAAE,IAAY;IAClE,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,cAAc,CAAC,IAAuB;IAC7C,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;IACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;QAC1B,IAAI,EAAE,SAAS;QACf,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,cAAc,CAAC,IAAuB;IAC7C,2DAA2D;IAC3D,MAAM,QAAQ,GACZ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC;IACP,MAAM,GAAG,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IACjC,6CAA6C;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"c.js","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * @module indexer/extractors/cpp
3
3
  *
4
- * P1 C++ language extractor. Extracts function definitions, class/struct
5
- * declarations, and #include directives.
4
+ * C++ language extractor. Extracts:
5
+ * - Function definitions, class/struct declarations
6
+ * - Preprocessor macro definitions (`preproc_function_def`, `preproc_def`)
7
+ * - `#include` directives
8
+ * - Call-expression references with function-pointer / indirect-call awareness
6
9
  */
7
10
  import type Parser from 'tree-sitter';
8
11
  import { type ExtractionResult, type SymbolExtractor } from './types.js';
@@ -1 +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"}
1
+ {"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/cpp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EAOrB,KAAK,eAAe,EAOrB,MAAM,YAAY,CAAC;AAmBpB,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAiFjF"}