@jafreck/lore 0.2.4 → 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.
- package/README.md +22 -13
- package/dist/cli.js +81 -14
- package/dist/cli.js.map +1 -1
- package/dist/indexer/call-graph.d.ts +24 -7
- package/dist/indexer/call-graph.d.ts.map +1 -1
- package/dist/indexer/call-graph.js +154 -22
- package/dist/indexer/call-graph.js.map +1 -1
- package/dist/indexer/config-parser.js +6 -1
- package/dist/indexer/config-parser.js.map +1 -1
- package/dist/indexer/coverage.js +3 -1
- package/dist/indexer/coverage.js.map +1 -1
- package/dist/indexer/db.d.ts.map +1 -1
- package/dist/indexer/db.js +43 -0
- package/dist/indexer/db.js.map +1 -1
- package/dist/indexer/docs.d.ts.map +1 -1
- package/dist/indexer/docs.js +4 -0
- package/dist/indexer/docs.js.map +1 -1
- package/dist/indexer/embedder.d.ts.map +1 -1
- package/dist/indexer/embedder.js +5 -0
- package/dist/indexer/embedder.js.map +1 -1
- package/dist/indexer/extractors/bash.d.ts.map +1 -1
- package/dist/indexer/extractors/bash.js +29 -1
- package/dist/indexer/extractors/bash.js.map +1 -1
- package/dist/indexer/extractors/c.d.ts +5 -2
- package/dist/indexer/extractors/c.d.ts.map +1 -1
- package/dist/indexer/extractors/c.js +277 -8
- package/dist/indexer/extractors/c.js.map +1 -1
- package/dist/indexer/extractors/cpp.d.ts +5 -2
- package/dist/indexer/extractors/cpp.d.ts.map +1 -1
- package/dist/indexer/extractors/cpp.js +349 -3
- package/dist/indexer/extractors/cpp.js.map +1 -1
- package/dist/indexer/extractors/csharp.d.ts.map +1 -1
- package/dist/indexer/extractors/csharp.js +166 -1
- package/dist/indexer/extractors/csharp.js.map +1 -1
- package/dist/indexer/extractors/dart.d.ts.map +1 -1
- package/dist/indexer/extractors/dart.js +134 -1
- package/dist/indexer/extractors/dart.js.map +1 -1
- package/dist/indexer/extractors/elixir.d.ts.map +1 -1
- package/dist/indexer/extractors/elixir.js +45 -0
- package/dist/indexer/extractors/elixir.js.map +1 -1
- package/dist/indexer/extractors/elm.d.ts.map +1 -1
- package/dist/indexer/extractors/elm.js +33 -0
- package/dist/indexer/extractors/elm.js.map +1 -1
- package/dist/indexer/extractors/go.d.ts.map +1 -1
- package/dist/indexer/extractors/go.js +206 -1
- package/dist/indexer/extractors/go.js.map +1 -1
- package/dist/indexer/extractors/haskell.d.ts.map +1 -1
- package/dist/indexer/extractors/haskell.js +29 -0
- package/dist/indexer/extractors/haskell.js.map +1 -1
- package/dist/indexer/extractors/java.d.ts.map +1 -1
- package/dist/indexer/extractors/java.js +170 -1
- package/dist/indexer/extractors/java.js.map +1 -1
- package/dist/indexer/extractors/javascript.d.ts.map +1 -1
- package/dist/indexer/extractors/javascript.js +24 -2
- package/dist/indexer/extractors/javascript.js.map +1 -1
- package/dist/indexer/extractors/julia.d.ts.map +1 -1
- package/dist/indexer/extractors/julia.js +23 -1
- package/dist/indexer/extractors/julia.js.map +1 -1
- package/dist/indexer/extractors/kotlin.d.ts.map +1 -1
- package/dist/indexer/extractors/kotlin.js +122 -1
- package/dist/indexer/extractors/kotlin.js.map +1 -1
- package/dist/indexer/extractors/lua.d.ts.map +1 -1
- package/dist/indexer/extractors/lua.js +19 -1
- package/dist/indexer/extractors/lua.js.map +1 -1
- package/dist/indexer/extractors/objc.d.ts.map +1 -1
- package/dist/indexer/extractors/objc.js +171 -1
- package/dist/indexer/extractors/objc.js.map +1 -1
- package/dist/indexer/extractors/ocaml.d.ts.map +1 -1
- package/dist/indexer/extractors/ocaml.js +29 -0
- package/dist/indexer/extractors/ocaml.js.map +1 -1
- package/dist/indexer/extractors/php.d.ts.map +1 -1
- package/dist/indexer/extractors/php.js +133 -1
- package/dist/indexer/extractors/php.js.map +1 -1
- package/dist/indexer/extractors/python.d.ts.map +1 -1
- package/dist/indexer/extractors/python.js +24 -3
- package/dist/indexer/extractors/python.js.map +1 -1
- package/dist/indexer/extractors/ruby.d.ts.map +1 -1
- package/dist/indexer/extractors/ruby.js +23 -1
- package/dist/indexer/extractors/ruby.js.map +1 -1
- package/dist/indexer/extractors/rust.d.ts.map +1 -1
- package/dist/indexer/extractors/rust.js +139 -2
- package/dist/indexer/extractors/rust.js.map +1 -1
- package/dist/indexer/extractors/scala.d.ts.map +1 -1
- package/dist/indexer/extractors/scala.js +24 -1
- package/dist/indexer/extractors/scala.js.map +1 -1
- package/dist/indexer/extractors/swift.d.ts.map +1 -1
- package/dist/indexer/extractors/swift.js +129 -1
- package/dist/indexer/extractors/swift.js.map +1 -1
- package/dist/indexer/extractors/types.d.ts +78 -2
- package/dist/indexer/extractors/types.d.ts.map +1 -1
- package/dist/indexer/extractors/types.js +167 -8
- package/dist/indexer/extractors/types.js.map +1 -1
- package/dist/indexer/extractors/typescript.d.ts.map +1 -1
- package/dist/indexer/extractors/typescript.js +217 -1
- package/dist/indexer/extractors/typescript.js.map +1 -1
- package/dist/indexer/extractors/zig.d.ts.map +1 -1
- package/dist/indexer/extractors/zig.js +30 -0
- package/dist/indexer/extractors/zig.js.map +1 -1
- package/dist/indexer/git-history.d.ts.map +1 -1
- package/dist/indexer/git-history.js +4 -8
- package/dist/indexer/git-history.js.map +1 -1
- package/dist/indexer/git-hooks.js +1 -1
- package/dist/indexer/git-hooks.js.map +1 -1
- package/dist/indexer/index.d.ts +24 -1
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +199 -68
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/lsp/client.d.ts.map +1 -1
- package/dist/indexer/lsp/client.js +40 -15
- package/dist/indexer/lsp/client.js.map +1 -1
- package/dist/indexer/lsp/config.d.ts.map +1 -1
- package/dist/indexer/lsp/config.js +18 -4
- package/dist/indexer/lsp/config.js.map +1 -1
- package/dist/indexer/poller.d.ts +8 -0
- package/dist/indexer/poller.d.ts.map +1 -1
- package/dist/indexer/poller.js +3 -1
- package/dist/indexer/poller.js.map +1 -1
- package/dist/indexer/resolver.d.ts.map +1 -1
- package/dist/indexer/resolver.js +8 -4
- package/dist/indexer/resolver.js.map +1 -1
- package/dist/indexer/watcher.d.ts +8 -0
- package/dist/indexer/watcher.d.ts.map +1 -1
- package/dist/indexer/watcher.js +18 -1
- package/dist/indexer/watcher.js.map +1 -1
- package/dist/lore-server/db.d.ts.map +1 -1
- package/dist/lore-server/db.js +28 -24
- package/dist/lore-server/db.js.map +1 -1
- package/dist/lore-server/server.d.ts.map +1 -1
- package/dist/lore-server/server.js +12 -51
- package/dist/lore-server/server.js.map +1 -1
- package/dist/lore-server/tools/graph.d.ts +4 -3
- package/dist/lore-server/tools/graph.d.ts.map +1 -1
- package/dist/lore-server/tools/graph.js +48 -10
- package/dist/lore-server/tools/graph.js.map +1 -1
- package/dist/lore-server/tools/notes.d.ts.map +1 -1
- package/dist/lore-server/tools/notes.js +6 -2
- package/dist/lore-server/tools/notes.js.map +1 -1
- package/dist/lore-server/tools/search.d.ts.map +1 -1
- package/dist/lore-server/tools/search.js +46 -14
- package/dist/lore-server/tools/search.js.map +1 -1
- 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,
|
|
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
|
|
128
|
-
*
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,QAAQ,EAAE,OAAO,CAAC;IAClB,2FAA2F;IAC3F,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,yHAAyH;IACzH,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,uFAAuF;IACvF,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
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
|
|
29
|
-
*
|
|
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
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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;
|
|
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,
|
|
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"}
|