@@ -8,15 +8,15 @@ import { SSRDataProvider } from '~/lib/ssr-data'
88import { runLoaders } from '~/loaders.server'
99import { matchRoutes } from '~/route-gen'
1010
11- export async function loadData (
12- request : Request ,
13- ) : Promise < {
11+ type LoaderResult = {
1412 data : Record < string , unknown >
1513 redirect ?: string
1614 statusCode ?: number
1715 title ?: string
1816 description ?: string
19- } > {
17+ }
18+
19+ export async function loadData ( request : Request ) : Promise < LoaderResult > {
2020 return runLoaders ( matchRoutes ( routes , request . url ) , request )
2121}
2222
@@ -30,27 +30,18 @@ export async function render(request: Request): Promise<{
3030} > {
3131 const pathname = new URL ( request . url , 'http://localhost' ) . pathname
3232
33- let ssrData : Record < string , unknown >
34- let redirect : string | undefined
35- let statusCode : number | undefined
36- let title : string | undefined
37- let description : string | undefined
38-
39- try {
40- const result = await loadData ( request )
41- ssrData = result . data
42- redirect = result . redirect
43- statusCode = result . statusCode
44- title = result . title
45- description = result . description
46- } catch ( err ) {
33+ const result = await loadData ( request ) . catch ( ( err : unknown ) => {
4734 console . error ( 'Loader error:' , err )
48- ssrData = { }
49- statusCode = 500
50- }
35+ return { data : { } , statusCode : 500 } as LoaderResult
36+ } )
5137
52- if ( redirect ) {
53- return { html : '' , ssrData : { } , redirect, statusCode : statusCode ?? 302 }
38+ if ( result . redirect ) {
39+ return {
40+ html : '' ,
41+ ssrData : { } ,
42+ redirect : result . redirect ,
43+ statusCode : result . statusCode ?? 302 ,
44+ }
5445 }
5546
5647 return new Promise ( ( resolve , reject ) => {
@@ -62,7 +53,7 @@ export async function render(request: Request): Promise<{
6253
6354 const { pipe } = renderToPipeableStream (
6455 < StaticRouter location = { pathname } >
65- < SSRDataProvider data = { ssrData } >
56+ < SSRDataProvider data = { result . data } >
6657 < App />
6758 </ SSRDataProvider >
6859 </ StaticRouter > ,
@@ -72,10 +63,10 @@ export async function render(request: Request): Promise<{
7263 passthrough . on ( 'end' , ( ) =>
7364 resolve ( {
7465 html,
75- ssrData,
76- ...( statusCode !== undefined && { statusCode } ) ,
77- ...( title !== undefined && { title } ) ,
78- ...( description !== undefined && { description } ) ,
66+ ssrData : result . data ,
67+ ...( result . statusCode !== undefined && { statusCode : result . statusCode } ) ,
68+ ...( result . title !== undefined && { title : result . title } ) ,
69+ ...( result . description !== undefined && { description : result . description } ) ,
7970 } ) ,
8071 )
8172 } ,
0 commit comments