faf-cli 3.0.6 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +275 -25
- package/dist/big-orange/compare.d.ts.map +1 -1
- package/dist/big-orange/compare.js +14 -16
- package/dist/big-orange/compare.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +137 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +69 -12
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/bi-sync.d.ts.map +1 -1
- package/dist/commands/bi-sync.js +10 -3
- package/dist/commands/bi-sync.js.map +1 -1
- package/dist/commands/drift.d.ts +16 -0
- package/dist/commands/drift.d.ts.map +1 -0
- package/dist/commands/drift.js +517 -0
- package/dist/commands/drift.js.map +1 -0
- package/dist/commands/git.d.ts +25 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +355 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +85 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/rename.d.ts +18 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +211 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/taf-init.d.ts +14 -0
- package/dist/commands/taf-init.d.ts.map +1 -0
- package/dist/commands/taf-init.js +138 -0
- package/dist/commands/taf-init.js.map +1 -0
- package/dist/commands/taf-log.d.ts +30 -0
- package/dist/commands/taf-log.d.ts.map +1 -0
- package/dist/commands/taf-log.js +303 -0
- package/dist/commands/taf-log.js.map +1 -0
- package/dist/commands/taf-stats.d.ts +8 -0
- package/dist/commands/taf-stats.d.ts.map +1 -0
- package/dist/commands/taf-stats.js +133 -0
- package/dist/commands/taf-stats.js.map +1 -0
- package/dist/commands/taf-validate.d.ts +8 -0
- package/dist/commands/taf-validate.d.ts.map +1 -0
- package/dist/commands/taf-validate.js +108 -0
- package/dist/commands/taf-validate.js.map +1 -0
- package/dist/commands/taf.d.ts +13 -0
- package/dist/commands/taf.d.ts.map +1 -0
- package/dist/commands/taf.js +97 -0
- package/dist/commands/taf.js.map +1 -0
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +18 -0
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/generators/faf-generator-championship.d.ts.map +1 -1
- package/dist/generators/faf-generator-championship.js +1 -0
- package/dist/generators/faf-generator-championship.js.map +1 -1
- package/dist/github/github-extractor.d.ts +56 -0
- package/dist/github/github-extractor.d.ts.map +1 -0
- package/dist/github/github-extractor.js +328 -0
- package/dist/github/github-extractor.js.map +1 -0
- package/dist/github/popular-repos.d.ts +43 -0
- package/dist/github/popular-repos.d.ts.map +1 -0
- package/dist/github/popular-repos.js +205 -0
- package/dist/github/popular-repos.js.map +1 -0
- package/dist/github/repo-selector.d.ts +48 -0
- package/dist/github/repo-selector.d.ts.map +1 -0
- package/dist/github/repo-selector.js +277 -0
- package/dist/github/repo-selector.js.map +1 -0
- package/dist/taf/index.d.ts +17 -0
- package/dist/taf/index.d.ts.map +1 -0
- package/dist/taf/index.js +57 -0
- package/dist/taf/index.js.map +1 -0
- package/dist/taf/logger.d.ts +88 -0
- package/dist/taf/logger.d.ts.map +1 -0
- package/dist/taf/logger.js +137 -0
- package/dist/taf/logger.js.map +1 -0
- package/dist/taf/parser.d.ts +32 -0
- package/dist/taf/parser.d.ts.map +1 -0
- package/dist/taf/parser.js +161 -0
- package/dist/taf/parser.js.map +1 -0
- package/dist/taf/stats.d.ts +31 -0
- package/dist/taf/stats.d.ts.map +1 -0
- package/dist/taf/stats.js +182 -0
- package/dist/taf/stats.js.map +1 -0
- package/dist/taf/types.d.ts +77 -0
- package/dist/taf/types.d.ts.map +1 -0
- package/dist/taf/types.js +9 -0
- package/dist/taf/types.js.map +1 -0
- package/dist/taf/validator.d.ts +18 -0
- package/dist/taf/validator.d.ts.map +1 -0
- package/dist/taf/validator.js +148 -0
- package/dist/taf/validator.js.map +1 -0
- package/dist/utils/file-utils.d.ts +10 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +196 -33
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/native-file-finder.js +1 -1
- package/dist/utils/native-file-finder.js.map +1 -1
- package/dist/utils/yaml-generator.d.ts +1 -0
- package/dist/utils/yaml-generator.d.ts.map +1 -1
- package/dist/utils/yaml-generator.js +1 -0
- package/dist/utils/yaml-generator.js.map +1 -1
- package/package.json +9 -4
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🔄 faf rename - Bulk Migration Command
|
|
4
|
+
* Find and migrate all .faf files to project.faf (v1.2.0 standard)
|
|
5
|
+
*
|
|
6
|
+
* Use case: "faf rename ~/Projects" migrates entire system in one command
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.renameCommand = renameCommand;
|
|
13
|
+
const colors_1 = require("../fix-once/colors");
|
|
14
|
+
const fs_1 = require("fs");
|
|
15
|
+
const path_1 = __importDefault(require("path"));
|
|
16
|
+
const championship_style_1 = require("../utils/championship-style");
|
|
17
|
+
const file_utils_1 = require("../utils/file-utils");
|
|
18
|
+
/**
|
|
19
|
+
* Recursively find all .faf files
|
|
20
|
+
*/
|
|
21
|
+
async function findAllFafFiles(searchPath, currentDepth = 0, maxDepth = 10) {
|
|
22
|
+
const fafFiles = [];
|
|
23
|
+
if (currentDepth > maxDepth) {
|
|
24
|
+
return fafFiles;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const entries = await fs_1.promises.readdir(searchPath, { withFileTypes: true });
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
const fullPath = path_1.default.join(searchPath, entry.name);
|
|
30
|
+
// Skip node_modules, .git, etc.
|
|
31
|
+
if (entry.isDirectory()) {
|
|
32
|
+
const skipDirs = ['node_modules', '.git', 'dist', 'build', '.next', '.nuxt', '.svelte-kit', 'target', 'venv', '__pycache__'];
|
|
33
|
+
if (skipDirs.includes(entry.name)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// Recurse into subdirectories
|
|
37
|
+
const subFiles = await findAllFafFiles(fullPath, currentDepth + 1, maxDepth);
|
|
38
|
+
fafFiles.push(...subFiles);
|
|
39
|
+
}
|
|
40
|
+
else if (entry.isFile() && entry.name === '.faf') {
|
|
41
|
+
// Found a .faf file!
|
|
42
|
+
fafFiles.push(fullPath);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
// Skip directories we can't read (permission errors, etc.)
|
|
48
|
+
if (error.code !== 'EACCES' && error.code !== 'EPERM') {
|
|
49
|
+
// Log other errors but continue
|
|
50
|
+
console.error(colors_1.chalk.gray(` Warning: Could not read ${searchPath}`));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return fafFiles;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Migrate a single .faf file to project.faf
|
|
57
|
+
*/
|
|
58
|
+
async function migrateSingleFile(fafPath, force) {
|
|
59
|
+
const dir = path_1.default.dirname(fafPath);
|
|
60
|
+
const projectFafPath = path_1.default.join(dir, 'project.faf');
|
|
61
|
+
try {
|
|
62
|
+
// Check if project.faf already exists
|
|
63
|
+
const projectFafExists = await (0, file_utils_1.fileExists)(projectFafPath);
|
|
64
|
+
if (projectFafExists && !force) {
|
|
65
|
+
return {
|
|
66
|
+
path: fafPath,
|
|
67
|
+
success: false,
|
|
68
|
+
reason: 'project.faf already exists'
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Perform the rename
|
|
72
|
+
await fs_1.promises.rename(fafPath, projectFafPath);
|
|
73
|
+
return {
|
|
74
|
+
path: fafPath,
|
|
75
|
+
success: true
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return {
|
|
80
|
+
path: fafPath,
|
|
81
|
+
success: false,
|
|
82
|
+
reason: error.message
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Main rename command
|
|
88
|
+
*/
|
|
89
|
+
async function renameCommand(searchPath, options = {}) {
|
|
90
|
+
const startTime = Date.now();
|
|
91
|
+
const rootPath = searchPath ? path_1.default.resolve(searchPath) : process.cwd();
|
|
92
|
+
console.log();
|
|
93
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Searching for .faf files to migrate...`));
|
|
94
|
+
console.log(colors_1.chalk.gray(` Searching in: ${rootPath}`));
|
|
95
|
+
console.log();
|
|
96
|
+
// Check if search path exists
|
|
97
|
+
try {
|
|
98
|
+
const stats = await fs_1.promises.stat(rootPath);
|
|
99
|
+
if (!stats.isDirectory()) {
|
|
100
|
+
console.log(colors_1.chalk.red('❌ Search path must be a directory'));
|
|
101
|
+
console.log();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.log(colors_1.chalk.red(`❌ Path not found: ${rootPath}`));
|
|
107
|
+
console.log();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Find all .faf files
|
|
111
|
+
const fafFiles = await findAllFafFiles(rootPath, 0, options.maxDepth || 10);
|
|
112
|
+
if (fafFiles.length === 0) {
|
|
113
|
+
console.log(colors_1.chalk.yellow('⚠️ No .faf files found'));
|
|
114
|
+
console.log();
|
|
115
|
+
console.log(colors_1.chalk.cyan('💡 Already using project.faf? Great! Nothing to migrate.'));
|
|
116
|
+
console.log();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
console.log(colors_1.chalk.green(`Found ${fafFiles.length} .faf file${fafFiles.length !== 1 ? 's' : ''}`));
|
|
120
|
+
console.log();
|
|
121
|
+
// Dry run mode
|
|
122
|
+
if (options.dryRun) {
|
|
123
|
+
console.log(colors_1.chalk.gray('🔍 Dry run mode - no files will be changed'));
|
|
124
|
+
console.log();
|
|
125
|
+
console.log(colors_1.chalk.green('Would migrate:'));
|
|
126
|
+
for (const fafPath of fafFiles) {
|
|
127
|
+
const dir = path_1.default.dirname(fafPath);
|
|
128
|
+
const relPath = path_1.default.relative(rootPath, dir);
|
|
129
|
+
console.log(colors_1.chalk.gray(` ${relPath || '.'}/`) + colors_1.chalk.red('.faf') + colors_1.chalk.gray(' → ') + colors_1.chalk.cyan('project.faf'));
|
|
130
|
+
}
|
|
131
|
+
console.log();
|
|
132
|
+
console.log(colors_1.chalk.cyan(`Run without --dry-run to perform migration`));
|
|
133
|
+
console.log();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// Confirmation for large migrations
|
|
137
|
+
if (fafFiles.length > 10 && !options.noConfirm) {
|
|
138
|
+
console.log(colors_1.chalk.yellow(`⚠️ About to migrate ${fafFiles.length} files`));
|
|
139
|
+
console.log();
|
|
140
|
+
console.log(colors_1.chalk.gray('This will rename:'));
|
|
141
|
+
console.log(colors_1.chalk.gray(' .faf → project.faf'));
|
|
142
|
+
console.log();
|
|
143
|
+
console.log(colors_1.chalk.cyan('Continue? (Use --no-confirm to skip this)'));
|
|
144
|
+
console.log(colors_1.chalk.gray('Press Ctrl+C to cancel, or wait 5 seconds to continue...'));
|
|
145
|
+
console.log();
|
|
146
|
+
// Wait 5 seconds
|
|
147
|
+
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
148
|
+
}
|
|
149
|
+
// Perform migrations
|
|
150
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange('🚀 Migrating...'));
|
|
151
|
+
console.log();
|
|
152
|
+
const results = [];
|
|
153
|
+
let successCount = 0;
|
|
154
|
+
let skipCount = 0;
|
|
155
|
+
let errorCount = 0;
|
|
156
|
+
for (const fafPath of fafFiles) {
|
|
157
|
+
const result = await migrateSingleFile(fafPath, options.force || false);
|
|
158
|
+
results.push(result);
|
|
159
|
+
const dir = path_1.default.dirname(fafPath);
|
|
160
|
+
const relPath = path_1.default.relative(rootPath, dir);
|
|
161
|
+
if (result.success) {
|
|
162
|
+
successCount++;
|
|
163
|
+
console.log(colors_1.chalk.green('☑️ ') + colors_1.chalk.gray(`${relPath || '.'}/`) + colors_1.chalk.cyan('project.faf'));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
if (result.reason?.includes('already exists')) {
|
|
167
|
+
skipCount++;
|
|
168
|
+
console.log(colors_1.chalk.gray('⊘ ') + colors_1.chalk.gray(`${relPath || '.'}/ (project.faf exists)`));
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
errorCount++;
|
|
172
|
+
console.log(colors_1.chalk.red('✖ ') + colors_1.chalk.gray(`${relPath || '.'}/ - ${result.reason}`));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const elapsedTime = Date.now() - startTime;
|
|
177
|
+
// Summary
|
|
178
|
+
console.log();
|
|
179
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange('━'.repeat(50)));
|
|
180
|
+
console.log();
|
|
181
|
+
console.log(colors_1.chalk.green.bold(`✅ Migration complete!`));
|
|
182
|
+
console.log();
|
|
183
|
+
console.log(colors_1.chalk.gray('Results:'));
|
|
184
|
+
console.log(colors_1.chalk.green(` ☑️ Migrated: ${successCount}`));
|
|
185
|
+
if (skipCount > 0) {
|
|
186
|
+
console.log(colors_1.chalk.gray(` ⊘ Skipped: ${skipCount} (already using project.faf)`));
|
|
187
|
+
}
|
|
188
|
+
if (errorCount > 0) {
|
|
189
|
+
console.log(colors_1.chalk.red(` ✖ Errors: ${errorCount}`));
|
|
190
|
+
}
|
|
191
|
+
console.log(colors_1.chalk.gray(` ⚡ Time: ${elapsedTime}ms`));
|
|
192
|
+
console.log();
|
|
193
|
+
if (successCount > 0) {
|
|
194
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange('🎉 Your projects are now using the v1.2.0 standard!'));
|
|
195
|
+
console.log();
|
|
196
|
+
console.log(colors_1.chalk.gray('Why project.faf?'));
|
|
197
|
+
console.log(colors_1.chalk.gray(' • Visible in file explorers (not hidden)'));
|
|
198
|
+
console.log(colors_1.chalk.gray(' • Easier to discover and share'));
|
|
199
|
+
console.log(colors_1.chalk.gray(' • Universal like package.json'));
|
|
200
|
+
console.log();
|
|
201
|
+
}
|
|
202
|
+
if (skipCount > 0 && successCount === 0) {
|
|
203
|
+
console.log(colors_1.chalk.cyan('💡 All projects already using project.faf - you\'re all set!'));
|
|
204
|
+
console.log();
|
|
205
|
+
}
|
|
206
|
+
if (errorCount > 0) {
|
|
207
|
+
console.log(colors_1.chalk.yellow('⚠️ Some migrations failed. Run with --force to overwrite existing files.'));
|
|
208
|
+
console.log();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=rename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AA4GH,sCA2IC;AArPD,+CAA2C;AAC3C,2BAAoC;AACpC,gDAAwB;AACxB,oEAAoE;AACpE,oDAAiD;AAejD;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,UAAkB,EAClB,eAAuB,CAAC,EACxB,WAAmB,EAAE;IAErB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnD,gCAAgC;YAChC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;gBAC7H,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,SAAS;gBACX,CAAC;gBAED,8BAA8B;gBAC9B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC7E,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnD,qBAAqB;gBACrB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,2DAA2D;QAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACtD,gCAAgC;YAChC,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,IAAI,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,OAAe,EACf,KAAc;IAEd,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAU,EAAC,cAAc,CAAC,CAAC;QAE1D,IAAI,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,4BAA4B;aACrC,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,aAAE,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAEzC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,UAAmB,EACnB,UAAyB,EAAE;IAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,8BAAS,CAAC,MAAM,yCAAyC,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,sBAAsB;IACtB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAE5E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,aAAa,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,eAAe;IACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,MAAM,OAAO,IAAI,GAAG,GAAG,CAAC,GAAG,cAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,MAAM,CAAC,wBAAwB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,iBAAiB;QACjB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErB,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,GAAG,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC9C,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE3C,UAAU;IACV,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,8BAA8B,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,aAAa,WAAW,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,MAAM,CAAC,2EAA2E,CAAC,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* faf taf init - Initialize .taf file
|
|
3
|
+
*
|
|
4
|
+
* Creates a new .taf (Testing Activity Feed) file in the current directory
|
|
5
|
+
* Detects .faf file for native reference integration
|
|
6
|
+
*/
|
|
7
|
+
interface TAFInitOptions {
|
|
8
|
+
project?: string;
|
|
9
|
+
force?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function tafInit(options?: TAFInitOptions): Promise<void>;
|
|
12
|
+
export declare function runTAFInit(args: string[]): Promise<void>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=taf-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taf-init.d.ts","sourceRoot":"","sources":["../../src/commands/taf-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFzE;AAGD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9D"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* faf taf init - Initialize .taf file
|
|
4
|
+
*
|
|
5
|
+
* Creates a new .taf (Testing Activity Feed) file in the current directory
|
|
6
|
+
* Detects .faf file for native reference integration
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.tafInit = tafInit;
|
|
43
|
+
exports.runTAFInit = runTAFInit;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const taf_1 = require("../taf");
|
|
47
|
+
const yaml = __importStar(require("yaml"));
|
|
48
|
+
async function tafInit(options = {}) {
|
|
49
|
+
const tafPath = path.join(process.cwd(), '.taf');
|
|
50
|
+
// Check if .taf already exists
|
|
51
|
+
if (fs.existsSync(tafPath) && !options.force) {
|
|
52
|
+
console.error('❌ .taf file already exists');
|
|
53
|
+
console.log('\nUse --force to overwrite');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
// Get project name
|
|
57
|
+
let projectName = options.project;
|
|
58
|
+
if (!projectName) {
|
|
59
|
+
// Try to get from package.json
|
|
60
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
61
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
62
|
+
try {
|
|
63
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
64
|
+
projectName = pkg.name;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore errors
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (!projectName) {
|
|
72
|
+
// Use directory name as fallback
|
|
73
|
+
projectName = path.basename(process.cwd());
|
|
74
|
+
}
|
|
75
|
+
// Check for .faf file (Native Reference)
|
|
76
|
+
const fafPath = path.join(process.cwd(), '.faf');
|
|
77
|
+
const hasFAF = fs.existsSync(fafPath);
|
|
78
|
+
let fafScore;
|
|
79
|
+
if (hasFAF) {
|
|
80
|
+
try {
|
|
81
|
+
const fafContent = fs.readFileSync(fafPath, 'utf-8');
|
|
82
|
+
const faf = yaml.parse(fafContent);
|
|
83
|
+
// Try to extract score from various possible fields
|
|
84
|
+
if (faf.ai_score) {
|
|
85
|
+
const scoreStr = String(faf.ai_score).replace('%', '');
|
|
86
|
+
fafScore = parseInt(scoreStr);
|
|
87
|
+
}
|
|
88
|
+
else if (faf.score) {
|
|
89
|
+
fafScore = parseInt(String(faf.score));
|
|
90
|
+
}
|
|
91
|
+
else if (faf.faf_dna?.current_score) {
|
|
92
|
+
fafScore = parseInt(String(faf.faf_dna.current_score));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Ignore parsing errors
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Create .taf file
|
|
100
|
+
const taf = (0, taf_1.createTAF)(projectName, {
|
|
101
|
+
faf_associated: hasFAF,
|
|
102
|
+
faf_location: hasFAF ? '.faf' : undefined,
|
|
103
|
+
faf_score: fafScore,
|
|
104
|
+
});
|
|
105
|
+
// Serialize and format
|
|
106
|
+
const content = (0, taf_1.formatTAF)((0, taf_1.serializeTAF)(taf));
|
|
107
|
+
// Write file
|
|
108
|
+
fs.writeFileSync(tafPath, content, 'utf-8');
|
|
109
|
+
// Success message
|
|
110
|
+
console.log('✅ Created .taf file');
|
|
111
|
+
console.log(`\nProject: ${projectName}`);
|
|
112
|
+
if (hasFAF) {
|
|
113
|
+
console.log('🔗 Native Reference: .faf detected');
|
|
114
|
+
if (fafScore) {
|
|
115
|
+
console.log(` FAF Score: ${fafScore}/100`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log('ℹ️ No .faf file found (optional)');
|
|
120
|
+
}
|
|
121
|
+
console.log('\nNext steps:');
|
|
122
|
+
console.log(' faf taf log # Log a test run');
|
|
123
|
+
console.log(' faf taf stats # View statistics');
|
|
124
|
+
console.log(' faf taf validate # Validate format');
|
|
125
|
+
}
|
|
126
|
+
// CLI wrapper
|
|
127
|
+
async function runTAFInit(args) {
|
|
128
|
+
const options = {
|
|
129
|
+
force: args.includes('--force') || args.includes('-f'),
|
|
130
|
+
};
|
|
131
|
+
// Extract project name if provided
|
|
132
|
+
const projectIndex = args.findIndex(arg => arg === '--project' || arg === '-p');
|
|
133
|
+
if (projectIndex !== -1 && args[projectIndex + 1]) {
|
|
134
|
+
options.project = args[projectIndex + 1];
|
|
135
|
+
}
|
|
136
|
+
await tafInit(options);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=taf-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taf-init.js","sourceRoot":"","sources":["../../src/commands/taf-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* faf taf log - Log a test run
|
|
3
|
+
*
|
|
4
|
+
* Appends a test run entry to .taf file
|
|
5
|
+
* Supports both minimal and detailed modes
|
|
6
|
+
*/
|
|
7
|
+
import { TestResult, EnvironmentInfo, VarianceType } from '../taf';
|
|
8
|
+
interface TAFLogOptions {
|
|
9
|
+
minimal?: boolean;
|
|
10
|
+
result?: TestResult;
|
|
11
|
+
passed?: number;
|
|
12
|
+
failed?: number;
|
|
13
|
+
total?: number;
|
|
14
|
+
skipped?: number;
|
|
15
|
+
command?: string;
|
|
16
|
+
trigger?: string;
|
|
17
|
+
issues?: string[];
|
|
18
|
+
root_cause?: string;
|
|
19
|
+
resolution?: string;
|
|
20
|
+
environment?: EnvironmentInfo;
|
|
21
|
+
env_variance?: VarianceType;
|
|
22
|
+
env_notes?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function tafLog(options?: TAFLogOptions): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* CLI wrapper - parse arguments
|
|
27
|
+
*/
|
|
28
|
+
export declare function runTAFLog(args: string[]): Promise<void>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=taf-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taf-log.d.ts","sourceRoot":"","sources":["../../src/commands/taf-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAQL,UAAU,EACV,eAAe,EACf,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KvE;AAkCD;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF7D"}
|