diginext-img-magic-cli 0.1.6 → 0.2.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/index.js CHANGED
@@ -4,168 +4,314 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const yargs_1 = __importDefault(require("yargs"));
7
+ const promises_1 = __importDefault(require("fs/promises"));
7
8
  const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const async_1 = require("async");
8
11
  const diginext_img_magic_1 = require("diginext-img-magic");
9
12
  const isImageSupported_1 = __importDefault(require("diginext-img-magic/dist/compress/isImageSupported"));
10
13
  const url_1 = require("diginext-utils/dist/string/url");
11
14
  const getAllFiles_1 = __importDefault(require("./plugins/getAllFiles"));
12
- const object_1 = require("diginext-utils/dist/object");
13
15
  const { version } = require("../package.json");
14
- (async () => {
15
- //
16
- const argv = (0, yargs_1.default)(process.argv.slice(2))
17
- .usage("Usage: $0 <command> [options]")
18
- .example('$0 --dir "dir"', "")
19
- .alias("d", "dir")
20
- .describe("d", "Directory")
21
- .option("dir", {
22
- string: true,
23
- })
24
- .alias("t", "thumb")
25
- .describe("t", "Thumb")
26
- .option("thumb", {
27
- boolean: false,
28
- })
29
- .alias("m", "maxsize")
30
- .describe("m", "Max Size")
31
- .option("maxsize", {
32
- number: false,
33
- })
34
- .help("h")
35
- .alias("h", "help")
36
- .epilog(`verion: ${version}`).argv;
37
- let dirName;
38
- if (Array.isArray(argv.dir)) {
39
- dirName = argv.dir[1] === true ? "" : argv.dir[1];
40
- if (!dirName) {
41
- console.log("Need Directory!");
42
- return;
43
- }
44
- }
45
- else {
46
- dirName = argv === true ? "" : argv.dir;
47
- if (!dirName) {
48
- console.log("Need Directory!");
49
- return;
50
- }
16
+ class ImageConverter {
17
+ constructor(options) {
18
+ this.outputDirWebp = "";
19
+ this.outputDirThumb = "";
20
+ this.results = [];
21
+ this.processedCount = 0;
22
+ this.options = options;
23
+ this.setupOutputDirectories();
51
24
  }
52
- if (!fs_1.default.lstatSync(dirName).isDirectory()) {
53
- //
54
- console.log("Please Use A Directory!");
55
- return;
25
+ setupOutputDirectories() {
26
+ const normalizedDir = this.options.dir.replace(/\\/g, "/");
27
+ const folderName = (0, url_1.getFileNameWithoutExtension)(normalizedDir);
28
+ const parentDir = path_1.default.dirname(normalizedDir);
29
+ this.outputDirWebp = path_1.default.join(parentDir, `${folderName}-webp`);
30
+ this.outputDirThumb = path_1.default.join(parentDir, `${folderName}-thumb-webp`);
56
31
  }
57
- const isCreateThumb = (0, object_1.toBool)(argv.thumb);
58
- const maxSize = (0, object_1.toInt)(argv.maxsize) || 4096;
59
- console.log("Max Size: ", maxSize);
60
- dirName = dirName.replace(/\\/g, "/");
61
- const folderName = (0, url_1.getFileNameWithoutExtension)(dirName);
62
- console.log("Folder Name :>> ", folderName);
63
- const folderNameWebp = `${folderName}-webp`;
64
- const dirFolderWebp = [...dirName.split("/").slice(0, -1), folderNameWebp].join("/");
65
- const folderNameThumb = `${folderName}-thumb-webp`;
66
- const dirFolderThumb = [...dirName.split("/").slice(0, -1), folderNameThumb].join("/");
67
- console.log("Path Folder Webp :>> ", dirFolderWebp);
68
- // console.log("dirFolderThumb :>> ", dirFolderThumb);
69
- const list = (0, getAllFiles_1.default)(dirName);
70
- const checkSameName = () => {
71
- const __list = list
72
- .map((item) => {
73
- const supported = (0, isImageSupported_1.default)(item);
74
- if (supported) {
75
- return [...item.split("/").slice(0, -1), `${(0, url_1.getFileNameWithoutExtension)(item)}`].join("/");
76
- // return getFileNameWithoutExtension(item);
32
+ async ensureDirectoryExists(dirPath) {
33
+ try {
34
+ if (fs_1.default.existsSync(dirPath)) {
35
+ await promises_1.default.rm(dirPath, { recursive: true });
77
36
  }
78
- return null;
79
- })
80
- .filter((x) => x);
81
- const duplicate = __list.filter((item, index) => __list.indexOf(item) !== index);
82
- if ((0, object_1.toBool)(duplicate))
83
- console.log("Duplicate :>> ", duplicate);
84
- if (duplicate.length >= 1) {
85
- console.error("Tìm thấy hình giống tên nhau nhưng khác extension, không thực hiện convert !");
37
+ await promises_1.default.mkdir(dirPath, { recursive: true });
86
38
  }
87
- for (let i = 0; i < duplicate.length; i++) {
88
- const element = duplicate[i];
89
- //
90
- const ___list = list.filter((x) => {
91
- return x.indexOf(`${element}.`) >= 0;
92
- });
93
- console.log("Vui lòng đổi tên :>> ", ___list);
39
+ catch (error) {
40
+ throw new Error(`Failed to create directory ${dirPath}: ${error}`);
94
41
  }
95
- return duplicate.length >= 1;
96
- };
97
- if (checkSameName()) {
98
- return;
99
42
  }
100
- const MAX_PROCESSING = 10;
101
- let index = 0;
102
- const startConvert = () => {
103
- if (fs_1.default.existsSync(dirFolderWebp)) {
104
- fs_1.default.rmSync(dirFolderWebp, { recursive: true });
43
+ async validateDirectory() {
44
+ try {
45
+ const stats = await promises_1.default.lstat(this.options.dir);
46
+ if (!stats.isDirectory()) {
47
+ throw new Error("Path is not a directory");
48
+ }
49
+ }
50
+ catch (error) {
51
+ throw new Error(`Invalid directory: ${this.options.dir}`);
105
52
  }
106
- fs_1.default.mkdirSync(dirFolderWebp, { recursive: true });
107
- if (isCreateThumb) {
108
- if (fs_1.default.existsSync(dirFolderThumb)) {
109
- fs_1.default.rmSync(dirFolderThumb, { recursive: true });
53
+ }
54
+ checkForDuplicateNames(files) {
55
+ const nameMap = new Map();
56
+ files.forEach((file) => {
57
+ if ((0, isImageSupported_1.default)(file)) {
58
+ const nameWithoutExt = (0, url_1.getFileNameWithoutExtension)(file);
59
+ const relativePath = path_1.default.dirname(file.replace(this.options.dir, ""));
60
+ const key = path_1.default.join(relativePath, nameWithoutExt);
61
+ if (!nameMap.has(key)) {
62
+ nameMap.set(key, []);
63
+ }
64
+ nameMap.get(key).push(file);
65
+ }
66
+ });
67
+ const duplicates = [];
68
+ nameMap.forEach((files, name) => {
69
+ if (files.length > 1) {
70
+ duplicates.push(...files);
71
+ console.warn(`⚠️ Duplicate names found for: ${name}`);
72
+ console.warn(` Files: ${files.join(", ")}`);
110
73
  }
111
- fs_1.default.mkdirSync(dirFolderThumb, { recursive: true });
74
+ });
75
+ return duplicates;
76
+ }
77
+ async convertSingleImage(task) {
78
+ const { inputPath, index, total } = task;
79
+ try {
80
+ // console.log(`📸 [${index}/${total}] Processing: ${path.basename(inputPath)}`);
81
+ const normalizedPath = inputPath.replace(/\\/g, "/");
82
+ const fileExt = (0, url_1.getFileExtension)(normalizedPath);
83
+ const isSupported = (0, isImageSupported_1.default)(normalizedPath);
84
+ // Handle non-image files
85
+ if (!isSupported) {
86
+ const outputPath = normalizedPath.replace(this.options.dir, this.outputDirWebp);
87
+ await promises_1.default.mkdir(path_1.default.dirname(outputPath), { recursive: true });
88
+ await promises_1.default.copyFile(normalizedPath, outputPath);
89
+ return {
90
+ success: true,
91
+ input: inputPath,
92
+ output: outputPath,
93
+ };
94
+ }
95
+ // Convert image to WebP
96
+ const result = await (0, diginext_img_magic_1.convertToWebpByPath)(normalizedPath);
97
+ // Handle main WebP file
98
+ const webpOutputPath = normalizedPath.replace(this.options.dir, this.outputDirWebp).replace(`.${fileExt}`, ".webp");
99
+ await promises_1.default.mkdir(path_1.default.dirname(webpOutputPath), { recursive: true });
100
+ await promises_1.default.copyFile(result === null || result === void 0 ? void 0 : result.large, webpOutputPath);
101
+ await promises_1.default.rm(result === null || result === void 0 ? void 0 : result.large);
102
+ // // Handle thumbnail if requested
103
+ // if (this.options.thumb && result.small) {
104
+ // const thumbOutputPath = normalizedPath.replace(this.options.dir, this.outputDirThumb).replace(`.${fileExt}`, ".webp");
105
+ // await fs.mkdir(path.dirname(thumbOutputPath), { recursive: true });
106
+ // await fs.copyFile(result.small, thumbOutputPath);
107
+ // await fs.rm(result.small);
108
+ // }
109
+ return {
110
+ success: true,
111
+ input: inputPath,
112
+ output: webpOutputPath,
113
+ };
112
114
  }
113
- //
114
- index = -1;
115
- for (let i = 0; i < MAX_PROCESSING; i++) {
116
- walkOne();
115
+ catch (error) {
116
+ return {
117
+ success: false,
118
+ input: inputPath,
119
+ error: error instanceof Error ? error.message : String(error),
120
+ };
117
121
  }
118
- };
119
- const walkOne = async () => {
120
- //
121
- index++;
122
- if (index == list.length) {
123
- index++;
124
- setTimeout(() => {
125
- try {
126
- fs_1.default.rmSync(".temp", { recursive: true });
127
- console.log("DONE !");
122
+ }
123
+ createWorker() {
124
+ return async (task) => {
125
+ try {
126
+ const result = await this.convertSingleImage(task);
127
+ this.results.push(result);
128
+ this.processedCount++;
129
+ if (!result.success) {
130
+ console.error(`❌ Failed to convert ${task.inputPath}: ${result.error}`);
131
+ }
132
+ else {
133
+ console.log(`✔ [${this.processedCount}/${task.total}] Completed: ${path_1.default.basename(task.inputPath)}`);
128
134
  }
129
- catch (error) {
130
- console.error(`metname error`, error);
135
+ }
136
+ catch (error) {
137
+ const errorResult = {
138
+ success: false,
139
+ input: task.inputPath,
140
+ error: error instanceof Error ? error.message : String(error),
141
+ };
142
+ this.results.push(errorResult);
143
+ this.processedCount++;
144
+ console.error(`❌ Worker error for ${task.inputPath}:`, error);
145
+ }
146
+ };
147
+ }
148
+ async processWithQueue(files) {
149
+ return new Promise((resolve, reject) => {
150
+ const concurrency = this.options.concurrency || 10;
151
+ console.log(`🚀 Starting conversion of ${files.length} files with concurrency: ${concurrency}`);
152
+ // Create the queue with our worker function
153
+ const q = (0, async_1.queue)(this.createWorker(), concurrency);
154
+ // Set up queue event handlers
155
+ q.error((error, task) => {
156
+ console.error("Queue error occurred:", error);
157
+ console.error("Failed task:", task);
158
+ });
159
+ q.drain(() => {
160
+ console.log("\n🎯 All tasks completed!");
161
+ resolve(this.results);
162
+ });
163
+ // Add progress monitoring
164
+ // let lastProgress = 0;
165
+ // q.saturated(() => {
166
+ // console.log("🔥 Queue is running at full capacity");
167
+ // });
168
+ q.empty(() => {
169
+ console.log("📭 Queue is empty, waiting for workers to finish...");
170
+ });
171
+ // Create tasks and add them to the queue
172
+ const tasks = files.map((file, index) => ({
173
+ inputPath: file,
174
+ index: index + 1,
175
+ total: files.length,
176
+ }));
177
+ // Add all tasks to the queue
178
+ q.push(tasks, (error) => {
179
+ if (error) {
180
+ console.error("Task completion error:", error);
131
181
  }
132
- }, 5000);
133
- return;
182
+ });
183
+ // Handle the case where there are no files
184
+ if (files.length === 0) {
185
+ resolve([]);
186
+ }
187
+ });
188
+ }
189
+ async cleanup() {
190
+ try {
191
+ if (fs_1.default.existsSync(".temp")) {
192
+ await promises_1.default.rm(".temp", { recursive: true });
193
+ }
134
194
  }
135
- if (index >= list.length) {
136
- return;
195
+ catch (error) {
196
+ console.warn("⚠️ Warning: Failed to cleanup temp directory:", error);
137
197
  }
138
- await convertOneObject(list[index]);
139
- walkOne();
140
- };
141
- const convertOneObject = async (url) => {
142
- if (!url) {
143
- return;
198
+ }
199
+ printSummary(results) {
200
+ const successful = results.filter((r) => r.success).length;
201
+ const failed = results.filter((r) => !r.success).length;
202
+ console.log("\n" + "=".repeat(50));
203
+ console.log("📊 CONVERSION SUMMARY");
204
+ console.log("=".repeat(50));
205
+ console.log(`✔ Successful: ${successful}`);
206
+ console.log(`❌ Failed: ${failed}`);
207
+ console.log(`📁 Output directory: ${this.outputDirWebp}`);
208
+ if (this.options.thumb) {
209
+ console.log(`🖼️ Thumbnail directory: ${this.outputDirThumb}`);
144
210
  }
145
- console.log(`${index + 1}/${list.length}: ${url}`);
146
- url = url.replace("\\", "/");
147
- const fileExt = (0, url_1.getFileExtension)(url);
148
- const supported = (0, isImageSupported_1.default)(url);
149
- if (!supported) {
150
- fs_1.default.cpSync(url, url.replace(dirName, dirFolderWebp), { recursive: true });
151
- return;
211
+ if (failed > 0) {
212
+ console.log("\n❌ Failed conversions:");
213
+ results.filter((r) => !r.success).forEach((r) => console.log(` • ${path_1.default.basename(r.input)}: ${r.error}`));
152
214
  }
215
+ console.log("=".repeat(50));
216
+ }
217
+ async convert() {
153
218
  try {
154
- const res = await (0, diginext_img_magic_1.convertToWebpByPath)(url, { maxSize, small: isCreateThumb });
155
- const large = res.large;
156
- fs_1.default.cpSync(large, url.replace(dirName, dirFolderWebp).replace(`.${fileExt}`, ".webp"), { recursive: true });
157
- fs_1.default.rmSync(large);
158
- if (isCreateThumb) {
159
- const small = res.small;
160
- fs_1.default.cpSync(small, url.replace(dirName, dirFolderThumb).replace(`.${fileExt}`, ".webp"), { recursive: true });
161
- fs_1.default.rmSync(small);
219
+ // Reset state
220
+ this.results = [];
221
+ this.processedCount = 0;
222
+ // Validate input directory
223
+ await this.validateDirectory();
224
+ // Get all files
225
+ const files = (0, getAllFiles_1.default)(this.options.dir);
226
+ if (files.length === 0) {
227
+ console.log("📂 No files found in the specified directory.");
228
+ return;
162
229
  }
230
+ // Check for duplicate names
231
+ const duplicates = this.checkForDuplicateNames(files);
232
+ if (duplicates.length > 0) {
233
+ throw new Error("Cannot proceed: Found files with duplicate names but different extensions.");
234
+ }
235
+ // Setup output directories
236
+ await this.ensureDirectoryExists(this.outputDirWebp);
237
+ if (this.options.thumb) {
238
+ await this.ensureDirectoryExists(this.outputDirThumb);
239
+ }
240
+ // Process files using async queue
241
+ const results = await this.processWithQueue(files);
242
+ // Cleanup and summary
243
+ await this.cleanup();
244
+ this.printSummary(results);
163
245
  }
164
246
  catch (error) {
165
- console.error(`convertOneObject error`, error);
247
+ console.error("💥 Conversion failed:", error instanceof Error ? error.message : String(error));
248
+ throw error;
166
249
  }
250
+ }
251
+ }
252
+ async function parseArguments() {
253
+ const argv = await (0, yargs_1.default)(process.argv.slice(2))
254
+ .usage("Usage: $0 [options]")
255
+ .example('$0 --dir "./images" --thumb --maxsize 2048 --concurrency 5', "Convert images with 5 concurrent workers")
256
+ .option("dir", {
257
+ alias: "d",
258
+ describe: "Source directory containing images",
259
+ type: "string",
260
+ demandOption: true,
261
+ })
262
+ .option("thumb", {
263
+ alias: "t",
264
+ describe: "Generate thumbnails",
265
+ type: "boolean",
266
+ default: false,
267
+ })
268
+ .option("maxsize", {
269
+ alias: "m",
270
+ describe: "Maximum size for converted images",
271
+ type: "number",
272
+ default: 4096,
273
+ })
274
+ .option("concurrency", {
275
+ alias: "c",
276
+ describe: "Number of concurrent workers",
277
+ type: "number",
278
+ default: 12,
279
+ })
280
+ .help("h")
281
+ .alias("h", "help")
282
+ .epilog(`Version: ${version}`)
283
+ .parseAsync();
284
+ return {
285
+ dir: argv.dir,
286
+ thumb: argv.thumb,
287
+ maxsize: argv.maxsize,
288
+ concurrency: argv.concurrency,
167
289
  };
168
- startConvert();
169
- //
170
- })();
290
+ }
291
+ async function main() {
292
+ try {
293
+ console.log(`🎨 Image Converter v${version}`);
294
+ console.log("=".repeat(30));
295
+ const options = await parseArguments();
296
+ console.log(`📁 Source: ${options.dir}`);
297
+ console.log(`📏 Max size: ${options.maxsize}px`);
298
+ console.log(`🖼️ Generate thumbnails: ${options.thumb ? "Yes" : "No"}`);
299
+ console.log(`⚡ Concurrency: ${options.concurrency}`);
300
+ console.log("=".repeat(30));
301
+ const converter = new ImageConverter(options);
302
+ await converter.convert();
303
+ console.log("🎉 All done!");
304
+ }
305
+ catch (error) {
306
+ console.error("💥 Application error:", error instanceof Error ? error.message : String(error));
307
+ process.exit(1);
308
+ }
309
+ }
310
+ // Handle unhandled promise rejections
311
+ process.on("unhandledRejection", (reason, promise) => {
312
+ console.error("Unhandled Rejection at:", promise, "reason:", reason);
313
+ process.exit(1);
314
+ });
315
+ // Run the application
316
+ main();
171
317
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,4CAAoB;AACpB,2DAAyD;AACzD,yGAAiF;AACjF,wDAA+F;AAE/F,wEAAgD;AAChD,uDAA2D;AAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,CAAC,KAAK,IAAI,EAAE;IACX,EAAE;IACF,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvC,KAAK,CAAC,+BAA+B,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAE7B,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;SACjB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE;QACd,MAAM,EAAE,IAAI;KACZ,CAAC;SAED,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;SACnB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;SACtB,MAAM,CAAC,OAAO,EAAE;QAChB,OAAO,EAAE,KAAK;KACd,CAAC;SAED,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;SACrB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;SACzB,MAAM,CAAC,SAAS,EAAE;QAClB,MAAM,EAAE,KAAK;KACb,CAAC;SAED,IAAI,CAAC,GAAG,CAAC;SACT,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;SAClB,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,IAAW,CAAC;IAE3C,IAAI,OAAY,CAAC;IACjB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO;SACP;KACD;SAAM;QACN,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO;SACP;KACD;IAED,IAAI,CAAC,YAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACzC,EAAE;QACF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO;KACP;IAED,MAAM,aAAa,GAAG,IAAA,eAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG,IAAA,iCAA2B,EAAC,OAAO,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAG,GAAG,UAAU,OAAO,CAAC;IAC5C,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErF,MAAM,eAAe,GAAG,GAAG,UAAU,aAAa,CAAC;IACnD,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvF,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;IACpD,sDAAsD;IAEtD,MAAM,IAAI,GAAG,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,GAAG,EAAE;QAC1B,MAAM,MAAM,GAAG,IAAI;aACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC;YACzC,IAAI,SAAS,EAAE;gBACd,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAA,iCAA2B,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3F,4CAA4C;aAC5C;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QACjF,IAAI,IAAA,eAAM,EAAC,SAAS,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;SAC9F;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,EAAE;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;SAC9C;QAED,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,IAAI,aAAa,EAAE,EAAE;QACpB,OAAO;KACP;IAED,MAAM,cAAc,GAAG,EAAE,CAAC;IAE1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,YAAY,GAAG,GAAG,EAAE;QACzB,IAAI,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACjC,YAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9C;QACD,YAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,IAAI,aAAa,EAAE;YAClB,IAAI,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;gBAClC,YAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aAC/C;YACD,YAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAClD;QACD,EAAE;QACF,KAAK,GAAG,CAAC,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;YACxC,OAAO,EAAE,CAAC;SACV;IACF,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QAC1B,EAAE;QACF,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,KAAK,EAAE,CAAC;YAER,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI;oBACH,YAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtB;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;iBACtC;YACF,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,OAAO;SACP;QACD,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,OAAO;SACP;QAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;QAC9C,IAAI,CAAC,GAAG,EAAE;YACT,OAAO;SACP;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;QAEnD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAA,sBAAgB,EAAC,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAA,0BAAgB,EAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,EAAE;YACf,YAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,OAAO;SACP;QAED,IAAI;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,wCAAmB,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;YAE9E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,YAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3G,YAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEjB,IAAI,aAAa,EAAE;gBAClB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;gBACxB,YAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5G,YAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACjB;SACD;QAAC,OAAO,KAAK,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;SAC/C;IACF,CAAC,CAAC;IAEF,YAAY,EAAE,CAAC;IACf,EAAE;AACH,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -1,166 +1,312 @@
1
1
  import yargs from "yargs";
2
- import fs from "fs";
2
+ import fs from "fs/promises";
3
+ import fsSync from "fs";
4
+ import path from "path";
5
+ import { queue } from "async";
3
6
  import { convertToWebpByPath } from "diginext-img-magic";
4
7
  import isImageSupported from "diginext-img-magic/dist/compress/isImageSupported";
5
8
  import { getFileExtension, getFileNameWithoutExtension } from "diginext-utils/dist/string/url";
6
9
  import getAllFiles from "./plugins/getAllFiles";
7
- import { toBool, toInt } from "diginext-utils/dist/object";
8
10
  const { version } = require("../package.json");
9
- (async () => {
10
- //
11
- const argv = yargs(process.argv.slice(2))
12
- .usage("Usage: $0 <command> [options]")
13
- .example('$0 --dir "dir"', "")
14
- .alias("d", "dir")
15
- .describe("d", "Directory")
16
- .option("dir", {
17
- string: true,
18
- })
19
- .alias("t", "thumb")
20
- .describe("t", "Thumb")
21
- .option("thumb", {
22
- boolean: false,
23
- })
24
- .alias("m", "maxsize")
25
- .describe("m", "Max Size")
26
- .option("maxsize", {
27
- number: false,
28
- })
29
- .help("h")
30
- .alias("h", "help")
31
- .epilog(`verion: ${version}`).argv;
32
- let dirName;
33
- if (Array.isArray(argv.dir)) {
34
- dirName = argv.dir[1] === true ? "" : argv.dir[1];
35
- if (!dirName) {
36
- console.log("Need Directory!");
37
- return;
38
- }
39
- }
40
- else {
41
- dirName = argv === true ? "" : argv.dir;
42
- if (!dirName) {
43
- console.log("Need Directory!");
44
- return;
45
- }
11
+ class ImageConverter {
12
+ constructor(options) {
13
+ this.outputDirWebp = "";
14
+ this.outputDirThumb = "";
15
+ this.results = [];
16
+ this.processedCount = 0;
17
+ this.options = options;
18
+ this.setupOutputDirectories();
46
19
  }
47
- if (!fs.lstatSync(dirName).isDirectory()) {
48
- //
49
- console.log("Please Use A Directory!");
50
- return;
20
+ setupOutputDirectories() {
21
+ const normalizedDir = this.options.dir.replace(/\\/g, "/");
22
+ const folderName = getFileNameWithoutExtension(normalizedDir);
23
+ const parentDir = path.dirname(normalizedDir);
24
+ this.outputDirWebp = path.join(parentDir, `${folderName}-webp`);
25
+ this.outputDirThumb = path.join(parentDir, `${folderName}-thumb-webp`);
51
26
  }
52
- const isCreateThumb = toBool(argv.thumb);
53
- const maxSize = toInt(argv.maxsize) || 4096;
54
- console.log("Max Size: ", maxSize);
55
- dirName = dirName.replace(/\\/g, "/");
56
- const folderName = getFileNameWithoutExtension(dirName);
57
- console.log("Folder Name :>> ", folderName);
58
- const folderNameWebp = `${folderName}-webp`;
59
- const dirFolderWebp = [...dirName.split("/").slice(0, -1), folderNameWebp].join("/");
60
- const folderNameThumb = `${folderName}-thumb-webp`;
61
- const dirFolderThumb = [...dirName.split("/").slice(0, -1), folderNameThumb].join("/");
62
- console.log("Path Folder Webp :>> ", dirFolderWebp);
63
- // console.log("dirFolderThumb :>> ", dirFolderThumb);
64
- const list = getAllFiles(dirName);
65
- const checkSameName = () => {
66
- const __list = list
67
- .map((item) => {
68
- const supported = isImageSupported(item);
69
- if (supported) {
70
- return [...item.split("/").slice(0, -1), `${getFileNameWithoutExtension(item)}`].join("/");
71
- // return getFileNameWithoutExtension(item);
27
+ async ensureDirectoryExists(dirPath) {
28
+ try {
29
+ if (fsSync.existsSync(dirPath)) {
30
+ await fs.rm(dirPath, { recursive: true });
72
31
  }
73
- return null;
74
- })
75
- .filter((x) => x);
76
- const duplicate = __list.filter((item, index) => __list.indexOf(item) !== index);
77
- if (toBool(duplicate))
78
- console.log("Duplicate :>> ", duplicate);
79
- if (duplicate.length >= 1) {
80
- console.error("Tìm thấy hình giống tên nhau nhưng khác extension, không thực hiện convert !");
32
+ await fs.mkdir(dirPath, { recursive: true });
81
33
  }
82
- for (let i = 0; i < duplicate.length; i++) {
83
- const element = duplicate[i];
84
- //
85
- const ___list = list.filter((x) => {
86
- return x.indexOf(`${element}.`) >= 0;
87
- });
88
- console.log("Vui lòng đổi tên :>> ", ___list);
34
+ catch (error) {
35
+ throw new Error(`Failed to create directory ${dirPath}: ${error}`);
89
36
  }
90
- return duplicate.length >= 1;
91
- };
92
- if (checkSameName()) {
93
- return;
94
37
  }
95
- const MAX_PROCESSING = 10;
96
- let index = 0;
97
- const startConvert = () => {
98
- if (fs.existsSync(dirFolderWebp)) {
99
- fs.rmSync(dirFolderWebp, { recursive: true });
38
+ async validateDirectory() {
39
+ try {
40
+ const stats = await fs.lstat(this.options.dir);
41
+ if (!stats.isDirectory()) {
42
+ throw new Error("Path is not a directory");
43
+ }
44
+ }
45
+ catch (error) {
46
+ throw new Error(`Invalid directory: ${this.options.dir}`);
100
47
  }
101
- fs.mkdirSync(dirFolderWebp, { recursive: true });
102
- if (isCreateThumb) {
103
- if (fs.existsSync(dirFolderThumb)) {
104
- fs.rmSync(dirFolderThumb, { recursive: true });
48
+ }
49
+ checkForDuplicateNames(files) {
50
+ const nameMap = new Map();
51
+ files.forEach((file) => {
52
+ if (isImageSupported(file)) {
53
+ const nameWithoutExt = getFileNameWithoutExtension(file);
54
+ const relativePath = path.dirname(file.replace(this.options.dir, ""));
55
+ const key = path.join(relativePath, nameWithoutExt);
56
+ if (!nameMap.has(key)) {
57
+ nameMap.set(key, []);
58
+ }
59
+ nameMap.get(key).push(file);
60
+ }
61
+ });
62
+ const duplicates = [];
63
+ nameMap.forEach((files, name) => {
64
+ if (files.length > 1) {
65
+ duplicates.push(...files);
66
+ console.warn(`⚠️ Duplicate names found for: ${name}`);
67
+ console.warn(` Files: ${files.join(", ")}`);
105
68
  }
106
- fs.mkdirSync(dirFolderThumb, { recursive: true });
69
+ });
70
+ return duplicates;
71
+ }
72
+ async convertSingleImage(task) {
73
+ const { inputPath, index, total } = task;
74
+ try {
75
+ // console.log(`📸 [${index}/${total}] Processing: ${path.basename(inputPath)}`);
76
+ const normalizedPath = inputPath.replace(/\\/g, "/");
77
+ const fileExt = getFileExtension(normalizedPath);
78
+ const isSupported = isImageSupported(normalizedPath);
79
+ // Handle non-image files
80
+ if (!isSupported) {
81
+ const outputPath = normalizedPath.replace(this.options.dir, this.outputDirWebp);
82
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
83
+ await fs.copyFile(normalizedPath, outputPath);
84
+ return {
85
+ success: true,
86
+ input: inputPath,
87
+ output: outputPath,
88
+ };
89
+ }
90
+ // Convert image to WebP
91
+ const result = await convertToWebpByPath(normalizedPath);
92
+ // Handle main WebP file
93
+ const webpOutputPath = normalizedPath.replace(this.options.dir, this.outputDirWebp).replace(`.${fileExt}`, ".webp");
94
+ await fs.mkdir(path.dirname(webpOutputPath), { recursive: true });
95
+ await fs.copyFile(result === null || result === void 0 ? void 0 : result.large, webpOutputPath);
96
+ await fs.rm(result === null || result === void 0 ? void 0 : result.large);
97
+ // // Handle thumbnail if requested
98
+ // if (this.options.thumb && result.small) {
99
+ // const thumbOutputPath = normalizedPath.replace(this.options.dir, this.outputDirThumb).replace(`.${fileExt}`, ".webp");
100
+ // await fs.mkdir(path.dirname(thumbOutputPath), { recursive: true });
101
+ // await fs.copyFile(result.small, thumbOutputPath);
102
+ // await fs.rm(result.small);
103
+ // }
104
+ return {
105
+ success: true,
106
+ input: inputPath,
107
+ output: webpOutputPath,
108
+ };
107
109
  }
108
- //
109
- index = -1;
110
- for (let i = 0; i < MAX_PROCESSING; i++) {
111
- walkOne();
110
+ catch (error) {
111
+ return {
112
+ success: false,
113
+ input: inputPath,
114
+ error: error instanceof Error ? error.message : String(error),
115
+ };
112
116
  }
113
- };
114
- const walkOne = async () => {
115
- //
116
- index++;
117
- if (index == list.length) {
118
- index++;
119
- setTimeout(() => {
120
- try {
121
- fs.rmSync(".temp", { recursive: true });
122
- console.log("DONE !");
117
+ }
118
+ createWorker() {
119
+ return async (task) => {
120
+ try {
121
+ const result = await this.convertSingleImage(task);
122
+ this.results.push(result);
123
+ this.processedCount++;
124
+ if (!result.success) {
125
+ console.error(`❌ Failed to convert ${task.inputPath}: ${result.error}`);
126
+ }
127
+ else {
128
+ console.log(`✔ [${this.processedCount}/${task.total}] Completed: ${path.basename(task.inputPath)}`);
123
129
  }
124
- catch (error) {
125
- console.error(`metname error`, error);
130
+ }
131
+ catch (error) {
132
+ const errorResult = {
133
+ success: false,
134
+ input: task.inputPath,
135
+ error: error instanceof Error ? error.message : String(error),
136
+ };
137
+ this.results.push(errorResult);
138
+ this.processedCount++;
139
+ console.error(`❌ Worker error for ${task.inputPath}:`, error);
140
+ }
141
+ };
142
+ }
143
+ async processWithQueue(files) {
144
+ return new Promise((resolve, reject) => {
145
+ const concurrency = this.options.concurrency || 10;
146
+ console.log(`🚀 Starting conversion of ${files.length} files with concurrency: ${concurrency}`);
147
+ // Create the queue with our worker function
148
+ const q = queue(this.createWorker(), concurrency);
149
+ // Set up queue event handlers
150
+ q.error((error, task) => {
151
+ console.error("Queue error occurred:", error);
152
+ console.error("Failed task:", task);
153
+ });
154
+ q.drain(() => {
155
+ console.log("\n🎯 All tasks completed!");
156
+ resolve(this.results);
157
+ });
158
+ // Add progress monitoring
159
+ // let lastProgress = 0;
160
+ // q.saturated(() => {
161
+ // console.log("🔥 Queue is running at full capacity");
162
+ // });
163
+ q.empty(() => {
164
+ console.log("📭 Queue is empty, waiting for workers to finish...");
165
+ });
166
+ // Create tasks and add them to the queue
167
+ const tasks = files.map((file, index) => ({
168
+ inputPath: file,
169
+ index: index + 1,
170
+ total: files.length,
171
+ }));
172
+ // Add all tasks to the queue
173
+ q.push(tasks, (error) => {
174
+ if (error) {
175
+ console.error("Task completion error:", error);
126
176
  }
127
- }, 5000);
128
- return;
177
+ });
178
+ // Handle the case where there are no files
179
+ if (files.length === 0) {
180
+ resolve([]);
181
+ }
182
+ });
183
+ }
184
+ async cleanup() {
185
+ try {
186
+ if (fsSync.existsSync(".temp")) {
187
+ await fs.rm(".temp", { recursive: true });
188
+ }
129
189
  }
130
- if (index >= list.length) {
131
- return;
190
+ catch (error) {
191
+ console.warn("⚠️ Warning: Failed to cleanup temp directory:", error);
132
192
  }
133
- await convertOneObject(list[index]);
134
- walkOne();
135
- };
136
- const convertOneObject = async (url) => {
137
- if (!url) {
138
- return;
193
+ }
194
+ printSummary(results) {
195
+ const successful = results.filter((r) => r.success).length;
196
+ const failed = results.filter((r) => !r.success).length;
197
+ console.log("\n" + "=".repeat(50));
198
+ console.log("📊 CONVERSION SUMMARY");
199
+ console.log("=".repeat(50));
200
+ console.log(`✔ Successful: ${successful}`);
201
+ console.log(`❌ Failed: ${failed}`);
202
+ console.log(`📁 Output directory: ${this.outputDirWebp}`);
203
+ if (this.options.thumb) {
204
+ console.log(`🖼️ Thumbnail directory: ${this.outputDirThumb}`);
139
205
  }
140
- console.log(`${index + 1}/${list.length}: ${url}`);
141
- url = url.replace("\\", "/");
142
- const fileExt = getFileExtension(url);
143
- const supported = isImageSupported(url);
144
- if (!supported) {
145
- fs.cpSync(url, url.replace(dirName, dirFolderWebp), { recursive: true });
146
- return;
206
+ if (failed > 0) {
207
+ console.log("\n❌ Failed conversions:");
208
+ results.filter((r) => !r.success).forEach((r) => console.log(` • ${path.basename(r.input)}: ${r.error}`));
147
209
  }
210
+ console.log("=".repeat(50));
211
+ }
212
+ async convert() {
148
213
  try {
149
- const res = await convertToWebpByPath(url, { maxSize, small: isCreateThumb });
150
- const large = res.large;
151
- fs.cpSync(large, url.replace(dirName, dirFolderWebp).replace(`.${fileExt}`, ".webp"), { recursive: true });
152
- fs.rmSync(large);
153
- if (isCreateThumb) {
154
- const small = res.small;
155
- fs.cpSync(small, url.replace(dirName, dirFolderThumb).replace(`.${fileExt}`, ".webp"), { recursive: true });
156
- fs.rmSync(small);
214
+ // Reset state
215
+ this.results = [];
216
+ this.processedCount = 0;
217
+ // Validate input directory
218
+ await this.validateDirectory();
219
+ // Get all files
220
+ const files = getAllFiles(this.options.dir);
221
+ if (files.length === 0) {
222
+ console.log("📂 No files found in the specified directory.");
223
+ return;
157
224
  }
225
+ // Check for duplicate names
226
+ const duplicates = this.checkForDuplicateNames(files);
227
+ if (duplicates.length > 0) {
228
+ throw new Error("Cannot proceed: Found files with duplicate names but different extensions.");
229
+ }
230
+ // Setup output directories
231
+ await this.ensureDirectoryExists(this.outputDirWebp);
232
+ if (this.options.thumb) {
233
+ await this.ensureDirectoryExists(this.outputDirThumb);
234
+ }
235
+ // Process files using async queue
236
+ const results = await this.processWithQueue(files);
237
+ // Cleanup and summary
238
+ await this.cleanup();
239
+ this.printSummary(results);
158
240
  }
159
241
  catch (error) {
160
- console.error(`convertOneObject error`, error);
242
+ console.error("💥 Conversion failed:", error instanceof Error ? error.message : String(error));
243
+ throw error;
161
244
  }
245
+ }
246
+ }
247
+ async function parseArguments() {
248
+ const argv = await yargs(process.argv.slice(2))
249
+ .usage("Usage: $0 [options]")
250
+ .example('$0 --dir "./images" --thumb --maxsize 2048 --concurrency 5', "Convert images with 5 concurrent workers")
251
+ .option("dir", {
252
+ alias: "d",
253
+ describe: "Source directory containing images",
254
+ type: "string",
255
+ demandOption: true,
256
+ })
257
+ .option("thumb", {
258
+ alias: "t",
259
+ describe: "Generate thumbnails",
260
+ type: "boolean",
261
+ default: false,
262
+ })
263
+ .option("maxsize", {
264
+ alias: "m",
265
+ describe: "Maximum size for converted images",
266
+ type: "number",
267
+ default: 4096,
268
+ })
269
+ .option("concurrency", {
270
+ alias: "c",
271
+ describe: "Number of concurrent workers",
272
+ type: "number",
273
+ default: 12,
274
+ })
275
+ .help("h")
276
+ .alias("h", "help")
277
+ .epilog(`Version: ${version}`)
278
+ .parseAsync();
279
+ return {
280
+ dir: argv.dir,
281
+ thumb: argv.thumb,
282
+ maxsize: argv.maxsize,
283
+ concurrency: argv.concurrency,
162
284
  };
163
- startConvert();
164
- //
165
- })();
285
+ }
286
+ async function main() {
287
+ try {
288
+ console.log(`🎨 Image Converter v${version}`);
289
+ console.log("=".repeat(30));
290
+ const options = await parseArguments();
291
+ console.log(`📁 Source: ${options.dir}`);
292
+ console.log(`📏 Max size: ${options.maxsize}px`);
293
+ console.log(`🖼️ Generate thumbnails: ${options.thumb ? "Yes" : "No"}`);
294
+ console.log(`⚡ Concurrency: ${options.concurrency}`);
295
+ console.log("=".repeat(30));
296
+ const converter = new ImageConverter(options);
297
+ await converter.convert();
298
+ console.log("🎉 All done!");
299
+ }
300
+ catch (error) {
301
+ console.error("💥 Application error:", error instanceof Error ? error.message : String(error));
302
+ process.exit(1);
303
+ }
304
+ }
305
+ // Handle unhandled promise rejections
306
+ process.on("unhandledRejection", (reason, promise) => {
307
+ console.error("Unhandled Rejection at:", promise, "reason:", reason);
308
+ process.exit(1);
309
+ });
310
+ // Run the application
311
+ main();
166
312
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diginext-img-magic-cli",
3
- "version": "0.1.6",
3
+ "version": "0.2.2",
4
4
  "sideEffects": false,
5
5
  "readme": "README.md",
6
6
  "bin": {
@@ -27,9 +27,8 @@
27
27
  "esm"
28
28
  ],
29
29
  "scripts": {
30
- "build": "npm run prebuild && tsc --module commonjs --outDir dist && tsc --module esnext --outDir esm && npm run test",
30
+ "build": "tsc --module commonjs --outDir dist && tsc --module esnext --outDir esm ",
31
31
  "build_tsup": "tsup src/**/*.ts --format esm,cjs --dts --legacy-output",
32
- "prebuild": "run-script-os || exit 0",
33
32
  "prebuild:win32": "rd /S /Q dist esm",
34
33
  "prebuild:darwin:linux": "rm -rf dist && rm -rf esm",
35
34
  "prebuild:default": "rm -rf dist && rm -rf esm",
@@ -40,31 +39,33 @@
40
39
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
41
40
  },
42
41
  "dependencies": {
43
- "@types/jest": "^29.4.4",
44
- "@types/node": "^18.15.3",
45
- "concurrently": "^7.6.0",
46
- "core-js": "^3.29.1",
47
- "dayjs": "^1.11.7",
48
- "diginext-img-magic": "0.1.3",
42
+ "@types/jest": "29.4.4",
43
+ "@types/node": "18.15.3",
44
+ "async": "3.2.6",
45
+ "concurrently": "7.6.0",
46
+ "core-js": "3.29.1",
47
+ "dayjs": "1.11.7",
48
+ "diginext-img-magic": "1.0.1",
49
49
  "diginext-utils": "3.11.3",
50
- "dotenv": "^16.0.3",
51
- "esm": "^3.2.25",
52
- "jimp": "^0.22.4",
50
+ "dotenv": "16.0.3",
51
+ "esm": "3.2.25",
52
+ "jimp": "0.22.4",
53
53
  "tsconfig": "*",
54
- "tsup": "^6.6.3",
55
- "typescript": "^4.9.5",
56
- "webp-converter": "^2.3.3",
57
- "yargs": "^17.7.1"
54
+ "tsup": "6.6.3",
55
+ "typescript": "4.9.5",
56
+ "webp-converter": "2.3.3",
57
+ "yargs": "17.7.1"
58
58
  },
59
59
  "publishConfig": {
60
60
  "access": "public"
61
61
  },
62
62
  "devDependencies": {
63
- "@types/yargs": "^17.0.22",
64
- "eslint": "^8.36.0",
65
- "eslint-plugin-import": "^2.27.5",
66
- "esm": "^3.2.25",
67
- "mocha": "^10.2.0",
68
- "run-script-os": "^1.1.6"
63
+ "@types/async": "3.2.24",
64
+ "@types/yargs": "17.0.22",
65
+ "eslint": "8.36.0",
66
+ "eslint-plugin-import": "2.27.5",
67
+ "esm": "3.2.25",
68
+ "mocha": "10.2.0",
69
+ "run-script-os": "1.1.6"
69
70
  }
70
71
  }