@vercel/next 4.10.10 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +43 -22
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -11162,6 +11162,14 @@ async function getDynamicRoutes({
11162
11162
  case 3:
11163
11163
  case 4: {
11164
11164
  const routes2 = [];
11165
+ if (isAppClientSegmentCacheEnabled && !isAppPPREnabled) {
11166
+ routes2.push({
11167
+ src: "^/(?<path>.+)(?<rscSuffix>\\.segments/.+\\.segment\\.rsc)(?:/)?$",
11168
+ dest: `/$path${isAppPPREnabled ? ".prefetch.rsc" : ".rsc"}`,
11169
+ check: true,
11170
+ override: true
11171
+ });
11172
+ }
11165
11173
  for (const dynamicRoute of routesManifest.dynamicRoutes) {
11166
11174
  if (!canUsePreviewMode && omittedRoutes?.has(dynamicRoute.page)) {
11167
11175
  continue;
@@ -11182,7 +11190,8 @@ async function getDynamicRoutes({
11182
11190
  namedRegex,
11183
11191
  regex,
11184
11192
  routeKeys,
11185
- prefetchSegmentDataRoutes
11193
+ prefetchSegmentDataRoutes,
11194
+ hasFallbackRootParams
11186
11195
  } = params;
11187
11196
  const route = {
11188
11197
  src: namedRegex || regex,
@@ -11191,6 +11200,10 @@ async function getDynamicRoutes({
11191
11200
  if (!isServerMode) {
11192
11201
  route.check = true;
11193
11202
  }
11203
+ if (isAppPPREnabled || isAppClientSegmentCacheEnabled) {
11204
+ route.check = true;
11205
+ route.override = true;
11206
+ }
11194
11207
  if (isServerMode && canUsePreviewMode && omittedRoutes?.has(page)) {
11195
11208
  route.has = [
11196
11209
  {
@@ -11207,7 +11220,6 @@ async function getDynamicRoutes({
11207
11220
  if (isAppClientSegmentCacheEnabled && prefetchSegmentDataRoutes && prefetchSegmentDataRoutes.length > 0) {
11208
11221
  for (const prefetchSegmentDataRoute of prefetchSegmentDataRoutes) {
11209
11222
  routes2.push({
11210
- ...route,
11211
11223
  src: prefetchSegmentDataRoute.source,
11212
11224
  dest: getDestinationForSegmentRoute(
11213
11225
  isDev === true,
@@ -11215,18 +11227,23 @@ async function getDynamicRoutes({
11215
11227
  routeKeys,
11216
11228
  prefetchSegmentDataRoute
11217
11229
  ),
11218
- check: true
11230
+ check: true,
11231
+ override: true
11219
11232
  });
11220
11233
  }
11221
11234
  }
11222
11235
  if (isAppPPREnabled || isAppClientSegmentCacheEnabled) {
11223
11236
  routes2.push({
11224
- ...route,
11225
11237
  src: route.src.replace(
11226
11238
  new RegExp((0, import_escape_string_regexp.default)("(?:/)?$")),
11227
- "(?<rscSuffix>\\.rsc|\\.prefetch\\.rsc|\\.segments/.+\\.segment\\.rsc)(?:/)?$"
11239
+ hasFallbackRootParams ? "\\.rsc(?:/)?$" : "(?<rscSuffix>\\.rsc|\\.prefetch\\.rsc|\\.segments/.+\\.segment\\.rsc)(?:/)?$"
11240
+ ),
11241
+ dest: route.dest?.replace(
11242
+ /($|\?)/,
11243
+ hasFallbackRootParams ? ".rsc$1" : "$rscSuffix$1"
11228
11244
  ),
11229
- dest: route.dest?.replace(/($|\?)/, "$rscSuffix$1")
11245
+ check: true,
11246
+ override: true
11230
11247
  });
11231
11248
  } else {
11232
11249
  routes2.push({
@@ -11621,7 +11638,13 @@ async function getPrerenderManifest(entryPath, outputDirectory) {
11621
11638
  };
11622
11639
  });
11623
11640
  lazyRoutes.forEach((lazyRoute) => {
11624
- const { routeRegex, fallback, dataRoute, dataRouteRegex } = manifest.dynamicRoutes[lazyRoute];
11641
+ const {
11642
+ routeRegex,
11643
+ fallback,
11644
+ dataRoute,
11645
+ dataRouteRegex,
11646
+ fallbackRootParams
11647
+ } = manifest.dynamicRoutes[lazyRoute];
11625
11648
  if (fallback) {
11626
11649
  ret.fallbackRoutes[lazyRoute] = {
11627
11650
  routeRegex,
@@ -11635,6 +11658,8 @@ async function getPrerenderManifest(entryPath, outputDirectory) {
11635
11658
  ret.blockingFallbackRoutes[lazyRoute] = {
11636
11659
  routeRegex,
11637
11660
  dataRoute,
11661
+ fallback: null,
11662
+ fallbackRootParams,
11638
11663
  dataRouteRegex,
11639
11664
  renderingMode: "STATIC" /* STATIC */,
11640
11665
  allowHeader: void 0
@@ -11750,7 +11775,8 @@ async function getPrerenderManifest(entryPath, outputDirectory) {
11750
11775
  prefetchDataRouteRegex,
11751
11776
  renderingMode,
11752
11777
  allowHeader,
11753
- fallbackRootParams
11778
+ fallbackRootParams,
11779
+ fallback: null
11754
11780
  };
11755
11781
  } else {
11756
11782
  ret.omittedRoutes[lazyRoute] = {
@@ -12519,8 +12545,8 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
12519
12545
  }
12520
12546
  let htmlAllowQuery = allowQuery;
12521
12547
  if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && (isFallback || isBlocking)) {
12522
- const { fallbackRootParams } = isFallback ? prerenderManifest.fallbackRoutes[routeKey] : prerenderManifest.blockingFallbackRoutes[routeKey];
12523
- if (fallbackRootParams && fallbackRootParams.length > 0) {
12548
+ const { fallbackRootParams, fallback } = isFallback ? prerenderManifest.fallbackRoutes[routeKey] : prerenderManifest.blockingFallbackRoutes[routeKey];
12549
+ if (fallback && typeof fallback === "string" && fallbackRootParams && fallbackRootParams.length > 0) {
12524
12550
  htmlAllowQuery = fallbackRootParams;
12525
12551
  } else if (postponedPrerender) {
12526
12552
  htmlAllowQuery = [];
@@ -15165,6 +15191,9 @@ ${JSON.stringify(
15165
15191
  lambdas[dataPathname] = lambdas[srcPathname];
15166
15192
  }
15167
15193
  }
15194
+ const shouldHandleSegmentToRsc = Boolean(
15195
+ isAppClientSegmentCacheEnabled && rscPrefetchHeader && prefetchSegmentHeader && prefetchSegmentDirSuffix && prefetchSegmentSuffix
15196
+ );
15168
15197
  return {
15169
15198
  wildcard: wildcardConfig,
15170
15199
  images: getImagesConfig(imagesManifest),
@@ -15646,19 +15675,11 @@ ${JSON.stringify(
15646
15675
  }
15647
15676
  ] : [],
15648
15677
  // If it didn't match any of the static routes or dynamic ones, then we
15649
- // should fallback to the regular RSC request.
15650
- ...isAppClientSegmentCacheEnabled && rscPrefetchHeader && prefetchSegmentHeader && prefetchSegmentDirSuffix && prefetchSegmentSuffix ? [
15678
+ // should fallback to either prefetch or normal RSC request
15679
+ ...shouldHandleSegmentToRsc && prefetchSegmentDirSuffix && prefetchSegmentSuffix ? [
15651
15680
  {
15652
- src: import_path4.default.posix.join(
15653
- "/",
15654
- entryDirectory,
15655
- `/(?<path>.+)${(0, import_escape_string_regexp2.default)(prefetchSegmentDirSuffix)}/.+${(0, import_escape_string_regexp2.default)(prefetchSegmentSuffix)}$`
15656
- ),
15657
- dest: import_path4.default.posix.join(
15658
- "/",
15659
- entryDirectory,
15660
- isAppPPREnabled ? "/$path.prefetch.rsc" : "/$path.rsc"
15661
- ),
15681
+ src: "^/(?<path>.+)(?<rscSuffix>\\.segments/.+\\.segment\\.rsc)(?:/)?$",
15682
+ dest: `/$path${isAppPPREnabled ? ".prefetch.rsc" : ".rsc"}`,
15662
15683
  check: true
15663
15684
  }
15664
15685
  ] : [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/next",
3
- "version": "4.10.10",
3
+ "version": "4.11.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index",
6
6
  "homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",