@mediaproc/cli 0.1.0 → 0.3.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 (52) hide show
  1. package/README.md +381 -54
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +24 -9
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/add.d.ts.map +1 -1
  6. package/dist/commands/add.js +108 -39
  7. package/dist/commands/add.js.map +1 -1
  8. package/dist/commands/config.d.ts.map +1 -1
  9. package/dist/commands/config.js +86 -27
  10. package/dist/commands/config.js.map +1 -1
  11. package/dist/commands/convert.d.ts +7 -0
  12. package/dist/commands/convert.d.ts.map +1 -0
  13. package/dist/commands/convert.js +96 -0
  14. package/dist/commands/convert.js.map +1 -0
  15. package/dist/commands/help.js +2 -2
  16. package/dist/commands/help.js.map +1 -1
  17. package/dist/commands/info.d.ts +7 -0
  18. package/dist/commands/info.d.ts.map +1 -0
  19. package/dist/commands/info.js +117 -0
  20. package/dist/commands/info.js.map +1 -0
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +25 -47
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/list.d.ts.map +1 -1
  25. package/dist/commands/list.js +90 -17
  26. package/dist/commands/list.js.map +1 -1
  27. package/dist/commands/optimize.d.ts +7 -0
  28. package/dist/commands/optimize.d.ts.map +1 -0
  29. package/dist/commands/optimize.js +196 -0
  30. package/dist/commands/optimize.js.map +1 -0
  31. package/dist/commands/plugins.d.ts +4 -0
  32. package/dist/commands/plugins.d.ts.map +1 -0
  33. package/dist/commands/plugins.js +79 -0
  34. package/dist/commands/plugins.js.map +1 -0
  35. package/dist/commands/remove.d.ts.map +1 -1
  36. package/dist/commands/remove.js +92 -11
  37. package/dist/commands/remove.js.map +1 -1
  38. package/dist/config-manager.d.ts +110 -0
  39. package/dist/config-manager.d.ts.map +1 -0
  40. package/dist/config-manager.js +201 -0
  41. package/dist/config-manager.js.map +1 -0
  42. package/dist/plugin-manager.d.ts +31 -7
  43. package/dist/plugin-manager.d.ts.map +1 -1
  44. package/dist/plugin-manager.js +75 -44
  45. package/dist/plugin-manager.js.map +1 -1
  46. package/dist/plugin-registry.d.ts +9 -0
  47. package/dist/plugin-registry.d.ts.map +1 -1
  48. package/dist/plugin-registry.js +41 -6
  49. package/dist/plugin-registry.js.map +1 -1
  50. package/dist/types.d.ts +1 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/package.json +6 -6
@@ -0,0 +1,117 @@
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 and suggests plugin for detailed info
6
+ */
7
+ export function infoCommand(program, pluginManager) {
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
+ // Check plugin status
95
+ const pluginPackage = `@mediaproc/${suggestedPlugin}`;
96
+ const isLoaded = pluginManager?.isPluginLoaded(pluginPackage);
97
+ const isInstalled = pluginManager?.isPluginInstalled(pluginPackage);
98
+ if (isLoaded) {
99
+ console.log(chalk.green(` āœ“ ${suggestedPlugin} plugin is loaded - command is ready`));
100
+ }
101
+ else if (isInstalled) {
102
+ console.log(chalk.yellow(` āš ļø ${suggestedPlugin} plugin is installed but not loaded`));
103
+ console.log(chalk.dim(` Load it: ${chalk.cyan(`mediaproc add ${suggestedPlugin}`)}`));
104
+ }
105
+ else {
106
+ console.log(chalk.red(` āœ— ${suggestedPlugin} plugin not installed`));
107
+ console.log(chalk.dim(` Install: ${chalk.cyan(`mediaproc add ${suggestedPlugin}`)}`));
108
+ }
109
+ }
110
+ else {
111
+ console.log(chalk.yellow('āš ļø Unknown media type - no plugin available'));
112
+ }
113
+ console.log('');
114
+ }
115
+ });
116
+ }
117
+ //# 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":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwDlD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiClD"}
@@ -1,57 +1,35 @@
1
1
  import chalk from 'chalk';
