kiri-mcp-server 0.16.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +65 -22
  2. package/dist/package.json +4 -2
  3. package/dist/src/client/proxy.js +0 -0
  4. package/dist/src/daemon/daemon.js +0 -0
  5. package/dist/src/indexer/codeintel/dart/adapter.d.ts +36 -0
  6. package/dist/src/indexer/codeintel/dart/adapter.d.ts.map +1 -0
  7. package/dist/src/indexer/codeintel/dart/adapter.js +60 -0
  8. package/dist/src/indexer/codeintel/dart/adapter.js.map +1 -0
  9. package/dist/src/indexer/codeintel/dart/index.d.ts +7 -0
  10. package/dist/src/indexer/codeintel/dart/index.d.ts.map +1 -0
  11. package/dist/src/indexer/codeintel/dart/index.js +7 -0
  12. package/dist/src/indexer/codeintel/dart/index.js.map +1 -0
  13. package/dist/src/indexer/codeintel/index.d.ts +30 -0
  14. package/dist/src/indexer/codeintel/index.d.ts.map +1 -0
  15. package/dist/src/indexer/codeintel/index.js +32 -0
  16. package/dist/src/indexer/codeintel/index.js.map +1 -0
  17. package/dist/src/indexer/codeintel/java/analyzer.d.ts +22 -0
  18. package/dist/src/indexer/codeintel/java/analyzer.d.ts.map +1 -0
  19. package/dist/src/indexer/codeintel/java/analyzer.js +281 -0
  20. package/dist/src/indexer/codeintel/java/analyzer.js.map +1 -0
  21. package/dist/src/indexer/codeintel/java/index.d.ts +7 -0
  22. package/dist/src/indexer/codeintel/java/index.d.ts.map +1 -0
  23. package/dist/src/indexer/codeintel/java/index.js +7 -0
  24. package/dist/src/indexer/codeintel/java/index.js.map +1 -0
  25. package/dist/src/indexer/codeintel/php/analyzer.d.ts +23 -0
  26. package/dist/src/indexer/codeintel/php/analyzer.d.ts.map +1 -0
  27. package/dist/src/indexer/codeintel/php/analyzer.js +342 -0
  28. package/dist/src/indexer/codeintel/php/analyzer.js.map +1 -0
  29. package/dist/src/indexer/codeintel/php/index.d.ts +7 -0
  30. package/dist/src/indexer/codeintel/php/index.d.ts.map +1 -0
  31. package/dist/src/indexer/codeintel/php/index.js +7 -0
  32. package/dist/src/indexer/codeintel/php/index.js.map +1 -0
  33. package/dist/src/indexer/codeintel/registry.d.ts +76 -0
  34. package/dist/src/indexer/codeintel/registry.d.ts.map +1 -0
  35. package/dist/src/indexer/codeintel/registry.js +127 -0
  36. package/dist/src/indexer/codeintel/registry.js.map +1 -0
  37. package/dist/src/indexer/codeintel/rust/analyzer.d.ts +14 -0
  38. package/dist/src/indexer/codeintel/rust/analyzer.d.ts.map +1 -0
  39. package/dist/src/indexer/codeintel/rust/analyzer.js +388 -0
  40. package/dist/src/indexer/codeintel/rust/analyzer.js.map +1 -0
  41. package/dist/src/indexer/codeintel/rust/index.d.ts +5 -0
  42. package/dist/src/indexer/codeintel/rust/index.d.ts.map +1 -0
  43. package/dist/src/indexer/codeintel/rust/index.js +5 -0
  44. package/dist/src/indexer/codeintel/rust/index.js.map +1 -0
  45. package/dist/src/indexer/codeintel/swift/analyzer.d.ts +22 -0
  46. package/dist/src/indexer/codeintel/swift/analyzer.d.ts.map +1 -0
  47. package/dist/src/indexer/codeintel/swift/analyzer.js +271 -0
  48. package/dist/src/indexer/codeintel/swift/analyzer.js.map +1 -0
  49. package/dist/src/indexer/codeintel/swift/index.d.ts +7 -0
  50. package/dist/src/indexer/codeintel/swift/index.d.ts.map +1 -0
  51. package/dist/src/indexer/codeintel/swift/index.js +7 -0
  52. package/dist/src/indexer/codeintel/swift/index.js.map +1 -0
  53. package/dist/src/indexer/codeintel/types.d.ts +114 -0
  54. package/dist/src/indexer/codeintel/types.d.ts.map +1 -0
  55. package/dist/src/indexer/codeintel/types.js +13 -0
  56. package/dist/src/indexer/codeintel/types.js.map +1 -0
  57. package/dist/src/indexer/codeintel/typescript/analyzer.d.ts +22 -0
  58. package/dist/src/indexer/codeintel/typescript/analyzer.d.ts.map +1 -0
  59. package/dist/{indexer/codeintel.js → src/indexer/codeintel/typescript/analyzer.js} +62 -34
  60. package/dist/src/indexer/codeintel/typescript/analyzer.js.map +1 -0
  61. package/dist/src/indexer/codeintel/typescript/index.d.ts +7 -0
  62. package/dist/src/indexer/codeintel/typescript/index.d.ts.map +1 -0
  63. package/dist/src/indexer/codeintel/typescript/index.js +7 -0
  64. package/dist/src/indexer/codeintel/typescript/index.js.map +1 -0
  65. package/dist/src/indexer/codeintel/utils.d.ts +91 -0
  66. package/dist/src/indexer/codeintel/utils.d.ts.map +1 -0
  67. package/dist/src/indexer/codeintel/utils.js +145 -0
  68. package/dist/src/indexer/codeintel/utils.js.map +1 -0
  69. package/dist/src/indexer/codeintel.d.ts +33 -26
  70. package/dist/src/indexer/codeintel.d.ts.map +1 -1
  71. package/dist/src/indexer/codeintel.js +56 -1078
  72. package/dist/src/indexer/codeintel.js.map +1 -1
  73. package/dist/src/indexer/graph-metrics.d.ts.map +1 -1
  74. package/dist/src/indexer/graph-metrics.js +16 -4
  75. package/dist/src/indexer/graph-metrics.js.map +1 -1
  76. package/dist/src/server/boost-profiles.d.ts +1 -1
  77. package/dist/src/server/boost-profiles.d.ts.map +1 -1
  78. package/dist/src/server/boost-profiles.js +22 -0
  79. package/dist/src/server/boost-profiles.js.map +1 -1
  80. package/dist/src/server/main.js +0 -0
  81. package/dist/src/server/rpc.js +4 -4
  82. package/dist/src/server/rpc.js.map +1 -1
  83. package/package.json +10 -2
  84. package/dist/client/cli.js +0 -68
  85. package/dist/client/cli.js.map +0 -1
  86. package/dist/client/index.js +0 -5
  87. package/dist/client/index.js.map +0 -1
  88. package/dist/eval/metrics.js +0 -47
  89. package/dist/eval/metrics.js.map +0 -1
  90. package/dist/indexer/cli.js +0 -362
  91. package/dist/indexer/cli.js.map +0 -1
  92. package/dist/indexer/codeintel.js.map +0 -1
  93. package/dist/indexer/git.js +0 -30
  94. package/dist/indexer/git.js.map +0 -1
  95. package/dist/indexer/language.js +0 -34
  96. package/dist/indexer/language.js.map +0 -1
  97. package/dist/indexer/pipeline/filters/denylist.js +0 -71
  98. package/dist/indexer/pipeline/filters/denylist.js.map +0 -1
  99. package/dist/indexer/schema.js +0 -101
  100. package/dist/indexer/schema.js.map +0 -1
  101. package/dist/server/bootstrap.js +0 -19
  102. package/dist/server/bootstrap.js.map +0 -1
  103. package/dist/server/context.js +0 -1
  104. package/dist/server/context.js.map +0 -1
  105. package/dist/server/fallbacks/degradeController.js +0 -69
  106. package/dist/server/fallbacks/degradeController.js.map +0 -1
  107. package/dist/server/handlers.js +0 -1268
  108. package/dist/server/handlers.js.map +0 -1
  109. package/dist/server/main.js +0 -151
  110. package/dist/server/main.js.map +0 -1
  111. package/dist/server/observability/metrics.js +0 -56
  112. package/dist/server/observability/metrics.js.map +0 -1
  113. package/dist/server/observability/tracing.js +0 -58
  114. package/dist/server/observability/tracing.js.map +0 -1
  115. package/dist/server/rpc.js +0 -477
  116. package/dist/server/rpc.js.map +0 -1
  117. package/dist/server/runtime.js +0 -47
  118. package/dist/server/runtime.js.map +0 -1
  119. package/dist/server/scoring.js +0 -116
  120. package/dist/server/scoring.js.map +0 -1
  121. package/dist/server/stdio.js +0 -76
  122. package/dist/server/stdio.js.map +0 -1
  123. package/dist/shared/duckdb.js +0 -119
  124. package/dist/shared/duckdb.js.map +0 -1
  125. package/dist/shared/embedding.js +0 -98
  126. package/dist/shared/embedding.js.map +0 -1
  127. package/dist/shared/index.js +0 -9
  128. package/dist/shared/index.js.map +0 -1
  129. package/dist/shared/security/config.js +0 -64
  130. package/dist/shared/security/config.js.map +0 -1
  131. package/dist/shared/security/masker.js +0 -56
  132. package/dist/shared/security/masker.js.map +0 -1
  133. package/dist/shared/tokenizer.js +0 -4
  134. package/dist/shared/tokenizer.js.map +0 -1
  135. package/dist/shared/utils/simpleYaml.js +0 -89
  136. package/dist/shared/utils/simpleYaml.js.map +0 -1
  137. package/dist/src/server/rrf.d.ts +0 -86
  138. package/dist/src/server/rrf.d.ts.map +0 -1
  139. package/dist/src/server/rrf.js +0 -108
  140. package/dist/src/server/rrf.js.map +0 -1
  141. package/dist/src/shared/embedding/engine.d.ts +0 -38
  142. package/dist/src/shared/embedding/engine.d.ts.map +0 -1
  143. package/dist/src/shared/embedding/engine.js +0 -6
  144. package/dist/src/shared/embedding/engine.js.map +0 -1
  145. package/dist/src/shared/embedding/lsh-engine.d.ts +0 -11
  146. package/dist/src/shared/embedding/lsh-engine.d.ts.map +0 -1
  147. package/dist/src/shared/embedding/lsh-engine.js +0 -14
  148. package/dist/src/shared/embedding/lsh-engine.js.map +0 -1
  149. package/dist/src/shared/embedding/registry.d.ts +0 -25
  150. package/dist/src/shared/embedding/registry.d.ts.map +0 -1
  151. package/dist/src/shared/embedding/registry.js +0 -50
  152. package/dist/src/shared/embedding/registry.js.map +0 -1
  153. package/dist/src/shared/embedding/semantic-engine.d.ts +0 -14
  154. package/dist/src/shared/embedding/semantic-engine.d.ts.map +0 -1
  155. package/dist/src/shared/embedding/semantic-engine.js +0 -50
  156. package/dist/src/shared/embedding/semantic-engine.js.map +0 -1
  157. package/dist/src/shared/models/model-manager.d.ts +0 -38
  158. package/dist/src/shared/models/model-manager.d.ts.map +0 -1
  159. package/dist/src/shared/models/model-manager.js +0 -116
  160. package/dist/src/shared/models/model-manager.js.map +0 -1
  161. package/dist/src/shared/models/model-manifest.d.ts +0 -22
  162. package/dist/src/shared/models/model-manifest.d.ts.map +0 -1
  163. package/dist/src/shared/models/model-manifest.js +0 -24
  164. package/dist/src/shared/models/model-manifest.js.map +0 -1
