Skip to content

Conversation

lukesandberg
Copy link
Contributor

@lukesandberg lukesandberg commented Aug 18, 2025

Introduce a new helper function enter_fn in the analyzer to ensure state like cur_fn_id is consistently updated. Follow the existing pattern of moving the state into a private module to control access.

With this in place:

  • simplify 'implicit undefined returns' to cover more cases
  • use ConstantValue::Undefined instead of FreeVar("undefined")
  • remove redundant and incorrect 'early return' handling from loops (you can see this in some of the loop tests)
  • Add support for all kinds of functions (getters, setters, methods, class constructors)

@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. labels Aug 18, 2025
@lukesandberg lukesandberg changed the title Add new analysis to detect how variables are modified [turbopack] Analyze how variables are modified to detect which ones are 'const' after module-evaluation Aug 18, 2025
@lukesandberg lukesandberg force-pushed the dead_exports branch 2 times, most recently from 5ba8f5e to e4c00f8 Compare August 19, 2025 21:24
@ijjk
Copy link
Member

ijjk commented Aug 19, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js dead_exports Change
buildDuration 23.1s 21.5s N/A
buildDurationCached 20.2s 18.5s N/A
nodeModulesSize 447 MB 447 MB N/A
nextStartRea..uration (ms) 482ms 478ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js dead_exports Change
234bef07-HASH.js gzip 54.2 kB 54.2 kB
5194.HASH.js gzip 169 B 169 B
8863-HASH.js gzip 5.27 kB 5.27 kB N/A
9304-HASH.js gzip 46.3 kB 45.7 kB N/A
framework-HASH.js gzip 57.7 kB 57.7 kB N/A
main-app-HASH.js gzip 253 B 254 B N/A
main-HASH.js gzip 36.8 kB 36.6 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 54.4 kB 54.4 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js dead_exports Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js dead_exports Change
_app-HASH.js gzip 194 B 193 B N/A
_error-HASH.js gzip 182 B 182 B
amp-HASH.js gzip 502 B 507 B N/A
css-HASH.js gzip 335 B 333 B N/A
dynamic-HASH.js gzip 1.83 kB 1.83 kB N/A
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 350 B 352 B N/A
hooks-HASH.js gzip 385 B 383 B N/A
image-HASH.js gzip 4.65 kB 4.66 kB N/A
index-HASH.js gzip 257 B 259 B N/A
link-HASH.js gzip 2.52 kB 2.52 kB N/A
routerDirect..HASH.js gzip 320 B 318 B N/A
script-HASH.js gzip 387 B 386 B N/A
withRouter-HASH.js gzip 315 B 313 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 543 B 543 B
Client Build Manifests
vercel/next.js canary vercel/next.js dead_exports Change
_buildManifest.js gzip 753 B 751 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js dead_exports Change
index.html gzip 524 B 522 B N/A
link.html gzip 538 B 536 B N/A
withRouter.html gzip 520 B 518 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js dead_exports Change
edge-ssr.js gzip 121 kB 121 kB N/A
page.js gzip 224 kB 224 kB N/A
Overall change 0 B 0 B
Middleware size Overall increase ⚠️
vercel/next.js canary vercel/next.js dead_exports Change
middleware-b..fest.js gzip 675 B 676 B N/A
middleware-r..fest.js gzip 156 B 155 B N/A
middleware.js gzip 32.9 kB 33.2 kB ⚠️ +301 B
edge-runtime..pack.js gzip 853 B 853 B
Overall change 33.8 kB 34.1 kB ⚠️ +301 B
Next Runtimes
vercel/next.js canary vercel/next.js dead_exports Change
app-page-exp...dev.js gzip 283 kB 283 kB N/A
app-page-exp..prod.js gzip 157 kB 157 kB
app-page-tur...dev.js gzip 283 kB 283 kB N/A
app-page-tur..prod.js gzip 157 kB 157 kB
app-page-tur...dev.js gzip 271 kB 271 kB N/A
app-page-tur..prod.js gzip 151 kB 151 kB
app-page.run...dev.js gzip 271 kB 271 kB N/A
app-page.run..prod.js gzip 151 kB 151 kB
app-route-ex...dev.js gzip 69.9 kB 69.9 kB
app-route-ex..prod.js gzip 49.1 kB 49.1 kB
app-route-tu...dev.js gzip 70 kB 70 kB
app-route-tu..prod.js gzip 49.1 kB 49.1 kB
app-route-tu...dev.js gzip 69.3 kB 69.3 kB
app-route-tu..prod.js gzip 48.7 kB 48.7 kB
app-route.ru...dev.js gzip 69.3 kB 69.3 kB
app-route.ru..prod.js gzip 48.7 kB 48.7 kB
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 328 B 328 B
dist_client_...dev.js gzip 320 B 320 B
dist_client_...dev.js gzip 318 B 318 B
pages-api-tu...dev.js gzip 42.3 kB 42.3 kB
pages-api-tu..prod.js gzip 32.6 kB 32.6 kB
pages-api.ru...dev.js gzip 42.3 kB 42.3 kB
pages-api.ru..prod.js gzip 32.5 kB 32.5 kB N/A
pages-turbo....dev.js gzip 52.5 kB 52.5 kB
pages-turbo...prod.js gzip 40 kB 40 kB
pages.runtim...dev.js gzip 52.6 kB 52.6 kB
pages.runtim..prod.js gzip 40.1 kB 40.1 kB N/A
server.runti..prod.js gzip 60 kB 60 kB
Overall change 1.41 MB 1.41 MB
build cache
vercel/next.js canary vercel/next.js dead_exports Change
0.pack gzip 2.9 MB 2.89 MB N/A
index.pack gzip 92.8 kB 92.5 kB N/A
Overall change 0 B 0 B
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for amp-HASH.js
@@ -1,17 +1,65 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5034],
   {
-    /***/ 4105: /***/ (
+    /***/ 6212: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ config: () => /* binding */ config,
+        /* harmony export */ default: () => /* binding */ Amp,
+        /* harmony export */
+      });
+      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(7023);
+      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_amp__WEBPACK_IMPORTED_MODULE_0__
+        );
+
+      const config = {
+        amp: "hybrid",
+      };
+      function Amp(props) {
+        return (0, next_amp__WEBPACK_IMPORTED_MODULE_0__.useAmp)()
+          ? "AMP mode"
+          : "normal mode";
+      }
+
+      /***/
+    },
+
+    /***/ 7023: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(4642);
+      module.exports = __webpack_require__(9926);
+
+      /***/
+    },
+
+    /***/ 8647: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/amp",
+        function () {
+          return __webpack_require__(6212);
+        },
+      ]);
+      if (false) {
+      }
 
       /***/
     },
 
-    /***/ 4642: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9926: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -27,8 +75,8 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(5977)
       );
-      const _ampcontextsharedruntime = __webpack_require__(8358);
-      const _ampmode = __webpack_require__(242);
+      const _ampcontextsharedruntime = __webpack_require__(5418);
+      const _ampmode = __webpack_require__(3494);
       function useAmp() {
         // Don't assign the context value to a variable to save bytes
         return (0, _ampmode.isInAmpMode)(
@@ -49,61 +97,13 @@
 
       /***/
     },
-
-    /***/ 5261: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/amp",
-        function () {
-          return __webpack_require__(9550);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 9550: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ config: () => /* binding */ config,
-        /* harmony export */ default: () => /* binding */ Amp,
-        /* harmony export */
-      });
-      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(4105);
-      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_amp__WEBPACK_IMPORTED_MODULE_0__
-        );
-
-      const config = {
-        amp: "hybrid",
-      };
-      function Amp(props) {
-        return (0, next_amp__WEBPACK_IMPORTED_MODULE_0__.useAmp)()
-          ? "AMP mode"
-          : "normal mode";
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(5261)
+      __webpack_exec__(8647)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,7 +1,14 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9813],
   {
-    /***/ 5267: /***/ (
+    /***/ 1978: /***/ (module) => {
+      // extracted by mini-css-extract-plugin
+      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+      /***/
+    },
+
+    /***/ 6941: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -15,7 +22,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(7765);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(6320);
+        __webpack_require__(1978);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -35,14 +42,7 @@
       /***/
     },
 
-    /***/ 6320: /***/ (module) => {
-      // extracted by mini-css-extract-plugin
-      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
-
-      /***/
-    },
-
-    /***/ 9643: /***/ (
+    /***/ 8685: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -50,7 +50,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function () {
-          return __webpack_require__(5267);
+          return __webpack_require__(6941);
         },
       ]);
       if (false) {
@@ -64,7 +64,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9643)
+      __webpack_exec__(8685)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,17 +1,63 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 2406: /***/ (
-      module,
-      __unused_webpack_exports,
+    /***/ 2839: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(8949);
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
+      });
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(7765);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(7444);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
+        () =>
+          __webpack_require__
+            .e(/* import() */ 1376)
+            .then(__webpack_require__.bind(__webpack_require__, 1376))
+            .then((mod) => mod.Hello),
+        {
+          loadableGenerated: {
+            webpack: () => [/*require.resolve*/ 1376],
+          },
+        }
+      );
+      const Page = () =>
+        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
+          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
+          {
+            children: [
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
+                children: "testing next/dynamic size",
+              }),
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+                DynamicHello,
+                {}
+              ),
+            ],
+          }
+        );
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
 
       /***/
     },
 
-    /***/ 4466: /***/ (
+    /***/ 4478: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -53,7 +99,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(5977)
       );
