@mediaproc/image 1.3.6 → 1.4.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 (164) hide show
  1. package/README.md +4 -9
  2. package/dist/cli.js +9 -14
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/affine.d.ts +1 -1
  5. package/dist/commands/affine.d.ts.map +1 -1
  6. package/dist/commands/affine.js +79 -84
  7. package/dist/commands/affine.js.map +1 -1
  8. package/dist/commands/auto-enhance.d.ts.map +1 -1
  9. package/dist/commands/auto-enhance.js +3 -7
  10. package/dist/commands/auto-enhance.js.map +1 -1
  11. package/dist/commands/auto-orient.d.ts.map +1 -1
  12. package/dist/commands/auto-orient.js +2 -6
  13. package/dist/commands/auto-orient.js.map +1 -1
  14. package/dist/commands/batch.d.ts.map +1 -1
  15. package/dist/commands/batch.js +8 -13
  16. package/dist/commands/batch.js.map +1 -1
  17. package/dist/commands/blur.d.ts.map +1 -1
  18. package/dist/commands/blur.js +37 -18
  19. package/dist/commands/blur.js.map +1 -1
  20. package/dist/commands/boolean.d.ts.map +1 -1
  21. package/dist/commands/boolean.js +25 -16
  22. package/dist/commands/boolean.js.map +1 -1
  23. package/dist/commands/border.d.ts.map +1 -1
  24. package/dist/commands/border.js +21 -14
  25. package/dist/commands/border.js.map +1 -1
  26. package/dist/commands/clahe.d.ts.map +1 -1
  27. package/dist/commands/clahe.js +27 -13
  28. package/dist/commands/clahe.js.map +1 -1
  29. package/dist/commands/composite.d.ts.map +1 -1
  30. package/dist/commands/composite.js +26 -11
  31. package/dist/commands/composite.js.map +1 -1
  32. package/dist/commands/compress.d.ts.map +1 -1
  33. package/dist/commands/compress.js +57 -37
  34. package/dist/commands/compress.js.map +1 -1
  35. package/dist/commands/convert.d.ts.map +1 -1
  36. package/dist/commands/convert.js +41 -21
  37. package/dist/commands/convert.js.map +1 -1
  38. package/dist/commands/convolve.d.ts.map +1 -1
  39. package/dist/commands/convolve.js +38 -16
  40. package/dist/commands/convolve.js.map +1 -1
  41. package/dist/commands/crop.d.ts.map +1 -1
  42. package/dist/commands/crop.js +9 -15
  43. package/dist/commands/crop.js.map +1 -1
  44. package/dist/commands/dilate.d.ts.map +1 -1
  45. package/dist/commands/dilate.js +9 -15
  46. package/dist/commands/dilate.js.map +1 -1
  47. package/dist/commands/dominant-color.d.ts.map +1 -1
  48. package/dist/commands/dominant-color.js +4 -11
  49. package/dist/commands/dominant-color.js.map +1 -1
  50. package/dist/commands/erode.d.ts.map +1 -1
  51. package/dist/commands/erode.js +24 -16
  52. package/dist/commands/erode.js.map +1 -1
  53. package/dist/commands/extend.d.ts.map +1 -1
  54. package/dist/commands/extend.js +9 -15
  55. package/dist/commands/extend.js.map +1 -1
  56. package/dist/commands/extract.d.ts.map +1 -1
  57. package/dist/commands/extract.js +23 -10
  58. package/dist/commands/extract.js.map +1 -1
  59. package/dist/commands/flatten.d.ts.map +1 -1
  60. package/dist/commands/flatten.js +36 -17
  61. package/dist/commands/flatten.js.map +1 -1
  62. package/dist/commands/flip.d.ts.map +1 -1
  63. package/dist/commands/flip.js +10 -16
  64. package/dist/commands/flip.js.map +1 -1
  65. package/dist/commands/flop.d.ts.map +1 -1
  66. package/dist/commands/flop.js +9 -15
  67. package/dist/commands/flop.js.map +1 -1
  68. package/dist/commands/gamma.d.ts.map +1 -1
  69. package/dist/commands/gamma.js +10 -16
  70. package/dist/commands/gamma.js.map +1 -1
  71. package/dist/commands/grayscale.d.ts.map +1 -1
  72. package/dist/commands/grayscale.js +10 -16
  73. package/dist/commands/grayscale.js.map +1 -1
  74. package/dist/commands/grid.d.ts.map +1 -1
  75. package/dist/commands/grid.js +45 -19
  76. package/dist/commands/grid.js.map +1 -1
  77. package/dist/commands/info.d.ts.map +1 -1
  78. package/dist/commands/info.js +4 -9
  79. package/dist/commands/info.js.map +1 -1
  80. package/dist/commands/linear.d.ts.map +1 -1
  81. package/dist/commands/linear.js +9 -14
  82. package/dist/commands/linear.js.map +1 -1
  83. package/dist/commands/median.d.ts.map +1 -1
  84. package/dist/commands/median.js +41 -20
  85. package/dist/commands/median.js.map +1 -1
  86. package/dist/commands/metadata-cmd.d.ts.map +1 -1
  87. package/dist/commands/metadata-cmd.js +4 -10
  88. package/dist/commands/metadata-cmd.js.map +1 -1
  89. package/dist/commands/mirror.d.ts.map +1 -1
  90. package/dist/commands/mirror.js +26 -11
  91. package/dist/commands/mirror.js.map +1 -1
  92. package/dist/commands/modulate.d.ts.map +1 -1
  93. package/dist/commands/modulate.js +10 -16
  94. package/dist/commands/modulate.js.map +1 -1
  95. package/dist/commands/negate.d.ts.map +1 -1
  96. package/dist/commands/negate.js +10 -16
  97. package/dist/commands/negate.js.map +1 -1
  98. package/dist/commands/normalize.d.ts.map +1 -1
  99. package/dist/commands/normalize.js +10 -16
  100. package/dist/commands/normalize.js.map +1 -1
  101. package/dist/commands/optimize.d.ts.map +1 -1
  102. package/dist/commands/optimize.js +62 -24
  103. package/dist/commands/optimize.js.map +1 -1
  104. package/dist/commands/palette.d.ts.map +1 -1
  105. package/dist/commands/palette.js +47 -18
  106. package/dist/commands/palette.js.map +1 -1
  107. package/dist/commands/pixelate.d.ts.map +1 -1
  108. package/dist/commands/pixelate.js +27 -18
  109. package/dist/commands/pixelate.js.map +1 -1
  110. package/dist/commands/recomb.d.ts.map +1 -1
  111. package/dist/commands/recomb.js +39 -19
  112. package/dist/commands/recomb.js.map +1 -1
  113. package/dist/commands/resize.d.ts.map +1 -1
  114. package/dist/commands/resize.js +32 -18
  115. package/dist/commands/resize.js.map +1 -1
  116. package/dist/commands/rotate.d.ts.map +1 -1
  117. package/dist/commands/rotate.js +40 -20
  118. package/dist/commands/rotate.js.map +1 -1
  119. package/dist/commands/sepia.d.ts.map +1 -1
  120. package/dist/commands/sepia.js +46 -13
  121. package/dist/commands/sepia.js.map +1 -1
  122. package/dist/commands/sharpen.d.ts.map +1 -1
  123. package/dist/commands/sharpen.js +39 -19
  124. package/dist/commands/sharpen.js.map +1 -1
  125. package/dist/commands/smart-crop.d.ts.map +1 -1
  126. package/dist/commands/smart-crop.js +4 -9
  127. package/dist/commands/smart-crop.js.map +1 -1
  128. package/dist/commands/split.d.ts.map +1 -1
  129. package/dist/commands/split.js +44 -13
  130. package/dist/commands/split.js.map +1 -1
  131. package/dist/commands/stack.d.ts.map +1 -1
  132. package/dist/commands/stack.js +48 -33
  133. package/dist/commands/stack.js.map +1 -1
  134. package/dist/commands/stats.d.ts.map +1 -1
  135. package/dist/commands/stats.js +4 -10
  136. package/dist/commands/stats.js.map +1 -1
  137. package/dist/commands/threshold.d.ts.map +1 -1
  138. package/dist/commands/threshold.js +21 -17
  139. package/dist/commands/threshold.js.map +1 -1
  140. package/dist/commands/thumbnail.d.ts.map +1 -1
  141. package/dist/commands/thumbnail.js +38 -19
  142. package/dist/commands/thumbnail.js.map +1 -1
  143. package/dist/commands/tint.d.ts.map +1 -1
  144. package/dist/commands/tint.js +37 -19
  145. package/dist/commands/tint.js.map +1 -1
  146. package/dist/commands/trim.d.ts.map +1 -1
  147. package/dist/commands/trim.js +22 -18
  148. package/dist/commands/trim.js.map +1 -1
  149. package/dist/commands/unflatten.d.ts.map +1 -1
  150. package/dist/commands/unflatten.js +23 -19
  151. package/dist/commands/unflatten.js.map +1 -1
  152. package/dist/commands/vignette.d.ts.map +1 -1
  153. package/dist/commands/vignette.js +30 -13
  154. package/dist/commands/vignette.js.map +1 -1
  155. package/dist/commands/watermark.d.ts.map +1 -1
  156. package/dist/commands/watermark.js +34 -17
  157. package/dist/commands/watermark.js.map +1 -1
  158. package/dist/register.d.ts +1 -1
  159. package/dist/register.d.ts.map +1 -1
  160. package/dist/register.js +3 -12
  161. package/dist/register.js.map +1 -1
  162. package/dist/utils/colorUtils.js +1 -1
  163. package/dist/utils/colorUtils.js.map +1 -1
  164. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
