@mediaproc/cli 0.5.2 → 0.7.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.
Files changed (78) hide show
  1. package/README.md +202 -1297
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +21 -12
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/add.d.ts.map +1 -1
  6. package/dist/commands/add.js +1 -0
  7. package/dist/commands/add.js.map +1 -1
  8. package/dist/commands/batch.d.ts +3 -0
  9. package/dist/commands/batch.d.ts.map +1 -0
  10. package/dist/commands/batch.js +269 -0
  11. package/dist/commands/batch.js.map +1 -0
  12. package/dist/commands/benchmark.d.ts +3 -0
  13. package/dist/commands/benchmark.d.ts.map +1 -0
  14. package/dist/commands/benchmark.js +124 -0
  15. package/dist/commands/benchmark.js.map +1 -0
  16. package/dist/commands/compare.d.ts +3 -0
  17. package/dist/commands/compare.d.ts.map +1 -0
  18. package/dist/commands/compare.js +102 -0
  19. package/dist/commands/compare.js.map +1 -0
  20. package/dist/commands/detect.d.ts +6 -0
  21. package/dist/commands/detect.d.ts.map +1 -0
  22. package/dist/commands/detect.js +90 -0
  23. package/dist/commands/detect.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +3 -0
  25. package/dist/commands/doctor.d.ts.map +1 -0
  26. package/dist/commands/doctor.js +222 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/history.d.ts +15 -0
  29. package/dist/commands/history.d.ts.map +1 -0
  30. package/dist/commands/history.js +215 -0
  31. package/dist/commands/history.js.map +1 -0
  32. package/dist/commands/remove.js +1 -1
  33. package/dist/commands/remove.js.map +1 -1
  34. package/dist/commands/search.d.ts +3 -0
  35. package/dist/commands/search.d.ts.map +1 -0
  36. package/dist/commands/search.js +193 -0
  37. package/dist/commands/search.js.map +1 -0
  38. package/dist/commands/stats.d.ts +3 -0
  39. package/dist/commands/stats.d.ts.map +1 -0
  40. package/dist/commands/stats.js +155 -0
  41. package/dist/commands/stats.js.map +1 -0
  42. package/dist/commands/template.d.ts +3 -0
  43. package/dist/commands/template.d.ts.map +1 -0
  44. package/dist/commands/template.js +184 -0
  45. package/dist/commands/template.js.map +1 -0
  46. package/dist/commands/watch.d.ts +3 -0
  47. package/dist/commands/watch.d.ts.map +1 -0
  48. package/dist/commands/watch.js +106 -0
  49. package/dist/commands/watch.js.map +1 -0
  50. package/dist/commands/workspace.d.ts +3 -0
  51. package/dist/commands/workspace.d.ts.map +1 -0
  52. package/dist/commands/workspace.js +201 -0
  53. package/dist/commands/workspace.js.map +1 -0
  54. package/dist/utils/branding.d.ts +11 -0
  55. package/dist/utils/branding.d.ts.map +1 -0
  56. package/dist/utils/branding.js +59 -0
  57. package/dist/utils/branding.js.map +1 -0
  58. package/package.json +2 -2
  59. package/dist/commands/convert.d.ts +0 -7
  60. package/dist/commands/convert.d.ts.map +0 -1
  61. package/dist/commands/convert.js +0 -96
  62. package/dist/commands/convert.js.map +0 -1
  63. package/dist/commands/info.d.ts +0 -7
  64. package/dist/commands/info.d.ts.map +0 -1
  65. package/dist/commands/info.js +0 -117
  66. package/dist/commands/info.js.map +0 -1
  67. package/dist/commands/optimize.d.ts +0 -7
  68. package/dist/commands/optimize.d.ts.map +0 -1
  69. package/dist/commands/optimize.js +0 -196
  70. package/dist/commands/optimize.js.map +0 -1
  71. package/dist/commands/run.d.ts +0 -3
  72. package/dist/commands/run.d.ts.map +0 -1
  73. package/dist/commands/run.js +0 -16
  74. package/dist/commands/run.js.map +0 -1
  75. package/dist/commands/validate.d.ts +0 -3
  76. package/dist/commands/validate.d.ts.map +0 -1
  77. package/dist/commands/validate.js +0 -16
  78. package/dist/commands/validate.js.map +0 -1