-      const _loadablecontextsharedruntime = __webpack_require__(8452);
+      const _loadablecontextsharedruntime = __webpack_require__(5792);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -288,63 +334,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 4545: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
-      });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(7765);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(2406);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
-        () =>
-          __webpack_require__
-            .e(/* import() */ 5194)
-            .then(__webpack_require__.bind(__webpack_require__, 5194))
-            .then((mod) => mod.Hello),
-        {
-          loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 5194],
-          },
-        }
-      );
-      const Page = () =>
-        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
-          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
-          {
-            children: [
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
-                children: "testing next/dynamic size",
-              }),
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-                DynamicHello,
-                {}
-              ),
-            ],
-          }
-        );
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
-
-      /***/
-    },
-
-    /***/ 8452: /***/ (
+    /***/ 5792: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -371,24 +361,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 8931: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/dynamic",
-        function () {
-          return __webpack_require__(4545);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 8949: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6153: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -421,7 +394,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
         __webpack_require__(5977)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(4466)
+        __webpack_require__(4478)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -521,13 +494,40 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
 
       /***/
     },
+
+    /***/ 7444: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(6153);
+
+      /***/
+    },
+
+    /***/ 9805: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/dynamic",
+        function () {
+          return __webpack_require__(2839);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8931)
+      __webpack_exec__(9805)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [676],
   {
-    /***/ 4717: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/edge-ssr",
-        function () {
-          return __webpack_require__(7776);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7776: /***/ (
+    /***/ 170: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -37,13 +20,30 @@
 
       /***/
     },
+
+    /***/ 8079: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/edge-ssr",
+        function () {
+          return __webpack_require__(170);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(4717)
+      __webpack_exec__(8079)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5350],
   {
-    /***/ 943: /***/ (
+    /***/ 1177: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(2554);
+      module.exports = __webpack_require__(8366);
 
       /***/
     },
 
-    /***/ 3829: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/head",
-        function () {
-          return __webpack_require__(4662);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 4662: /***/ (
+    /***/ 1992: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -43,7 +26,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(7765);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(943);
+        __webpack_require__(1177);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
 
       /***/
     },
+
+    /***/ 8751: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/head",
+        function () {
+          return __webpack_require__(1992);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(3829)
+      __webpack_exec__(8751)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9804],
   {
-    /***/ 2452: /***/ (
+    /***/ 2227: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/hooks",
+        function () {
+          return __webpack_require__(2770);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 2770: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -59,30 +76,13 @@
 
       /***/
     },
-
-    /***/ 6105: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/hooks",
-        function () {
-          return __webpack_require__(2452);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6105)
+      __webpack_exec__(2227)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js

Diff too large to display

Diff for link-HASH.js
@@ -1,143 +1,82 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 1585: /***/ (module, exports, __webpack_require__) => {
+    /***/ 2346: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      Object.defineProperty(exports, "useIntersection", {
+      Object.defineProperty(exports, "errorOnce", {
         enumerable: true,
         get: function () {
-          return useIntersection;
+          return errorOnce;
         },
       });
-      const _react = __webpack_require__(5977);
-      const _requestidlecallback = __webpack_require__(356);
-      const hasIntersectionObserver =
-        typeof IntersectionObserver === "function";
-      const observers = new Map();
-      const idList = [];
-      function createObserver(options) {
-        const id = {
-          root: options.root || null,
-          margin: options.rootMargin || "",
-        };
-        const existing = idList.find(
-          (obj) => obj.root === id.root && obj.margin === id.margin
-        );
-        let instance;
-        if (existing) {
-          instance = observers.get(existing);
-          if (instance) {
-            return instance;
-          }
-        }
-        const elements = new Map();
-        const observer = new IntersectionObserver((entries) => {
-          entries.forEach((entry) => {
-            const callback = elements.get(entry.target);
-            const isVisible =
-              entry.isIntersecting || entry.intersectionRatio > 0;
-            if (callback && isVisible) {
-              callback(isVisible);
-            }
-          });
-        }, options);
-        instance = {
-          id,
-          observer,
-          elements,
-        };
-        idList.push(id);
-        observers.set(id, instance);
-        return instance;
-      }
-      function observe(element, callback, options) {
-        const { id, observer, elements } = createObserver(options);
-        elements.set(element, callback);
-        observer.observe(element);
-        return function unobserve() {
-          elements.delete(element);
-          observer.unobserve(element);
-          // Destroy observer when there's nothing left to watch:
-          if (elements.size === 0) {
-            observer.disconnect();
-            observers.delete(id);
-            const index = idList.findIndex(
-              (obj) => obj.root === id.root && obj.margin === id.margin
-            );
-            if (index > -1) {
-              idList.splice(index, 1);
-            }
-          }
-        };
-      }
-      function useIntersection(param) {
-        let { rootRef, rootMargin, disabled } = param;
-        const isDisabled = disabled || !hasIntersectionObserver;
-        const [visible, setVisible] = (0, _react.useState)(false);
-        const elementRef = (0, _react.useRef)(null);
-        const setElement = (0, _react.useCallback)((element) => {
-          elementRef.current = element;
-        }, []);
-        (0, _react.useEffect)(() => {
-          if (hasIntersectionObserver) {
-            if (isDisabled || visible) return;
-            const element = elementRef.current;
-            if (element && element.tagName) {
-              const unobserve = observe(
-                element,
-                (isVisible) => isVisible && setVisible(isVisible),
-                {
-                  root: rootRef == null ? void 0 : rootRef.current,
-                  rootMargin,
-                }
-              );
-              return unobserve;
-            }
-          } else {
-            if (!visible) {
-              const idleCallback = (0,
-              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
-              return () =>
-                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
-            }
-          }
-          // eslint-disable-next-line react-hooks/exhaustive-deps
-        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
-        const resetVisible = (0, _react.useCallback)(() => {
-          setVisible(false);
-        }, []);
-        return [setElement, visible, resetVisible];
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=use-intersection.js.map
+      let errorOnce = (_) => {};
+      if (false) {
+      } //# sourceMappingURL=error-once.js.map
 
       /***/
     },
 
-    /***/ 2621: /***/ (
+    /***/ 2783: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(5410);
+      module.exports = __webpack_require__(5926);
 
       /***/
     },
 
-    /***/ 5410: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4174: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
+      });
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(7765);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(2783);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_link__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      function aLink(props) {
+        return /*#__PURE__*/ (0,
+        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
+          children: [
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
+              children: "A Link page!",
+            }),
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
+              {
+                href: "/",
+                children: "Go to /",
+              }
+            ),
+          ],
+        });
+      }
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+
+      /***/
+    },
+
+    /***/ 5926: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -164,17 +103,17 @@
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(5977)
       );
-      const _resolvehref = __webpack_require__(224);
-      const _islocalurl = __webpack_require__(7746);
-      const _formaturl = __webpack_require__(315);
-      const _utils = __webpack_require__(8709);
-      const _addlocale = __webpack_require__(6358);
-      const _routercontextsharedruntime = __webpack_require__(4095);
-      const _useintersection = __webpack_require__(1585);
-      const _getdomainlocale = __webpack_require__(8802);
-      const _addbasepath = __webpack_require__(6151);
-      const _usemergedref = __webpack_require__(9100);
-      const _erroronce = __webpack_require__(9574);
+      const _resolvehref = __webpack_require__(6708);
+      const _islocalurl = __webpack_require__(6526);
+      const _formaturl = __webpack_require__(5575);
+      const _utils = __webpack_require__(3497);
+      const _addlocale = __webpack_require__(722);
+      const _routercontextsharedruntime = __webpack_require__(1235);
+      const _useintersection = __webpack_require__(8069);
+      const _getdomainlocale = __webpack_require__(9734);
+      const _addbasepath = __webpack_require__(4419);
+      const _usemergedref = __webpack_require__(6136);
+      const _erroronce = __webpack_require__(2346);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -563,43 +502,7 @@
       /***/
     },
 
-    /***/ 8802: /***/ (module, exports, __webpack_require__) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "getDomainLocale", {
-        enumerable: true,
-        get: function () {
-          return getDomainLocale;
-        },
-      });
-      const _normalizetrailingslash = __webpack_require__(1652);
-      const basePath =
-        /* unused pure expression or super */ null && (false || "");
-      function getDomainLocale(path, locale, locales, domainLocales) {
-        if (false) {
-        } else {
-          return false;
-        }
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=get-domain-locale.js.map
-
-      /***/
-    },
-
-    /***/ 9100: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6136: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -677,26 +580,7 @@
       /***/
     },
 
-    /***/ 9574: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
-        },
-      });
-      let errorOnce = (_) => {};
-      if (false) {
-      } //# sourceMappingURL=error-once.js.map
-
-      /***/
-    },
-
-    /***/ 9693: /***/ (
+    /***/ 7047: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -704,7 +588,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function () {
-          return __webpack_require__(9948);
+          return __webpack_require__(4174);
         },
       ]);
       if (false) {
@@ -713,48 +597,164 @@
       /***/
     },
 
-    /***/ 9948: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
+    /***/ 8069: /***/ (module, exports, __webpack_require__) => {
       "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
       });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(7765);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(2621);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_link__WEBPACK_IMPORTED_MODULE_1__
+      Object.defineProperty(exports, "useIntersection", {
+        enumerable: true,
+        get: function () {
+          return useIntersection;
+        },
+      });
+      const _react = __webpack_require__(5977);
+      const _requestidlecallback = __webpack_require__(3432);
+      const hasIntersectionObserver =
+        typeof IntersectionObserver === "function";
+      const observers = new Map();
+      const idList = [];
+      function createObserver(options) {
+        const id = {
+          root: options.root || null,
+          margin: options.rootMargin || "",
+        };
+        const existing = idList.find(
+          (obj) => obj.root === id.root && obj.margin === id.margin
         );
-
-      function aLink(props) {
-        return /*#__PURE__*/ (0,
-        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
-          children: [
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
-              children: "A Link page!",
-            }),
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
-              {
-                href: "/",
-                children: "Go to /",
-              }
-            ),
-          ],
+        let instance;
+        if (existing) {
+          instance = observers.get(existing);
+          if (instance) {
+            return instance;
+          }
+        }
+        const elements = new Map();
+        const observer = new IntersectionObserver((entries) => {
+          entries.forEach((entry) => {
+            const callback = elements.get(entry.target);
+            const isVisible =
+              entry.isIntersecting || entry.intersectionRatio > 0;
+            if (callback && isVisible) {
+              callback(isVisible);
+            }
+          });
+        }, options);
+        instance = {
+          id,
+          observer,
+          elements,
+        };
+        idList.push(id);
+        observers.set(id, instance);
+        return instance;
+      }
+      function observe(element, callback, options) {
+        const { id, observer, elements } = createObserver(options);
+        elements.set(element, callback);
+        observer.observe(element);
+        return function unobserve() {
+          elements.delete(element);
+          observer.unobserve(element);
+          // Destroy observer when there's nothing left to watch:
+          if (elements.size === 0) {
+            observer.disconnect();
+            observers.delete(id);
+            const index = idList.findIndex(
+              (obj) => obj.root === id.root && obj.margin === id.margin
+            );
+            if (index > -1) {
+              idList.splice(index, 1);
+            }
+          }
+        };
+      }
+      function useIntersection(param) {
+        let { rootRef, rootMargin, disabled } = param;
+        const isDisabled = disabled || !hasIntersectionObserver;
+        const [visible, setVisible] = (0, _react.useState)(false);
+        const elementRef = (0, _react.useRef)(null);
+        const setElement = (0, _react.useCallback)((element) => {
+          elementRef.current = element;
+        }, []);
+        (0, _react.useEffect)(() => {
+          if (hasIntersectionObserver) {
+            if (isDisabled || visible) return;
+            const element = elementRef.current;
+            if (element && element.tagName) {
+              const unobserve = observe(
+                element,
+                (isVisible) => isVisible && setVisible(isVisible),
+                {
+                  root: rootRef == null ? void 0 : rootRef.current,
+                  rootMargin,
+                }
+              );
+              return unobserve;
+            }
+          } else {
+            if (!visible) {
+              const idleCallback = (0,
+              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
+              return () =>
+                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
+            }
+          }
+          // eslint-disable-next-line react-hooks/exhaustive-deps
+        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
+        const resetVisible = (0, _react.useCallback)(() => {
+          setVisible(false);
+        }, []);
+        return [setElement, visible, resetVisible];
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
         });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=use-intersection.js.map
+
+      /***/
+    },
+
+    /***/ 9734: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "getDomainLocale", {
+        enumerable: true,
+        get: function () {
+          return getDomainLocale;
+        },
+      });
+      const _normalizetrailingslash = __webpack_require__(504);
+      const basePath =
+        /* unused pure expression or super */ null && (false || "");
+      function getDomainLocale(path, locale, locales, domainLocales) {
+        if (false) {
+        } else {
+          return false;
+        }
       }
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=get-domain-locale.js.map
 
       /***/
     },
