Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

feat(turbopack): Implement skipping of side effect free fragments #71340

Merged
merged 9 commits into from
Nov 7, 2024

Conversation

kdy1
Copy link
Member

@kdy1 kdy1 commented Oct 16, 2024

What?

Why?

How?

Closes NEXT-
Fixes #

Closes PACK-3600

Copy link
Member Author

kdy1 commented Oct 16, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

@kdy1 kdy1 changed the title Implement skipping of side effect free fragments feat(turbopack): Implement skipping of side effect free fragments Oct 16, 2024
@ijjk
Copy link
Member

ijjk commented Oct 16, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
buildDuration 20.4s 20.6s ⚠️ +168ms
buildDurationCached 16.4s 14.7s N/A
nodeModulesSize 404 MB 403 MB N/A
nextStartRea..uration (ms) 467ms 472ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
3073-HASH.js gzip 45.6 kB 45.4 kB N/A
3898-HASH.js gzip 5.27 kB 5.27 kB N/A
7183.HASH.js gzip 169 B 168 B N/A
b5cfd723-HASH.js gzip 52.5 kB 52.5 kB N/A
framework-HASH.js gzip 57.3 kB 57.3 kB N/A
main-app-HASH.js gzip 235 B 232 B N/A
main-HASH.js gzip 33.2 kB 33.1 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB
Overall change 1.71 kB 1.71 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval 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 kdy1/ts-skip-partial-eval Change
_app-HASH.js gzip 193 B 194 B N/A
_error-HASH.js gzip 192 B 192 B
amp-HASH.js gzip 513 B 511 B N/A
css-HASH.js gzip 343 B 344 B N/A
dynamic-HASH.js gzip 1.85 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 392 B 393 B N/A
image-HASH.js gzip 4.41 kB 4.4 kB N/A
index-HASH.js gzip 268 B 266 B N/A
link-HASH.js gzip 2.77 kB 2.78 kB N/A
routerDirect..HASH.js gzip 327 B 325 B N/A
script-HASH.js gzip 396 B 397 B N/A
withRouter-HASH.js gzip 324 B 324 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 887 B 887 B
Client Build Manifests
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
_buildManifest.js gzip 748 B 748 B
Overall change 748 B 748 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
index.html gzip 524 B 522 B N/A
link.html gzip 538 B 535 B N/A
withRouter.html gzip 518 B 519 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
edge-ssr.js gzip 128 kB 128 kB N/A
page.js gzip 198 kB 198 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
middleware-b..fest.js gzip 667 B 667 B
middleware-r..fest.js gzip 156 B 155 B N/A
middleware.js gzip 31 kB 31 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 1.51 kB 1.51 kB
Next Runtimes Overall increase ⚠️
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
196-experime...dev.js gzip 322 B N/A N/A
196.runtime.dev.js gzip 314 B N/A N/A
app-page-exp...dev.js gzip 319 kB 318 kB N/A
app-page-exp..prod.js gzip 123 kB 123 kB N/A
app-page-tur..prod.js gzip 136 kB 136 kB N/A
app-page-tur..prod.js gzip 131 kB 131 kB N/A
app-page.run...dev.js gzip 309 kB 309 kB N/A
app-page.run..prod.js gzip 119 kB 119 kB N/A
app-route-ex...dev.js gzip 36 kB 35.9 kB N/A
app-route-ex..prod.js gzip 24.4 kB 24.4 kB N/A
app-route-tu..prod.js gzip 24.4 kB 24.4 kB N/A
app-route-tu..prod.js gzip 24.2 kB 24.2 kB N/A
app-route.ru...dev.js gzip 37.6 kB 37.5 kB N/A
app-route.ru..prod.js gzip 24.2 kB 24.2 kB N/A
pages-api-tu..prod.js gzip 9.59 kB 9.59 kB
pages-api.ru...dev.js gzip 11.4 kB 11.4 kB
pages-api.ru..prod.js gzip 9.58 kB 9.58 kB
pages-turbo...prod.js gzip 20.9 kB 20.9 kB N/A
pages.runtim...dev.js gzip 26.5 kB 26.5 kB N/A
pages.runtim..prod.js gzip 20.9 kB 20.9 kB N/A
server.runti..prod.js gzip 915 kB 915 kB ⚠️ +752 B
10-experimen...dev.js gzip N/A 319 B N/A
10.runtime.dev.js gzip N/A 311 B N/A
Overall change 945 kB 946 kB ⚠️ +752 B
build cache
vercel/next.js canary vercel/next.js kdy1/ts-skip-partial-eval Change
0.pack gzip 2.01 MB 2 MB N/A
index.pack gzip 146 kB 146 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 image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2983],
   {
-    /***/ 8916: /***/ (
+    /***/ 7893: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(4209);
+          return __webpack_require__(3231);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 9265: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4457: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(9577)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1436)
+        __webpack_require__(5156)
       );
-      const _getimgprops = __webpack_require__(8517);
-      const _imageconfig = __webpack_require__(2168);
-      const _imageconfigcontextsharedruntime = __webpack_require__(9202);
-      const _warnonce = __webpack_require__(6992);
-      const _routercontextsharedruntime = __webpack_require__(8155);
+      const _getimgprops = __webpack_require__(637);
+      const _imageconfig = __webpack_require__(2720);
+      const _imageconfigcontextsharedruntime = __webpack_require__(8650);
+      const _warnonce = __webpack_require__(5752);
+      const _routercontextsharedruntime = __webpack_require__(5139);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(345)
+        __webpack_require__(2801)
       );
