@@ -12,7 +12,8 @@ import { ForkTsCheckerWebpackPlugin } from '../ForkTsCheckerWebpackPlugin';
12
12
13
13
function tapStartToConnectAndRunReporter (
14
14
compiler : webpack . Compiler ,
15
- reporter : ReporterRpcClient ,
15
+ issuesReporter : ReporterRpcClient ,
16
+ dependenciesReporter : ReporterRpcClient ,
16
17
configuration : ForkTsCheckerWebpackPluginConfiguration ,
17
18
state : ForkTsCheckerWebpackPluginState
18
19
) {
@@ -64,43 +65,70 @@ function tapStartToConnectAndRunReporter(
64
65
}
65
66
66
67
let resolveDependencies : ( dependencies : FilesMatch | undefined ) => void ;
67
- let rejectedDependencies : ( error : Error ) => void ;
68
+ let rejectDependencies : ( error : Error ) => void ;
68
69
let resolveIssues : ( issues : Issue [ ] | undefined ) => void ;
69
70
let rejectIssues : ( error : Error ) => void ;
70
71
71
72
state . dependenciesPromise = new Promise ( ( resolve , reject ) => {
72
73
resolveDependencies = resolve ;
73
- rejectedDependencies = reject ;
74
+ rejectDependencies = reject ;
74
75
} ) ;
75
76
state . issuesPromise = new Promise ( ( resolve , reject ) => {
76
77
resolveIssues = resolve ;
77
78
rejectIssues = reject ;
78
79
} ) ;
79
- const previousReportPromise = state . reportPromise ;
80
- state . reportPromise = ForkTsCheckerWebpackPlugin . pool . submit (
80
+ const previousIssuesReportPromise = state . issuesReportPromise ;
81
+ const previousDependenciesReportPromise = state . dependenciesReportPromise ;
82
+
83
+ change = await hooks . start . promise ( change , compilation ) ;
84
+
85
+ state . issuesReportPromise = ForkTsCheckerWebpackPlugin . issuesPool . submit (
81
86
( done ) =>
82
87
new Promise ( async ( resolve ) => {
83
- change = await hooks . start . promise ( change , compilation ) ;
88
+ try {
89
+ await issuesReporter . connect ( ) ;
90
+
91
+ const previousReport = await previousIssuesReportPromise ;
92
+ if ( previousReport ) {
93
+ await previousReport . close ( ) ;
94
+ }
84
95
96
+ const report = await issuesReporter . getReport ( change ) ;
97
+ resolve ( report ) ;
98
+
99
+ report . getIssues ( ) . then ( resolveIssues ) . catch ( rejectIssues ) . finally ( done ) ;
100
+ } catch ( error ) {
101
+ if ( error instanceof OperationCanceledError ) {
102
+ hooks . canceled . call ( compilation ) ;
103
+ } else {
104
+ hooks . error . call ( error , compilation ) ;
105
+ }
106
+
107
+ resolve ( undefined ) ;
108
+ resolveIssues ( undefined ) ;
109
+ done ( ) ;
110
+ }
111
+ } )
112
+ ) ;
113
+ state . dependenciesReportPromise = ForkTsCheckerWebpackPlugin . dependenciesPool . submit (
114
+ ( done ) =>
115
+ new Promise ( async ( resolve ) => {
85
116
try {
86
- await reporter . connect ( ) ;
117
+ await dependenciesReporter . connect ( ) ;
87
118
88
- const previousReport = await previousReportPromise ;
119
+ const previousReport = await previousDependenciesReportPromise ;
89
120
if ( previousReport ) {
90
121
await previousReport . close ( ) ;
91
122
}
92
123
93
- const report = await reporter . getReport ( change ) ;
124
+ const report = await dependenciesReporter . getReport ( change ) ;
94
125
resolve ( report ) ;
95
126
96
127
report
97
128
. getDependencies ( )
98
129
. then ( resolveDependencies )
99
- . catch ( rejectedDependencies )
100
- . finally ( ( ) => {
101
- // get issues after dependencies are resolved as it can be blocking
102
- report . getIssues ( ) . then ( resolveIssues ) . catch ( rejectIssues ) . finally ( done ) ;
103
- } ) ;
130
+ . catch ( rejectDependencies )
131
+ . finally ( done ) ;
104
132
} catch ( error ) {
105
133
if ( error instanceof OperationCanceledError ) {
106
134
hooks . canceled . call ( compilation ) ;
@@ -110,7 +138,6 @@ function tapStartToConnectAndRunReporter(
110
138
111
139
resolve ( undefined ) ;
112
140
resolveDependencies ( undefined ) ;
113
- resolveIssues ( undefined ) ;
114
141
done ( ) ;
115
142
}
116
143
} )
0 commit comments