@sammons/code-outline-cli 2.0.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/LICENSE +21 -0
- package/dist/cli-argument-parser.d.ts +23 -0
- package/dist/cli-argument-parser.d.ts.map +1 -0
- package/dist/cli-argument-parser.js +176 -0
- package/dist/cli-argument-parser.js.map +1 -0
- package/dist/cli-orchestrator.d.ts +7 -0
- package/dist/cli-orchestrator.d.ts.map +1 -0
- package/dist/cli-orchestrator.js +43 -0
- package/dist/cli-orchestrator.js.map +1 -0
- package/dist/cli-orchestrator.unit.test.d.ts +2 -0
- package/dist/cli-orchestrator.unit.test.d.ts.map +1 -0
- package/dist/cli-orchestrator.unit.test.js +139 -0
- package/dist/cli-orchestrator.unit.test.js.map +1 -0
- package/dist/cli-output-handler.d.ts +8 -0
- package/dist/cli-output-handler.d.ts.map +1 -0
- package/dist/cli-output-handler.js +16 -0
- package/dist/cli-output-handler.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.integration.test.d.ts +2 -0
- package/dist/cli.integration.test.d.ts.map +1 -0
- package/dist/cli.integration.test.js +308 -0
- package/dist/cli.integration.test.js.map +1 -0
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.unit.test.d.ts +2 -0
- package/dist/cli.unit.test.d.ts.map +1 -0
- package/dist/cli.unit.test.js +349 -0
- package/dist/cli.unit.test.js.map +1 -0
- package/dist/file-processor.d.ts +16 -0
- package/dist/file-processor.d.ts.map +1 -0
- package/dist/file-processor.js +56 -0
- package/dist/file-processor.js.map +1 -0
- package/dist/test.d.ts +25 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +41 -0
- package/dist/test.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
// Test utilities
|
|
8
|
+
function runCLI(args) {
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
const cliPath = require.resolve('./cli.ts');
|
|
11
|
+
const child = (0, node_child_process_1.spawn)('tsx', [cliPath, ...args], {
|
|
12
|
+
stdio: 'pipe',
|
|
13
|
+
});
|
|
14
|
+
let stdout = '';
|
|
15
|
+
let stderr = '';
|
|
16
|
+
child.stdout?.on('data', (data) => {
|
|
17
|
+
stdout += data.toString();
|
|
18
|
+
});
|
|
19
|
+
child.stderr?.on('data', (data) => {
|
|
20
|
+
stderr += data.toString();
|
|
21
|
+
});
|
|
22
|
+
child.on('close', (code) => {
|
|
23
|
+
resolve({ stdout, stderr, exitCode: code });
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
(0, vitest_1.describe)('CLI', () => {
|
|
28
|
+
const testDir = (0, node_path_1.resolve)(__dirname, '../../../test/temp');
|
|
29
|
+
const testFile = (0, node_path_1.resolve)(testDir, 'test.js');
|
|
30
|
+
(0, vitest_1.beforeEach)(() => {
|
|
31
|
+
// Create temp directory and test file
|
|
32
|
+
(0, node_fs_1.mkdirSync)(testDir, { recursive: true });
|
|
33
|
+
(0, node_fs_1.writeFileSync)(testFile, `
|
|
34
|
+
function greet(name) {
|
|
35
|
+
return \`Hello, \${name}!\`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
class Person {
|
|
39
|
+
constructor(name) {
|
|
40
|
+
this.name = name;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getName() {
|
|
44
|
+
return this.name;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { greet, Person };
|
|
49
|
+
`.trim());
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.afterEach)(() => {
|
|
52
|
+
// Cleanup
|
|
53
|
+
(0, node_fs_1.rmSync)(testDir, { recursive: true, force: true });
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.describe)('argument parsing', () => {
|
|
56
|
+
(0, vitest_1.it)('should show help when --help flag is used', async () => {
|
|
57
|
+
const result = await runCLI(['--help']);
|
|
58
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
59
|
+
(0, vitest_1.expect)(result.stdout).toContain('glance-with-tree-sitter');
|
|
60
|
+
(0, vitest_1.expect)(result.stdout).toContain('Usage:');
|
|
61
|
+
(0, vitest_1.expect)(result.stdout).toContain('Options:');
|
|
62
|
+
(0, vitest_1.expect)(result.stdout).toContain('--format');
|
|
63
|
+
(0, vitest_1.expect)(result.stdout).toContain('--depth');
|
|
64
|
+
(0, vitest_1.expect)(result.stdout).toContain('--named-only');
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.it)('should show version when --version flag is used', async () => {
|
|
67
|
+
const result = await runCLI(['--version']);
|
|
68
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
69
|
+
(0, vitest_1.expect)(result.stdout).toMatch(/\d+\.\d+\.\d+/); // Version number pattern
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.it)('should show error when no pattern is provided', async () => {
|
|
72
|
+
const result = await runCLI([]);
|
|
73
|
+
(0, vitest_1.expect)(result.exitCode).toBe(1);
|
|
74
|
+
(0, vitest_1.expect)(result.stderr).toContain('No file pattern provided');
|
|
75
|
+
});
|
|
76
|
+
(0, vitest_1.it)('should accept valid format options', async () => {
|
|
77
|
+
const formats = ['json', 'yaml', 'ascii'];
|
|
78
|
+
for (const format of formats) {
|
|
79
|
+
const result = await runCLI([testFile, '--format', format]);
|
|
80
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.it)('should reject invalid format options', async () => {
|
|
84
|
+
const result = await runCLI([testFile, '--format', 'invalid']);
|
|
85
|
+
(0, vitest_1.expect)(result.exitCode).toBe(1);
|
|
86
|
+
(0, vitest_1.expect)(result.stderr).toContain('Invalid format');
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.it)('should accept valid depth options', async () => {
|
|
89
|
+
const depths = ['1', '5', '10', 'Infinity'];
|
|
90
|
+
for (const depth of depths) {
|
|
91
|
+
const result = await runCLI([testFile, '--depth', depth]);
|
|
92
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
(0, vitest_1.it)('should reject invalid depth options', async () => {
|
|
96
|
+
const invalidDepths = ['0', '-1', 'invalid'];
|
|
97
|
+
for (const depth of invalidDepths) {
|
|
98
|
+
const result = await runCLI([testFile, '--depth', depth]);
|
|
99
|
+
(0, vitest_1.expect)(result.exitCode).toBe(1);
|
|
100
|
+
// The error message might vary depending on the invalid input
|
|
101
|
+
(0, vitest_1.expect)(result.stderr.length).toBeGreaterThan(0);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
(0, vitest_1.it)('should handle named-only and all flags correctly', async () => {
|
|
105
|
+
// Test --named-only (default behavior)
|
|
106
|
+
const namedOnlyResult = await runCLI([testFile, '--named-only']);
|
|
107
|
+
(0, vitest_1.expect)(namedOnlyResult.exitCode).toBe(0);
|
|
108
|
+
// Test --all flag
|
|
109
|
+
const allResult = await runCLI([testFile, '--all']);
|
|
110
|
+
(0, vitest_1.expect)(allResult.exitCode).toBe(0);
|
|
111
|
+
// Both should work, but --all should generally produce more output
|
|
112
|
+
// (though this depends on the specific file content)
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
(0, vitest_1.describe)('file parsing', () => {
|
|
116
|
+
(0, vitest_1.it)('should parse a single JavaScript file correctly', async () => {
|
|
117
|
+
const result = await runCLI([testFile, '--format', 'json']);
|
|
118
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
119
|
+
(0, vitest_1.expect)(() => JSON.parse(result.stdout)).not.toThrow();
|
|
120
|
+
const output = JSON.parse(result.stdout);
|
|
121
|
+
(0, vitest_1.expect)(Array.isArray(output)).toBe(true);
|
|
122
|
+
(0, vitest_1.expect)(output).toHaveLength(1);
|
|
123
|
+
(0, vitest_1.expect)(output[0].file).toContain('test.js');
|
|
124
|
+
(0, vitest_1.expect)(output[0].outline).toBeTruthy();
|
|
125
|
+
(0, vitest_1.expect)(output[0].outline.type).toBe('program');
|
|
126
|
+
});
|
|
127
|
+
(0, vitest_1.it)('should handle glob patterns correctly', async () => {
|
|
128
|
+
// Create additional test files
|
|
129
|
+
const testDir2 = (0, node_path_1.resolve)(testDir, 'subdir');
|
|
130
|
+
(0, node_fs_1.mkdirSync)(testDir2, { recursive: true });
|
|
131
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(testDir2, 'another.js'), 'const x = 1;');
|
|
132
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(testDir, 'index.js'), 'function main() {}');
|
|
133
|
+
const pattern = (0, node_path_1.resolve)(testDir, '**/*.js');
|
|
134
|
+
const result = await runCLI([pattern, '--format', 'json']);
|
|
135
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
136
|
+
const output = JSON.parse(result.stdout);
|
|
137
|
+
(0, vitest_1.expect)(output.length).toBeGreaterThanOrEqual(2);
|
|
138
|
+
});
|
|
139
|
+
(0, vitest_1.it)('should handle non-existent file patterns gracefully', async () => {
|
|
140
|
+
const result = await runCLI(['nonexistent/*.js']);
|
|
141
|
+
(0, vitest_1.expect)(result.exitCode).toBe(1);
|
|
142
|
+
(0, vitest_1.expect)(result.stderr).toContain('No files found matching pattern');
|
|
143
|
+
});
|
|
144
|
+
(0, vitest_1.it)('should handle files that cannot be parsed', async () => {
|
|
145
|
+
// Create an invalid JavaScript file
|
|
146
|
+
const invalidFile = (0, node_path_1.resolve)(testDir, 'invalid.js');
|
|
147
|
+
(0, node_fs_1.writeFileSync)(invalidFile, 'this is not valid javascript {{{');
|
|
148
|
+
const result = await runCLI([invalidFile, '--format', 'json']);
|
|
149
|
+
// Should still exit with 0 but might log parsing errors
|
|
150
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
151
|
+
// The output should still be valid JSON, possibly with null outline
|
|
152
|
+
(0, vitest_1.expect)(() => JSON.parse(result.stdout)).not.toThrow();
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
(0, vitest_1.describe)('output formats', () => {
|
|
156
|
+
(0, vitest_1.it)('should produce valid JSON output', async () => {
|
|
157
|
+
const result = await runCLI([testFile, '--format', 'json']);
|
|
158
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
159
|
+
(0, vitest_1.expect)(() => JSON.parse(result.stdout)).not.toThrow();
|
|
160
|
+
const output = JSON.parse(result.stdout);
|
|
161
|
+
(0, vitest_1.expect)(Array.isArray(output)).toBe(true);
|
|
162
|
+
(0, vitest_1.expect)(output[0]).toHaveProperty('file');
|
|
163
|
+
(0, vitest_1.expect)(output[0]).toHaveProperty('outline');
|
|
164
|
+
});
|
|
165
|
+
(0, vitest_1.it)('should produce YAML output', async () => {
|
|
166
|
+
const result = await runCLI([testFile, '--format', 'yaml']);
|
|
167
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
168
|
+
(0, vitest_1.expect)(result.stdout).toContain('file:');
|
|
169
|
+
(0, vitest_1.expect)(result.stdout).toContain('outline:');
|
|
170
|
+
(0, vitest_1.expect)(result.stdout).toMatch(/^-/m); // YAML array indicator
|
|
171
|
+
});
|
|
172
|
+
(0, vitest_1.it)('should produce ASCII tree output', async () => {
|
|
173
|
+
const result = await runCLI([testFile, '--format', 'ascii']);
|
|
174
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
175
|
+
(0, vitest_1.expect)(result.stdout).toContain('📁');
|
|
176
|
+
(0, vitest_1.expect)(result.stdout).toContain('test.js');
|
|
177
|
+
(0, vitest_1.expect)(result.stdout).toContain('function_declaration'); // program is now implicit as the file root
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
(0, vitest_1.describe)('depth control', () => {
|
|
181
|
+
(0, vitest_1.it)('should limit parsing depth when specified', async () => {
|
|
182
|
+
// Test with depth 1
|
|
183
|
+
const shallowResult = await runCLI([
|
|
184
|
+
testFile,
|
|
185
|
+
'--format',
|
|
186
|
+
'json',
|
|
187
|
+
'--depth',
|
|
188
|
+
'1',
|
|
189
|
+
]);
|
|
190
|
+
(0, vitest_1.expect)(shallowResult.exitCode).toBe(0);
|
|
191
|
+
// Test with depth 3
|
|
192
|
+
const deepResult = await runCLI([
|
|
193
|
+
testFile,
|
|
194
|
+
'--format',
|
|
195
|
+
'json',
|
|
196
|
+
'--depth',
|
|
197
|
+
'3',
|
|
198
|
+
]);
|
|
199
|
+
(0, vitest_1.expect)(deepResult.exitCode).toBe(0);
|
|
200
|
+
const shallowOutput = JSON.parse(shallowResult.stdout);
|
|
201
|
+
const deepOutput = JSON.parse(deepResult.stdout);
|
|
202
|
+
// Both should be valid
|
|
203
|
+
(0, vitest_1.expect)(shallowOutput).toHaveLength(1);
|
|
204
|
+
(0, vitest_1.expect)(deepOutput).toHaveLength(1);
|
|
205
|
+
});
|
|
206
|
+
(0, vitest_1.it)('should handle infinite depth', async () => {
|
|
207
|
+
const result = await runCLI([
|
|
208
|
+
testFile,
|
|
209
|
+
'--format',
|
|
210
|
+
'json',
|
|
211
|
+
'--depth',
|
|
212
|
+
'Infinity',
|
|
213
|
+
]);
|
|
214
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
215
|
+
(0, vitest_1.expect)(() => JSON.parse(result.stdout)).not.toThrow();
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
(0, vitest_1.describe)('filtering modes', () => {
|
|
219
|
+
(0, vitest_1.it)('should work in named-only mode by default', async () => {
|
|
220
|
+
const result = await runCLI([testFile, '--format', 'json']);
|
|
221
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
222
|
+
const output = JSON.parse(result.stdout);
|
|
223
|
+
(0, vitest_1.expect)(output[0].outline).toBeTruthy();
|
|
224
|
+
});
|
|
225
|
+
(0, vitest_1.it)('should work with --all flag', async () => {
|
|
226
|
+
const result = await runCLI([testFile, '--format', 'json', '--all']);
|
|
227
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
228
|
+
const output = JSON.parse(result.stdout);
|
|
229
|
+
(0, vitest_1.expect)(output[0].outline).toBeTruthy();
|
|
230
|
+
});
|
|
231
|
+
(0, vitest_1.it)('should respect explicit --named-only flag', async () => {
|
|
232
|
+
const result = await runCLI([
|
|
233
|
+
testFile,
|
|
234
|
+
'--format',
|
|
235
|
+
'json',
|
|
236
|
+
'--named-only',
|
|
237
|
+
]);
|
|
238
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
239
|
+
const output = JSON.parse(result.stdout);
|
|
240
|
+
(0, vitest_1.expect)(output[0].outline).toBeTruthy();
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
(0, vitest_1.describe)('error handling', () => {
|
|
244
|
+
(0, vitest_1.it)('should handle file system errors gracefully', async () => {
|
|
245
|
+
const result = await runCLI(['/nonexistent/path/*.js']);
|
|
246
|
+
(0, vitest_1.expect)(result.exitCode).toBe(1);
|
|
247
|
+
(0, vitest_1.expect)(result.stderr).toContain('No files found');
|
|
248
|
+
});
|
|
249
|
+
(0, vitest_1.it)('should handle permission errors gracefully', async () => {
|
|
250
|
+
// This test might be platform-specific and hard to create reliably
|
|
251
|
+
// For now, just ensure the CLI doesn't crash on non-existent files
|
|
252
|
+
const result = await runCLI(['/root/protected/*.js']);
|
|
253
|
+
// Should exit with error but not crash
|
|
254
|
+
(0, vitest_1.expect)(typeof result.exitCode).toBe('number');
|
|
255
|
+
});
|
|
256
|
+
(0, vitest_1.it)('should continue processing other files if one fails', async () => {
|
|
257
|
+
// Create one valid and one invalid file
|
|
258
|
+
const validFile = (0, node_path_1.resolve)(testDir, 'valid.js');
|
|
259
|
+
const invalidFile = (0, node_path_1.resolve)(testDir, 'invalid.js');
|
|
260
|
+
(0, node_fs_1.writeFileSync)(validFile, 'function test() {}');
|
|
261
|
+
(0, node_fs_1.writeFileSync)(invalidFile, 'invalid syntax {{{');
|
|
262
|
+
const pattern = (0, node_path_1.resolve)(testDir, '*.js');
|
|
263
|
+
const result = await runCLI([pattern, '--format', 'json']);
|
|
264
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
265
|
+
const output = JSON.parse(result.stdout);
|
|
266
|
+
// Should have results for files that could be parsed
|
|
267
|
+
(0, vitest_1.expect)(output.length).toBeGreaterThan(0);
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
(0, vitest_1.describe)('integration with other packages', () => {
|
|
271
|
+
(0, vitest_1.it)('should correctly integrate parser and formatter', async () => {
|
|
272
|
+
const result = await runCLI([testFile, '--format', 'json']);
|
|
273
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
274
|
+
const output = JSON.parse(result.stdout);
|
|
275
|
+
// Should have valid structure from parser
|
|
276
|
+
(0, vitest_1.expect)(output[0].outline.type).toBe('program');
|
|
277
|
+
(0, vitest_1.expect)(output[0].outline.children).toBeDefined();
|
|
278
|
+
// Should have proper formatting
|
|
279
|
+
(0, vitest_1.expect)(output[0].file).toContain('test.js');
|
|
280
|
+
});
|
|
281
|
+
(0, vitest_1.it)('should work with different TypeScript file types', async () => {
|
|
282
|
+
// Create TypeScript files
|
|
283
|
+
const tsFile = (0, node_path_1.resolve)(testDir, 'test.ts');
|
|
284
|
+
const tsxFile = (0, node_path_1.resolve)(testDir, 'test.tsx');
|
|
285
|
+
(0, node_fs_1.writeFileSync)(tsFile, `
|
|
286
|
+
interface User {
|
|
287
|
+
name: string;
|
|
288
|
+
}
|
|
289
|
+
class UserService {
|
|
290
|
+
getUser(): User { return { name: 'test' }; }
|
|
291
|
+
}
|
|
292
|
+
`);
|
|
293
|
+
(0, node_fs_1.writeFileSync)(tsxFile, `
|
|
294
|
+
import React from 'react';
|
|
295
|
+
const Button: React.FC = () => <button>Click</button>;
|
|
296
|
+
export default Button;
|
|
297
|
+
`);
|
|
298
|
+
for (const file of [tsFile, tsxFile]) {
|
|
299
|
+
const result = await runCLI([file, '--format', 'json']);
|
|
300
|
+
(0, vitest_1.expect)(result.exitCode).toBe(0);
|
|
301
|
+
const output = JSON.parse(result.stdout);
|
|
302
|
+
(0, vitest_1.expect)(output).toHaveLength(1);
|
|
303
|
+
(0, vitest_1.expect)(output[0].outline.type).toBe('program');
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
//# sourceMappingURL=cli.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.integration.test.js","sourceRoot":"","sources":["../src/cli.integration.test.ts"],"names":[],"mappings":";;AAAA,mCAAyE;AACzE,2DAA2C;AAC3C,yCAAoC;AACpC,qCAA2D;AAE3D,iBAAiB;AACjB,SAAS,MAAM,CACb,IAAc;IAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;YAC7C,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAA,iBAAQ,EAAC,KAAK,EAAE,GAAG,EAAE;IACnB,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE7C,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,sCAAsC;QACtC,IAAA,mBAAS,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,IAAA,uBAAa,EACX,QAAQ,EACR;;;;;;;;;;;;;;;;KAgBD,CAAC,IAAI,EAAE,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,UAAU;QACV,IAAA,gBAAM,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAExC,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAE3C,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB;QAC3E,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;YAEhC,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAE1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;YAE/D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAE5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAE7C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC1D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,8DAA8D;gBAC9D,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,uCAAuC;YACvC,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,IAAA,eAAM,EAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEzC,kBAAkB;YAClB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACpD,IAAA,eAAM,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnC,mEAAmE;YACnE,qDAAqD;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;YACvC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAA,mBAAS,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzC,IAAA,uBAAa,EAAC,IAAA,mBAAO,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC;YAC/D,IAAA,uBAAa,EAAC,IAAA,mBAAO,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAElE,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE3D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAElD,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACnD,IAAA,uBAAa,EAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE/D,wDAAwD;YACxD,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEhC,oEAAoE;YACpE,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAA,WAAE,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAE7D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,2CAA2C;QACtG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,oBAAoB;YACpB,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC;gBACjC,QAAQ;gBACR,UAAU;gBACV,MAAM;gBACN,SAAS;gBACT,GAAG;aACJ,CAAC,CAAC;YACH,IAAA,eAAM,EAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEvC,oBAAoB;YACpB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC;gBAC9B,QAAQ;gBACR,UAAU;gBACV,MAAM;gBACN,SAAS;gBACT,GAAG;aACJ,CAAC,CAAC;YACH,IAAA,eAAM,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEjD,uBAAuB;YACvB,IAAA,eAAM,EAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;gBAC1B,QAAQ;gBACR,UAAU;gBACV,MAAM;gBACN,SAAS;gBACT,UAAU;aACX,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAErE,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;gBAC1B,QAAQ;gBACR,UAAU;gBACV,MAAM;gBACN,cAAc;aACf,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAA,WAAE,EAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAExD,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,mEAAmE;YACnE,mEAAmE;YACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAEtD,uCAAuC;YACvC,IAAA,eAAM,EAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,wCAAwC;YACxC,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAEnD,IAAA,uBAAa,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YAC/C,IAAA,uBAAa,EAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE3D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,qDAAqD;YACrD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5D,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEzC,0CAA0C;YAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAEjD,gCAAgC;YAChC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,0BAA0B;YAC1B,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE7C,IAAA,uBAAa,EACX,MAAM,EACN;;;;;;;OAOD,CACA,CAAC;YAEF,IAAA,uBAAa,EACX,OAAO,EACP;;;;OAID,CACA,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBACxD,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const cli_orchestrator_js_1 = require("./cli-orchestrator.js");
|
|
5
|
+
async function main() {
|
|
6
|
+
const orchestrator = new cli_orchestrator_js_1.CLIOrchestrator();
|
|
7
|
+
await orchestrator.run();
|
|
8
|
+
}
|
|
9
|
+
main().catch((error) => {
|
|
10
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown fatal error';
|
|
11
|
+
console.error('Fatal error:', errorMessage);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,+DAAwD;AAExD,KAAK,UAAU,IAAI;IACjB,MAAM,YAAY,GAAG,IAAI,qCAAe,EAAE,CAAC;IAC3C,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.unit.test.d.ts","sourceRoot":"","sources":["../src/cli.unit.test.ts"],"names":[],"mappings":""}
|