-      const _usemergedref = __webpack_require__(2806);
+      const _usemergedref = __webpack_require__(1985);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 2806: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1985: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
       /***/
     },
 
-    /***/ 8517: /***/ (
+    /***/ 637: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -448,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(6992);
-      const _imageblursvg = __webpack_require__(1692);
-      const _imageconfig = __webpack_require__(2168);
+      const _warnonce = __webpack_require__(5752);
+      const _imageblursvg = __webpack_require__(1732);
+      const _imageconfig = __webpack_require__(2720);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -824,7 +824,7 @@
       /***/
     },
 
-    /***/ 1692: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1732: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -879,7 +879,7 @@
       /***/
     },
 
-    /***/ 4673: /***/ (
+    /***/ 857: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -906,10 +906,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(1739);
-      const _getimgprops = __webpack_require__(8517);
-      const _imagecomponent = __webpack_require__(9265);
+      const _getimgprops = __webpack_require__(637);
+      const _imagecomponent = __webpack_require__(4457);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(345)
+        __webpack_require__(2801)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -941,7 +941,7 @@
       /***/
     },
 
-    /***/ 345: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2801: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -976,7 +976,7 @@
       /***/
     },
 
-    /***/ 4209: /***/ (
+    /***/ 3231: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -993,8 +993,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-7c8e5e7a-20241101/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(7515);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ngsqfltlxii45umrwe6rktuauy/node_modules/next/image.js
-      var next_image = __webpack_require__(7265);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7c8e5e7a-20241101_re_ay5jspqvpcpk5357qiimbatlya/node_modules/next/image.js
+      var next_image = __webpack_require__(3120);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1024,12 +1024,12 @@
       /***/
     },
 
-    /***/ 7265: /***/ (
+    /***/ 3120: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(4673);
+      module.exports = __webpack_require__(857);
 
       /***/
     },
@@ -1039,7 +1039,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8916)
+      __webpack_exec__(7893)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 3073-HASH.js

Diff too large to display

Diff for b5cfd723-HASH.js
@@ -1,13 +1,13 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [4601],
+  [5518],
   {
-    /***/ 6216: /***/ (
+    /***/ 5637: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
     ) => {
-      /* provided dependency */ var process = __webpack_require__(5978);
+      /* provided dependency */ var process = __webpack_require__(231);
       /**
        * @license React
        * react-dom-client.production.js
@@ -22,9 +22,9 @@
  Modernizr 3.0.0pre (Custom Build) | MIT
 */
 
-      var Scheduler = __webpack_require__(987),
-        React = __webpack_require__(8059),
-        ReactDOM = __webpack_require__(5882);
+      var Scheduler = __webpack_require__(976),
+        React = __webpack_require__(4922),
+        ReactDOM = __webpack_require__(8919);
       function formatProdErrorMessage(code) {
         var url = "https://react.dev/errors/" + code;
         if (1 < arguments.length) {
@@ -2825,9 +2825,9 @@
         null === thenableState$1 && (thenableState$1 = []);
         return trackUsedThenable(thenableState$1, thenable, index);
       }
-      function coerceRef(workInProgress, element) {
-        element = element.props.ref;
-        workInProgress.ref = void 0 !== element ? element : null;
+      function coerceRef(returnFiber, current, workInProgress, element) {
+        returnFiber = element.props.ref;
+        workInProgress.ref = void 0 !== returnFiber ? returnFiber : null;
       }
       function throwOnInvalidObjectType(returnFiber, newChild) {
         if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)
@@ -2935,12 +2935,12 @@
                 resolveLazy(elementType) === current.type))
           )
             return (
-              (current = useFiber(current, element.props)),
-              coerceRef(current, element),
-              (current.return = returnFiber),
-              current
+              (lanes = useFiber(current, element.props)),
+              coerceRef(returnFiber, current, lanes, element),
+              (lanes.return = returnFiber),
+              lanes
             );
-          current = createFiberFromTypeAndProps(
+          lanes = createFiberFromTypeAndProps(
             element.type,
             element.key,
             element.props,
@@ -2948,9 +2948,9 @@
             returnFiber.mode,
             lanes
           );
-          coerceRef(current, element);
-          current.return = returnFiber;
-          return current;
+          coerceRef(returnFiber, current, lanes, element);
+          lanes.return = returnFiber;
+          return lanes;
         }
         function updatePortal(returnFiber, current, portal, lanes) {
           if (
@@ -3015,7 +3015,7 @@
                     returnFiber.mode,
                     lanes
                   )),
-                  coerceRef(lanes, newChild),
+                  coerceRef(returnFiber, null, lanes, newChild),
                   (lanes.return = returnFiber),
                   lanes
                 );
