@mediaproc/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,103 @@
1
+ import chalk from 'chalk';
2
+ import { statSync, existsSync } from 'fs';
3
+ import { resolve, extname, basename } from 'path';
4
+ /**
5
+ * Universal info command - shows basic file information for any media type
6
+ */
7
+ export function infoCommand(program) {
8
+ program
9
+ .command('info <file>')
10
+ .description('Show file information for any media type')
11
+ .option('--json', 'Output as JSON')
12
+ .action((file, options) => {
13
+ if (!existsSync(file)) {
14
+ console.error(chalk.red(`✗ File not found: ${file}`));
15
+ process.exit(1);
16
+ }
17
+ const absolutePath = resolve(file);
18
+ const ext = extname(file).toLowerCase().slice(1);
19
+ const name = basename(file);
20
+ const stats = statSync(file);
21
+ const sizeInBytes = stats.size;
22
+ const sizeInKB = (sizeInBytes / 1024).toFixed(2);
23
+ const sizeInMB = (sizeInBytes / (1024 * 1024)).toFixed(2);
24
+ const modified = stats.mtime.toLocaleString();
25
+ const created = stats.birthtime.toLocaleString();
26
+ // Detect media type
27
+ const imageExts = ['jpg', 'jpeg', 'png', 'webp', 'gif', 'bmp', 'tiff', 'avif', 'heif', 'svg'];
28
+ const videoExts = ['mp4', 'webm', 'mkv', 'avi', 'mov', 'flv', 'wmv', 'm4v', 'mpg', 'mpeg'];
29
+ const audioExts = ['mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'wma', 'opus'];
30
+ const documentExts = ['pdf', 'docx', 'doc', 'pptx', 'ppt', 'xlsx', 'xls', 'epub'];
31
+ const modelExts = ['gltf', 'glb', 'obj', 'fbx', 'usdz'];
32
+ let mediaType = 'Unknown';
33
+ let suggestedPlugin = '';
34
+ let icon = '📄';
35
+ if (imageExts.includes(ext)) {
36
+ mediaType = 'Image';
37
+ suggestedPlugin = 'image';
38
+ icon = '🖼️';
39
+ }
40
+ else if (videoExts.includes(ext)) {
41
+ mediaType = 'Video';
42
+ suggestedPlugin = 'video';
43
+ icon = '🎬';
44
+ }
45
+ else if (audioExts.includes(ext)) {
46
+ mediaType = 'Audio';
47
+ suggestedPlugin = 'audio';
48
+ icon = '🎵';
49
+ }
50
+ else if (documentExts.includes(ext)) {
51
+ mediaType = 'Document';
52
+ suggestedPlugin = 'document';
53
+ icon = '📄';
54
+ }
55
+ else if (modelExts.includes(ext)) {
56
+ mediaType = '3D Model';
57
+ suggestedPlugin = '3d';
58
+ icon = '🎨';
59
+ }
60
+ if (options.json) {
61
+ const info = {
62
+ name,
63
+ path: absolutePath,
64
+ type: mediaType,
65
+ extension: ext,
66
+ size: {
67
+ bytes: sizeInBytes,
68
+ kb: parseFloat(sizeInKB),
69
+ mb: parseFloat(sizeInMB),
70
+ },
71
+ dates: {
72
+ created,
73
+ modified,
74
+ },
75
+ suggestedPlugin,
76
+ };
77
+ console.log(JSON.stringify(info, null, 2));
78
+ }
79
+ else {
80
+ console.log('');
81
+ console.log(chalk.bold(`${icon} File Information`));
82
+ console.log(chalk.dim('─'.repeat(50)));
83
+ console.log(chalk.cyan('Name: ') + name);
84
+ console.log(chalk.cyan('Type: ') + chalk.yellow(mediaType) + chalk.dim(` (.${ext})`));
85
+ console.log(chalk.cyan('Size: ') + `${sizeInMB} MB ${chalk.dim(`(${sizeInKB} KB, ${sizeInBytes} bytes)`)}`);
86
+ console.log(chalk.cyan('Path: ') + chalk.dim(absolutePath));
87
+ console.log(chalk.cyan('Created: ') + created);
88
+ console.log(chalk.cyan('Modified: ') + modified);
89
+ console.log('');
90
+ if (suggestedPlugin) {
91
+ console.log(chalk.yellow('💡 Get detailed info with:'));
92
+ console.log(chalk.cyan(` mediaproc ${suggestedPlugin} info ${file}`));
93
+ console.log('');
94
+ console.log(chalk.dim(` Install plugin: mediaproc add ${suggestedPlugin}`));
95
+ }
96
+ else {
97
+ console.log(chalk.yellow('⚠️ Unknown media type - no plugin available'));
98
+ }
99
+ console.log('');
100
+ }
101
+ });
102
+ }
103
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAkChF"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAkEhF"}
@@ -7,23 +7,49 @@ export function listCommand(program, pluginManager) {
7
7
  .action(() => {
8
8
  const plugins = pluginManager.getLoadedPlugins();
9
9
  if (plugins.length === 0) {
10
- console.log(chalk.yellow('No plugins installed'));
11
- console.log(chalk.dim('\nInstall a plugin with: mediaproc add <plugin-name>'));
12
- console.log(chalk.dim('Available plugins: image, video, audio, document, animation'));
10
+ console.log(chalk.yellow('No plugins installed yet'));
11
+ console.log(chalk.dim('\n💡 Get started by installing a plugin:'));
12
+ console.log(chalk.cyan(' mediaproc add image') + chalk.dim(' # Image processing'));
13
+ console.log(chalk.cyan(' mediaproc add video') + chalk.dim(' # Video processing'));
14
+ console.log(chalk.cyan(' mediaproc add audio') + chalk.dim(' # Audio processing'));
15
+ console.log(chalk.dim('\nView all available plugins: mediaproc plugins'));
13
16
  return;
14
17
  }
15
- console.log(chalk.bold('\nInstalled Plugins:\n'));
16
- plugins.forEach((pluginName, index) => {
17
- const shortName = pluginName.replace('@mediaproc/', '');
18
- const plugin = pluginManager.getPlugin(pluginName);
19
- console.log(`${chalk.green('✓')} ${chalk.cyan(shortName)} ${chalk.dim(`(${pluginName})`)}`);
20
- if (plugin) {
21
- console.log(chalk.dim(` Version: ${plugin.version || 'unknown'}`));
22
- }
23
- if (index < plugins.length - 1) {
24
- console.log('');
25
- }
26
- });
18
+ // Separate official and third-party plugins
19
+ const official = plugins.filter(p => pluginManager.isOfficialPlugin(p));
20
+ const thirdParty = plugins.filter(p => !pluginManager.isOfficialPlugin(p));
21
+ // Show official plugins
22
+ if (official.length > 0) {
23
+ console.log(chalk.bold('\n✨ Official Plugins:\n'));
24
+ official.forEach((pluginName, index) => {
25
+ const shortName = pluginName.replace('@mediaproc/', '');
26
+ const plugin = pluginManager.getPlugin(pluginName);
27
+ console.log(`${chalk.green('')} ${chalk.cyan(shortName)} ${chalk.dim(`(${pluginName})`)} ${chalk.blue('★ OFFICIAL')}`);
28
+ if (plugin) {
29
+ console.log(chalk.dim(` Version: ${plugin.version || 'unknown'}`));
30
+ }
31
+ if (index < official.length - 1) {
32
+ console.log('');
33
+ }
34
+ });
35
+ }
36
+ // Show third-party plugins
37
+ if (thirdParty.length > 0) {
38
+ console.log(chalk.bold('\n🔌 Third-Party Plugins:\n'));
39
+ thirdParty.forEach((pluginName, index) => {
40
+ const shortName = pluginName.replace('@mediaproc/', '');
41
+ const plugin = pluginManager.getPlugin(pluginName);
42
+ console.log(`${chalk.green('✓')} ${chalk.cyan(shortName)} ${chalk.dim(`(${pluginName})`)}`);
43
+ if (plugin) {
44
+ console.log(chalk.dim(` Version: ${plugin.version || 'unknown'}`));
45
+ }
46
+ if (index < thirdParty.length - 1) {
47
+ console.log('');
48
+ }
49
+ });
50
+ }
51
+ console.log(chalk.dim('\n💡 Install more plugins: mediaproc add <plugin-name>'));
52
+ console.log(chalk.dim(' Remove plugins: mediaproc remove <plugin-name>'));
27
53
  console.log('');
28
54
  });
29
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,aAA4B;IACxE,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;QAEjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAElD,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YACpC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;YAE5F,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Universal optimize command - detects file type and suggests optimization strategy
4
+ */
5
+ export declare function optimizeCommand(program: Command): void;
6
+ //# sourceMappingURL=optimize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6KtD"}
@@ -0,0 +1,190 @@
1
+ import chalk from 'chalk';
2
+ import { existsSync } from 'fs';
3
+ import { extname } from 'path';
4
+ /**
5
+ * Universal optimize command - detects file type and suggests optimization strategy
6
+ */
7
+ export function optimizeCommand(program) {
8
+ program
9
+ .command('optimize <file>')
10
+ .description('Auto-optimize any media file')
11
+ .option('-o, --output <path>', 'Output path (default: adds .optimized before extension)')
12
+ .option('--aggressive', 'More aggressive optimization (lower quality, smaller size)')
13
+ .option('--lossless', 'Lossless optimization (best quality, moderate size)')
14
+ .option('-v, --verbose', 'Verbose output')
15
+ .action((file, options) => {
16
+ if (!existsSync(file)) {
17
+ console.error(chalk.red(`✗ File not found: ${file}`));
18
+ process.exit(1);
19
+ }
20
+ const ext = extname(file).toLowerCase().slice(1);
21
+ // Detect media type
22
+ const imageExts = ['jpg', 'jpeg', 'png', 'webp', 'gif', 'bmp', 'tiff', 'avif', 'heif'];
23
+ const videoExts = ['mp4', 'webm', 'mkv', 'avi', 'mov', 'flv', 'wmv', 'm4v'];
24
+ const audioExts = ['mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'wma', 'opus'];
25
+ const documentExts = ['pdf', 'docx', 'pptx'];
26
+ const modelExts = ['gltf', 'glb', 'obj'];
27
+ let pluginName = '';
28
+ let mediaType = '';
29
+ let optimizationStrategy = '';
30
+ let commands = [];
31
+ if (imageExts.includes(ext)) {
32
+ pluginName = 'image';
33
+ mediaType = 'Image';
34
+ if (options.lossless) {
35
+ optimizationStrategy = 'Lossless (PNG/WebP lossless)';
36
+ commands = [
37
+ `mediaproc image compress ${file} ${options.output || file.replace(`.${ext}`, `.optimized.${ext}`)} --lossless`,
38
+ `mediaproc image convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.webp')} --quality 100 --lossless`,
39
+ ];
40
+ }
41
+ else if (options.aggressive) {
42
+ optimizationStrategy = 'Aggressive (WebP Q70, smaller file size)';
43
+ commands = [
44
+ `mediaproc image compress ${file} ${options.output || file.replace(`.${ext}`, `.optimized.${ext}`)} --quality 70`,
45
+ `mediaproc image convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.webp')} --quality 70`,
46
+ ];
47
+ }
48
+ else {
49
+ optimizationStrategy = 'Balanced (WebP Q85, good quality/size ratio)';
50
+ commands = [
51
+ `mediaproc image compress ${file} ${options.output || file.replace(`.${ext}`, `.optimized.${ext}`)} --quality 85`,
52
+ `mediaproc image convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.webp')} --quality 85`,
53
+ ];
54
+ }
55
+ }
56
+ else if (videoExts.includes(ext)) {
57
+ pluginName = 'video';
58
+ mediaType = 'Video';
59
+ if (options.lossless) {
60
+ optimizationStrategy = 'Lossless (H.265 CRF 0)';
61
+ commands = [
62
+ `mediaproc video compress ${file} ${options.output || file.replace(`.${ext}`, '.optimized.mp4')} --codec h265 --crf 0`,
63
+ ];
64
+ }
65
+ else if (options.aggressive) {
66
+ optimizationStrategy = 'Aggressive (H.265 CRF 28)';
67
+ commands = [
68
+ `mediaproc video compress ${file} ${options.output || file.replace(`.${ext}`, '.optimized.mp4')} --codec h265 --crf 28`,
69
+ ];
70
+ }
71
+ else {
72
+ optimizationStrategy = 'Balanced (H.265 CRF 23)';
73
+ commands = [
74
+ `mediaproc video compress ${file} ${options.output || file.replace(`.${ext}`, '.optimized.mp4')} --codec h265 --crf 23`,
75
+ ];
76
+ }
77
+ }
78
+ else if (audioExts.includes(ext)) {
79
+ pluginName = 'audio';
80
+ mediaType = 'Audio';
81
+ if (options.lossless) {
82
+ optimizationStrategy = 'Lossless (FLAC)';
83
+ commands = [
84
+ `mediaproc audio convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.flac')}`,
85
+ ];
86
+ }
87
+ else if (options.aggressive) {
88
+ optimizationStrategy = 'Aggressive (Opus 96k)';
89
+ commands = [
90
+ `mediaproc audio convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.opus')} --bitrate 96k`,
91
+ ];
92
+ }
93
+ else {
94
+ optimizationStrategy = 'Balanced (Opus 128k)';
95
+ commands = [
96
+ `mediaproc audio convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.opus')} --bitrate 128k`,
97
+ ];
98
+ }
99
+ }
100
+ else if (documentExts.includes(ext)) {
101
+ pluginName = 'document';
102
+ mediaType = 'Document';
103
+ optimizationStrategy = 'PDF compression with Ghostscript';
104
+ commands = [
105
+ `mediaproc document compress ${file} ${options.output || file.replace('.pdf', '.optimized.pdf')}`,
106
+ ];
107
+ }
108
+ else if (modelExts.includes(ext)) {
109
+ pluginName = '3d';
110
+ mediaType = '3D Model';
111
+ if (options.lossless) {
112
+ optimizationStrategy = 'Lossless (remove unused data)';
113
+ commands = [
114
+ `mediaproc 3d optimize ${file} ${options.output || file.replace(`.${ext}`, '.optimized.glb')} --lossless`,
115
+ ];
116
+ }
117
+ else if (options.aggressive) {
118
+ optimizationStrategy = 'Aggressive (Draco + texture compression)';
119
+ commands = [
120
+ `mediaproc 3d optimize ${file} ${options.output || file.replace(`.${ext}`, '.optimized.glb')} --aggressive`,
121
+ `mediaproc 3d compress-textures ${file} ${options.output || file.replace(`.${ext}`, '.optimized.glb')} --format ktx2`,
122
+ ];
123
+ }
124
+ else {
125
+ optimizationStrategy = 'Balanced (Draco compression)';
126
+ commands = [
127
+ `mediaproc 3d optimize ${file} ${options.output || file.replace(`.${ext}`, '.optimized.glb')}`,
128
+ ];
129
+ }
130
+ }
131
+ else {
132
+ console.error(chalk.red(`✗ Unsupported file format for optimization: .${ext}`));
133
+ console.log(chalk.yellow('\n💡 Supported formats:'));
134
+ console.log(chalk.dim(' Images: jpg, png, webp, gif, avif, heif'));
135
+ console.log(chalk.dim(' Videos: mp4, webm, mkv, avi, mov'));
136
+ console.log(chalk.dim(' Audio: mp3, wav, ogg, flac, aac'));
137
+ console.log(chalk.dim(' Documents: pdf, docx, pptx'));
138
+ console.log(chalk.dim(' 3D Models: gltf, glb, obj'));
139
+ process.exit(1);
140
+ }
141
+ console.log('');
142
+ console.log(chalk.blue(`🎯 ${mediaType} Optimization Strategy`));
143
+ console.log(chalk.dim('─'.repeat(50)));
144
+ console.log(chalk.cyan('File: ') + file);
145
+ console.log(chalk.cyan('Type: ') + mediaType);
146
+ console.log(chalk.cyan('Strategy: ') + chalk.yellow(optimizationStrategy));
147
+ console.log('');
148
+ console.log(chalk.yellow('⚡ Recommended command' + (commands.length > 1 ? 's' : '') + ':'));
149
+ commands.forEach((cmd, i) => {
150
+ if (commands.length > 1) {
151
+ console.log(chalk.dim(` Option ${i + 1}:`));
152
+ }
153
+ console.log(chalk.cyan(` ${cmd}`));
154
+ if (i < commands.length - 1)
155
+ console.log('');
156
+ });
157
+ console.log('');
158
+ console.log(chalk.dim(`💡 Install plugin: mediaproc add ${pluginName}`));
159
+ console.log(chalk.dim(` Then run one of the commands above`));
160
+ console.log('');
161
+ // Show size estimates
162
+ if (mediaType === 'Image') {
163
+ console.log(chalk.yellow('📊 Expected savings:'));
164
+ if (options.aggressive) {
165
+ console.log(chalk.dim(' • 60-80% size reduction (WebP Q70)'));
166
+ }
167
+ else if (options.lossless) {
168
+ console.log(chalk.dim(' • 10-30% size reduction (lossless)'));
169
+ }
170
+ else {
171
+ console.log(chalk.dim(' • 40-60% size reduction (WebP Q85)'));
172
+ }
173
+ console.log('');
174
+ }
175
+ else if (mediaType === 'Video') {
176
+ console.log(chalk.yellow('📊 Expected savings:'));
177
+ if (options.aggressive) {
178
+ console.log(chalk.dim(' • 50-70% size reduction (H.265 CRF 28)'));
179
+ }
180
+ else if (options.lossless) {
181
+ console.log(chalk.dim(' • Variable (lossless encoding)'));
182
+ }
183
+ else {
184
+ console.log(chalk.dim(' • 30-50% size reduction (H.265 CRF 23)'));
185
+ }
186
+ console.log('');
187
+ }
188
+ });
189
+ }
190
+ //# sourceMappingURL=optimize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.js","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAsClF"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAqDlF"}
@@ -19,10 +19,28 @@ export function removeCommand(program, pluginManager) {
19
19
  if (wasLoaded) {
20
20
  spinner.info(chalk.dim(`Plugin ${pluginName} is currently loaded`));
21
21
  }
22
- // Uninstall using pnpm
23
- const removeCmd = options.global ? 'uninstall' : 'remove';
24
- const globalFlag = options.global ? '-g' : '';
25
- await execa('pnpm', [removeCmd, globalFlag, pluginName].filter(Boolean), {
22
+ // Determine package manager (prefer pnpm, fallback to npm)
23
+ let packageManager = 'pnpm';
24
+ try {
25
+ await execa('pnpm', ['--version'], { stdio: 'pipe' });
26
+ }
27
+ catch {
28
+ packageManager = 'npm';
29
+ }
30
+ // Build uninstall command
31
+ const args = [];
32
+ if (packageManager === 'pnpm') {
33
+ args.push(options.global ? 'uninstall' : 'remove');
34
+ if (options.global)
35
+ args.push('-g');
36
+ }
37
+ else {
38
+ args.push('uninstall');
39
+ if (options.global)
40
+ args.push('-g');
41
+ }
42
+ args.push(pluginName);
43
+ await execa(packageManager, args, {
26
44
  stdio: 'pipe'
27
45
  });
28
46
  spinner.succeed(chalk.green(`✓ Successfully removed ${pluginName}`));
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,aAA4B;IAC1E,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,2BAA2B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA6B,EAAE,EAAE;QAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjE,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;gBACjD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC;YAE3B,sCAAsC;YACtC,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,UAAU,sBAAsB,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,uBAAuB;YACvB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAE9C,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACvE,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC;QAEvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,aAA4B;IAC1E,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,2BAA2B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA6B,EAAE,EAAE;QAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjE,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;gBACjD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC;YAE3B,sCAAsC;YACtC,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,UAAU,sBAAsB,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,2DAA2D;YAC3D,IAAI,cAAc,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;YAED,0BAA0B;YAC1B,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvB,IAAI,OAAO,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEtB,MAAM,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE;gBAChC,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC;QAEvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -3,8 +3,9 @@ import type { MediaProcPlugin } from './types.js';
3
3
  export declare class PluginManager {
4
4
  private plugins;
5
5
  private readonly pluginPrefix;
6
+ private readonly officialPlugins;
6
7
  /**
7
- * Discover and load all installed @mediaproc/* plugins
8
+ * Discover and load all installed plugins dynamically
8
9
  */
9
10
  loadPlugins(program: Command): Promise<void>;
10
11
  /**
@@ -14,11 +15,19 @@ export declare class PluginManager {
14
15
  /**
15
16
  * Load a specific plugin and register its commands
16
17
  */
17
- loadPlugin(pluginName: string, program: Command): Promise<boolean>;
18
+ loadPlugin(pluginName: string, program: Command, isBuiltIn?: boolean): Promise<boolean>;
18
19
  /**
19
20
  * Get list of loaded plugins
20
21
  */
21
22
  getLoadedPlugins(): string[];
23
+ /**
24
+ * Get official plugins list
25
+ */
26
+ getOfficialPlugins(): string[];
27
+ /**
28
+ * Check if a plugin is official
29
+ */
30
+ isOfficialPlugin(pluginName: string): boolean;
22
31
  /**
23
32
  * Check if a plugin is loaded
24
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAalD;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBxE;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;CAG3D"}
1
+ {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAG9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAW9B;IAEF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAclD;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB3F;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;CAG3D"}
@@ -4,14 +4,28 @@ import chalk from 'chalk';
4
4
  export class PluginManager {
5
5
  plugins = new Map();
6
6
  pluginPrefix = '@mediaproc/';
7
+ // Official plugins (recommended, but installed on-demand)
8
+ officialPlugins = [
9
+ '@mediaproc/image',
10
+ '@mediaproc/video',
11
+ '@mediaproc/audio',
12
+ '@mediaproc/document',
13
+ '@mediaproc/animation',
14
+ '@mediaproc/3d',
15
+ '@mediaproc/stream',
16
+ '@mediaproc/ai',
17
+ '@mediaproc/metadata',
18
+ '@mediaproc/pipeline',
19
+ ];
7
20
  /**
8
- * Discover and load all installed @mediaproc/* plugins
21
+ * Discover and load all installed plugins dynamically
9
22
  */
10
23
  async loadPlugins(program) {
11
24
  const installedPlugins = this.discoverPlugins();
12
25
  for (const pluginName of installedPlugins) {
13
26
  try {
14
- await this.loadPlugin(pluginName, program);
27
+ const isOfficial = this.officialPlugins.includes(pluginName);
28
+ await this.loadPlugin(pluginName, program, isOfficial);
15
29
  }
16
30
  catch (error) {
17
31
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -49,7 +63,7 @@ export class PluginManager {
49
63
  /**
50
64
  * Load a specific plugin and register its commands
51
65
  */
52
- async loadPlugin(pluginName, program) {
66
+ async loadPlugin(pluginName, program, isBuiltIn = false) {
53
67
  try {
54
68
  // Dynamic import of the plugin
55
69
  const plugin = await import(pluginName);
@@ -58,7 +72,10 @@ export class PluginManager {
58
72
  }
59
73
  // Register plugin commands with the CLI
60
74
  await plugin.register(program);
61
- this.plugins.set(pluginName, plugin);
75
+ this.plugins.set(pluginName, {
76
+ ...plugin,
77
+ isBuiltIn
78
+ });
62
79
  return true;
63
80
  }
64
81
  catch (error) {
@@ -72,6 +89,18 @@ export class PluginManager {
72
89
  getLoadedPlugins() {
73
90
  return Array.from(this.plugins.keys());
74
91
  }
92
+ /**
93
+ * Get official plugins list
94
+ */
95
+ getOfficialPlugins() {
96
+ return [...this.officialPlugins];
97
+ }
98
+ /**
99
+ * Check if a plugin is official
100
+ */
101
+ isOfficialPlugin(pluginName) {
102
+ return this.officialPlugins.includes(pluginName);
103
+ }
75
104
  /**
76
105
  * Check if a plugin is loaded
77
106
  */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -3,6 +3,7 @@ export interface MediaProcPlugin {
3
3
  name: string;
4
4
  version: string;
5
5
  register: (program: Command) => void | Promise<void>;
6
+ isBuiltIn?: boolean;
6
7
  }
7
8
  export interface PluginMetadata {
8
9
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B"}