@@ -134,6 +134,7 @@ import {
134134 collectMeta ,
135135} from './utils'
136136import type { PageInfo , PageInfos } from './utils'
137+ import type { PrerenderedRoute } from './static-paths/types'
137138import type { AppSegmentConfig } from './segment-config/app/app-segment-config'
138139import { writeBuildId } from './write-build-id'
139140import { normalizeLocalePath } from '../shared/lib/i18n/normalize-locale-path'
@@ -212,7 +213,7 @@ import {
212213 formatNodeOptions ,
213214 getParsedNodeOptionsWithoutInspect ,
214215} from '../server/lib/utils'
215- import type { PrerenderedRoute } from './static-paths/types '
216+ import { InvariantError } from '../shared/lib/invariant-error '
216217
217218type Fallback = null | boolean | string
218219
@@ -2131,11 +2132,16 @@ export default async function build(
21312132 } else {
21322133 const isDynamic = isDynamicRoute ( page )
21332134
2135+ if (
2136+ typeof workerResult . isRoutePPREnabled === 'boolean'
2137+ ) {
2138+ isRoutePPREnabled = workerResult . isRoutePPREnabled
2139+ }
2140+
21342141 // If this route can be partially pre-rendered, then
21352142 // mark it as such and mark that it can be
21362143 // generated server-side.
21372144 if ( workerResult . isRoutePPREnabled ) {
2138- isRoutePPREnabled = workerResult . isRoutePPREnabled
21392145 isSSG = true
21402146 isStatic = true
21412147
@@ -2160,7 +2166,7 @@ export default async function build(
21602166 workerResult . prerenderedRoutes
21612167 )
21622168 ssgPageRoutes = workerResult . prerenderedRoutes . map (
2163- ( route ) => route . path
2169+ ( route ) => route . pathname
21642170 )
21652171 isSSG = true
21662172 }
@@ -2188,9 +2194,12 @@ export default async function build(
21882194 if ( ! isDynamic ) {
21892195 staticPaths . set ( originalAppPath , [
21902196 {
2191- path : page ,
2192- encoded : page ,
2197+ pathname : page ,
2198+ encodedPathname : page ,
21932199 fallbackRouteParams : undefined ,
2200+ fallbackMode :
2201+ workerResult . prerenderFallbackMode ,
2202+ fallbackRootParams : undefined ,
21942203 } ,
21952204 ] )
21962205 isStatic = true
@@ -2256,7 +2265,7 @@ export default async function build(
22562265 workerResult . prerenderedRoutes
22572266 )
22582267 ssgPageRoutes = workerResult . prerenderedRoutes . map (
2259- ( route ) => route . path
2268+ ( route ) => route . pathname
22602269 )
22612270 }
22622271
@@ -2692,7 +2701,7 @@ export default async function build(
26922701 new Map (
26932702 Array . from ( additionalPaths . entries ( ) ) . map (
26942703 ( [ page , routes ] ) : [ string , string [ ] ] => {
2695- return [ page , routes . map ( ( route ) => route . path ) ]
2704+ return [ page , routes . map ( ( route ) => route . pathname ) ]
26962705 }
26972706 )
26982707 )
@@ -2743,9 +2752,9 @@ export default async function build(
27432752 // post slugs.
27442753 additionalPaths . forEach ( ( routes , page ) => {
27452754 routes . forEach ( ( route ) => {
2746- defaultMap [ route . path ] = {
2755+ defaultMap [ route . pathname ] = {
27472756 page,
2748- query : { __nextSsgPath : route . encoded } ,
2757+ query : { __nextSsgPath : route . encodedPathname } ,
27492758 }
27502759 } )
27512760 } )
@@ -2773,9 +2782,9 @@ export default async function build(
27732782 : undefined
27742783
27752784 routes . forEach ( ( route ) => {
2776- defaultMap [ route . path ] = {
2785+ defaultMap [ route . pathname ] = {
27772786 page : originalAppPath ,
2778- query : { __nextSsgPath : route . encoded } ,
2787+ query : { __nextSsgPath : route . encodedPathname } ,
27792788 _fallbackRouteParams : route . fallbackRouteParams ,
27802789 _isDynamicError : isDynamicError ,
27812790 _isAppDir : true ,
@@ -2885,8 +2894,11 @@ export default async function build(
28852894 }
28862895
28872896 staticPaths . forEach ( ( prerenderedRoutes , originalAppPath ) => {
2888- const page = appNormalizedPaths . get ( originalAppPath ) || ''
2889- const appConfig = appDefaultConfigs . get ( originalAppPath ) || { }
2897+ const page = appNormalizedPaths . get ( originalAppPath )
2898+ if ( ! page ) throw new InvariantError ( 'Page not found' )
2899+
2900+ const appConfig = appDefaultConfigs . get ( originalAppPath )
2901+ if ( ! appConfig ) throw new InvariantError ( 'App config not found' )
28902902
28912903 let hasRevalidateZero =
28922904 appConfig . revalidate === 0 ||
@@ -2928,8 +2940,8 @@ export default async function build(
29282940 // route), any routes that were generated with unknown route params
29292941 // should be collected and included in the dynamic routes part
29302942 // of the manifest instead.
2931- const routes : string [ ] = [ ]
2932- const dynamicRoutes : string [ ] = [ ]
2943+ const routes : PrerenderedRoute [ ] = [ ]
2944+ const dynamicRoutes : PrerenderedRoute [ ] = [ ]
29332945
29342946 // Sort the outputted routes to ensure consistent output. Any route
29352947 // though that has unknown route params will be pulled and sorted
@@ -2951,11 +2963,11 @@ export default async function build(
29512963
29522964 unknownPrerenderRoutes = getSortedRouteObjects (
29532965 unknownPrerenderRoutes ,
2954- ( prerenderedRoute ) => prerenderedRoute . path
2966+ ( prerenderedRoute ) => prerenderedRoute . pathname
29552967 )
29562968 knownPrerenderRoutes = getSortedRouteObjects (
29572969 knownPrerenderRoutes ,
2958- ( prerenderedRoute ) => prerenderedRoute . path
2970+ ( prerenderedRoute ) => prerenderedRoute . pathname
29592971 )
29602972
29612973 prerenderedRoutes = [
@@ -2966,7 +2978,7 @@ export default async function build(
29662978 for ( const prerenderedRoute of prerenderedRoutes ) {
29672979 // TODO: check if still needed?
29682980 // Exclude the /_not-found route.
2969- if ( prerenderedRoute . path === UNDERSCORE_NOT_FOUND_ROUTE ) {
2981+ if ( prerenderedRoute . pathname === UNDERSCORE_NOT_FOUND_ROUTE ) {
29702982 continue
29712983 }
29722984
@@ -2977,28 +2989,28 @@ export default async function build(
29772989 ) {
29782990 // If the route has unknown params, then we need to add it to
29792991 // the list of dynamic routes.
2980- dynamicRoutes . push ( prerenderedRoute . path )
2992+ dynamicRoutes . push ( prerenderedRoute )
29812993 } else {
29822994 // If the route doesn't have unknown params, then we need to
29832995 // add it to the list of routes.
2984- routes . push ( prerenderedRoute . path )
2996+ routes . push ( prerenderedRoute )
29852997 }
29862998 }
29872999
29883000 // Handle all the static routes.
29893001 for ( const route of routes ) {
2990- if ( isDynamicRoute ( page ) && route === page ) continue
2991- if ( route === UNDERSCORE_NOT_FOUND_ROUTE ) continue
3002+ if ( isDynamicRoute ( page ) && route . pathname === page ) continue
3003+ if ( route . pathname === UNDERSCORE_NOT_FOUND_ROUTE ) continue
29923004
29933005 const {
29943006 revalidate = appConfig . revalidate ?? false ,
29953007 metadata = { } ,
29963008 hasEmptyPrelude,
29973009 hasPostponed,
2998- } = exportResult . byPath . get ( route ) ?? { }
3010+ } = exportResult . byPath . get ( route . pathname ) ?? { }
29993011
3000- pageInfos . set ( route , {
3001- ...( pageInfos . get ( route ) as PageInfo ) ,
3012+ pageInfos . set ( route . pathname , {
3013+ ...( pageInfos . get ( route . pathname ) as PageInfo ) ,
30023014 hasPostponed,
30033015 hasEmptyPrelude,
30043016 } )
@@ -3011,7 +3023,7 @@ export default async function build(
30113023 } )
30123024
30133025 if ( revalidate !== 0 ) {
3014- const normalizedRoute = normalizePagePath ( route )
3026+ const normalizedRoute = normalizePagePath ( route . pathname )
30153027
30163028 let dataRoute : string | null
30173029 if ( isAppRouteHandler ) {
@@ -3033,7 +3045,7 @@ export default async function build(
30333045
30343046 const meta = collectMeta ( metadata )
30353047
3036- prerenderManifest . routes [ route ] = {
3048+ prerenderManifest . routes [ route . pathname ] = {
30373049 initialStatus : meta . status ,
30383050 initialHeaders : meta . headers ,
30393051 renderingMode : isAppPPREnabled
@@ -3053,8 +3065,8 @@ export default async function build(
30533065 hasRevalidateZero = true
30543066 // we might have determined during prerendering that this page
30553067 // used dynamic data
3056- pageInfos . set ( route , {
3057- ...( pageInfos . get ( route ) as PageInfo ) ,
3068+ pageInfos . set ( route . pathname , {
3069+ ...( pageInfos . get ( route . pathname ) as PageInfo ) ,
30583070 isSSG : false ,
30593071 isStatic : false ,
30603072 } )
@@ -3066,14 +3078,22 @@ export default async function build(
30663078 // they are enabled, then it'll already be included in the
30673079 // prerendered routes.
30683080 if ( ! isRoutePPREnabled ) {
3069- dynamicRoutes . push ( page )
3081+ dynamicRoutes . push ( {
3082+ pathname : page ,
3083+ encodedPathname : page ,
3084+ fallbackRouteParams : undefined ,
3085+ fallbackMode :
3086+ fallbackModes . get ( originalAppPath ) ??
3087+ FallbackMode . NOT_FOUND ,
3088+ fallbackRootParams : undefined ,
3089+ } )
30703090 }
30713091
30723092 for ( const route of dynamicRoutes ) {
3073- const normalizedRoute = normalizePagePath ( route )
3093+ const normalizedRoute = normalizePagePath ( route . pathname )
30743094
30753095 const { metadata, revalidate } =
3076- exportResult . byPath . get ( route ) ?? { }
3096+ exportResult . byPath . get ( route . pathname ) ?? { }
30773097
30783098 let dataRoute : string | null = null
30793099 if ( ! isAppRouteHandler ) {
@@ -3087,16 +3107,16 @@ export default async function build(
30873107 )
30883108 }
30893109
3090- pageInfos . set ( route , {
3091- ...( pageInfos . get ( route ) as PageInfo ) ,
3110+ pageInfos . set ( route . pathname , {
3111+ ...( pageInfos . get ( route . pathname ) as PageInfo ) ,
30923112 isDynamicAppRoute : true ,
30933113 // if PPR is turned on and the route contains a dynamic segment,
30943114 // we assume it'll be partially prerendered
30953115 hasPostponed : isRoutePPREnabled ,
30963116 } )
30973117
30983118 const fallbackMode =
3099- fallbackModes . get ( originalAppPath ) ?? FallbackMode . NOT_FOUND
3119+ route . fallbackMode ?? FallbackMode . NOT_FOUND
31003120
31013121 // When we're configured to serve a prerender, we should use the
31023122 // fallback revalidate from the export result. If it can't be
@@ -3108,7 +3128,7 @@ export default async function build(
31083128
31093129 const fallback : Fallback = fallbackModeToFallbackField (
31103130 fallbackMode ,
3111- route
3131+ route . pathname
31123132 )
31133133
31143134 const meta =
@@ -3118,7 +3138,7 @@ export default async function build(
31183138 ? collectMeta ( metadata )
31193139 : { }
31203140
3121- prerenderManifest . dynamicRoutes [ route ] = {
3141+ prerenderManifest . dynamicRoutes [ route . pathname ] = {
31223142 experimentalPPR : isRoutePPREnabled ,
31233143 renderingMode : isAppPPREnabled
31243144 ? isRoutePPREnabled
@@ -3127,7 +3147,7 @@ export default async function build(
31273147 : undefined ,
31283148 experimentalBypassFor : bypassFor ,
31293149 routeRegex : normalizeRouteRegex (
3130- getNamedRouteRegex ( route , false ) . re . source
3150+ getNamedRouteRegex ( route . pathname , false ) . re . source
31313151 ) ,
31323152 dataRoute,
31333153 fallback,
@@ -3417,18 +3437,18 @@ export default async function build(
34173437 // We must also copy specific versions of this page as defined by
34183438 // `getStaticPaths` (additionalSsgPaths).
34193439 for ( const route of additionalPaths . get ( page ) ?? [ ] ) {
3420- const pageFile = normalizePagePath ( route . path )
3440+ const pageFile = normalizePagePath ( route . pathname )
34213441 await moveExportedPage (
34223442 page ,
3423- route . path ,
3443+ route . pathname ,
34243444 pageFile ,
34253445 isSsg ,
34263446 'html' ,
34273447 true
34283448 )
34293449 await moveExportedPage (
34303450 page ,
3431- route . path ,
3451+ route . pathname ,
34323452 pageFile ,
34333453 isSsg ,
34343454 'json' ,
@@ -3456,21 +3476,21 @@ export default async function build(
34563476 }
34573477
34583478 const initialRevalidateSeconds =
3459- exportResult . byPath . get ( route . path ) ?. revalidate ?? false
3479+ exportResult . byPath . get ( route . pathname ) ?. revalidate ?? false
34603480
34613481 if ( typeof initialRevalidateSeconds === 'undefined' ) {
34623482 throw new Error ( "Invariant: page wasn't built" )
34633483 }
34643484
3465- prerenderManifest . routes [ route . path ] = {
3485+ prerenderManifest . routes [ route . pathname ] = {
34663486 initialRevalidateSeconds,
34673487 experimentalPPR : undefined ,
34683488 renderingMode : undefined ,
34693489 srcRoute : page ,
34703490 dataRoute : path . posix . join (
34713491 '/_next/data' ,
34723492 buildId ,
3473- `${ normalizePagePath ( route . path ) } .json`
3493+ `${ normalizePagePath ( route . pathname ) } .json`
34743494 ) ,
34753495 // Pages does not have a prefetch data route.
34763496 prefetchDataRoute : undefined ,
0 commit comments