@@ -3387,54 +3387,57 @@
             switch (newChild.$$typeof) {
               case REACT_ELEMENT_TYPE:
                 a: {
-                  for (var key = newChild.key; null !== currentFirstChild; ) {
-                    if (currentFirstChild.key === key) {
+                  for (
+                    var key = newChild.key, child = currentFirstChild;
+                    null !== child;
+
+                  ) {
+                    if (child.key === key) {
                       key = newChild.type;
                       if (key === REACT_FRAGMENT_TYPE) {
-                        if (7 === currentFirstChild.tag) {
-                          deleteRemainingChildren(
-                            returnFiber,
-                            currentFirstChild.sibling
-                          );
-                          lanes = useFiber(
-                            currentFirstChild,
+                        if (7 === child.tag) {
+                          deleteRemainingChildren(returnFiber, child.sibling);
+                          currentFirstChild = useFiber(
+                            child,
                             newChild.props.children
                           );
-                          lanes.return = returnFiber;
-                          returnFiber = lanes;
+                          currentFirstChild.return = returnFiber;
+                          returnFiber = currentFirstChild;
                           break a;
                         }
                       } else if (
-                        currentFirstChild.elementType === key ||
+                        child.elementType === key ||
                         ("object" === typeof key &&
                           null !== key &&
                           key.$$typeof === REACT_LAZY_TYPE &&
-                          resolveLazy(key) === currentFirstChild.type)
+                          resolveLazy(key) === child.type)
                       ) {
-                        deleteRemainingChildren(
+                        deleteRemainingChildren(returnFiber, child.sibling);
+                        currentFirstChild = useFiber(child, newChild.props);
+                        coerceRef(
                           returnFiber,
-                          currentFirstChild.sibling
+                          child,
+                          currentFirstChild,
+                          newChild
                         );
-                        lanes = useFiber(currentFirstChild, newChild.props);
-                        coerceRef(lanes, newChild);
-                        lanes.return = returnFiber;
-                        returnFiber = lanes;
+                        currentFirstChild.return = returnFiber;
+                        returnFiber = currentFirstChild;
                         break a;
                       }
-                      deleteRemainingChildren(returnFiber, currentFirstChild);
+                      deleteRemainingChildren(returnFiber, child);
                       break;
-                    } else deleteChild(returnFiber, currentFirstChild);
-                    currentFirstChild = currentFirstChild.sibling;
+                    } else deleteChild(returnFiber, child);
+                    child = child.sibling;
                   }
                   newChild.type === REACT_FRAGMENT_TYPE
-                    ? ((lanes = createFiberFromFragment(
+                    ? ((currentFirstChild = createFiberFromFragment(
                         newChild.props.children,
                         returnFiber.mode,
                         lanes,
                         newChild.key
                       )),
-                      (lanes.return = returnFiber),
-                      (returnFiber = lanes))
+                      (currentFirstChild.return = returnFiber),
+                      (returnFiber = currentFirstChild))
                     : ((lanes = createFiberFromTypeAndProps(
                         newChild.type,
                         newChild.key,
@@ -3443,15 +3446,20 @@
                         returnFiber.mode,
                         lanes
                       )),
-                      coerceRef(lanes, newChild),
+                      coerceRef(
+                        returnFiber,
+                        currentFirstChild,
+                        lanes,
+                        newChild
+                      ),
                       (lanes.return = returnFiber),
                       (returnFiber = lanes));
                 }
                 return placeSingleChild(returnFiber);
               case REACT_PORTAL_TYPE:
                 a: {
-                  for (key = newChild.key; null !== currentFirstChild; ) {
-                    if (currentFirstChild.key === key)
+                  for (child = newChild.key; null !== currentFirstChild; ) {
+                    if (currentFirstChild.key === child)
                       if (
                         4 === currentFirstChild.tag &&
                         currentFirstChild.stateNode.containerInfo ===
@@ -3463,12 +3471,12 @@
                           returnFiber,
                           currentFirstChild.sibling
                         );
-                        lanes = useFiber(
+                        currentFirstChild = useFiber(
                           currentFirstChild,
                           newChild.children || []
                         );
-                        lanes.return = returnFiber;
-                        returnFiber = lanes;
+                        currentFirstChild.return = returnFiber;
+                        returnFiber = currentFirstChild;
                         break a;
                       } else {
                         deleteRemainingChildren(returnFiber, currentFirstChild);
@@ -3477,19 +3485,19 @@
                     else deleteChild(returnFiber, currentFirstChild);
                     currentFirstChild = currentFirstChild.sibling;
                   }
-                  lanes = createFiberFromPortal(
+                  currentFirstChild = createFiberFromPortal(
                     newChild,
                     returnFiber.mode,
                     lanes
                   );
-                  lanes.return = returnFiber;
-                  returnFiber = lanes;
+                  currentFirstChild.return = returnFiber;
+                  returnFiber = currentFirstChild;
                 }
                 return placeSingleChild(returnFiber);
               case REACT_LAZY_TYPE:
                 return (
-                  (key = newChild._init),
-                  (newChild = key(newChild._payload)),
+                  (child = newChild._init),
+                  (newChild = child(newChild._payload)),
                   reconcileChildFibersImpl(
                     returnFiber,
                     currentFirstChild,
@@ -3506,10 +3514,10 @@
                 lanes
               );
             if (getIteratorFn(newChild)) {
-              key = getIteratorFn(newChild);
-              if ("function" !== typeof key)
+              child = getIteratorFn(newChild);
+              if ("function" !== typeof child)
                 throw Error(formatProdErrorMessage(150));
-              newChild = key.call(newChild);
+              newChild = child.call(newChild);
               return reconcileChildrenIterator(
                 returnFiber,
                 currentFirstChild,
@@ -3542,17 +3550,17 @@
                     returnFiber,
                     currentFirstChild.sibling
                   ),
-                  (lanes = useFiber(currentFirstChild, newChild)),
-                  (lanes.return = returnFiber),
-                  (returnFiber = lanes))
+                  (currentFirstChild = useFiber(currentFirstChild, newChild)),
+                  (currentFirstChild.return = returnFiber),
+                  (returnFiber = currentFirstChild))
                 : (deleteRemainingChildren(returnFiber, currentFirstChild),
-                  (lanes = createFiberFromText(
+                  (currentFirstChild = createFiberFromText(
                     newChild,
                     returnFiber.mode,
                     lanes
                   )),
-                  (lanes.return = returnFiber),
-                  (returnFiber = lanes)),
+                  (currentFirstChild.return = returnFiber),
+                  (returnFiber = currentFirstChild)),
               placeSingleChild(returnFiber))
             : deleteRemainingChildren(returnFiber, currentFirstChild);
         }
@@ -7479,7 +7487,14 @@
       }
       var valueCursor = createCursor(null),
         currentlyRenderingFiber = null,
-        lastContextDependency = null;
+        lastContextDependency = null,
+        lastFullyObservedContext = null;
+      function resetContextDependencies() {
+        lastFullyObservedContext =
+          lastContextDependency =
+          currentlyRenderingFiber =
+            null;
+      }
       function pushProvider(providerFiber, context, nextValue) {
         push(valueCursor, context._currentValue);
         context._currentValue = nextValue;
@@ -7634,7 +7649,7 @@
       }
       function prepareToReadContext(workInProgress) {
         currentlyRenderingFiber = workInProgress;
-        lastContextDependency = null;
+        lastFullyObservedContext = lastContextDependency = null;
         workInProgress = workInProgress.dependencies;
         null !== workInProgress && (workInProgress.firstContext = null);
       }
@@ -7647,13 +7662,16 @@
       }
       function readContextForConsumer(consumer, context) {
         var value = context._currentValue;
-        context = { context: context, memoizedValue: value, next: null };
-        if (null === lastContextDependency) {
-          if (null === consumer) throw Error(formatProdErrorMessage(308));
-          lastContextDependency = context;
-          consumer.dependencies = { lanes: 0, firstContext: context };
-          consumer.flags |= 524288;
-        } else lastContextDependency = lastContextDependency.next = context;
+        if (lastFullyObservedContext !== context)
+          if (
+            ((context = { context: context, memoizedValue: value, next: null }),
+            null === lastContextDependency)
+          ) {
+            if (null === consumer) throw Error(formatProdErrorMessage(308));
+            lastContextDependency = context;
+            consumer.dependencies = { lanes: 0, firstContext: context };
+            consumer.flags |= 524288;
+          } else lastContextDependency = lastContextDependency.next = context;
         return value;
       }
       var hasForceUpdate = !1;
@@ -11203,7 +11221,7 @@
             var interruptedWork = workInProgress.return;
           else
             (interruptedWork = workInProgress),
-              (lastContextDependency = currentlyRenderingFiber = null),
+              resetContextDependencies(),
               resetHooksOnUnwind(interruptedWork),
               (thenableState$1 = null),
               (thenableIndexCounter$1 = 0),
@@ -11370,7 +11388,7 @@
           }
         while (1);
         lanes && root.shellSuspendCounter++;
-        lastContextDependency = currentlyRenderingFiber = null;
+        resetContextDependencies();
         executionContext = prevExecutionContext;
         ReactSharedInternals.H = prevDispatcher;
         ReactSharedInternals.A = prevAsyncDispatcher;
@@ -11485,7 +11503,7 @@
             handleThrow(root, thrownValue$160);
           }
         while (1);
-        lastContextDependency = currentlyRenderingFiber = null;
+        resetContextDependencies();
         ReactSharedInternals.H = prevDispatcher;
         ReactSharedInternals.A = prevAsyncDispatcher;
         executionContext = prevExecutionContext;
@@ -11549,7 +11567,7 @@
           : (workInProgress = next);
       }
       function throwAndUnwindWorkLoop(root, unitOfWork, thrownValue) {
-        lastContextDependency = currentlyRenderingFiber = null;
+        resetContextDependencies();
         resetHooksOnUnwind(unitOfWork);
         thenableState$1 = null;
         thenableIndexCounter$1 = 0;
@@ -15945,14 +15963,14 @@
       };
       var isomorphicReactPackageVersion$jscomp$inline_1676 = React.version;
       if (
-        "19.0.0-rc-66855b96-20241106" !==
+        "19.0.0-rc-7c8e5e7a-20241101" !==
         isomorphicReactPackageVersion$jscomp$inline_1676
       )
         throw Error(
           formatProdErrorMessage(
             527,
             isomorphicReactPackageVersion$jscomp$inline_1676,
-            "19.0.0-rc-66855b96-20241106"
+            "19.0.0-rc-7c8e5e7a-20241101"
           )
         );
       ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -15972,25 +15990,25 @@
           null === componentOrElement ? null : componentOrElement.stateNode;
         return componentOrElement;
       };
-      var internals$jscomp$inline_2152 = {
+      var internals$jscomp$inline_2148 = {
         bundleType: 0,
-        version: "19.0.0-rc-66855b96-20241106",
+        version: "19.0.0-rc-7c8e5e7a-20241101",
         rendererPackageName: "react-dom",
         currentDispatcherRef: ReactSharedInternals,
         findFiberByHostInstance: getClosestInstanceFromNode,
-        reconcilerVersion: "19.0.0-rc-66855b96-20241106",
+        reconcilerVersion: "19.0.0-rc-7c8e5e7a-20241101",
       };
       if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
-        var hook$jscomp$inline_2153 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
+        var hook$jscomp$inline_2149 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
         if (
-          !hook$jscomp$inline_2153.isDisabled &&
-          hook$jscomp$inline_2153.supportsFiber
+          !hook$jscomp$inline_2149.isDisabled &&
+          hook$jscomp$inline_2149.supportsFiber
         )
           try {
-            (rendererID = hook$jscomp$inline_2153.inject(
-              internals$jscomp$inline_2152
+            (rendererID = hook$jscomp$inline_2149.inject(
+              internals$jscomp$inline_2148
             )),
-              (injectedHook = hook$jscomp$inline_2153);
+              (injectedHook = hook$jscomp$inline_2149);
           } catch (err) {}
       }
       exports.createRoot = function (container, options) {
@@ -16086,7 +16104,7 @@
         listenToAllSupportedEvents(container);
         return new ReactDOMHydrationRoot(initialChildren);
       };
-      exports.version = "19.0.0-rc-66855b96-20241106";
+      exports.version = "19.0.0-rc-7c8e5e7a-20241101";
 
       /***/
     },
Diff for main-HASH.js

Diff too large to display

Diff for 10-experimen..ntime.dev.js
@@ -0,0 +1,2 @@
+"use strict";exports.id=10,exports.ids=[10],exports.modules={"./dist/client/dev/noop-turbopack-hmr.js":(module,exports1)=>{function connect(){}Object.defineProperty(exports1,"__esModule",{value:!0}),Object.defineProperty(exports1,"connect",{enumerable:!0,get:function(){return connect}}),("function"==typeof exports1.default||"object"==typeof exports1.default&&null!==exports1.default)&&void 0===exports1.default.__esModule&&(Object.defineProperty(exports1.default,"__esModule",{value:!0}),Object.assign(exports1.default,exports1),module.exports=exports1.default)}};
+//# sourceMappingURL=10-experimental.runtime.dev.js.map
\ No newline at end of file
Diff for 10.runtime.dev.js
@@ -0,0 +1,2 @@
+"use strict";exports.id=10,exports.ids=[10],exports.modules={"./dist/client/dev/noop-turbopack-hmr.js":(module,exports1)=>{function connect(){}Object.defineProperty(exports1,"__esModule",{value:!0}),Object.defineProperty(exports1,"connect",{enumerable:!0,get:function(){return connect}}),("function"==typeof exports1.default||"object"==typeof exports1.default&&null!==exports1.default)&&void 0===exports1.default.__esModule&&(Object.defineProperty(exports1.default,"__esModule",{value:!0}),Object.assign(exports1.default,exports1),module.exports=exports1.default)}};
+//# sourceMappingURL=10.runtime.dev.js.map
\ No newline at end of file
Diff for 196-experime..ntime.dev.js
deleted
Diff for 196.runtime.dev.js
deleted
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js

Diff too large to display

Diff for app-route-ex..ntime.dev.js

Diff too large to display

Diff for app-route-ex..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route.runtime.dev.js

Diff too large to display

Diff for app-route.ru..time.prod.js

Diff too large to display

Diff for pages-turbo...time.prod.js
@@ -22,7 +22,7 @@ Read more: https://nextjs.org/docs/messages/${r}`};function e1(e,t,r){let{destin
 `+i.join(" and ")+"\nSee more info here: https://nextjs.org/docs/messages/invalid-redirect-gssp")}async function e4(n,s,a,i,l,d){var u,c;let p,h,m,f;(0,b.C4)({req:n},"cookies",(u=n.headers,function(){let{cookie:e}=u;if(!e)return{};let{parse:t}=r("./dist/compiled/cookie/index.js");return t(Array.isArray(e)?e.join("; "):e)}));let g={};if(g.assetQueryString=l.dev&&l.assetQueryString||"",l.dev&&!g.assetQueryString){let e=(n.headers["user-agent"]||"").toLowerCase();e.includes("safari")&&!e.includes("chrome")&&(g.assetQueryString=`?ts=${Date.now()}`)}l.deploymentId&&(g.assetQueryString+=`${g.assetQueryString?"&":"?"}dpl=${l.deploymentId}`),i=Object.assign({},i);let{err:v,dev:x=!1,ampPath:w="",pageConfig:S={},buildManifest:R,reactLoadableManifest:E,ErrorDebug:T,getStaticProps:N,getStaticPaths:$,getServerSideProps:k,isNextDataRequest:M,params:D,previewProps:F,basePath:B,images:H,runtime:G,isExperimentalCompile:K,expireTime:ee}=l,{App:er}=d,ea=g.assetQueryString,ei=d.Document,el=l.Component,ed=!!i.__nextFallback,ep=i.__nextNotFoundSrcPage;!function(e){for(let t of eA)delete e[t]}(i);let eh=!!N,em=eh&&l.nextExport,ef=er.getInitialProps===er.origGetInitialProps,eg=!!(null==el?void 0:el.getInitialProps),ev=null==el?void 0:el.unstable_scriptLoader,ey=V(a),eb="/_error"===a&&el.getInitialProps===el.origGetInitialProps;l.nextExport&&eg&&!eb&&t(`Detected getInitialProps on page '${a}' while running export. It's recommended to use getStaticProps which has a more correct behavior for static exporting.
 Read more: https://nextjs.org/docs/messages/get-initial-props-export`);let ex=!eg&&ef&&!eh&&!k;if(ex&&!x&&K&&(s.setHeader("Cache-Control",function({revalidate:e,expireTime:t}){let r="number"==typeof e&&void 0!==t?e>=t?"":`stale-while-revalidate=${t-e}`:"stale-while-revalidate";return 0===e?"private, no-cache, no-store, max-age=0, must-revalidate":"number"==typeof e?`s-maxage=${e}, ${r}`:`s-maxage=${C.qF}, ${r}`}({revalidate:!1,expireTime:ee})),ex=!1),eg&&eh)throw Error(C.iS+` ${a}`);if(eg&&k)throw Error(C.bX+` ${a}`);if(k&&eh)throw Error(C.g0+` ${a}`);if(k&&"export"===l.nextConfigOutput)throw Error('getServerSideProps cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if($&&!ey)throw Error(`getStaticPaths is only allowed for dynamic SSG pages and was found on '${a}'.
 Read more: https://nextjs.org/docs/messages/non-dynamic-getstaticpaths-usage`);if($&&!eh)throw Error(`getStaticPaths was added without a getStaticProps in ${a}. Without getStaticProps, getStaticPaths does nothing`);if(eh&&ey&&!$)throw Error(`getStaticPaths is required for dynamic SSG pages and is missing for '${a}'.
-Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:D}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
+Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:i}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
 See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerender`);e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0}if((x||em)&&!g.isNotFound&&!O(a,"getStaticProps",e.props))throw Error("invariant: getStaticProps did not return valid props. Please report this.");if("revalidate"in e){if(e.revalidate&&"export"===l.nextConfigOutput)throw Error('ISR cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if("number"==typeof e.revalidate){if(Number.isInteger(e.revalidate)){if(e.revalidate<=0)throw Error(`A page's revalidate option can not be less than or equal to zero for ${n.url}. A revalidate option of zero means to revalidate after _every_ request, and implies stale data cannot be tolerated.
 
 To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
Diff for pages.runtime.dev.js

Diff too large to display

Diff for pages.runtime.prod.js
@@ -22,7 +22,7 @@ Read more: https://nextjs.org/docs/messages/${r}`};function e1(e,t,r){let{destin
 `+i.join(" and ")+"\nSee more info here: https://nextjs.org/docs/messages/invalid-redirect-gssp")}async function e4(n,s,a,i,l,d){var u,c;let p,h,m,f;(0,b.C4)({req:n},"cookies",(u=n.headers,function(){let{cookie:e}=u;if(!e)return{};let{parse:t}=r("./dist/compiled/cookie/index.js");return t(Array.isArray(e)?e.join("; "):e)}));let g={};if(g.assetQueryString=l.dev&&l.assetQueryString||"",l.dev&&!g.assetQueryString){let e=(n.headers["user-agent"]||"").toLowerCase();e.includes("safari")&&!e.includes("chrome")&&(g.assetQueryString=`?ts=${Date.now()}`)}l.deploymentId&&(g.assetQueryString+=`${g.assetQueryString?"&":"?"}dpl=${l.deploymentId}`),i=Object.assign({},i);let{err:v,dev:x=!1,ampPath:w="",pageConfig:S={},buildManifest:R,reactLoadableManifest:E,ErrorDebug:T,getStaticProps:N,getStaticPaths:$,getServerSideProps:k,isNextDataRequest:M,params:D,previewProps:F,basePath:B,images:H,runtime:G,isExperimentalCompile:K,expireTime:ee}=l,{App:er}=d,ea=g.assetQueryString,ei=d.Document,el=l.Component,ed=!!i.__nextFallback,ep=i.__nextNotFoundSrcPage;!function(e){for(let t of eA)delete e[t]}(i);let eh=!!N,em=eh&&l.nextExport,ef=er.getInitialProps===er.origGetInitialProps,eg=!!(null==el?void 0:el.getInitialProps),ev=null==el?void 0:el.unstable_scriptLoader,ey=V(a),eb="/_error"===a&&el.getInitialProps===el.origGetInitialProps;l.nextExport&&eg&&!eb&&t(`Detected getInitialProps on page '${a}' while running export. It's recommended to use getStaticProps which has a more correct behavior for static exporting.
 Read more: https://nextjs.org/docs/messages/get-initial-props-export`);let ex=!eg&&ef&&!eh&&!k;if(ex&&!x&&K&&(s.setHeader("Cache-Control",function({revalidate:e,expireTime:t}){let r="number"==typeof e&&void 0!==t?e>=t?"":`stale-while-revalidate=${t-e}`:"stale-while-revalidate";return 0===e?"private, no-cache, no-store, max-age=0, must-revalidate":"number"==typeof e?`s-maxage=${e}, ${r}`:`s-maxage=${C.qF}, ${r}`}({revalidate:!1,expireTime:ee})),ex=!1),eg&&eh)throw Error(C.iS+` ${a}`);if(eg&&k)throw Error(C.bX+` ${a}`);if(k&&eh)throw Error(C.g0+` ${a}`);if(k&&"export"===l.nextConfigOutput)throw Error('getServerSideProps cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if($&&!ey)throw Error(`getStaticPaths is only allowed for dynamic SSG pages and was found on '${a}'.
 Read more: https://nextjs.org/docs/messages/non-dynamic-getstaticpaths-usage`);if($&&!eh)throw Error(`getStaticPaths was added without a getStaticProps in ${a}. Without getStaticProps, getStaticPaths does nothing`);if(eh&&ey&&!$)throw Error(`getStaticPaths is required for dynamic SSG pages and is missing for '${a}'.
-Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:D}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
+Read more: https://nextjs.org/docs/messages/invalid-getstaticpaths-value`);let ew=l.resolvedAsPath||n.url;if(x){let{isValidElementType:e}=r("./dist/compiled/react-is/index.js");if(!e(el))throw Error(`The default export is not a React Component in page: "${a}"`);if(!e(er))throw Error('The default export is not a React Component in page: "/_app"');if(!e(ei))throw Error('The default export is not a React Component in page: "/_document"');if((ex||ed)&&(i={...i.amp?{amp:i.amp}:{}},ew=`${a}${n.url.endsWith("/")&&"/"!==a&&!ey?"/":""}`,n.url=a),"/404"===a&&(eg||k))throw Error(`\`pages/404\` ${C._I}`);if(j.includes(a)&&(eg||k))throw Error(`\`pages${a}\` ${C._I}`)}for(let e of["getStaticProps","getServerSideProps","getStaticPaths"])if(null==el?void 0:el[e])throw Error(`page ${a} ${e} ${C.Oh}`);await q.preloadAll(),(eh||k)&&!ed&&F&&(m=!1!==(p=e(n,s,F,!!l.multiZoneDraftMode)));let eS=new eY(a,i,ew,{isFallback:ed},!!(k||eg||!ef&&!eh||K),B,l.locale,l.locales,l.defaultLocale,l.domainLocales,m,et(n,"isLocaleDomain")),eP={back(){eS.back()},forward(){eS.forward()},refresh(){eS.reload()},hmrRefresh(){},push(e,t){let{scroll:r}=void 0===t?{}:t;eS.push(e,void 0,{scroll:r})},replace(e,t){let{scroll:r}=void 0===t?{}:t;eS.replace(e,void 0,{scroll:r})},prefetch(e){eS.prefetch(e)}},e_={},eC=(0,_.createStyleRegistry)(),eR={ampFirst:!0===S.amp,hasQuery:!!i.amp,hybrid:"hybrid"===S.amp},ej=function(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}(eR),eE=function(e){void 0===e&&(e=!1);let t=[(0,y.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,y.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}(ej),e$=[],eI={};ev&&(eI.beforeInteractive=[].concat(ev()).filter(e=>"beforeInteractive"===e.props.strategy).map(e=>e.props));let eM=({children:e})=>(0,y.jsx)(eU.Provider,{value:eP,children:(0,y.jsx)(eL.Provider,{value:eS.isReady&&eS.query?new URL(eS.asPath,"http://n").searchParams:new URLSearchParams,children:(0,y.jsx)(eq,{router:eS,isAutoExport:ex,children:(0,y.jsx)(ek.Provider,{value:function(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys(function(e){let{parameterizedRoute:t,groups:r}=function(e){let t=ec(e).slice(1).split("/"),r={},n=1;return{parameterizedRoute:t.map(e=>{let t=W.find(t=>e.startsWith(t)),o=e.match(eB);if(t&&o){let{key:e,optional:s,repeat:a}=eH(o[1]);return r[e]={pos:n++,repeat:a,optional:s},"/"+eF(t)+"([^/]+?)"}if(!o)return"/"+eF(e);{let{key:e,repeat:t,optional:s}=eH(o[1]);return r[e]={pos:n++,repeat:t,optional:s},t?s?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:r}}(e);return{re:RegExp("^"+t+"(?:/)?$"),groups:r}}(e.pathname).groups))t[r]=e.query[r];return t}(eS),children:(0,y.jsx)(U.Provider,{value:eS,children:(0,y.jsx)(A.Provider,{value:eR,children:(0,y.jsx)(L.Provider,{value:{updateHead:e=>{eE=e},updateScripts:e=>{e_=e},scripts:eI,mountedInstances:new Set},children:(0,y.jsx)(I.Provider,{value:e=>e$.push(e),children:(0,y.jsx)(_.StyleRegistry,{registry:eC,children:(0,y.jsx)(eN.Provider,{value:H,children:e})})})})})})})})})}),eD=()=>null,ez=({children:e})=>(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(eD,{}),(0,y.jsx)(eM,{children:(0,y.jsxs)(y.Fragment,{children:[x?(0,y.jsxs)(y.Fragment,{children:[e,(0,y.jsx)(eD,{})]}):e,(0,y.jsx)(eD,{})]})})]}),eW={err:v,req:ex?void 0:n,res:ex?void 0:s,pathname:a,query:i,asPath:ew,locale:l.locale,locales:l.locales,defaultLocale:l.defaultLocale,AppTree:e=>(0,y.jsx)(ez,{children:eK(er,el,{...e,router:eS})}),defaultGetInitialProps:async(e,t={})=>{let{html:r,head:n}=await e.renderPage({enhanceApp:e=>t=>(0,y.jsx)(e,{...t})}),o=eC.styles({nonce:t.nonce});return eC.flush(),{html:r,head:n,styles:o}}},eG=!eh&&(l.nextExport||x&&(ex||ed)),eV=()=>{let e=eC.styles();return eC.flush(),(0,y.jsx)(y.Fragment,{children:e})};if(h=await Q(er,{AppTree:eW.AppTree,Component:el,router:eS,ctx:eW}),(eh||k)&&m&&(h.__N_PREVIEW=!0),eh&&(h.__N_SSG=!0),eh&&!ed){let e,t;try{e=await (0,eo.getTracer)().trace(es.vr.getStaticProps,{spanName:`getStaticProps ${a}`,attributes:{"next.route":a}},()=>N({...ey?{params:i}:void 0,...m?{draftMode:!0,preview:!0,previewData:p}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale,revalidateReason:l.isOnDemandRevalidate?"on-demand":em?"build":"stale"}))}catch(e){throw e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(C.xV);let r=Object.keys(e).filter(e=>"revalidate"!==e&&"props"!==e&&"redirect"!==e&&"notFound"!==e);if(r.includes("unstable_revalidate"))throw Error(C.$1);if(r.length)throw Error(e0("getStaticProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');g.isNotFound=!0}if("redirect"in e&&e.redirect&&"object"==typeof e.redirect){if(e1(e.redirect,n,"getStaticProps"),em)throw Error(`\`redirect\` can not be returned from getStaticProps during prerendering (${n.url})
 See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerender`);e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0}if((x||em)&&!g.isNotFound&&!O(a,"getStaticProps",e.props))throw Error("invariant: getStaticProps did not return valid props. Please report this.");if("revalidate"in e){if(e.revalidate&&"export"===l.nextConfigOutput)throw Error('ISR cannot be used with "output: export". See more info here: https://nextjs.org/docs/advanced-features/static-html-export');if("number"==typeof e.revalidate){if(Number.isInteger(e.revalidate)){if(e.revalidate<=0)throw Error(`A page's revalidate option can not be less than or equal to zero for ${n.url}. A revalidate option of zero means to revalidate after _every_ request, and implies stale data cannot be tolerated.
 
 To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