2
- import { writeFileSync, existsSync } from 'fs';
3
- import { join } from 'path';
2
+ import { ConfigManager } from '../config-manager.js';
4
3
  export function initCommand(program) {
5
4
  program
6
5
  .command('init')
7
- .description('Initialize a mediaproc project with config file')
8
- .option('--pipeline', 'Initialize with pipeline config')
6
+ .description('Initialize MediaProc configuration in ~/.mediaproc/')
7
+ .option('--reset', 'Reset existing configuration')
9
8
  .action((options) => {
10
- const configPath = join(process.cwd(), 'mediaproc.config.json');
11
- if (existsSync(configPath)) {
12
- console.log(chalk.yellow('āš ļø mediaproc.config.json already exists'));
9
+ const configManager = new ConfigManager();
10
+ const configPath = ConfigManager.getConfigPath();
11
+ if (configManager.exists() && !options.reset) {
12
+ console.log(chalk.yellow('āš ļø Configuration already exists at:'));
13
+ console.log(chalk.dim(` ${configPath}`));
14
+ console.log('');
15
+ console.log(chalk.dim('Use --reset flag to reset configuration'));
13
16
  process.exit(1);
14
17
  }
15
- const config = options.pipeline ? {
16
- version: '1.0',
17
- plugins: [],
18
- pipelines: {
19
- example: {
20
- name: 'Example Pipeline',
21
- steps: [
22
- {
23
- plugin: 'image',
24
- command: 'resize',
25
- options: { width: 1920, height: 1080 }
26
- },
27
- {
28
- plugin: 'image',
29
- command: 'convert',
30
- options: { format: 'webp', quality: 85 }
31
- }
32
- ]
33
- }
34
- }
35
- } : {
36
- version: '1.0',
37
- plugins: [],
38
- defaults: {
39
- image: {
40
- quality: 90,
41
- format: 'webp'
42
- },
43
- video: {
44
- codec: 'h264',
45
- preset: 'medium'
46
- }
47
- }
48
- };
49
- writeFileSync(configPath, JSON.stringify(config, null, 2));
50
- console.log(chalk.green('āœ“ Created mediaproc.config.json'));
51
- console.log(chalk.dim('\nNext steps:'));
52
- console.log(chalk.dim(' 1. Install plugins: mediaproc add image'));
53
- console.log(chalk.dim(' 2. Customize config in mediaproc.config.json'));
54
- console.log(chalk.dim(' 3. Run commands: mediaproc image resize photo.jpg'));
18
+ if (options.reset) {
19
+ console.log(chalk.yellow('Resetting configuration...'));
20
+ configManager.reset();
21
+ }
22
+ else {
23
+ // Load will create default config if not exists
24
+ configManager.load();
25
+ }
26
+ console.log(chalk.green('āœ“ MediaProc configuration initialized'));
27
+ console.log(chalk.dim(` Location: ${configPath}`));
28
+ console.log('');
29
+ console.log(chalk.bold('Next steps:'));
30
+ console.log(chalk.dim(' 1. Browse plugins: ') + chalk.cyan('mediaproc plugins'));
31
+ console.log(chalk.dim(' 2. Install plugins: ') + chalk.cyan('mediaproc add image'));
32
+ console.log(chalk.dim(' 3. View config: ') + chalk.cyan('mediaproc config show'));
55
33
  });
56
34
  }
57
35
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,YAAY,EAAE,iCAAiC,CAAC;SACvD,MAAM,CAAC,CAAC,OAA+B,EAAE,EAAE;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAEhE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE;gBACT,OAAO,EAAE;oBACP,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE;wBACL;4BACE,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,QAAQ;4BACjB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;yBACvC;wBACD;4BACE,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,SAAS;4BAClB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;yBACzC;qBACF;iBACF;aACF;SACF,CAAC,CAAC,CAAC;YACF,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,MAAM;iBACf;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF,CAAC;QAEF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,SAAS,EAAE,8BAA8B,CAAC;SACjD,MAAM,CAAC,CAAC,OAA4B,EAAE,EAAE;QACvC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;QAEjD,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACxD,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,gDAAgD;YAChD,aAAa,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -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;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CA0HhF"}
@@ -1,29 +1,102 @@
1
1
  import chalk from 'chalk';
2
+ import { detectPluginType } from '../plugin-registry.js';
2
3
  export function listCommand(program, pluginManager) {
3
4
  program
4
5
  .command('list')
5
6
  .alias('ls')
6
- .description('List all installed mediaproc plugins')
7
+ .description('List installed mediaproc plugins')
7
8
  .action(() => {
8
- const plugins = pluginManager.getLoadedPlugins();
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'));
9
+ const loadedPlugins = pluginManager.getLoadedPlugins();
10
+ const installedPlugins = pluginManager.getInstalledPlugins();
11
+ // Find plugins that are installed but not loaded
12
+ const notLoaded = installedPlugins.filter(p => !loadedPlugins.includes(p));
13
+ if (loadedPlugins.length === 0 && installedPlugins.length === 0) {
14
+ console.log(chalk.yellow('No plugins installed yet'));
15
+ console.log(chalk.dim('\nšŸ’” Get started by installing a plugin:'));
16
+ console.log(chalk.cyan(' mediaproc add image') + chalk.dim(' # Image processing'));
17
+ console.log(chalk.cyan(' mediaproc add video') + chalk.dim(' # Video processing'));
18
+ console.log(chalk.cyan(' mediaproc add audio') + chalk.dim(' # Audio processing'));
19
+ console.log(chalk.dim('\nView all available plugins: ') + chalk.white('mediaproc plugins'));
13
20
  return;
14
21
  }
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
- }
22
+ console.log(chalk.bold(`\nšŸ“¦ Installed Plugins (${installedPlugins.length} total, ${loadedPlugins.length} loaded)\n`));
23
+ // Separate official, community, and third-party plugins (from loaded list)
24
+ const official = loadedPlugins.filter(p => {
25
+ const type = detectPluginType(p);
26
+ return type === 'official';
26
27
  });
28
+ const community = loadedPlugins.filter(p => {
29
+ const type = detectPluginType(p);
30
+ return type === 'community';
31
+ });
32
+ const thirdParty = loadedPlugins.filter(p => {
33
+ const type = detectPluginType(p);
34
+ return type === 'third-party';
35
+ });
36
+ // Show official plugins
37
+ if (official.length > 0) {
38
+ console.log(chalk.bold('\u2728 Official Plugins:\n'));
39
+ official.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})`)} ${chalk.blue('ā˜… OFFICIAL')}`);
43
+ if (plugin) {
44
+ console.log(chalk.dim(` Version: ${plugin.version || 'unknown'}`));
45
+ }
46
+ if (index < official.length - 1) {
47
+ console.log('');
48
+ }
49
+ });
50
+ }
51
+ // Show community plugins
52
+ if (community.length > 0) {
53
+ console.log(chalk.bold('\n🌐 Community Plugins:\n'));
54
+ community.forEach((pluginName, index) => {
55
+ const shortName = pluginName.replace('mediaproc-', '');
56
+ const plugin = pluginManager.getPlugin(pluginName);
57
+ console.log(`${chalk.green('āœ“')} ${chalk.cyan(shortName)} ${chalk.dim(`(${pluginName})`)}`);
58
+ if (plugin) {
59
+ console.log(chalk.dim(` Version: ${plugin.version || 'unknown'}`));
60
+ }
61
+ if (index < community.length - 1) {
62
+ console.log('');
63
+ }
64
+ });
65
+ }
66
+ // Show third-party plugins
67
+ if (thirdParty.length > 0) {
68
+ console.log(chalk.bold('\nšŸ“¦ Third-Party Plugins:\n'));
69
+ thirdParty.forEach((pluginName, index) => {
70
+ const plugin = pluginManager.getPlugin(pluginName);
71
+ console.log(`${chalk.green('āœ“')} ${chalk.cyan(pluginName)}`);
72
+ if (plugin) {
73
+ console.log(chalk.dim(` Version: ${plugin.version || 'unknown'}`));
74
+ }
75
+ if (index < thirdParty.length - 1) {
76
+ console.log('');
77
+ }
78
+ });
79
+ }
80
+ // Show plugins that are installed but not loaded
81
+ if (notLoaded.length > 0) {
82
+ console.log(chalk.bold('\nāš ļø Installed but Not Loaded:\n'));
83
+ console.log(chalk.yellow('These plugins are in package.json but not loaded. Restart CLI or run "mediaproc add <plugin>" to load them.\n'));
84
+ notLoaded.forEach((pluginName, index) => {
85
+ const shortName = pluginName.replace('@mediaproc/', '').replace('mediaproc-', '');
86
+ console.log(`${chalk.yellow('ā—‹')} ${chalk.dim(shortName)} ${chalk.dim(`(${pluginName})`)}`);
87
+ console.log(chalk.dim(` Load: ${chalk.white(`mediaproc add ${shortName}`)}`));
88
+ if (index < notLoaded.length - 1) {
89
+ console.log('');
90
+ }
91
+ });
92
+ }
93
+ console.log(chalk.dim('\nšŸ’” Plugin types:'));
94
+ console.log(chalk.dim(' ✨ Official: @mediaproc/* packages'));
95
+ console.log(chalk.dim(' 🌐 Community: mediaproc-* packages'));
96
+ console.log(chalk.dim(' šŸ“¦ Third-party: Other npm packages'));
97
+ console.log(chalk.dim('\nšŸ“„ Install more: ') + chalk.white('mediaproc add <plugin-name>'));
98
+ console.log(chalk.dim(' Remove: ') + chalk.white('mediaproc remove <plugin-name>'));
99
+ console.log(chalk.dim(' Browse all: ') + chalk.white('mediaproc plugins'));
27
100
  console.log('');