@@ -764,7 +764,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9693)
+      __webpack_exec__(7047)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,34 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 3699: /***/ (
+    /***/ 1008: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(2817);
+
+      /***/
+    },
+
+    /***/ 6951: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/script",
+        function () {
+          return __webpack_require__(8889);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 8889: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +43,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(7765);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4802);
+        __webpack_require__(1008);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -48,40 +75,13 @@
 
       /***/
     },
-
-    /***/ 4802: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(8661);
-
-      /***/
-    },
-
-    /***/ 7861: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/script",
-        function () {
-          return __webpack_require__(3699);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(7861)
+      __webpack_exec__(6951)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 8863-HASH.js
@@ -1,8 +1,33 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [8863],
+  [7009],
   {
-    /***/ 22: /***/ (module, exports, __webpack_require__) => {
+    /***/ 414: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "AmpStateContext", {
+        enumerable: true,
+        get: function () {
+          return AmpStateContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2726);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2224)
+      );
+      const AmpStateContext = _react.default.createContext({});
+      if (false) {
+      } //# sourceMappingURL=amp-context.shared-runtime.js.map
+
+      /***/
+    },
+
+    /***/ 1912: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -12,7 +37,7 @@
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(2786);
+      const _react = __webpack_require__(2224);
       function useMergedRef(refA, refB) {
         const cleanupA = (0, _react.useRef)(null);
         const cleanupB = (0, _react.useRef)(null);
@@ -78,56 +103,99 @@
       /***/
     },
 
-    /***/ 936: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2843: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        VALID_LOADERS: function () {
-          return VALID_LOADERS;
+      Object.defineProperty(exports, "RouterContext", {
+        enumerable: true,
+        get: function () {
+          return RouterContext;
         },
-        imageConfigDefault: function () {
-          return imageConfigDefault;
+      });
+      const _interop_require_default = __webpack_require__(2726);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2224)
+      );
+      const RouterContext = _react.default.createContext(null);
+      if (false) {
+      } //# sourceMappingURL=router-context.shared-runtime.js.map
+
+      /***/
+    },
+
+    /***/ 3003: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
+          return _default;
         },
       });
-      const VALID_LOADERS = [
-        "default",
-        "imgix",
-        "cloudinary",
-        "akamai",
-        "custom",
-      ];
-      const imageConfigDefault = {
-        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-        imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
-        path: "/_next/image",
-        loader: "default",
-        loaderFile: "",
-        domains: [],
-        disableStaticImages: false,
-        minimumCacheTTL: 60,
-        formats: ["image/webp"],
-        dangerouslyAllowSVG: false,
-        contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
-        contentDispositionType: "attachment",
-        localPatterns: undefined,
-        remotePatterns: [],
-        qualities: undefined,
-        unoptimized: false,
-      }; //# sourceMappingURL=image-config.js.map
+      const DEFAULT_Q = 75;
+      function defaultLoader(param) {
+        let { config, src, width, quality } = param;
+        var _config_qualities;
+        if (false) {
+        }
+        const q =
+          quality ||
+          ((_config_qualities = config.qualities) == null
+            ? void 0
+            : _config_qualities.reduce((prev, cur) =>
+                Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q)
+                  ? cur
+                  : prev
+              )) ||
+          DEFAULT_Q;
+        return (
+          config.path +
+          "?url=" +
+          encodeURIComponent(src) +
+          "&w=" +
+          width +
+          "&q=" +
+          q +
+          (src.startsWith("/_next/static/media/") && false ? 0 : "")
+        );
+      }
+      // We use this to determine if the import is the default loader
+      // or a custom loader defined by the user in next.config.js
+      defaultLoader.__next_img_default = true;
+      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
 
       /***/
     },
 
-    /***/ 1268: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3810: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "isInAmpMode", {
+        enumerable: true,
+        get: function () {
+          return isInAmpMode;
+        },
+      });
+      function isInAmpMode(param) {
+        let {
+          ampFirst = false,
+          hybrid = false,
+          hasQuery = false,
+        } = param === void 0 ? {} : param;
+        return ampFirst || (hybrid && hasQuery);
+      } //# sourceMappingURL=amp-mode.js.map
+
+      /***/
+    },
+
+    /***/ 5218: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -181,7 +249,7 @@
       /***/
     },
 
-    /***/ 1796: /***/ (module, exports, __webpack_require__) => {
+    /***/ 5402: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -202,19 +270,19 @@
           return defaultHead;
         },
       });
-      const _interop_require_default = __webpack_require__(8182);
-      const _interop_require_wildcard = __webpack_require__(8319);
-      const _jsxruntime = __webpack_require__(1050);
+      const _interop_require_default = __webpack_require__(2726);
+      const _interop_require_wildcard = __webpack_require__(2527);
+      const _jsxruntime = __webpack_require__(8204);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(2786)
+        __webpack_require__(2224)
       );
       const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5581)
+        __webpack_require__(9319)
       );
-      const _ampcontextsharedruntime = __webpack_require__(3800);
-      const _headmanagercontextsharedruntime = __webpack_require__(4950);
-      const _ampmode = __webpack_require__(7824);
-      const _warnonce = __webpack_require__(2854);
+      const _ampcontextsharedruntime = __webpack_require__(414);
+      const _headmanagercontextsharedruntime = __webpack_require__(3100);
+      const _ampmode = __webpack_require__(3810);
+      const _warnonce = __webpack_require__(4504);
       function defaultHead(inAmpMode) {
         if (inAmpMode === void 0) inAmpMode = false;
         const head = [
@@ -379,7 +447,7 @@
       /***/
     },
 
-    /***/ 2843: /***/ (
+    /***/ 6745: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -393,9 +461,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(2854);
-      const _imageblursvg = __webpack_require__(1268);
-      const _imageconfig = __webpack_require__(936);
+      const _warnonce = __webpack_require__(4504);
+      const _imageblursvg = __webpack_require__(5218);
+      const _imageconfig = __webpack_require__(9278);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -823,245 +891,7 @@
       /***/
     },
 
-    /***/ 3800: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "AmpStateContext", {
-        enumerable: true,
-        get: function () {
-          return AmpStateContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(8182);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2786)
-      );
-      const AmpStateContext = _react.default.createContext({});
-      if (false) {
-      } //# sourceMappingURL=amp-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 5581: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return SideEffect;
-        },
-      });
-      const _react = __webpack_require__(2786);
-      const isServer = "object" === "undefined";
-      const useClientOnlyLayoutEffect = isServer
-        ? () => {}
-        : _react.useLayoutEffect;
-      const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
-      function SideEffect(props) {
-        const { headManager, reduceComponentsToState } = props;
-        function emitChange() {
-          if (headManager && headManager.mountedInstances) {
-            const headElements = _react.Children.toArray(
-              Array.from(headManager.mountedInstances).filter(Boolean)
-            );
-            headManager.updateHead(
-              reduceComponentsToState(headElements, props)
-            );
-          }
-        }
-        if (isServer) {
-          var _headManager_mountedInstances;
-          headManager == null
-            ? void 0
-            : (_headManager_mountedInstances = headManager.mountedInstances) ==
-              null
-            ? void 0
-            : _headManager_mountedInstances.add(props.children);
-          emitChange();
-        }
-        useClientOnlyLayoutEffect(() => {
-          var _headManager_mountedInstances;
-          headManager == null
-            ? void 0
-            : (_headManager_mountedInstances = headManager.mountedInstances) ==
-              null
-            ? void 0
-            : _headManager_mountedInstances.add(props.children);
-          return () => {
-            var _headManager_mountedInstances;
-            headManager == null
-              ? void 0
-              : (_headManager_mountedInstances =
-                  headManager.mountedInstances) == null
-              ? void 0
-              : _headManager_mountedInstances.delete(props.children);
-          };
-        });
-        // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
-        // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
-        // being rendered, we only trigger the method from the last one.
-        // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
-        // singleton in the layout effect pass, and actually trigger it in the effect pass.
-        useClientOnlyLayoutEffect(() => {
-          if (headManager) {
-            headManager._pendingUpdate = emitChange;
-          }
-          return () => {
-            if (headManager) {
-              headManager._pendingUpdate = emitChange;
-            }
-          };
-        });
-        useClientOnlyEffect(() => {
-          if (headManager && headManager._pendingUpdate) {
-            headManager._pendingUpdate();
-            headManager._pendingUpdate = null;
-          }
-          return () => {
-            if (headManager && headManager._pendingUpdate) {
-              headManager._pendingUpdate();
-              headManager._pendingUpdate = null;
-            }
-          };
-        });
-        return null;
-      } //# sourceMappingURL=side-effect.js.map
-
-      /***/
-    },
-
-    /***/ 7053: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "RouterContext", {
-        enumerable: true,
-        get: function () {
-          return RouterContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(8182);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2786)
-      );
-      const RouterContext = _react.default.createContext(null);
-      if (false) {
-      } //# sourceMappingURL=router-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 7281: /***/ (__unused_webpack_module, exports) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return _default;
-        },
-      });
-      const DEFAULT_Q = 75;
-      function defaultLoader(param) {
-        let { config, src, width, quality } = param;
-        var _config_qualities;
-        if (false) {
-        }
-        const q =
-          quality ||
-          ((_config_qualities = config.qualities) == null
-            ? void 0
-            : _config_qualities.reduce((prev, cur) =>
-                Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q)
-                  ? cur
-                  : prev
-              )) ||
-          DEFAULT_Q;
-        return (
-          config.path +
-          "?url=" +
-          encodeURIComponent(src) +
-          "&w=" +
-          width +
-          "&q=" +
-          q +
-          (src.startsWith("/_next/static/media/") && false ? 0 : "")
-        );
-      }
-      // We use this to determine if the import is the default loader
-      // or a custom loader defined by the user in next.config.js
-      defaultLoader.__next_img_default = true;
-      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
-
-      /***/
-    },
-
-    /***/ 7480: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "ImageConfigContext", {
-        enumerable: true,
-        get: function () {
-          return ImageConfigContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(8182);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2786)
-      );
-      const _imageconfig = __webpack_require__(936);
-      const ImageConfigContext = _react.default.createContext(
-        _imageconfig.imageConfigDefault
-      );
-      if (false) {
-      } //# sourceMappingURL=image-config-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 7824: /***/ (__unused_webpack_module, exports) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "isInAmpMode", {
-        enumerable: true,
-        get: function () {
-          return isInAmpMode;
-        },
-      });
-      function isInAmpMode(param) {
-        let {
-          ampFirst = false,
-          hybrid = false,
-          hasQuery = false,
-        } = param === void 0 ? {} : param;
-        return ampFirst || (hybrid && hasQuery);
-      } //# sourceMappingURL=amp-mode.js.map
-
-      /***/
-    },
-
-    /***/ 8863: /***/ (module, exports, __webpack_require__) => {
+    /***/ 7009: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -1072,27 +902,27 @@
           return Image;
         },
       });