Diff for server.runtime.prod.js
failed to diff
Commit: de567e9

@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from ad261c5 to 1e0f250 Compare October 16, 2024 02:41
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from 8bf3549 to b081b30 Compare October 16, 2024 02:42
@kdy1 kdy1 marked this pull request as ready for review October 16, 2024 02:57
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from 1e0f250 to 7ea1933 Compare October 17, 2024 07:13
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from ca358c9 to 6344233 Compare October 17, 2024 07:13
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from 7ea1933 to e0fe85d Compare October 17, 2024 10:31
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from 6344233 to a9d6ba4 Compare October 17, 2024 10:31
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from e0fe85d to 7572d65 Compare October 17, 2024 10:38
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from a9d6ba4 to 47e2c13 Compare October 17, 2024 10:38
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from 7572d65 to be0999e Compare October 17, 2024 11:09
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from 47e2c13 to ae1c61a Compare October 17, 2024 11:09
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from be0999e to e1ef7f2 Compare October 21, 2024 06:59
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from ae1c61a to 0d2d892 Compare October 21, 2024 07:00
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from e1ef7f2 to eec70a4 Compare October 21, 2024 07:16
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from 0d2d892 to 06f2d7e Compare October 21, 2024 07:16
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from eec70a4 to e6765a4 Compare October 21, 2024 08:16
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch 2 times, most recently from 3f107e6 to 8fc3a59 Compare October 21, 2024 08:45
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from ae04b47 to 7899a45 Compare October 31, 2024 01:54
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from b5b5e09 to ada176d Compare October 31, 2024 01:54
@ijjk ijjk added the Turbopack Related to Turbopack with Next.js. label Nov 1, 2024
@kdy1 kdy1 requested a review from sokra November 1, 2024 06:31
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from 7899a45 to 68791ef Compare November 1, 2024 08:17
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from b39ea67 to 22f7d42 Compare November 1, 2024 08:17
@kdy1 kdy1 marked this pull request as ready for review November 4, 2024 06:58
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from 68791ef to 6529e93 Compare November 4, 2024 08:29
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from 91953b9 to 86bc48a Compare November 4, 2024 08:30
@kdy1 kdy1 force-pushed the kdy1/ts-follow-exports branch from 6529e93 to c653cb7 Compare November 5, 2024 07:08
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from 86bc48a to d9ce409 Compare November 5, 2024 07:09
@kdy1 kdy1 force-pushed the kdy1/ts-skip-partial-eval branch from de18341 to de567e9 Compare November 7, 2024 06:05
@kdy1 kdy1 changed the base branch from kdy1/ts-follow-exports to canary November 7, 2024 06:05
@@ -2959,7 +2965,8 @@ impl ValueToString for ModulePart {
ModulePart::RenamedNamespace { export } => {
format!("export * as {}", export.await?).into()
}
ModulePart::Internal(id) => format!("internal part {}", id,).into(),
ModulePart::Internal(id) => format!("internal part {}", id).into(),
ModulePart::InternalEvaluation(id) => format!("internal part {}", id).into(),
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
ModulePart::InternalEvaluation(id) => format!("internal part {}", id).into(),
ModulePart::InternalEvaluation(id) => format!("eval internal part {}", id).into(),

@kdy1 kdy1 merged commit de17a9b into canary Nov 7, 2024
108 of 113 checks passed
Copy link
Member Author

kdy1 commented Nov 7, 2024

Merge activity

  • Nov 7, 4:19 PM GMT+9: A user merged this pull request with Graphite.

@kdy1 kdy1 deleted the kdy1/ts-skip-partial-eval branch November 7, 2024 07:19
@github-actions github-actions bot added the locked label Dec 3, 2024
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 3, 2024
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
CI Bypass Graphite Optimization Ignore Graphite CI optimizations, run the full CI suite. https://graphite.dev/docs/stacking-and-ci created-by: Turbopack team PRs by the Turbopack team. locked tests Turbopack Related to Turbopack with Next.js. type: next
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants