Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

Commit 93ec02d

Browse files
author
Giedrius Grabauskas
committed
Fixed errors.
1 parent 1fa9cc4 commit 93ec02d

7 files changed

Lines changed: 241 additions & 168 deletions

File tree

dist/main.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ export default class GlobsUglifyJs {
77
private deleteFiles(fileList);
88
private deleteFile(filePath);
99
private uglifyFile(file);
10-
private recursiveUglify(filesList);
10+
private startRecursiveUglify(filesList, results?);
11+
private recursiveUglify(file);
1112
private ensureDirectoryExistence(filePath);
1213
private directoryExists(path);
1314
private deleteEmptyDirectories(directoryPath);

dist/main.js

Lines changed: 74 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,25 @@ const glob = require('glob');
1111
const path = require('path');
1212
const options_1 = require('./options');
1313
const fs = require('fs');
14+
const rejection_error_1 = require('./rejection-error');
1415
const JS_EXTENSION = ".js";
1516
const MINIFY_EXTENSION_PREFIX = ".min";
16-
class RejectionError {
17-
constructor(error, type) {
18-
this.error = error;
19-
this.type = type;
17+
class RecursiveUglifyResults {
18+
constructor() {
19+
this.succeed = 0;
20+
this.failed = 0;
2021
}
21-
get Type() {
22-
return this.type;
22+
get Succeed() {
23+
return this.succeed;
2324
}
24-
get Error() {
25-
return this.error;
25+
get Failed() {
26+
return this.failed;
2627
}
27-
ThrowError() {
28-
console.log("Error type: ", this.type);
29-
console.error(this.error);
28+
OnSucceed() {
29+
this.succeed++;
30+
}
31+
OnFailed() {
32+
this.failed++;
3033
}
3134
}
3235
class GlobsUglifyJs {
@@ -40,50 +43,36 @@ class GlobsUglifyJs {
4043
}
4144
main() {
4245
return __awaiter(this, void 0, void 0, function* () {
43-
let rejected = false;
4446
let globOptions;
4547
if (this.options.Exclue !== undefined) {
4648
globOptions = { ignore: this.options.Exclue };
4749
}
48-
let filesList = yield this.getGlobs(this.globPattern, globOptions)
49-
.catch(error => {
50-
console.log(error);
51-
rejected = true;
52-
});
53-
if (rejected) {
54-
return;
55-
}
56-
if (filesList.length === 0) {
57-
console.log("No files found.");
58-
return;
59-
}
60-
yield this.recursiveUglify(filesList.slice(0))
61-
.catch((error) => {
62-
error.ThrowError();
63-
rejected = true;
64-
});
65-
if (rejected) {
66-
return;
67-
}
68-
if (this.options.RemoveSource) {
69-
yield this.deleteFiles(filesList.slice(0))
70-
.catch((error) => {
71-
error.ThrowError();
72-
rejected = true;
73-
});
74-
if (rejected) {
50+
try {
51+
let filesList = yield this.getGlobs(this.globPattern, globOptions);
52+
if (filesList.length === 0) {
53+
console.log("No files found.");
7554
return;
7655
}
77-
yield this.deleteEmptyDirectories(this.options.RootDir)
78-
.catch((error) => {
56+
let results = yield this.startRecursiveUglify(filesList.slice(0));
57+
if (this.options.RemoveSource) {
58+
yield this.deleteFiles(filesList.slice(0));
59+
yield this.deleteEmptyDirectories(this.options.RootDir);
60+
}
61+
if (results.Failed > 0) {
62+
console.warn(`Failed to minify ${results.Failed} file${(results.Failed > 1) ? "s" : ""}.`);
63+
}
64+
if (results.Succeed > 0) {
65+
console.log(`Successfully minified ${results.Succeed} file${(results.Succeed > 1) ? "s" : ""}.`);
66+
}
67+
}
68+
catch (error) {
69+
if (error instanceof rejection_error_1.default) {
7970
error.ThrowError();
80-
rejected = true;
81-
});
82-
if (rejected) {
83-
return;
71+
}
72+
else {
73+
throw error;
8474
}
8575
}
86-
console.log(`Successfully minified ${filesList.length} files.`);
8776
});
8877
}
8978
deleteFiles(fileList) {
@@ -98,7 +87,7 @@ class GlobsUglifyJs {
9887
yield this.deleteFile(file)
9988
.catch(error => {
10089
rejected = true;
101-
reject(new RejectionError(error, "deleteFile"));
90+
reject(new rejection_error_1.default(error, "deleteFile"));
10291
});
10392
if (!rejected) {
10493
yield this.deleteFiles(fileList);
@@ -134,50 +123,57 @@ class GlobsUglifyJs {
134123
});
135124
});
136125
}
137-
recursiveUglify(filesList) {
126+
startRecursiveUglify(filesList, results) {
138127
return __awaiter(this, void 0, void 0, function* () {
139-
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
128+
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
129+
if (results == null) {
130+
results = new RecursiveUglifyResults();
131+
}
140132
let file = filesList.shift();
141133
if (file != null) {
142-
let rejected = false;
134+
try {
135+
yield this.recursiveUglify(file);
136+
results.OnSucceed();
137+
}
138+
catch (error) {
139+
if (error instanceof rejection_error_1.default) {
140+
error.LogError(this.options.Debug);
141+
}
142+
else if (this.options.Debug) {
143+
console.error(error);
144+
}
145+
results.OnFailed();
146+
}
147+
resolve(yield this.startRecursiveUglify(filesList, results));
148+
}
149+
else {
150+
resolve(results);
151+
}
152+
}));
153+
});
154+
}
155+
recursiveUglify(file) {
156+
return __awaiter(this, void 0, void 0, function* () {
157+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
158+
try {
143159
let outputData = yield this.uglifyFile(file)
144160
.catch(error => {
145-
reject(new RejectionError(error, "uglifyFile"));
146-
rejected = true;
161+
throw new rejection_error_1.default(error, "uglifyFile", file);
147162
});
148-
if (rejected) {
149-
return;
150-
}
151163
let outPath = this.resolveOutFilePath(file);
152164
yield this.ensureDirectoryExistence(outPath)
153165
.catch(error => {
154-
console.log(error);
155-
rejected = true;
156-
reject(new RejectionError(error, "ensureDirectoryExistence"));
166+
throw new rejection_error_1.default(error, "ensureDirectoryExistence", file);
157167
});
158-
if (rejected) {
159-
return;
160-
}
161168
yield this.writeToFile(outPath, outputData.code)
162169
.catch(error => {
163-
rejected = true;
164-
reject(new RejectionError(error, "writeToFile"));
165-
});
166-
if (rejected) {
167-
return;
168-
}
169-
yield this.recursiveUglify(filesList)
170-
.catch(error => {
171-
rejected = true;
172-
reject(error);
170+
throw new rejection_error_1.default(error, "writeToFile", file);
173171
});
174-
if (!rejected) {
175-
resolve();
176-
}
177-
}
178-
else {
179172
resolve();
180173
}
174+
catch (error) {
175+
reject(error);
176+
}
181177
}));
182178
});
183179
}
@@ -240,7 +236,7 @@ class GlobsUglifyJs {
240236
var fullPath = path.join(directoryPath, file);
241237
yield this.deleteEmptyDirectories(fullPath)
242238
.catch(error => {
243-
reject(new RejectionError(error, "deleteEmptyDirectories"));
239+
reject(new rejection_error_1.default(error, "deleteEmptyDirectories"));
244240
rejected = true;
245241
});
246242
if (rejected) {
@@ -250,15 +246,12 @@ class GlobsUglifyJs {
250246
if (rejected) {
251247
return;
252248
}
253-
if (rejected) {
254-
return;
255-
}
256249
files = yield this.readFilesInDirectory(directoryPath);
257250
}
258251
if (files.length == 0) {
259252
yield this.removeDirectory(directoryPath)
260253
.catch(error => {
261-
reject(new RejectionError(error, "removeDirectory"));
254+
reject(new rejection_error_1.default(error, "removeDirectory"));
262255
rejected = true;
263256
});
264257
}

dist/rejection-error.d.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/// <reference types="node" />
2+
export default class RejectionError {
3+
private error;
4+
private type;
5+
private uniqId;
6+
constructor(error: NodeJS.ErrnoException | Error, type?: string, uniqId?: string);
7+
readonly Type: string | undefined;
8+
readonly Error: Error | NodeJS.ErrnoException;
9+
readonly UniqId: string | undefined;
10+
private showErrorDetails();
11+
LogError(debug?: boolean): void;
12+
ThrowError(): void;
13+
}

dist/rejection-error.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class RejectionError {
2+
constructor(error, type, uniqId) {
3+
this.error = error;
4+
this.type = type;
5+
this.uniqId = uniqId;
6+
}
7+
get Type() {
8+
return this.type;
9+
}
10+
get Error() {
11+
return this.error;
12+
}
13+
get UniqId() {
14+
return this.uniqId;
15+
}
16+
showErrorDetails() {
17+
let message = "Error";
18+
if (this.uniqId) {
19+
message += ` in '${this.uniqId}'`;
20+
}
21+
if (this.type) {
22+
message += ` with error type '${this.type}'`;
23+
}
24+
console.warn(message);
25+
}
26+
LogError(debug = false) {
27+
this.showErrorDetails();
28+
if (debug) {
29+
console.error(this.error);
30+
}
31+
}
32+
ThrowError() {
33+
this.showErrorDetails();
34+
throw this.error;
35+
}
36+
}
37+
Object.defineProperty(exports, "__esModule", { value: true });
38+
exports.default = RejectionError;

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "glob-uglifyjs",
3-
"version": "0.1.1",
3+
"version": "0.2.0",
44
"description": "Uglify files with glob pattern.",
55
"main": "dist/main.js",
66
"scripts": {
@@ -28,7 +28,7 @@
2828
"@types/glob": "^5.0.30",
2929
"@types/uglify-js": "^2.6.28",
3030
"@types/yargs": "0.0.33",
31-
"typescript": "^2.0.3"
31+
"typescript": "^2.0.6"
3232
},
3333
"dependencies": {
3434
"glob": "^7.1.1",

0 commit comments

Comments
 (0)