@vercel/next 4.12.5 → 4.13.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.
package/dist/index.js CHANGED
@@ -11364,12 +11364,13 @@ async function getDynamicRoutes({
11364
11364
  routes2.push({
11365
11365
  src: route.src.replace(
11366
11366
  new RegExp((0, import_escape_string_regexp.default)("(?:/)?$")),
11367
- shouldSkipSuffixes ? "\\.rsc(?:/)?$" : "(?<rscSuffix>\\.rsc|\\.prefetch\\.rsc|\\.segments/.+\\.segment\\.rsc)(?:/)?$"
11368
- ),
11369
- dest: route.dest?.replace(
11370
- /($|\?)/,
11371
- shouldSkipSuffixes ? ".rsc$1" : "$rscSuffix$1"
11367
+ // Now than the upstream issues has been resolved, we can safely
11368
+ // add the suffix back, this resolves a bug related to segment
11369
+ // rewrites not capturing the correct suffix values when
11370
+ // enabled.
11371
+ shouldSkipSuffixes ? "(?<rscSuffix>\\.rsc|\\.segments/.+\\.segment\\.rsc)(?:/)?$" : "(?<rscSuffix>\\.rsc|\\.prefetch\\.rsc|\\.segments/.+\\.segment\\.rsc)(?:/)?$"
11372
11372
  ),
11373
+ dest: route.dest?.replace(/($|\?)/, "$rscSuffix$1"),
11373
11374
  check: true,
11374
11375
  override: true
11375
11376
  });
@@ -12473,7 +12474,8 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
12473
12474
  let postponedPrerender;
12474
12475
  let postponedState = null;
12475
12476
  let didPostpone = false;
12476
- if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && appDir && !isBlocking) {
12477
+ if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && appDir && // TODO(NAR-402): Investigate omitted routes
12478
+ !isBlocking) {
12477
12479
  postponedState = getHTMLPostponedState({ appDir, routeFileNoExt });
12478
12480
  const htmlPath = import_path3.default.join(appDir, `${routeFileNoExt}.html`);
12479
12481
  if (import_fs_extra3.default.existsSync(htmlPath)) {
@@ -12696,7 +12698,8 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
12696
12698
  };
12697
12699
  }
12698
12700
  let htmlAllowQuery = allowQuery;
12699
- if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && (isFallback || isBlocking)) {
12701
+ if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && // TODO(NAR-402): Investigate omitted routes
12702
+ (isFallback || isBlocking)) {
12700
12703
  const { fallbackRootParams, fallback } = isFallback ? prerenderManifest.fallbackRoutes[routeKey] : prerenderManifest.blockingFallbackRoutes[routeKey];
12701
12704
  if (
12702
12705
  // We only want to vary on the shell contents if there is a fallback
@@ -12798,7 +12801,7 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
12798
12801
  rscContentTypeHeader
12799
12802
  )}`;
12800
12803
  let rdcRSCAllowQuery = allowQuery;
12801
- if (isAppClientParamParsingEnabled && (isFallback || isBlocking)) {
12804
+ if (isAppClientParamParsingEnabled) {
12802
12805
  rdcRSCAllowQuery = [];
12803
12806
  }
12804
12807
  prerenders[normalizePathData(outputPathData)] = new import_build_utils.Prerender({
@@ -12806,10 +12809,14 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
12806
12809
  staleExpiration: initialExpire,
12807
12810
  lambda,
12808
12811
  allowQuery: rdcRSCAllowQuery,
12809
- fallback: isFallback ? null : new import_build_utils.FileBlob({
12810
- data: postponedState,
12811
- contentType
12812
- }),
12812
+ fallback: (
12813
+ // Use the fallback value for the RSC route if the route doesn't
12814
+ // vary based on the route parameters.
12815
+ rdcRSCAllowQuery && rdcRSCAllowQuery.length === 0 ? new import_build_utils.FileBlob({
12816
+ data: postponedState,
12817
+ contentType
12818
+ }) : null
12819
+ ),
12813
12820
  group: prerenderGroup,
12814
12821
  bypassToken: prerenderManifest.bypassToken,
12815
12822
  experimentalBypassFor,
@@ -18315,10 +18322,20 @@ var diagnostics = async ({
18315
18322
  "trace",
18316
18323
  import_path6.default.join(basePath, diagnosticsEntrypoint, outputDirectory)
18317
18324
  ),
18325
+ // Collect `.next/trace-build` file
18326
+ ...await (0, import_build_utils3.glob)(
18327
+ "trace-build",
18328
+ import_path6.default.join(basePath, diagnosticsEntrypoint, outputDirectory)
18329
+ ),
18318
18330
  // Collect `.next/turbopack` file
18319
18331
  ...await (0, import_build_utils3.glob)(
18320
18332
  "turbopack",
18321
18333
  import_path6.default.join(basePath, diagnosticsEntrypoint, outputDirectory)
18334
+ ),
18335
+ // Collect `.next/trace-turbopack` file
18336
+ ...await (0, import_build_utils3.glob)(
18337
+ "trace-turbopack",
18338
+ import_path6.default.join(basePath, diagnosticsEntrypoint, outputDirectory)
18322
18339
  )
18323
18340
  };
18324
18341
  };
@@ -108,33 +108,28 @@ var conf = __NEXT_CONFIG__;
108
108
  globalThis.AsyncLocalStorage = require("async_hooks").AsyncLocalStorage;
109
109
  var middlewareModule = require("__NEXT_MIDDLEWARE_PATH__");
110
110
  var serve = async (request) => {
111
- try {
112
- const context = getContext();
113
- return await withNextRequestContext(
114
- { waitUntil: context.waitUntil },
115
- async () => {
116
- let middlewareHandler = await middlewareModule;
117
- middlewareHandler = middlewareHandler.default || middlewareHandler;
118
- const result = await middlewareHandler({
119
- request: {
120
- url: request.url,
121
- method: request.method,
122
- headers: toPlainHeaders(request.headers),
123
- nextConfig: conf,
124
- page: "/middleware",
125
- body: request.method !== "GET" && request.method !== "HEAD" ? request.body : void 0,
126
- waitUntil: context.waitUntil
127
- }
128
- });
129
- if (result.waitUntil && context.waitUntil) {
130
- context.waitUntil(result.waitUntil);
111
+ const context = getContext();
112
+ return await withNextRequestContext(
113
+ { waitUntil: context.waitUntil },
114
+ async () => {
115
+ let middlewareHandler = await middlewareModule;
116
+ middlewareHandler = middlewareHandler.default || middlewareHandler;
117
+ const result = await middlewareHandler({
118
+ request: {
119
+ url: request.url,
120
+ method: request.method,
121
+ headers: toPlainHeaders(request.headers),
122
+ nextConfig: conf,
123
+ page: "/middleware",
124
+ body: request.method !== "GET" && request.method !== "HEAD" ? request.body : void 0,
125
+ waitUntil: context.waitUntil
131
126
  }
132
- return result.response;
127
+ });
128
+ if (result.waitUntil && context.waitUntil) {
129
+ context.waitUntil(result.waitUntil);
133
130
  }
134
- );
135
- } catch (err) {
136
- console.error(err);
137
- process.exit(1);
138
- }
131
+ return result.response;
132
+ }
133
+ );
139
134
  };
140
135
  module.exports = serve;
@@ -53,19 +53,11 @@ var nextServer = new NextServer({
53
53
  customServer: false
54
54
  });
55
55
  var serve = (handler) => async (req, res) => {
56
- try {
57
- const vercelContext = getContext();
58
- await withNextRequestContext(
59
- { waitUntil: vercelContext.waitUntil },
60
- () => {
61
- // @preserve entryDirectory handler
62
- return handler(req, res);
63
- }
64
- );
65
- } catch (err) {
66
- console.error(err);
67
- process.exit(1);
68
- }
56
+ const vercelContext = getContext();
57
+ await withNextRequestContext({ waitUntil: vercelContext.waitUntil }, () => {
58
+ // @preserve entryDirectory handler
59
+ return handler(req, res);
60
+ });
69
61
  };
70
62
  module.exports = serve(nextServer.getRequestHandler());
71
63
  if ((conf.experimental?.ppr || conf.experimental?.cacheComponents) && "getRequestHandlerWithMetadata" in nextServer && typeof nextServer.getRequestHandlerWithMetadata === "function") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/next",
3
- "version": "4.12.5",
3
+ "version": "4.13.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index",
6
6
  "homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",