@@ -59,6 +59,19 @@ import {
59
59
storeRequestTrackerCacheInfo ,
60
60
clearRequestTrackerCacheInfo ,
61
61
} from './RequestTrackerCacheInfo' ;
62
+ import type { AssetGraphRequestResult } from './requests/AssetGraphRequest' ;
63
+ import type { PackageRequestResult } from './requests/PackageRequest' ;
64
+ import type { ConfigRequestResult } from './requests/ConfigRequest' ;
65
+ import type { DevDepRequestResult } from './requests/DevDepRequest' ;
66
+ import type { WriteBundlesRequestResult } from './requests/WriteBundlesRequest' ;
67
+ import type { WriteBundleRequestResult } from './requests/WriteBundleRequest' ;
68
+ import type { TargetRequestResult } from './requests/TargetRequest' ;
69
+ import type { PathRequestResult } from './requests/PathRequest' ;
70
+ import type { ParcelConfigRequestResult } from './requests/ParcelConfigRequest' ;
71
+ import type { ParcelBuildRequestResult } from './requests/ParcelBuildRequest' ;
72
+ import type { EntryRequestResult } from './requests/EntryRequest' ;
73
+ import type { BundleGraphResult } from './requests/BundleGraphRequest' ;
74
+ import type { AssetRequestResult } from './types' ;
62
75
63
76
export const requestGraphEdgeTypes = {
64
77
subrequest : 2 ,
@@ -144,13 +157,28 @@ type Request<TInput, TResult> = {|
144
157
run : ( { | input : TInput , ...StaticRunOpts < TResult > | } ) => Async < TResult > ,
145
158
| } ;
146
159
160
+ export type RequestResult =
161
+ | AssetGraphRequestResult
162
+ | PackageRequestResult
163
+ | ConfigRequestResult
164
+ | DevDepRequestResult
165
+ | WriteBundlesRequestResult
166
+ | WriteBundleRequestResult
167
+ | TargetRequestResult
168
+ | PathRequestResult
169
+ | ParcelConfigRequestResult
170
+ | ParcelBuildRequestResult
171
+ | EntryRequestResult
172
+ | BundleGraphResult
173
+ | AssetRequestResult ;
174
+
147
175
type InvalidateReason = number ;
148
176
type RequestNode = { |
149
177
id : ContentKey ,
150
178
+ type : typeof REQUEST ,
151
179
+ requestType : RequestType ,
152
180
invalidateReason : InvalidateReason ,
153
- result ?: mixed ,
181
+ result ?: RequestResult ,
154
182
resultCacheKey ?: ?string ,
155
183
hash ?: string ,
156
184
| } ;
@@ -184,7 +212,7 @@ type RequestGraphNode =
184
212
| OptionNode
185
213
| ConfigKeyNode ;
186
214
187
- export type RunAPI < TResult > = { |
215
+ export type RunAPI < TResult : RequestResult > = { |
188
216
invalidateOnFileCreate : InternalFileCreateInvalidation => void ,
189
217
invalidateOnFileDelete : ProjectPath => void ,
190
218
invalidateOnFileUpdate : ProjectPath => void ,
@@ -199,12 +227,12 @@ export type RunAPI<TResult> = {|
199
227
invalidateOnOptionChange : string => void ,
200
228
getInvalidations ( ) : Array < RequestInvalidation > ,
201
229
storeResult ( result : TResult , cacheKey ?: string ) : void ,
202
- getRequestResult < T > ( contentKey : ContentKey ) : Async < ?T > ,
203
- getPreviousResult < T > ( ifMatch ? : string ) : Async < ?T > ,
230
+ getRequestResult < T : RequestResult > ( contentKey : ContentKey ) : Async < ?T > ,
231
+ getPreviousResult < T : RequestResult > ( ifMatch ? : string ) : Async < ?T > ,
204
232
getSubRequests ( ) : Array < RequestNode > ,
205
233
getInvalidSubRequests ( ) : Array < RequestNode > ,
206
234
canSkipSubrequest ( ContentKey ) : boolean ,
207
- runRequest : < TInput , TResult > (
235
+ runRequest : < TInput , TResult : RequestResult > (
208
236
subRequest : Request < TInput , TResult > ,
209
237
opts ? : RunRequestOpts ,
210
238
) => Promise < TResult > ,
@@ -1096,7 +1124,7 @@ export default class RequestTracker {
1096
1124
}
1097
1125
1098
1126
// If a cache key is provided, the result will be removed from the node and stored in a separate cache entry
1099
- storeResult ( nodeId : NodeId , result : mixed , cacheKey : ?string ) {
1127
+ storeResult ( nodeId : NodeId , result : RequestResult , cacheKey : ?string ) {
1100
1128
let node = this . graph . getNode ( nodeId ) ;
1101
1129
if ( node && node . type === REQUEST ) {
1102
1130
node . result = result ;
@@ -1112,7 +1140,7 @@ export default class RequestTracker {
1112
1140
) ;
1113
1141
}
1114
1142
1115
- async getRequestResult < T > (
1143
+ async getRequestResult < T : RequestResult > (
1116
1144
contentKey : ContentKey ,
1117
1145
ifMatch ?: string ,
1118
1146
) : Promise < ?T > {
@@ -1184,7 +1212,7 @@ export default class RequestTracker {
1184
1212
this . graph . replaceSubrequests ( requestNodeId , subrequestContextKeys ) ;
1185
1213
}
1186
1214
1187
- async runRequest < TInput , TResult > (
1215
+ async runRequest < TInput , TResult : RequestResult > (
1188
1216
request : Request < TInput , TResult > ,
1189
1217
opts ?: ?RunRequestOpts ,
1190
1218
) : Promise < TResult > {
@@ -1289,7 +1317,7 @@ export default class RequestTracker {
1289
1317
return formattedStats ;
1290
1318
}
1291
1319
1292
- createAPI < TResult > (
1320
+ createAPI < TResult : RequestResult > (
1293
1321
requestId : NodeId ,
1294
1322
previousInvalidations : Array < RequestInvalidation > ,
1295
1323
): { | api : RunAPI < TResult > , subRequestContentKeys : Set < ContentKey > | } {
@@ -1324,11 +1352,12 @@ export default class RequestTracker {
1324
1352
} ,
1325
1353
getSubRequests : ( ) => this . graph . getSubRequests ( requestId ) ,
1326
1354
getInvalidSubRequests : ( ) => this . graph . getInvalidSubRequests ( requestId ) ,
1327
- getPreviousResult : < T > (ifMatch?: string): Async< ?T > => {
1355
+ getPreviousResult : < T : RequestResult > (ifMatch?: string): Async< ?T > => {
1328
1356
let contentKey = nullthrows ( this . graph . getNode ( requestId ) ?. id ) ;
1329
1357
return this . getRequestResult < T > ( contentKey , ifMatch ) ;
1330
1358
} ,
1331
- getRequestResult: < T > (id): Async< ?T > => this . getRequestResult < T > (id),
1359
+ getRequestResult: < T : RequestResult > (id): Async< ?T > =>
1360
+ this . getRequestResult < T > (id),
1332
1361
canSkipSubrequest: contentKey => {
1333
1362
if (
1334
1363
this . graph . hasContentKey ( contentKey ) &&
@@ -1340,7 +1369,7 @@ export default class RequestTracker {
1340
1369
1341
1370
return false;
1342
1371
} ,
1343
- runRequest : < TInput , TResult > (
1372
+ runRequest : < TInput , TResult : RequestResult > (
1344
1373
subRequest: Request< TInput , TResult > ,
1345
1374
opts?: RunRequestOpts,
1346
1375
): Promise< TResult > => {
0 commit comments