44 * For more information, see https://remix.run/file-conventions/entry.server
55 */
66
7- import { PassThrough } from " node:stream" ;
7+ import { PassThrough } from ' node:stream'
88
9- import type { AppLoadContext , EntryContext } from " @remix-run/node" ;
10- import { createReadableStreamFromReadable } from " @remix-run/node" ;
11- import { RemixServer } from " @remix-run/react" ;
12- import { isbot } from " isbot" ;
13- import { renderToPipeableStream } from " react-dom/server" ;
9+ import type { AppLoadContext , EntryContext } from ' @remix-run/node'
10+ import { createReadableStreamFromReadable } from ' @remix-run/node'
11+ import { RemixServer } from ' @remix-run/react'
12+ import { isbot } from ' isbot'
13+ import { renderToPipeableStream } from ' react-dom/server'
1414
15- const ABORT_DELAY = 5_000 ;
15+ const ABORT_DELAY = 5_000
1616
1717export default function handleRequest (
1818 request : Request ,
@@ -24,19 +24,9 @@ export default function handleRequest(
2424 // eslint-disable-next-line @typescript-eslint/no-unused-vars
2525 loadContext : AppLoadContext
2626) {
27- return isbot ( request . headers . get ( "user-agent" ) || "" )
28- ? handleBotRequest (
29- request ,
30- responseStatusCode ,
31- responseHeaders ,
32- remixContext
33- )
34- : handleBrowserRequest (
35- request ,
36- responseStatusCode ,
37- responseHeaders ,
38- remixContext
39- ) ;
27+ return isbot ( request . headers . get ( 'user-agent' ) || '' )
28+ ? handleBotRequest ( request , responseStatusCode , responseHeaders , remixContext )
29+ : handleBrowserRequest ( request , responseStatusCode , responseHeaders , remixContext )
4030}
4131
4232function handleBotRequest (
@@ -46,47 +36,43 @@ function handleBotRequest(
4636 remixContext : EntryContext
4737) {
4838 return new Promise ( ( resolve , reject ) => {
49- let shellRendered = false ;
39+ let shellRendered = false
5040 const { pipe, abort } = renderToPipeableStream (
51- < RemixServer
52- context = { remixContext }
53- url = { request . url }
54- abortDelay = { ABORT_DELAY }
55- /> ,
41+ < RemixServer context = { remixContext } url = { request . url } abortDelay = { ABORT_DELAY } /> ,
5642 {
5743 onAllReady ( ) {
58- shellRendered = true ;
59- const body = new PassThrough ( ) ;
60- const stream = createReadableStreamFromReadable ( body ) ;
44+ shellRendered = true
45+ const body = new PassThrough ( )
46+ const stream = createReadableStreamFromReadable ( body )
6147
62- responseHeaders . set ( " Content-Type" , " text/html" ) ;
48+ responseHeaders . set ( ' Content-Type' , ' text/html' )
6349
6450 resolve (
6551 new Response ( stream , {
6652 headers : responseHeaders ,
6753 status : responseStatusCode ,
6854 } )
69- ) ;
55+ )
7056
71- pipe ( body ) ;
57+ pipe ( body )
7258 } ,
7359 onShellError ( error : unknown ) {
74- reject ( error ) ;
60+ reject ( error )
7561 } ,
7662 onError ( error : unknown ) {
77- responseStatusCode = 500 ;
63+ responseStatusCode = 500
7864 // Log streaming rendering errors from inside the shell. Don't log
7965 // errors encountered during initial shell rendering since they'll
8066 // reject and get logged in handleDocumentRequest.
8167 if ( shellRendered ) {
82- console . error ( error ) ;
68+ console . error ( error )
8369 }
8470 } ,
8571 }
86- ) ;
72+ )
8773
88- setTimeout ( abort , ABORT_DELAY ) ;
89- } ) ;
74+ setTimeout ( abort , ABORT_DELAY )
75+ } )
9076}
9177
9278function handleBrowserRequest (
@@ -96,45 +82,41 @@ function handleBrowserRequest(
9682 remixContext : EntryContext
9783) {
9884 return new Promise ( ( resolve , reject ) => {
99- let shellRendered = false ;
85+ let shellRendered = false
10086 const { pipe, abort } = renderToPipeableStream (
101- < RemixServer
102- context = { remixContext }
103- url = { request . url }
104- abortDelay = { ABORT_DELAY }
105- /> ,
87+ < RemixServer context = { remixContext } url = { request . url } abortDelay = { ABORT_DELAY } /> ,
10688 {
10789 onShellReady ( ) {
108- shellRendered = true ;
109- const body = new PassThrough ( ) ;
110- const stream = createReadableStreamFromReadable ( body ) ;
90+ shellRendered = true
91+ const body = new PassThrough ( )
92+ const stream = createReadableStreamFromReadable ( body )
11193
112- responseHeaders . set ( " Content-Type" , " text/html" ) ;
94+ responseHeaders . set ( ' Content-Type' , ' text/html' )
11395
11496 resolve (
11597 new Response ( stream , {
11698 headers : responseHeaders ,
11799 status : responseStatusCode ,
118100 } )
119- ) ;
101+ )
120102
121- pipe ( body ) ;
103+ pipe ( body )
122104 } ,
123105 onShellError ( error : unknown ) {
124- reject ( error ) ;
106+ reject ( error )
125107 } ,
126108 onError ( error : unknown ) {
127- responseStatusCode = 500 ;
109+ responseStatusCode = 500
128110 // Log streaming rendering errors from inside the shell. Don't log
129111 // errors encountered during initial shell rendering since they'll
130112 // reject and get logged in handleDocumentRequest.
131113 if ( shellRendered ) {
132- console . error ( error ) ;
114+ console . error ( error )
133115 }
134116 } ,
135117 }
136- ) ;
118+ )
137119
138- setTimeout ( abort , ABORT_DELAY ) ;
139- } ) ;
120+ setTimeout ( abort , ABORT_DELAY )
121+ } )
140122}
0 commit comments