28
101
  });
29
102
  }
@@ -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,7 @@
1
+ import { Command } from 'commander';
2
+ import type { PluginManager } from '../plugin-manager.js';
3
+ /**
4
+ * Universal optimize command - shows optimization suggestions based on file type
5
+ */
6
+ export declare function optimizeCommand(program: Command, pluginManager?: PluginManager): void;
7
+ //# 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;AAIpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAoLrF"}
@@ -0,0 +1,196 @@
1
+ import chalk from 'chalk';
2
+ import { existsSync } from 'fs';
3
+ import { extname } from 'path';
4
+ /**
5
+ * Universal optimize command - shows optimization suggestions based on file type
6
+ */
7
+ export function optimizeCommand(program, pluginManager) {
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 96kbps)';
89
+ commands = [
90
+ `mediaproc audio convert ${file} ${options.output || file.replace(`.${ext}`, '.optimized.opus')} --bitrate 96k`,
91
+ ];
92
+ }
93
+ else {
94
+ optimizationStrategy = 'Balanced (Opus 128kbps)';
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 = 'Compression and optimization';
104
+ commands = [
105
+ `mediaproc document optimize ${file} ${options.output || file.replace(`.${ext}`, `.optimized.${ext}`)}`,
106
+ ];
107
+ }
108
+ else if (modelExts.includes(ext)) {
109
+ pluginName = '3d';
110
+ mediaType = '3D Model';
111
+ if (options.aggressive) {
112
+ optimizationStrategy = 'Aggressive (Draco compression, lower precision)';
113
+ commands = [
114
+ `mediaproc 3d optimize ${file} ${options.output || file.replace(`.${ext}`, '.optimized.glb')} --draco --quantize`,
115
+ ];
116
+ }
117
+ else {
118
+ optimizationStrategy = 'Balanced (Draco compression)';
119
+ commands = [
120
+ `mediaproc 3d optimize ${file} ${options.output || file.replace(`.${ext}`, '.optimized.glb')} --draco`,
121
+ ];
122
+ }
123
+ }
124
+ else {
125
+ console.error(chalk.red(`āœ— Unsupported file format for optimization: .${ext}`));
126
+ console.log(chalk.yellow('\nšŸ’” Supported formats:'));
127
+ console.log(chalk.dim(' Images: jpg, png, webp, gif, avif, heif'));
128
+ console.log(chalk.dim(' Videos: mp4, webm, mkv, avi, mov'));
129
+ console.log(chalk.dim(' Audio: mp3, wav, ogg, flac, aac'));
130
+ console.log(chalk.dim(' Documents: pdf, docx, pptx'));
131
+ console.log(chalk.dim(' 3D Models: gltf, glb, obj'));
132
+ process.exit(1);
133
+ }
134
+ console.log('');
135
+ console.log(chalk.blue(`šŸŽÆ ${mediaType} Optimization Strategy`));
136
+ console.log(chalk.dim('─'.repeat(50)));
137
+ console.log(chalk.cyan('File: ') + file);
138
+ console.log(chalk.cyan('Type: ') + mediaType);
139
+ console.log(chalk.cyan('Strategy: ') + chalk.yellow(optimizationStrategy));
140
+ console.log('');
141
+ console.log(chalk.yellow('⚔ Recommended command' + (commands.length > 1 ? 's' : '') + ':'));
142
+ commands.forEach((cmd, i) => {
143
+ if (commands.length > 1) {
144
+ console.log(chalk.dim(` Option ${i + 1}:`));
145
+ }
146
+ console.log(chalk.cyan(` ${cmd}`));
147
+ if (i < commands.length - 1)
148
+ console.log('');
149
+ });
150
+ console.log('');
151
+ // Check plugin status
152
+ const pluginPackage = `@mediaproc/${pluginName}`;
153
+ const isLoaded = pluginManager?.isPluginLoaded(pluginPackage);
154
+ const isInstalled = pluginManager?.isPluginInstalled(pluginPackage);
155
+ if (isLoaded) {
156
+ console.log(chalk.green(`āœ“ ${pluginName} plugin is loaded - commands are ready`));
157
+ }
158
+ else if (isInstalled) {
159
+ console.log(chalk.yellow(`āš ļø ${pluginName} plugin is installed but not loaded`));
160
+ console.log(chalk.dim(` Load it: ${chalk.cyan(`mediaproc add ${pluginName}`)}`));
161
+ }
162
+ else {
163
+ console.log(chalk.red(`āœ— ${pluginName} plugin not installed`));
164
+ console.log(chalk.dim(` Install: ${chalk.cyan(`mediaproc add ${pluginName}`)}`));
165
+ }
166
+ console.log('');
167
+ // Show size estimates
168
+ if (mediaType === 'Image') {
169
+ console.log(chalk.yellow('šŸ“Š Expected savings:'));
170
+ if (options.aggressive) {
171
+ console.log(chalk.dim(' • 60-80% size reduction (WebP Q70)'));
172
+ }
173
+ else if (options.lossless) {
174
+ console.log(chalk.dim(' • 10-30% size reduction (lossless)'));
175
+ }
176
+ else {
177
+ console.log(chalk.dim(' • 40-60% size reduction (WebP Q85)'));
178
+ }
179
+ console.log('');
180
+ }
181
+ else if (mediaType === 'Video') {
182
+ console.log(chalk.yellow('šŸ“Š Expected savings:'));
183
+ if (options.aggressive) {
184
+ console.log(chalk.dim(' • 50-70% size reduction (H.265 CRF 28)'));
185
+ }
186
+ else if (options.lossless) {
187
+ console.log(chalk.dim(' • Variable (lossless encoding)'));
188
+ }
189
+ else {
190
+ console.log(chalk.dim(' • 30-50% size reduction (H.265 CRF 23)'));
191
+ }
192
+ console.log('');
193
+ }
194
+ });
195
+ }
196
+ //# 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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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ import type { PluginManager } from '../plugin-manager.js';
3
+ export declare function pluginsCommand(program: Command, pluginManager: PluginManager): void;
4
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CA4FnF"}