@@ -14,32 +14,41 @@ export function computeStats(
14
14
) : string {
15
15
const lines : string [ ] = [ ] ;
16
16
17
- const recursiveRequests = sortByPathPrefix ( requests . filter ( request => request . recursive ) ) ;
18
- const recursiveRequestsStatus = computeRequestStatus ( recursiveRequests , recursiveWatcher ) ;
17
+ const allRecursiveRequests = sortByPathPrefix ( requests . filter ( request => request . recursive ) ) ;
18
+ const nonSuspendedRecursiveRequests = allRecursiveRequests . filter ( request => recursiveWatcher . isSuspended ( request ) === false ) ;
19
+ const suspendedPollingRecursiveRequests = allRecursiveRequests . filter ( request => recursiveWatcher . isSuspended ( request ) === 'polling' ) ;
20
+ const suspendedNonPollingRecursiveRequests = allRecursiveRequests . filter ( request => recursiveWatcher . isSuspended ( request ) === true ) ;
21
+
22
+ const recursiveRequestsStatus = computeRequestStatus ( allRecursiveRequests , recursiveWatcher ) ;
19
23
const recursiveWatcherStatus = computeRecursiveWatchStatus ( recursiveWatcher ) ;
20
24
21
- const nonRecursiveRequests = sortByPathPrefix ( requests . filter ( request => ! request . recursive ) ) ;
22
- const nonRecursiveRequestsStatus = computeRequestStatus ( nonRecursiveRequests , nonRecursiveWatcher ) ;
25
+ const allNonRecursiveRequests = sortByPathPrefix ( requests . filter ( request => ! request . recursive ) ) ;
26
+ const nonSuspendedNonRecursiveRequests = allNonRecursiveRequests . filter ( request => nonRecursiveWatcher . isSuspended ( request ) === false ) ;
27
+ const suspendedPollingNonRecursiveRequests = allNonRecursiveRequests . filter ( request => nonRecursiveWatcher . isSuspended ( request ) === 'polling' ) ;
28
+ const suspendedNonPollingNonRecursiveRequests = allNonRecursiveRequests . filter ( request => nonRecursiveWatcher . isSuspended ( request ) === true ) ;
29
+
30
+ const nonRecursiveRequestsStatus = computeRequestStatus ( allNonRecursiveRequests , nonRecursiveWatcher ) ;
23
31
const nonRecursiveWatcherStatus = computeNonRecursiveWatchStatus ( nonRecursiveWatcher ) ;
24
32
25
33
lines . push ( '[Summary]' ) ;
26
- lines . push ( `- Recursive Requests: total: ${ recursiveRequests . length } , suspended: ${ recursiveRequestsStatus . suspended } , polling: ${ recursiveRequestsStatus . polling } ` ) ;
27
- lines . push ( `- Non-Recursive Requests: total: ${ nonRecursiveRequests . length } , suspended: ${ nonRecursiveRequestsStatus . suspended } , polling: ${ nonRecursiveRequestsStatus . polling } ` ) ;
34
+ lines . push ( `- Recursive Requests: total: ${ allRecursiveRequests . length } , suspended: ${ recursiveRequestsStatus . suspended } , polling: ${ recursiveRequestsStatus . polling } ` ) ;
35
+ lines . push ( `- Non-Recursive Requests: total: ${ allNonRecursiveRequests . length } , suspended: ${ nonRecursiveRequestsStatus . suspended } , polling: ${ nonRecursiveRequestsStatus . polling } ` ) ;
28
36
lines . push ( `- Recursive Watchers: total: ${ recursiveWatcher . watchers . size } , active: ${ recursiveWatcherStatus . active } , failed: ${ recursiveWatcherStatus . failed } , stopped: ${ recursiveWatcherStatus . stopped } ` ) ;
29
37
lines . push ( `- Non-Recursive Watchers: total: ${ nonRecursiveWatcher . watchers . size } , active: ${ nonRecursiveWatcherStatus . active } , failed: ${ nonRecursiveWatcherStatus . failed } , reusing: ${ nonRecursiveWatcherStatus . reusing } ` ) ;
30
38
lines . push ( `- I/O Handles Impact: total: ${ recursiveRequestsStatus . polling + nonRecursiveRequestsStatus . polling + recursiveWatcherStatus . active + nonRecursiveWatcherStatus . active } ` ) ;
31
39
32
- lines . push ( `\n[Recursive Requests (${ recursiveRequests . length } , suspended: ${ recursiveRequestsStatus . suspended } , polling: ${ recursiveRequestsStatus . polling } )]:` ) ;
33
- for ( const request of recursiveRequests ) {
40
+ lines . push ( `\n[Recursive Requests (${ allRecursiveRequests . length } , suspended: ${ recursiveRequestsStatus . suspended } , polling: ${ recursiveRequestsStatus . polling } )]:` ) ;
41
+ for ( const request of [ nonSuspendedRecursiveRequests , suspendedPollingRecursiveRequests , suspendedNonPollingRecursiveRequests ] . flat ( ) ) {
34
42
fillRequestStats ( lines , request , recursiveWatcher ) ;
35
43
}
36
44
37
- lines . push ( `\n[Non-Recursive Requests (${ nonRecursiveRequests . length } , suspended: ${ nonRecursiveRequestsStatus . suspended } , polling: ${ nonRecursiveRequestsStatus . polling } )]:` ) ;
38
- for ( const request of nonRecursiveRequests ) {
45
+ fillRecursiveWatcherStats ( lines , recursiveWatcher ) ;
46
+
47
+ lines . push ( `\n[Non-Recursive Requests (${ allNonRecursiveRequests . length } , suspended: ${ nonRecursiveRequestsStatus . suspended } , polling: ${ nonRecursiveRequestsStatus . polling } )]:` ) ;
48
+ for ( const request of [ nonSuspendedNonRecursiveRequests , suspendedPollingNonRecursiveRequests , suspendedNonPollingNonRecursiveRequests ] . flat ( ) ) {
39
49
fillRequestStats ( lines , request , nonRecursiveWatcher ) ;
40
50
}
41
51
42
- fillRecursiveWatcherStats ( lines , recursiveWatcher ) ;
43
52
fillNonRecursiveWatcherStats ( lines , nonRecursiveWatcher ) ;
44
53
45
54
let maxLength = 0 ;
@@ -157,7 +166,7 @@ function fillRequestStats(lines: string[], request: IUniversalWatchRequest, watc
157
166
}
158
167
}
159
168
160
- lines . push ( `${ request . path } \t${ decorations . length > 0 ? decorations . join ( ' ' ) + ' ' : '' } (${ requestDetailsToString ( request ) } )` ) ;
169
+ lines . push ( ` ${ request . path } \t${ decorations . length > 0 ? decorations . join ( ' ' ) + ' ' : '' } (${ requestDetailsToString ( request ) } )` ) ;
161
170
}
162
171
163
172
function requestDetailsToString ( request : IUniversalWatchRequest ) : string {
@@ -184,24 +193,27 @@ function fillRecursiveWatcherStats(lines: string[], recursiveWatcher: ParcelWatc
184
193
if ( watcher . restarts > 0 ) {
185
194
decorations . push ( `[RESTARTED:${ watcher . restarts } ]` ) ;
186
195
}
187
- lines . push ( `${ watcher . request . path } \t${ decorations . length > 0 ? decorations . join ( ' ' ) + ' ' : '' } (${ requestDetailsToString ( watcher . request ) } )` ) ;
196
+ lines . push ( ` ${ watcher . request . path } \t${ decorations . length > 0 ? decorations . join ( ' ' ) + ' ' : '' } (${ requestDetailsToString ( watcher . request ) } )` ) ;
188
197
}
189
198
}
190
199
191
200
function fillNonRecursiveWatcherStats ( lines : string [ ] , nonRecursiveWatcher : NodeJSWatcher ) : void {
192
- const watchers = sortByPathPrefix ( Array . from ( nonRecursiveWatcher . watchers . values ( ) ) ) ;
201
+ const allWatchers = sortByPathPrefix ( Array . from ( nonRecursiveWatcher . watchers . values ( ) ) ) ;
202
+ const activeWatchers = allWatchers . filter ( watcher => ! watcher . instance . failed && ! watcher . instance . isReusingRecursiveWatcher ) ;
203
+ const failedWatchers = allWatchers . filter ( watcher => watcher . instance . failed ) ;
204
+ const reusingWatchers = allWatchers . filter ( watcher => watcher . instance . isReusingRecursiveWatcher ) ;
193
205
194
206
const { active, failed, reusing } = computeNonRecursiveWatchStatus ( nonRecursiveWatcher ) ;
195
- lines . push ( `\n[Non-Recursive Watchers (${ watchers . length } , active: ${ active } , failed: ${ failed } , reusing: ${ reusing } )]:` ) ;
207
+ lines . push ( `\n[Non-Recursive Watchers (${ allWatchers . length } , active: ${ active } , failed: ${ failed } , reusing: ${ reusing } )]:` ) ;
196
208
197
- for ( const watcher of watchers ) {
209
+ for ( const watcher of [ activeWatchers , failedWatchers , reusingWatchers ] . flat ( ) ) {
198
210
const decorations = [ ] ;
199
211
if ( watcher . instance . failed ) {
200
212
decorations . push ( '[FAILED]' ) ;
201
213
}
202
214
if ( watcher . instance . isReusingRecursiveWatcher ) {
203
215
decorations . push ( '[REUSING]' ) ;
204
216
}
205
- lines . push ( `${ watcher . request . path } \t${ decorations . length > 0 ? decorations . join ( ' ' ) + ' ' : '' } (${ requestDetailsToString ( watcher . request ) } )` ) ;
217
+ lines . push ( ` ${ watcher . request . path } \t${ decorations . length > 0 ? decorations . join ( ' ' ) + ' ' : '' } (${ requestDetailsToString ( watcher . request ) } )` ) ;
206
218
}
207
219
}
0 commit comments