@@ -11,22 +11,25 @@ const glob = require('glob');
1111const path = require ( 'path' ) ;
1212const options_1 = require ( './options' ) ;
1313const fs = require ( 'fs' ) ;
14+ const rejection_error_1 = require ( './rejection-error' ) ;
1415const JS_EXTENSION = ".js" ;
1516const 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}
3235class 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 }
0 commit comments