diginext-img-magic-cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ ## Support
2
+
3
+ Liên hệ [TOP GROUP Developers](mailto:dev@wearetopgroup.com) nếu cần hỗ trợ.
4
+
5
+ or not, please not
package/bin/towebp ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ require = require("esm")(module /*, options*/);
3
+ require("../dist/index");
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const yargs_1 = __importDefault(require("yargs"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const diginext_img_magic_1 = require("diginext-img-magic");
9
+ const isImageSupported_1 = __importDefault(require("diginext-img-magic/dist/compress/isImageSupported"));
10
+ const url_1 = require("diginext-utils/dist/string/url");
11
+ const getAllFiles_1 = __importDefault(require("plugins/getAllFiles"));
12
+ const { compress } = require("compress-images/promise");
13
+ // import { hideBin } from "yargs/helpers";
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
+ // .demandOption(["p"])
20
+ .alias("d", "dir")
21
+ .describe("d", "Directory")
22
+ .option("dir", {
23
+ string: true,
24
+ })
25
+ .help("h")
26
+ .alias("h", "help")
27
+ .epilog("copyright 2023").argv;
28
+ let dirName;
29
+ if (Array.isArray(argv.dir)) {
30
+ dirName = argv.dir[1] === true ? "" : argv.dir[1];
31
+ if (!dirName) {
32
+ console.log("NEED DIRECTORY!");
33
+ return;
34
+ }
35
+ }
36
+ else {
37
+ dirName = argv === true ? "" : argv.dir;
38
+ if (!dirName) {
39
+ console.log("NEED DIRECTORY!");
40
+ return;
41
+ }
42
+ }
43
+ if (!fs_1.default.lstatSync(dirName).isDirectory()) {
44
+ //
45
+ console.log("Please use a directory!");
46
+ return;
47
+ }
48
+ console.log("dirName :>> ", dirName);
49
+ dirName = dirName.replace(/\\/g, "/");
50
+ const folderName = (0, url_1.getFileNameWithoutExtension)(dirName);
51
+ console.log("folderName :>> ", folderName);
52
+ // const arr = dirName.split("/");
53
+ // console.log("arr :>> ", dirName.split("/").pop());
54
+ const folderNameWebp = `${folderName}-webp`;
55
+ const dirFolderWebp = [...dirName.split("/").slice(0, -1), folderNameWebp].join("/");
56
+ const folderNameThumb = `${folderName}-thumb-webp`;
57
+ const dirFolderThumb = [...dirName.split("/").slice(0, -1), folderNameThumb].join("/");
58
+ console.log("dirFolderWebp :>> ", dirFolderWebp);
59
+ console.log("dirFolderThumb :>> ", dirFolderThumb);
60
+ const list = (0, getAllFiles_1.default)(dirName);
61
+ const checkSameName = () => {
62
+ const __list = list
63
+ .map((item) => {
64
+ const supported = (0, isImageSupported_1.default)(item);
65
+ if (supported) {
66
+ return [...item.split("/").slice(0, -1), `${(0, url_1.getFileNameWithoutExtension)(item)}`].join("/");
67
+ // return getFileNameWithoutExtension(item);
68
+ }
69
+ return null;
70
+ })
71
+ .filter((x) => x);
72
+ const duplicate = __list.filter((item, index) => __list.indexOf(item) !== index);
73
+ if (duplicate.length >= 1) {
74
+ console.log("!!!");
75
+ 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 !");
76
+ }
77
+ for (let i = 0; i < duplicate.length; i++) {
78
+ const element = duplicate[i];
79
+ //
80
+ const ___list = list.filter((x) => {
81
+ return x.indexOf(`${element}.`) >= 0;
82
+ });
83
+ console.log("Vui lòng đổi tên :>> ", ___list);
84
+ }
85
+ return duplicate.length >= 1;
86
+ };
87
+ if (checkSameName()) {
88
+ return;
89
+ }
90
+ const MAX_PROCESSING = 10;
91
+ let index = 0;
92
+ const startConvert = () => {
93
+ if (fs_1.default.existsSync(dirFolderWebp)) {
94
+ fs_1.default.rmSync(dirFolderWebp, { recursive: true });
95
+ }
96
+ fs_1.default.mkdirSync(dirFolderWebp, { recursive: true });
97
+ if (fs_1.default.existsSync(dirFolderThumb)) {
98
+ fs_1.default.rmSync(dirFolderThumb, { recursive: true });
99
+ }
100
+ fs_1.default.mkdirSync(dirFolderThumb, { recursive: true });
101
+ //
102
+ index = -1;
103
+ for (let i = 0; i < MAX_PROCESSING; i++) {
104
+ walkOne();
105
+ }
106
+ };
107
+ const walkOne = async () => {
108
+ //
109
+ index++;
110
+ if (index == list.length) {
111
+ console.log("DONE !");
112
+ index++;
113
+ return;
114
+ }
115
+ if (index >= list.length) {
116
+ return;
117
+ }
118
+ await convertOneObject(list[index]);
119
+ walkOne();
120
+ };
121
+ const convertOneObject = async (url) => {
122
+ if (!url) {
123
+ return;
124
+ }
125
+ console.log(`${index + 1}/${list.length} -> ${url}`);
126
+ url = url.replace("\\", "/");
127
+ const fileExt = (0, url_1.getFileExtension)(url);
128
+ const supported = (0, isImageSupported_1.default)(url);
129
+ if (!supported) {
130
+ fs_1.default.cpSync(url, url.replace(dirName, dirFolderWebp), { recursive: true });
131
+ return;
132
+ }
133
+ const { large, small } = await (0, diginext_img_magic_1.convertToWebpByPath)(url);
134
+ fs_1.default.cpSync(large, url.replace(dirName, dirFolderWebp).replace(`.${fileExt}`, ".webp"), { recursive: true });
135
+ fs_1.default.cpSync(small, url.replace(dirName, dirFolderThumb).replace(`.${fileExt}`, ".webp"), { recursive: true });
136
+ try {
137
+ fs_1.default.unlinkSync(large);
138
+ fs_1.default.unlinkSync(small);
139
+ }
140
+ catch (error) {
141
+ console.error(`metname error`, error);
142
+ }
143
+ };
144
+ startConvert();
145
+ //
146
+ })();
147
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const getAllFiles: (dirPath: string, arrayOfFiles?: Array<string>) => string[];
2
+ export default getAllFiles;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const getAllFiles = function (dirPath, arrayOfFiles) {
9
+ const files = fs_1.default.readdirSync(dirPath);
10
+ arrayOfFiles = arrayOfFiles || [];
11
+ files.forEach(function (file) {
12
+ if (fs_1.default.statSync(dirPath + "/" + file).isDirectory()) {
13
+ arrayOfFiles = getAllFiles(dirPath + "/" + file, arrayOfFiles);
14
+ }
15
+ else {
16
+ const __path = path_1.default.join(dirPath, "/", file).replace(/\\/g, "/");
17
+ if (arrayOfFiles)
18
+ arrayOfFiles.push(__path);
19
+ }
20
+ });
21
+ return arrayOfFiles;
22
+ };
23
+ exports.default = getAllFiles;
24
+ //# sourceMappingURL=getAllFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAllFiles.js","sourceRoot":"","sources":["../../src/plugins/getAllFiles.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,WAAW,GAAG,UAAU,OAAe,EAAE,YAA4B;IAC1E,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI;QAC3B,IAAI,YAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;YACpD,YAAY,GAAG,WAAW,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC;SAC/D;aAAM;YACN,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,YAAY;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5C;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
package/esm/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/esm/index.js ADDED
@@ -0,0 +1,142 @@
1
+ import yargs from "yargs";
2
+ import fs from "fs";
3
+ import { convertToWebpByPath } from "diginext-img-magic";
4
+ import isImageSupported from "diginext-img-magic/dist/compress/isImageSupported";
5
+ import { getFileExtension, getFileNameWithoutExtension } from "diginext-utils/dist/string/url";
6
+ import getAllFiles from "plugins/getAllFiles";
7
+ const { compress } = require("compress-images/promise");
8
+ // import { hideBin } from "yargs/helpers";
9
+ (async () => {
10
+ //
11
+ const argv = yargs(process.argv.slice(2))
12
+ .usage("Usage: $0 <command> [options]")
13
+ .example('$0 --dir "dir"', "")
14
+ // .demandOption(["p"])
15
+ .alias("d", "dir")
16
+ .describe("d", "Directory")
17
+ .option("dir", {
18
+ string: true,
19
+ })
20
+ .help("h")
21
+ .alias("h", "help")
22
+ .epilog("copyright 2023").argv;
23
+ let dirName;
24
+ if (Array.isArray(argv.dir)) {
25
+ dirName = argv.dir[1] === true ? "" : argv.dir[1];
26
+ if (!dirName) {
27
+ console.log("NEED DIRECTORY!");
28
+ return;
29
+ }
30
+ }
31
+ else {
32
+ dirName = argv === true ? "" : argv.dir;
33
+ if (!dirName) {
34
+ console.log("NEED DIRECTORY!");
35
+ return;
36
+ }
37
+ }
38
+ if (!fs.lstatSync(dirName).isDirectory()) {
39
+ //
40
+ console.log("Please use a directory!");
41
+ return;
42
+ }
43
+ console.log("dirName :>> ", dirName);
44
+ dirName = dirName.replace(/\\/g, "/");
45
+ const folderName = getFileNameWithoutExtension(dirName);
46
+ console.log("folderName :>> ", folderName);
47
+ // const arr = dirName.split("/");
48
+ // console.log("arr :>> ", dirName.split("/").pop());
49
+ const folderNameWebp = `${folderName}-webp`;
50
+ const dirFolderWebp = [...dirName.split("/").slice(0, -1), folderNameWebp].join("/");
51
+ const folderNameThumb = `${folderName}-thumb-webp`;
52
+ const dirFolderThumb = [...dirName.split("/").slice(0, -1), folderNameThumb].join("/");
53
+ console.log("dirFolderWebp :>> ", dirFolderWebp);
54
+ console.log("dirFolderThumb :>> ", dirFolderThumb);
55
+ const list = getAllFiles(dirName);
56
+ const checkSameName = () => {
57
+ const __list = list
58
+ .map((item) => {
59
+ const supported = isImageSupported(item);
60
+ if (supported) {
61
+ return [...item.split("/").slice(0, -1), `${getFileNameWithoutExtension(item)}`].join("/");
62
+ // return getFileNameWithoutExtension(item);
63
+ }
64
+ return null;
65
+ })
66
+ .filter((x) => x);
67
+ const duplicate = __list.filter((item, index) => __list.indexOf(item) !== index);
68
+ if (duplicate.length >= 1) {
69
+ console.log("!!!");
70
+ 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 !");
71
+ }
72
+ for (let i = 0; i < duplicate.length; i++) {
73
+ const element = duplicate[i];
74
+ //
75
+ const ___list = list.filter((x) => {
76
+ return x.indexOf(`${element}.`) >= 0;
77
+ });
78
+ console.log("Vui lòng đổi tên :>> ", ___list);
79
+ }
80
+ return duplicate.length >= 1;
81
+ };
82
+ if (checkSameName()) {
83
+ return;
84
+ }
85
+ const MAX_PROCESSING = 10;
86
+ let index = 0;
87
+ const startConvert = () => {
88
+ if (fs.existsSync(dirFolderWebp)) {
89
+ fs.rmSync(dirFolderWebp, { recursive: true });
90
+ }
91
+ fs.mkdirSync(dirFolderWebp, { recursive: true });
92
+ if (fs.existsSync(dirFolderThumb)) {
93
+ fs.rmSync(dirFolderThumb, { recursive: true });
94
+ }
95
+ fs.mkdirSync(dirFolderThumb, { recursive: true });
96
+ //
97
+ index = -1;
98
+ for (let i = 0; i < MAX_PROCESSING; i++) {
99
+ walkOne();
100
+ }
101
+ };
102
+ const walkOne = async () => {
103
+ //
104
+ index++;
105
+ if (index == list.length) {
106
+ console.log("DONE !");
107
+ index++;
108
+ return;
109
+ }
110
+ if (index >= list.length) {
111
+ return;
112
+ }
113
+ await convertOneObject(list[index]);
114
+ walkOne();
115
+ };
116
+ const convertOneObject = async (url) => {
117
+ if (!url) {
118
+ return;
119
+ }
120
+ console.log(`${index + 1}/${list.length} -> ${url}`);
121
+ url = url.replace("\\", "/");
122
+ const fileExt = getFileExtension(url);
123
+ const supported = isImageSupported(url);
124
+ if (!supported) {
125
+ fs.cpSync(url, url.replace(dirName, dirFolderWebp), { recursive: true });
126
+ return;
127
+ }
128
+ const { large, small } = await convertToWebpByPath(url);
129
+ fs.cpSync(large, url.replace(dirName, dirFolderWebp).replace(`.${fileExt}`, ".webp"), { recursive: true });
130
+ fs.cpSync(small, url.replace(dirName, dirFolderThumb).replace(`.${fileExt}`, ".webp"), { recursive: true });
131
+ try {
132
+ fs.unlinkSync(large);
133
+ fs.unlinkSync(small);
134
+ }
135
+ catch (error) {
136
+ console.error(`metname error`, error);
137
+ }
138
+ };
139
+ startConvert();
140
+ //
141
+ })();
142
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,gBAAgB,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE/F,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAExD,2CAA2C;AAE3C,CAAC,KAAK,IAAI,EAAE;IACX,EAAE;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvC,KAAK,CAAC,+BAA+B,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAE9B,uBAAuB;SAEtB,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,IAAI,CAAC,GAAG,CAAC;SACT,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;SAClB,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAW,CAAC;IAEvC,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,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACzC,EAAE;QACF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO;KACP;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAErC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAE3C,kCAAkC;IAClC,qDAAqD;IACrD,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,oBAAoB,EAAE,aAAa,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAG,WAAW,CAAC,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,gBAAgB,CAAC,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,2BAA2B,CAAC,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;QAEjF,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,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,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACjC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9C;QACD,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAClC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/C;QACD,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,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,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,EAAE,CAAC;YACR,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,OAAO,GAAG,EAAE,CAAC,CAAC;QAErD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,EAAE;YACf,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,OAAO;SACP;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAExD,EAAE,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;QAC3G,EAAE,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;QAE5G,IAAI;YACH,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrB,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACrB;QAAC,OAAO,KAAK,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC,CAAC;IAEF,YAAY,EAAE,CAAC;IACf,EAAE;AACH,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const getAllFiles: (dirPath: string, arrayOfFiles?: Array<string>) => string[];
2
+ export default getAllFiles;
@@ -0,0 +1,19 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ const getAllFiles = function (dirPath, arrayOfFiles) {
4
+ const files = fs.readdirSync(dirPath);
5
+ arrayOfFiles = arrayOfFiles || [];
6
+ files.forEach(function (file) {
7
+ if (fs.statSync(dirPath + "/" + file).isDirectory()) {
8
+ arrayOfFiles = getAllFiles(dirPath + "/" + file, arrayOfFiles);
9
+ }
10
+ else {
11
+ const __path = path.join(dirPath, "/", file).replace(/\\/g, "/");
12
+ if (arrayOfFiles)
13
+ arrayOfFiles.push(__path);
14
+ }
15
+ });
16
+ return arrayOfFiles;
17
+ };
18
+ export default getAllFiles;
19
+ //# sourceMappingURL=getAllFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAllFiles.js","sourceRoot":"","sources":["../../src/plugins/getAllFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,GAAG,UAAU,OAAe,EAAE,YAA4B;IAC1E,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI;QAC3B,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;YACpD,YAAY,GAAG,WAAW,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC;SAC/D;aAAM;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,YAAY;gBAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5C;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "diginext-img-magic-cli",
3
+ "version": "0.0.1",
4
+ "sideEffects": false,
5
+ "readme": "README.md",
6
+ "bin": {
7
+ "towebp": "bin/towebp"
8
+ },
9
+ "homepage": "https://wearetopgroup.com",
10
+ "author": {
11
+ "name": "TOP GROUP (a.k.a Digitop)",
12
+ "email": "dev@wearetopgroup.com"
13
+ },
14
+ "keywords": [
15
+ "utils",
16
+ "plugins",
17
+ "diginext",
18
+ "diginext-img-magic-cli",
19
+ "utilities",
20
+ "helper",
21
+ "extra"
22
+ ],
23
+ "main": "./dist/index.js",
24
+ "files": [
25
+ "bin",
26
+ "dist",
27
+ "esm"
28
+ ],
29
+ "scripts": {
30
+ "build": "npm run prebuild && tsc --module commonjs --outDir dist && tsc --module esnext --outDir esm && npm run test",
31
+ "build_tsup": "tsup src/**/*.ts --format esm,cjs --dts --legacy-output",
32
+ "prebuild": "rm -rf dist && rm -rf esm",
33
+ "release": "npm run prebuild && npm run build && npm run publish",
34
+ "dev": "npm run prebuild && concurrently \"tsup src/**/*.ts --format esm,cjs --dts --watch\"",
35
+ "test": "mocha test/*.test.js",
36
+ "publish": "npm run build && npm run test && npm publish",
37
+ "lint": "TIMING=1 eslint src --fix",
38
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
39
+ },
40
+ "dependencies": {
41
+ "@types/jest": "^29.4.4",
42
+ "@types/node": "^18.15.3",
43
+ "compress-images": "^2.0.5",
44
+ "concurrently": "^7.6.0",
45
+ "core-js": "^3.29.1",
46
+ "dayjs": "^1.11.7",
47
+ "diginext-img-magic": "0.0.7",
48
+ "diginext-utils": "2.1.18",
49
+ "dotenv": "^16.0.3",
50
+ "esm": "^3.2.25",
51
+ "jimp": "^0.22.4",
52
+ "tsconfig": "*",
53
+ "tsup": "^6.6.3",
54
+ "typescript": "^4.9.5",
55
+ "webp-converter": "^2.3.3",
56
+ "yargs": "^17.7.1"
57
+ },
58
+ "publishConfig": {
59
+ "access": "public"
60
+ },
61
+ "devDependencies": {
62
+ "@types/yargs": "^17.0.22",
63
+ "eslint": "^8.36.0",
64
+ "eslint-plugin-import": "^2.27.5",
65
+ "esm": "^3.2.25",
66
+ "mocha": "^10.2.0"
67
+ }
68
+ }