@@ -97,24 +97,26 @@ export async function prerenderPages(
97
97
}
98
98
99
99
// Get routes to prerender
100
- const { errors : extractionErrors , serializedRouteTree : serializableRouteTreeNode } =
101
- await getAllRoutes (
102
- workspaceRoot ,
103
- baseHref ,
104
- outputFilesForWorker ,
105
- assetsReversed ,
106
- appShellOptions ,
107
- prerenderOptions ,
108
- sourcemap ,
109
- outputMode ,
110
- ) . catch ( ( err ) => {
111
- return {
112
- errors : [
113
- `An error occurred while extracting routes.\n\n${ err . stack ?? err . message ?? err } ` ,
114
- ] ,
115
- serializedRouteTree : [ ] ,
116
- } ;
117
- } ) ;
100
+ const {
101
+ errors : extractionErrors ,
102
+ serializedRouteTree : serializableRouteTreeNode ,
103
+ appShellRoute,
104
+ } = await getAllRoutes (
105
+ workspaceRoot ,
106
+ baseHref ,
107
+ outputFilesForWorker ,
108
+ assetsReversed ,
109
+ appShellOptions ,
110
+ prerenderOptions ,
111
+ sourcemap ,
112
+ outputMode ,
113
+ ) . catch ( ( err ) => {
114
+ return {
115
+ errors : [ `An error occurred while extracting routes.\n\n${ err . stack ?? err . message ?? err } ` ] ,
116
+ serializedRouteTree : [ ] ,
117
+ appShellRoute : undefined ,
118
+ } ;
119
+ } ) ;
118
120
119
121
errors . push ( ...extractionErrors ) ;
120
122
@@ -133,7 +135,6 @@ export async function prerenderPages(
133
135
switch ( metadata . renderMode ) {
134
136
case undefined : /* Legacy building mode */
135
137
case RouteRenderMode . Prerender :
136
- case RouteRenderMode . AppShell :
137
138
serializableRouteTreeNodeForPrerender . push ( metadata ) ;
138
139
break ;
139
140
case RouteRenderMode . Server :
@@ -166,6 +167,7 @@ export async function prerenderPages(
166
167
assetsReversed ,
167
168
appShellOptions ,
168
169
outputMode ,
170
+ appShellRoute ?? appShellOptions ?. route ,
169
171
) ;
170
172
171
173
errors . push ( ...renderingErrors ) ;
@@ -188,6 +190,7 @@ async function renderPages(
188
190
assetFilesForWorker : Record < string , string > ,
189
191
appShellOptions : AppShellOptions | undefined ,
190
192
outputMode : OutputMode | undefined ,
193
+ appShellRoute : string | undefined ,
191
194
) : Promise < {
192
195
output : PrerenderOutput ;
193
196
errors : string [ ] ;
@@ -215,7 +218,7 @@ async function renderPages(
215
218
216
219
try {
217
220
const renderingPromises : Promise < void > [ ] = [ ] ;
218
- const appShellRoute = appShellOptions && addLeadingSlash ( appShellOptions . route ) ;
221
+ const appShellRouteWithLeadingSlash = appShellRoute && addLeadingSlash ( appShellRoute ) ;
219
222
const baseHrefWithLeadingSlash = addLeadingSlash ( baseHref ) ;
220
223
221
224
for ( const { route, redirectTo, renderMode } of serializableRouteTreeNode ) {
@@ -232,16 +235,14 @@ async function renderPages(
232
235
continue ;
233
236
}
234
237
235
- const isAppShellRoute =
236
- renderMode === RouteRenderMode . AppShell ||
237
- // Legacy handling
238
- ( renderMode === undefined && appShellRoute === routeWithoutBaseHref ) ;
239
-
240
- const render : Promise < string | null > = renderWorker . run ( { url : route , isAppShellRoute } ) ;
238
+ const render : Promise < string | null > = renderWorker . run ( { url : route } ) ;
241
239
const renderResult : Promise < void > = render
242
240
. then ( ( content ) => {
243
241
if ( content !== null ) {
244
- output [ outPath ] = { content, appShellRoute : isAppShellRoute } ;
242
+ output [ outPath ] = {
243
+ content,
244
+ appShellRoute : appShellRouteWithLeadingSlash === routeWithoutBaseHref ,
245
+ } ;
245
246
}
246
247
} )
247
248
. catch ( ( err ) => {
@@ -274,14 +275,21 @@ async function getAllRoutes(
274
275
prerenderOptions : PrerenderOptions | undefined ,
275
276
sourcemap : boolean ,
276
277
outputMode : OutputMode | undefined ,
277
- ) : Promise < { serializedRouteTree : SerializableRouteTreeNode ; errors : string [ ] } > {
278
+ ) : Promise < {
279
+ serializedRouteTree : SerializableRouteTreeNode ;
280
+ appShellRoute ?: string ;
281
+ errors : string [ ] ;
282
+ } > {
278
283
const { routesFile, discoverRoutes } = prerenderOptions ?? { } ;
279
284
const routes : WritableSerializableRouteTreeNode = [ ] ;
285
+ let appShellRoute : string | undefined ;
280
286
281
287
if ( appShellOptions ) {
288
+ appShellRoute = urlJoin ( baseHref , appShellOptions . route ) ;
289
+
282
290
routes . push ( {
283
- renderMode : RouteRenderMode . AppShell ,
284
- route : urlJoin ( baseHref , appShellOptions . route ) ,
291
+ renderMode : RouteRenderMode . Prerender ,
292
+ route : appShellRoute ,
285
293
} ) ;
286
294
}
287
295
@@ -296,7 +304,7 @@ async function getAllRoutes(
296
304
}
297
305
298
306
if ( ! discoverRoutes ) {
299
- return { errors : [ ] , serializedRouteTree : routes } ;
307
+ return { errors : [ ] , appShellRoute , serializedRouteTree : routes } ;
300
308
}
301
309
302
310
const workerExecArgv = [ IMPORT_EXEC_ARGV ] ;
@@ -319,12 +327,11 @@ async function getAllRoutes(
319
327
} ) ;
320
328
321
329
try {
322
- const { serializedRouteTree, errors } : RoutersExtractorWorkerResult = await renderWorker . run (
323
- { } ,
324
- ) ;
330
+ const { serializedRouteTree, appShellRoute, errors } : RoutersExtractorWorkerResult =
331
+ await renderWorker . run ( { } ) ;
325
332
326
333
if ( ! routes . length ) {
327
- return { errors, serializedRouteTree } ;
334
+ return { errors, appShellRoute , serializedRouteTree } ;
328
335
}
329
336
330
337
// Merge the routing trees
0 commit comments