@@ -0,0 +1,388 @@
1
+ /**
2
+ * Rust Language Analyzer
3
+ *
4
+ * tree-sitter-rust を使用して Rust コードのシンボルと依存関係を抽出する。
5
+ * 構造化シンボルは struct/enum/trait/impl/fn/mod/type/const/static/macro を対象とし、
6
+ * use/extern crate/mod から依存関係を推定する。
7
+ */
8
+ import path from "node:path";
9
+ import Parser from "tree-sitter";
10
+ import Rust from "tree-sitter-rust";
11
+ import { assignSymbolIds, cleanDocComment, createDependencyRecorder, sanitizeTreeSitterSignature, symbolsToSnippets, treeSitterPointToLine, } from "../utils.js";
12
+ const DOC_COMMENT_TYPES = new Set([
13
+ "line_doc_comment",
14
+ "block_doc_comment",
15
+ "inner_line_doc_comment",
16
+ "inner_block_doc_comment",
17
+ ]);
18
+ const IDENTIFIER_NODE_TYPES = new Set([
19
+ "identifier",
20
+ "type_identifier",
21
+ "scoped_identifier",
22
+ "primitive_type",
23
+ ]);
24
+ function sliceContent(content, node) {
25
+ return content.substring(node.startIndex, node.endIndex);
26
+ }
27
+ /**
28
+ * 直前のドキュメントコメントを収集
29
+ */
30
+ function getDocComment(node, content) {
31
+ const parent = node.parent;
32
+ if (!parent)
33
+ return null;
34
+ const siblings = parent.children;
35
+ const nodeIndex = siblings.indexOf(node);
36
+ const preceding = [];
37
+ const isDocCommentText = (text) => text.startsWith("///") ||
38
+ text.startsWith("/**") ||
39
+ text.startsWith("/*!") ||
40
+ text.startsWith("//!");
41
+ for (let i = nodeIndex - 1; i >= 0; i--) {
42
+ const sibling = siblings[i];
43
+ if (!sibling)
44
+ continue;
45
+ if (DOC_COMMENT_TYPES.has(sibling.type) ||
46
+ (sibling.type.includes("comment") && isDocCommentText(sliceContent(content, sibling)))) {
47
+ preceding.unshift(cleanDocComment(sliceContent(content, sibling)));
48
+ continue;
49
+ }
50
+ if (!sibling.text.trim()) {
51
+ continue; // 空白やトリビアルなノードは無視
52
+ }
53
+ break; // 別の意味ノードに到達したら終了
54
+ }
55
+ if (preceding.length === 0) {
56
+ return null;
57
+ }
58
+ return preceding.join("\n");
59
+ }
60
+ function getNameFromNode(node, content) {
61
+ const fields = ["name", "type"];
62
+ for (const field of fields) {
63
+ const fieldNode = node.childForFieldName(field);
64
+ if (fieldNode) {
65
+ return sliceContent(content, fieldNode);
66
+ }
67
+ }
68
+ const namedIdentifier = node.namedChildren.find((child) => IDENTIFIER_NODE_TYPES.has(child.type));
69
+ if (namedIdentifier) {
70
+ return sliceContent(content, namedIdentifier);
71
+ }
72
+ return null;
73
+ }
74
+ function createRustSymbolRecords(tree, content) {
75
+ const rawSymbols = [];
76
+ function isInContext(node, types) {
77
+ let current = node.parent;
78
+ while (current) {
79
+ if (types.includes(current.type)) {
80
+ return true;
81
+ }
82
+ current = current.parent;
83
+ }
84
+ return false;
85
+ }
86
+ function addSymbol(node, kind, name) {
87
+ if (!name)
88
+ return;
89
+ rawSymbols.push({
90
+ name,
91
+ kind,
92
+ rangeStartLine: treeSitterPointToLine(node.startPosition),
93
+ rangeEndLine: treeSitterPointToLine(node.endPosition),
94
+ signature: sanitizeTreeSitterSignature(sliceContent(content, node)),
95
+ doc: getDocComment(node, content),
96
+ });
97
+ }
98
+ function visit(node) {
99
+ switch (node.type) {
100
+ case "function_item": {
101
+ const name = getNameFromNode(node, content);
102
+ const isMethod = isInContext(node, ["impl_item", "trait_item"]);
103
+ const kind = isMethod ? "method" : "function";
104
+ addSymbol(node, kind, name);
105
+ break;
106
+ }
107
+ case "function_signature_item": {
108
+ // Trait methods without bodies (e.g., `fn foo(&self);`)
109
+ const name = getNameFromNode(node, content);
110
+ addSymbol(node, "method", name);
111
+ break;
112
+ }
113
+ case "struct_item":
114
+ addSymbol(node, "struct", getNameFromNode(node, content));
115
+ break;
116
+ case "enum_item":
117
+ addSymbol(node, "enum", getNameFromNode(node, content));
118
+ break;
119
+ case "trait_item":
120
+ addSymbol(node, "trait", getNameFromNode(node, content));
121
+ break;
122
+ case "impl_item":
123
+ // NOTE: `impl Trait for Type` の場合も `impl Type` に単純化される。
124
+ // これはシンボル検索での利便性を優先した意図的な設計。
125
+ // 完全な impl 情報が必要な場合は signature フィールドを参照のこと。
126
+ addSymbol(node, "impl", (() => {
127
+ const implTarget = getNameFromNode(node, content);
128
+ return implTarget ? `impl ${implTarget}` : null;
129
+ })());
130
+ break;
131
+ case "mod_item":
132
+ addSymbol(node, "mod", getNameFromNode(node, content));
133
+ break;
134
+ case "type_item":
135
+ addSymbol(node, "type", getNameFromNode(node, content));
136
+ break;
137
+ case "const_item":
138
+ addSymbol(node, "const", getNameFromNode(node, content));
139
+ break;
140
+ case "static_item":
141
+ addSymbol(node, "static", getNameFromNode(node, content));
142
+ break;
143
+ case "macro_definition":
144
+ addSymbol(node, "macro", getNameFromNode(node, content));
145
+ break;
146
+ default:
147
+ break;
148
+ }
149
+ for (const child of node.namedChildren) {
150
+ visit(child);
151
+ }
152
+ }
153
+ visit(tree.rootNode);
154
+ return assignSymbolIds(rawSymbols);
155
+ }
156
+ function findCrateSrcRoot(pathInRepo) {
157
+ const segments = pathInRepo.split("/");
158
+ const srcIndex = segments.lastIndexOf("src");
159
+ if (srcIndex === -1) {
160
+ return path.posix.dirname(pathInRepo);
161
+ }
162
+ return segments.slice(0, srcIndex + 1).join("/");
163
+ }
164
+ function resolveSegmentsToPath(base, segments, fileSet) {
165
+ if (segments.length === 0)
166
+ return null;
167
+ const joined = path.posix.join(base, ...segments);
168
+ const candidates = [`${joined}.rs`, path.posix.join(joined, "mod.rs")];
169
+ return candidates.find((candidate) => fileSet.has(candidate)) ?? null;
170
+ }
171
+ function resolveModuleLikePath(base, segments, fileSet) {
172
+ const direct = resolveSegmentsToPath(base, segments, fileSet);
173
+ if (direct)
174
+ return direct;
175
+ if (segments.length > 1) {
176
+ // Drop the final segment to handle item imports (e.g., crate::foo::Bar -> foo.rs)
177
+ return resolveSegmentsToPath(base, segments.slice(0, -1), fileSet);
178
+ }
179
+ return null;
180
+ }
181
+ /**
182
+ * crate:: プレフィックスのパスを解決
183
+ */
184
+ function resolveFromCrate(segments, crateRoot, fileSet) {
185
+ const pathSegments = segments.slice(1); // drop "crate"
186
+ if (pathSegments.length === 0)
187
+ return null;
188
+ const resolved = resolveModuleLikePath(crateRoot, pathSegments, fileSet);
189
+ return resolved ? { kind: "path", target: resolved } : null;
190
+ }
191
+ /**
192
+ * self:: プレフィックスのパスを解決
193
+ */
194
+ function resolveFromSelf(segments, baseDir, fileSet) {
195
+ const pathSegments = segments.slice(1); // drop "self"
196
+ if (pathSegments.length === 0)
197
+ return null;
198
+ const resolved = resolveModuleLikePath(baseDir, pathSegments, fileSet);
199
+ return resolved ? { kind: "path", target: resolved } : null;
200
+ }
201
+ /**
202
+ * super:: プレフィックスのパスを解決(連続する super:: もサポート)
203
+ */
204
+ function resolveFromSuper(segments, baseDir, fileSet) {
205
+ const pathSegments = [...segments.slice(1)]; // drop initial "super", copy to avoid mutation
206
+ // 最初の super:: で1レベル上がる
207
+ let parentDir = path.posix.dirname(baseDir);
208
+ // 連続する super:: を処理(super::super:: など)
209
+ while (pathSegments.length > 0 && pathSegments[0] === "super") {
210
+ parentDir = path.posix.dirname(parentDir);
211
+ pathSegments.shift();
212
+ }
213
+ if (pathSegments.length === 0)
214
+ return null;
215
+ const resolved = resolveModuleLikePath(parentDir, pathSegments, fileSet);
216
+ return resolved ? { kind: "path", target: resolved } : null;
217
+ }
218
+ /**
219
+ * 相対パスまたは外部パッケージとして解決
220
+ */
221
+ function resolveRelativeOrPackage(segments, baseDir, fileSet, fallbackName) {
222
+ const resolved = resolveModuleLikePath(baseDir, segments, fileSet);
223
+ if (resolved) {
224
+ return { kind: "path", target: resolved };
225
+ }
226
+ const packageName = segments[0] ?? fallbackName;
227
+ return packageName ? { kind: "package", target: packageName } : null;
228
+ }
229
+ /**
230
+ * use/extern crate のターゲットパスを解決
231
+ *
232
+ * crate::/self::/super:: プレフィックスを処理し、
233
+ * ファイルパスまたは外部パッケージ名を返す。
234
+ */
235
+ function resolveTarget(rawTarget, pathInRepo, fileSet) {
236
+ const normalized = rawTarget.replace(/^::/, "").trim();
237
+ if (!normalized)
238
+ return null;
239
+ const normalizedSegments = normalized.split("::").filter(Boolean);
240
+ const hasWildcard = normalizedSegments.includes("*");
241
+ const segmentsWithoutWildcard = hasWildcard
242
+ ? normalizedSegments.filter((segment) => segment !== "*")
243
+ : normalizedSegments;
244
+ const baseDir = path.posix.dirname(pathInRepo);
245
+ const crateRoot = findCrateSrcRoot(pathInRepo);
246
+ // プレフィックスに基づいて適切な解決関数を選択
247
+ if (normalized.startsWith("crate::")) {
248
+ return resolveFromCrate(segmentsWithoutWildcard, crateRoot, fileSet);
249
+ }
250
+ if (normalized.startsWith("self::")) {
251
+ return resolveFromSelf(segmentsWithoutWildcard, baseDir, fileSet);
252
+ }
253
+ if (normalized.startsWith("super::")) {
254
+ return resolveFromSuper(segmentsWithoutWildcard, baseDir, fileSet);
255
+ }
256
+ return resolveRelativeOrPackage(segmentsWithoutWildcard, baseDir, fileSet, normalized);
257
+ }
258
+ function extractUsePaths(node, content) {
259
+ // Prefer AST traversal to keep prefixes for grouped imports
260
+ const targets = [];
261
+ function splitSegments(text) {
262
+ return text
263
+ .split("::")
264
+ .map((seg) => seg.trim())
265
+ .filter(Boolean);
266
+ }
267
+ function recordTarget(segments) {
268
+ if (segments.length === 0)
269
+ return;
270
+ targets.push(segments.join("::"));
271
+ }
272
+ function visitUseTree(current, prefix) {
273
+ if (current.type === "use_list") {
274
+ for (const child of current.namedChildren) {
275
+ visitUseTree(child, prefix);
276
+ }
277
+ return;
278
+ }
279
+ if (current.type === "asterisk") {
280
+ recordTarget([...prefix, "*"]);
281
+ return;
282
+ }
283
+ if (current.type === "use_as_clause") {
284
+ const targetNode = current.namedChildren[0];
285
+ if (targetNode) {
286
+ recordTarget([...prefix, ...splitSegments(sliceContent(content, targetNode))]);
287
+ }
288
+ return;
289
+ }
290
+ if (current.type === "scoped_use_list") {
291
+ const [head, ...rest] = current.namedChildren;
292
+ if (!head)
293
+ return;
294
+ const headSegments = splitSegments(sliceContent(content, head));
295
+ const newPrefix = [...prefix, ...headSegments];
296
+ const listNode = rest.find((child) => child.type === "use_list");
297
+ if (listNode) {
298
+ visitUseTree(listNode, newPrefix);
299
+ }
300
+ else {
301
+ recordTarget(newPrefix);
302
+ }
303
+ return;
304
+ }
305
+ // Identifier or scoped_identifier
306
+ if (current.type === "identifier" || current.type === "scoped_identifier") {
307
+ recordTarget([...prefix, ...splitSegments(sliceContent(content, current))]);
308
+ return;
309
+ }
310
+ for (const child of current.namedChildren) {
311
+ visitUseTree(child, prefix);
312
+ }
313
+ }
314
+ visitUseTree(node, []);
315
+ return targets;
316
+ }
317
+ function extractExternCrateName(node, content) {
318
+ const rawText = sliceContent(content, node);
319
+ const match = rawText.match(/extern\s+crate\s+([A-Za-z0-9_]+)/);
320
+ return match?.[1] ?? null;
321
+ }
322
+ function extractModName(node, content) {
323
+ return getNameFromNode(node, content);
324
+ }
325
+ function hasInlineModuleBody(node) {
326
+ return node.text.includes("{");
327
+ }
328
+ function collectRustDependencies(pathInRepo, tree, content, fileSet) {
329
+ const { record, getDependencies } = createDependencyRecorder();
330
+ function visit(node) {
331
+ if (node.type === "use_declaration") {
332
+ const targets = extractUsePaths(node, content);
333
+ for (const target of targets) {
334
+ const resolved = resolveTarget(target, pathInRepo, fileSet);
335
+ if (resolved) {
336
+ record(resolved.kind, resolved.target);
337
+ }
338
+ }
339
+ }
340
+ else if (node.type === "extern_crate_declaration") {
341
+ const name = extractExternCrateName(node, content);
342
+ if (name) {
343
+ record("package", name, "extern_crate");
344
+ }
345
+ }
346
+ else if (node.type === "mod_item") {
347
+ const modName = extractModName(node, content);
348
+ if (modName && !hasInlineModuleBody(node)) {
349
+ const resolved = resolveSegmentsToPath(path.posix.dirname(pathInRepo), [modName], fileSet);
350
+ if (resolved) {
351
+ record("path", resolved, "mod");
352
+ }
353
+ }
354
+ }
355
+ for (const child of node.namedChildren) {
356
+ visit(child);
357
+ }
358
+ }
359
+ visit(tree.rootNode);
360
+ return getDependencies();
361
+ }
362
+ export class RustAnalyzer {
363
+ language = "Rust";
364
+ async analyze(context) {
365
+ const { pathInRepo, content, fileSet } = context;
366
+ if (!content.trim()) {
367
+ return { symbols: [], snippets: [], dependencies: [] };
368
+ }
369
+ try {
370
+ const parser = new Parser();
371
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
372
+ parser.setLanguage(Rust);
373
+ const tree = parser.parse(content);
374
+ const symbols = createRustSymbolRecords(tree, content);
375
+ const snippets = symbolsToSnippets(symbols);
376
+ const dependencies = collectRustDependencies(pathInRepo, tree, content, fileSet);
377
+ return { symbols, snippets, dependencies };
378
+ }
379
+ catch (error) {
380
+ console.error(`Failed to parse Rust file ${pathInRepo}:`, error);
381
+ return { symbols: [], snippets: [], dependencies: [] };
382
+ }
383
+ }
384
+ }
385
+ export function createRustAnalyzer() {
386
+ return new RustAnalyzer();
387
+ }
388
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/rust/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAGpC,OAAO,EACL,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAIrB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;CACjB,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,OAAe,EAAE,IAAc;IACnD,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAc,EAAE,OAAe;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAW,EAAE,CACjD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,IACE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YACnC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACtF,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,SAAS,CAAC,kBAAkB;QAC9B,CAAC;QAED,MAAM,CAAC,kBAAkB;IAC3B,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe,CAAC,IAAc,EAAE,OAAe;IACtD,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAiB,EAAE,OAAe;IACjE,MAAM,UAAU,GAA0C,EAAE,CAAC;IAE7D,SAAS,WAAW,CAAC,IAAc,EAAE,KAAe;QAClD,IAAI,OAAO,GAAoB,IAAI,CAAC,MAAM,CAAC;QAC3C,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,SAAS,CAAC,IAAc,EAAE,IAAY,EAAE,IAAmB;QAClE,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,UAAU,CAAC,IAAI,CAAC;YACd,IAAI;YACJ,IAAI;YACJ,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC;YACzD,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC;YACrD,SAAS,EAAE,2BAA2B,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACnE,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,KAAK,CAAC,IAAc;QAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;gBAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC9C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,MAAM;YACR,CAAC;YACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC/B,wDAAwD;gBACxD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAChC,MAAM;YACR,CAAC;YACD,KAAK,aAAa;gBAChB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,WAAW;gBACd,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,YAAY;gBACf,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,WAAW;gBACd,wDAAwD;gBACxD,6BAA6B;gBAC7B,4CAA4C;gBAC5C,SAAS,CACP,IAAI,EACJ,MAAM,EACN,CAAC,GAAG,EAAE;oBACJ,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAClD,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,CAAC,CAAC,EAAE,CACL,CAAC;gBACF,MAAM;YACR,KAAK,UAAU;gBACb,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,WAAW;gBACd,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,YAAY;gBACf,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,aAAa;gBAChB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,kBAAkB;gBACrB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACzD,MAAM;YACR;gBACE,MAAM;QACV,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,QAAkB,EAClB,OAAoB;IAEpB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC;AACxE,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,QAAkB,EAClB,OAAoB;IAEpB,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,kFAAkF;QAClF,OAAO,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAID;;GAEG;AACH,SAAS,gBAAgB,CACvB,QAAkB,EAClB,SAAiB,EACjB,OAAoB;IAEpB,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;IACvD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAkB,EAAE,OAAe,EAAE,OAAoB;IAChF,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;IACtD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,QAAkB,EAClB,OAAe,EACf,OAAoB;IAEpB,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;IAC5F,uBAAuB;IACvB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C,sCAAsC;IACtC,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC9D,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,QAAkB,EAClB,OAAe,EACf,OAAoB,EACpB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;IAChD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAAoB;IAChF,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,uBAAuB,GAAG,WAAW;QACzC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC;QACzD,CAAC,CAAC,kBAAkB,CAAC;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE/C,yBAAyB;IACzB,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,eAAe,CAAC,uBAAuB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,gBAAgB,CAAC,uBAAuB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,wBAAwB,CAAC,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,eAAe,CAAC,IAAc,EAAE,OAAe;IACtD,4DAA4D;IAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,SAAS,aAAa,CAAC,IAAY;QACjC,OAAO,IAAI;aACR,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,YAAY,CAAC,QAAkB;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,YAAY,CAAC,OAAiB,EAAE,MAAgB;QACvD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1C,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,YAAY,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,UAAU,EAAE,CAAC;gBACf,YAAY,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;YAC9C,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YACjE,IAAI,QAAQ,EAAE,CAAC;gBACb,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC1E,YAAY,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1C,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAc,EAAE,OAAe;IAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAChE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,IAAc,EAAE,OAAe;IACrD,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAkB,EAClB,IAAiB,EACjB,OAAe,EACf,OAAoB;IAEpB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAE/D,SAAS,KAAK,CAAC,IAAc;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC5D,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC3F,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,OAAO,YAAY;IACd,QAAQ,GAAG,MAAM,CAAC;IAE3B,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAEjD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAE5B,8DAA8D;YAC9D,MAAM,CAAC,WAAW,CAAC,IAAW,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAEjF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,YAAY,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Rust Analyzer Module
3
+ */
4
+ export { RustAnalyzer, createRustAnalyzer } from "./analyzer.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/rust/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Rust Analyzer Module
3
+ */
4
+ export { RustAnalyzer, createRustAnalyzer } from "./analyzer.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/rust/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Swift Language Analyzer
3
+ *
4
+ * tree-sitter-swift を使用したシンボル抽出と依存関係解析。
5
+ * class, struct, enum, protocol, function, method, initializer, property をサポート。
6
+ */
7
+ import type { LanguageAnalyzer, AnalysisContext, AnalysisResult } from "../types.js";
8
+ /**
9
+ * Swift Language Analyzer
10
+ *
11
+ * LanguageAnalyzer インターフェースを実装し、
12
+ * Swift ファイルのシンボル抽出と依存関係解析を提供
13
+ */
14
+ export declare class SwiftAnalyzer implements LanguageAnalyzer {
15
+ readonly language = "Swift";
16
+ analyze(context: AnalysisContext): Promise<AnalysisResult>;
17
+ }
18
+ /**
19
+ * Swift アナライザーのファクトリ関数
20
+ */
21
+ export declare function createSwiftAnalyzer(): SwiftAnalyzer;
22
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/swift/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AA6PnG;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,QAAQ,WAAW;IAEtB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAkCjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}