@@ -8,6 +8,7 @@ import Thread from '../worker/thread.js';
88import Counter from '../helper/counter.js' ;
99import ReportModifier from '../report-modifier/report-modifier.js' ;
1010import Reporter from '../reporter/reporter.js' ;
11+ import { CLOSE_WAIT_TIMEOUT } from "../constants.js" ;
1112
1213const startResults = (
1314 logger : Logger ,
@@ -16,6 +17,7 @@ const startResults = (
1617 reportModifiers : ReportModifier [ ] ,
1718 resultHandler : Reporter ,
1819 resultOutputDir : string ,
20+ resolver : { resolve ( value : boolean , ) : void } ,
1921 // eslint-disable-next-line max-params
2022) : void => {
2123 if ( ! Counter . isEmpty ( 'active' , ) || ! Counter . isEmpty ( 'analyzing' , ) ) {
@@ -24,13 +26,16 @@ const startResults = (
2426 calculator . terminate ( ) ;
2527 logger . info ( language ( 'starting_result' , ) , ) ;
2628 logger . debug ( language ( 'data' , ) , finished , ) ;
29+ let hasErrors = false ;
2730 for ( const reportModifier of reportModifiers ) {
2831 for ( const set of Object . keys ( finished , ) ) {
2932 finished [ set ] = reportModifier . adjust ( finished [ set ] , ) ;
33+ hasErrors = hasErrors || finished [ set ] . errors > 0 ;
3034 }
3135 }
3236 resultHandler ( finished , resultOutputDir , ) ;
3337 logger . info ( language ( 'done' , ) , ) ;
38+ setTimeout ( ( ) => resolver . resolve ( hasErrors ) , CLOSE_WAIT_TIMEOUT , ) ;
3439} ;
3540const onCalculate = (
3641 data : FinishedSet ,
@@ -43,6 +48,7 @@ const onCalculate = (
4348 reportModifiers : ReportModifier [ ] ,
4449 reporter : Reporter ,
4550 resultOutputDir : string ,
51+ resolver : { resolve ( value : boolean , ) : void } ,
4652 // eslint-disable-next-line max-params
4753) : void => {
4854 finished [ data . id ] = data ;
@@ -57,6 +63,7 @@ const onCalculate = (
5763 reportModifiers ,
5864 reporter ,
5965 resultOutputDir ,
66+ resolver ,
6067 ) ;
6168} ;
6269export default onCalculate ;
0 commit comments