uglify-js-minify-css-allfiles 2.0.4 → 2.1.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.
@@ -1,115 +1,194 @@
1
- /**
2
- * Logger module for handling log operations.
3
- * @module logger
4
- */
5
-
6
1
  import fs from 'fs/promises';
7
2
  import path from 'path';
8
3
 
9
- /**
10
- * Get current formatted time string
11
- * @returns {string} Formatted time string
12
- */
13
- function getCurrentTime() {
14
- const now = new Date();
15
- return now.toLocaleString('en-US', {
16
- year: 'numeric',
17
- month: '2-digit',
18
- day: '2-digit',
19
- hour: '2-digit',
20
- minute: '2-digit',
21
- second: '2-digit',
22
- hour12: false,
23
- });
24
- }
25
-
26
- /**
27
- * Logger class for handling log operations.
28
- * @class
29
- */
30
4
  class Logger {
31
- /**
32
- * Create a Logger instance.
33
- * @param {string} [logDir='logs'] - The directory to store log files.
34
- */
35
- constructor(logDir = 'logs') {
36
- this.logDir = logDir;
37
- this.errorCount = 0;
38
- this.errorFiles = [];
5
+ static LOG_LEVELS = {
6
+ error: 0,
7
+ warn: 1,
8
+ info: 2,
9
+ debug: 3,
10
+ };
11
+
12
+ static DEFAULT_LOG_LEVEL = 'info';
13
+
14
+ constructor(options = {}) {
15
+ const {
16
+ logDir = 'logs',
17
+ retentionDays = 30,
18
+ logLevel = Logger.DEFAULT_LOG_LEVEL,
19
+ dateFormat = 'YYYY-MM-DD',
20
+ timeZone = 'UTC',
21
+ logToConsole = true,
22
+ logToFile = true,
23
+ } = options;
24
+
25
+ this.logDir = logDir;
26
+ this.retentionDays = retentionDays;
27
+ this.dateFormat = dateFormat;
28
+ this.timeZone = timeZone;
29
+ this.logToConsole = logToConsole;
30
+ this.logToFile = logToFile;
31
+
32
+ this.errorCount = 0;
33
+ this.errorFiles = new Set();
34
+ this.processedFiles = new Set();
35
+ this.currentDate = this.getCurrentDate();
36
+ this.logFilePath = this.getLogFilePath();
37
+
38
+ this.setLogLevel(logLevel);
39
+ }
40
+
41
+ async initialize() {
42
+ if (this.logToFile) {
43
+ await this.createLogDirectory();
39
44
  }
45
+ await this.cleanOldLogs();
46
+ }
40
47
 
41
- /**
42
- * Initialize the logger by creating the log directory.
43
- * @async
44
- * @returns {Promise<void>}
45
- */
46
- async initialize() {
47
- try {
48
- await fs.mkdir(this.logDir, { recursive: true });
49
- } catch (error) {
50
- console.error(`Failed to create log directory: ${error.message}`);
51
- }
48
+ async createLogDirectory() {
49
+ try {
50
+ await fs.mkdir(this.logDir, { recursive: true });
51
+ } catch (error) {
52
+ console.error(`Failed to create log directory: ${error.message}`);
52
53
  }
54
+ }
53
55
 
54
- /**
55
- * Log an error message and write it to the error log file.
56
- * @async
57
- * @param {string} filePath - The path of the file where the error occurred.
58
- * @param {string} reason - The reason for the error.
59
- * @returns {Promise<void>}
60
- */
61
- async logError(filePath, reason) {
62
- const logMessage = `
63
- =============== File Error ===============
64
- Time: ${getCurrentTime()}
65
- File: ${filePath}
66
- Reason: ${reason}
67
- ==========================================
68
- `;
69
-
70
- console.error(logMessage);
71
- this.errorCount++;
72
- this.errorFiles.push(filePath);
73
-
74
- try {
75
- await fs.appendFile(path.join(this.logDir, 'error.log'), logMessage);
76
- } catch (error) {
77
- console.error(`Failed to write to error log: ${error.message}`);
78
- }
56
+ setLogLevel(level) {
57
+ const normalizedLevel = level.toLowerCase();
58
+ if (normalizedLevel in Logger.LOG_LEVELS) {
59
+ this.logLevel = Logger.LOG_LEVELS[normalizedLevel];
60
+ console.log(`Log level set to "${normalizedLevel}"`);
61
+ } else {
62
+ console.warn(
63
+ `Invalid log level "${level}". Using default level "${Logger.DEFAULT_LOG_LEVEL}".`,
64
+ );
65
+ this.logLevel = Logger.LOG_LEVELS[Logger.DEFAULT_LOG_LEVEL];
66
+ }
67
+ }
68
+
69
+ async log(level, message, metadata = {}) {
70
+ const logLevelValue = Logger.LOG_LEVELS[level.toLowerCase()] ?? Logger.LOG_LEVELS.info;
71
+ if (logLevelValue <= this.logLevel) {
72
+ const logMessage = this.formatLogMessage(level, message, metadata);
73
+
74
+ if (this.logToConsole) {
75
+ console[level.toLowerCase()](logMessage);
76
+ }
77
+
78
+ if (this.logToFile) {
79
+ await this.appendLog(logMessage);
80
+ }
79
81
  }
82
+ }
80
83
 
81
- /**
82
- * Log an informational message to the console.
83
- * @param {string} message - The message to log.
84
- */
85
- logInfo(message) {
86
- console.info(`[${getCurrentTime()}] ${message}`);
84
+ async error(message, metadata = {}) {
85
+ this.errorCount++;
86
+ if (metadata.filePath) {
87
+ this.errorFiles.add(metadata.filePath);
87
88
  }
89
+ await this.log('error', message, metadata);
90
+ }
88
91
 
89
- /**
90
- * Generate and log a summary of the processing results.
91
- * @async
92
- * @returns {Promise<void>}
93
- */
94
- async summarize() {
95
- const summary = `
96
- =============== Processing Summary ===============
97
- Time: ${getCurrentTime()}
98
- Total files processed: ${this.errorCount + this.errorFiles.length}
99
- Files with errors: ${this.errorCount}
100
- Error files:
101
- ${this.errorFiles.map((file, index) => ` ${index + 1}. ${file}`).join('\n')}
102
- ==================================================
103
- `;
104
-
105
- console.info(summary);
106
-
107
- try {
108
- await fs.appendFile(path.join(this.logDir, 'summary.log'), summary);
109
- } catch (error) {
110
- console.error(`Failed to write to summary log: ${error.message}`);
92
+ async warn(message, metadata = {}) {
93
+ await this.log('warn', message, metadata);
94
+ }
95
+
96
+ async info(message, metadata = {}) {
97
+ await this.log('info', message, metadata);
98
+ }
99
+
100
+ async debug(message, metadata = {}) {
101
+ await this.log('debug', message, metadata);
102
+ }
103
+
104
+ incrementProcessedFiles(filePath) {
105
+ this.processedFiles.add(filePath);
106
+ }
107
+
108
+ async summarize() {
109
+ const summary = this.formatSummary();
110
+ await this.log('info', 'Processing Summary', { summary });
111
+ }
112
+
113
+ async appendLog(content) {
114
+ if (this.logToFile) {
115
+ try {
116
+ await this.checkAndRotateLog();
117
+ await fs.appendFile(this.logFilePath, content + '\n');
118
+ } catch (error) {
119
+ console.error(`Failed to write to log file: ${error.message}`);
120
+ }
121
+ }
122
+ }
123
+
124
+ async checkAndRotateLog() {
125
+ const currentDate = this.getCurrentDate();
126
+ if (currentDate !== this.currentDate) {
127
+ this.currentDate = currentDate;
128
+ this.logFilePath = this.getLogFilePath();
129
+ await this.cleanOldLogs();
130
+ }
131
+ }
132
+
133
+ getLogFilePath() {
134
+ return path.join(this.logDir, `log-${this.currentDate}.log`);
135
+ }
136
+
137
+ getCurrentDate() {
138
+ return new Date()
139
+ .toLocaleString('en-US', {
140
+ timeZone: this.timeZone,
141
+ year: 'numeric',
142
+ month: '2-digit',
143
+ day: '2-digit',
144
+ })
145
+ .split(',')[0]
146
+ .replace(/\//g, '-');
147
+ }
148
+
149
+ async cleanOldLogs() {
150
+ if (this.logToFile) {
151
+ try {
152
+ const files = await fs.readdir(this.logDir);
153
+ const now = new Date();
154
+ for (const file of files) {
155
+ const filePath = path.join(this.logDir, file);
156
+ const stats = await fs.stat(filePath);
157
+ const diffDays = (now - stats.mtime) / (1000 * 60 * 60 * 24);
158
+ if (diffDays > this.retentionDays) {
159
+ await fs.unlink(filePath);
160
+ }
111
161
  }
162
+ } catch (error) {
163
+ console.error(`Failed to clean old logs: ${error.message}`);
164
+ }
112
165
  }
166
+ }
167
+
168
+ formatLogMessage(level, message, metadata) {
169
+ const timestamp = new Date().toLocaleString('en-US', {
170
+ timeZone: this.timeZone,
171
+ year: 'numeric',
172
+ month: '2-digit',
173
+ day: '2-digit',
174
+ hour: '2-digit',
175
+ minute: '2-digit',
176
+ second: '2-digit',
177
+ hour12: false,
178
+ });
179
+
180
+ let metadataStr = Object.keys(metadata).length > 0 ? ` ${JSON.stringify(metadata)}` : '';
181
+ return `[${timestamp}] [${level.toUpperCase()}] ${message}${metadataStr}`;
182
+ }
183
+
184
+ formatSummary() {
185
+ return {
186
+ totalFilesProcessed: this.processedFiles.size,
187
+ filesWithErrors: this.errorFiles.size,
188
+ errorCount: this.errorCount,
189
+ errorFiles: Array.from(this.errorFiles),
190
+ };
191
+ }
113
192
  }
114
193
 
115
194
  export default Logger;
@@ -11,7 +11,7 @@ import CleanCSS from 'clean-css';
11
11
  * @constant {Object}
12
12
  */
13
13
  const CSS_OPTIONS = {
14
- level: { 1: { all: false } },
14
+ level: { 1: { all: false } },
15
15
  };
16
16
 
17
17
  /**
@@ -21,11 +21,11 @@ const CSS_OPTIONS = {
21
21
  * @returns {string} The minified JavaScript content.
22
22
  */
23
23
  export function minifyJS(content) {
24
- return uglifyJS(content, {
25
- compress: {
26
- pure_funcs: ['console.log', 'console.error', 'console.warn', 'console.info'],
27
- },
28
- }).code;
24
+ return uglifyJS(content, {
25
+ compress: {
26
+ pure_funcs: ['console.log', 'console.error', 'console.warn', 'console.info'],
27
+ },
28
+ }).code;
29
29
  }
30
30
 
31
31
  /**
@@ -36,7 +36,7 @@ export function minifyJS(content) {
36
36
  * @returns {Promise<Object>} A promise that resolves to the minification result.
37
37
  */
38
38
  export function minifyCSS(content) {
39
- return new Promise((resolve) => {
40
- new CleanCSS(CSS_OPTIONS).minify(content, (error, output) => resolve(output));
41
- });
39
+ return new Promise((resolve) => {
40
+ new CleanCSS(CSS_OPTIONS).minify(content, (error, output) => resolve(output));
41
+ });
42
42
  }
@@ -0,0 +1,65 @@
1
+ [08/20/2024, 07:25:30] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
2
+ [08/20/2024, 07:25:30] [ERROR] Error processing file {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","error":"logger.logError is not a function"}
3
+ [08/20/2024, 07:25:30] [ERROR] Error processing file {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js","error":"logger.logError is not a function"}
4
+ [08/20/2024, 07:25:30] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":0,"errorCount":0,"errorFiles":[]}}
5
+ [08/20/2024, 07:27:25] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
6
+ [08/20/2024, 07:27:25] [ERROR] Error processing file {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","error":"logger.logError is not a function"}
7
+ [08/20/2024, 07:27:25] [ERROR] Error processing file {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js","error":"logger.logError is not a function"}
8
+ [08/20/2024, 07:27:25] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":2,"errorCount":2,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
9
+ [08/20/2024, 07:29:14] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
10
+ [08/20/2024, 07:29:14] [ERROR] Error processing file {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","error":"error is not defined"}
11
+ [08/20/2024, 07:29:14] [ERROR] Babel transformation failed {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js","error":"logger.logError is not a function"}
12
+ [08/20/2024, 07:29:14] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":2,"errorCount":2,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
13
+ [08/20/2024, 07:30:41] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
14
+ [08/20/2024, 07:30:41] [ERROR] Error processing file {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","error":"error is not defined"}
15
+ [08/20/2024, 07:30:41] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"}
16
+ [08/20/2024, 07:30:41] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":2,"errorCount":2,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
17
+ [08/20/2024, 07:34:34] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
18
+ [08/20/2024, 07:34:34] [WARN] CSS minification warnings {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","warnings":["Invalid character(s) '``1212`12' at 9:0. Ignoring.","Invalid property name '12\r\n wi2ddth' at 1:19. Ignoring.","Invalid property name '`122` height' at 3:1. Ignoring."]}
19
+ [08/20/2024, 07:34:34] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
20
+ [08/20/2024, 07:34:34] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"}
21
+ [08/20/2024, 07:34:34] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":1,"errorCount":1,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
22
+ [08/20/2024, 08:28:13] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
23
+ [08/20/2024, 08:28:13] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
24
+ [08/20/2024, 08:28:13] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"}
25
+ [08/20/2024, 08:28:13] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":1,"errorCount":1,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
26
+ [08/20/2024, 08:30:24] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
27
+ [08/20/2024, 08:30:24] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
28
+ [08/20/2024, 08:30:24] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"}
29
+ [08/20/2024, 08:30:24] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":1,"errorCount":1,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
30
+ [08/20/2024, 08:30:52] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
31
+ [08/20/2024, 08:30:52] [ERROR] CSS minification failed {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","warnings":["Invalid character(s) 'qw d' at 8:0. Ignoring.","Invalid property name 'widtqwd as w dh' at 2:2. Ignoring.","Invalid property name 'heig ht' at 3:2. Ignoring.","Invalid property name 'diw qqw ddqw dn' at 6:2. Ignoring."]}
32
+ [08/20/2024, 08:30:52] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
33
+ [08/20/2024, 08:30:52] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"}
34
+ [08/20/2024, 08:30:52] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":2,"errorCount":2,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
35
+ [08/20/2024, 08:31:39] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
36
+ [08/20/2024, 08:31:39] [WARN] CSS minification warnings {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","warnings":["Invalid character(s) 'qw d' at 8:0. Ignoring.","Invalid property name 'widtqwd as w dh' at 2:2. Ignoring.","Invalid property name 'heig ht' at 3:2. Ignoring.","Invalid property name 'diw qqw ddqw dn' at 6:2. Ignoring."]}
37
+ [08/20/2024, 08:31:39] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
38
+ [08/20/2024, 08:31:39] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"}
39
+ [08/20/2024, 08:31:39] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":1,"errorCount":1,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
40
+ [08/20/2024, 09:37:12] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":false}
41
+ [08/20/2024, 09:37:12] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
42
+ [08/20/2024, 09:37:12] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.js
43
+ [08/20/2024, 09:37:12] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":0,"errorCount":0,"errorFiles":[]}}
44
+ [08/20/2024, 09:41:53] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":{"targets":"chrome 40"}}
45
+ [08/20/2024, 09:41:53] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
46
+ [08/20/2024, 09:41:54] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.js
47
+ [08/20/2024, 09:41:54] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":0,"errorCount":0,"errorFiles":[]}}
48
+ [08/20/2024, 09:42:26] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":{"targets":"chrome 40"}}
49
+ [08/20/2024, 09:42:26] [WARN] CSS minification warnings {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","warnings":["Invalid character(s) '.f f asd123weqfqwe\r\n f asdedsf asdfsaday: block;\r\nfasdf fsad2dsf \r\nsdf' at 1:0. Ignoring."]}
50
+ [08/20/2024, 09:42:26] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css"}
51
+ [08/20/2024, 09:42:27] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.js
52
+ [08/20/2024, 09:42:27] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":1,"errorCount":1,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css"]}}
53
+ [08/20/2024, 09:45:28] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":{"targets":"chrome 40"}}
54
+ [08/20/2024, 09:45:28] [WARN] CSS minification warnings {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","warnings":["Invalid character(s) '.f f asd123weqfqwe\r\n f asdedsf asdfsaday: block;\r\nfasdf fsad2dsf \r\nsdf' at 1:0. Ignoring."]}
55
+ [08/20/2024, 09:45:28] [ERROR] Invalid or empty content {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css"}
56
+ [08/20/2024, 09:45:29] [ERROR] JavaScript minification failed {"filePath":"C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js","error":"unknown: Identifier directly after number. (1:7)\n\n\u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 1 |\u001b[39m \u001b[35m3123123\u001b[39mc312l312as123123s3123 \u001b[33mModernBa123123nk\u001b[39m {\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 2 |\u001b[39m \u001b[35m31212312\u001b[39m\u001b[90m// Private fields\u001b[39m\n \u001b[90m 3 |\u001b[39m \u001b[33m#\u001b[39mbalance \u001b[33m=\u001b[39m \u001b[35m0\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 4 |\u001b[39m \u001b[33m#\u001b[39mtransactionHistory \u001b[33m=\u001b[39m []\u001b[33m;\u001b[39m\u001b[0m"}
57
+ [08/20/2024, 09:45:29] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":2,"errorCount":2,"errorFiles":["C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.css","C:\\Users\\PEARL\\Desktop\\uglify-js-minify-css-allfiles\\test\\test.js"]}}
58
+ [08/20/2024, 10:12:02] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":{"targets":"chrome 40"}}
59
+ [08/20/2024, 10:12:02] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
60
+ [08/20/2024, 10:12:03] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.js
61
+ [08/20/2024, 10:12:03] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":0,"errorCount":0,"errorFiles":[]}}
62
+ [08/20/2024, 10:23:04] [INFO] Starting minification process {"contentPath":"./test/","excludeFolder":"lib","useBabel":{"targets":"chrome 40"}}
63
+ [08/20/2024, 10:23:04] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.css
64
+ [08/20/2024, 10:23:05] [INFO] Writing file: C:\Users\PEARL\Desktop\uglify-js-minify-css-allfiles\test\test.js
65
+ [08/20/2024, 10:23:05] [INFO] Processing Summary {"summary":{"totalFilesProcessed":2,"filesWithErrors":0,"errorCount":0,"errorFiles":[]}}
package/minify.d.ts ADDED
@@ -0,0 +1,165 @@
1
+ declare module 'uglify-js-minify-css-allfiles' {
2
+ /**
3
+ * Babel configuration options.
4
+ * These options are passed directly to @babel/preset-env.
5
+ */
6
+ export interface BabelOptions {
7
+ /**
8
+ * Describes the environments you support/target for your project.
9
+ * Can be a string (e.g., "last 2 versions", "safari >= 7"), an array of strings, or an object of minimum environment versions to support.
10
+ */
11
+ targets?: string | string[] | { [key: string]: string };
12
+
13
+ /**
14
+ * Enables transformation of ES6 module syntax to another module type.
15
+ * Use false to preserve ES modules.
16
+ */
17
+ modules?: 'amd' | 'umd' | 'systemjs' | 'commonjs' | 'cjs' | 'auto' | false;
18
+
19
+ /** Enable debug output to see what Babel is doing. */
20
+ debug?: boolean;
21
+
22
+ /** Array of plugins to always include. */
23
+ include?: string[];
24
+
25
+ /** Array of plugins to always exclude/remove. */
26
+ exclude?: string[];
27
+
28
+ /**
29
+ * Configures how Babel handles polyfills.
30
+ * 'usage' adds specific imports for polyfills when they are used in each file.
31
+ * 'entry' imports the full polyfill based on your target environments.
32
+ */
33
+ useBuiltIns?: 'usage' | 'entry' | false;
34
+
35
+ /**
36
+ * Specifies the core-js version used when useBuiltIns is set to 'usage' or 'entry'.
37
+ */
38
+ corejs?: 2 | 3 | { version: 2 | 3; proposals: boolean };
39
+
40
+ /**
41
+ * Forces Babel to apply all transformations, even if the target environment(s) support them natively.
42
+ */
43
+ forceAllTransforms?: boolean;
44
+
45
+ /**
46
+ * Path to a .browserslistrc file to use instead of targets.
47
+ */
48
+ configPath?: string;
49
+
50
+ /**
51
+ * Toggles whether or not browserslist config sources are used, which includes searching for any browserslist files or referencing the browserslist key inside package.json.
52
+ */
53
+ ignoreBrowserslistConfig?: boolean;
54
+
55
+ /**
56
+ * Toggles enabling support for builtin/feature proposals that have shipped in browsers.
57
+ */
58
+ shippedProposals?: boolean;
59
+ }
60
+
61
+ /**
62
+ * Logging configuration options.
63
+ */
64
+ export interface LogOptions {
65
+ /**
66
+ * Specifies the directory where log files will be stored.
67
+ * @default 'logs'
68
+ */
69
+ logDir?: string;
70
+
71
+ /**
72
+ * Number of days to keep log files before they are deleted.
73
+ * @default 30
74
+ */
75
+ retentionDays?: number;
76
+
77
+ /**
78
+ * Sets the minimum level of messages that will be logged.
79
+ * @default 'info'
80
+ */
81
+ logLevel?: 'error' | 'warn' | 'info' | 'debug';
82
+
83
+ /**
84
+ * Format for dates in log file names and entries.
85
+ * @default 'YYYY-MM-DD'
86
+ */
87
+ dateFormat?: string;
88
+
89
+ /**
90
+ * Time zone used for timestamps in log entries.
91
+ * @default 'UTC'
92
+ */
93
+ timeZone?: string;
94
+
95
+ /**
96
+ * Whether to output logs to the console in addition to (or instead of) writing to files.
97
+ * @default true
98
+ */
99
+ logToConsole?: boolean;
100
+
101
+ /**
102
+ * Whether to write logs to files.
103
+ * @default true
104
+ */
105
+ logToFile?: boolean;
106
+ }
107
+
108
+ /**
109
+ * Configuration options for the minifyAll function.
110
+ */
111
+ export interface MinifyOptions {
112
+ /**
113
+ * Name of a folder to exclude from the minification process.
114
+ * Useful for skipping already minified files or third-party libraries.
115
+ * @default ''
116
+ */
117
+ excludeFolder?: string;
118
+
119
+ /**
120
+ * Enables Babel transformation of JavaScript files.
121
+ * If true, uses default Babel settings.
122
+ * If an object is provided, it should conform to the BabelOptions interface.
123
+ * @default false
124
+ */
125
+ useBabel?: boolean | BabelOptions;
126
+
127
+ /**
128
+ * Configures logging behavior.
129
+ * If true, uses default logging settings.
130
+ * If an object is provided, it should conform to the LogOptions interface.
131
+ * @default true
132
+ */
133
+ useLog?: boolean | LogOptions;
134
+ }
135
+
136
+ /**
137
+ * Minifies all JavaScript and CSS files in the specified directory and its subdirectories.
138
+ *
139
+ * @param contentPath - The path to the directory containing the files to be minified.
140
+ * This is the root directory from which the function will start searching for files.
141
+ * @param options - Configuration options for the minification process.
142
+ * These options control Babel usage, logging, and allow excluding certain folders.
143
+ * @returns A promise that resolves when all files have been processed.
144
+ * @throws {Error} If there's an issue reading or writing files, or if the minification process fails.
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * import minifyAll from 'uglify-js-minify-css-allfiles';
149
+ *
150
+ * await minifyAll('./src', {
151
+ * excludeFolder: 'node_modules',
152
+ * useBabel: {
153
+ * targets: '> 0.25%, not dead',
154
+ * useBuiltIns: 'usage',
155
+ * corejs: 3
156
+ * },
157
+ * useLog: {
158
+ * logLevel: 'warn',
159
+ * retentionDays: 7
160
+ * }
161
+ * });
162
+ * ```
163
+ */
164
+ export default function minifyAll(contentPath: string, options?: MinifyOptions): Promise<void>;
165
+ }
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "uglify-js-minify-css-allfiles",
3
- "version": "2.0.4",
3
+ "version": "2.1.1",
4
4
  "description": "you will be able to minify all files as same file names which is js or css",
5
5
  "main": "minify.js",
6
6
  "type": "module",
7
+ "types": "minify.d.ts",
7
8
  "exports": {
8
9
  ".": "./minify.js"
9
10
  },
@@ -14,6 +15,9 @@
14
15
  "type": "git",
15
16
  "url": "git+https://github.com/oinochoe/uglify-js-minify-css-allfiles.git"
16
17
  },
18
+ "publishConfig": {
19
+ "registry": "https://registry.npmjs.org/"
20
+ },
17
21
  "keywords": [
18
22
  "ugly-code",
19
23
  "uglyCode",
package/test/lib/test.css CHANGED
@@ -1,9 +1,9 @@
1
1
  .dragon {
2
- width: 30px;
3
- height: 50px;
2
+ width: 30px;
3
+ height: 50px;
4
4
  }
5
5
 
6
6
  .dragon a {
7
- display: block;
8
- margin: 30px;
7
+ display: block;
8
+ margin: 30px;
9
9
  }
package/test/lib/test.js CHANGED
@@ -1,3 +1,3 @@
1
1
  const dragon = () => {
2
- alert('dd');
2
+ alert('dd');
3
3
  };
package/test/test.css CHANGED
@@ -1,8 +1,8 @@
1
1
  .dragon {
2
- width: 30px;
3
- height: 50px;
2
+ width: 30px;
3
+ height: 50px;
4
4
  }
5
5
  .dragon a {
6
- display: block;
7
- margin: 30px;
6
+ display: block;
7
+ margin: 30px;
8
8
  }