skannr 0.1.5 → 0.2.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/languages/PythonAdapter.d.ts.map +1 -1
- package/dist/languages/PythonAdapter.js +27 -4
- package/dist/languages/PythonAdapter.js.map +1 -1
- package/dist/languages/TreeSitterAdapter.d.ts +30 -0
- package/dist/languages/TreeSitterAdapter.d.ts.map +1 -0
- package/dist/languages/TreeSitterAdapter.js +466 -0
- package/dist/languages/TreeSitterAdapter.js.map +1 -0
- package/dist/languages/grammars/tree-sitter-go.wasm +0 -0
- package/dist/languages/grammars/tree-sitter-java.wasm +0 -0
- package/dist/languages/grammars/tree-sitter-python.wasm +0 -0
- package/dist/languages/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/languages/lang-config.d.ts +38 -0
- package/dist/languages/lang-config.d.ts.map +1 -0
- package/dist/languages/lang-config.js +85 -0
- package/dist/languages/lang-config.js.map +1 -0
- package/dist/languages/registry.d.ts +6 -0
- package/dist/languages/registry.d.ts.map +1 -1
- package/dist/languages/registry.js +18 -4
- package/dist/languages/registry.js.map +1 -1
- package/package.json +4 -5
- package/src/languages/TreeSitterAdapter.ts +431 -0
- package/src/languages/lang-config.ts +113 -0
- package/src/languages/registry.ts +65 -49
- package/src/languages/PythonAdapter.ts +0 -285
- package/tests/agent.tools.test.ts +0 -81
- package/tests/benchmark.test.ts +0 -31
- package/tests/blast-radius.test.ts +0 -290
- package/tests/fixtures/sample.py +0 -17
- package/tests/fixtures/sample.ts +0 -13
- package/tests/fixtures/src/api/routes.ts +0 -1
- package/tests/fixtures/src/auth/permission.ts +0 -3
- package/tests/python-adapter.test.ts +0 -31
- package/tests/ranker-enhanced.test.ts +0 -70
- package/tests/ranker.test.ts +0 -79
- package/tests/scanner.scope.test.ts +0 -67
- package/tests/setup-fixtures.js +0 -29
- package/tests/skeletonizer.test.ts +0 -149
- package/uca-landing/index.html +0 -17
- package/uca-landing/package.json +0 -23
- package/uca-landing/postcss.config.js +0 -6
- package/uca-landing/src/App.jsx +0 -45
- package/uca-landing/src/components/AgentMode.jsx +0 -45
- package/uca-landing/src/components/CliReference.jsx +0 -89
- package/uca-landing/src/components/Features.jsx +0 -88
- package/uca-landing/src/components/Footer.jsx +0 -35
- package/uca-landing/src/components/Hero.jsx +0 -125
- package/uca-landing/src/components/HowItWorks.jsx +0 -65
- package/uca-landing/src/components/Install.jsx +0 -103
- package/uca-landing/src/components/LanguageSupport.jsx +0 -63
- package/uca-landing/src/components/Navbar.jsx +0 -86
- package/uca-landing/src/components/Problem.jsx +0 -51
- package/uca-landing/src/components/Reveal.jsx +0 -40
- package/uca-landing/src/components/TokenSavings.jsx +0 -126
- package/uca-landing/src/components/WorksWith.jsx +0 -59
- package/uca-landing/src/hooks/useScrollNav.js +0 -13
- package/uca-landing/src/hooks/useTypewriter.js +0 -41
- package/uca-landing/src/index.css +0 -13
- package/uca-landing/src/main.jsx +0 -10
- package/uca-landing/tailwind.config.js +0 -68
- package/uca-landing/vercel.json +0 -4
- package/uca-landing/vite.config.js +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PythonAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmQ5E,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAY;IAChB,UAAU,WAAmB;IAE7B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc;IAQvF,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAazC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAY1C"}
|
|
@@ -35,16 +35,33 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.PythonAdapter = void 0;
|
|
37
37
|
const path = __importStar(require("path"));
|
|
38
|
-
|
|
38
|
+
let Parser;
|
|
39
39
|
let pythonLanguage;
|
|
40
|
+
let treeSitterAvailable = true;
|
|
41
|
+
try {
|
|
42
|
+
Parser = require('tree-sitter');
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
treeSitterAvailable = false;
|
|
46
|
+
}
|
|
40
47
|
function ensureParserLoaded() {
|
|
48
|
+
if (!treeSitterAvailable)
|
|
49
|
+
return false;
|
|
41
50
|
if (!pythonLanguage) {
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
try {
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
53
|
+
pythonLanguage = require('tree-sitter-python');
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
treeSitterAvailable = false;
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
44
59
|
}
|
|
60
|
+
return true;
|
|
45
61
|
}
|
|
46
62
|
function getParser() {
|
|
47
|
-
ensureParserLoaded()
|
|
63
|
+
if (!ensureParserLoaded())
|
|
64
|
+
return null;
|
|
48
65
|
const parser = new Parser();
|
|
49
66
|
parser.setLanguage(pythonLanguage);
|
|
50
67
|
return parser;
|
|
@@ -157,6 +174,8 @@ function processStatement(state, node) {
|
|
|
157
174
|
}
|
|
158
175
|
function buildSkeletonAst(content) {
|
|
159
176
|
const parser = getParser();
|
|
177
|
+
if (!parser)
|
|
178
|
+
return content.split('\n').slice(0, 50).join('\n');
|
|
160
179
|
const tree = parser.parse(content);
|
|
161
180
|
const lines = content.split(/\r?\n/);
|
|
162
181
|
const state = {
|
|
@@ -272,6 +291,8 @@ class PythonAdapter {
|
|
|
272
291
|
extractSymbols(content) {
|
|
273
292
|
try {
|
|
274
293
|
const parser = getParser();
|
|
294
|
+
if (!parser)
|
|
295
|
+
return [];
|
|
275
296
|
const tree = parser.parse(content);
|
|
276
297
|
const symbols = [];
|
|
277
298
|
walkSymbols(tree.rootNode, symbols);
|
|
@@ -284,6 +305,8 @@ class PythonAdapter {
|
|
|
284
305
|
extractImports(content) {
|
|
285
306
|
try {
|
|
286
307
|
const parser = getParser();
|
|
308
|
+
if (!parser)
|
|
309
|
+
return [];
|
|
287
310
|
const tree = parser.parse(content);
|
|
288
311
|
const mods = new Set();
|
|
289
312
|
walkImports(tree.rootNode, mods);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonAdapter.js","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;
|
|
1
|
+
{"version":3,"file":"PythonAdapter.js","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal tree-sitter adapter using web-tree-sitter (WASM).
|
|
3
|
+
* Handles Python, Go, Rust, Java, and any future language by loading
|
|
4
|
+
* the appropriate grammar at runtime. No native compilation required.
|
|
5
|
+
*/
|
|
6
|
+
import { LanguageAdapter, SkeletonResult, Symbol } from './LanguageAdapter';
|
|
7
|
+
import { LangConfig } from './lang-config';
|
|
8
|
+
export declare class TreeSitterAdapter implements LanguageAdapter {
|
|
9
|
+
name: string;
|
|
10
|
+
extensions: string[];
|
|
11
|
+
private configs;
|
|
12
|
+
private _initDone;
|
|
13
|
+
constructor(configs: LangConfig[]);
|
|
14
|
+
canHandle(filePath: string): boolean;
|
|
15
|
+
/** Ensure WASM parser is initialized. Call at the start of each public method. */
|
|
16
|
+
private ensureReady;
|
|
17
|
+
/** Async initialization — must be called once before using the adapter. */
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
/** Synchronous initialization attempt (for compat with existing sync API). */
|
|
20
|
+
initializeSync(): void;
|
|
21
|
+
generateSkeleton(content: string, filePath: string): SkeletonResult;
|
|
22
|
+
extractSymbols(content: string): Symbol[];
|
|
23
|
+
extractImports(content: string): string[];
|
|
24
|
+
/** Extract symbols with a file path hint for correct config selection. */
|
|
25
|
+
extractSymbolsForFile(content: string, filePath: string): Symbol[];
|
|
26
|
+
/** Extract imports with a file path hint for correct config selection. */
|
|
27
|
+
extractImportsForFile(content: string, filePath: string): string[];
|
|
28
|
+
private walkSymbols;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=TreeSitterAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeSitterAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/TreeSitterAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAuB,MAAM,eAAe,CAAC;AAkLhE,qBAAa,iBAAkB,YAAW,eAAe;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,UAAU,EAAE;IAMjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKpC,kFAAkF;IAClF,OAAO,CAAC,WAAW;IAOnB,2EAA2E;IACrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,8EAA8E;IAC9E,cAAc,IAAI,IAAI;IAQtB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IA+CnE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAwBzC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IA4BzC,0EAA0E;IAC1E,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBlE,0EAA0E;IAC1E,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IA2BlE,OAAO,CAAC,WAAW;CAgDpB"}
|
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Universal tree-sitter adapter using web-tree-sitter (WASM).
|
|
4
|
+
* Handles Python, Go, Rust, Java, and any future language by loading
|
|
5
|
+
* the appropriate grammar at runtime. No native compilation required.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.TreeSitterAdapter = void 0;
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const lang_config_1 = require("./lang-config");
|
|
44
|
+
// web-tree-sitter types (loaded dynamically to avoid ESM/CJS issues)
|
|
45
|
+
let Parser = null;
|
|
46
|
+
let initPromise = null;
|
|
47
|
+
const loadedLanguages = new Map();
|
|
48
|
+
/** Resolve path to a bundled .wasm grammar file. */
|
|
49
|
+
function grammarPath(filename) {
|
|
50
|
+
return path.join(__dirname, 'grammars', filename);
|
|
51
|
+
}
|
|
52
|
+
/** Initialize the WASM parser (once). */
|
|
53
|
+
async function ensureInit() {
|
|
54
|
+
if (Parser)
|
|
55
|
+
return true;
|
|
56
|
+
if (initPromise) {
|
|
57
|
+
await initPromise;
|
|
58
|
+
return Parser !== null;
|
|
59
|
+
}
|
|
60
|
+
initPromise = (async () => {
|
|
61
|
+
try {
|
|
62
|
+
const mod = require('web-tree-sitter');
|
|
63
|
+
const P = mod.default ?? mod;
|
|
64
|
+
await P.init();
|
|
65
|
+
Parser = P;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
Parser = null;
|
|
69
|
+
}
|
|
70
|
+
})();
|
|
71
|
+
await initPromise;
|
|
72
|
+
return Parser !== null;
|
|
73
|
+
}
|
|
74
|
+
/** Load a language grammar (cached). */
|
|
75
|
+
async function loadLanguage(config) {
|
|
76
|
+
if (loadedLanguages.has(config.id)) {
|
|
77
|
+
return loadedLanguages.get(config.id);
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const wasmPath = grammarPath(config.grammarFile);
|
|
81
|
+
const lang = await Parser.Language.load(wasmPath);
|
|
82
|
+
loadedLanguages.set(config.id, lang);
|
|
83
|
+
return lang;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Synchronous wrapper — uses cached state if already initialized. */
|
|
90
|
+
function getParserSync(config) {
|
|
91
|
+
if (!Parser)
|
|
92
|
+
return null;
|
|
93
|
+
const lang = loadedLanguages.get(config.id);
|
|
94
|
+
if (!lang)
|
|
95
|
+
return null;
|
|
96
|
+
const parser = new Parser();
|
|
97
|
+
parser.setLanguage(lang);
|
|
98
|
+
return { parser, language: lang };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract the text of a node's named field, or null if not present.
|
|
102
|
+
*/
|
|
103
|
+
function fieldText(node, fieldName) {
|
|
104
|
+
const child = node.childForFieldName(fieldName);
|
|
105
|
+
return child ? child.text : null;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get the signature of a function/method node (everything except the body).
|
|
109
|
+
*/
|
|
110
|
+
function getSignature(node, lines, config) {
|
|
111
|
+
const bodyNode = node.childForFieldName(config.bodyField);
|
|
112
|
+
if (!bodyNode) {
|
|
113
|
+
// No body field — return the whole node text (might be a declaration)
|
|
114
|
+
return node.text;
|
|
115
|
+
}
|
|
116
|
+
const startRow = node.startPosition.row;
|
|
117
|
+
const bodyStartRow = bodyNode.startPosition.row;
|
|
118
|
+
// Return lines from node start to body start (exclusive of body content)
|
|
119
|
+
const sigLines = lines.slice(startRow, bodyStartRow);
|
|
120
|
+
if (sigLines.length === 0) {
|
|
121
|
+
// Body is on the same line as the signature
|
|
122
|
+
const fullLine = lines[startRow] || '';
|
|
123
|
+
const bodyCol = bodyNode.startPosition.column;
|
|
124
|
+
return fullLine.slice(0, bodyCol).trimEnd();
|
|
125
|
+
}
|
|
126
|
+
return sigLines.join('\n');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get the indent level of a node based on its start column.
|
|
130
|
+
*/
|
|
131
|
+
function indent(node) {
|
|
132
|
+
return ' '.repeat(node.startPosition.column);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Determine the body placeholder based on language.
|
|
136
|
+
*/
|
|
137
|
+
function bodyPlaceholder(config) {
|
|
138
|
+
if (config.id === 'python')
|
|
139
|
+
return ' ...';
|
|
140
|
+
return ' /* trimmed */';
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Generate skeleton for a class node.
|
|
144
|
+
*/
|
|
145
|
+
function skeletonizeClass(node, lines, config) {
|
|
146
|
+
const out = [];
|
|
147
|
+
const name = fieldText(node, config.nameField) || 'Unknown';
|
|
148
|
+
const bodyNode = node.childForFieldName(config.classBodyField);
|
|
149
|
+
// Class signature
|
|
150
|
+
const sig = getSignature(node, lines, config);
|
|
151
|
+
out.push(sig);
|
|
152
|
+
if (!bodyNode) {
|
|
153
|
+
return out;
|
|
154
|
+
}
|
|
155
|
+
// For Python, add body placeholder for the class opening
|
|
156
|
+
if (config.id === 'python') {
|
|
157
|
+
// Walk methods inside the class body
|
|
158
|
+
for (const child of bodyNode.namedChildren) {
|
|
159
|
+
if (config.methodTypes.includes(child.type)) {
|
|
160
|
+
out.push('');
|
|
161
|
+
const methodSig = getSignature(child, lines, config);
|
|
162
|
+
out.push(methodSig);
|
|
163
|
+
out.push(indent(child) + ' ...');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// For braced languages, output opening brace + method signatures
|
|
169
|
+
if (!sig.includes('{')) {
|
|
170
|
+
out.push(indent(node) + '{');
|
|
171
|
+
}
|
|
172
|
+
for (const child of bodyNode.namedChildren) {
|
|
173
|
+
if (config.methodTypes.includes(child.type)) {
|
|
174
|
+
const methodSig = getSignature(child, lines, config);
|
|
175
|
+
out.push(methodSig);
|
|
176
|
+
out.push(indent(child) + bodyPlaceholder(config));
|
|
177
|
+
if (!config.id.match(/python/)) {
|
|
178
|
+
out.push(indent(child) + '}');
|
|
179
|
+
}
|
|
180
|
+
out.push('');
|
|
181
|
+
}
|
|
182
|
+
else if (child.type === 'field_declaration' ||
|
|
183
|
+
child.type === 'field_definition' ||
|
|
184
|
+
child.type === 'annotation_type_element_declaration') {
|
|
185
|
+
// Keep field declarations as-is
|
|
186
|
+
out.push(child.text);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
out.push(indent(node) + '}');
|
|
190
|
+
}
|
|
191
|
+
return out;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Generate skeleton for a function node.
|
|
195
|
+
*/
|
|
196
|
+
function skeletonizeFunction(node, lines, config) {
|
|
197
|
+
const out = [];
|
|
198
|
+
const sig = getSignature(node, lines, config);
|
|
199
|
+
out.push(sig);
|
|
200
|
+
if (config.id === 'python') {
|
|
201
|
+
out.push(indent(node) + ' ...');
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
if (!sig.trimEnd().endsWith('{')) {
|
|
205
|
+
out.push(indent(node) + '{');
|
|
206
|
+
}
|
|
207
|
+
out.push(indent(node) + bodyPlaceholder(config));
|
|
208
|
+
out.push(indent(node) + '}');
|
|
209
|
+
}
|
|
210
|
+
return out;
|
|
211
|
+
}
|
|
212
|
+
class TreeSitterAdapter {
|
|
213
|
+
name;
|
|
214
|
+
extensions;
|
|
215
|
+
configs;
|
|
216
|
+
_initDone = false;
|
|
217
|
+
constructor(configs) {
|
|
218
|
+
this.configs = configs;
|
|
219
|
+
this.name = 'tree-sitter';
|
|
220
|
+
this.extensions = configs.flatMap((c) => c.extensions);
|
|
221
|
+
}
|
|
222
|
+
canHandle(filePath) {
|
|
223
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
224
|
+
return this.extensions.includes(ext);
|
|
225
|
+
}
|
|
226
|
+
/** Ensure WASM parser is initialized. Call at the start of each public method. */
|
|
227
|
+
ensureReady(ext) {
|
|
228
|
+
const config = (0, lang_config_1.getLangConfigForExt)(ext);
|
|
229
|
+
if (!config)
|
|
230
|
+
return null;
|
|
231
|
+
if (!Parser || !loadedLanguages.has(config.id))
|
|
232
|
+
return null;
|
|
233
|
+
return config;
|
|
234
|
+
}
|
|
235
|
+
/** Async initialization — must be called once before using the adapter. */
|
|
236
|
+
async initialize() {
|
|
237
|
+
if (this._initDone)
|
|
238
|
+
return;
|
|
239
|
+
const ok = await ensureInit();
|
|
240
|
+
if (!ok)
|
|
241
|
+
return;
|
|
242
|
+
for (const config of this.configs) {
|
|
243
|
+
await loadLanguage(config);
|
|
244
|
+
}
|
|
245
|
+
this._initDone = true;
|
|
246
|
+
}
|
|
247
|
+
/** Synchronous initialization attempt (for compat with existing sync API). */
|
|
248
|
+
initializeSync() {
|
|
249
|
+
// Trigger async init in background. Methods will return fallbacks
|
|
250
|
+
// until initialization completes.
|
|
251
|
+
if (!this._initDone) {
|
|
252
|
+
this.initialize().catch(() => { });
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
generateSkeleton(content, filePath) {
|
|
256
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
257
|
+
const config = this.ensureReady(ext);
|
|
258
|
+
if (!config) {
|
|
259
|
+
return { skeleton: content.split('\n').slice(0, 50).join('\n') };
|
|
260
|
+
}
|
|
261
|
+
try {
|
|
262
|
+
const ctx = getParserSync(config);
|
|
263
|
+
if (!ctx)
|
|
264
|
+
return { skeleton: content.split('\n').slice(0, 50).join('\n') };
|
|
265
|
+
const tree = ctx.parser.parse(content);
|
|
266
|
+
if (!tree)
|
|
267
|
+
return { skeleton: content.split('\n').slice(0, 50).join('\n') };
|
|
268
|
+
const lines = content.split(/\r?\n/);
|
|
269
|
+
const skeletonLines = [];
|
|
270
|
+
skeletonLines.push(`/* Skeleton of ${path.basename(filePath)} */`);
|
|
271
|
+
skeletonLines.push('');
|
|
272
|
+
for (const child of tree.rootNode.namedChildren) {
|
|
273
|
+
if (config.importTypes.includes(child.type)) {
|
|
274
|
+
skeletonLines.push(child.text);
|
|
275
|
+
}
|
|
276
|
+
else if (config.classTypes.includes(child.type)) {
|
|
277
|
+
skeletonLines.push('');
|
|
278
|
+
skeletonLines.push(...skeletonizeClass(child, lines, config));
|
|
279
|
+
}
|
|
280
|
+
else if (config.functionTypes.includes(child.type)) {
|
|
281
|
+
skeletonLines.push('');
|
|
282
|
+
skeletonLines.push(...skeletonizeFunction(child, lines, config));
|
|
283
|
+
}
|
|
284
|
+
else if (config.interfaceTypes.includes(child.type)) {
|
|
285
|
+
skeletonLines.push('');
|
|
286
|
+
skeletonLines.push(child.text);
|
|
287
|
+
}
|
|
288
|
+
else if (config.typeTypes.includes(child.type)) {
|
|
289
|
+
skeletonLines.push('');
|
|
290
|
+
skeletonLines.push(child.text);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
tree.delete();
|
|
294
|
+
ctx.parser.delete();
|
|
295
|
+
return { skeleton: skeletonLines.join('\n').trim() };
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
return { skeleton: content.split('\n').slice(0, 50).join('\n') };
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
extractSymbols(content) {
|
|
302
|
+
// Determine the config from context (we don't have filePath here,
|
|
303
|
+
// so try each config until one parses successfully)
|
|
304
|
+
for (const config of this.configs) {
|
|
305
|
+
const ctx = getParserSync(config);
|
|
306
|
+
if (!ctx)
|
|
307
|
+
continue;
|
|
308
|
+
try {
|
|
309
|
+
const tree = ctx.parser.parse(content);
|
|
310
|
+
if (!tree) {
|
|
311
|
+
ctx.parser.delete();
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
const symbols = [];
|
|
315
|
+
this.walkSymbols(tree.rootNode, symbols, config);
|
|
316
|
+
tree.delete();
|
|
317
|
+
ctx.parser.delete();
|
|
318
|
+
if (symbols.length > 0)
|
|
319
|
+
return symbols;
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
ctx.parser.delete();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
extractImports(content) {
|
|
328
|
+
for (const config of this.configs) {
|
|
329
|
+
const ctx = getParserSync(config);
|
|
330
|
+
if (!ctx)
|
|
331
|
+
continue;
|
|
332
|
+
try {
|
|
333
|
+
const tree = ctx.parser.parse(content);
|
|
334
|
+
if (!tree) {
|
|
335
|
+
ctx.parser.delete();
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
const imports = [];
|
|
339
|
+
for (const child of tree.rootNode.namedChildren) {
|
|
340
|
+
if (config.importTypes.includes(child.type)) {
|
|
341
|
+
// Extract module name from import
|
|
342
|
+
const text = child.text;
|
|
343
|
+
imports.push(text);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
tree.delete();
|
|
347
|
+
ctx.parser.delete();
|
|
348
|
+
if (imports.length > 0)
|
|
349
|
+
return imports;
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
ctx.parser.delete();
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return [];
|
|
356
|
+
}
|
|
357
|
+
/** Extract symbols with a file path hint for correct config selection. */
|
|
358
|
+
extractSymbolsForFile(content, filePath) {
|
|
359
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
360
|
+
const config = this.ensureReady(ext);
|
|
361
|
+
if (!config)
|
|
362
|
+
return [];
|
|
363
|
+
const ctx = getParserSync(config);
|
|
364
|
+
if (!ctx)
|
|
365
|
+
return [];
|
|
366
|
+
try {
|
|
367
|
+
const tree = ctx.parser.parse(content);
|
|
368
|
+
if (!tree) {
|
|
369
|
+
ctx.parser.delete();
|
|
370
|
+
return [];
|
|
371
|
+
}
|
|
372
|
+
const symbols = [];
|
|
373
|
+
this.walkSymbols(tree.rootNode, symbols, config);
|
|
374
|
+
tree.delete();
|
|
375
|
+
ctx.parser.delete();
|
|
376
|
+
return symbols;
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
ctx.parser.delete();
|
|
380
|
+
return [];
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/** Extract imports with a file path hint for correct config selection. */
|
|
384
|
+
extractImportsForFile(content, filePath) {
|
|
385
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
386
|
+
const config = this.ensureReady(ext);
|
|
387
|
+
if (!config)
|
|
388
|
+
return [];
|
|
389
|
+
const ctx = getParserSync(config);
|
|
390
|
+
if (!ctx)
|
|
391
|
+
return [];
|
|
392
|
+
try {
|
|
393
|
+
const tree = ctx.parser.parse(content);
|
|
394
|
+
if (!tree) {
|
|
395
|
+
ctx.parser.delete();
|
|
396
|
+
return [];
|
|
397
|
+
}
|
|
398
|
+
const imports = [];
|
|
399
|
+
for (const child of tree.rootNode.namedChildren) {
|
|
400
|
+
if (config.importTypes.includes(child.type)) {
|
|
401
|
+
imports.push(child.text);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
tree.delete();
|
|
405
|
+
ctx.parser.delete();
|
|
406
|
+
return imports;
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
ctx.parser.delete();
|
|
410
|
+
return [];
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
walkSymbols(node, symbols, config) {
|
|
414
|
+
for (const child of node.namedChildren) {
|
|
415
|
+
const name = fieldText(child, config.nameField);
|
|
416
|
+
if (!name)
|
|
417
|
+
continue;
|
|
418
|
+
if (config.functionTypes.includes(child.type)) {
|
|
419
|
+
symbols.push({
|
|
420
|
+
name,
|
|
421
|
+
kind: 'function',
|
|
422
|
+
line: child.startPosition.row + 1,
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
else if (config.classTypes.includes(child.type)) {
|
|
426
|
+
symbols.push({
|
|
427
|
+
name,
|
|
428
|
+
kind: 'class',
|
|
429
|
+
line: child.startPosition.row + 1,
|
|
430
|
+
});
|
|
431
|
+
// Walk class body for methods
|
|
432
|
+
const body = child.childForFieldName(config.classBodyField);
|
|
433
|
+
if (body) {
|
|
434
|
+
for (const member of body.namedChildren) {
|
|
435
|
+
if (config.methodTypes.includes(member.type)) {
|
|
436
|
+
const methodName = fieldText(member, config.nameField);
|
|
437
|
+
if (methodName) {
|
|
438
|
+
symbols.push({
|
|
439
|
+
name: methodName,
|
|
440
|
+
kind: 'function',
|
|
441
|
+
line: member.startPosition.row + 1,
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
else if (config.interfaceTypes.includes(child.type)) {
|
|
449
|
+
symbols.push({
|
|
450
|
+
name,
|
|
451
|
+
kind: 'interface',
|
|
452
|
+
line: child.startPosition.row + 1,
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
else if (config.typeTypes.includes(child.type)) {
|
|
456
|
+
symbols.push({
|
|
457
|
+
name,
|
|
458
|
+
kind: 'type',
|
|
459
|
+
line: child.startPosition.row + 1,
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
exports.TreeSitterAdapter = TreeSitterAdapter;
|
|
466
|
+
//# sourceMappingURL=TreeSitterAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeSitterAdapter.js","sourceRoot":"","sources":["../../src/languages/TreeSitterAdapter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAE7B,+CAAgE;AAEhE,qEAAqE;AACrE,IAAI,MAAM,GAAQ,IAAI,CAAC;AACvB,IAAI,WAAW,GAAyB,IAAI,CAAC;AAC7C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAe,CAAC;AAE/C,oDAAoD;AACpD,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,yCAAyC;AACzC,KAAK,UAAU,UAAU;IACvB,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC;QAClB,OAAO,MAAM,KAAK,IAAI,CAAC;IACzB,CAAC;IACD,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;YAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,WAAW,CAAC;IAClB,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED,wCAAwC;AACxC,KAAK,UAAU,YAAY,CAAC,MAAkB;IAC5C,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACnC,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,SAAS,aAAa,CAAC,MAAkB;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAS,EAAE,SAAiB;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAS,EAAE,KAAe,EAAE,MAAkB;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,sEAAsE;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IACxC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;IAChD,yEAAyE;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAC,IAAS;IACvB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAkB;IACzC,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAS,EAAE,KAAe,EAAE,MAAkB;IACtE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAE/D,kBAAkB;IAClB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEd,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,qCAAqC;QACrC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,iEAAiE;QACjE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;gBAClC,KAAK,CAAC,IAAI,KAAK,kBAAkB;gBACjC,KAAK,CAAC,IAAI,KAAK,qCAAqC,EAAE,CAAC;gBAChE,gCAAgC;gBAChC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAS,EAAE,KAAe,EAAE,MAAkB;IACzE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEd,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAa,iBAAiB;IAC5B,IAAI,CAAS;IACb,UAAU,CAAW;IACb,OAAO,CAAe;IACtB,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,OAAqB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,kFAAkF;IAC1E,WAAW,CAAC,GAAW;QAC7B,MAAM,MAAM,GAAG,IAAA,iCAAmB,EAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,8EAA8E;IAC9E,cAAc;QACZ,kEAAkE;QAClE,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,QAAgB;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAE3E,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAE5E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,aAAa,GAAa,EAAE,CAAC;YAEnC,aAAa,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAChD,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5C,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClD,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChE,CAAC;qBAAM,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrD,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBACnE,CAAC;qBAAM,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtD,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAEpB,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,CAAC;IACH,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,kEAAkE;QAClE,oDAAoD;QACpD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAE7C,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,OAAO,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAE7C,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;oBAChD,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5C,kCAAkC;wBAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;wBACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAEpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,OAAO,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0EAA0E;IAC1E,qBAAqB,CAAC,OAAe,EAAE,QAAgB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YAE9C,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,qBAAqB,CAAC,OAAe,EAAE,QAAgB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YAE9C,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAChD,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,IAAS,EAAE,OAAiB,EAAE,MAAkB;QAClE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;iBAClC,CAAC,CAAC;gBACH,8BAA8B;gBAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC5D,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxC,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;4BACvD,IAAI,UAAU,EAAE,CAAC;gCACf,OAAO,CAAC,IAAI,CAAC;oCACX,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;iCACnC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AApPD,8CAoPC"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|