-      const _interop_require_default = __webpack_require__(8182);
-      const _interop_require_wildcard = __webpack_require__(8319);
-      const _jsxruntime = __webpack_require__(1050);
+      const _interop_require_default = __webpack_require__(2726);
+      const _interop_require_wildcard = __webpack_require__(2527);
+      const _jsxruntime = __webpack_require__(8204);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(2786)
+        __webpack_require__(2224)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1407)
+        __webpack_require__(1345)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1796)
+        __webpack_require__(5402)
       );
-      const _getimgprops = __webpack_require__(2843);
-      const _imageconfig = __webpack_require__(936);
-      const _imageconfigcontextsharedruntime = __webpack_require__(7480);
-      const _warnonce = __webpack_require__(2854);
-      const _routercontextsharedruntime = __webpack_require__(7053);
+      const _getimgprops = __webpack_require__(6745);
+      const _imageconfig = __webpack_require__(9278);
+      const _imageconfigcontextsharedruntime = __webpack_require__(9690);
+      const _warnonce = __webpack_require__(4504);
+      const _routercontextsharedruntime = __webpack_require__(2843);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7281)
+        __webpack_require__(3003)
       );
-      const _usemergedref = __webpack_require__(22);
+      const _usemergedref = __webpack_require__(1912);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -1417,5 +1247,175 @@
 
       /***/
     },
+
+    /***/ 9278: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      0 && 0;
+      function _export(target, all) {
+        for (var name in all)
+          Object.defineProperty(target, name, {
+            enumerable: true,
+            get: all[name],
+          });
+      }
+      _export(exports, {
+        VALID_LOADERS: function () {
+          return VALID_LOADERS;
+        },
+        imageConfigDefault: function () {
+          return imageConfigDefault;
+        },
+      });
+      const VALID_LOADERS = [
+        "default",
+        "imgix",
+        "cloudinary",
+        "akamai",
+        "custom",
+      ];
+      const imageConfigDefault = {
+        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+        imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
+        path: "/_next/image",
+        loader: "default",
+        loaderFile: "",
+        domains: [],
+        disableStaticImages: false,
+        minimumCacheTTL: 60,
+        formats: ["image/webp"],
+        dangerouslyAllowSVG: false,
+        contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
+        contentDispositionType: "attachment",
+        localPatterns: undefined,
+        remotePatterns: [],
+        qualities: undefined,
+        unoptimized: false,
+      }; //# sourceMappingURL=image-config.js.map
+
+      /***/
+    },
+
+    /***/ 9319: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
+          return SideEffect;
+        },
+      });
+      const _react = __webpack_require__(2224);
+      const isServer = "object" === "undefined";
+      const useClientOnlyLayoutEffect = isServer
+        ? () => {}
+        : _react.useLayoutEffect;
+      const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
+      function SideEffect(props) {
+        const { headManager, reduceComponentsToState } = props;
+        function emitChange() {
+          if (headManager && headManager.mountedInstances) {
+            const headElements = _react.Children.toArray(
+              Array.from(headManager.mountedInstances).filter(Boolean)
+            );
+            headManager.updateHead(
+              reduceComponentsToState(headElements, props)
+            );
+          }
+        }
+        if (isServer) {
+          var _headManager_mountedInstances;
+          headManager == null
+            ? void 0
+            : (_headManager_mountedInstances = headManager.mountedInstances) ==
+              null
+            ? void 0
+            : _headManager_mountedInstances.add(props.children);
+          emitChange();
+        }
+        useClientOnlyLayoutEffect(() => {
+          var _headManager_mountedInstances;
+          headManager == null
+            ? void 0
+            : (_headManager_mountedInstances = headManager.mountedInstances) ==
+              null
+            ? void 0
+            : _headManager_mountedInstances.add(props.children);
+          return () => {
+            var _headManager_mountedInstances;
+            headManager == null
+              ? void 0
+              : (_headManager_mountedInstances =
+                  headManager.mountedInstances) == null
+              ? void 0
+              : _headManager_mountedInstances.delete(props.children);
+          };
+        });
+        // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
+        // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
+        // being rendered, we only trigger the method from the last one.
+        // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
+        // singleton in the layout effect pass, and actually trigger it in the effect pass.
+        useClientOnlyLayoutEffect(() => {
+          if (headManager) {
+            headManager._pendingUpdate = emitChange;
+          }
+          return () => {
+            if (headManager) {
+              headManager._pendingUpdate = emitChange;
+            }
+          };
+        });
+        useClientOnlyEffect(() => {
+          if (headManager && headManager._pendingUpdate) {
+            headManager._pendingUpdate();
+            headManager._pendingUpdate = null;
+          }
+          return () => {
+            if (headManager && headManager._pendingUpdate) {
+              headManager._pendingUpdate();
+              headManager._pendingUpdate = null;
+            }
+          };
+        });
+        return null;
+      } //# sourceMappingURL=side-effect.js.map
+
+      /***/
+    },
+
+    /***/ 9690: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "ImageConfigContext", {
+        enumerable: true,
+        get: function () {
+          return ImageConfigContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2726);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2224)
+      );
+      const _imageconfig = __webpack_require__(9278);
+      const ImageConfigContext = _react.default.createContext(
+        _imageconfig.imageConfigDefault
+      );
+      if (false) {
+      } //# sourceMappingURL=image-config-context.shared-runtime.js.map
+
+      /***/
+    },
   },
 ]);
Diff for 9304-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for main-app-HASH.js
@@ -1,64 +1,64 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4977],
   {
-    /***/ 2090: /***/ (
+    /***/ 3550: /***/ () => {
+      /* (ignored) */
+      /***/
+    },
+
+    /***/ 5934: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2374, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2816, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2673, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3319, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4710, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3564, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9138, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4932, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9207, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4549, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4379, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3877, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 631, 23)
+        __webpack_require__.t.bind(__webpack_require__, 6769, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6231, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5521, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4706, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9520, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7121, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5947, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6594, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1720, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2231)
+        __webpack_require__.bind(__webpack_require__, 977)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9683, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7569, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 174, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1504, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 3496, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4186, 23)
       );
 
       /***/
     },
-
-    /***/ 3228: /***/ () => {
-      /* (ignored) */
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
@@ -66,8 +66,8 @@
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(
       0,
-      [5862, 9304],
-      () => (__webpack_exec__(7007), __webpack_exec__(2090))
+      [3008, 2426],
+      () => (__webpack_exec__(6401), __webpack_exec__(5934))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for pages-api.ru..time.prod.js

Diff too large to display

Diff for pages.runtime.prod.js

Diff too large to display

Commit: 88e7ede

@lukesandberg lukesandberg force-pushed the dead_exports branch 2 times, most recently from 227c059 to 5765f57 Compare August 19, 2025 21:55
Copy link

codspeed-hq bot commented Aug 19, 2025

CodSpeed Performance Report

Merging #82763 will not alter performance

Comparing dead_exports (88e7ede) with canary (004fea0)

Summary

✅ 9 untouched benchmarks

@lukesandberg lukesandberg force-pushed the dead_exports branch 3 times, most recently from 808cb83 to 25b9c28 Compare August 20, 2025 17:25
@lukesandberg lukesandberg changed the title [turbopack] Analyze how variables are modified to detect which ones are 'const' after module-evaluation [turbopack] Consolodate logic for visiting functions to simplify state management Aug 20, 2025
@ijjk
Copy link
Member

ijjk commented Aug 20, 2025

Failing test suites

Commit: 88e7ede

pnpm test-dev-turbo test/development/acceptance-app/editor-links.test.ts (turbopack)

  • Error overlay - editor links > should be possible to open source file on build error
Expand output

● Error overlay - editor links › should be possible to open source file on build error

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  77 |         )
  78 |       })
> 79 |       expect(loaded).toBe(true)
     |                      ^
  80 |     })
  81 |
  82 |     await session.assertHasRedbox()

  at toBe (development/acceptance-app/editor-links.test.ts:79:22)
  at retry (lib/next-test-utils.ts:813:14)
  at Object.<anonymous> (development/acceptance-app/editor-links.test.ts:69:5)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/app-dir/devtool-copy-button/devtool-copy-button.test.ts (turbopack)

  • app-dir - devtool-copy-button > should has inspect url copy button
