@@ -396,6 +396,106 @@ export function createRequest(
396396 return request ;
397397}
398398
399+ export function createPrerenderRequest (
400+ children : ReactNodeList ,
401+ resumableState : ResumableState ,
402+ renderState : RenderState ,
403+ rootFormatContext : FormatContext ,
404+ progressiveChunkSize : void | number ,
405+ onError : void | ( ( error : mixed ) => ?string ) ,
406+ onAllReady : void | ( ( ) => void ) ,
407+ onShellReady : void | ( ( ) => void ) ,
408+ onShellError : void | ( ( error : mixed ) => void ) ,
409+ onFatalError : void | ( ( error : mixed ) => void ) ,
410+ onPostpone : void | ( ( reason : string ) => void ) ,
411+ ) : Request {
412+ const request = createRequest (
413+ children ,
414+ resumableState ,
415+ renderState ,
416+ rootFormatContext ,
417+ progressiveChunkSize ,
418+ onError ,
419+ onAllReady ,
420+ onShellReady ,
421+ onShellError ,
422+ onFatalError ,
423+ onPostpone ,
424+ ) ;
425+ // Start tracking postponed holes during this render.
426+ request . trackedPostpones = { workingMap : new Map ( ) , root : [ ] } ;
427+ return request ;
428+ }
429+
430+ export function resumeRequest (
431+ children : ReactNodeList ,
432+ postponedState : PostponedState ,
433+ renderState : RenderState ,
434+ onError : void | ( ( error : mixed ) => ?string ) ,
435+ onAllReady : void | ( ( ) => void ) ,
436+ onShellReady : void | ( ( ) => void ) ,
437+ onShellError : void | ( ( error : mixed ) => void ) ,
438+ onFatalError : void | ( ( error : mixed ) => void ) ,
439+ onPostpone : void | ( ( reason : string ) => void ) ,
440+ ) : Request {
441+ prepareHostDispatcher ( ) ;
442+ const pingedTasks : Array < Task > = [ ] ;
443+ const abortSet : Set < Task > = new Set ( ) ;
444+ const request : Request = {
445+ destination : null ,
446+ flushScheduled : false ,
447+ resumableState : postponedState . resumableState ,
448+ renderState ,
449+ rootFormatContext : postponedState . rootFormatContext ,
450+ progressiveChunkSize : postponedState . progressiveChunkSize ,
451+ status : OPEN ,
452+ fatalError : null ,
453+ nextSegmentId : 0 ,
454+ allPendingTasks : 0 ,
455+ pendingRootTasks : 0 ,
456+ completedRootSegment : null ,
457+ abortableTasks : abortSet ,
458+ pingedTasks : pingedTasks ,
459+ clientRenderedBoundaries : ( [ ] : Array < SuspenseBoundary > ) ,
460+ completedBoundaries : ( [ ] : Array < SuspenseBoundary > ) ,
461+ partialBoundaries : ( [ ] : Array < SuspenseBoundary > ) ,
462+ trackedPostpones : null ,
463+ onError : onError === undefined ? defaultErrorHandler : onError ,
464+ onPostpone : onPostpone === undefined ? noop : onPostpone ,
465+ onAllReady : onAllReady === undefined ? noop : onAllReady ,
466+ onShellReady : onShellReady === undefined ? noop : onShellReady ,
467+ onShellError : onShellError === undefined ? noop : onShellError ,
468+ onFatalError : onFatalError === undefined ? noop : onFatalError ,
469+ } ;
470+ // This segment represents the root fallback.
471+ const rootSegment = createPendingSegment (
472+ request ,
473+ 0 ,
474+ null ,
475+ postponedState . rootFormatContext ,
476+ // Root segments are never embedded in Text on either edge
477+ false ,
478+ false ,
479+ ) ;
480+ // There is no parent so conceptually, we're unblocked to flush this segment.
481+ rootSegment . parentFlushed = true ;
482+ const rootTask = createTask (
483+ request ,
484+ null ,
485+ children ,
486+ null ,
487+ rootSegment ,
488+ abortSet ,
489+ null ,
490+ postponedState . rootFormatContext ,
491+ emptyContextObject ,
492+ rootContextSnapshot ,
493+ emptyTreeContext ,
494+ ) ;
495+ pingedTasks . push ( rootTask ) ;
496+ return request ;
497+ }
498+
399499let currentRequest : null | Request = null ;
400500
401501export function resolveRequest ( ) : null | Request {
@@ -2760,12 +2860,6 @@ export function startWork(request: Request): void {
27602860 }
27612861}
27622862
2763- export function startPrerenderWork ( request : Request ) : void {
2764- // Start tracking postponed holes during this render.
2765- request . trackedPostpones = { workingMap : new Map ( ) , root : [ ] } ;
2766- startWork ( request ) ;
2767- }
2768-
27692863function enqueueFlush ( request : Request ) : void {
27702864 if (
27712865 request . flushScheduled === false &&
0 commit comments