@@ -172,11 +172,9 @@ export type ReactRouterConfig = {
172172 * directly on the `routeDiscovery` config.
173173 */
174174 routeDiscovery ?:
175- | "lazy"
176- | "initial"
177175 | {
178- mode ?: "lazy" ; // Can only adjust the manifest path in `lazy` mode
179- manifestPath : string ;
176+ mode ?: "lazy" ;
177+ manifestPath ? : string ;
180178 }
181179 | {
182180 mode : "initial" ;
@@ -234,10 +232,7 @@ export type ResolvedReactRouterConfig = Readonly<{
234232 * application. You can set this to `initial` to opt-out of this behavior and
235233 * load all routes with the initial HTML document load.
236234 */
237- routeDiscovery : {
238- mode : "lazy" | "initial" ;
239- manifestPath : string ;
240- } ;
235+ routeDiscovery : ReactRouterConfig [ "routeDiscovery" ] ;
241236 /**
242237 * An object of all available routes, keyed by route id.
243238 */
@@ -416,6 +411,10 @@ async function resolveConfig({
416411 let defaults = {
417412 basename : "/" ,
418413 buildDirectory : "build" ,
414+ routeDiscovery : {
415+ mode : "lazy" ,
416+ manifestPath : "/__manifest" ,
417+ } ,
419418 serverBuildFile : "index.js" ,
420419 serverModuleFormat : "esm" ,
421420 ssr : true ,
@@ -432,7 +431,7 @@ async function resolveConfig({
432431 buildDirectory : userBuildDirectory ,
433432 buildEnd,
434433 prerender,
435- routeDiscovery : userRouteDiscovery ,
434+ routeDiscovery,
436435 serverBuildFile,
437436 serverBundles,
438437 serverModuleFormat,
@@ -459,43 +458,24 @@ async function resolveConfig({
459458 ) ;
460459 }
461460
462- let routeDiscovery : ResolvedReactRouterConfig [ "routeDiscovery" ] = {
463- mode : "lazy" ,
464- manifestPath : "/__manifest" ,
465- } ;
466-
467- if ( userRouteDiscovery == null ) {
461+ if ( userAndPresetConfigs . routeDiscovery == null ) {
462+ // Disable FOW when SSR is disabled, otherwise use defaults
468463 if ( ! ssr ) {
469- // No FOW when SSR is disabled
470- routeDiscovery . mode = "initial" ;
471- } else {
472- // no-op - use defaults
464+ routeDiscovery = { mode : "initial" } ;
473465 }
474- } else if (
475- userRouteDiscovery === "initial" ||
476- ( typeof userRouteDiscovery === "object" &&
477- userRouteDiscovery . mode === "initial" )
478- ) {
479- routeDiscovery . mode = "initial" ;
480- } else {
466+ } else if ( userAndPresetConfigs . routeDiscovery . mode === "lazy" ) {
481467 if ( ! ssr ) {
482468 return err (
483- 'The `routeDiscovery` config must be left unset or set to "initial" ' +
484- "when setting `ssr:false`"
469+ 'The `routeDiscovery.mode` config cannot be set to "lazy" when setting `ssr:false`'
485470 ) ;
486471 }
487- if ( typeof userRouteDiscovery === "object" ) {
488- if (
489- userRouteDiscovery . manifestPath != null &&
490- ! userRouteDiscovery . manifestPath . startsWith ( "/" )
491- ) {
492- return err (
493- "The `routeDiscovery.manifestPath` config must be a root-relative " +
494- 'pathname beginning with a slash (i.e., "/__manifest")'
495- ) ;
496- }
497- routeDiscovery . manifestPath =
498- userRouteDiscovery . manifestPath ?? "/__manifest" ;
472+
473+ let manifestPath = userAndPresetConfigs . routeDiscovery . manifestPath ;
474+ if ( manifestPath != null && ! manifestPath . startsWith ( "/" ) ) {
475+ return err (
476+ "The `routeDiscovery.manifestPath` config must be a root-relative " +
477+ 'pathname beginning with a slash (i.e., "/__manifest")'
478+ ) ;
499479 }
500480 }
501481
0 commit comments