configforge 1.0.0-beta.10 → 1.0.0-beta.11

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.
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CLIUtils = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ /**
12
+ * Utility functions for CLI operations
13
+ */
14
+ class CLIUtils {
15
+ /**
16
+ * Create a progress tracker with spinner
17
+ */
18
+ static createProgress(message, total = 0) {
19
+ const spinner = (0, ora_1.default)(message).start();
20
+ return {
21
+ total,
22
+ current: 0,
23
+ message,
24
+ spinner,
25
+ };
26
+ }
27
+ /**
28
+ * Update progress tracker
29
+ */
30
+ static updateProgress(tracker, current, message) {
31
+ tracker.current = current;
32
+ if (message) {
33
+ tracker.message = message;
34
+ }
35
+ if (tracker.spinner) {
36
+ const percentage = tracker.total > 0 ? Math.round((current / tracker.total) * 100) : 0;
37
+ const progressMessage = tracker.total > 0
38
+ ? `${tracker.message} (${current}/${tracker.total} - ${percentage}%)`
39
+ : tracker.message;
40
+ tracker.spinner.text = progressMessage;
41
+ }
42
+ }
43
+ /**
44
+ * Complete progress tracker with success
45
+ */
46
+ static completeProgress(tracker, message) {
47
+ if (tracker.spinner) {
48
+ tracker.spinner.succeed(chalk_1.default.green(message || 'Completed'));
49
+ }
50
+ }
51
+ /**
52
+ * Fail progress tracker with error
53
+ */
54
+ static failProgress(tracker, message) {
55
+ if (tracker.spinner) {
56
+ tracker.spinner.fail(chalk_1.default.red(message || 'Failed'));
57
+ }
58
+ }
59
+ /**
60
+ * Get file information
61
+ */
62
+ static getFileInfo(filePath) {
63
+ const exists = (0, fs_1.existsSync)(filePath);
64
+ let size;
65
+ if (exists) {
66
+ try {
67
+ const stats = (0, fs_1.statSync)(filePath);
68
+ size = stats.size;
69
+ }
70
+ catch {
71
+ // Ignore stat errors
72
+ }
73
+ }
74
+ const fileInfo = {
75
+ path: filePath,
76
+ exists,
77
+ extension: (0, path_1.extname)(filePath).slice(1),
78
+ basename: (0, path_1.basename)(filePath),
79
+ dirname: (0, path_1.dirname)(filePath),
80
+ };
81
+ if (size !== undefined) {
82
+ fileInfo.size = size;
83
+ }
84
+ return fileInfo;
85
+ }
86
+ /**
87
+ * Validate input file
88
+ */
89
+ static validateInputFile(filePath) {
90
+ const fileInfo = this.getFileInfo(filePath);
91
+ if (!fileInfo.exists) {
92
+ throw new Error(`Input file not found: ${filePath}`);
93
+ }
94
+ if (fileInfo.size === 0) {
95
+ throw new Error(`Input file is empty: ${filePath}`);
96
+ }
97
+ return fileInfo;
98
+ }
99
+ /**
100
+ * Generate output file path
101
+ */
102
+ static generateOutputPath(inputPath, outputPath, format, suffix) {
103
+ if (outputPath) {
104
+ return outputPath;
105
+ }
106
+ const inputInfo = this.getFileInfo(inputPath);
107
+ const baseName = (0, path_1.basename)(inputPath, `.${inputInfo.extension}`);
108
+ const outputSuffix = suffix || 'converted';
109
+ const outputFormat = format || 'json';
110
+ return (0, path_1.join)(inputInfo.dirname, `${baseName}.${outputSuffix}.${outputFormat}`);
111
+ }
112
+ /**
113
+ * Format file size for display
114
+ */
115
+ static formatFileSize(bytes) {
116
+ const units = ['B', 'KB', 'MB', 'GB'];
117
+ let size = bytes;
118
+ let unitIndex = 0;
119
+ while (size >= 1024 && unitIndex < units.length - 1) {
120
+ size /= 1024;
121
+ unitIndex++;
122
+ }
123
+ return `${size.toFixed(1)} ${units[unitIndex]}`;
124
+ }
125
+ /**
126
+ * Format duration for display
127
+ */
128
+ static formatDuration(milliseconds) {
129
+ if (milliseconds < 1000) {
130
+ return `${milliseconds}ms`;
131
+ }
132
+ const seconds = milliseconds / 1000;
133
+ if (seconds < 60) {
134
+ return `${seconds.toFixed(1)}s`;
135
+ }
136
+ const minutes = Math.floor(seconds / 60);
137
+ const remainingSeconds = seconds % 60;
138
+ return `${minutes}m ${remainingSeconds.toFixed(1)}s`;
139
+ }
140
+ /**
141
+ * Print formatted table
142
+ */
143
+ static printTable(headers, rows, options = {}) {
144
+ if (options.quiet)
145
+ return;
146
+ const { noColor = false } = options;
147
+ // Calculate column widths
148
+ const widths = headers.map((header, index) => {
149
+ const maxRowWidth = Math.max(...rows.map(row => (row[index] || '').length));
150
+ return Math.max(header.length, maxRowWidth);
151
+ });
152
+ // Print header
153
+ const headerRow = headers
154
+ .map((header, index) => header.padEnd(widths[index] || 0))
155
+ .join(' | ');
156
+ console.log(noColor ? headerRow : chalk_1.default.cyan(headerRow));
157
+ // Print separator
158
+ const separator = widths.map(width => '-'.repeat(width)).join('-+-');
159
+ console.log(noColor ? separator : chalk_1.default.gray(separator));
160
+ // Print rows
161
+ rows.forEach(row => {
162
+ const formattedRow = row
163
+ .map((cell, index) => (cell || '').padEnd(widths[index] || 0))
164
+ .join(' | ');
165
+ console.log(formattedRow);
166
+ });
167
+ }
168
+ /**
169
+ * Print success message
170
+ */
171
+ static printSuccess(message, options = {}) {
172
+ if (options.quiet)
173
+ return;
174
+ console.log(options.noColor ? `✓ ${message}` : chalk_1.default.green(`✅ ${message}`));
175
+ }
176
+ /**
177
+ * Print error message
178
+ */
179
+ static printError(message, options = {}) {
180
+ console.error(options.noColor ? `✗ ${message}` : chalk_1.default.red(`❌ ${message}`));
181
+ }
182
+ /**
183
+ * Print warning message
184
+ */
185
+ static printWarning(message, options = {}) {
186
+ if (options.quiet)
187
+ return;
188
+ console.log(options.noColor ? `! ${message}` : chalk_1.default.yellow(`⚠️ ${message}`));
189
+ }
190
+ /**
191
+ * Print info message
192
+ */
193
+ static printInfo(message, options = {}) {
194
+ if (options.quiet)
195
+ return;
196
+ console.log(options.noColor ? `i ${message}` : chalk_1.default.blue(`ℹ️ ${message}`));
197
+ }
198
+ /**
199
+ * Print verbose message
200
+ */
201
+ static printVerbose(message, options = {}) {
202
+ if (!options.verbose || options.quiet)
203
+ return;
204
+ console.log(options.noColor ? message : chalk_1.default.gray(message));
205
+ }
206
+ /**
207
+ * Print section header
208
+ */
209
+ static printSection(title, options = {}) {
210
+ if (options.quiet)
211
+ return;
212
+ console.log(options.noColor ? `\n${title}:` : chalk_1.default.cyan(`\n📋 ${title}:`));
213
+ }
214
+ /**
215
+ * Print conversion statistics
216
+ */
217
+ static printStats(stats, options = {}) {
218
+ if (options.quiet)
219
+ return;
220
+ this.printSection('Conversion Statistics', options);
221
+ const statsData = [
222
+ ['Fields Processed', stats.fieldsProcessed?.toString() || '0'],
223
+ ['Fields Mapped', stats.fieldsMapped?.toString() || '0'],
224
+ ['Fields Unmapped', stats.fieldsUnmapped?.toString() || '0'],
225
+ ['Transforms Applied', stats.transformsApplied?.toString() || '0'],
226
+ ['Duration', this.formatDuration(stats.duration || 0)],
227
+ ];
228
+ if (stats.memoryUsage) {
229
+ statsData.push(['Memory Used', this.formatFileSize(stats.memoryUsage)]);
230
+ }
231
+ statsData.forEach(([label, value]) => {
232
+ const line = ` ${label}: ${value}`;
233
+ console.log(options.noColor ? line : chalk_1.default.gray(line));
234
+ });
235
+ }
236
+ /**
237
+ * Print errors and warnings
238
+ */
239
+ static printIssues(errors, warnings, options = {}) {
240
+ if (options.quiet && errors.length === 0)
241
+ return;
242
+ if (errors.length > 0) {
243
+ this.printSection(`Errors (${errors.length})`, options);
244
+ errors.forEach((error, index) => {
245
+ const message = ` ${index + 1}. ${error.message}`;
246
+ console.log(options.noColor ? message : chalk_1.default.red(message));
247
+ if (error.path && options.verbose) {
248
+ const pathInfo = ` Path: ${error.path}`;
249
+ console.log(options.noColor ? pathInfo : chalk_1.default.gray(pathInfo));
250
+ }
251
+ });
252
+ }
253
+ if (warnings.length > 0 && !options.quiet) {
254
+ this.printSection(`Warnings (${warnings.length})`, options);
255
+ warnings.forEach((warning, index) => {
256
+ const message = ` ${index + 1}. ${warning.message}`;
257
+ console.log(options.noColor ? message : chalk_1.default.yellow(message));
258
+ if (warning.path && options.verbose) {
259
+ const pathInfo = ` Path: ${warning.path}`;
260
+ console.log(options.noColor ? pathInfo : chalk_1.default.gray(pathInfo));
261
+ }
262
+ });
263
+ }
264
+ }
265
+ /**
266
+ * Confirm action with user
267
+ */
268
+ static async confirm(_message, defaultValue = false) {
269
+ // For now, return default value
270
+ // In a real implementation, this would prompt the user
271
+ return defaultValue;
272
+ }
273
+ /**
274
+ * Read JSON file safely
275
+ */
276
+ static readJsonFile(filePath) {
277
+ try {
278
+ const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
279
+ return JSON.parse(content);
280
+ }
281
+ catch (error) {
282
+ throw new Error(`Failed to read JSON file ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
283
+ }
284
+ }
285
+ /**
286
+ * Write JSON file safely
287
+ */
288
+ static writeJsonFile(filePath, data, pretty = true) {
289
+ try {
290
+ const content = pretty
291
+ ? JSON.stringify(data, null, 2)
292
+ : JSON.stringify(data);
293
+ (0, fs_1.writeFileSync)(filePath, content, 'utf-8');
294
+ }
295
+ catch (error) {
296
+ throw new Error(`Failed to write JSON file ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
297
+ }
298
+ }
299
+ /**
300
+ * Detect file format from extension
301
+ */
302
+ static detectFormat(filePath) {
303
+ const ext = (0, path_1.extname)(filePath).toLowerCase();
304
+ switch (ext) {
305
+ case '.json':
306
+ return 'json';
307
+ case '.yml':
308
+ case '.yaml':
309
+ return 'yaml';
310
+ case '.toml':
311
+ return 'toml';
312
+ case '.xml':
313
+ return 'xml';
314
+ default:
315
+ return 'json'; // Default to JSON
316
+ }
317
+ }
318
+ /**
319
+ * Validate output format
320
+ */
321
+ static validateFormat(format) {
322
+ const validFormats = ['json', 'yaml', 'yml', 'toml', 'xml'];
323
+ return validFormats.includes(format.toLowerCase());
324
+ }
325
+ /**
326
+ * Create backup of file
327
+ */
328
+ static createBackup(filePath) {
329
+ if (!(0, fs_1.existsSync)(filePath)) {
330
+ throw new Error(`Cannot backup non-existent file: ${filePath}`);
331
+ }
332
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
333
+ const backupPath = `${filePath}.backup.${timestamp}`;
334
+ try {
335
+ const content = (0, fs_1.readFileSync)(filePath);
336
+ (0, fs_1.writeFileSync)(backupPath, content);
337
+ return backupPath;
338
+ }
339
+ catch (error) {
340
+ throw new Error(`Failed to create backup: ${error instanceof Error ? error.message : String(error)}`);
341
+ }
342
+ }
343
+ /**
344
+ * Clean up temporary files
345
+ */
346
+ static cleanup(files) {
347
+ files.forEach(file => {
348
+ try {
349
+ if ((0, fs_1.existsSync)(file)) {
350
+ // In a real implementation, would use fs.unlinkSync
351
+ // For now, just log the cleanup
352
+ }
353
+ }
354
+ catch {
355
+ // Ignore cleanup errors
356
+ }
357
+ });
358
+ }
359
+ }
360
+ exports.CLIUtils = CLIUtils;
361
+ //# sourceMappingURL=CLIUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CLIUtils.js","sourceRoot":"","sources":["../../src/scripts/CLIUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { CLICommand, CLIOption } from './CLIGenerator';
2
+ /**
3
+ * Fluent builder for creating CLI commands
4
+ */
5
+ export declare class CommandBuilder {
6
+ private command;
7
+ /**
8
+ * Set command name
9
+ */
10
+ name(name: string): this;
11
+ /**
12
+ * Set command description
13
+ */
14
+ description(description: string): this;
15
+ /**
16
+ * Add an option to the command
17
+ */
18
+ option(flags: string, description: string, defaultValue?: any): this;
19
+ /**
20
+ * Add multiple options at once
21
+ */
22
+ options(options: CLIOption[]): this;
23
+ /**
24
+ * Set command action
25
+ */
26
+ action(action: (args: any, options: any) => Promise<void> | void): this;
27
+ /**
28
+ * Build the command
29
+ */
30
+ build(): CLICommand;
31
+ /**
32
+ * Create a new command builder
33
+ */
34
+ static create(): CommandBuilder;
35
+ /**
36
+ * Create a convert command with common options
37
+ */
38
+ static createConvertCommand(action: (input: string, output?: string, options?: any) => Promise<void>): CLICommand;
39
+ /**
40
+ * Create a validate command with common options
41
+ */
42
+ static createValidateCommand(action: (input: string, options?: any) => Promise<void>): CLICommand;
43
+ /**
44
+ * Create a batch command for processing multiple files
45
+ */
46
+ static createBatchCommand(action: (pattern: string, options?: any) => Promise<void>): CLICommand;
47
+ /**
48
+ * Create a profile command group
49
+ */
50
+ static createProfileCommands(): CLICommand[];
51
+ /**
52
+ * Create common global options
53
+ */
54
+ static getGlobalOptions(): CLIOption[];
55
+ /**
56
+ * Create a help command
57
+ */
58
+ static createHelpCommand(): CLICommand;
59
+ /**
60
+ * Create a version command
61
+ */
62
+ static createVersionCommand(version: string): CLICommand;
63
+ /**
64
+ * Create an init command for setting up new projects
65
+ */
66
+ static createInitCommand(): CLICommand;
67
+ /**
68
+ * Create a config command for managing configuration
69
+ */
70
+ static createConfigCommand(): CLICommand;
71
+ }
72
+ //# sourceMappingURL=CommandBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandBuilder.d.ts","sourceRoot":"","sources":["../../src/scripts/CommandBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA2B;IAE1C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKtC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI;IAcpE;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IASnC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAKvE;;OAEG;IACH,KAAK,IAAI,UAAU;IAgBnB;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,cAAc;IAI/B;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GACvE,UAAU;IAkBb;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GACtD,UAAU;IAab;;OAEG;IACH,MAAM,CAAC,kBAAkB,CACvB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GACxD,UAAU;IAqBb;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,UAAU,EAAE;IAsD5C;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,SAAS,EAAE;IActC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,UAAU;IAetC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAexD;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,UAAU;IAgBtC;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,UAAU;CAmBzC"}