@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.
- package/README.md +381 -54
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +108 -39
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +86 -27
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/convert.d.ts +7 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +96 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/help.js +2 -2
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/info.d.ts +7 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +117 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +25 -47
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +90 -17
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/optimize.d.ts +7 -0
- package/dist/commands/optimize.d.ts.map +1 -0
- package/dist/commands/optimize.js +196 -0
- package/dist/commands/optimize.js.map +1 -0
- package/dist/commands/plugins.d.ts +4 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +79 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +92 -11
- package/dist/commands/remove.js.map +1 -1
- package/dist/config-manager.d.ts +110 -0
- package/dist/config-manager.d.ts.map +1 -0
- package/dist/config-manager.js +201 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/plugin-manager.d.ts +31 -7
- package/dist/plugin-manager.d.ts.map +1 -1
- package/dist/plugin-manager.js +75 -44
- package/dist/plugin-manager.js.map +1 -1
- package/dist/plugin-registry.d.ts +9 -0
- package/dist/plugin-registry.d.ts.map +1 -1
- package/dist/plugin-registry.js +41 -6
- package/dist/plugin-registry.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/plugin-manager.js
CHANGED
|
@@ -1,55 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { join } from 'path';
|
|
3
|
-
import chalk from 'chalk';
|
|
1
|
+
import { ConfigManager } from './config-manager.js';
|
|
4
2
|
export class PluginManager {
|
|
5
3
|
plugins = new Map();
|
|
6
4
|
pluginPrefix = '@mediaproc/';
|
|
5
|
+
configManager;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.configManager = new ConfigManager();
|
|
8
|
+
}
|
|
9
|
+
// Official plugins (recommended, but installed on-demand)
|
|
10
|
+
officialPlugins = [
|
|
11
|
+
'@mediaproc/image',
|
|
12
|
+
'@mediaproc/video',
|
|
13
|
+
'@mediaproc/audio',
|
|
14
|
+
'@mediaproc/document',
|
|
15
|
+
'@mediaproc/animation',
|
|
16
|
+
'@mediaproc/3d',
|
|
17
|
+
'@mediaproc/stream',
|
|
18
|
+
'@mediaproc/ai',
|
|
19
|
+
'@mediaproc/metadata',
|
|
20
|
+
'@mediaproc/pipeline',
|
|
21
|
+
];
|
|
7
22
|
/**
|
|
8
|
-
*
|
|
23
|
+
* Check if a plugin is official (@mediaproc/* package)
|
|
9
24
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
await this.loadPlugin(pluginName, program);
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
18
|
-
console.error(chalk.yellow(`Warning: Failed to load plugin ${pluginName}:`), errorMessage);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
25
|
+
isOfficialPlugin(pluginName) {
|
|
26
|
+
// Check if it's in the official list OR starts with @mediaproc/
|
|
27
|
+
return this.officialPlugins.includes(pluginName) || pluginName.startsWith(this.pluginPrefix);
|
|
21
28
|
}
|
|
22
29
|
/**
|
|
23
|
-
*
|
|
30
|
+
* Get the plugin prefix
|
|
24
31
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
try {
|
|
28
|
-
// Try to read package.json to find dependencies
|
|
29
|
-
const packageJsonPath = join(process.cwd(), 'package.json');
|
|
30
|
-
if (existsSync(packageJsonPath)) {
|
|
31
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
32
|
-
const allDeps = {
|
|
33
|
-
...packageJson.dependencies,
|
|
34
|
-
...packageJson.devDependencies,
|
|
35
|
-
};
|
|
36
|
-
// Find all @mediaproc/* packages
|
|
37
|
-
for (const dep of Object.keys(allDeps)) {
|
|
38
|
-
if (dep.startsWith(this.pluginPrefix) && dep !== '@mediaproc/core') {
|
|
39
|
-
plugins.push(dep);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
// Silently fail - no plugins installed yet
|
|
46
|
-
}
|
|
47
|
-
return plugins;
|
|
32
|
+
getPluginPrefix() {
|
|
33
|
+
return this.pluginPrefix;
|
|
48
34
|
}
|
|
49
35
|
/**
|
|
50
36
|
* Load a specific plugin and register its commands
|
|
51
37
|
*/
|
|
52
|
-
async loadPlugin(pluginName, program) {
|
|
38
|
+
async loadPlugin(pluginName, program, isBuiltIn = false) {
|
|
39
|
+
// Skip if already loaded
|
|
40
|
+
if (this.plugins.has(pluginName)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
53
43
|
try {
|
|
54
44
|
// Dynamic import of the plugin
|
|
55
45
|
const plugin = await import(pluginName);
|
|
@@ -58,7 +48,12 @@ export class PluginManager {
|
|
|
58
48
|
}
|
|
59
49
|
// Register plugin commands with the CLI
|
|
60
50
|
await plugin.register(program);
|
|
61
|
-
this.plugins.set(pluginName,
|
|
51
|
+
this.plugins.set(pluginName, {
|
|
52
|
+
...plugin,
|
|
53
|
+
isBuiltIn
|
|
54
|
+
});
|
|
55
|
+
// Update config to mark as loaded
|
|
56
|
+
this.configManager.addLoadedPlugin(pluginName);
|
|
62
57
|
return true;
|
|
63
58
|
}
|
|
64
59
|
catch (error) {
|
|
@@ -67,16 +62,34 @@ export class PluginManager {
|
|
|
67
62
|
}
|
|
68
63
|
}
|
|
69
64
|
/**
|
|
70
|
-
* Get list of loaded plugins
|
|
65
|
+
* Get list of loaded plugins (currently in memory)
|
|
71
66
|
*/
|
|
72
67
|
getLoadedPlugins() {
|
|
73
68
|
return Array.from(this.plugins.keys());
|
|
74
69
|
}
|
|
75
70
|
/**
|
|
76
|
-
*
|
|
71
|
+
* Get list of installed plugins from config
|
|
72
|
+
*/
|
|
73
|
+
getInstalledPlugins() {
|
|
74
|
+
return this.configManager.getInstalledPlugins();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if a plugin is installed (from config)
|
|
78
|
+
*/
|
|
79
|
+
isPluginInstalled(pluginName) {
|
|
80
|
+
return this.configManager.isPluginInstalled(pluginName);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get official plugins list
|
|
84
|
+
*/
|
|
85
|
+
getOfficialPlugins() {
|
|
86
|
+
return [...this.officialPlugins];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a plugin is loaded (in memory)
|
|
77
90
|
*/
|
|
78
91
|
isPluginLoaded(pluginName) {
|
|
79
|
-
return this.
|
|
92
|
+
return this.configManager.isPluginLoaded(pluginName);
|
|
80
93
|
}
|
|
81
94
|
/**
|
|
82
95
|
* Get plugin instance
|
|
@@ -84,5 +97,23 @@ export class PluginManager {
|
|
|
84
97
|
getPlugin(pluginName) {
|
|
85
98
|
return this.plugins.get(pluginName);
|
|
86
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Unload a plugin (remove from registry)
|
|
102
|
+
*/
|
|
103
|
+
unloadPlugin(pluginName) {
|
|
104
|
+
if (this.plugins.has(pluginName)) {
|
|
105
|
+
this.plugins.delete(pluginName);
|
|
106
|
+
// Update config to mark as unloaded
|
|
107
|
+
this.configManager.removeLoadedPlugin(pluginName);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the config manager instance
|
|
114
|
+
*/
|
|
115
|
+
getConfigManager() {
|
|
116
|
+
return this.configManager;
|
|
117
|
+
}
|
|
87
118
|
}
|
|
88
119
|
//# sourceMappingURL=plugin-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,14 +8,23 @@ export interface PluginRegistryEntry {
|
|
|
8
8
|
package: string;
|
|
9
9
|
description: string;
|
|
10
10
|
category: 'core' | 'advanced' | 'future-proof';
|
|
11
|
+
type: 'official' | 'community';
|
|
11
12
|
dependencies?: string[];
|
|
12
13
|
systemRequirements?: string[];
|
|
13
14
|
}
|
|
14
15
|
export declare const PLUGIN_REGISTRY: Record<string, PluginRegistryEntry>;
|
|
15
16
|
/**
|
|
16
17
|
* Resolve short name to full package name
|
|
18
|
+
* Handles three types of plugins:
|
|
19
|
+
* 1. Official: @mediaproc/<name> (e.g., @mediaproc/image)
|
|
20
|
+
* 2. Community: mediaproc-<name> (e.g., mediaproc-super-filters)
|
|
21
|
+
* 3. Third-party: any npm package (e.g., my-custom-mediaproc-plugin)
|
|
17
22
|
*/
|
|
18
23
|
export declare function resolvePluginPackage(shortName: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Detect plugin type from package name
|
|
26
|
+
*/
|
|
27
|
+
export declare function detectPluginType(packageName: string): 'official' | 'community' | 'third-party';
|
|
19
28
|
/**
|
|
20
29
|
* Get all available plugins grouped by category
|
|
21
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../src/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,cAAc,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../src/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,cAAc,CAAC;IAC/C,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA0J/D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAe9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAQ9F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAiB5E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}
|
package/dist/plugin-registry.js
CHANGED
|
@@ -10,6 +10,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
10
10
|
package: '@mediaproc/image',
|
|
11
11
|
description: 'Image processing (resize, convert, filters, effects)',
|
|
12
12
|
category: 'core',
|
|
13
|
+
type: 'official',
|
|
13
14
|
systemRequirements: ['Sharp (auto-installed)'],
|
|
14
15
|
},
|
|
15
16
|
'video': {
|
|
@@ -17,6 +18,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
17
18
|
package: '@mediaproc/video',
|
|
18
19
|
description: 'Video processing (transcode, compress, extract)',
|
|
19
20
|
category: 'core',
|
|
21
|
+
type: 'official',
|
|
20
22
|
systemRequirements: ['FFmpeg'],
|
|
21
23
|
},
|
|
22
24
|
'audio': {
|
|
@@ -24,6 +26,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
24
26
|
package: '@mediaproc/audio',
|
|
25
27
|
description: 'Audio processing (convert, normalize, extract)',
|
|
26
28
|
category: 'core',
|
|
29
|
+
type: 'official',
|
|
27
30
|
systemRequirements: ['FFmpeg'],
|
|
28
31
|
},
|
|
29
32
|
// Document Media (Very Important)
|
|
@@ -32,6 +35,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
32
35
|
package: '@mediaproc/document',
|
|
33
36
|
description: 'PDF/DOCX/PPTX/EPUB processing, OCR, compression',
|
|
34
37
|
category: 'core',
|
|
38
|
+
type: 'official',
|
|
35
39
|
systemRequirements: ['Ghostscript', 'Tesseract OCR', 'Poppler'],
|
|
36
40
|
},
|
|
37
41
|
'doc': {
|
|
@@ -39,6 +43,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
39
43
|
package: '@mediaproc/document',
|
|
40
44
|
description: 'Alias for document plugin',
|
|
41
45
|
category: 'core',
|
|
46
|
+
type: 'official',
|
|
42
47
|
},
|
|
43
48
|
// Animation & Motion Media
|
|
44
49
|
'animation': {
|
|
@@ -46,6 +51,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
46
51
|
package: '@mediaproc/animation',
|
|
47
52
|
description: 'GIF/APNG/WebP animations, Lottie, SVG animations',
|
|
48
53
|
category: 'core',
|
|
54
|
+
type: 'official',
|
|
49
55
|
systemRequirements: ['FFmpeg'],
|
|
50
56
|
},
|
|
51
57
|
'anim': {
|
|
@@ -53,6 +59,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
53
59
|
package: '@mediaproc/animation',
|
|
54
60
|
description: 'Alias for animation plugin',
|
|
55
61
|
category: 'core',
|
|
62
|
+
type: 'official',
|
|
56
63
|
},
|
|
57
64
|
// 3D & Spatial Media (Advanced)
|
|
58
65
|
'3d': {
|
|
@@ -60,6 +67,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
60
67
|
package: '@mediaproc/3d',
|
|
61
68
|
description: '3D models (GLTF, GLB, OBJ), textures, HDRI, AR/VR assets',
|
|
62
69
|
category: 'advanced',
|
|
70
|
+
type: 'official',
|
|
63
71
|
systemRequirements: ['gltf-transform'],
|
|
64
72
|
},
|
|
65
73
|
'spatial': {
|
|
@@ -67,6 +75,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
67
75
|
package: '@mediaproc/3d',
|
|
68
76
|
description: 'Alias for 3d plugin',
|
|
69
77
|
category: 'advanced',
|
|
78
|
+
type: 'official',
|
|
70
79
|
},
|
|
71
80
|
// Metadata-only Processing (Underrated but Powerful)
|
|
72
81
|
'metadata': {
|
|
@@ -74,6 +83,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
74
83
|
package: '@mediaproc/metadata',
|
|
75
84
|
description: 'EXIF cleanup, GPS removal, codec inspection, compliance checks',
|
|
76
85
|
category: 'core',
|
|
86
|
+
type: 'official',
|
|
77
87
|
systemRequirements: ['ExifTool'],
|
|
78
88
|
},
|
|
79
89
|
'meta': {
|
|
@@ -81,12 +91,14 @@ export const PLUGIN_REGISTRY = {
|
|
|
81
91
|
package: '@mediaproc/metadata',
|
|
82
92
|
description: 'Alias for metadata plugin',
|
|
83
93
|
category: 'core',
|
|
94
|
+
type: 'official',
|
|
84
95
|
},
|
|
85
96
|
'inspect': {
|
|
86
97
|
name: 'inspect',
|
|
87
98
|
package: '@mediaproc/metadata',
|
|
88
99
|
description: 'Alias for metadata plugin',
|
|
89
100
|
category: 'core',
|
|
101
|
+
type: 'official',
|
|
90
102
|
},
|
|
91
103
|
// Streaming & Packaging Media (Advanced, Industry-Relevant)
|
|
92
104
|
'stream': {
|
|
@@ -94,6 +106,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
94
106
|
package: '@mediaproc/stream',
|
|
95
107
|
description: 'HLS/DASH packaging, chunking, encryption, manifests',
|
|
96
108
|
category: 'advanced',
|
|
109
|
+
type: 'official',
|
|
97
110
|
systemRequirements: ['FFmpeg', 'Shaka Packager (optional)'],
|
|
98
111
|
},
|
|
99
112
|
'streaming': {
|
|
@@ -101,6 +114,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
101
114
|
package: '@mediaproc/stream',
|
|
102
115
|
description: 'Alias for stream plugin',
|
|
103
116
|
category: 'advanced',
|
|
117
|
+
type: 'official',
|
|
104
118
|
},
|
|
105
119
|
// AI-Assisted Media (Future-Proof)
|
|
106
120
|
'ai': {
|
|
@@ -108,6 +122,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
108
122
|
package: '@mediaproc/ai',
|
|
109
123
|
description: 'Auto-captioning, scene detection, face blur, background removal, speech-to-text',
|
|
110
124
|
category: 'future-proof',
|
|
125
|
+
type: 'official',
|
|
111
126
|
systemRequirements: ['TensorFlow/ONNX Runtime (optional)', 'Whisper (optional)'],
|
|
112
127
|
},
|
|
113
128
|
'ml': {
|
|
@@ -115,6 +130,7 @@ export const PLUGIN_REGISTRY = {
|
|
|
115
130
|
package: '@mediaproc/ai',
|
|
116
131
|
description: 'Alias for ai plugin',
|
|
117
132
|
category: 'future-proof',
|
|
133
|
+
type: 'official',
|
|
118
134
|
},
|
|
119
135
|
// Media Pipelines (Highest Level)
|
|
120
136
|
'pipeline': {
|
|
@@ -122,23 +138,42 @@ export const PLUGIN_REGISTRY = {
|
|
|
122
138
|
package: '@mediaproc/pipeline',
|
|
123
139
|
description: 'Declarative YAML-based media processing workflows',
|
|
124
140
|
category: 'advanced',
|
|
141
|
+
type: 'official',
|
|
125
142
|
dependencies: ['Can use any installed plugins'],
|
|
126
143
|
},
|
|
127
144
|
};
|
|
128
145
|
/**
|
|
129
146
|
* Resolve short name to full package name
|
|
147
|
+
* Handles three types of plugins:
|
|
148
|
+
* 1. Official: @mediaproc/<name> (e.g., @mediaproc/image)
|
|
149
|
+
* 2. Community: mediaproc-<name> (e.g., mediaproc-super-filters)
|
|
150
|
+
* 3. Third-party: any npm package (e.g., my-custom-mediaproc-plugin)
|
|
130
151
|
*/
|
|
131
152
|
export function resolvePluginPackage(shortName) {
|
|
132
|
-
//
|
|
133
|
-
if (shortName.startsWith('
|
|
153
|
+
// Already a full package name - return as-is
|
|
154
|
+
if (shortName.includes('/') || shortName.startsWith('mediaproc-')) {
|
|
134
155
|
return shortName;
|
|
135
156
|
}
|
|
136
|
-
// Look up in registry
|
|
157
|
+
// Look up in official registry first
|
|
137
158
|
const entry = PLUGIN_REGISTRY[shortName.toLowerCase()];
|
|
138
|
-
if (
|
|
139
|
-
|
|
159
|
+
if (entry) {
|
|
160
|
+
return entry.package;
|
|
140
161
|
}
|
|
141
|
-
|
|
162
|
+
// Not in registry - could be community or third-party
|
|
163
|
+
// Assume community format: mediaproc-<name>
|
|
164
|
+
return `mediaproc-${shortName}`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Detect plugin type from package name
|
|
168
|
+
*/
|
|
169
|
+
export function detectPluginType(packageName) {
|
|
170
|
+
if (packageName.startsWith('@mediaproc/')) {
|
|
171
|
+
return 'official';
|
|
172
|
+
}
|
|
173
|
+
if (packageName.startsWith('mediaproc-')) {
|
|
174
|
+
return 'community';
|
|
175
|
+
}
|
|
176
|
+
return 'third-party';
|
|
142
177
|
}
|
|
143
178
|
/**
|
|
144
179
|
* Get all available plugins grouped by category
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../src/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../src/plugin-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mediaproc/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Universal media processing CLI with plugin architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -56,17 +56,17 @@
|
|
|
56
56
|
"@gltf-transform/core": "^4.2.1",
|
|
57
57
|
"@lottiefiles/dotlottie-web": "^0.60.0",
|
|
58
58
|
"chalk": "^5.3.0",
|
|
59
|
-
"commander": "^
|
|
60
|
-
"execa": "^
|
|
59
|
+
"commander": "^14.0.2",
|
|
60
|
+
"execa": "^9.6.1",
|
|
61
61
|
"ghostscript4js": "^3.2.3",
|
|
62
62
|
"node-poppler": "^9.0.1",
|
|
63
|
-
"ora": "^
|
|
63
|
+
"ora": "^9.0.0",
|
|
64
64
|
"shaka-player": "^4.16.12",
|
|
65
|
-
"sharp": "^0.
|
|
65
|
+
"sharp": "^0.34.5",
|
|
66
66
|
"tesseract.js": "^7.0.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@types/node": "^
|
|
69
|
+
"@types/node": "^25.0.3",
|
|
70
70
|
"typescript": "^5.3.3"
|
|
71
71
|
}
|
|
72
72
|
}
|