@mediaproc/image 1.2.2 → 1.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # šŸ“ø MediaProc Image Plugin
2
2
 
3
- Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing.com/). Fast, efficient, and feature-rich image manipulation toolkit with **49 comprehensive commands**.
3
+ Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing.com/). Fast, efficient, and feature-rich image manipulation toolkit with **51 comprehensive commands**.
4
4
 
5
5
  ## šŸ“‘ Table of Contents
6
6
 
@@ -15,7 +15,7 @@ Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing
15
15
  - [Effects & Filters](#-effects--filters-9-commands)
16
16
  - [Advanced Operations](#-advanced-operations-6-commands)
17
17
  - [Smart/AI Operations](#-smartai-operations-6-commands)
18
- - [Utility Commands](#-utility-8-commands)
18
+ - [Utility Commands](#-utility-10-commands)
19
19
  - [Real-World Workflows](#-real-world-workflows)
20
20
  - [Usage Tips](#-usage-tips)
21
21
  - [Troubleshooting](#-troubleshooting)
@@ -25,7 +25,7 @@ Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing
25
25
  ## ✨ Features
26
26
 
27
27
  - šŸš€ **High Performance** - Built on libvips for blazing fast processing
28
- - šŸŽØ **49 Commands** - Comprehensive image manipulation toolkit covering all Sharp operations
28
+ - šŸŽØ **51 Commands** - Comprehensive image manipulation toolkit covering all Sharp operations
29
29
  - šŸ”§ **Professional Features** - Quality control, dry-run mode, verbose logging
30
30
  - šŸ“¦ **Modern Formats** - WebP, AVIF, JPEG, PNG, TIFF, GIF support
31
31
  - šŸŽÆ **Simple CLI** - Intuitive command-line interface
@@ -368,11 +368,13 @@ All **49 commands** organized by category:
368
368
  - **grid** - Combine images into collage layouts
369
369
  - **batch** - Process multiple images at once with any operation
370
370
 
371
- ### šŸ”§ Utility (8 commands)
371
+ ### šŸ”§ Utility (10 commands)
372
372
 
373
373
  - **convert** - Format conversion (JPG, PNG, WebP, AVIF, TIFF, GIF)
374
374
  - **optimize** - Size optimization (up to 70% reduction)
375
+ - **compress** - Advanced compression with quality control
375
376
  - **watermark** - Add watermarks with positioning and opacity
377
+ - **info** - Display comprehensive image information
376
378
  - **stats** - Detailed technical image statistics
377
379
  - **split** - Split image into grid tiles
378
380
  - **stack** - Stack images horizontally/vertically
package/dist/cli.js CHANGED
@@ -49,6 +49,8 @@ import { erodeCommand } from './commands/erode.js';
49
49
  import { booleanCommand } from './commands/boolean.js';
50
50
  import { linearCommand } from './commands/linear.js';
51
51
  import { recombCommand } from './commands/recomb.js';
52
+ import { compressCommand } from './commands/compress.js';
53
+ import { infoCommand } from './commands/info.js';
52
54
  const program = new Command();
53
55
  program
54
56
  .name('mediaproc-image')
@@ -104,6 +106,8 @@ erodeCommand(program);
104
106
  booleanCommand(program);
105
107
  linearCommand(program);
106
108
  recombCommand(program);
109
+ compressCommand(program);
110
+ infoCommand(program);
107
111
  program.parse(process.argv);
108
112
  if (!process.argv.slice(2).length) {
109
113
  program.outputHelp();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ export { getFileName } from '../utils/pathValidator.js';
3
+ export declare function compressCommand(imageCmd: Command): void;
4
+ //# sourceMappingURL=compress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAWxD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA4LvD"}
@@ -0,0 +1,190 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName } from '../utils/pathValidator.js';
4
+ export { getFileName } from '../utils/pathValidator.js';
5
+ import { createSharpInstance } from '../utils/sharp.js';
6
+ import { createStandardHelp } from '../utils/helpFormatter.js';
7
+ import { stat } from 'node:fs/promises';
8
+ export function compressCommand(imageCmd) {
9
+ imageCmd
10
+ .command('compress <input>')
11
+ .description('Compress images with advanced quality control')
12
+ .option('-o, --output <path>', 'Output file path')
13
+ .option('-q, --quality <quality>', 'Compression quality (1-100, default: 75)', parseInt, 75)
14
+ .option('--lossy', 'Use lossy compression for better size reduction')
15
+ .option('--dry-run', 'Show what would be done without executing')
16
+ .option('-v, --verbose', 'Verbose output')
17
+ .option('--help', 'Display help for compress command')
18
+ .action(async (input, options) => {
19
+ if (options.help) {
20
+ createStandardHelp({
21
+ commandName: 'compress',
22
+ emoji: 'šŸ—œļø',
23
+ description: 'Advanced image compression with fine-grained quality control. Reduce file sizes significantly while maintaining visual quality.',
24
+ usage: ['compress <input>', 'compress <input> -q <quality>', 'compress <input> --lossy'],
25
+ options: [
26
+ { flag: '-o, --output <path>', description: 'Output file path (default: <input>-compressed.<ext>)' },
27
+ { flag: '-q, --quality <quality>', description: 'Compression quality 1-100 (default: 75)' },
28
+ { flag: '--lossy', description: 'Enable lossy compression for maximum reduction' },
29
+ { flag: '--dry-run', description: 'Preview changes without executing' },
30
+ { flag: '-v, --verbose', description: 'Show detailed output' }
31
+ ],
32
+ examples: [
33
+ { command: 'compress photo.jpg', description: 'Compress with quality 75 (default)' },
34
+ { command: 'compress image.png -q 60', description: 'Higher compression, lower quality' },
35
+ { command: 'compress pic.jpg --lossy', description: 'Maximum compression using lossy method' },
36
+ { command: 'compress photo.webp -q 80 -o small.webp', description: 'Custom quality and output' }
37
+ ],
38
+ additionalSections: [
39
+ {
40
+ title: 'Quality Levels',
41
+ items: [
42
+ 'Quality 80-100: High quality, moderate compression',
43
+ 'Quality 60-79: Good quality, good compression (recommended)',
44
+ 'Quality 40-59: Lower quality, high compression',
45
+ 'Quality 1-39: Low quality, maximum compression',
46
+ 'Lossy mode: Aggressive compression with visible artifacts'
47
+ ]
48
+ },
49
+ {
50
+ title: 'Format-Specific',
51
+ items: [
52
+ 'JPEG: Progressive encoding with custom quality',
53
+ 'PNG: Maximum compression with palette reduction',
54
+ 'WebP: Lossy/lossless WebP compression',
55
+ 'AVIF: Next-gen compression (50% smaller)'
56
+ ]
57
+ },
58
+ {
59
+ title: 'vs Optimize',
60
+ items: [
61
+ 'compress: Aggressive reduction, may reduce quality',
62
+ 'optimize: Balanced approach, minimal quality loss',
63
+ 'compress --lossy: Maximum size reduction',
64
+ 'optimize: Best for general web use'
65
+ ]
66
+ }
67
+ ],
68
+ tips: [
69
+ 'Quality 60-75 offers best compression/quality trade-off',
70
+ 'Use --lossy for thumbnails or backgrounds',
71
+ 'WebP format achieves better compression than JPEG',
72
+ 'Test different quality levels to find sweet spot'
73
+ ]
74
+ });
75
+ process.exit(0);
76
+ }
77
+ const spinner = ora('Validating inputs...').start();
78
+ try {
79
+ const { inputFiles, outputPath, errors } = validatePaths(input, options.output, {
80
+ allowedExtensions: IMAGE_EXTENSIONS,
81
+ });
82
+ if (errors.length > 0) {
83
+ spinner.fail(chalk.red('Validation failed:'));
84
+ errors.forEach(err => console.log(chalk.red(` āœ— ${err}`)));
85
+ process.exit(1);
86
+ }
87
+ if (inputFiles.length === 0) {
88
+ spinner.fail(chalk.red('No valid image files found'));
89
+ process.exit(1);
90
+ }
91
+ const outputPaths = resolveOutputPaths(inputFiles, outputPath, {
92
+ suffix: '-compressed',
93
+ });
94
+ spinner.succeed(chalk.green(`Found ${inputFiles.length} image(s) to process`));
95
+ for (const inputPath of inputFiles) {
96
+ const outputFile = outputPaths.get(inputPath);
97
+ const fileName = getFileName(inputPath);
98
+ if (options.dryRun) {
99
+ console.log(chalk.cyan(`\nšŸ“‹ Dry run: ${fileName}`));
100
+ console.log(chalk.gray(` Input: ${inputPath}`));
101
+ console.log(chalk.gray(` Output: ${outputFile}`));
102
+ console.log(chalk.gray(` Quality: ${options.quality || 75}`));
103
+ console.log(chalk.gray(` Lossy: ${options.lossy ? 'Yes' : 'No'}`));
104
+ continue;
105
+ }
106
+ const processSpinner = ora(`Compressing ${fileName}...`).start();
107
+ try {
108
+ const inputStat = await stat(inputPath);
109
+ const sharp = await createSharpInstance(inputPath);
110
+ // Get image format
111
+ const metadata = await sharp.metadata();
112
+ const format = metadata.format;
113
+ // Apply compression based on format
114
+ let pipeline = sharp;
115
+ if (format === 'jpeg' || format === 'jpg') {
116
+ pipeline = pipeline.jpeg({
117
+ quality: options.quality || 75,
118
+ progressive: true,
119
+ mozjpeg: options.lossy || false,
120
+ force: true,
121
+ });
122
+ }
123
+ else if (format === 'png') {
124
+ pipeline = pipeline.png({
125
+ quality: options.quality || 75,
126
+ compressionLevel: 9,
127
+ palette: options.lossy || false,
128
+ force: true,
129
+ });
130
+ }
131
+ else if (format === 'webp') {
132
+ pipeline = pipeline.webp({
133
+ quality: options.quality || 75,
134
+ lossless: !options.lossy,
135
+ force: true,
136
+ });
137
+ }
138
+ else if (format === 'avif') {
139
+ pipeline = pipeline.avif({
140
+ quality: options.quality || 75,
141
+ lossless: !options.lossy,
142
+ force: true,
143
+ });
144
+ }
145
+ else {
146
+ // For other formats, convert to JPEG with compression
147
+ pipeline = pipeline.jpeg({
148
+ quality: options.quality || 75,
149
+ progressive: true,
150
+ mozjpeg: options.lossy || false,
151
+ });
152
+ }
153
+ await pipeline.toFile(outputFile);
154
+ const outputStat = await stat(outputFile);
155
+ const reduction = ((inputStat.size - outputStat.size) / inputStat.size) * 100;
156
+ processSpinner.succeed(chalk.green(`āœ“ Compressed ${fileName}`) +
157
+ chalk.gray(` (${formatBytes(inputStat.size)} → ${formatBytes(outputStat.size)}, ${reduction.toFixed(1)}% reduction)`));
158
+ if (options.verbose) {
159
+ console.log(chalk.dim(` Input: ${inputPath}`));
160
+ console.log(chalk.dim(` Output: ${outputFile}`));
161
+ console.log(chalk.dim(` Quality: ${options.quality || 75}`));
162
+ console.log(chalk.dim(` Mode: ${options.lossy ? 'Lossy' : 'Standard'}`));
163
+ }
164
+ }
165
+ catch (error) {
166
+ processSpinner.fail(chalk.red(`āœ— Failed to compress ${fileName}`));
167
+ console.error(chalk.red(` Error: ${error.message}`));
168
+ process.exit(1);
169
+ }
170
+ }
171
+ console.log();
172
+ console.log(chalk.green.bold('āœ“ Compression Complete!'));
173
+ console.log(chalk.gray(` Processed: ${inputFiles.length} image(s)`));
174
+ }
175
+ catch (error) {
176
+ spinner.fail(chalk.red('Error during compression'));
177
+ console.error(chalk.red(`Error: ${error.message}`));
178
+ process.exit(1);
179
+ }
180
+ });
181
+ }
182
+ function formatBytes(bytes) {
183
+ if (bytes === 0)
184
+ return '0 B';
185
+ const k = 1024;
186
+ const sizes = ['B', 'KB', 'MB', 'GB'];
187
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
188
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
189
+ }
190
+ //# sourceMappingURL=compress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.js","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ export { getFileName } from '../utils/pathValidator.js';
3
+ export declare function infoCommand(imageCmd: Command): void;
4
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUxD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAqLnD"}
@@ -0,0 +1,185 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { stat } from 'node:fs/promises';
4
+ import { validatePaths, IMAGE_EXTENSIONS, getFileName } from '../utils/pathValidator.js';
5
+ export { getFileName } from '../utils/pathValidator.js';
6
+ import { createSharpInstance } from '../utils/sharp.js';
7
+ import { createStandardHelp } from '../utils/helpFormatter.js';
8
+ export function infoCommand(imageCmd) {
9
+ imageCmd
10
+ .command('info <input>')
11
+ .description('Display comprehensive image information and metadata')
12
+ .option('--json', 'Output information in JSON format')
13
+ .option('-v, --verbose', 'Verbose output with all available metadata')
14
+ .option('--help', 'Display help for info command')
15
+ .action(async (input, options) => {
16
+ if (options.help) {
17
+ createStandardHelp({
18
+ commandName: 'info',
19
+ emoji: 'ā„¹ļø',
20
+ description: 'Display detailed image information including dimensions, format, color space, file size, and metadata. Perfect for quick inspection.',
21
+ usage: ['info <input>', 'info <input> --json', 'info <input> -v'],
22
+ options: [
23
+ { flag: '--json', description: 'Output data in JSON format for scripting' },
24
+ { flag: '-v, --verbose', description: 'Show all available metadata including EXIF' }
25
+ ],
26
+ examples: [
27
+ { command: 'info photo.jpg', description: 'Show basic image information' },
28
+ { command: 'info image.png --json', description: 'Get data in JSON format' },
29
+ { command: 'info photo.jpg -v', description: 'Show all metadata including EXIF' },
30
+ { command: 'info picture.webp', description: 'Inspect WebP image details' }
31
+ ],
32
+ additionalSections: [
33
+ {
34
+ title: 'Information Displayed',
35
+ items: [
36
+ 'File name and path',
37
+ 'Format and MIME type',
38
+ 'Dimensions (width x height)',
39
+ 'File size (bytes, KB, MB)',
40
+ 'Color space (RGB, CMYK, grayscale)',
41
+ 'Bit depth per channel',
42
+ 'Number of channels',
43
+ 'Density/DPI',
44
+ 'Has alpha channel',
45
+ 'Orientation'
46
+ ]
47
+ },
48
+ {
49
+ title: 'Verbose Mode',
50
+ items: [
51
+ 'Complete EXIF metadata',
52
+ 'Camera make and model',
53
+ 'Capture settings (ISO, aperture, shutter)',
54
+ 'GPS coordinates',
55
+ 'Software information',
56
+ 'Color profile data',
57
+ 'Creation and modification dates'
58
+ ]
59
+ },
60
+ {
61
+ title: 'Use Cases',
62
+ items: [
63
+ 'Quick image inspection',
64
+ 'Verify file specifications',
65
+ 'Check format compatibility',
66
+ 'Batch metadata extraction (with --json)',
67
+ 'Prepare for processing',
68
+ 'Quality assessment'
69
+ ]
70
+ }
71
+ ],
72
+ tips: [
73
+ 'Use --json for scripting and automation',
74
+ 'Verbose mode shows camera EXIF data',
75
+ 'Pipe JSON output to jq for parsing',
76
+ 'Combine with batch to inspect multiple files'
77
+ ]
78
+ });
79
+ process.exit(0);
80
+ }
81
+ const spinner = ora('Loading image information...').start();
82
+ try {
83
+ const { inputFiles, errors } = validatePaths(input, undefined, {
84
+ allowedExtensions: IMAGE_EXTENSIONS,
85
+ });
86
+ if (errors.length > 0) {
87
+ spinner.fail(chalk.red('Validation failed:'));
88
+ errors.forEach(err => console.log(chalk.red(` āœ— ${err}`)));
89
+ process.exit(1);
90
+ }
91
+ if (inputFiles.length === 0) {
92
+ spinner.fail(chalk.red('No valid image files found'));
93
+ process.exit(1);
94
+ }
95
+ spinner.stop();
96
+ for (const inputPath of inputFiles) {
97
+ const fileName = getFileName(inputPath);
98
+ try {
99
+ const sharp = await createSharpInstance(inputPath);
100
+ const metadata = await sharp.metadata();
101
+ const fileStat = await stat(inputPath);
102
+ const imageInfo = {
103
+ file: {
104
+ name: fileName,
105
+ path: inputPath,
106
+ size: fileStat.size,
107
+ sizeFormatted: formatBytes(fileStat.size),
108
+ },
109
+ format: {
110
+ type: metadata.format || 'unknown',
111
+ width: metadata.width || 0,
112
+ height: metadata.height || 0,
113
+ space: metadata.space || 'unknown',
114
+ channels: metadata.channels || 0,
115
+ depth: metadata.depth || 'unknown',
116
+ density: metadata.density || null,
117
+ hasAlpha: metadata.hasAlpha || false,
118
+ orientation: metadata.orientation || 1,
119
+ },
120
+ exif: options.verbose ? metadata.exif || null : null,
121
+ icc: options.verbose ? metadata.icc || null : null,
122
+ iptc: options.verbose ? metadata.iptc || null : null,
123
+ xmp: options.verbose ? metadata.xmp || null : null,
124
+ };
125
+ if (options.json) {
126
+ console.log(JSON.stringify(imageInfo, null, 2));
127
+ }
128
+ else {
129
+ console.log();
130
+ console.log(chalk.cyan.bold(`ā„¹ļø ${fileName}`));
131
+ console.log(chalk.gray('━'.repeat(60)));
132
+ // File Information
133
+ console.log(chalk.yellow.bold('\nšŸ“ File Information'));
134
+ console.log(chalk.gray(` Path: ${inputPath}`));
135
+ console.log(chalk.gray(` Size: ${imageInfo.file.sizeFormatted}`));
136
+ // Format Information
137
+ console.log(chalk.yellow.bold('\nšŸ–¼ļø Image Details'));
138
+ console.log(chalk.gray(` Format: ${imageInfo.format.type.toUpperCase()}`));
139
+ console.log(chalk.gray(` Dimensions: ${imageInfo.format.width} Ɨ ${imageInfo.format.height} pixels`));
140
+ console.log(chalk.gray(` Aspect Ratio: ${(imageInfo.format.width / imageInfo.format.height).toFixed(2)}`));
141
+ console.log(chalk.gray(` Color Space: ${imageInfo.format.space}`));
142
+ console.log(chalk.gray(` Channels: ${imageInfo.format.channels}`));
143
+ console.log(chalk.gray(` Bit Depth: ${imageInfo.format.depth}`));
144
+ console.log(chalk.gray(` Alpha Channel: ${imageInfo.format.hasAlpha ? 'Yes' : 'No'}`));
145
+ if (imageInfo.format.density) {
146
+ console.log(chalk.gray(` Density: ${imageInfo.format.density} DPI`));
147
+ }
148
+ if (imageInfo.format.orientation !== 1) {
149
+ console.log(chalk.gray(` Orientation: ${imageInfo.format.orientation}`));
150
+ }
151
+ // EXIF Data (verbose mode)
152
+ if (options.verbose && metadata.exif) {
153
+ console.log(chalk.yellow.bold('\nšŸ“· EXIF Metadata'));
154
+ console.log(chalk.gray(' EXIF data is available (raw buffer)'));
155
+ console.log(chalk.gray(' Use a specialized EXIF tool to parse detailed camera data'));
156
+ }
157
+ console.log();
158
+ }
159
+ }
160
+ catch (error) {
161
+ console.error(chalk.red(`\nāœ— Failed to read ${fileName}`));
162
+ console.error(chalk.red(` Error: ${error.message}`));
163
+ process.exit(1);
164
+ }
165
+ }
166
+ if (!options.json) {
167
+ console.log(chalk.green.bold('āœ“ Information retrieved successfully!'));
168
+ }
169
+ }
170
+ catch (error) {
171
+ spinner.fail(chalk.red('Error reading image information'));
172
+ console.error(chalk.red(`Error: ${error.message}`));
173
+ process.exit(1);
174
+ }
175
+ });
176
+ }
177
+ function formatBytes(bytes) {
178
+ if (bytes === 0)
179
+ return '0 B';
180
+ const k = 1024;
181
+ const sizes = ['B', 'KB', 'MB', 'GB'];
182
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
183
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
184
+ }
185
+ //# 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":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDzC,eAAO,MAAM,IAAI,qBAAqB,CAAC;AACvC,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE/C"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqDzC,eAAO,MAAM,IAAI,qBAAqB,CAAC;AACvC,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyE/C"}
package/dist/register.js CHANGED
@@ -47,6 +47,8 @@ import { erodeCommand } from './commands/erode.js';
47
47
  import { booleanCommand } from './commands/boolean.js';
48
48
  import { linearCommand } from './commands/linear.js';
49
49
  import { recombCommand } from './commands/recomb.js';
50
+ import { compressCommand } from './commands/compress.js';
51
+ import { infoCommand } from './commands/info.js';
50
52
  export const name = '@mediaproc/image';
51
53
  export const version = '1.0.0';
52
54
  export function register(program) {
@@ -67,6 +69,7 @@ export function register(program) {
67
69
  // Format operations
68
70
  convertCommand(imageCmd);
69
71
  optimizeCommand(imageCmd);
72
+ compressCommand(imageCmd);
70
73
  // Color adjustments
71
74
  modulateCommand(imageCmd);
72
75
  gammaCommand(imageCmd);
@@ -111,5 +114,6 @@ export function register(program) {
111
114
  metadataCommand(imageCmd);
112
115
  // Information
113
116
  statsCommand(imageCmd);
117
+ infoCommand(imageCmd);
114
118
  }
115
119
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mediaproc/image",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "description": "Image processing plugin for mediaproc - powered by Sharp",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",