Expand output

● app-dir - devtool-copy-button › should has inspect url copy button

page.waitForSelector: Timeout 5000ms exceeded.
Call log:
  - waiting for locator('[data-nextjs-data-runtime-error-copy-devtools-url]')

  491 |
  492 |     return this.startChain(async () => {
> 493 |       const el = await page.waitForSelector(selector, {
      |                             ^
  494 |         timeout,
  495 |         state,
  496 |       })

  at waitForSelector (lib/browsers/playwright.ts:493:29)
  at Playwright._chain (lib/browsers/playwright.ts:616:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:597:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:492:17)
  at Playwright.waitForElementByCss [as elementByCss] (lib/browsers/playwright.ts:390:17)
  at Object.elementByCss (development/app-dir/devtool-copy-button/devtool-copy-button.test.ts:16:10)
  at Proxy._chain (lib/browsers/playwright.ts:616:23)
  at Proxy._chain (lib/browsers/playwright.ts:592:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:440:17)
  at Object.getAttribute (development/app-dir/devtool-copy-button/devtool-copy-button.test.ts:17:10)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/app-dir/server-component-next-dynamic-ssr-false/server-component-next-dynamic-ssr-false.test.ts (turbopack)

  • app-dir - server-component-next-dynamic-ssr-false > should error when use dynamic ssr:false in server component
Expand output

● app-dir - server-component-next-dynamic-ssr-false › should error when use dynamic ssr:false in server component

Expected Redbox but found no visible one.

  13 |   it('should error when use dynamic ssr:false in server component', async () => {
  14 |     const browser = await next.browser('/')
> 15 |     await assertHasRedbox(browser)
     |     ^
  16 |     const redbox = {
  17 |       description: await getRedboxDescription(browser),
  18 |       source: await getRedboxSource(browser),

  at Object.<anonymous> (development/app-dir/server-component-next-dynamic-ssr-false/server-component-next-dynamic-ssr-false.test.ts:15:5)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/app-dir/next-after-app-invalid-usage/index.test.ts (turbopack)

  • after() - invalid usages > errors at compile time when used in a client module
Expand output

● after() - invalid usages › errors at compile time when used in a client module

Expected Redbox but found no visible one.

  26 |     const session = await next.browser('/invalid-in-client')
  27 |
> 28 |     await assertHasRedbox(session)
     |     ^
  29 |     expect(await getRedboxSource(session)).toMatch(
  30 |       /You're importing a component that needs "?after"?\. That only works in a Server Component but one of its parents is marked with "use client", so it's a Client Component\./
  31 |     )

  at Object.<anonymous> (development/app-dir/next-after-app-invalid-usage/index.test.ts:28:5)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts (turbopack)

  • app dir - with output export - dynamic missing gsp dev > development mode > should error when dynamic route is missing generateStaticParams
  • app dir - with output export - dynamic missing gsp dev > development mode > should error when dynamic route is set to true
  • app dir - with output export - dynamic missing gsp dev > development mode > should error when client component has generateStaticParams
Expand output

● app dir - with output export - dynamic missing gsp dev › development mode › should error when dynamic route is missing generateStaticParams

Expected Redbox but found no visible one.

  182 |         const url = dynamicPage ? '/another/first' : '/api/json'
  183 |         const browser = await webdriver(port, url)
> 184 |         await assertHasRedbox(browser)
      |         ^
  185 |         const header = await getRedboxHeader(browser)
  186 |         const source = await getRedboxSource(browser)
  187 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:184:9)
  at Object.<anonymous> (integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts:8:9)

● app dir - with output export - dynamic missing gsp dev › development mode › should error when dynamic route is set to true

Expected Redbox but found no visible one.

  182 |         const url = dynamicPage ? '/another/first' : '/api/json'
  183 |         const browser = await webdriver(port, url)
> 184 |         await assertHasRedbox(browser)
      |         ^
  185 |         const header = await getRedboxHeader(browser)
  186 |         const source = await getRedboxSource(browser)
  187 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:184:9)
  at Object.<anonymous> (integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts:18:9)

● app dir - with output export - dynamic missing gsp dev › development mode › should error when client component has generateStaticParams

Expected Redbox but found no visible one.

  182 |         const url = dynamicPage ? '/another/first' : '/api/json'
  183 |         const browser = await webdriver(port, url)
> 184 |         await assertHasRedbox(browser)
      |         ^
  185 |         const header = await getRedboxHeader(browser)
  186 |         const source = await getRedboxSource(browser)
  187 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:184:9)
  at Object.<anonymous> (integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts:31:9)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/invalid-href/test/index.test.ts (turbopack)

  • Invalid hrefs > development mode > shows error when dynamic route mismatch is used on Link
  • Invalid hrefs > development mode > shows error when internal href is used with external as
Expand output

● Invalid hrefs › development mode › shows error when dynamic route mismatch is used on Link

Expected Redbox but found no visible one.

  50 |       }, regex)
  51 |     } else {
> 52 |       await assertHasRedbox(browser)
     |       ^
  53 |       const errorContent = await getRedboxHeader(browser)
  54 |       expect(errorContent).toMatch(regex)
  55 |     }

  at showsError (integration/invalid-href/test/index.test.ts:52:7)
  at Object.<anonymous> (integration/invalid-href/test/index.test.ts:185:9)

● Invalid hrefs › development mode › shows error when internal href is used with external as

Expected Redbox but found no visible one.

  50 |       }, regex)
  51 |     } else {
> 52 |       await assertHasRedbox(browser)
     |       ^
  53 |       const errorContent = await getRedboxHeader(browser)
  54 |       expect(errorContent).toMatch(regex)
  55 |     }

  at showsError (integration/invalid-href/test/index.test.ts:52:7)
  at Object.<anonymous> (integration/invalid-href/test/index.test.ts:193:9)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/next-image-new/invalid-image-import/test/index.test.ts (turbopack)

  • Missing Import Image Tests > development mode > should show error
Expand output

● Missing Import Image Tests › development mode › should show error

