@unlimiting/qsc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunker/ast.d.ts +7 -0
- package/dist/chunker/ast.d.ts.map +1 -0
- package/dist/chunker/ast.js +302 -0
- package/dist/chunker/ast.js.map +1 -0
- package/dist/chunker/index.d.ts +15 -0
- package/dist/chunker/index.d.ts.map +1 -0
- package/dist/chunker/index.js +26 -0
- package/dist/chunker/index.js.map +1 -0
- package/dist/chunker/languages/dart.d.ts +3 -0
- package/dist/chunker/languages/dart.d.ts.map +1 -0
- package/dist/chunker/languages/dart.js +22 -0
- package/dist/chunker/languages/dart.js.map +1 -0
- package/dist/chunker/languages/go.d.ts +3 -0
- package/dist/chunker/languages/go.d.ts.map +1 -0
- package/dist/chunker/languages/go.js +20 -0
- package/dist/chunker/languages/go.js.map +1 -0
- package/dist/chunker/languages/index.d.ts +12 -0
- package/dist/chunker/languages/index.d.ts.map +1 -0
- package/dist/chunker/languages/index.js +35 -0
- package/dist/chunker/languages/index.js.map +1 -0
- package/dist/chunker/languages/kotlin.d.ts +3 -0
- package/dist/chunker/languages/kotlin.d.ts.map +1 -0
- package/dist/chunker/languages/kotlin.js +23 -0
- package/dist/chunker/languages/kotlin.js.map +1 -0
- package/dist/chunker/languages/python.d.ts +3 -0
- package/dist/chunker/languages/python.d.ts.map +1 -0
- package/dist/chunker/languages/python.js +21 -0
- package/dist/chunker/languages/python.js.map +1 -0
- package/dist/chunker/languages/swift.d.ts +3 -0
- package/dist/chunker/languages/swift.d.ts.map +1 -0
- package/dist/chunker/languages/swift.js +24 -0
- package/dist/chunker/languages/swift.js.map +1 -0
- package/dist/chunker/languages/typescript.d.ts +4 -0
- package/dist/chunker/languages/typescript.d.ts.map +1 -0
- package/dist/chunker/languages/typescript.js +34 -0
- package/dist/chunker/languages/typescript.js.map +1 -0
- package/dist/chunker/token.d.ts +6 -0
- package/dist/chunker/token.d.ts.map +1 -0
- package/dist/chunker/token.js +107 -0
- package/dist/chunker/token.js.map +1 -0
- package/dist/collection.d.ts +22 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +154 -0
- package/dist/collection.js.map +1 -0
- package/dist/config/index.d.ts +95 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +103 -0
- package/dist/config/index.js.map +1 -0
- package/dist/embedder/index.d.ts +14 -0
- package/dist/embedder/index.d.ts.map +1 -0
- package/dist/embedder/index.js +18 -0
- package/dist/embedder/index.js.map +1 -0
- package/dist/embedder/local.d.ts +11 -0
- package/dist/embedder/local.d.ts.map +1 -0
- package/dist/embedder/local.js +60 -0
- package/dist/embedder/local.js.map +1 -0
- package/dist/embedder/openai.d.ts +10 -0
- package/dist/embedder/openai.d.ts.map +1 -0
- package/dist/embedder/openai.js +69 -0
- package/dist/embedder/openai.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +824 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.d.ts +17 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +18 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/local.d.ts +10 -0
- package/dist/llm/local.d.ts.map +1 -0
- package/dist/llm/local.js +76 -0
- package/dist/llm/local.js.map +1 -0
- package/dist/llm/openai.d.ts +10 -0
- package/dist/llm/openai.d.ts.map +1 -0
- package/dist/llm/openai.js +76 -0
- package/dist/llm/openai.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +393 -0
- package/dist/mcp.js.map +1 -0
- package/dist/scanner/git.d.ts +26 -0
- package/dist/scanner/git.d.ts.map +1 -0
- package/dist/scanner/git.js +134 -0
- package/dist/scanner/git.js.map +1 -0
- package/dist/scanner/index.d.ts +17 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +174 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/search/bm25.d.ts +17 -0
- package/dist/search/bm25.d.ts.map +1 -0
- package/dist/search/bm25.js +27 -0
- package/dist/search/bm25.js.map +1 -0
- package/dist/search/expander.d.ts +12 -0
- package/dist/search/expander.d.ts.map +1 -0
- package/dist/search/expander.js +60 -0
- package/dist/search/expander.js.map +1 -0
- package/dist/search/fusion.d.ts +32 -0
- package/dist/search/fusion.d.ts.map +1 -0
- package/dist/search/fusion.js +80 -0
- package/dist/search/fusion.js.map +1 -0
- package/dist/search/index.d.ts +61 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +137 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/reranker.d.ts +18 -0
- package/dist/search/reranker.d.ts.map +1 -0
- package/dist/search/reranker.js +56 -0
- package/dist/search/reranker.js.map +1 -0
- package/dist/search/vector.d.ts +23 -0
- package/dist/search/vector.d.ts.map +1 -0
- package/dist/search/vector.js +47 -0
- package/dist/search/vector.js.map +1 -0
- package/dist/store.d.ts +119 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +500 -0
- package/dist/store.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LanguageConfig } from "./languages/index.js";
|
|
2
|
+
import type { Chunk } from "./index.js";
|
|
3
|
+
export interface AstChunker {
|
|
4
|
+
chunk(content: string, filePath: string): Chunk[];
|
|
5
|
+
}
|
|
6
|
+
export declare function createAstChunker(langConfig: LanguageConfig, maxTokens: number): Promise<AstChunker>;
|
|
7
|
+
//# sourceMappingURL=ast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/chunker/ast.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA4SxC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;CACnD;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CA8CrB"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
// web-tree-sitter 0.22.x: default export is the Parser class
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const Parser = require("web-tree-sitter");
|
|
6
|
+
let initPromise = null;
|
|
7
|
+
async function ensureInit() {
|
|
8
|
+
if (!initPromise) {
|
|
9
|
+
initPromise = Parser.init();
|
|
10
|
+
}
|
|
11
|
+
await initPromise;
|
|
12
|
+
}
|
|
13
|
+
function estimateTokens(text) {
|
|
14
|
+
return Math.ceil(text.length / 4);
|
|
15
|
+
}
|
|
16
|
+
function resolveWasmPath(wasmFile) {
|
|
17
|
+
const require2 = createRequire(import.meta.url);
|
|
18
|
+
const wasmsDir = join(require2.resolve("tree-sitter-wasms/package.json"), "..", "out");
|
|
19
|
+
return join(wasmsDir, wasmFile);
|
|
20
|
+
}
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
const languageCache = new Map();
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
async function loadLanguage(config) {
|
|
25
|
+
const key = config.treeSitterLanguage;
|
|
26
|
+
if (languageCache.has(key)) {
|
|
27
|
+
return languageCache.get(key);
|
|
28
|
+
}
|
|
29
|
+
const wasmPath = resolveWasmPath(config.treeSitterWasmFile);
|
|
30
|
+
const lang = await Parser.Language.load(wasmPath);
|
|
31
|
+
languageCache.set(key, lang);
|
|
32
|
+
return lang;
|
|
33
|
+
}
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
function extractName(node, nameFields) {
|
|
36
|
+
// For export_statement, look at the inner declaration
|
|
37
|
+
if (node.type === "export_statement" || node.type === "export_declaration") {
|
|
38
|
+
const childCount = node.childCount;
|
|
39
|
+
for (let i = 0; i < childCount; i++) {
|
|
40
|
+
const c = node.child(i);
|
|
41
|
+
if (c && c.isNamed && c.type !== "export" && c.type !== "default") {
|
|
42
|
+
const innerName = extractName(c, nameFields);
|
|
43
|
+
if (innerName)
|
|
44
|
+
return innerName;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// For decorated_definition (Python), look at the inner definition
|
|
49
|
+
if (node.type === "decorated_definition") {
|
|
50
|
+
const def = node.childForFieldName("definition");
|
|
51
|
+
if (def)
|
|
52
|
+
return extractName(def, nameFields);
|
|
53
|
+
}
|
|
54
|
+
for (const field of nameFields) {
|
|
55
|
+
const child = node.childForFieldName(field);
|
|
56
|
+
if (child)
|
|
57
|
+
return child.text;
|
|
58
|
+
}
|
|
59
|
+
const childCount = node.childCount;
|
|
60
|
+
for (let i = 0; i < childCount; i++) {
|
|
61
|
+
const c = node.child(i);
|
|
62
|
+
if (c && (c.type === "identifier" || c.type === "property_identifier" || c.type === "type_identifier")) {
|
|
63
|
+
return c.text;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
|
+
function classifyNode(node) {
|
|
70
|
+
const nodeType = node.type;
|
|
71
|
+
// For export_statement, classify based on inner declaration
|
|
72
|
+
if (nodeType === "export_statement" || nodeType === "export_declaration") {
|
|
73
|
+
const childCount = node.childCount;
|
|
74
|
+
for (let i = 0; i < childCount; i++) {
|
|
75
|
+
const c = node.child(i);
|
|
76
|
+
if (c && c.isNamed && c.type !== "export" && c.type !== "default") {
|
|
77
|
+
return classifyNode(c);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return "module";
|
|
81
|
+
}
|
|
82
|
+
return classifyNodeTypeStr(nodeType);
|
|
83
|
+
}
|
|
84
|
+
function classifyNodeTypeStr(nodeType) {
|
|
85
|
+
if (nodeType.includes("function") || nodeType.includes("method") || nodeType === "arrow_function")
|
|
86
|
+
return "function";
|
|
87
|
+
if (nodeType.includes("class"))
|
|
88
|
+
return "class";
|
|
89
|
+
if (nodeType.includes("interface"))
|
|
90
|
+
return "interface";
|
|
91
|
+
if (nodeType.includes("enum"))
|
|
92
|
+
return "enum";
|
|
93
|
+
if (nodeType.includes("type_alias") || nodeType.includes("type_declaration"))
|
|
94
|
+
return "type";
|
|
95
|
+
if (nodeType.includes("struct"))
|
|
96
|
+
return "struct";
|
|
97
|
+
if (nodeType.includes("protocol"))
|
|
98
|
+
return "protocol";
|
|
99
|
+
if (nodeType.includes("extension"))
|
|
100
|
+
return "extension";
|
|
101
|
+
if (nodeType.includes("import") || nodeType.includes("export"))
|
|
102
|
+
return "module";
|
|
103
|
+
return "block";
|
|
104
|
+
}
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
106
|
+
function collectImports(rootNode, importTypes) {
|
|
107
|
+
if (importTypes.length === 0)
|
|
108
|
+
return "";
|
|
109
|
+
const imports = [];
|
|
110
|
+
const childCount = rootNode.childCount;
|
|
111
|
+
for (let i = 0; i < childCount; i++) {
|
|
112
|
+
const child = rootNode.child(i);
|
|
113
|
+
if (child && importTypes.includes(child.type)) {
|
|
114
|
+
imports.push(child.text);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return imports.length > 0 ? imports.join("\n") + "\n\n" : "";
|
|
118
|
+
}
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
120
|
+
function collectChunkNodes(node, config, sourceLines, maxTokens) {
|
|
121
|
+
const chunks = [];
|
|
122
|
+
const chunkSet = new Set(config.chunkNodeTypes);
|
|
123
|
+
const containerSet = new Set(config.containerNodeTypes);
|
|
124
|
+
const importSet = new Set(config.importNodeTypes);
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
126
|
+
function visit(n) {
|
|
127
|
+
if (importSet.has(n.type))
|
|
128
|
+
return;
|
|
129
|
+
if (chunkSet.has(n.type)) {
|
|
130
|
+
const text = n.text;
|
|
131
|
+
const tokens = estimateTokens(text);
|
|
132
|
+
const startLine = n.startPosition.row + 1;
|
|
133
|
+
const endLine = n.endPosition.row + 1;
|
|
134
|
+
const name = extractName(n, config.nameFields);
|
|
135
|
+
const chunkType = classifyNode(n);
|
|
136
|
+
if (tokens <= maxTokens) {
|
|
137
|
+
chunks.push({ content: text, startLine, endLine, type: chunkType, name });
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const subChunks = splitLargeNode(n, config, sourceLines, maxTokens);
|
|
141
|
+
if (subChunks.length > 0) {
|
|
142
|
+
chunks.push(...subChunks);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
chunks.push({ content: text, startLine, endLine, type: chunkType, name });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (containerSet.has(n.type) || n.type === "program" || n.type === "source_file" || n.type === "module") {
|
|
151
|
+
const childCount = n.childCount;
|
|
152
|
+
for (let i = 0; i < childCount; i++) {
|
|
153
|
+
const child = n.child(i);
|
|
154
|
+
if (child)
|
|
155
|
+
visit(child);
|
|
156
|
+
}
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Top-level non-chunk, non-container nodes
|
|
160
|
+
if (n.parent && (containerSet.has(n.parent.type) || n.parent.type === "program" || n.parent.type === "source_file" || n.parent.type === "module")) {
|
|
161
|
+
if (!importSet.has(n.type) && n.text.trim().length > 0) {
|
|
162
|
+
chunks.push({
|
|
163
|
+
content: n.text,
|
|
164
|
+
startLine: n.startPosition.row + 1,
|
|
165
|
+
endLine: n.endPosition.row + 1,
|
|
166
|
+
type: "block",
|
|
167
|
+
name: undefined,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
visit(node);
|
|
173
|
+
return chunks;
|
|
174
|
+
}
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
176
|
+
function splitLargeNode(node, config, sourceLines, maxTokens) {
|
|
177
|
+
const chunkSet = new Set(config.chunkNodeTypes);
|
|
178
|
+
const subChunks = [];
|
|
179
|
+
const childCount = node.childCount;
|
|
180
|
+
let hasChunkableChildren = false;
|
|
181
|
+
for (let i = 0; i < childCount; i++) {
|
|
182
|
+
const child = node.child(i);
|
|
183
|
+
if (child && child.isNamed && chunkSet.has(child.type)) {
|
|
184
|
+
hasChunkableChildren = true;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (hasChunkableChildren) {
|
|
189
|
+
for (let i = 0; i < childCount; i++) {
|
|
190
|
+
const child = node.child(i);
|
|
191
|
+
if (!child || !child.isNamed)
|
|
192
|
+
continue;
|
|
193
|
+
const childChunks = collectChunkNodes(child, config, sourceLines, maxTokens);
|
|
194
|
+
subChunks.push(...childChunks);
|
|
195
|
+
}
|
|
196
|
+
return subChunks;
|
|
197
|
+
}
|
|
198
|
+
// Split by line groups
|
|
199
|
+
const nodeStartLine = node.startPosition.row;
|
|
200
|
+
const nodeEndLine = node.endPosition.row;
|
|
201
|
+
const nodeLines = sourceLines.slice(nodeStartLine, nodeEndLine + 1);
|
|
202
|
+
let currentLines = [];
|
|
203
|
+
let currentStartLine = nodeStartLine;
|
|
204
|
+
let currentTokens = 0;
|
|
205
|
+
for (let i = 0; i < nodeLines.length; i++) {
|
|
206
|
+
const lineTokens = estimateTokens(nodeLines[i] + "\n");
|
|
207
|
+
if (currentTokens + lineTokens > maxTokens && currentLines.length > 0) {
|
|
208
|
+
subChunks.push({
|
|
209
|
+
content: currentLines.join("\n"),
|
|
210
|
+
startLine: currentStartLine + 1,
|
|
211
|
+
endLine: currentStartLine + currentLines.length,
|
|
212
|
+
type: classifyNode(node),
|
|
213
|
+
name: extractName(node, config.nameFields),
|
|
214
|
+
});
|
|
215
|
+
currentLines = [];
|
|
216
|
+
currentStartLine = nodeStartLine + i;
|
|
217
|
+
currentTokens = 0;
|
|
218
|
+
}
|
|
219
|
+
currentLines.push(nodeLines[i]);
|
|
220
|
+
currentTokens += lineTokens;
|
|
221
|
+
}
|
|
222
|
+
if (currentLines.length > 0) {
|
|
223
|
+
subChunks.push({
|
|
224
|
+
content: currentLines.join("\n"),
|
|
225
|
+
startLine: currentStartLine + 1,
|
|
226
|
+
endLine: currentStartLine + currentLines.length,
|
|
227
|
+
type: classifyNode(node),
|
|
228
|
+
name: extractName(node, config.nameFields),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
return subChunks;
|
|
232
|
+
}
|
|
233
|
+
function mergeSmallChunks(chunks, maxTokens) {
|
|
234
|
+
if (chunks.length <= 1)
|
|
235
|
+
return chunks;
|
|
236
|
+
const merged = [];
|
|
237
|
+
let current = chunks[0];
|
|
238
|
+
for (let i = 1; i < chunks.length; i++) {
|
|
239
|
+
const next = chunks[i];
|
|
240
|
+
const combinedTokens = estimateTokens(current.content) + estimateTokens(next.content);
|
|
241
|
+
if (combinedTokens <= maxTokens &&
|
|
242
|
+
current.type === "block" &&
|
|
243
|
+
next.type === "block" &&
|
|
244
|
+
next.startLine <= current.endLine + 2) {
|
|
245
|
+
current = {
|
|
246
|
+
content: current.content + "\n" + next.content,
|
|
247
|
+
startLine: current.startLine,
|
|
248
|
+
endLine: next.endLine,
|
|
249
|
+
type: "block",
|
|
250
|
+
name: current.name || next.name,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
merged.push(current);
|
|
255
|
+
current = next;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
merged.push(current);
|
|
259
|
+
return merged;
|
|
260
|
+
}
|
|
261
|
+
export async function createAstChunker(langConfig, maxTokens) {
|
|
262
|
+
await ensureInit();
|
|
263
|
+
const language = await loadLanguage(langConfig);
|
|
264
|
+
const parser = new Parser();
|
|
265
|
+
parser.setLanguage(language);
|
|
266
|
+
return {
|
|
267
|
+
chunk(content, filePath) {
|
|
268
|
+
const tree = parser.parse(content);
|
|
269
|
+
if (!tree)
|
|
270
|
+
return [];
|
|
271
|
+
const rootNode = tree.rootNode;
|
|
272
|
+
const sourceLines = content.split("\n");
|
|
273
|
+
const importPrefix = collectImports(rootNode, langConfig.importNodeTypes);
|
|
274
|
+
let rawChunks = collectChunkNodes(rootNode, langConfig, sourceLines, maxTokens);
|
|
275
|
+
rawChunks = mergeSmallChunks(rawChunks, maxTokens);
|
|
276
|
+
const result = rawChunks.map((raw) => {
|
|
277
|
+
const needsPrefix = importPrefix.length > 0 && !raw.content.trimStart().startsWith("import");
|
|
278
|
+
const finalContent = needsPrefix ? importPrefix + raw.content : raw.content;
|
|
279
|
+
return {
|
|
280
|
+
content: finalContent,
|
|
281
|
+
startLine: raw.startLine,
|
|
282
|
+
endLine: raw.endLine,
|
|
283
|
+
type: raw.type,
|
|
284
|
+
name: raw.name,
|
|
285
|
+
language: langConfig.treeSitterLanguage,
|
|
286
|
+
};
|
|
287
|
+
});
|
|
288
|
+
if (result.length === 0 && content.trim().length > 0) {
|
|
289
|
+
result.push({
|
|
290
|
+
content,
|
|
291
|
+
startLine: 1,
|
|
292
|
+
endLine: sourceLines.length,
|
|
293
|
+
type: "module",
|
|
294
|
+
language: langConfig.treeSitterLanguage,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
tree.delete();
|
|
298
|
+
return result;
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/chunker/ast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,6DAA6D;AAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,GAAqC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAW5E,IAAI,WAAW,GAAyB,IAAI,CAAC;AAE7C,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,8DAA8D;AAC9D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;AAE7C,8DAA8D;AAC9D,KAAK,UAAU,YAAY,CAAC,MAAsB;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACtC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACjC,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8DAA8D;AAC9D,SAAS,WAAW,CAAC,IAAS,EAAE,UAAoB;IAClD,sDAAsD;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClE,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBAC7C,IAAI,SAAS;oBAAE,OAAO,SAAS,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IACD,kEAAkE;IAClE,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,GAAG;YAAE,OAAO,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAC/B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;YACvG,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8DAA8D;AAC9D,SAAS,YAAY,CAAC,IAAS;IAC7B,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC;IACnC,4DAA4D;IAC5D,IAAI,QAAQ,KAAK,kBAAkB,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACzE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,gBAAgB;QAAE,OAAO,UAAU,CAAC;IACrH,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5F,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8DAA8D;AAC9D,SAAS,cAAc,CAAC,QAAa,EAAE,WAAqB;IAC1D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAUD,8DAA8D;AAC9D,SAAS,iBAAiB,CACxB,IAAS,EACT,MAAsB,EACtB,WAAqB,EACrB,SAAiB;IAEjB,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAElD,8DAA8D;IAC9D,SAAS,KAAK,CAAC,CAAM;QACnB,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO;QAElC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAW,CAAC,CAAC,IAAI,CAAC;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,SAAS,GAAW,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;YAClD,MAAM,OAAO,GAAW,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAElC,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;gBACpE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxG,MAAM,UAAU,GAAW,CAAC,CAAC,UAAU,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,KAAK;oBAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClJ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,CAAC,CAAC,IAAI;oBACf,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;oBAClC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;oBAC9B,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,SAAS,cAAc,CACrB,IAAS,EACT,MAAsB,EACtB,WAAqB,EACrB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,UAAU,GAAW,IAAI,CAAC,UAAU,CAAC;IAE3C,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,oBAAoB,GAAG,IAAI,CAAC;YAC5B,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,SAAS;YACvC,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAC7E,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAW,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IACrD,MAAM,WAAW,GAAW,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;IAEpE,IAAI,YAAY,GAAa,EAAE,CAAC;IAChC,IAAI,gBAAgB,GAAG,aAAa,CAAC;IACrC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,IAAI,aAAa,GAAG,UAAU,GAAG,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,SAAS,EAAE,gBAAgB,GAAG,CAAC;gBAC/B,OAAO,EAAE,gBAAgB,GAAG,YAAY,CAAC,MAAM;gBAC/C,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;gBACxB,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;aAC3C,CAAC,CAAC;YACH,YAAY,GAAG,EAAE,CAAC;YAClB,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;YACrC,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,aAAa,IAAI,UAAU,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,SAAS,EAAE,gBAAgB,GAAG,CAAC;YAC/B,OAAO,EAAE,gBAAgB,GAAG,YAAY,CAAC,MAAM;YAC/C,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAkB,EAAE,SAAiB;IAC7D,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtF,IACE,cAAc,IAAI,SAAS;YAC3B,OAAO,CAAC,IAAI,KAAK,OAAO;YACxB,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EACrC,CAAC;YACD,OAAO,GAAG;gBACR,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;gBAC9C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;aAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA0B,EAC1B,SAAiB;IAEjB,MAAM,UAAU,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE7B,OAAO;QACL,KAAK,CAAC,OAAe,EAAE,QAAgB;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;YAE1E,IAAI,SAAS,GAAG,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAChF,SAAS,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAY,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5C,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC7F,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;gBAE5E,OAAO;oBACL,OAAO,EAAE,YAAY;oBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,QAAQ,EAAE,UAAU,CAAC,kBAAkB;iBACxC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO;oBACP,SAAS,EAAE,CAAC;oBACZ,OAAO,EAAE,WAAW,CAAC,MAAM;oBAC3B,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,UAAU,CAAC,kBAAkB;iBACxC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ChunkerConfig } from "../config/index.js";
|
|
2
|
+
export interface Chunk {
|
|
3
|
+
content: string;
|
|
4
|
+
startLine: number;
|
|
5
|
+
endLine: number;
|
|
6
|
+
type: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
language: string;
|
|
9
|
+
metadata?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface Chunker {
|
|
12
|
+
chunk(content: string, filePath: string): Promise<Chunk[]>;
|
|
13
|
+
}
|
|
14
|
+
export declare function createChunker(config: ChunkerConfig): Chunker;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chunker/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CAC5D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAsB5D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { extname } from "node:path";
|
|
2
|
+
import { getLanguageConfig } from "./languages/index.js";
|
|
3
|
+
import { createAstChunker } from "./ast.js";
|
|
4
|
+
import { createTokenChunker } from "./token.js";
|
|
5
|
+
export function createChunker(config) {
|
|
6
|
+
const maxTokens = config.max_tokens;
|
|
7
|
+
const overlap = config.overlap;
|
|
8
|
+
return {
|
|
9
|
+
async chunk(content, filePath) {
|
|
10
|
+
const ext = extname(filePath).toLowerCase();
|
|
11
|
+
const langConfig = getLanguageConfig(ext);
|
|
12
|
+
if (langConfig) {
|
|
13
|
+
try {
|
|
14
|
+
const astChunker = await createAstChunker(langConfig, maxTokens);
|
|
15
|
+
return astChunker.chunk(content, filePath);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// AST parsing failed, fall through to token chunker
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const tokenChunker = createTokenChunker(maxTokens, overlap);
|
|
22
|
+
return tokenChunker.chunk(content, filePath);
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chunker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAiBhD,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE/B,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,QAAgB;YAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBACjE,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7C,CAAC;gBAAC,MAAM,CAAC;oBACP,oDAAoD;gBACtD,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dart.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/dart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,UAAU,EAAE,cAoBxB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const dartConfig = {
|
|
2
|
+
extensions: [".dart"],
|
|
3
|
+
treeSitterLanguage: "dart",
|
|
4
|
+
treeSitterWasmFile: "tree-sitter-dart.wasm",
|
|
5
|
+
chunkNodeTypes: [
|
|
6
|
+
"function_signature",
|
|
7
|
+
"method_signature",
|
|
8
|
+
"class_definition",
|
|
9
|
+
"enum_declaration",
|
|
10
|
+
"function_body",
|
|
11
|
+
"declaration",
|
|
12
|
+
],
|
|
13
|
+
containerNodeTypes: [
|
|
14
|
+
"program",
|
|
15
|
+
"class_body",
|
|
16
|
+
],
|
|
17
|
+
importNodeTypes: [
|
|
18
|
+
"import_or_export",
|
|
19
|
+
],
|
|
20
|
+
nameFields: ["name"],
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=dart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dart.js","sourceRoot":"","sources":["../../../src/chunker/languages/dart.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM;IAC1B,kBAAkB,EAAE,uBAAuB;IAC3C,cAAc,EAAE;QACd,oBAAoB;QACpB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,aAAa;KACd;IACD,kBAAkB,EAAE;QAClB,SAAS;QACT,YAAY;KACb;IACD,eAAe,EAAE;QACf,kBAAkB;KACnB;IACD,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/go.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,QAAQ,EAAE,cAkBtB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const goConfig = {
|
|
2
|
+
extensions: [".go"],
|
|
3
|
+
treeSitterLanguage: "go",
|
|
4
|
+
treeSitterWasmFile: "tree-sitter-go.wasm",
|
|
5
|
+
chunkNodeTypes: [
|
|
6
|
+
"function_declaration",
|
|
7
|
+
"method_declaration",
|
|
8
|
+
"type_declaration",
|
|
9
|
+
"const_declaration",
|
|
10
|
+
"var_declaration",
|
|
11
|
+
],
|
|
12
|
+
containerNodeTypes: [
|
|
13
|
+
"source_file",
|
|
14
|
+
],
|
|
15
|
+
importNodeTypes: [
|
|
16
|
+
"import_declaration",
|
|
17
|
+
],
|
|
18
|
+
nameFields: ["name"],
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=go.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../../src/chunker/languages/go.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,qBAAqB;IACzC,cAAc,EAAE;QACd,sBAAsB;QACtB,oBAAoB;QACpB,kBAAkB;QAClB,mBAAmB;QACnB,iBAAiB;KAClB;IACD,kBAAkB,EAAE;QAClB,aAAa;KACd;IACD,eAAe,EAAE;QACf,oBAAoB;KACrB;IACD,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface LanguageConfig {
|
|
2
|
+
extensions: string[];
|
|
3
|
+
treeSitterLanguage: string;
|
|
4
|
+
treeSitterWasmFile: string;
|
|
5
|
+
chunkNodeTypes: string[];
|
|
6
|
+
containerNodeTypes: string[];
|
|
7
|
+
importNodeTypes: string[];
|
|
8
|
+
nameFields: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function getLanguageConfig(extension: string): LanguageConfig | undefined;
|
|
11
|
+
export declare function getSupportedExtensions(): string[];
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAmCD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE/E;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { typescriptConfig, tsxConfig } from "./typescript.js";
|
|
2
|
+
import { pythonConfig } from "./python.js";
|
|
3
|
+
import { goConfig } from "./go.js";
|
|
4
|
+
import { dartConfig } from "./dart.js";
|
|
5
|
+
import { kotlinConfig } from "./kotlin.js";
|
|
6
|
+
import { swiftConfig } from "./swift.js";
|
|
7
|
+
const allConfigs = [
|
|
8
|
+
tsxConfig, // must come before typescriptConfig so .tsx/.jsx map to tsx
|
|
9
|
+
typescriptConfig,
|
|
10
|
+
pythonConfig,
|
|
11
|
+
goConfig,
|
|
12
|
+
dartConfig,
|
|
13
|
+
kotlinConfig,
|
|
14
|
+
swiftConfig,
|
|
15
|
+
];
|
|
16
|
+
const extensionMap = new Map();
|
|
17
|
+
for (const config of allConfigs) {
|
|
18
|
+
for (const ext of config.extensions) {
|
|
19
|
+
if (!extensionMap.has(ext)) {
|
|
20
|
+
extensionMap.set(ext, config);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Override: .tsx/.jsx should use tsxConfig, .ts/.js should use typescriptConfig
|
|
25
|
+
extensionMap.set(".tsx", tsxConfig);
|
|
26
|
+
extensionMap.set(".jsx", tsxConfig);
|
|
27
|
+
extensionMap.set(".ts", typescriptConfig);
|
|
28
|
+
extensionMap.set(".js", typescriptConfig);
|
|
29
|
+
export function getLanguageConfig(extension) {
|
|
30
|
+
return extensionMap.get(extension);
|
|
31
|
+
}
|
|
32
|
+
export function getSupportedExtensions() {
|
|
33
|
+
return [...extensionMap.keys()];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chunker/languages/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,GAAqB;IACnC,SAAS,EAAS,4DAA4D;IAC9E,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEvD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACpC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACpC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC1C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAE1C,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/kotlin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,YAAY,EAAE,cAqB1B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const kotlinConfig = {
|
|
2
|
+
extensions: [".kt", ".kts"],
|
|
3
|
+
treeSitterLanguage: "kotlin",
|
|
4
|
+
treeSitterWasmFile: "tree-sitter-kotlin.wasm",
|
|
5
|
+
chunkNodeTypes: [
|
|
6
|
+
"function_declaration",
|
|
7
|
+
"class_declaration",
|
|
8
|
+
"object_declaration",
|
|
9
|
+
"property_declaration",
|
|
10
|
+
"companion_object",
|
|
11
|
+
"interface_declaration",
|
|
12
|
+
],
|
|
13
|
+
containerNodeTypes: [
|
|
14
|
+
"source_file",
|
|
15
|
+
"class_body",
|
|
16
|
+
],
|
|
17
|
+
importNodeTypes: [
|
|
18
|
+
"import_list",
|
|
19
|
+
"import_header",
|
|
20
|
+
],
|
|
21
|
+
nameFields: ["name"],
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=kotlin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../../src/chunker/languages/kotlin.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,QAAQ;IAC5B,kBAAkB,EAAE,yBAAyB;IAC7C,cAAc,EAAE;QACd,sBAAsB;QACtB,mBAAmB;QACnB,oBAAoB;QACpB,sBAAsB;QACtB,kBAAkB;QAClB,uBAAuB;KACxB;IACD,kBAAkB,EAAE;QAClB,aAAa;QACb,YAAY;KACb;IACD,eAAe,EAAE;QACf,aAAa;QACb,eAAe;KAChB;IACD,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,YAAY,EAAE,cAmB1B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const pythonConfig = {
|
|
2
|
+
extensions: [".py"],
|
|
3
|
+
treeSitterLanguage: "python",
|
|
4
|
+
treeSitterWasmFile: "tree-sitter-python.wasm",
|
|
5
|
+
chunkNodeTypes: [
|
|
6
|
+
"function_definition",
|
|
7
|
+
"class_definition",
|
|
8
|
+
"decorated_definition",
|
|
9
|
+
],
|
|
10
|
+
containerNodeTypes: [
|
|
11
|
+
"module",
|
|
12
|
+
"class_body",
|
|
13
|
+
"block",
|
|
14
|
+
],
|
|
15
|
+
importNodeTypes: [
|
|
16
|
+
"import_statement",
|
|
17
|
+
"import_from_statement",
|
|
18
|
+
],
|
|
19
|
+
nameFields: ["name"],
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/chunker/languages/python.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,kBAAkB,EAAE,QAAQ;IAC5B,kBAAkB,EAAE,yBAAyB;IAC7C,cAAc,EAAE;QACd,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;KACvB;IACD,kBAAkB,EAAE;QAClB,QAAQ;QACR,YAAY;QACZ,OAAO;KACR;IACD,eAAe,EAAE;QACf,kBAAkB;QAClB,uBAAuB;KACxB;IACD,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/swift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,WAAW,EAAE,cAsBzB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const swiftConfig = {
|
|
2
|
+
extensions: [".swift"],
|
|
3
|
+
treeSitterLanguage: "swift",
|
|
4
|
+
treeSitterWasmFile: "tree-sitter-swift.wasm",
|
|
5
|
+
chunkNodeTypes: [
|
|
6
|
+
"function_declaration",
|
|
7
|
+
"class_declaration",
|
|
8
|
+
"struct_declaration",
|
|
9
|
+
"enum_declaration",
|
|
10
|
+
"protocol_declaration",
|
|
11
|
+
"extension_declaration",
|
|
12
|
+
"property_declaration",
|
|
13
|
+
"init_declaration",
|
|
14
|
+
],
|
|
15
|
+
containerNodeTypes: [
|
|
16
|
+
"source_file",
|
|
17
|
+
"class_body",
|
|
18
|
+
],
|
|
19
|
+
importNodeTypes: [
|
|
20
|
+
"import_declaration",
|
|
21
|
+
],
|
|
22
|
+
nameFields: ["name"],
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=swift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift.js","sourceRoot":"","sources":["../../../src/chunker/languages/swift.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,kBAAkB,EAAE,OAAO;IAC3B,kBAAkB,EAAE,wBAAwB;IAC5C,cAAc,EAAE;QACd,sBAAsB;QACtB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;QAClB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,kBAAkB;KACnB;IACD,kBAAkB,EAAE;QAClB,aAAa;QACb,YAAY;KACb;IACD,eAAe,EAAE;QACf,oBAAoB;KACrB;IACD,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/chunker/languages/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,gBAAgB,EAAE,cA0B9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAKvB,CAAC"}
|