- import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp, showPluginBranding } from '@mediaproc/core';
3
+ import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp } from '@mediaproc/core';
4
4
  import { createSharpInstance } from '../utils/sharp.js';
5
5
  import path from 'node:path';
6
6
  export function erodeCommand(imageCmd) {
@@ -8,9 +8,9 @@ export function erodeCommand(imageCmd) {
8
8
  .command('erode <input>')
9
9
  .description('Erode image (expand dark regions)')
10
10
  .option('-o, --output <path>', 'Output file path')
11
- .option('-q, --quality <quality>', 'Quality (1-100)', parseInt, 90)
11
+ .option('-q, --quality <quality>', 'Quality (1-100)', parseInt)
12
12
  .option('--dry-run', 'Show what would be done without executing')
13
- .option('--explain', 'Explain the proper flow of this command in detail (Coming Soon...)')
13
+ .option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
14
14
  .option('-v, --verbose', 'Verbose output');
15
15
  cmd.addHelpText('after', () => {
16
16
  return '\n' +
@@ -23,7 +23,7 @@ export function erodeCommand(imageCmd) {
23
23
  { flag: '-o, --output <path>', description: 'Output file path (default: <input>-eroded.<ext>)' },
24
24
  { flag: '-q, --quality <quality>', description: 'Output quality 1-100 (default: 90)' },
25
25
  { flag: '--dry-run', description: 'Preview changes without executing' },
26
- { flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail (Coming Soon...)' },
26
+ { flag: '--explain [mode]', description: 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.' },
27
27
  { flag: '-v, --verbose', description: 'Show detailed output' }
28
28
  ],
29
29
  examples: [
@@ -102,7 +102,7 @@ export function erodeCommand(imageCmd) {
102
102
  if (options.verbose) {
103
103
  console.log(chalk.blue('\nConfiguration:'));
104
104
  console.log(chalk.dim(` Operation: Morphological erosion (3x3 kernel)`));
105
- console.log(chalk.dim(` Quality: ${options.quality || 90}`));
105
+ console.log(chalk.dim(` Quality: ${options.quality}`));
106
106
  }
107
107
  if (options.dryRun) {
108
108
  console.log(chalk.yellow('\nDry run mode - no changes will be made\n'));
@@ -111,13 +111,8 @@ export function erodeCommand(imageCmd) {
111
111
  const outputPath = outputPaths.get(inputFile);
112
112
  console.log(chalk.dim(` ${index + 1}. ${getFileName(inputFile)} → ${getFileName(outputPath)}`));
113
113
  });
114
- showPluginBranding('Image', '../../package.json');
115
114
  return;
116
115
  }
117
- if (options.explain) {
118
- console.log(chalk.gray('Explain mode is not yet available.'));
119
- console.log(chalk.cyan('Planned for v0.8.x.'));
120
- }
121
116
  let successCount = 0;
122
117
  let failCount = 0;
123
118
  // Erosion kernel (3x3 matrix)
@@ -133,15 +128,29 @@ export function erodeCommand(imageCmd) {
133
128
  try {
134
129
  const pipeline = createSharpInstance(inputFile).convolve(erodeKernel);
135
130
  const outputExt = path.extname(outputPath).toLowerCase();
131
+ const quality = typeof options.quality === 'number' ? options.quality : 90;
136
132
  if (outputExt === '.jpg' || outputExt === '.jpeg') {
137
- pipeline.jpeg({ quality: options.quality || 90 });
138
- }
139
- else if (outputExt === '.png') {
140
- pipeline.png({ quality: options.quality || 90 });
133
+ pipeline.jpeg({ quality });
141
134
  }
142
135
  else if (outputExt === '.webp') {
143
- pipeline.webp({ quality: options.quality || 90 });
136
+ pipeline.webp({ quality });
137
+ }
138
+ else if (outputExt === '.avif') {
139
+ pipeline.avif({ quality });
140
+ }
141
+ else if (outputExt === '.png') {
142
+ // PNG uses compressionLevel (0-9), map quality 1-100 to 9-0
143
+ let compressionLevel = 6;
144
+ if (typeof options.quality === 'number') {
145
+ compressionLevel = Math.round(9 - (quality / 100) * 9);
146
+ if (compressionLevel < 0)
147
+ compressionLevel = 0;
148
+ if (compressionLevel > 9)
149
+ compressionLevel = 9;
150
+ }
151
+ pipeline.png({ compressionLevel });
144
152
  }
153
+ // For other formats, do not set quality
145
154
  await pipeline.toFile(outputPath);
146
155
  spinner.succeed(chalk.green(`✓ ${fileName} processed`));
147
156
  successCount++;
@@ -159,7 +168,6 @@ export function erodeCommand(imageCmd) {
159
168
  if (failCount > 0) {
160
169
  console.log(chalk.red(` ✗ Failed: ${failCount}`));
161
170
  }
162
- showPluginBranding('Image', '../../package.json');
163
171
  }
164
172
  catch (error) {
165
173
  spinner.fail(chalk.red('Failed to apply erosion'));
@@ -1 +1 @@
1
- {"version":3,"file":"erode.js","sourceRoot":"","sources":["../../src/commands/erode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"erode.js","sourceRoot":"","sources":["../../src/commands/erode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAqLrD"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA+KrD"}
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
- import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp, showPluginBranding } from '@mediaproc/core';
3
+ import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp } from '@mediaproc/core';
4
4
  import { createSharpInstance } from '../utils/sharp.js';
5
5
  import path from 'node:path';
6
6
  export function extendCommand(imageCmd) {
@@ -14,13 +14,13 @@ export function extendCommand(imageCmd) {
14
14
  .option('--all <pixels>', 'All sides padding in pixels', parseInt)
15
15
  .option('--background <color>', 'Background color (default: white)', 'white')
16
16
  .option('-o, --output <path>', 'Output file path')
17
- .option('-q, --quality <quality>', 'Quality (1-100)', parseInt, 90)
17
+ .option('-q, --quality <quality>', 'Quality (1-100)', parseInt)
18
18
  .option('--dry-run', 'Show what would be done without executing')
19
19
  .option('-v, --verbose', 'Verbose output')
20
- .option('--explain', 'Explain the proper flow of this command in detail (Coming Soon...)')
20
+ .option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
21
21
  .option('--help', 'Display help for extend command')
22
22
  .action(async (input, options) => {
23
- if (options.help) {
23
+ if (options.help || !input) {
24
24
  createStandardHelp({
25
25
  commandName: 'extend',
26
26
  emoji: '🖼️',
@@ -34,9 +34,9 @@ export function extendCommand(imageCmd) {
34
34
  { flag: '--right <pixels>', description: 'Right padding in pixels' },
35
35
  { flag: '--background <color>', description: 'Background color (default: white, accepts hex/rgb/names)' },
36
36
  { flag: '-o, --output <path>', description: 'Output file path (default: <input>-extended.<ext>)' },
37
- { flag: '-q, --quality <quality>', description: 'Output quality 1-100 (default: 90)' },
37
+ { flag: '-q, --quality <quality>', description: 'Output quality (1-100). Optional. Applies to JPEG/WEBP/AVIF. For PNG, maps to compression level (higher quality = lower compression). Ignored for other formats.' },
38
38
  { flag: '--dry-run', description: 'Preview changes without executing' },
39
- { flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail (Coming Soon...)' },
39
+ { flag: '--explain [mode]', description: 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.' },
40
40
  { flag: '-v, --verbose', description: 'Show detailed output' }
41
41
  ],
42
42
  examples: [
@@ -110,13 +110,8 @@ export function extendCommand(imageCmd) {
110
110
  const outputPath = outputPaths.get(inputFile);
111
111
  console.log(chalk.dim(` ${index + 1}. ${getFileName(inputFile)} → ${getFileName(outputPath)}`));
112
112
  });
113
- showPluginBranding('Image', '../../package.json');
114
113
  return;
115
114
  }
116
- if (options.explain) {
117
- console.log(chalk.gray('Explain mode is not yet available.'));
118
- console.log(chalk.cyan('Planned for v0.8.x.'));
119
- }
120
115
  let successCount = 0;
121
116
  let failCount = 0;
122
117
  for (const [index, inputFile] of inputFiles.entries()) {
@@ -133,13 +128,13 @@ export function extendCommand(imageCmd) {
133
128
  });
134
129
  const outputExt = path.extname(outputPath).toLowerCase();
135
130
  if (outputExt === '.jpg' || outputExt === '.jpeg') {
136
- pipeline.jpeg({ quality: options.quality || 90 });
131
+ pipeline.jpeg({ quality: options.quality });
137
132
  }
138
133
  else if (outputExt === '.png') {
139
- pipeline.png({ quality: options.quality || 90 });
134
+ pipeline.png({ quality: options.quality });
140
135
  }
141
136
  else if (outputExt === '.webp') {
142
- pipeline.webp({ quality: options.quality || 90 });
137
+ pipeline.webp({ quality: options.quality });
143
138
  }
144
139
  await pipeline.toFile(outputPath);
145
140
  spinner.succeed(chalk.green(`✓ ${fileName} extended`));
@@ -158,7 +153,6 @@ export function extendCommand(imageCmd) {
158
153
  if (failCount > 0) {
159
154
  console.log(chalk.red(` ✗ Failed: ${failCount}`));
160
155
  }
161
- showPluginBranding('Image', '../../package.json');
162
156
  }
163
157
  catch (error) {
164
158
  spinner.fail(chalk.red('Processing failed'));
@@ -1 +1 @@
1
- {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA4MtD"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAsNtD"}
@@ -1,7 +1,8 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
- import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp, showPluginBranding } from '@mediaproc/core';
3
+ import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp } from '@mediaproc/core';
4
4
  import { createSharpInstance } from '../utils/sharp.js';
5
+ import path from 'node:path';
5
6
  export function extractCommand(imageCmd) {
6
7
  imageCmd
7
8
  .command('extract <input>')
@@ -12,12 +13,13 @@ export function extractCommand(imageCmd) {
12
13
  .option('-w, --width <pixels>', 'Width for region extraction', parseInt)
13
14
  .option('-h, --height <pixels>', 'Height for region extraction', parseInt)
14
15
  .option('-o, --output <path>', 'Output file path')
16
+ .option('-q, --quality <quality>', 'Quality (1-100)', parseInt)
15
17
  .option('--dry-run', 'Show what would be done without executing')
16
18
  .option('-v, --verbose', 'Verbose output')
17
- .option('--explain', 'Explain the proper flow of this command in detail (Coming Soon...)')
19
+ .option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
18
20
  .option('--help', 'Display help for extract command')
19
21
  .action(async (input, options) => {
20
- if (options.help) {
22
+ if (options.help || !input) {
21
23
  createStandardHelp({
22
24
  commandName: 'extract',
23
25
  emoji: '✂️',
@@ -31,7 +33,8 @@ export function extractCommand(imageCmd) {
31
33
  { flag: '-h, --height <pixels>', description: 'Height for region extraction' },
32
34
  { flag: '-o, --output <path>', description: 'Output file path' },
33
35
  { flag: '--dry-run', description: 'Preview changes without executing' },
34
- { flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail (Coming Soon...)' },
36
+ { flag: '-q, --quality <quality>', description: 'Output quality (1-100). Optional. Applies to JPEG/WEBP/AVIF. For PNG, maps to compression level (higher quality = lower compression). Ignored for other formats.' },
37
+ { flag: '--explain [mode]', description: 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.' },
35
38
  { flag: '-v, --verbose', description: 'Show detailed output' }
36
39
  ],
37
40
  examples: [
@@ -111,13 +114,8 @@ export function extractCommand(imageCmd) {
111
114
  else {
112
115
  console.log(chalk.dim(` Region: ${options.left},${options.top} ${options.width}x${options.height}`));
113
116
  }
114
- showPluginBranding('Image', '../../package.json');
115
117
  return;
116
118
  }
117
- if (options.explain) {
118
- console.log(chalk.gray('Explain mode is not yet available.'));
119
- console.log(chalk.cyan('Planned for v0.8.x.'));
120
- }
121
119
  // Validate channel or region options once before processing
122
120
  if (options.channel) {
123
121
  const channelMap = {
@@ -167,6 +165,22 @@ export function extractCommand(imageCmd) {
167
165
  height: options.height
168
166
  });
169
167
  }
168
+ const outputExt = path.extname(outputPath).toLowerCase();
169
+ if (options.quality !== undefined) {
170
+ if (outputExt === '.jpg' || outputExt === '.jpeg') {
171
+ pipeline = pipeline.jpeg({ quality: options.quality });
172
+ }
173
+ else if (outputExt === '.webp') {
174
+ pipeline = pipeline.webp({ quality: options.quality });
175
+ }
176
+ else if (outputExt === '.avif') {
177
+ pipeline = pipeline.avif({ quality: options.quality });
178
+ }
179
+ else if (outputExt === '.png') {
180
+ pipeline = pipeline.png({ compressionLevel: options.quality });
181
+ }
182
+ // Ignore for other formats
183
+ }
170
184
  await pipeline.toFile(outputPath);
171
185
  spinner.succeed(chalk.green(`✓ ${fileName} extracted`));
172
186
  successCount++;
@@ -184,7 +198,6 @@ export function extractCommand(imageCmd) {
184
198
  if (failCount > 0) {
185
199
  console.log(chalk.red(` ✗ Failed: ${failCount}`));
186
200
  }
187
- showPluginBranding('Image', '../../package.json');
188
201
  }
189
202
  catch (error) {
190
203
  spinner.fail(chalk.red('Processing failed'));
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3I,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAMxD,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,QAAQ;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,yBAAyB,EAAE,0CAA0C,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,EAAE,QAAQ,CAAC;SACvE,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,EAAE,QAAQ,CAAC;SACtE,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,QAAQ,CAAC;SACvE,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACzC,MAAM,CAAC,WAAW,EAAE,oEAAoE,CAAC;SACzF,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA+B,EAAE,EAAE;QAC/D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,kBAAkB,CAAC;gBACjB,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,0IAA0I;gBACvJ,KAAK,EAAE,CAAC,+BAA+B,EAAE,+DAA+D,EAAE,iCAAiC,CAAC;gBAC5I,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,gDAAgD,EAAE;oBAClG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,kCAAkC,EAAE;oBAC5E,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,kCAAkC,EAAE;oBAC3E,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,6BAA6B,EAAE;oBAC5E,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,8BAA8B,EAAE;oBAC9E,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE;oBAChE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBACvE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,0FAA0F,EAAE;oBAC9H,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE;iBAC/D;gBACD,QAAQ,EAAE;oBACR,EAAE,OAAO,EAAE,iCAAiC,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACvF,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,oCAAoC,EAAE;oBACnG,EAAE,OAAO,EAAE,iEAAiE,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBACrH,EAAE,OAAO,EAAE,sDAAsD,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACjH;gBACD,kBAAkB,EAAE;oBAClB;wBACE,KAAK,EAAE,oBAAoB;wBAC3B,KAAK,EAAE;4BACL,iCAAiC;4BACjC,qCAAqC;4BACrC,mCAAmC;4BACnC,4CAA4C;yBAC7C;qBACF;oBACD;wBACE,KAAK,EAAE,WAAW;wBAClB,KAAK,EAAE;4BACL,sCAAsC;4BACtC,mCAAmC;4BACnC,qCAAqC;4BACrC,iCAAiC;4BACjC,kCAAkC;yBACnC;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,8CAA8C;oBAC9C,6CAA6C;oBAC7C,6CAA6C;oBAC7C,oDAAoD;iBACrD;aACF,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7C,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC9E,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE;gBAC7D,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY;aAC/D,CAAC,CAAC;YAEH,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC;gBAC/D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxG,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;gBAC/E,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxG,CAAC;gBACD,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAA;gBAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;YAChD,CAAC;YAED,4DAA4D;YAC5D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG;oBACjB,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;iBACT,CAAC;gBACF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;gBAC5E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;oBAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC9E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;gBAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,oBAAoB;YACpB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;oBAE/C,IAAI,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;oBAE9C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBACpB,wBAAwB;wBACxB,MAAM,UAAU,GAAG;4BACjB,GAAG,EAAE,CAAC;4BACN,KAAK,EAAE,CAAC;4BACR,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,CAAC;yBACT,CAAC;wBACF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;wBAE5E,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;4BACvB,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;wBACjE,CAAC;6BAAM,CAAC;4BACN,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,YAA6B,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,iBAAiB;wBACjB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;4BAC1B,IAAI,EAAE,OAAO,CAAC,IAAK;4BACnB,GAAG,EAAE,OAAO,CAAC,GAAI;4BACjB,KAAK,EAAE,OAAO,CAAC,KAAM;4BACrB,MAAM,EAAE,OAAO,CAAC,MAAO;yBACxB,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAElC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;oBACxD,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;wBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;oBACD,SAAS,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAEpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEvH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC/C,QAAQ;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,yBAAyB,EAAE,0CAA0C,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,EAAE,QAAQ,CAAC;SACvE,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,EAAE,QAAQ,CAAC;SACtE,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,QAAQ,CAAC;SACvE,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,yBAAyB,EAAE,iBAAiB,EAAE,QAAQ,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACzC,MAAM,CAAC,kBAAkB,EAAE,wLAAwL,CAAC;SACpN,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA+B,EAAE,EAAE;QAC/D,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,kBAAkB,CAAC;gBACjB,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,0IAA0I;gBACvJ,KAAK,EAAE,CAAC,+BAA+B,EAAE,+DAA+D,EAAE,iCAAiC,CAAC;gBAC5I,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,gDAAgD,EAAE;oBAClG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,kCAAkC,EAAE;oBAC5E,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,kCAAkC,EAAE;oBAC3E,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,6BAA6B,EAAE;oBAC5E,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,8BAA8B,EAAE;oBAC9E,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE;oBAChE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBACvE,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,kKAAkK,EAAE;oBACpN,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,wLAAwL,EAAE;oBACnO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE;iBAC/D;gBACD,QAAQ,EAAE;oBACR,EAAE,OAAO,EAAE,iCAAiC,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACvF,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,oCAAoC,EAAE;oBACnG,EAAE,OAAO,EAAE,iEAAiE,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBACrH,EAAE,OAAO,EAAE,sDAAsD,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBACjH;gBACD,kBAAkB,EAAE;oBAClB;wBACE,KAAK,EAAE,oBAAoB;wBAC3B,KAAK,EAAE;4BACL,iCAAiC;4BACjC,qCAAqC;4BACrC,mCAAmC;4BACnC,4CAA4C;yBAC7C;qBACF;oBACD;wBACE,KAAK,EAAE,WAAW;wBAClB,KAAK,EAAE;4BACL,sCAAsC;4BACtC,mCAAmC;4BACnC,qCAAqC;4BACrC,iCAAiC;4BACjC,kCAAkC;yBACnC;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,8CAA8C;oBAC9C,6CAA6C;oBAC7C,6CAA6C;oBAC7C,oDAAoD;iBACrD;aACF,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7C,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC9E,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE;gBAC7D,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY;aAC/D,CAAC,CAAC;YAEH,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC;gBAC/D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxG,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;gBAC/E,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxG,CAAC;gBACD,OAAO;YACT,CAAC;YAED,4DAA4D;YAC5D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG;oBACjB,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;iBACT,CAAC;gBACF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;gBAC5E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;oBAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC9E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;gBAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,oBAAoB;YACpB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;oBAE/C,IAAI,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;oBAE9C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBACpB,wBAAwB;wBACxB,MAAM,UAAU,GAAG;4BACjB,GAAG,EAAE,CAAC;4BACN,KAAK,EAAE,CAAC;4BACR,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,CAAC;yBACT,CAAC;wBACF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;wBAE5E,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;4BACvB,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;wBACjE,CAAC;6BAAM,CAAC;4BACN,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,YAA6B,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,iBAAiB;wBACjB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;4BAC1B,IAAI,EAAE,OAAO,CAAC,IAAK;4BACnB,GAAG,EAAE,OAAO,CAAC,GAAI;4BACjB,KAAK,EAAE,OAAO,CAAC,KAAM;4BACrB,MAAM,EAAE,OAAO,CAAC,MAAO;yBACxB,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;wBAClC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;4BAClD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBACzD,CAAC;6BAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;4BACjC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBACzD,CAAC;6BAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;4BACjC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBACzD,CAAC;6BAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;4BAChC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBACjE,CAAC;wBACD,2BAA2B;oBAC7B,CAAC;oBAED,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAElC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;oBACxD,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;wBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;oBACD,SAAS,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAyKtD"}
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAwLtD"}
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
- import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, showPluginBranding, createStandardHelp } from '@mediaproc/core';
3
+ import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp } from '@mediaproc/core';
4
4
  import { createSharpInstance } from '../utils/sharp.js';
5
5
  import path from 'node:path';
6
6
  export function flattenCommand(imageCmd) {
@@ -9,9 +9,9 @@ export function flattenCommand(imageCmd) {
9
9
  .description('Flatten alpha transparency onto background color')
10
10
  .option('--background <color>', 'Background color as hex (default: #ffffff)', '#ffffff')
11
11
  .option('-o, --output <path>', 'Output file path')
12
- .option('-q, --quality <quality>', 'Quality (1-100)', parseInt, 90)
12
+ .option('-q, --quality <quality>', 'Quality (1-100)', parseInt)
13
13
  .option('--dry-run', 'Show what would be done without executing')
14
- .option('--explain', 'Explain the proper flow of this command in detail (Coming Soon...)')
14
+ .option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
15
15
  .option('-v, --verbose', 'Verbose output');
16
16
  cmd.addHelpText('after', () => {
17
17
  return '\n' + createStandardHelp({
@@ -22,9 +22,9 @@ export function flattenCommand(imageCmd) {
22
22
  options: [
23
23
  { flag: '--background <color>', description: 'Background color as hex (default: #ffffff white)' },
24
24
  { flag: '-o, --output <path>', description: 'Output file path (default: <input>-flat.<ext>)' },
25
- { flag: '-q, --quality <quality>', description: 'Output quality 1-100 (default: 90)' },
25
+ { flag: '-q, --quality <quality>', description: 'Output quality 1-100 (optional, only applies to JPEG, WEBP, AVIF; for PNG, mapped to compression level)' },
26
26
  { flag: '--dry-run', description: 'Preview changes without executing' },
27
- { flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail (Coming Soon...)' },
27
+ { flag: '--explain [mode]', description: 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.' },
28
28
  { flag: '-v, --verbose', description: 'Show detailed output' }
29
29
  ],
30
30
  examples: [
@@ -94,7 +94,9 @@ export function flattenCommand(imageCmd) {
94
94
  if (options.verbose) {
95
95
  console.log(chalk.blue('\nConfiguration:'));
96
96
  console.log(chalk.dim(` Background: ${bgColor} (R:${r}, G:${g}, B:${b})`));
97
- console.log(chalk.dim(` Quality: ${options.quality || 90}`));
97
+ if (typeof options.quality !== 'undefined') {
98
+ console.log(chalk.dim(` Quality: ${options.quality}`));
99
+ }
98
100
  }
99
101
  if (options.dryRun) {
100
102
  console.log(chalk.yellow('\nDry run mode - no changes will be made\n'));
@@ -103,13 +105,8 @@ export function flattenCommand(imageCmd) {
103
105
  const outputPath = outputPaths.get(inputFile);
104
106
  console.log(chalk.dim(` ${index + 1}. ${getFileName(inputFile)} → ${getFileName(outputPath)}`));
105
107
  });
106
- showPluginBranding('Image', '../../package.json');
107
108
  return;
108
109
  }
109
- if (options.explain) {
110
- console.log(chalk.gray('Explain mode is not yet available.'));
111
- console.log(chalk.cyan('Planned for v0.8.x.'));
112
- }
113
110
  let successCount = 0;
114
111
  let failCount = 0;
115
112
  for (const [index, inputFile] of inputFiles.entries()) {
@@ -122,14 +119,37 @@ export function flattenCommand(imageCmd) {
122
119
  });
123
120
  const outputExt = path.extname(outputPath).toLowerCase();
124
121
  if (outputExt === '.jpg' || outputExt === '.jpeg') {
125
- pipeline.jpeg({ quality: options.quality || 90 });
126
- }
127
- else if (outputExt === '.png') {
128
- pipeline.png({ quality: options.quality || 90 });
122
+ if (typeof options.quality === 'number') {
123
+ pipeline.jpeg({ quality: options.quality });
124
+ }
125
+ else {
126
+ pipeline.jpeg();
127
+ }
129
128
  }
130
129
  else if (outputExt === '.webp') {
131
- pipeline.webp({ quality: options.quality || 90 });
130
+ if (typeof options.quality === 'number') {
131
+ pipeline.webp({ quality: options.quality });
132
+ }
133
+ else {
134
+ pipeline.webp();
135
+ }
136
+ }
137
+ else if (outputExt === '.avif') {
138
+ if (typeof options.quality === 'number') {
139
+ pipeline.avif({ quality: options.quality });
140
+ }
141
+ else {
142
+ pipeline.avif();
143
+ }
144
+ }
145
+ else if (outputExt === '.png') {
146
+ let compressionLevel = 9;
147
+ if (typeof options.quality === 'number') {
148
+ compressionLevel = Math.round((100 - Math.max(1, Math.min(100, options.quality))) * 9 / 99);
149
+ }
150
+ pipeline.png({ compressionLevel });
132
151
  }
152
+ // For other formats, do not set quality
133
153
  await pipeline.toFile(outputPath);
134
154
  spinner.succeed(chalk.green(`✓ ${fileName} processed`));
135
155
  successCount++;
@@ -147,7 +167,6 @@ export function flattenCommand(imageCmd) {
147
167
  if (failCount > 0) {
148
168
  console.log(chalk.red(` ✗ Failed: ${failCount}`));
149
169
  }
150
- showPluginBranding('Image', '../../package.json');
151
170
  }
152
171
  catch (error) {
153
172
  spinner.fail(chalk.red('Failed to flatten image'));
@@ -1 +1 @@
1
- {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3I,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,MAAM,GAAG,GAAG,QAAQ;SACjB,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,EAAE,SAAS,CAAC;SACvF,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,yBAAyB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAAC;SAClE,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,WAAW,EAAE,oEAAoE,CAAC;SACzF,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAE7C,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE;QAC5B,OAAO,IAAI,GAAG,kBAAkB,CAAC;YAC/B,WAAW,EAAE,SAAS;YACtB,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,uIAAuI;YACpJ,KAAK,EAAE,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;YAClE,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,kDAAkD,EAAE;gBACjG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,gDAAgD,EAAE;gBAC9F,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,oCAAoC,EAAE;gBACtF,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBACvE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,0FAA0F,EAAE;gBAC9H,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE;aAC/D;YACD,QAAQ,EAAE;gBACR,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBAC7E,EAAE,OAAO,EAAE,wCAAwC,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACxF,EAAE,OAAO,EAAE,wDAAwD,EAAE,WAAW,EAAE,kCAAkC,EAAE;aACvH;YACD,kBAAkB,EAAE;gBAClB;oBACE,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE;wBACL,uCAAuC;wBACvC,+DAA+D;wBAC/D,uDAAuD;wBACvD,0CAA0C;qBAC3C;iBACF;gBACD;oBACE,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE;wBACL,2BAA2B;wBAC3B,iBAAiB;wBACjB,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,wBAAwB;qBACzB;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,sCAAsC;gBACtC,6BAA6B;gBAC7B,kDAAkD;gBAClD,0CAA0C;aAC3C;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAuB,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE9C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC9E,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE;gBAC7D,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC;YAE/E,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;gBACzE,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;oBACtC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,UAAW,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpG,CAAC,CAAC,CAAC;gBACH,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAA;gBAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;YAChD,CAAC;YAED,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;gBAExC,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,KAAK,CAAC,CAAC;gBAE9E,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;wBACtD,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;qBACxB,CAAC,CAAC;oBAEH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;oBACpD,CAAC;yBAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;wBAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnD,CAAC;yBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;oBACpD,CAAC;oBAED,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAElC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;oBACxD,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACjD,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;wBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;oBACD,SAAS,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACnD,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;AACL,CAAC"}
1
+ {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEvH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,MAAM,GAAG,GAAG,QAAQ;SACjB,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,EAAE,SAAS,CAAC;SACvF,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,yBAAyB,EAAE,iBAAiB,EAAE,QAAQ,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,kBAAkB,EAAE,wLAAwL,CAAC;SACpN,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAE7C,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE;QAC5B,OAAO,IAAI,GAAG,kBAAkB,CAAC;YAC/B,WAAW,EAAE,SAAS;YACtB,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,uIAAuI;YACpJ,KAAK,EAAE,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;YAClE,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,kDAAkD,EAAE;gBACjG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,gDAAgD,EAAE;gBAC9F,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,yGAAyG,EAAE;gBAC3J,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBACvE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,wLAAwL,EAAE;gBACnO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE;aAC/D;YACD,QAAQ,EAAE;gBACR,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBAC7E,EAAE,OAAO,EAAE,wCAAwC,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACxF,EAAE,OAAO,EAAE,wDAAwD,EAAE,WAAW,EAAE,kCAAkC,EAAE;aACvH;YACD,kBAAkB,EAAE;gBAClB;oBACE,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE;wBACL,uCAAuC;wBACvC,+DAA+D;wBAC/D,uDAAuD;wBACvD,0CAA0C;qBAC3C;iBACF;gBACD;oBACE,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE;wBACL,2BAA2B;wBAC3B,iBAAiB;wBACjB,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,wBAAwB;qBACzB;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,sCAAsC;gBACtC,6BAA6B;gBAC7B,kDAAkD;gBAClD,0CAA0C;aAC3C;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAuB,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEpD,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE9C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC9E,iBAAiB,EAAE,gBAAgB;aACpC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE;gBAC7D,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC;YAE/E,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5E,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;gBACzE,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;oBACtC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,UAAW,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpG,CAAC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;gBAExC,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,KAAK,CAAC,CAAC;gBAE9E,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;wBACtD,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;qBACxB,CAAC,CAAC;oBAEH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBAClD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;4BACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC9C,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;yBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBACjC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;4BACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC9C,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;yBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBACjC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;4BACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC9C,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;yBAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;wBAChC,IAAI,gBAAgB,GAAG,CAAC,CAAC;wBACzB,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;4BACxC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;wBAC9F,CAAC;wBACD,QAAQ,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBACrC,CAAC;oBACD,wCAAwC;oBAExC,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAElC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;oBACxD,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACjD,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;wBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;oBACD,SAAS,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACnD,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;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"flip.d.ts","sourceRoot":"","sources":["../../src/commands/flip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA4JnD"}
1
+ {"version":3,"file":"flip.d.ts","sourceRoot":"","sources":["../../src/commands/flip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAsJnD"}
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import ora from 'ora';
3
- import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp, showPluginBranding } from '@mediaproc/core';
3
+ import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName, createStandardHelp } from '@mediaproc/core';
4
4
  import { createSharpInstance } from '../utils/sharp.js';
5
5
  import path from 'node:path';
6
6
  export function flipCommand(imageCmd) {
@@ -11,13 +11,13 @@ export function flipCommand(imageCmd) {
11
11
  .option('--vertical', 'Flip vertically (mirror top-bottom)')
12
12
  .option('--both', 'Flip both horizontally and vertically (rotate 180°)')
13
13
  .option('-o, --output <path>', 'Output file path')
14
- .option('-q, --quality <quality>', 'Quality (1-100)', parseInt, 90)
14
+ .option('-q, --quality <quality>', 'Quality (1-100)', parseInt)
15
15
  .option('--dry-run', 'Show what would be done without executing')
16
- .option('--explain', 'Explain the proper flow of this command in detail (Coming Soon...)')
16
+ .option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
17
17
  .option('-v, --verbose', 'Verbose output')
18
18
  .option('--help', 'Display help for flip command')
19
19
  .action(async (input, options) => {
20
- if (options.help) {
20
+ if (options.help || !input) {
21
21
  createStandardHelp({
22
22
  commandName: 'flip',
23
23
  emoji: '🔃',
@@ -28,9 +28,9 @@ export function flipCommand(imageCmd) {
28
28
  { flag: '--vertical', description: 'Flip vertically (mirror top-bottom)' },
29
29
  { flag: '--both', description: 'Flip both ways (equivalent to 180° rotation)' },
30
30
  { flag: '-o, --output <path>', description: 'Output file path (default: <input>-flipped.<ext>)' },
31
- { flag: '-q, --quality <quality>', description: 'Output quality 1-100 (default: 90)' },
31
+ { flag: '-q, --quality <quality>', description: 'Output quality (1-100). Optional. Applies to JPEG/WEBP/AVIF. For PNG, maps to compression level (higher quality = lower compression). Ignored for other formats.' },
32
32
  { flag: '--dry-run', description: 'Preview changes without executing' },
33
- { flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail (Coming Soon...)' },
33
+ { flag: '--explain [mode]', description: 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.' },
34
34
  { flag: '-v, --verbose', description: 'Show detailed output' }
35
35
  ],
36
36
  examples: [
@@ -68,7 +68,7 @@ export function flipCommand(imageCmd) {
68
68
  if (options.verbose) {
69
69
  console.log(chalk.blue('\nConfiguration:'));
70
70
  console.log(chalk.dim(` Mode: ${flipType}`));
71
- console.log(chalk.dim(` Quality: ${options.quality || 90}`));
71
+ console.log(chalk.dim(` Quality: ${options.quality}`));
72
72
  }
73
73
  if (options.dryRun) {
74
74
  console.log(chalk.yellow('\nDry run mode - no changes will be made\n'));
@@ -77,13 +77,8 @@ export function flipCommand(imageCmd) {
77
77
  const outputPath = outputPaths.get(inputFile);
78
78
  console.log(chalk.dim(` ${index + 1}. ${getFileName(inputFile)} → ${getFileName(outputPath)}`));
79
79
  });
80
- showPluginBranding('Image', '../../package.json');
81
80
  return;
82
81
  }
83
- if (options.explain) {
84
- console.log(chalk.gray('Explain mode is not yet available.'));
85
- console.log(chalk.cyan('Planned for v0.8.x.'));
86
- }
87
82
  let successCount = 0;
88
83
  let failCount = 0;
89
84
  for (const [index, inputFile] of inputFiles.entries()) {
@@ -104,13 +99,13 @@ export function flipCommand(imageCmd) {
104
99
  }
105
100
  const outputExt = path.extname(outputPath).toLowerCase();
106
101
  if (outputExt === '.jpg' || outputExt === '.jpeg') {
107
- pipeline.jpeg({ quality: options.quality || 90 });
102
+ pipeline.jpeg({ quality: options.quality });
108
103
  }
109
104
  else if (outputExt === '.png') {
110
- pipeline.png({ quality: options.quality || 90 });
105
+ pipeline.png({ quality: options.quality });
111
106
  }
112
107
  else if (outputExt === '.webp') {
113
- pipeline.webp({ quality: options.quality || 90 });
108
+ pipeline.webp({ quality: options.quality });
114
109
  }
115
110
  await pipeline.toFile(outputPath);
116
111
  if (options.verbose) {
@@ -134,7 +129,6 @@ export function flipCommand(imageCmd) {
134
129
  if (failCount > 0) {
135
130
  console.log(chalk.red(` ✗ Failed: ${failCount}`));
136
131
  }
137
- showPluginBranding('Image', '../../package.json');
138
132
  }
139
133
  catch (error) {
140
134
  spinner.fail(chalk.red('Processing failed'));