Expected Redbox but found no visible one.

  23 |     if (isDev) {
  24 |       const browser = await webdriver(appPort, '/')
> 25 |       await assertHasRedbox(browser)
     |       ^
  26 |       const description = await getRedboxDescription(browser)
  27 |       if (process.env.IS_TURBOPACK_TEST) {
  28 |         expect(description).toMatchInlineSnapshot(`"Processing image failed"`)

  at Object.<anonymous> (integration/next-image-new/invalid-image-import/test/index.test.ts:25:7)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/typescript/test/index.test.js (turbopack)

  • TypeScript Features > default behavior > should render the page
  • TypeScript Features > default behavior > should not fail to render when an inactive page has an error
Expand output

● TypeScript Features › default behavior › should render the page

expect(received).toMatch(expected)

Expected pattern: /Hello World/
Received string:  "{\"props\":{\"foo\":\"bar\"},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"ReferenceError\",\"source\":\"server\",\"message\":\"useRouter is not defined\",\"stack\":\"ReferenceError: useRouter is not defined\\n    at HelloPage (/root/actions-runner/_work/next.js/next.js/test/integration/typescript/.next/server/chunks/ssr/[root-of-the-server]__a6b37ef5._.js:9785:20)\\n    at Object.react_stack_bottom_frame (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:10007:18)\\n    at renderWithHooks (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5258:19)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5693:23)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5748:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5748:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:7013:18)\\n    at renderChildrenArray (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6881:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6648:13)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5866:13)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5748:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\"},\"gip\":true,\"appGip\":true,\"scriptLoader\":[]}"

  41 |     it('should render the page', async () => {
  42 |       const $ = await get$('/hello')
> 43 |       expect($('body').text()).toMatch(/Hello World/)
     |                                ^
  44 |       expect($('body').text()).toMatch(/1000000000000/)
  45 |     })
  46 |

  at Object.toMatch (integration/typescript/test/index.test.js:43:32)

● TypeScript Features › default behavior › should not fail to render when an inactive page has an error

expect(received).toMatch(expected)

Expected pattern: /Hello World/
Received string:  "{\"props\":{\"foo\":\"bar\"},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"ReferenceError\",\"source\":\"server\",\"message\":\"useRouter is not defined\",\"stack\":\"ReferenceError: useRouter is not defined\\n    at HelloPage (/root/actions-runner/_work/next.js/next.js/test/integration/typescript/.next/server/chunks/ssr/[root-of-the-server]__a6b37ef5._.js:9785:20)\\n    at Object.react_stack_bottom_frame (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:10007:18)\\n    at renderWithHooks (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5258:19)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5693:23)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5748:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5748:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:7013:18)\\n    at renderChildrenArray (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6881:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6648:13)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5866:13)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5748:11)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at renderElement (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6260:15)\\n    at retryNode (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6635:21)\\n    at renderNodeDestructive (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6574:11)\\n    at finishFunctionComponent (/root/actions-runner/_work/next.js/next.js/node_modules/.pnpm/[email protected][email protected]/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5302:13)\"},\"gip\":true,\"appGip\":true,\"scriptLoader\":[]}"

  115 |
  116 |         const $ = await get$('/hello')
> 117 |         expect($('body').text()).toMatch(/Hello World/)
      |                                  ^
  118 |       } finally {
  119 |         await remove(evilFile)
  120 |       }

  at Object.toMatch (integration/typescript/test/index.test.js:117:34)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/image-generation/test/index.test.ts (turbopack)

  • Image Generation > production mode > should generate the image without errors
Expand output

● Image Generation › production mode › should generate the image without errors

expect(received).toBe(expected) // Object.is equality

Expected: 200
Received: 500

  29 |       it('should generate the image without errors', async () => {
  30 |         const res = await fetchViaHTTP(appPort, '/api/image')
> 31 |         expect(res.status).toBe(200)
     |                            ^
  32 |         expect(res.headers.get('Content-Type')).toBe('image/png')
  33 |
  34 |         const buffer = await res.buffer()

  at Object.toBe (integration/image-generation/test/index.test.ts:31:28)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/acceptance/ReactRefreshLogBox-builtins.test.ts (turbopack)

  • ReactRefreshLogBox > Node.js builtins
  • ReactRefreshLogBox > Module not found
  • ReactRefreshLogBox > Module not found (empty import trace)
  • ReactRefreshLogBox > Module not found (missing global CSS)
Expand output

● ReactRefreshLogBox › Node.js builtins

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `ReactRefreshLogBox Node.js builtins 1`

- Snapshot  - 10
+ Received  +  1

- {
-   "description": "Module not found: Can't resolve 'dns'",
-   "environmentLabel": null,
-   "label": "Build Error",
-   "source": "./node_modules/my-package/index.js (1:13)
- Module not found: Can't resolve 'dns'
- > 1 | const dns = require('dns')
-     |             ^^^^^^^^^^^^^^",
-   "stack": [],
- }
+ "Expected Redbox but found no visible one."

  46 |
  47 |     if (isTurbopack) {
> 48 |       await expect(browser).toDisplayRedbox(`
     |                             ^
  49 |        {
  50 |          "description": "Module not found: Can't resolve 'dns'",
  51 |          "environmentLabel": null,

  at Object.toDisplayRedbox (development/acceptance/ReactRefreshLogBox-builtins.test.ts:48:29)

● ReactRefreshLogBox › Module not found

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `ReactRefreshLogBox Module not found 1`

- Snapshot  - 10
+ Received  +  1

- {
-   "description": "Module not found: Can't resolve 'b'",
-   "environmentLabel": null,
-   "label": "Build Error",
-   "source": "./index.js (1:1)
- Module not found: Can't resolve 'b'
- > 1 | import Comp from 'b'
-     | ^^^^^^^^^^^^^^^^^^^^",
-   "stack": [],
- }
+ "Expected Redbox but found no visible one."

  94 |
  95 |     if (isTurbopack) {
> 96 |       await expect(browser).toDisplayRedbox(`
     |                             ^
  97 |        {
  98 |          "description": "Module not found: Can't resolve 'b'",
  99 |          "environmentLabel": null,

  at Object.toDisplayRedbox (development/acceptance/ReactRefreshLogBox-builtins.test.ts:96:29)

● ReactRefreshLogBox › Module not found (empty import trace)

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `ReactRefreshLogBox Module not found (empty import trace) 1`

- Snapshot  - 10
+ Received  +  1

- {
-   "description": "Module not found: Can't resolve 'b'",
-   "environmentLabel": null,
-   "label": "Build Error",
-   "source": "./pages/index.js (1:1)
- Module not found: Can't resolve 'b'
- > 1 | import Comp from 'b'
-     | ^^^^^^^^^^^^^^^^^^^^",
-   "stack": [],
- }
+ "Expected Redbox but found no visible one."

  142 |
  143 |     if (isTurbopack) {
> 144 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  145 |        {
  146 |          "description": "Module not found: Can't resolve 'b'",
  147 |          "environmentLabel": null,

  at Object.toDisplayRedbox (development/acceptance/ReactRefreshLogBox-builtins.test.ts:144:29)

● ReactRefreshLogBox › Module not found (missing global CSS)

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `ReactRefreshLogBox Module not found (missing global CSS) 1`

- Snapshot  - 10
+ Received  +  1

- {
-   "description": "Module not found: Can't resolve './non-existent.css'",
-   "environmentLabel": null,
-   "label": "Build Error",
-   "source": "./pages/_app.js (1:1)
- Module not found: Can't resolve './non-existent.css'
- > 1 | import './non-existent.css'
-     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^",
-   "stack": [],
- }
+ "Expected Redbox but found no visible one."

  197 |
  198 |     if (isTurbopack) {
> 199 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  200 |        {
  201 |          "description": "Module not found: Can't resolve './non-existent.css'",
  202 |          "environmentLabel": null,

  at Object.toDisplayRedbox (development/acceptance/ReactRefreshLogBox-builtins.test.ts:199:29)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/app-external/app-external.test.ts (turbopack)

  • app dir - external dependency > should be able to opt-out 3rd party packages being bundled in server components
  • app dir - external dependency > should handle external async module libraries correctly
  • app dir - external dependency > should transpile specific external packages with the transpilePackages option
  • app dir - external dependency > should resolve the subset react in server components based on the react-server condition
  • app dir - external dependency > should resolve 3rd party package exports based on the react-server condition
  • app dir - external dependency > should correctly collect global css imports and mark them as side effects
  • app dir - external dependency > should handle external css modules
  • app dir - external dependency > should use the same export type for packages in both ssr and client
  • app dir - external dependency > should handle external css modules in pages
  • app dir - external dependency > should handle external next/font
  • app dir - external dependency > should not apply swc optimizer transform for external packages in browser layer in web worker
  • app dir - external dependency > should emit cjs helpers for external cjs modules when compiled
  • app dir - external dependency > should export client module references in esm
  • app dir - external dependency > should support client module references with SSR-only ESM externals
  • app dir - external dependency > should support exporting multiple star re-exports
  • app dir - external dependency > should have proper tree-shaking for known modules in CJS
  • app dir - external dependency > should use the same async storages if imported directly
  • app dir - external dependency > app route > should resolve next/server api from external esm package
  • app dir - external dependency > mixed syntax external modules > should handle mixed module with next/dynamic
  • app dir - external dependency > mixed syntax external modules > should handle mixed module in server and client components
  • app dir - external dependency > react in external esm packages > should use the same react in client app
  • app dir - external dependency > react in external esm packages > should use the same react in server app
  • app dir - external dependency > react in external esm packages > should use the same react in edge server app
  • app dir - external dependency > react in external esm packages > should use the same react in pages
  • app dir - external dependency > react in external esm packages > should support namespace import with ESM packages
  • app dir - external dependency > react in external esm packages > should apply serverExternalPackages inside of node_modules
  • app dir - external dependency > server actions > should prefer to resolve esm over cjs for bundling optout packages
  • app dir - external dependency > server actions > should compile server actions from node_modules in client components
Expand output

● app dir - external dependency › should be able to opt-out 3rd party packages being bundled in server components

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should handle external async module libraries correctly

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should transpile specific external packages with the transpilePackages option

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should resolve the subset react in server components based on the react-server condition

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should resolve 3rd party package exports based on the react-server condition

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should correctly collect global css imports and mark them as side effects

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should handle external css modules

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should use the same export type for packages in both ssr and client

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should handle external css modules in pages

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should handle external next/font

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should not apply swc optimizer transform for external packages in browser layer in web worker

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › react in external esm packages › should use the same react in client app

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › react in external esm packages › should use the same react in server app

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › react in external esm packages › should use the same react in edge server app

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › react in external esm packages › should use the same react in pages

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › react in external esm packages › should support namespace import with ESM packages

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › react in external esm packages › should apply serverExternalPackages inside of node_modules

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › mixed syntax external modules › should handle mixed module with next/dynamic

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › mixed syntax external modules › should handle mixed module in server and client components

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should emit cjs helpers for external cjs modules when compiled

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should export client module references in esm

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should support client module references with SSR-only ESM externals

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should support exporting multiple star re-exports

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should have proper tree-shaking for known modules in CJS

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › should use the same async storages if imported directly

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › server actions › should prefer to resolve esm over cjs for bundling optout packages

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › server actions › should compile server actions from node_modules in client components

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - external dependency › app route › should resolve next/server api from external esm package

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/app-dir-export/test/dynamicapiroute-dev.test.ts (turbopack)

  • app dir - with output export - dynamic api route dev > development mode > should work in dev with dynamicApiRoute undefined
  • app dir - with output export - dynamic api route dev > development mode > should work in dev with dynamicApiRoute 'force-dynamic'
Expand output

● app dir - with output export - dynamic api route dev › development mode › should work in dev with dynamicApiRoute undefined

Expected Redbox but found no visible one.

  182 |         const url = dynamicPage ? '/another/first' : '/api/json'
  183 |         const browser = await webdriver(port, url)
> 184 |         await assertHasRedbox(browser)
      |         ^
  185 |         const header = await getRedboxHeader(browser)
  186 |         const source = await getRedboxSource(browser)
  187 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:184:9)
  at integration/app-dir-export/test/dynamicapiroute-dev.test.ts:23:11

● app dir - with output export - dynamic api route dev › development mode › should work in dev with dynamicApiRoute 'force-dynamic'

Expected Redbox but found no visible one.

  182 |         const url = dynamicPage ? '/another/first' : '/api/json'
  183 |         const browser = await webdriver(port, url)
> 184 |         await assertHasRedbox(browser)
      |         ^
  185 |         const header = await getRedboxHeader(browser)
  186 |         const source = await getRedboxSource(browser)
  187 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:184:9)
  at integration/app-dir-export/test/dynamicapiroute-dev.test.ts:23:11

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/app-dir-export/test/dynamicpage-dev.test.ts (turbopack)

  • app dir - with output export - dynamic page dev > development mode > should work in dev with dynamicPage 'force-dynamic'
Expand output

● app dir - with output export - dynamic page dev › development mode › should work in dev with dynamicPage 'force-dynamic'

Expected Redbox but found no visible one.

  182 |         const url = dynamicPage ? '/another/first' : '/api/json'
  183 |         const browser = await webdriver(port, url)
> 184 |         await assertHasRedbox(browser)
      |         ^
  185 |         const header = await getRedboxHeader(browser)
  186 |         const source = await getRedboxSource(browser)
  187 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:184:9)
  at integration/app-dir-export/test/dynamicpage-dev.test.ts:19:11

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/metadata-dynamic-routes/index.test.ts (turbopack)

  • app dir - metadata dynamic routes > should generate unique path for image routes under group routes
  • app dir - metadata dynamic routes > should pick configured metadataBase instead of deployment url for canonical url
  • app dir - metadata dynamic routes > should inject dynamic metadata properly to head
  • app dir - metadata dynamic routes > should use localhost for local prod and fallback to deployment url when metadataBase is falsy
  • app dir - metadata dynamic routes > should support edge runtime of image routes
  • app dir - metadata dynamic routes > should include default og font files in file trace
  • app dir - metadata dynamic routes > should statically optimized single image route
  • app dir - metadata dynamic routes > icon image routes > should render icon with dynamic routes
  • app dir - metadata dynamic routes > icon image routes > should render apple icon with dynamic routes
  • app dir - metadata dynamic routes > robots.txt > should handle robots.[ext] dynamic routes
  • app dir - metadata dynamic routes > route segment config > should generate dynamic route if dynamic config is force-dynamic
  • app dir - metadata dynamic routes > sitemap > should handle sitemap.[ext] dynamic routes
  • app dir - metadata dynamic routes > sitemap > should support generate multi sitemaps with generateSitemaps
  • app dir - metadata dynamic routes > sitemap > should not throw if client components are imported but not used in sitemap
  • app dir - metadata dynamic routes > sitemap > should support alternate.languages in sitemap
  • app dir - metadata dynamic routes > sitemap > should support images in sitemap
  • app dir - metadata dynamic routes > sitemap > should support videos in sitemap
  • app dir - metadata dynamic routes > sitemap > should optimize routes without multiple generation API as static routes
  • app dir - metadata dynamic routes > sitemap > should generate static paths of dynamic sitemap in production
  • app dir - metadata dynamic routes > social image routes > should handle manifest.[ext] dynamic routes
  • app dir - metadata dynamic routes > social image routes > should render og image with opengraph-image dynamic routes
  • app dir - metadata dynamic routes > social image routes > should render og image with twitter-image dynamic routes
  • app dir - metadata dynamic routes > social image routes > should support generate multi images with generateImageMetadata
  • app dir - metadata dynamic routes > social image routes > should fill params into dynamic routes url of metadata images
  • app dir - metadata dynamic routes > social image routes > should support params as argument in dynamic routes
  • app dir - metadata dynamic routes > social image routes > should fill params into routes groups url of static images
Expand output

● app dir - metadata dynamic routes › robots.txt › should handle robots.[ext] dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should handle sitemap.[ext] dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should support generate multi sitemaps with generateSitemaps

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should not throw if client components are imported but not used in sitemap

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should support alternate.languages in sitemap

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should support images in sitemap

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should support videos in sitemap

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should optimize routes without multiple generation API as static routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › sitemap › should generate static paths of dynamic sitemap in production

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should handle manifest.[ext] dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should render og image with opengraph-image dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should render og image with twitter-image dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should support generate multi images with generateImageMetadata

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should fill params into dynamic routes url of metadata images

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should support params as argument in dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › social image routes › should fill params into routes groups url of static images

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › icon image routes › should render icon with dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › icon image routes › should render apple icon with dynamic routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › route segment config › should generate dynamic route if dynamic config is force-dynamic

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should generate unique path for image routes under group routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should pick configured metadataBase instead of deployment url for canonical url

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should inject dynamic metadata properly to head

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should use localhost for local prod and fallback to deployment url when metadataBase is falsy

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should support edge runtime of image routes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should include default og font files in file trace

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - metadata dynamic routes › should statically optimized single image route

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/metadata-edge/index.test.ts (turbopack)

  • app dir - Metadata API on the Edge runtime > should render OpenGraph image meta tag correctly
  • app dir - Metadata API on the Edge runtime > OG image route > should not bundle ImageResponse into the page worker
Expand output

● app dir - Metadata API on the Edge runtime › OG image route › should not bundle ImageResponse into the page worker

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

● app dir - Metadata API on the Edge runtime › should render OpenGraph image meta tag correctly

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:109:17)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/server-side-dev-errors/test/index.test.js (turbopack)

  • server-side dev errors > should show server-side error for gsp page correctly
  • server-side dev errors > should show server-side error for gssp page correctly
  • server-side dev errors > should show server-side error for dynamic gssp page correctly
  • server-side dev errors > should show server-side error for api route correctly
  • server-side dev errors > should show server-side error for dynamic api route correctly
Expand output

● server-side dev errors › should show server-side error for gsp page correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `server-side dev errors should show server-side error for gsp page correctly 1`

- Snapshot  - 11
+ Received  +  1

- {
-   "description": "missingVar is not defined",
-   "environmentLabel": null,
-   "label": "Runtime ReferenceError",
-   "source": "pages/gsp.js (6:3) @ getStaticProps
- > 6 |   missingVar;return {
-     |   ^",
-   "stack": [
-     "getStaticProps pages/gsp.js (6:3)",
-   ],
- }
+ "Expected Redbox but found no visible one."

  87 |       )
  88 |
> 89 |       await expect(browser).toDisplayRedbox(`
     |                             ^
  90 |         {
  91 |           "description": "missingVar is not defined",
  92 |           "environmentLabel": null,

  at Object.toDisplayRedbox (integration/server-side-dev-errors/test/index.test.js:89:29)

● server-side dev errors › should show server-side error for gssp page correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `server-side dev errors should show server-side error for gssp page correctly 1`

- Snapshot  - 11
+ Received  +  1

- {
-   "description": "missingVar is not defined",
-   "environmentLabel": null,
-   "label": "Runtime ReferenceError",
-   "source": "pages/gssp.js (6:3) @ getServerSideProps
- > 6 |   missingVar;return {
-     |   ^",
-   "stack": [
-     "getServerSideProps pages/gssp.js (6:3)",
-   ],
- }
+ "Expected Redbox but found no visible one."

  137 |       )
  138 |
> 139 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  140 |         {
  141 |           "description": "missingVar is not defined",
  142 |           "environmentLabel": null,

  at Object.toDisplayRedbox (integration/server-side-dev-errors/test/index.test.js:139:29)

● server-side dev errors › should show server-side error for dynamic gssp page correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `server-side dev errors should show server-side error for dynamic gssp page correctly 1`

- Snapshot  - 11
+ Received  +  1

- {
-   "description": "missingVar is not defined",
-   "environmentLabel": null,
-   "label": "Runtime ReferenceError",
-   "source": "pages/blog/[slug].js (6:3) @ getServerSideProps
- > 6 |   missingVar;return {
-     |   ^",
-   "stack": [
-     "getServerSideProps pages/blog/[slug].js (6:3)",
-   ],
- }
+ "Expected Redbox but found no visible one."

  187 |       )
  188 |
> 189 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  190 |         {
  191 |           "description": "missingVar is not defined",
  192 |           "environmentLabel": null,

  at Object.toDisplayRedbox (integration/server-side-dev-errors/test/index.test.js:189:29)

● server-side dev errors › should show server-side error for api route correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `server-side dev errors should show server-side error for api route correctly 1`

- Snapshot  - 11
+ Received  +  1

- {
-   "description": "missingVar is not defined",
-   "environmentLabel": null,
-   "label": "Runtime ReferenceError",
-   "source": "pages/api/hello.js (2:3) @ handler
- > 2 |   missingVar;res.status(200).json({ hello: 'world' })
-     |   ^",
-   "stack": [
-     "handler pages/api/hello.js (2:3)",
-   ],
- }
+ "Expected Redbox but found no visible one."

  247 |       }
  248 |
> 249 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  250 |         {
  251 |           "description": "missingVar is not defined",
  252 |           "environmentLabel": null,

  at Object.toDisplayRedbox (integration/server-side-dev-errors/test/index.test.js:249:29)

● server-side dev errors › should show server-side error for dynamic api route correctly

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `server-side dev errors should show server-side error for dynamic api route correctly 1`

- Snapshot  - 11
+ Received  +  1

- {
-   "description": "missingVar is not defined",
-   "environmentLabel": null,
-   "label": "Runtime ReferenceError",
-   "source": "pages/api/blog/[slug].js (2:3) @ handler
- > 2 |   missingVar;res.status(200).json({ slug: req.query.slug })
-     |   ^",
-   "stack": [
-     "handler pages/api/blog/[slug].js (2:3)",
-   ],
- }
+ "Expected Redbox but found no visible one."

  313 |       }
  314 |
> 315 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  316 |         {
  317 |           "description": "missingVar is not defined",
  318 |           "environmentLabel": null,

  at Object.toDisplayRedbox (integration/server-side-dev-errors/test/index.test.js:315:29)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/config-output-export/test/index.test.ts (turbopack)

  • config-output-export > should error with getStaticProps and revalidate 10 seconds (ISR)
  • config-output-export > should error with getServerSideProps without fallback
  • config-output-export > should error with getStaticPaths and fallback true
  • config-output-export > should error with getStaticPaths and fallback blocking
Expand output

● config-output-export › should error with getStaticProps and revalidate 10 seconds (ISR)

Expected Redbox but found no visible one.

  222 |       fs.rmSync(blog)
  223 |     }
> 224 |     await assertHasRedbox(browser)
      |     ^
  225 |     expect(await getRedboxHeader(browser)).toContain(
  226 |       'ISR cannot be used with "output: export".'
  227 |     )

  at Object.<anonymous> (integration/config-output-export/test/index.test.ts:224:5)

● config-output-export › should error with getServerSideProps without fallback

Expected Redbox but found no visible one.

  313 |       fs.rmSync(blog)
  314 |     }
> 315 |     await assertHasRedbox(browser)
      |     ^
  316 |     expect(await getRedboxHeader(browser)).toContain(
  317 |       'getServerSideProps cannot be used with "output: export".'
  318 |     )

  at Object.<anonymous> (integration/config-output-export/test/index.test.ts:315:5)

● config-output-export › should error with getStaticPaths and fallback true

Expected Redbox but found no visible one.

  353 |       })
  354 |       browser = await webdriver(result.port, '/posts/one')
> 355 |       await assertHasRedbox(browser)
      |       ^
  356 |       expect(await getRedboxHeader(browser)).toContain(
  357 |         'getStaticPaths with "fallback: true" cannot be used with "output: export".'
  358 |       )

  at Object.<anonymous> (integration/config-output-export/test/index.test.ts:355:7)

● config-output-export › should error with getStaticPaths and fallback blocking

Expected Redbox but found no visible one.

  397 |       })
  398 |       browser = await webdriver(result.port, '/posts/one')
> 399 |       await assertHasRedbox(browser)
      |       ^
  400 |       expect(await getRedboxHeader(browser)).toContain(
  401 |         'getStaticPaths with "fallback: blocking" cannot be used with "output: export".'
  402 |       )

  at Object.<anonymous> (integration/config-output-export/test/index.test.ts:399:7)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/monaco-editor/monaco-editor.test.ts (turbopack)

  • monaco-editor > should load monaco-editor
Expand output

● monaco-editor › should load monaco-editor

page.waitForSelector: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('.monaco-editor')

  491 |
  492 |     return this.startChain(async () => {
> 493 |       const el = await page.waitForSelector(selector, {
      |                             ^
  494 |         timeout,
  495 |         state,
  496 |       })

  at waitForSelector (lib/browsers/playwright.ts:493:29)
  at Playwright._chain (lib/browsers/playwright.ts:616:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:597:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:492:17)
  at Object.waitForElementByCss (e2e/app-dir/monaco-editor/monaco-editor.test.ts:16:21)
  at Proxy._chain (lib/browsers/playwright.ts:616:23)
  at Proxy._chain (lib/browsers/playwright.ts:592:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:440:17)
  at Object.getAttribute (e2e/app-dir/monaco-editor/monaco-editor.test.ts:16:59)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/dynamic-css/index.test.ts (turbopack)

  • app dir - dynamic css > should only apply corresponding css for page loaded in edge runtime
Expand output

● app dir - dynamic css › should only apply corresponding css for page loaded in edge runtime

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:34405/ssr/edge", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (e2e/app-dir/dynamic-css/index.test.ts:42:21)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/use-server-inserted-html/use-server-inserted-html.test.ts (turbopack)

  • use-server-inserted-html > should render initial styles of css-in-js in nodejs SSR correctly
  • use-server-inserted-html > should render initial styles of css-in-js in edge SSR correctly
  • use-server-inserted-html > should render css-in-js suspense boundary correctly
Expand output

● use-server-inserted-html › should render initial styles of css-in-js in nodejs SSR correctly

expect(received).toMatch(expected)

Expected pattern: /{color:(\s*)(?:blue|#00f);?}/
Received string:  "<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><link rel=\"preload\" as=\"script\" fetchpriority=\"low\" href=\"/_next/static/chunks/5f42e2904949d73c.js\"><script src=\"/_next/static/chunks/6fdd11d673fa48fe.js\" async></script><script src=\"/_next/static/chunks/174c5d3beb505d09.js\" async></script><script src=\"/_next/static/chunks/491b1e6d4ad32e70.js\" async></script><script src=\"/_next/static/chunks/turbopack-01f70c05b845702c.js\" async></script><script src=\"/_next/static/chunks/2b2219b7c333c7d8.js\" async></script><script src=\"/_next/static/chunks/84657ff64905a507.js\" async></script><script src=\"/_next/static/chunks/35d04bffa5a61078.js\" async></script><meta name=\"robots\" content=\"noindex\"><script src=\"/_next/static/chunks/a6dad97d9634a72d.js\" nomodule></script><style id=\"__jsx-334e8b55724eb80d\">h3.jsx-334e8b55724eb80d{color:purple}.box.jsx-334e8b55724eb80d{border:2px solid purple;padding:8px}</style><style id=\"__jsx-c70f73179e748994\">button.jsx-c70f73179e748994{color:#ff69b4}</style>"

  31 |
  32 |     // from styled-components
> 33 |     expect(head).toMatch(/{color:(\s*)(?:blue|#00f);?}/)
     |                  ^
  34 |   })
  35 |
  36 |   it('should render initial styles of css-in-js in edge SSR correctly', async () => {

  at Object.toMatch (e2e/app-dir/use-server-inserted-html/use-server-inserted-html.test.ts:33:18)

● use-server-inserted-html › should render initial styles of css-in-js in edge SSR correctly

expect(received).toMatch(expected)

Expected pattern: /{color:(\s*)(?:blue|#00f);?}/
Received string:  "<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><link rel=\"preload\" as=\"script\" fetchpriority=\"low\" href=\"/_next/static/chunks/5f42e2904949d73c.js\"><script src=\"/_next/static/chunks/6fdd11d673fa48fe.js\" async></script><script src=\"/_next/static/chunks/174c5d3beb505d09.js\" async></script><script src=\"/_next/static/chunks/491b1e6d4ad32e70.js\" async></script><script src=\"/_next/static/chunks/turbopack-01f70c05b845702c.js\" async></script><script src=\"/_next/static/chunks/2b2219b7c333c7d8.js\" async></script><script src=\"/_next/static/chunks/84657ff64905a507.js\" async></script><script src=\"/_next/static/chunks/35d04bffa5a61078.js\" async></script><meta name=\"robots\" content=\"noindex\"><script src=\"/_next/static/chunks/a6dad97d9634a72d.js\" nomodule></script><style id=\"__jsx-334e8b55724eb80d\">h3.jsx-334e8b55724eb80d{color:purple}.box.jsx-334e8b55724eb80d{border:2px solid purple;padding:8px}</style><style id=\"__jsx-c70f73179e748994\">button.jsx-c70f73179e748994{color:#ff69b4}</style>"

  43 |
  44 |     // from styled-components
> 45 |     expect(head).toMatch(/{color:(\s*)(?:blue|#00f);?}/)
     |                  ^
  46 |   })
  47 |
  48 |   it('should render css-in-js suspense boundary correctly', async () => {

  at Object.toMatch (e2e/app-dir/use-server-inserted-html/use-server-inserted-html.test.ts:45:18)

● use-server-inserted-html › should render css-in-js suspense boundary correctly

expect(received).toEqual(expected) // deep equality

- Expected  - 2
+ Received  + 0

  Array [
-   "fallback",
-   "data",
    "refresh-script",
  ]

  63 |       })
  64 |
> 65 |       expect(results).toEqual(['fallback', 'data', 'refresh-script'])
     |                       ^
  66 |     })
  67 |     // // TODO-APP: fix streaming/suspense within browser for test suite
  68 |     // const browser = await next.browser( '/css-in-js', { waitHydration: false })

  at toEqual (e2e/app-dir/use-server-inserted-html/use-server-inserted-html.test.ts:65:23)
  at Object.<anonymous> (e2e/app-dir/use-server-inserted-html/use-server-inserted-html.test.ts:49:5)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/metadata/metadata.test.ts (turbopack)

  • app dir - metadata > basic > should support other basic tags (edge)
Expand output

● app dir - metadata › basic › should support other basic tags (edge)

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:41871/basic-edge", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (e2e/app-dir/metadata/metadata.test.ts:103:23)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts

  • layout sharing in non-static prefetches > runtime prefetches should omit layouts that were already prefetched with a full prefetch
Expand output

● layout sharing in non-static prefetches › runtime prefetches should omit layouts that were already prefetched with a full prefetch

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  243 |   })
  244 |
> 245 |   it('runtime prefetches should omit layouts that were already prefetched with a full prefetch', async () => {
      |   ^
  246 |     // A prefetch should re-use layouts from past prefetches with more specific fetch strategies.
  247 |
  248 |     let page: Playwright.Page

  at it (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:245:3)
  at Object.describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:5:1)

Read more about building and testing Next.js in contributing.md.

pnpm test packages/next-codemod/transforms/__tests__/add-missing-react-import.test.js

  • add-missing-react-import > transforms correctly using "add-missing-react-import/missing-react-import-in-component" data
Expand output

● add-missing-react-import › transforms correctly using "add-missing-react-import/missing-react-import-in-component" data

expect(received).toEqual(expected) // deep equality

- Expected  - 15
+ Received  + 15

- import React, { Children, isValidElement } from 'react';
-
+ import React, { Children, isValidElement } from 'react';
+ 
- function Heading(props) {
+ function Heading(props) {
-   const { component, className, children, ...rest } = props;
+   const { component, className, children, ...rest } = props;
-   return React.cloneElement(
+   return React.cloneElement(
-     component,
+     component,
-     {
+     {
-       className: [className, component.props.className || ''].join(' '),
+       className: [className, component.props.className || ''].join(' '),
-       ...rest
+       ...rest
-     },
+     },
-     children
+     children
-   );
+   );
- }
-
-
+ }
+ 
+ 
  export default Heading;

  at runInlineTest (../node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_/node_modules/jscodeshift/dist/testUtils.js:49:18)
  at runTest (../node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_/node_modules/jscodeshift/dist/testUtils.js:98:3)
  at Object.<anonymous> (../node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_/node_modules/jscodeshift/dist/testUtils.js:115:7)

Read more about building and testing Next.js in contributing.md.

@lukesandberg lukesandberg marked this pull request as ready for review August 20, 2025 22:25
@lukesandberg lukesandberg requested a review from a team August 20, 2025 22:25
@lukesandberg lukesandberg force-pushed the trivial_const_exports branch from 7014690 to b8c362a Compare August 21, 2025 19:11
Copy link
Contributor

@vercel vercel bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Comments:

turbopack/crates/turbopack-ecmascript/src/analyzer/builtin.rs (lines 306-306):

Inconsistent representation of undefined values: the code uses JsValue::FreeVar(atom!("undefined")) while the refactored analyzer uses JsValue::Constant(ConstantValue::Undefined) elsewhere.

View Details
📝 Patch Details
diff --git a/turbopack/crates/turbopack-ecmascript/src/analyzer/builtin.rs b/turbopack/crates/turbopack-ecmascript/src/analyzer/builtin.rs
index 284abb62b0..e70b48d76d 100644
--- a/turbopack/crates/turbopack-ecmascript/src/analyzer/builtin.rs
+++ b/turbopack/crates/turbopack-ecmascript/src/analyzer/builtin.rs
@@ -303,7 +303,7 @@ pub fn replace_builtin(value: &mut JsValue) -> bool {
                             }
                         }
                         if potential_values.is_empty() {
-                            *value = JsValue::FreeVar(atom!("undefined"));
+                            *value = JsValue::Constant(ConstantValue::Undefined);
                         } else {
                             *value = potential_values_to_alternatives(
                                 potential_values,

Analysis

The refactoring in graph.rs consistently changed undefined value representations from JsValue::FreeVar(atom!("undefined")) to JsValue::Constant(ConstantValue::Undefined) in multiple places (lines 692, 846, 902, 2039). However, in builtin.rs at line 306, there's still a use of JsValue::FreeVar(atom!("undefined")) that wasn't updated.

This inconsistency could lead to different internal representations for the same semantic value (undefined), potentially causing issues in value comparison, pattern matching, or analysis logic that expects a consistent representation. The test snapshots show that functions now return consistent Constant(Undefined) values, but this remaining FreeVar("undefined") usage could create semantic mismatches.


Recommendation

Update line 306 in builtin.rs to use JsValue::Constant(ConstantValue::Undefined) instead of JsValue::FreeVar(atom!("undefined")) to maintain consistency with the refactored analyzer representation of undefined values.

@lukesandberg lukesandberg changed the base branch from trivial_const_exports to graphite-base/82763 August 24, 2025 02:34
@graphite-app graphite-app bot changed the base branch from graphite-base/82763 to canary August 24, 2025 02:37
@lukesandberg lukesandberg force-pushed the dead_exports branch 2 times, most recently from 7733cf2 to 63b6612 Compare August 25, 2025 18:18
@lukesandberg lukesandberg force-pushed the dead_exports branch from 63b6612 to 88e7ede Compare