@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
@@ -4,7 +4,12 @@
4
4
  * Swift language extractor. Extracts function declarations, class/struct/enum/
5
5
  * protocol declarations, and import declarations.
6
6
  */
7
- import { emptyResult, nodeSignature, walk, } from './types.js';
7
+ import { createTypeRefEmitter, emptyResult, findEnclosingSymbolName, nodeSignature, walk, } from './types.js';
8
+ const SWIFT_SYMBOL_NODE_TYPES = [
9
+ 'function_declaration',
10
+ 'class_declaration',
11
+ 'struct_declaration',
12
+ ];
8
13
  // ─── SwiftExtractor ───────────────────────────────────────────────────────────
9
14
  export class SwiftExtractor {
10
15
  extract(tree, _source, _filePath) {
@@ -13,12 +18,17 @@ export class SwiftExtractor {
13
18
  switch (node.type) {
14
19
  case 'function_declaration':
15
20
  result.symbols.push(extractFunction(node));
21
+ extractSwiftFunctionTypeRefs(node, result.typeRefs);
16
22
  break;
17
23
  case 'class_declaration':
18
24
  result.symbols.push(extractNamedNode(node, 'class'));
25
+ extractSwiftInheritance(node, result.relationships, result.typeRefs);
26
+ extractSwiftClassFieldTypeRefs(node, result.typeRefs);
19
27
  break;
20
28
  case 'struct_declaration':
21
29
  result.symbols.push(extractNamedNode(node, 'struct'));
30
+ extractSwiftInheritance(node, result.relationships, result.typeRefs);
31
+ extractSwiftClassFieldTypeRefs(node, result.typeRefs);
22
32
  break;
23
33
  case 'enum_declaration':
24
34
  result.symbols.push(extractNamedNode(node, 'enum'));
@@ -32,12 +42,39 @@ export class SwiftExtractor {
32
42
  case 'import_declaration':
33
43
  result.imports.push(extractImport(node));
34
44
  break;
45
+ case 'call_expression': {
46
+ const ref = extractCallRef(node);
47
+ if (ref)
48
+ result.callRefs.push(ref);
49
+ break;
50
+ }
51
+ case 'property_declaration':
52
+ case 'pattern_binding_declaration': {
53
+ extractSwiftVarTypeRef(node, result.typeRefs);
54
+ break;
55
+ }
56
+ case 'as_expression': {
57
+ extractSwiftCastTypeRef(node, result.typeRefs);
58
+ break;
59
+ }
35
60
  }
36
61
  }
37
62
  return result;
38
63
  }
39
64
  }
40
65
  // ─── Helpers ──────────────────────────────────────────────────────────────────
66
+ function extractCallRef(node) {
67
+ // Swift call_expression: first named child is typically the callee
68
+ const fnNode = node.namedChildren[0];
69
+ if (!fnNode)
70
+ return null;
71
+ return {
72
+ callerSymbol: findEnclosingSymbolName(node, SWIFT_SYMBOL_NODE_TYPES),
73
+ calleeRaw: fnNode.text,
74
+ line: node.startPosition.row,
75
+ character: node.startPosition.column,
76
+ };
77
+ }
41
78
  function extractFunction(node) {
42
79
  const nameNode = node.childForFieldName('name');
43
80
  return {
@@ -87,4 +124,95 @@ function extractImport(node) {
87
124
  const importedNames = parts.length > 1 ? [parts[parts.length - 1] ?? ''] : [];
88
125
  return { source, importedNames };
89
126
  }
127
+ // ─── Inheritance / type-ref extraction ─────────────────────────────────────────
128
+ function extractSwiftInheritance(node, relationships, typeRefs) {
129
+ const name = node.childForFieldName('name')?.text ?? '';
130
+ if (!name)
131
+ return;
132
+ const isClass = node.type === 'class_declaration';
133
+ // Look for type_inheritance_clause
134
+ const inheritanceClause = node.namedChildren.find(c => c.type === 'type_inheritance_clause' || c.type === 'inheritance_specifier');
135
+ if (!inheritanceClause)
136
+ return;
137
+ let first = true;
138
+ for (const child of inheritanceClause.namedChildren) {
139
+ if (child.type === 'type_identifier' || child.type === 'user_type') {
140
+ const baseName = child.text;
141
+ const kind = (isClass && first) ? 'extends' : 'implements';
142
+ relationships.push({ kind, fromSymbol: name, toSymbol: baseName, line: child.startPosition.row, character: child.startPosition.column });
143
+ typeRefs.push({ enclosingSymbol: name, typeRaw: baseName, refKind: 'bound', line: child.startPosition.row, character: child.startPosition.column });
144
+ first = false;
145
+ }
146
+ }
147
+ }
148
+ function extractSwiftTypeName(typeNode) {
149
+ if (typeNode.type === 'type_identifier' || typeNode.type === 'user_type')
150
+ return typeNode.text;
151
+ if (typeNode.type === 'optional_type') {
152
+ const inner = typeNode.namedChildren[0];
153
+ return inner ? extractSwiftTypeName(inner) : null;
154
+ }
155
+ if (typeNode.type === 'array_type') {
156
+ const element = typeNode.namedChildren[0];
157
+ return element ? extractSwiftTypeName(element) : null;
158
+ }
159
+ return null;
160
+ }
161
+ const emitSwiftTypeRef = createTypeRefEmitter({
162
+ extractTypeName: extractSwiftTypeName,
163
+ genericNodeType: 'generic_type',
164
+ argListNodeType: 'type_arguments',
165
+ });
166
+ function extractSwiftFunctionTypeRefs(funcNode, refs) {
167
+ const funcName = funcNode.childForFieldName('name')?.text ?? '';
168
+ // Parameters — walk all children looking for parameter nodes
169
+ for (const child of funcNode.namedChildren) {
170
+ if (child.type === 'function_parameter' || child.type === 'parameter') {
171
+ const typeAnnotation = child.childForFieldName('type');
172
+ if (typeAnnotation)
173
+ emitSwiftTypeRef(refs, funcName, typeAnnotation, 'parameter');
174
+ }
175
+ }
176
+ // Return type — only match function_result to avoid grabbing parameter types
177
+ const returnClause = funcNode.namedChildren.find(c => c.type === 'function_result');
178
+ if (returnClause) {
179
+ const typeNode = returnClause.namedChildren[0];
180
+ if (typeNode)
181
+ emitSwiftTypeRef(refs, funcName, typeNode, 'return');
182
+ }
183
+ }
184
+ function extractSwiftClassFieldTypeRefs(classNode, refs) {
185
+ const className = classNode.childForFieldName('name')?.text ?? '';
186
+ const body = classNode.childForFieldName('body') ?? classNode.namedChildren.find(c => c.type === 'class_body');
187
+ if (!body)
188
+ return;
189
+ for (const child of body.namedChildren) {
190
+ if (child.type === 'property_declaration') {
191
+ const typeAnnotation = child.namedChildren.find(c => c.type === 'type_annotation');
192
+ if (typeAnnotation) {
193
+ const typeNode = typeAnnotation.namedChildren[0];
194
+ if (typeNode)
195
+ emitSwiftTypeRef(refs, className, typeNode, 'field');
196
+ }
197
+ }
198
+ }
199
+ }
200
+ function extractSwiftVarTypeRef(node, refs) {
201
+ const typeAnnotation = node.namedChildren.find(c => c.type === 'type_annotation');
202
+ if (!typeAnnotation)
203
+ return;
204
+ const typeNode = typeAnnotation.namedChildren[0];
205
+ if (!typeNode)
206
+ return;
207
+ const enclosing = findEnclosingSymbolName(node, SWIFT_SYMBOL_NODE_TYPES);
208
+ emitSwiftTypeRef(refs, enclosing, typeNode, 'variable');
209
+ }
210
+ function extractSwiftCastTypeRef(node, refs) {
211
+ // expression as Type or expression as? Type
212
+ const typeNode = node.namedChildren.find(c => c.type === 'type_identifier' || c.type === 'user_type' || c.type === 'optional_type');
213
+ if (!typeNode)
214
+ return;
215
+ const enclosing = findEnclosingSymbolName(node, SWIFT_SYMBOL_NODE_TYPES);
216
+ emitSwiftTypeRef(refs, enclosing, typeNode, 'cast');
217
+ }
90
218
  //# sourceMappingURL=swift.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../src/indexer/extractors/swift.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAKL,WAAW,EACX,aAAa,EACb,IAAI,GACL,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AAEjF,MAAM,OAAO,cAAc;IACzB,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,sBAAsB;oBACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3C,MAAM;gBACR,KAAK,mBAAmB;oBACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBACrD,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,sBAAsB;oBACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,uBAAuB;oBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5C,MAAM;gBACR,KAAK,oBAAoB;oBACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;oBACzC,MAAM;YACV,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,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,gBAAgB,CAAC,IAAuB;IAC/C,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;QAC1B,IAAI,EAAE,WAAW;QACjB,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,+DAA+D;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;SACnB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,IAAI,EAAE,CAAC;IAEV,uEAAuE;IACvE,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9F,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../src/indexer/extractors/swift.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,15 @@ export interface RawImport {
44
44
  /** Named symbols imported from the source (empty for wildcard / side-effect imports). */
45
45
  importedNames: string[];
46
46
  }
47
+ /**
48
+ * Classification of how a call-site invokes its target.
49
+ *
50
+ * - `'direct'` — ordinary named function/method call.
51
+ * - `'indirect'` — call through a function pointer or `std::function`-like wrapper.
52
+ * - `'macro'` — invocation of a function-like macro.
53
+ * - `'virtual'` — virtual / dynamic-dispatch call (reserved for future use).
54
+ */
55
+ export type CallKind = 'direct' | 'indirect' | 'macro' | 'virtual';
47
56
  /** A call-site reference found in a source file. */
48
57
  export interface RawCallRef {
49
58
  /** Name of the enclosing symbol that contains the call (empty string if top-level). */
@@ -54,6 +63,10 @@ export interface RawCallRef {
54
63
  line: number;
55
64
  /** 0-indexed character in the call line (best-effort, optional). */
56
65
  character?: number;
66
+ /** How the callee is invoked (defaults to `'direct'` when absent). */
67
+ callKind?: CallKind;
68
+ /** True when the call target is reached via indirection (pointer deref, field, etc.). */
69
+ isIndirect?: boolean;
57
70
  }
58
71
  /** An environment-variable reference found in a source file. */
59
72
  export interface RawEnvRef {
@@ -72,6 +85,25 @@ export interface RawRelationship {
72
85
  toSymbol: string;
73
86
  /** 0-indexed line where the relationship is declared. */
74
87
  line: number;
88
+ /** 0-indexed character of the target type identifier (best-effort, optional). */
89
+ character?: number;
90
+ }
91
+ /**
92
+ * Classification of how a type reference is used at the referencing site.
93
+ */
94
+ export type TypeRefKind = 'parameter' | 'return' | 'field' | 'variable' | 'cast' | 'sizeof' | 'generic_arg' | 'bound' | 'other';
95
+ /** A type-usage reference found in a source file. */
96
+ export interface RawTypeRef {
97
+ /** Name of the enclosing symbol that contains the reference (empty string if top-level). */
98
+ enclosingSymbol: string;
99
+ /** Raw type text as it appears in source. */
100
+ typeRaw: string;
101
+ /** How the type is referenced (parameter, return, field, etc.). */
102
+ refKind: TypeRefKind;
103
+ /** 0-indexed line of the type reference. */
104
+ line: number;
105
+ /** 0-indexed character in the line (best-effort, optional). */
106
+ character?: number;
75
107
  }
76
108
  /** A framework route/endpoint extracted from source. */
77
109
  export interface RawRoute {
@@ -95,6 +127,7 @@ export interface ExtractionResult {
95
127
  callRefs: RawCallRef[];
96
128
  envRefs: RawEnvRef[];
97
129
  relationships: RawRelationship[];
130
+ typeRefs: RawTypeRef[];
98
131
  routes: RawRoute[];
99
132
  }
100
133
  /**
@@ -124,12 +157,21 @@ export declare function walk(node: Parser.SyntaxNode): Generator<Parser.SyntaxNo
124
157
  */
125
158
  export declare function findFirst(node: Parser.SyntaxNode, type: string): Parser.SyntaxNode | null;
126
159
  /**
127
- * Extracts a signature from a node by returning everything before the first
128
- * opening brace `{` (or the first line if there is no brace).
160
+ * Extracts a signature from a node by returning everything before the body block.
161
+ * Uses the AST body node position when available, falling back to the first
162
+ * top-level `{` on the first line if there is no body.
129
163
  */
130
164
  export declare function nodeSignature(node: Parser.SyntaxNode): string;
131
165
  /** Returns an empty `ExtractionResult`. */
132
166
  export declare function emptyResult(): ExtractionResult;
167
+ /**
168
+ * Walks up the parent chain from `node` to find the nearest enclosing symbol
169
+ * declaration and returns its name. Returns `''` for top-level code.
170
+ *
171
+ * @param symbolNodeTypes AST node types that represent symbol declarations
172
+ * in the current language (e.g. `function_definition`).
173
+ */
174
+ export declare function findEnclosingSymbolName(node: Parser.SyntaxNode, symbolNodeTypes: readonly string[]): string;
133
175
  /**
134
176
  * Returns true when a symbol belongs to the public declaration API surface.
135
177
  *
@@ -137,4 +179,38 @@ export declare function emptyResult(): ExtractionResult;
137
179
  * they migrate to `declarationSurface`.
138
180
  */
139
181
  export declare function isPublicDeclarationSurfaceSymbol(symbol: RawSymbol): boolean;
182
+ /**
183
+ * Extracts type argument names from a generic/template type node.
184
+ *
185
+ * Walks the immediate children of the argument list node and returns their
186
+ * text values. One level deep only — nested generics are **not** recursed.
187
+ *
188
+ * @param typeNode The type node that may contain generic args.
189
+ * @param genericNodeType The AST node type of the generic wrapper (e.g. `generic_type`, `template_type`).
190
+ * @param argListNodeType The AST node type of the argument list (e.g. `type_arguments`, `template_argument_list`).
191
+ * @returns Array of type argument text values, or empty if none found.
192
+ */
193
+ export declare function extractGenericTypeArgs(typeNode: Parser.SyntaxNode, genericNodeType: string, argListNodeType: string): string[];
194
+ /**
195
+ * Creates a type-ref emitter function that encapsulates the standard
196
+ * three-step pattern used by most language extractors:
197
+ *
198
+ * 1. Call `extractTypeName(typeNode)` → `string | null`
199
+ * 2. Push a `RawTypeRef` with the result
200
+ * 3. Call `extractGenericTypeArgs` and push a `RawTypeRef` per arg with `refKind: 'generic_arg'`
201
+ *
202
+ * @param config.extractTypeName Language-specific function to extract a type name from a node.
203
+ * @param config.genericNodeType AST node type for generic/template wrappers.
204
+ * @param config.argListNodeType AST node type for the generic argument list.
205
+ * @param config.recurseIntoTypes Optional list of AST node types to recurse into
206
+ * (e.g. `['union_type', 'intersection_type']` for TypeScript).
207
+ * When the type node matches one of these, the emitter walks
208
+ * its `namedChildren` instead of emitting directly.
209
+ */
210
+ export declare function createTypeRefEmitter(config: {
211
+ extractTypeName: (node: Parser.SyntaxNode) => string | null;
212
+ genericNodeType: string;
213
+ argListNodeType: string;
214
+ recurseIntoTypes?: string[];
215
+ }): (refs: RawTypeRef[], enclosing: string, typeNode: Parser.SyntaxNode, refKind: TypeRefKind) => void;
140
216
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/types.ts"],"names":[],"mappings":"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"}
@@ -25,20 +25,79 @@ export function findFirst(node, type) {
25
25
  return null;
26
26
  }
27
27
  /**
28
- * Extracts a signature from a node by returning everything before the first
29
- * opening brace `{` (or the first line if there is no brace).
28
+ * Extracts a signature from a node by returning everything before the body block.
29
+ * Uses the AST body node position when available, falling back to the first
30
+ * top-level `{` on the first line if there is no body.
30
31
  */
31
32
  export function nodeSignature(node) {
32
- const text = node.text;
33
- const braceIdx = text.indexOf('{');
34
- if (braceIdx !== -1) {
35
- return text.slice(0, braceIdx).trim();
33
+ // Try to find the body node by common field names used across languages.
34
+ const body = node.childForFieldName('body')
35
+ ?? node.childForFieldName('block')
36
+ ?? node.childForFieldName('class_body');
37
+ if (body) {
38
+ // Slice from the start of the node to the start of the body.
39
+ const startByte = node.startIndex;
40
+ const bodyStartByte = body.startIndex;
41
+ if (bodyStartByte > startByte) {
42
+ const text = node.text.slice(0, bodyStartByte - startByte);
43
+ return text.trim();
44
+ }
36
45
  }
37
- return (text.split('\n')[0] ?? text).trim();
46
+ // Fallback: take the first line and strip a trailing `{` brace that is
47
+ // likely the start of a block body (e.g. Go struct/interface declarations
48
+ // where the body isn't a named field). We only strip if the brace is
49
+ // at the end of the first line to avoid truncating default parameter objects
50
+ // like `function foo(opts = { bar: 1 })`.
51
+ const firstLine = (node.text.split('\n')[0] ?? node.text).trim();
52
+ return firstLine.replace(/\s*\{$/, '').trim();
38
53
  }
39
54
  /** Returns an empty `ExtractionResult`. */
40
55
  export function emptyResult() {
41
- return { symbols: [], imports: [], callRefs: [], envRefs: [], relationships: [], routes: [] };
56
+ return { symbols: [], imports: [], callRefs: [], envRefs: [], relationships: [], typeRefs: [], routes: [] };
57
+ }
58
+ /**
59
+ * Walks up the parent chain from `node` to find the nearest enclosing symbol
60
+ * declaration and returns its name. Returns `''` for top-level code.
61
+ *
62
+ * @param symbolNodeTypes AST node types that represent symbol declarations
63
+ * in the current language (e.g. `function_definition`).
64
+ */
65
+ export function findEnclosingSymbolName(node, symbolNodeTypes) {
66
+ let current = node.parent;
67
+ while (current) {
68
+ if (symbolNodeTypes.includes(current.type)) {
69
+ // Standard 'name' field (Go, Python, Rust, Java, C#, etc.)
70
+ const nameNode = current.childForFieldName('name');
71
+ if (nameNode)
72
+ return nameNode.text;
73
+ // C/C++ use 'declarator' for function names
74
+ const declNode = current.childForFieldName('declarator');
75
+ if (declNode) {
76
+ const id = findFirst(declNode, 'qualified_identifier')
77
+ ?? findFirst(declNode, 'identifier');
78
+ if (id)
79
+ return id.text;
80
+ }
81
+ }
82
+ // TS/JS arrow functions: const foo = () => {} — name is on the variable_declarator
83
+ if (current.type === 'variable_declarator'
84
+ && current.parent
85
+ && (current.parent.type === 'lexical_declaration' || current.parent.type === 'variable_declaration')) {
86
+ const valueNode = current.childForFieldName('value');
87
+ if (valueNode
88
+ && (valueNode.type === 'arrow_function'
89
+ || valueNode.type === 'function_expression'
90
+ || valueNode.type === 'generator_function')
91
+ && node.startIndex >= valueNode.startIndex
92
+ && node.endIndex <= valueNode.endIndex) {
93
+ const nameNode = current.childForFieldName('name');
94
+ if (nameNode)
95
+ return nameNode.text;
96
+ }
97
+ }
98
+ current = current.parent;
99
+ }
100
+ return '';
42
101
  }
43
102
  /**
44
103
  * Returns true when a symbol belongs to the public declaration API surface.
@@ -52,4 +111,104 @@ export function isPublicDeclarationSurfaceSymbol(symbol) {
52
111
  }
53
112
  return symbol.isExported === true;
54
113
  }
114
+ /**
115
+ * Extracts type argument names from a generic/template type node.
116
+ *
117
+ * Walks the immediate children of the argument list node and returns their
118
+ * text values. One level deep only — nested generics are **not** recursed.
119
+ *
120
+ * @param typeNode The type node that may contain generic args.
121
+ * @param genericNodeType The AST node type of the generic wrapper (e.g. `generic_type`, `template_type`).
122
+ * @param argListNodeType The AST node type of the argument list (e.g. `type_arguments`, `template_argument_list`).
123
+ * @returns Array of type argument text values, or empty if none found.
124
+ */
125
+ export function extractGenericTypeArgs(typeNode, genericNodeType, argListNodeType) {
126
+ if (typeNode.type !== genericNodeType)
127
+ return [];
128
+ for (const child of typeNode.namedChildren) {
129
+ if (child.type === argListNodeType) {
130
+ return child.namedChildren.map(c => c.text);
131
+ }
132
+ }
133
+ return [];
134
+ }
135
+ /**
136
+ * Unwraps wrapper types (nullable, reference, pointer, array, optional, slice)
137
+ * to find the inner type node that may carry generic arguments.
138
+ *
139
+ * When `extractTypeName` descends through these wrappers internally but
140
+ * `extractGenericTypeArgs` is called on the outer node, generic args would be
141
+ * lost because the outer node's type doesn't match `genericNodeType`.
142
+ */
143
+ const WRAPPER_NODE_TYPES = new Set([
144
+ 'nullable_type',
145
+ 'optional_type',
146
+ 'reference_type',
147
+ 'pointer_type',
148
+ 'slice_type',
149
+ 'array_type',
150
+ ]);
151
+ function unwrapToGenericNode(node, genericNodeType) {
152
+ let current = node;
153
+ while (WRAPPER_NODE_TYPES.has(current.type) && current.type !== genericNodeType) {
154
+ const inner = current.namedChildren.find(c => c.type !== 'mutable_specifier' && c.type !== 'lifetime');
155
+ if (!inner)
156
+ break;
157
+ current = inner;
158
+ }
159
+ return current;
160
+ }
161
+ /**
162
+ * Creates a type-ref emitter function that encapsulates the standard
163
+ * three-step pattern used by most language extractors:
164
+ *
165
+ * 1. Call `extractTypeName(typeNode)` → `string | null`
166
+ * 2. Push a `RawTypeRef` with the result
167
+ * 3. Call `extractGenericTypeArgs` and push a `RawTypeRef` per arg with `refKind: 'generic_arg'`
168
+ *
169
+ * @param config.extractTypeName Language-specific function to extract a type name from a node.
170
+ * @param config.genericNodeType AST node type for generic/template wrappers.
171
+ * @param config.argListNodeType AST node type for the generic argument list.
172
+ * @param config.recurseIntoTypes Optional list of AST node types to recurse into
173
+ * (e.g. `['union_type', 'intersection_type']` for TypeScript).
174
+ * When the type node matches one of these, the emitter walks
175
+ * its `namedChildren` instead of emitting directly.
176
+ */
177
+ export function createTypeRefEmitter(config) {
178
+ const { extractTypeName, genericNodeType, argListNodeType, recurseIntoTypes } = config;
179
+ const emitter = (refs, enclosing, typeNode, refKind) => {
180
+ // Recurse into compound types (union, intersection, map, etc.)
181
+ if (recurseIntoTypes && recurseIntoTypes.includes(typeNode.type)) {
182
+ for (const child of typeNode.namedChildren) {
183
+ emitter(refs, enclosing, child, refKind);
184
+ }
185
+ return;
186
+ }
187
+ const typeName = extractTypeName(typeNode);
188
+ if (!typeName)
189
+ return;
190
+ refs.push({
191
+ enclosingSymbol: enclosing,
192
+ typeRaw: typeName,
193
+ refKind,
194
+ line: typeNode.startPosition.row,
195
+ character: typeNode.startPosition.column,
196
+ });
197
+ // Unwrap wrapper types (nullable, optional, reference, etc.) before
198
+ // checking for generic args — extractTypeName may have already descended
199
+ // through these wrappers, so the outer node won't match genericNodeType.
200
+ const innerNode = unwrapToGenericNode(typeNode, genericNodeType);
201
+ const genericArgs = extractGenericTypeArgs(innerNode, genericNodeType, argListNodeType);
202
+ for (const arg of genericArgs) {
203
+ refs.push({
204
+ enclosingSymbol: enclosing,
205
+ typeRaw: arg,
206
+ refKind: 'generic_arg',
207
+ line: typeNode.startPosition.row,
208
+ character: typeNode.startPosition.column,
209
+ });
210
+ }
211
+ };
212
+ return emitter;
213
+ }
55
214
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/indexer/extractors/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgIH,iFAAiF;AAEjF;;GAEG;AACH,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,IAAuB;IAC3C,MAAM,IAAI,CAAC;IACX,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,IAAuB,EACvB,IAAY;IAEZ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAuB;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,kBAAkB,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/indexer/extractors/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAIrB,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gCAAgC,EAAE,mBAyB9C,CAAC;AAIF,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB;CAoC/E"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAOrB,KAAK,eAAe,EAMrB,MAAM,YAAY,CAAC;AASpB,eAAO,MAAM,gCAAgC,EAAE,mBAyB9C,CAAC;AAIF,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB;CA0D/E"}