@@ -0,0 +1,215 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import { showBranding } from '../utils/branding';
5
+ import * as os from 'os';
6
+ const HISTORY_FILE = path.join(os.homedir(), '.mediaproc', 'history.json');
7
+ const MAX_HISTORY_ENTRIES = 1000;
8
+ export const historyCommand = new Command()
9
+ .name('history')
10
+ .description('Show command history and replay previous commands')
11
+ .option('-n, --limit <number>', 'Number of entries to show', '20')
12
+ .option('--clear', 'Clear history')
13
+ .option('--export <file>', 'Export history as shell script')
14
+ .option('--json', 'Output as JSON')
15
+ .action(async (options) => {
16
+ if (options.clear) {
17
+ clearHistory();
18
+ console.log('āœ“ History cleared');
19
+ showBranding();
20
+ return;
21
+ }
22
+ if (options.export) {
23
+ exportHistory(options.export);
24
+ console.log(`āœ“ History exported to ${options.export}`);
25
+ showBranding();
26
+ return;
27
+ }
28
+ const history = loadHistory();
29
+ const limit = parseInt(options.limit);
30
+ if (history.length === 0) {
31
+ console.log('\nšŸ“ No command history yet');
32
+ showBranding();
33
+ return;
34
+ }
35
+ if (options.json) {
36
+ console.log(JSON.stringify(history.slice(-limit), null, 2));
37
+ return;
38
+ }
39
+ displayHistory(history, limit);
40
+ });
41
+ // Add replay subcommand
42
+ historyCommand
43
+ .command('replay')
44
+ .description('Replay a command from history')
45
+ .argument('<id>', 'History entry ID')
46
+ .action(async (id) => {
47
+ const history = loadHistory();
48
+ const entryId = parseInt(id);
49
+ const entry = history.find(e => e.id === entryId);
50
+ if (!entry) {
51
+ console.log(`\nāŒ No history entry found with ID ${id}\n`);
52
+ return;
53
+ }
54
+ console.log(`\nšŸ”„ Replaying command ${id}:`);
55
+ console.log(` ${entry.command} ${entry.args.join(' ')}\n`);
56
+ // In a real implementation, this would actually execute the command
57
+ console.log('āš ļø Note: Command replay requires full implementation');
58
+ console.log(` Run manually: mediaproc ${entry.command} ${entry.args.join(' ')}`);
59
+ showBranding();
60
+ });
61
+ // Add search subcommand
62
+ historyCommand
63
+ .command('search')
64
+ .description('Search command history')
65
+ .argument('<query>', 'Search query')
66
+ .action(async (query) => {
67
+ const history = loadHistory();
68
+ const queryLower = query.toLowerCase();
69
+ const matches = history.filter(entry => {
70
+ const searchText = `${entry.command} ${entry.args.join(' ')}`.toLowerCase();
71
+ return searchText.includes(queryLower);
72
+ });
73
+ if (matches.length === 0) {
74
+ console.log(`\nāŒ No commands found matching "${query}"\n`);
75
+ return;
76
+ }
77
+ console.log(`\nšŸ” Found ${matches.length} matching commands:\n`);
78
+ displayHistory(matches, matches.length);
79
+ showBranding();
80
+ });
81
+ // Add stats subcommand
82
+ historyCommand
83
+ .command('stats')
84
+ .description('Show history statistics')
85
+ .action(async () => {
86
+ const history = loadHistory();
87
+ if (history.length === 0) {
88
+ console.log('\nšŸ“Š No history data available\n');
89
+ return;
90
+ }
91
+ const commandCounts = {};
92
+ const successCount = history.filter(e => e.success).length;
93
+ const failCount = history.length - successCount;
94
+ history.forEach(entry => {
95
+ commandCounts[entry.command] = (commandCounts[entry.command] || 0) + 1;
96
+ });
97
+ const sortedCommands = Object.entries(commandCounts)
98
+ .sort((a, b) => b[1] - a[1])
99
+ .slice(0, 10);
100
+ console.log('\nšŸ“Š History Statistics\n');
101
+ console.log('━'.repeat(50));
102
+ console.log(`\nTotal commands: ${history.length}`);
103
+ console.log(`Success rate: ${((successCount / history.length) * 100).toFixed(1)}%`);
104
+ console.log(`Successful: ${successCount}`);
105
+ console.log(`Failed: ${failCount}`);
106
+ console.log('\nšŸ“ˆ Most used commands:\n');
107
+ sortedCommands.forEach(([command, count], index) => {
108
+ const bar = 'ā–“'.repeat(Math.ceil((count / sortedCommands[0][1]) * 20));
109
+ console.log(`${index + 1}. ${command.padEnd(15)} ${bar} ${count}`);
110
+ });
111
+ // Calculate average duration if available
112
+ const withDuration = history.filter(e => e.duration !== undefined);
113
+ if (withDuration.length > 0) {
114
+ const avgDuration = withDuration.reduce((sum, e) => sum + (e.duration || 0), 0) / withDuration.length;
115
+ console.log(`\nā±ļø Average duration: ${(avgDuration / 1000).toFixed(2)}s`);
116
+ }
117
+ console.log('\n' + '─'.repeat(50));
118
+ showBranding();
119
+ });
120
+ function loadHistory() {
121
+ try {
122
+ ensureHistoryDirectory();
123
+ if (!fs.existsSync(HISTORY_FILE)) {
124
+ return [];
125
+ }
126
+ const data = fs.readFileSync(HISTORY_FILE, 'utf-8');
127
+ return JSON.parse(data);
128
+ }
129
+ catch (error) {
130
+ console.error('Error loading history:', error);
131
+ return [];
132
+ }
133
+ }
134
+ export function getHistory() {
135
+ return loadHistory();
136
+ }
137
+ export function saveHistoryEntry(entry) {
138
+ try {
139
+ ensureHistoryDirectory();
140
+ const history = loadHistory();
141
+ const newEntry = {
142
+ ...entry,
143
+ id: history.length > 0 ? Math.max(...history.map(e => e.id)) + 1 : 1,
144
+ timestamp: Date.now()
145
+ };
146
+ history.push(newEntry);
147
+ // Keep only last MAX_HISTORY_ENTRIES
148
+ const trimmedHistory = history.slice(-MAX_HISTORY_ENTRIES);
149
+ fs.writeFileSync(HISTORY_FILE, JSON.stringify(trimmedHistory, null, 2));
150
+ }
151
+ catch (error) {
152
+ // Silently fail - history is not critical
153
+ }
154
+ }
155
+ function clearHistory() {
156
+ try {
157
+ if (fs.existsSync(HISTORY_FILE)) {
158
+ fs.unlinkSync(HISTORY_FILE);
159
+ }
160
+ }
161
+ catch (error) {
162
+ console.error('Error clearing history:', error);
163
+ }
164
+ }
165
+ function exportHistory(filename) {
166
+ const history = loadHistory();
167
+ const script = history
168
+ .map(entry => `# ${new Date(entry.timestamp).toLocaleString()}`)
169
+ .map((comment, index) => `${comment}\nmediaproc ${history[index].command} ${history[index].args.join(' ')}`)
170
+ .join('\n\n');
171
+ fs.writeFileSync(filename, `#!/bin/bash\n\n${script}\n`);
172
+ fs.chmodSync(filename, '755');
173
+ }
174
+ function displayHistory(history, limit) {
175
+ console.log('\nšŸ“ Command History\n');
176
+ console.log('━'.repeat(70));
177
+ const entries = history.slice(-limit).reverse();
178
+ entries.forEach(entry => {
179
+ const status = entry.success ? '\x1b[32māœ“\x1b[0m' : '\x1b[31māœ—\x1b[0m';
180
+ const time = formatTimestamp(entry.timestamp);
181
+ const duration = entry.duration ? `(${(entry.duration / 1000).toFixed(2)}s)` : '';
182
+ console.log(`\n${status} \x1b[36m#${entry.id}\x1b[0m ${time} ${duration}`);
183
+ console.log(` mediaproc ${entry.command} ${entry.args.join(' ')}`);
184
+ console.log(` \x1b[90mDirectory: ${entry.cwd}\x1b[0m`);
185
+ });
186
+ console.log('\n' + '━'.repeat(70));
187
+ console.log(`\nShowing last ${Math.min(limit, history.length)} of ${history.length} commands`);
188
+ console.log('\nšŸ’” Commands:');
189
+ console.log(' mediaproc history replay <id> - Replay a command');
190
+ console.log(' mediaproc history search <q> - Search history');
191
+ console.log(' mediaproc history stats - Show statistics');
192
+ console.log(' mediaproc history --export <f> - Export as script\n');
193
+ }
194
+ function formatTimestamp(timestamp) {
195
+ const now = Date.now();
196
+ const diff = now - timestamp;
197
+ const seconds = Math.floor(diff / 1000);
198
+ const minutes = Math.floor(seconds / 60);
199
+ const hours = Math.floor(minutes / 60);
200
+ const days = Math.floor(hours / 24);
201
+ if (days > 0)
202
+ return `${days}d ago`;
203
+ if (hours > 0)
204
+ return `${hours}h ago`;
205
+ if (minutes > 0)
206
+ return `${minutes}m ago`;
207
+ return `${seconds}s ago`;
208
+ }
209
+ function ensureHistoryDirectory() {
210
+ const dir = path.dirname(HISTORY_FILE);
211
+ if (!fs.existsSync(dir)) {
212
+ fs.mkdirSync(dir, { recursive: true });
213
+ }
214
+ }
215
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ async function isPluginGlobal(pluginName) {
28
28
  export function removeCommand(program, pluginManager) {
29
29
  program
30
30
  .command('remove <plugin>')
31
- .alias('rm')
31
+ .aliases(['uninstall', 'rm'])
32
32
  .description('Uninstall a mediaproc plugin')
33
33
  .option('-g, --global', 'Force global uninstall')
34
34
  .option('-l, --local', 'Force local uninstall')
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const searchCommand: Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,aAAa,SA8DtB,CAAC"}
@@ -0,0 +1,193 @@
1
+ import { Command } from 'commander';
2
+ import { showBranding } from '../utils/branding';
3
+ export const searchCommand = new Command()
4
+ .name('search')
5
+ .description('Search for commands across all installed plugins')
6
+ .argument('<query>', 'Search query')
7
+ .option('-p, --plugin <name>', 'Search in specific plugin only')
8
+ .option('-l, --limit <number>', 'Limit number of results', '10')
9
+ .option('--json', 'Output results as JSON')
10
+ .action(async (query, options) => {
11
+ try {
12
+ const results = await searchCommands(query, options.plugin);
13
+ const limit = parseInt(options.limit);
14
+ if (results.length === 0) {
15
+ console.log(`\nāŒ No commands found matching "${query}"\n`);
16
+ console.log('šŸ’” Tips:');
17
+ console.log(' • Try different keywords (e.g., "resize", "convert", "compress")');
18
+ console.log(' • Check installed plugins: \x1b[36mmediaproc list\x1b[0m');
19
+ console.log(' • Install more plugins: \x1b[36mmediaproc add <plugin>\x1b[0m');
20
+ console.log(' • View all available commands: \x1b[36mmediaproc <plugin> --help\x1b[0m');
21
+ showBranding();
22
+ return;
23
+ }
24
+ if (options.json) {
25
+ console.log(JSON.stringify(results.slice(0, limit), null, 2));
26
+ return;
27
+ }
28
+ // Display results in a nice table format
29
+ console.log(`\nšŸ” Found ${results.length} command${results.length > 1 ? 's' : ''} matching "${query}"\n`);
30
+ console.log('ā”Œ' + '─'.repeat(78) + '┐');
31
+ results.slice(0, limit).forEach((result, index) => {
32
+ const number = `${index + 1}.`.padEnd(3);
33
+ const pluginCmd = `${result.plugin} ${result.command}`;
34
+ const category = result.category ? ` [${result.category}]` : '';
35
+ console.log(`│ ${number} \x1b[1m\x1b[36m${pluginCmd}\x1b[0m${category}`);
36
+ console.log(`│ ${result.description}`);
37
+ console.log(`│ \x1b[90mUsage: mediaproc ${result.plugin} ${result.command} [options]\x1b[0m`);
38
+ if (index < Math.min(limit, results.length) - 1) {
39
+ console.log('│' + ' '.repeat(78) + '│');
40
+ }
41
+ });
42
+ console.log('ā””' + '─'.repeat(78) + 'ā”˜');
43
+ if (results.length > limit) {
44
+ console.log(`\nšŸ“Š Showing top ${limit} results (${results.length} total)`);
45
+ console.log(` Use \x1b[36m--limit ${results.length}\x1b[0m to see all results`);
46
+ }
47
+ console.log(`\nšŸ’” Get detailed help: \x1b[36mmediaproc <plugin> <command> --help\x1b[0m`);
48
+ showBranding();
49
+ }
50
+ catch (error) {
51
+ console.error(`\nāŒ Search failed: ${error instanceof Error ? error.message : 'Unknown error'}\n`);
52
+ showBranding();
53
+ process.exit(1);
54
+ }
55
+ });
56
+ async function searchCommands(query, specificPlugin) {
57
+ const results = [];
58
+ const queryLower = query.toLowerCase();
59
+ const queryWords = queryLower.split(/\s+/).filter(w => w.length > 0);
60
+ // Get command database (static for now, will be dynamic with real plugins later)
61
+ const commandDatabase = getCommandDatabase();
62
+ // Search through all plugins and commands
63
+ for (const [plugin, commands] of Object.entries(commandDatabase)) {
64
+ if (specificPlugin && plugin !== specificPlugin) {
65
+ continue;
66
+ }
67
+ for (const [command, info] of Object.entries(commands)) {
68
+ const score = calculateRelevanceScore(queryLower, queryWords, plugin, command, info.description, info.category);
69
+ if (score > 0) {
70
+ results.push({
71
+ plugin,
72
+ command,
73
+ description: info.description,
74
+ category: info.category,
75
+ score
76
+ });
77
+ }
78
+ }
79
+ }
80
+ // Sort by relevance score (highest first)
81
+ results.sort((a, b) => b.score - a.score);
82
+ return results;
83
+ }
84
+ function calculateRelevanceScore(query, queryWords, plugin, command, description, category) {
85
+ let score = 0;
86
+ const searchText = `${plugin} ${command} ${description} ${category || ''}`.toLowerCase();
87
+ const commandLower = command.toLowerCase();
88
+ const descriptionLower = description.toLowerCase();
89
+ // Exact match in command name (highest priority)
90
+ if (commandLower === query) {
91
+ score += 100;
92
+ }
93
+ // Command starts with query
94
+ if (commandLower.startsWith(query)) {
95
+ score += 50;
96
+ }
97
+ // Command contains query
98
+ if (commandLower.includes(query)) {
99
+ score += 30;
100
+ }
101
+ // Description contains exact query
102
+ if (descriptionLower.includes(query)) {
103
+ score += 25;
104
+ }
105
+ // All query words present in searchable text
106
+ if (queryWords.every(word => searchText.includes(word))) {
107
+ score += 20;
108
+ }
109
+ // Individual word matches (with decreasing importance)
110
+ queryWords.forEach((word, index) => {
111
+ const wordWeight = 10 / (index + 1); // First word more important
112
+ if (commandLower.includes(word)) {
113
+ score += wordWeight * 2;
114
+ }
115
+ if (descriptionLower.includes(word)) {
116
+ score += wordWeight;
117
+ }
118
+ if (plugin.toLowerCase().includes(word)) {
119
+ score += wordWeight * 1.5;
120
+ }
121
+ });
122
+ return score;
123
+ }
124
+ function getCommandDatabase() {
125
+ // This is a comprehensive static database. In production, this should be loaded from installed plugins
126
+ return {
127
+ image: {
128
+ // Transform Commands
129
+ resize: { description: 'Resize images to specified dimensions', category: 'Transform' },
130
+ crop: { description: 'Crop images to specified area', category: 'Transform' },
131
+ rotate: { description: 'Rotate images by degrees', category: 'Transform' },
132
+ flip: { description: 'Flip images horizontally or vertically', category: 'Transform' },
133
+ trim: { description: 'Trim edges of images automatically', category: 'Transform' },
134
+ extend: { description: 'Extend image canvas with background', category: 'Transform' },
135
+ extract: { description: 'Extract region from images', category: 'Transform' },
136
+ // Format Commands
137
+ convert: { description: 'Convert images between formats (JPG, PNG, WebP, AVIF)', category: 'Format' },
138
+ compress: { description: 'Compress images with quality control', category: 'Format' },
139
+ optimize: { description: 'Optimize images for web delivery', category: 'Format' },
140
+ // Effect Commands
141
+ blur: { description: 'Apply gaussian blur effect to images', category: 'Effects' },
142
+ sharpen: { description: 'Sharpen images for clarity', category: 'Effects' },
143
+ grayscale: { description: 'Convert images to grayscale/black and white', category: 'Effects' },
144
+ tint: { description: 'Apply color tint overlay to images', category: 'Effects' },
145
+ negate: { description: 'Invert/negate image colors', category: 'Effects' },
146
+ normalize: { description: 'Normalize image levels and contrast', category: 'Effects' },
147
+ median: { description: 'Apply median filter for noise reduction', category: 'Effects' },
148
+ // Adjustment Commands
149
+ brightness: { description: 'Adjust image brightness levels', category: 'Adjustments' },
150
+ contrast: { description: 'Adjust image contrast', category: 'Adjustments' },
151
+ saturation: { description: 'Adjust color saturation intensity', category: 'Adjustments' },
152
+ hue: { description: 'Adjust color hue/tone', category: 'Adjustments' },
153
+ gamma: { description: 'Apply gamma correction to images', category: 'Adjustments' },
154
+ modulate: { description: 'Modulate brightness, saturation, and hue together', category: 'Adjustments' },
155
+ // Composition Commands
156
+ watermark: { description: 'Add text or image watermarks', category: 'Composition' },
157
+ thumbnail: { description: 'Generate thumbnails with smart cropping', category: 'Composition' },
158
+ border: { description: 'Add decorative borders to images', category: 'Composition' },
159
+ composite: { description: 'Composite/layer multiple images together', category: 'Composition' },
160
+ overlay: { description: 'Overlay images on top of each other with blending', category: 'Composition' },
161
+ mask: { description: 'Apply alpha mask to images', category: 'Composition' },
162
+ flatten: { description: 'Flatten transparent image layers', category: 'Composition' },
163
+ // Advanced Commands
164
+ convolve: { description: 'Apply custom convolution kernel filter', category: 'Advanced' },
165
+ recomb: { description: 'Recombine and remix color channels', category: 'Advanced' },
166
+ metadata: { description: 'View or edit image EXIF metadata', category: 'Advanced' },
167
+ histogram: { description: 'Generate image histogram data', category: 'Advanced' },
168
+ stats: { description: 'Get detailed image statistics', category: 'Advanced' },
169
+ },
170
+ video: {
171
+ compress: { description: 'Compress video files with quality presets', category: 'Processing' },
172
+ transcode: { description: 'Convert video to different codec/format (H.264, H.265, VP9)', category: 'Processing' },
173
+ trim: { description: 'Trim/cut video by time range or duration', category: 'Editing' },
174
+ resize: { description: 'Resize video dimensions and resolution', category: 'Transform' },
175
+ merge: { description: 'Merge/concatenate multiple video files', category: 'Editing' },
176
+ extract: { description: 'Extract audio track or video frames', category: 'Extraction' },
177
+ subtitle: { description: 'Add or extract video subtitles', category: 'Editing' },
178
+ thumbnail: { description: 'Generate video thumbnail at timestamp', category: 'Extraction' },
179
+ metadata: { description: 'View or edit video metadata', category: 'Info' },
180
+ },
181
+ audio: {
182
+ convert: { description: 'Convert audio between formats (MP3, AAC, WAV, FLAC)', category: 'Processing' },
183
+ normalize: { description: 'Normalize audio volume levels', category: 'Processing' },
184
+ trim: { description: 'Trim audio by time range', category: 'Editing' },
185
+ merge: { description: 'Merge multiple audio files into one', category: 'Editing' },
186
+ extract: { description: 'Extract audio from video files', category: 'Extraction' },
187
+ fade: { description: 'Apply fade in/out effects', category: 'Effects' },
188
+ volume: { description: 'Adjust audio volume levels', category: 'Adjustments' },
189
+ metadata: { description: 'View or edit audio metadata/tags', category: 'Info' },
190
+ }
191
+ };
192
+ }
193
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;KACvC,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;KAC/D,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAO,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,mCAAmC,KAAK,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;YAE1F,YAAY,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,KAAK,KAAK,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAExC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAEhE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,mBAAmB,SAAS,UAAU,QAAQ,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;YAElG,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAExC,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,aAAa,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,MAAM,4BAA4B,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAE1F,YAAY,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;QAClG,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,cAAuB;IAClE,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErE,iFAAiF;IACjF,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,0CAA0C;IAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACjE,IAAI,cAAc,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,uBAAuB,CACnC,UAAU,EACV,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,CACd,CAAC;YAEF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM;oBACN,OAAO;oBACP,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAa,EACb,UAAoB,EACpB,MAAc,EACd,OAAe,EACf,WAAmB,EACnB,QAAiB;IAEjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACzF,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEnD,iDAAiD;IACjD,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QAC3B,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,yBAAyB;IACzB,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACxD,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,uDAAuD;IACvD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAEjE,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,IAAI,UAAU,CAAC;QACtB,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB;IACzB,uGAAuG;IACvG,OAAO;QACL,KAAK,EAAE;YACL,qBAAqB;YACrB,MAAM,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACvF,IAAI,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC7E,MAAM,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC1E,IAAI,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACtF,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,WAAW,EAAE;YAClF,MAAM,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACrF,OAAO,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,WAAW,EAAE;YAE7E,kBAAkB;YAClB,OAAO,EAAE,EAAE,WAAW,EAAE,uDAAuD,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACrG,QAAQ,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACrF,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAEjF,kBAAkB;YAClB,IAAI,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAClF,OAAO,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC3E,SAAS,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9F,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChF,MAAM,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC1E,SAAS,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,SAAS,EAAE;YACtF,MAAM,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAEvF,sBAAsB;YACtB,UAAU,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACtF,QAAQ,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC3E,UAAU,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACzF,GAAG,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE;YACtE,KAAK,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACnF,QAAQ,EAAE,EAAE,WAAW,EAAE,mDAAmD,EAAE,QAAQ,EAAE,aAAa,EAAE;YAEvG,uBAAuB;YACvB,SAAS,EAAE,EAAE,WAAW,EAAE,8BAA8B,EAAE,QAAQ,EAAE,aAAa,EAAE;YACnF,SAAS,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC9F,MAAM,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpF,SAAS,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC/F,OAAO,EAAE,EAAE,WAAW,EAAE,mDAAmD,EAAE,QAAQ,EAAE,aAAa,EAAE;YACtG,IAAI,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC5E,OAAO,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,aAAa,EAAE;YAErF,oBAAoB;YACpB,QAAQ,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,UAAU,EAAE;YACzF,MAAM,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,UAAU,EAAE;YACnF,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,UAAU,EAAE;YACnF,SAAS,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;YACjF,KAAK,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;SAC9E;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,EAAE,WAAW,EAAE,2CAA2C,EAAE,QAAQ,EAAE,YAAY,EAAE;YAC9F,SAAS,EAAE,EAAE,WAAW,EAAE,6DAA6D,EAAE,QAAQ,EAAE,YAAY,EAAE;YACjH,IAAI,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,SAAS,EAAE;YACtF,MAAM,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACxF,KAAK,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,SAAS,EAAE;YACrF,OAAO,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,YAAY,EAAE;YACvF,QAAQ,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChF,SAAS,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,YAAY,EAAE;YAC3F,QAAQ,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC3E;QACD,KAAK,EAAE;YACL,OAAO,EAAE,EAAE,WAAW,EAAE,qDAAqD,EAAE,QAAQ,EAAE,YAAY,EAAE;YACvG,SAAS,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,YAAY,EAAE;YACnF,IAAI,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,SAAS,EAAE;YACtE,KAAK,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAClF,OAAO,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,YAAY,EAAE;YAClF,IAAI,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAS,EAAE;YACvE,MAAM,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC9E,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;SAChF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const statsCommand: Command;
3
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,YAAY,SA0BrB,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import { getHistory } from './history.js';
6
+ const STATS_FILE = path.join(os.homedir(), '.mediaproc', 'stats.json');
7
+ export const statsCommand = new Command()
8
+ .name('stats')
9
+ .description('Show MediaProc usage statistics')
10
+ .option('-p, --plugin <name>', 'Show stats for specific plugin')
11
+ .option('--period <days>', 'Time period in days', '30')
12
+ .option('--reset', 'Reset all statistics')
13
+ .option('--json', 'Output as JSON')
14
+ .action(async (options) => {
15
+ if (options.reset) {
16
+ resetStats();
17
+ console.log('\nāœ“ Statistics reset\n');
18
+ return;
19
+ }
20
+ const stats = calculateStats(parseInt(options.period));
21
+ if (options.json) {
22
+ console.log(JSON.stringify(stats, null, 2));
23
+ return;
24
+ }
25
+ if (options.plugin) {
26
+ displayPluginStats(options.plugin, stats);
27
+ }
28
+ else {
29
+ displayOverallStats(stats, parseInt(options.period));
30
+ }
31
+ });
32
+ function calculateStats(days) {
33
+ const history = getHistory();
34
+ const cutoff = Date.now() - (days * 24 * 60 * 60 * 1000);
35
+ const recentHistory = history.filter(entry => entry.timestamp >= cutoff);
36
+ const pluginUsage = {};
37
+ const commandUsage = {};
38
+ let totalTime = 0;
39
+ let successCount = 0;
40
+ recentHistory.forEach(entry => {
41
+ const plugin = entry.command.split(' ')[0];
42
+ pluginUsage[plugin] = (pluginUsage[plugin] || 0) + 1;
43
+ commandUsage[entry.command] = (commandUsage[entry.command] || 0) + 1;
44
+ if (entry.duration) {
45
+ totalTime += entry.duration;
46
+ }
47
+ if (entry.success) {
48
+ successCount++;
49
+ }
50
+ });
51
+ return {
52
+ totalFiles: recentHistory.length,
53
+ totalTime,
54
+ storageSaved: 0, // Would need to track this separately
55
+ pluginUsage,
56
+ commandUsage,
57
+ successRate: recentHistory.length > 0 ? (successCount / recentHistory.length) * 100 : 0,
58
+ lastUpdated: Date.now()
59
+ };
60
+ }
61
+ function displayOverallStats(stats, days) {
62
+ console.log('\nšŸ“Š MediaProc Statistics\n');
63
+ console.log('━'.repeat(60));
64
+ console.log(`\nPeriod: Last ${days} days\n`);
65
+ console.log('šŸ“ˆ Overview:');
66
+ console.log(` Total files processed: ${stats.totalFiles.toLocaleString()}`);
67
+ console.log(` Success rate: ${stats.successRate.toFixed(1)}%`);
68
+ console.log(` Total processing time: ${formatDuration(stats.totalTime)}`);
69
+ if (stats.totalFiles > 0) {
70
+ console.log(` Average per file: ${formatDuration(stats.totalTime / stats.totalFiles)}`);
71
+ }
72
+ if (stats.storageSaved > 0) {
73
+ console.log(` Storage saved: ${formatBytes(stats.storageSaved)}`);
74
+ }
75
+ // Plugin usage
76
+ const topPlugins = Object.entries(stats.pluginUsage)
77
+ .sort((a, b) => b[1] - a[1])
78
+ .slice(0, 5);
79
+ if (topPlugins.length > 0) {
80
+ console.log('\nšŸ”Œ Most Used Plugins:\n');
81
+ topPlugins.forEach(([plugin, count], index) => {
82
+ const percentage = (count / stats.totalFiles) * 100;
83
+ const bar = 'ā–“'.repeat(Math.ceil(percentage / 5));
84
+ console.log(`${index + 1}. ${plugin.padEnd(15)} ${bar} ${count} (${percentage.toFixed(1)}%)`);
85
+ });
86
+ }
87
+ // Command usage
88
+ const topCommands = Object.entries(stats.commandUsage)
89
+ .sort((a, b) => b[1] - a[1])
90
+ .slice(0, 5);
91
+ if (topCommands.length > 0) {
92
+ console.log('\n⚔ Most Used Commands:\n');
93
+ topCommands.forEach(([command, count], index) => {
94
+ console.log(`${index + 1}. ${command.padEnd(25)} ${count} uses`);
95
+ });
96
+ }
97
+ console.log('\n' + '━'.repeat(60));
98
+ console.log('\nšŸ’” Commands:');
99
+ console.log(' mediaproc stats --plugin <name> - Plugin-specific stats');
100
+ console.log(' mediaproc stats --period <days> - Change time period');
101
+ console.log(' mediaproc stats --reset - Reset statistics\n');
102
+ }
103
+ function displayPluginStats(plugin, stats) {
104
+ const pluginCount = stats.pluginUsage[plugin] || 0;
105
+ if (pluginCount === 0) {
106
+ console.log(`\nāŒ No usage data for plugin "${plugin}"\n`);
107
+ return;
108
+ }
109
+ console.log(`\nšŸ“Š ${plugin.charAt(0).toUpperCase() + plugin.slice(1)} Plugin Statistics\n`);
110
+ console.log('━'.repeat(60));
111
+ console.log(`\nTotal uses: ${pluginCount}`);
112
+ console.log(`Percentage of total: ${((pluginCount / stats.totalFiles) * 100).toFixed(1)}%`);
113
+ // Commands for this plugin
114
+ const pluginCommands = Object.entries(stats.commandUsage)
115
+ .filter(([cmd]) => cmd.startsWith(plugin))
116
+ .sort((a, b) => b[1] - a[1]);
117
+ if (pluginCommands.length > 0) {
118
+ console.log('\n⚔ Command Usage:\n');
119
+ pluginCommands.forEach(([command, count], index) => {
120
+ const commandName = command.replace(`${plugin} `, '');
121
+ const percentage = (count / pluginCount) * 100;
122
+ console.log(`${index + 1}. ${commandName.padEnd(20)} ${count} (${percentage.toFixed(1)}%)`);
123
+ });
124
+ }
125
+ console.log('\n' + '━'.repeat(60) + '\n');
126
+ }
127
+ function resetStats() {
128
+ try {
129
+ if (fs.existsSync(STATS_FILE)) {
130
+ fs.unlinkSync(STATS_FILE);
131
+ }
132
+ }
133
+ catch (error) {
134
+ console.error('Error resetting stats:', error);
135
+ }
136
+ }
137
+ function formatDuration(ms) {
138
+ if (ms < 1000)
139
+ return `${ms}ms`;
140
+ if (ms < 60000)
141
+ return `${(ms / 1000).toFixed(1)}s`;
142
+ if (ms < 3600000)
143
+ return `${(ms / 60000).toFixed(1)}m`;
144
+ return `${(ms / 3600000).toFixed(1)}h`;
145
+ }
146
+ function formatBytes(bytes) {
147
+ if (bytes < 1024)
148
+ return `${bytes}B`;
149
+ if (bytes < 1024 * 1024)
150
+ return `${(bytes / 1024).toFixed(1)}KB`;
151
+ if (bytes < 1024 * 1024 * 1024)
152
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
153
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)}GB`;
154
+ }
155
+ //# sourceMappingURL=stats.js.map