webpocalypse 1.0.0 → 1.0.2
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/convert.d.ts +1 -1
- package/dist/convert.d.ts.map +1 -1
- package/dist/convert.js +5 -7
- package/dist/convert.js.map +1 -1
- package/dist/index.js +23 -6
- package/dist/index.js.map +1 -1
- package/dist/scan.d.ts +13 -5
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +30 -15
- package/dist/scan.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -3
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAI3D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAI3D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAmEnF"}
|
package/dist/cli.js
CHANGED
|
@@ -20,7 +20,8 @@ function parseArgs(argv) {
|
|
|
20
20
|
.option('--max-width <number>', 'Maximum output width in pixels (no upscaling)')
|
|
21
21
|
.option('--max-height <number>', 'Maximum output height in pixels (no upscaling)')
|
|
22
22
|
.option('-o, --out <path>', 'Output directory (default: <input>-optimized)')
|
|
23
|
-
.option('--in-place', 'Overwrite source directory safely via temp dir', false)
|
|
23
|
+
.option('--in-place', 'Overwrite source directory safely via temp dir', false)
|
|
24
|
+
.option('--json', 'Output structured JSON results to stdout', false);
|
|
24
25
|
program.parse(argv);
|
|
25
26
|
const opts = program.opts();
|
|
26
27
|
const [inputArg] = program.args;
|
|
@@ -60,6 +61,7 @@ function parseArgs(argv) {
|
|
|
60
61
|
maxHeight,
|
|
61
62
|
out: opts.out ? path_1.default.resolve(opts.out) : undefined,
|
|
62
63
|
inPlace: opts.inPlace,
|
|
64
|
+
json: opts.json,
|
|
63
65
|
},
|
|
64
66
|
};
|
|
65
67
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/convert.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FileEntry, CliOptions, ConversionResult } from
|
|
1
|
+
import type { FileEntry, CliOptions, ConversionResult } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Convert all files and write directly to outputDir.
|
|
4
4
|
* Calls onProgress after each file finishes (success or failure).
|
package/dist/convert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkF1E;;;GAGG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyD7B"}
|
package/dist/convert.js
CHANGED
|
@@ -16,7 +16,7 @@ function applyResize(image, options) {
|
|
|
16
16
|
return image.resize({
|
|
17
17
|
width: options.maxWidth,
|
|
18
18
|
height: options.maxHeight,
|
|
19
|
-
fit:
|
|
19
|
+
fit: "inside",
|
|
20
20
|
withoutEnlargement: true,
|
|
21
21
|
});
|
|
22
22
|
}
|
|
@@ -28,7 +28,7 @@ async function encodeToFile(file, format, outputDir, options) {
|
|
|
28
28
|
await fs_extra_1.default.ensureDir(path_1.default.dirname(outputPath));
|
|
29
29
|
let image = (0, sharp_1.default)(inputBuffer);
|
|
30
30
|
image = applyResize(image, options);
|
|
31
|
-
if (format ===
|
|
31
|
+
if (format === "webp") {
|
|
32
32
|
await (options.lossless
|
|
33
33
|
? image.webp({ lossless: true })
|
|
34
34
|
: image.webp({ quality: options.quality })).toFile(outputPath);
|
|
@@ -74,9 +74,7 @@ async function passthroughFile(file, outputDir) {
|
|
|
74
74
|
*/
|
|
75
75
|
async function convertFiles(files, outputDir, options, onProgress) {
|
|
76
76
|
// AVIF is much heavier to encode — reduce concurrency to avoid CPU saturation
|
|
77
|
-
const concurrency = options.format ===
|
|
78
|
-
: options.format === 'both' ? 4
|
|
79
|
-
: 6;
|
|
77
|
+
const concurrency = options.format === "avif" ? 3 : options.format === "both" ? 4 : 6;
|
|
80
78
|
const limit = (0, p_limit_1.default)(concurrency);
|
|
81
79
|
const allResults = [];
|
|
82
80
|
const tasks = files.flatMap((file) => {
|
|
@@ -89,7 +87,7 @@ async function convertFiles(files, outputDir, options, onProgress) {
|
|
|
89
87
|
}),
|
|
90
88
|
];
|
|
91
89
|
}
|
|
92
|
-
const formats = options.format ===
|
|
90
|
+
const formats = options.format === "both" ? ["webp", "avif"] : [options.format];
|
|
93
91
|
return formats.map((fmt) => limit(async () => {
|
|
94
92
|
let result;
|
|
95
93
|
try {
|
|
@@ -107,7 +105,7 @@ async function convertFiles(files, outputDir, options, onProgress) {
|
|
|
107
105
|
result = {
|
|
108
106
|
inputPath: file.inputPath,
|
|
109
107
|
relativePath: file.relativePath,
|
|
110
|
-
outputPath:
|
|
108
|
+
outputPath: "",
|
|
111
109
|
outputRelativePath: (0, scan_js_1.replaceExtension)(file.relativePath, fmt),
|
|
112
110
|
originalSize: stat?.size ?? 0,
|
|
113
111
|
convertedSize: 0,
|
package/dist/convert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -28,14 +28,14 @@ async function main() {
|
|
|
28
28
|
const files = (0, scan_js_1.scanDirectory)(inputDir);
|
|
29
29
|
spinner.stop();
|
|
30
30
|
if (files.length === 0) {
|
|
31
|
-
console.log(chalk_1.default.yellow('⚠ No
|
|
32
|
-
console.log(chalk_1.default.dim(' Supported formats: .jpg, .jpeg, .png, .webp, .avif'));
|
|
31
|
+
console.log(chalk_1.default.yellow('⚠ No files found in: ') + inputDir);
|
|
33
32
|
process.exit(0);
|
|
34
33
|
}
|
|
35
|
-
|
|
34
|
+
const convertibleCount = files.filter(f => (0, scan_js_1.isConvertible)(f.inputPath)).length;
|
|
35
|
+
const passthroughCount = files.length - convertibleCount;
|
|
36
|
+
// Convertible files produce 1 or 2 outputs (--format both); pass-throughs always 1
|
|
36
37
|
const totalOutputs = files.reduce((sum, f) => {
|
|
37
|
-
|
|
38
|
-
return sum + (isPassthrough ? 1 : options.format === 'both' ? 2 : 1);
|
|
38
|
+
return sum + ((0, scan_js_1.isConvertible)(f.inputPath) && options.format === 'both' ? 2 : 1);
|
|
39
39
|
}, 0);
|
|
40
40
|
const outputDir = options.inPlace
|
|
41
41
|
? inputDir
|
|
@@ -49,7 +49,10 @@ async function main() {
|
|
|
49
49
|
chalk_1.default.dim(' Quality: ') + (options.lossless ? 'lossless' : String(options.quality)) +
|
|
50
50
|
(options.maxWidth ? chalk_1.default.dim(' Max-W: ') + options.maxWidth : '') +
|
|
51
51
|
(options.maxHeight ? chalk_1.default.dim(' Max-H: ') + options.maxHeight : ''));
|
|
52
|
-
|
|
52
|
+
const filesSummary = passthroughCount > 0
|
|
53
|
+
? `${convertibleCount} image${convertibleCount !== 1 ? 's' : ''} to convert, ${passthroughCount} asset${passthroughCount !== 1 ? 's' : ''} copied as-is`
|
|
54
|
+
: `${convertibleCount} image${convertibleCount !== 1 ? 's' : ''} to convert`;
|
|
55
|
+
console.log(chalk_1.default.dim(` Files: ${filesSummary} → ${totalOutputs} output${totalOutputs !== 1 ? 's' : ''}`));
|
|
53
56
|
// ── Convert ───────────────────────────────────────────────────────────────
|
|
54
57
|
(0, logger_js_1.printTableHeader)();
|
|
55
58
|
let doneCount = 0;
|
|
@@ -78,6 +81,20 @@ async function main() {
|
|
|
78
81
|
results.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
79
82
|
const summary = (0, logger_js_1.buildSummary)(results);
|
|
80
83
|
(0, logger_js_1.printSummary)(summary, finalOutputDir);
|
|
84
|
+
if (options.json) {
|
|
85
|
+
const jsonOutput = {
|
|
86
|
+
files: results
|
|
87
|
+
.filter((r) => r.success && !r.skipped)
|
|
88
|
+
.map((r) => ({
|
|
89
|
+
path: r.relativePath,
|
|
90
|
+
originalBytes: r.originalSize,
|
|
91
|
+
convertedBytes: r.convertedSize,
|
|
92
|
+
})),
|
|
93
|
+
totalOriginalBytes: summary.totalOriginalBytes,
|
|
94
|
+
totalConvertedBytes: summary.totalConvertedBytes,
|
|
95
|
+
};
|
|
96
|
+
process.stdout.write(JSON.stringify(jsonOutput) + '\n');
|
|
97
|
+
}
|
|
81
98
|
process.exit(summary.failureCount > 0 ? 1 : 0);
|
|
82
99
|
}
|
|
83
100
|
catch (err) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,8CAAsB;AACtB,kDAA0B;AAC1B,qCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/scan.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import type { FileEntry } from
|
|
2
|
-
export declare function
|
|
1
|
+
import type { FileEntry } from "./types.js";
|
|
2
|
+
export declare function isConvertible(filename: string): boolean;
|
|
3
|
+
export declare function isIgnored(filename: string): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Returns true for files that should be copied verbatim to the output.
|
|
6
|
+
* This includes already-optimised images (.webp, .avif) as well as any
|
|
7
|
+
* other asset (.svg, .ico, .gif, fonts, JSON, etc.) that sharp cannot or
|
|
8
|
+
* should not re-encode.
|
|
9
|
+
*/
|
|
3
10
|
export declare function isPassthrough(filename: string): boolean;
|
|
4
11
|
export declare function replaceExtension(filePath: string, newExt: string): string;
|
|
5
12
|
/**
|
|
6
|
-
* Recursively walk a directory and collect
|
|
7
|
-
*
|
|
8
|
-
*
|
|
13
|
+
* Recursively walk a directory and collect every file that should appear in
|
|
14
|
+
* the output — both convertible images (.jpg, .jpeg, .png) and pass-through
|
|
15
|
+
* assets (.webp, .avif, .svg, .ico, fonts, etc.).
|
|
16
|
+
* OS-generated junk (.DS_Store, Thumbs.db …) is silently skipped.
|
|
9
17
|
*/
|
|
10
18
|
export declare function scanDirectory(rootDir: string): FileEntry[];
|
|
11
19
|
//# sourceMappingURL=scan.d.ts.map
|
package/dist/scan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAc5C,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAoB1D"}
|
package/dist/scan.js
CHANGED
|
@@ -3,34 +3,49 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.isConvertible = isConvertible;
|
|
7
|
+
exports.isIgnored = isIgnored;
|
|
7
8
|
exports.isPassthrough = isPassthrough;
|
|
8
9
|
exports.replaceExtension = replaceExtension;
|
|
9
10
|
exports.scanDirectory = scanDirectory;
|
|
10
11
|
const fs_1 = __importDefault(require("fs"));
|
|
11
12
|
const path_1 = __importDefault(require("path"));
|
|
12
13
|
// Extensions that will be re-encoded by sharp
|
|
13
|
-
const CONVERTIBLE_EXTENSIONS = new Set([
|
|
14
|
-
//
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
const CONVERTIBLE_EXTENSIONS = new Set([".jpg", ".jpeg", ".png"]);
|
|
15
|
+
// OS/editor-generated files that should never appear in the output
|
|
16
|
+
const IGNORED_FILENAMES = new Set([
|
|
17
|
+
".ds_store",
|
|
18
|
+
"thumbs.db",
|
|
19
|
+
"desktop.ini",
|
|
20
|
+
".gitkeep",
|
|
21
|
+
".gitignore",
|
|
22
|
+
]);
|
|
23
|
+
function isConvertible(filename) {
|
|
24
|
+
const ext = filename.toLowerCase().slice(filename.lastIndexOf("."));
|
|
25
|
+
return CONVERTIBLE_EXTENSIONS.has(ext);
|
|
20
26
|
}
|
|
27
|
+
function isIgnored(filename) {
|
|
28
|
+
return IGNORED_FILENAMES.has(path_1.default.basename(filename).toLowerCase());
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns true for files that should be copied verbatim to the output.
|
|
32
|
+
* This includes already-optimised images (.webp, .avif) as well as any
|
|
33
|
+
* other asset (.svg, .ico, .gif, fonts, JSON, etc.) that sharp cannot or
|
|
34
|
+
* should not re-encode.
|
|
35
|
+
*/
|
|
21
36
|
function isPassthrough(filename) {
|
|
22
|
-
|
|
23
|
-
return PASSTHROUGH_EXTENSIONS.has(ext);
|
|
37
|
+
return !isConvertible(filename) && !isIgnored(filename);
|
|
24
38
|
}
|
|
25
39
|
function replaceExtension(filePath, newExt) {
|
|
26
|
-
const dotIndex = filePath.lastIndexOf(
|
|
40
|
+
const dotIndex = filePath.lastIndexOf(".");
|
|
27
41
|
const base = dotIndex !== -1 ? filePath.slice(0, dotIndex) : filePath;
|
|
28
42
|
return `${base}.${newExt}`;
|
|
29
43
|
}
|
|
30
44
|
/**
|
|
31
|
-
* Recursively walk a directory and collect
|
|
32
|
-
*
|
|
33
|
-
*
|
|
45
|
+
* Recursively walk a directory and collect every file that should appear in
|
|
46
|
+
* the output — both convertible images (.jpg, .jpeg, .png) and pass-through
|
|
47
|
+
* assets (.webp, .avif, .svg, .ico, fonts, etc.).
|
|
48
|
+
* OS-generated junk (.DS_Store, Thumbs.db …) is silently skipped.
|
|
34
49
|
*/
|
|
35
50
|
function scanDirectory(rootDir) {
|
|
36
51
|
const entries = [];
|
|
@@ -41,7 +56,7 @@ function scanDirectory(rootDir) {
|
|
|
41
56
|
if (item.isDirectory()) {
|
|
42
57
|
walk(fullPath);
|
|
43
58
|
}
|
|
44
|
-
else if (item.isFile() &&
|
|
59
|
+
else if (item.isFile() && !isIgnored(item.name)) {
|
|
45
60
|
const relativePath = path_1.default.relative(rootDir, fullPath);
|
|
46
61
|
entries.push({ inputPath: fullPath, relativePath });
|
|
47
62
|
}
|
package/dist/scan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":";;;;;AAgBA,sCAGC;AAED,8BAEC;AAQD,sCAEC;AAED,4CAIC;AAQD,sCAoBC;AAnED,4CAAoB;AACpB,gDAAwB;AAGxB,8CAA8C;AAC9C,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAElE,mEAAmE;AACnE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,WAAW;IACX,aAAa;IACb,UAAU;IACV,YAAY;CACb,CAAC,CAAC;AAEH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,OAAO,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,SAAS,CAAC,QAAgB;IACxC,OAAO,iBAAiB,CAAC,GAAG,CAAC,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtE,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,SAAS,IAAI,CAAC,GAAW;QACvB,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type OutputFormat =
|
|
1
|
+
export type OutputFormat = "webp" | "avif" | "both";
|
|
2
2
|
export interface CliOptions {
|
|
3
3
|
format: OutputFormat;
|
|
4
4
|
quality: number;
|
|
@@ -7,6 +7,7 @@ export interface CliOptions {
|
|
|
7
7
|
maxHeight?: number;
|
|
8
8
|
out?: string;
|
|
9
9
|
inPlace: boolean;
|
|
10
|
+
json: boolean;
|
|
10
11
|
}
|
|
11
12
|
export interface FileEntry {
|
|
12
13
|
inputPath: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webpocalypse",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "CLI tool for batch image conversion to WebP/AVIF with quality control and directory structure preservation",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"image",
|
|
7
|
+
"conversion",
|
|
8
|
+
"webp",
|
|
9
|
+
"avif",
|
|
10
|
+
"optimization",
|
|
11
|
+
"cli"
|
|
12
|
+
],
|
|
6
13
|
"author": "",
|
|
7
14
|
"license": "MIT",
|
|
8
15
|
"main": "dist/index.js",
|
|
9
16
|
"bin": {
|
|
10
17
|
"webpocalypse": "dist/index.js"
|
|
11
18
|
},
|
|
12
|
-
"files": [
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
13
22
|
"engines": {
|
|
14
23
|
"node": ">=18.0.0"
|
|
15
24
|
},
|