Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[middleware] add tests for body reading methods #41509

Closed
wants to merge 243 commits into from

Conversation

Kikobeats
Copy link
Member

superseed of #37980

@ijjk
Copy link
Member

ijjk commented Oct 18, 2022

Failing test suites

Commit: b83e7fa

pnpm testheadless test/e2e/edge-can-read-request-body/index.test.ts

  • Edge can read request body > middleware > reads a JSON body
  • Edge can read request body > middleware > reads a text body
  • Edge can read request body > middleware > reads an URL encoded form data
  • Edge can read request body > middleware > reads a multipart form data
Expand output

● Edge can read request body › middleware › reads a JSON body

TypeError: fetch failed

  at Object.processResponse (../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:7978:27)
  at ../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:8308:42

● Edge can read request body › middleware › reads a text body

TypeError: fetch failed

  at Object.processResponse (../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:7978:27)
  at ../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:8308:42

● Edge can read request body › middleware › reads an URL encoded form data

TypeError: fetch failed

  at Object.processResponse (../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:7978:27)
  at ../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:8308:42

● Edge can read request body › middleware › reads a multipart form data

TypeError: fetch failed

  at Object.processResponse (../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:7978:27)
  at ../node_modules/.pnpm/@edge-runtime+primitives@1.1.0-beta.36/node_modules/@edge-runtime/primitives/dist/fetch.js:8308:42

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

pnpm testheadless test/integration/dynamic-routing/test/middleware.test.js

  • Dynamic Routing > dev mode > should render dynamic route with query
Expand output

● Dynamic Routing › dev mode › should render dynamic route with query

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

Expected: "?fromHome=true"
Received: ""

  428 |     await waitFor(1000)
  429 |     const url = await browser.eval('window.location.search')
> 430 |     expect(url).toBe('?fromHome=true')
      |                 ^
  431 |   })
  432 |
  433 |   if (dev) {

  at Object.<anonymous> (integration/dynamic-routing/test/index.test.js:430:17)

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

@ijjk
Copy link
Member

ijjk commented Oct 18, 2022

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
buildDuration 47.1s 45.8s -1.3s
buildDurationCached 10.5s 10.7s ⚠️ +173ms
nodeModulesSize 105 MB 105 MB
nextStartRea..uration (ms) 348ms 324ms -24ms
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
328.HASH.js gzip 179 B 185 B ⚠️ +6 B
869-HASH.js gzip 11.8 kB 11.8 kB ⚠️ +2 B
app-internal..HASH.js gzip 182 B 182 B
main-app-HASH.js gzip 99 kB 99 kB ⚠️ +14 B
main-HASH.js gzip 76.8 kB 76.8 kB -1 B
webpack-HASH.js gzip 1.83 kB 1.83 kB ⚠️ +3 B
Overall change 190 kB 190 kB ⚠️ +24 B
Legacy Client Bundles (polyfills)
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall decrease ✓
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
_app-HASH.js gzip 191 B 192 B ⚠️ +1 B
_error-HASH.js gzip 179 B 176 B -3 B
amp-HASH.js gzip 482 B 484 B ⚠️ +2 B
css-HASH.js gzip 800 B 802 B ⚠️ +2 B
dynamic-HASH.js gzip 2.3 kB 2.3 kB -1 B
edge-ssr-HASH.js gzip 256 B 259 B ⚠️ +3 B
head-HASH.js gzip 828 B 826 B -2 B
hooks-HASH.js gzip 849 B 849 B
image-HASH.js gzip 3.98 kB 3.98 kB -1 B
index-HASH.js gzip 252 B 254 B ⚠️ +2 B
link-HASH.js gzip 2.73 kB 2.73 kB ⚠️ +3 B
routerDirect..HASH.js gzip 782 B 778 B -4 B
script-HASH.js gzip 859 B 856 B -3 B
withRouter-HASH.js gzip 781 B 780 B -1 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 15.4 kB 15.4 kB -2 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
_buildManifest.js gzip 480 B 483 B ⚠️ +3 B
Overall change 480 B 483 B ⚠️ +3 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
index.html gzip 490 B 490 B
link.html gzip 504 B 505 B ⚠️ +1 B
withRouter.html gzip 484 B 484 B
Overall change 1.48 kB 1.48 kB ⚠️ +1 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
edge-ssr.js gzip 61.4 kB 61.4 kB ⚠️ +20 B
page.js gzip 95.6 kB 95.6 kB ⚠️ +6 B
Overall change 157 kB 157 kB ⚠️ +26 B
Middleware size Overall increase ⚠️
vercel/next.js canary Kikobeats/next.js add-tests-for-body-reading Change
middleware-b..fest.js gzip 565 B 569 B ⚠️ +4 B
middleware-r..fest.js gzip 143 B 145 B ⚠️ +2 B
middleware.js gzip 25.4 kB 25.4 kB ⚠️ +1 B
edge-runtime..pack.js gzip 2.21 kB 2.21 kB
Overall change 28.4 kB 28.4 kB ⚠️ +7 B

Diffs

Diff for page.js

Diff too large to display

Diff for middleware-b..-manifest.js
@@ -7,80 +7,80 @@ self.__BUILD_MANIFEST = {
     "static/BUILD_ID/_ssgManifest.js"
   ],
   rootMainFiles: [
-    "static/chunks/webpack-70412d1012167e08.js",
-    "static/chunks/main-app-113c2f622b715750.js"
+    "static/chunks/webpack-ad606fc5a3821f5e.js",
+    "static/chunks/main-app-ee665023596b1c59.js"
   ],
   pages: {
     "/": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/index-7ccd1b1930c4d505.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/index-d039610ac387a1a2.js"
     ],
     "/_app": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/_app-b1aa9bc9bb533b76.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/_app-3c08c46a4f81c30f.js"
     ],
     "/_error": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/_error-77faf523f7dc719f.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/_error-b39849bd87f6201c.js"
     ],
     "/amp": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/amp-f6d913b1595b4bda.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/amp-9395ec0994a9d6eb.js"
     ],
     "/css": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
       "static/css/94fdbc56eafa2039.css",
-      "static/chunks/pages/css-352d0237482bebda.js"
+      "static/chunks/pages/css-3a075db0736f05e7.js"
     ],
     "/dynamic": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/dynamic-b739be0a49287306.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/dynamic-90075b4c21021b3e.js"
     ],
     "/edge-ssr": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/edge-ssr-51ea5deb6c2a65b3.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/edge-ssr-3261abe9cc912fa4.js"
     ],
     "/head": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/head-61934f59d0339a54.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/head-9b6b3b9d22946395.js"
     ],
     "/hooks": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/hooks-9e047c8dbc4ce238.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/hooks-b64051b6ffd303d7.js"
     ],
     "/image": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/image-32c502a02b84af1c.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/image-0b8da099f740d47e.js"
     ],
     "/link": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/link-5fa8d1451f7b64eb.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/link-fbc73d8c60483d1f.js"
     ],
     "/routerDirect": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/routerDirect-46e61e002d5fd6ae.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/routerDirect-1e5f0e87b060242d.js"
     ],
     "/script": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/script-79a818b59c0dd2a9.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/script-0cd1c9f84d9592a8.js"
     ],
     "/withRouter": [
-      "static/chunks/webpack-70412d1012167e08.js",
-      "static/chunks/main-7d4f98f8e596f93a.js",
-      "static/chunks/pages/withRouter-1bdb810c596673f9.js"
+      "static/chunks/webpack-ad606fc5a3821f5e.js",
+      "static/chunks/main-b5aa9ec268610c20.js",
+      "static/chunks/pages/withRouter-2a904d5d78caadaf.js"
     ]
   },
   ampFirstPages: []
Diff for middleware-r..-manifest.js
@@ -1,6 +1,6 @@
 self.__REACT_LOADABLE_MANIFEST = {
   "dynamic.js -> ../components/hello": {
-    id: 328,
-    files: ["static/chunks/328.93264405bfc4d5a0.js"]
+    id: 3258,
+    files: ["static/chunks/258.52c48025b4679c71.js"]
   }
 };
Diff for middleware.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [826],
   {
-    /***/ 8086: /***/ (
+    /***/ 7462: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -14,7 +14,7 @@
       __webpack_require__.d(__webpack_exports__, {
         default: () =>
           /* binding */ next_middleware_loaderabsolutePagePath_private_next_root_dir_2Fmiddleware_js_page_2Fmiddleware_rootDir_2Ftmp_2Fnext_stats_2Fstats_app_matchers_
-      }); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/error.js
+      }); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/error.js
 
       class PageSignatureError extends Error {
         constructor({ page }) {
@@ -41,7 +41,7 @@
   Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent
   `);
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/utils.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/utils.js
 
       //# sourceMappingURL=error.js.map
       function fromNodeHeaders(object) {
@@ -155,7 +155,7 @@
             }
           );
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js
 
       //# sourceMappingURL=utils.js.map
       const responseSymbol = Symbol("response");
@@ -201,7 +201,7 @@
             page: this.sourcePage
           });
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js
 
       //# sourceMappingURL=fetch-event.js.map
       function detectDomainLocale(domainItems, hostname, detectedLocale) {
@@ -230,7 +230,7 @@
           }
         }
         return domainItem;
-      } //# sourceMappingURL=detect-domain-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js
+      } //# sourceMappingURL=detect-domain-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js
 
       /**
        * Removes the trailing slash for a given route or page path. Preserves the
@@ -240,7 +240,7 @@
        *   - `/` -> `/`
        */ function removeTrailingSlash(route) {
         return route.replace(/\/$/, "") || "/";
-      } //# sourceMappingURL=remove-trailing-slash.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js
+      } //# sourceMappingURL=remove-trailing-slash.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js
 
       /**
        * Given a path this function will find the pathname, query and hash and return
@@ -268,7 +268,7 @@
           query: "",
           hash: ""
         };
-      } //# sourceMappingURL=parse-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js
+      } //# sourceMappingURL=parse-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js
 
       /**
        * Adds the provided prefix to the given path. It first ensures that the path
@@ -279,7 +279,7 @@
         }
         const { pathname, query, hash } = parsePath(path);
         return `${prefix}${pathname}${query}${hash}`;
-      } //# sourceMappingURL=add-path-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js
+      } //# sourceMappingURL=add-path-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js
 
       /**
        * Similarly to `addPathPrefix`, this function adds a suffix at the end on the
@@ -291,7 +291,7 @@
         }
         const { pathname, query, hash } = parsePath(path);
         return `${pathname}${suffix}${query}${hash}`;
-      } //# sourceMappingURL=add-path-suffix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js
+      } //# sourceMappingURL=add-path-suffix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js
 
       /**
        * Checks if a given path starts with a given prefix. It ensures it matches
@@ -305,7 +305,7 @@
         }
         const { pathname } = parsePath(path);
         return pathname === prefix || pathname.startsWith(prefix + "/");
-      } //# sourceMappingURL=path-has-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js
+      } //# sourceMappingURL=path-has-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js
 
       /**
        * For a given path and a locale, if the locale is given, it will prefix the
@@ -322,7 +322,7 @@
           return addPathPrefix(path, `/${locale}`);
         }
         return path;
-      } //# sourceMappingURL=add-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js
+      } //# sourceMappingURL=add-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js
 
       function formatNextPathnameInfo(info) {
         let pathname = addLocale(
@@ -346,7 +346,7 @@
             ? addPathSuffix(pathname, "/")
             : pathname
           : removeTrailingSlash(pathname);
-      } //# sourceMappingURL=format-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/get-hostname.js
+      } //# sourceMappingURL=format-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/get-hostname.js
 
       /**
        * Takes an object with a hostname property (like a parsed URL) and some
@@ -361,7 +361,7 @@
           parsed.hostname) == null
           ? void 0
           : ref.split(":")[0].toLowerCase();
-      } //# sourceMappingURL=get-hostname.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js
+      } //# sourceMappingURL=get-hostname.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js
 
       /**
        * For a pathname that may include a locale from a list of locales, it
@@ -391,7 +391,7 @@
           pathname,
           detectedLocale
         };
-      } //# sourceMappingURL=normalize-locale-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js
+      } //# sourceMappingURL=normalize-locale-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js
 
       /**
        * Given a path and a prefix it will remove the prefix when it exists in the
@@ -407,7 +407,7 @@
             : `/${withoutPrefix}`;
         }
         return path;
-      } //# sourceMappingURL=remove-path-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js
+      } //# sourceMappingURL=remove-path-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js
 
       function getNextPathnameInfo(pathname, options) {
         var _nextConfig;
@@ -444,7 +444,7 @@
             info.pathname;
         }
         return info;
-      } //# sourceMappingURL=get-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/next-url.js
+      } //# sourceMappingURL=get-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/next-url.js
 
       const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|::1|localhost)/;
       function parseURL(url, base) {
@@ -656,9 +656,9 @@
       }
 
       //# sourceMappingURL=next-url.js.map
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/compiled/cookie/index.js
-      var cookie = __webpack_require__(1948);
-      var cookie_default = /*#__PURE__*/ __webpack_require__.n(cookie); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/cookies.js
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/compiled/cookie/index.js
+      var cookie = __webpack_require__(965);
+      var cookie_default = /*#__PURE__*/ __webpack_require__.n(cookie); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/cookies.js
       const normalizeCookieOptions = options => {
         options = Object.assign({}, options);
         if (options.maxAge) {
@@ -777,7 +777,7 @@
             this.response.headers.set("set-cookie", expiredCookies);
           return super.clear();
         };
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/request.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/request.js
 
       //# sourceMappingURL=cookies.js.map
       const INTERNALS = Symbol("internal request");
@@ -851,7 +851,7 @@
         get url() {
           return this[INTERNALS].url.toString();
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/response.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/spec-extension/response.js
 
       //# sourceMappingURL=request.js.map
       const response_INTERNALS = Symbol("internal response");
@@ -951,7 +951,7 @@
             headers
           });
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js
 
       //# sourceMappingURL=response.js.map
       /**
@@ -965,7 +965,7 @@
         return `${relative.protocol}//${relative.host}` === origin
           ? relative.toString().replace(origin, "")
           : relative.toString();
-      } //# sourceMappingURL=relativize-url.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/internal-utils.js
+      } //# sourceMappingURL=relativize-url.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/internal-utils.js
 
       const INTERNAL_QUERY_NAMES = [
         "__nextFallback",
@@ -994,7 +994,7 @@
           }
         }
         return searchParams;
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js
 
       //# sourceMappingURL=internal-utils.js.map
       // remove (name) from pathname as it's not considered for routing
@@ -1018,7 +1018,7 @@
       }
       function normalizeRscPath(pathname, enabled) {
         return enabled ? pathname.replace(/\.rsc($|\?)/, "") : pathname;
-      } //# sourceMappingURL=app-paths.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/adapter.js
+      } //# sourceMappingURL=app-paths.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/esm/server/web/adapter.js
 
       class NextRequestHint extends NextRequest {
         constructor(params) {
@@ -1240,12 +1240,12 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           enumerable: false,
           configurable: false
         });
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js?absolutePagePath=private-next-root-dir%2Fmiddleware.js&page=%2Fmiddleware&rootDir=%2Ftmp%2Fnext-stats%2Fstats-app&matchers=!
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_bah4pvzs5m2jsombgoz6nngonm/node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js?absolutePagePath=private-next-root-dir%2Fmiddleware.js&page=%2Fmiddleware&rootDir=%2Ftmp%2Fnext-stats%2Fstats-app&matchers=!
 
       //# sourceMappingURL=adapter.js.map
       enhanceGlobals();
 
-      var mod = __webpack_require__(8452);
+      var mod = __webpack_require__(5941);
       var handler = mod.middleware || mod.default;
 
       if (typeof handler !== "function") {
@@ -1269,7 +1269,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 8452: /***/ (
+    /***/ 5941: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -1281,7 +1281,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         /* harmony export */
       });
       /* harmony import */ var next_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        8646
+        253
       );
       /* harmony import */ var next_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(
         next_server__WEBPACK_IMPORTED_MODULE_0__
@@ -1294,7 +1294,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 6520: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6961: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1314,7 +1314,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 891: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1137: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1352,7 +1352,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 6568: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3750: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1384,7 +1384,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 4601: /***/ (
+    /***/ 500: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1395,8 +1395,8 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.addLocale = addLocale;
-      var _addPathPrefix = __webpack_require__(6325);
-      var _pathHasPrefix = __webpack_require__(2180);
+      var _addPathPrefix = __webpack_require__(209);
+      var _pathHasPrefix = __webpack_require__(5249);
       function addLocale(path, locale, defaultLocale, ignorePrefix) {
         if (
           locale &&
@@ -1416,7 +1416,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 6325: /***/ (
+    /***/ 209: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1427,7 +1427,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.addPathPrefix = addPathPrefix;
-      var _parsePath = __webpack_require__(3444);
+      var _parsePath = __webpack_require__(7990);
       function addPathPrefix(path, prefix) {
         if (!path.startsWith("/") || !prefix) {
           return path;
@@ -1439,7 +1439,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7864: /***/ (
+    /***/ 3218: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1450,7 +1450,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.addPathSuffix = addPathSuffix;
-      var _parsePath = __webpack_require__(3444);
+      var _parsePath = __webpack_require__(7990);
       function addPathSuffix(path, suffix) {
         if (!path.startsWith("/") || !suffix) {
           return path;
@@ -1462,7 +1462,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3270: /***/ (
+    /***/ 3621: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1473,10 +1473,10 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.formatNextPathnameInfo = formatNextPathnameInfo;
-      var _removeTrailingSlash = __webpack_require__(4335);
-      var _addPathPrefix = __webpack_require__(6325);
-      var _addPathSuffix = __webpack_require__(7864);
-      var _addLocale = __webpack_require__(4601);
+      var _removeTrailingSlash = __webpack_require__(1127);
+      var _addPathPrefix = __webpack_require__(209);
+      var _addPathSuffix = __webpack_require__(3218);
+      var _addLocale = __webpack_require__(500);
       function formatNextPathnameInfo(info) {
         let pathname = (0, _addLocale).addLocale(
           info.pathname,
@@ -1507,20 +1507,16 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 9635: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
+    /***/ 26: /***/ (__unused_webpack_module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true
       });
       exports.getNextPathnameInfo = getNextPathnameInfo;
-      var _normalizeLocalePath = __webpack_require__(6568);
-      var _removePathPrefix = __webpack_require__(1068);
-      var _pathHasPrefix = __webpack_require__(2180);
+      var _normalizeLocalePath = __webpack_require__(3750);
+      var _removePathPrefix = __webpack_require__(5084);
+      var _pathHasPrefix = __webpack_require__(5249);
       function getNextPathnameInfo(pathname, options) {
         var _nextConfig;
         const { basePath, i18n, trailingSlash } =
@@ -1570,7 +1566,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3444: /***/ (__unused_webpack_module, exports) => {
+    /***/ 7990: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1604,7 +1600,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 2180: /***/ (
+    /***/ 5249: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1615,7 +1611,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.pathHasPrefix = pathHasPrefix;
-      var _parsePath = __webpack_require__(3444);
+      var _parsePath = __webpack_require__(7990);
       function pathHasPrefix(path, prefix) {
         if (typeof path !== "string") {
           return false;
@@ -1627,7 +1623,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 1068: /***/ (
+    /***/ 5084: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1638,7 +1634,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.removePathPrefix = removePathPrefix;
-      var _pathHasPrefix = __webpack_require__(2180);
+      var _pathHasPrefix = __webpack_require__(5249);
       function removePathPrefix(path, prefix) {
         if ((0, _pathHasPrefix).pathHasPrefix(path, prefix)) {
           const withoutPrefix = path.slice(prefix.length);
@@ -1652,7 +1648,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 4335: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1127: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1666,7 +1662,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 1948: /***/ module => {
+    /***/ 965: /***/ module => {
       var __dirname = "/";
       (() => {
         "use strict";
@@ -1794,7 +1790,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3980: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4803: /***/ (module, exports, __webpack_require__) => {
       var __dirname = "/";
       var __WEBPACK_AMD_DEFINE_RESULT__;
       (() => {
@@ -2636,7 +2632,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3975: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6140: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -2677,7 +2673,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 130: /***/ (
+    /***/ 7329: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -2687,10 +2683,10 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       Object.defineProperty(exports, "__esModule", {
         value: true
       });
-      var _detectDomainLocale = __webpack_require__(891);
-      var _formatNextPathnameInfo = __webpack_require__(3270);
-      var _getHostname = __webpack_require__(6520);
-      var _getNextPathnameInfo = __webpack_require__(9635);
+      var _detectDomainLocale = __webpack_require__(1137);
+      var _formatNextPathnameInfo = __webpack_require__(3621);
+      var _getHostname = __webpack_require__(6961);
+      var _getNextPathnameInfo = __webpack_require__(26);
       const REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\/\/)(127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|::1|localhost)/;
       function parseURL(url, base) {
         return new URL(
@@ -2910,7 +2906,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3265: /***/ (
+    /***/ 1552: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -2920,7 +2916,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       Object.defineProperty(exports, "__esModule", {
         value: true
       });
-      var _cookie = _interopRequireDefault(__webpack_require__(1948));
+      var _cookie = _interopRequireDefault(__webpack_require__(965));
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -3055,7 +3051,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3371: /***/ (
+    /***/ 6751: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3067,10 +3063,10 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       };
       __webpack_unused_export__ = void 0;
-      var _nextUrl = __webpack_require__(130);
-      var _utils = __webpack_require__(1657);
-      var _error = __webpack_require__(3975);
-      var _cookies = __webpack_require__(3265);
+      var _nextUrl = __webpack_require__(7329);
+      var _utils = __webpack_require__(4867);
+      var _error = __webpack_require__(6140);
+      var _cookies = __webpack_require__(1552);
       const INTERNALS = Symbol("internal request");
       __webpack_unused_export__ = INTERNALS;
       class NextRequest extends Request {
@@ -3151,7 +3147,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 9062: /***/ (
+    /***/ 1244: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3162,9 +3158,9 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       __webpack_unused_export__ = {
         value: true
       };
-      var _nextUrl = __webpack_require__(130);
-      var _utils = __webpack_require__(1657);
-      var _cookies = __webpack_require__(3265);
+      var _nextUrl = __webpack_require__(7329);
+      var _utils = __webpack_require__(4867);
+      var _cookies = __webpack_require__(1552);
       const INTERNALS = Symbol("internal response");
       const REDIRECTS = new Set([301, 302, 303, 307, 308]);
       function handleMiddlewareField(init, headers) {
@@ -3273,7 +3269,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 1264: /***/ (
+    /***/ 4112: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3287,7 +3283,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       __webpack_unused_export__ = isBot;
       exports.Nf = userAgentFromString;
       exports.WE = userAgent;
-      var _uaParserJs = _interopRequireDefault(__webpack_require__(3980));
+      var _uaParserJs = _interopRequireDefault(__webpack_require__(4803));
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -3315,7 +3311,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 1657: /***/ (__unused_webpack_module, exports) => {
+    /***/ 4867: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -3430,14 +3426,14 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 8646: /***/ (module, exports, __webpack_require__) => {
+    /***/ 253: /***/ (module, exports, __webpack_require__) => {
       const serverExports = {
-        NextRequest: __webpack_require__(3371) /* .NextRequest */.Im,
-        NextResponse: __webpack_require__(9062) /* .NextResponse */.x,
+        NextRequest: __webpack_require__(6751) /* .NextRequest */.Im,
+        NextResponse: __webpack_require__(1244) /* .NextResponse */.x,
         userAgentFromString: __webpack_require__(
-          1264
+          4112
         ) /* .userAgentFromString */.Nf,
-        userAgent: __webpack_require__(1264) /* .userAgent */.WE
+        userAgent: __webpack_require__(4112) /* .userAgent */.WE
       };
 
       if (typeof URLPattern !== "undefined") {
@@ -3463,7 +3459,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = moduleId =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ var __webpack_exports__ = __webpack_exec__(8086);
+    /******/ var __webpack_exports__ = __webpack_exec__(7462);
     /******/ (_ENTRIES =
       typeof _ENTRIES === "undefined"
         ? {}
Diff for edge-ssr.js

Diff too large to display

Diff for _buildManifest.js
@@ -1,28 +1,28 @@
 self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
-  "/": ["static\u002Fchunks\u002Fpages\u002Findex-7ccd1b1930c4d505.js"],
-  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-77faf523f7dc719f.js"],
-  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-f6d913b1595b4bda.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-d039610ac387a1a2.js"],
+  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-b39849bd87f6201c.js"],
+  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-9395ec0994a9d6eb.js"],
   "/css": [
     "static\u002Fcss\u002F94fdbc56eafa2039.css",
-    "static\u002Fchunks\u002Fpages\u002Fcss-352d0237482bebda.js"
+    "static\u002Fchunks\u002Fpages\u002Fcss-3a075db0736f05e7.js"
   ],
   "/dynamic": [
-    "static\u002Fchunks\u002Fpages\u002Fdynamic-b739be0a49287306.js"
+    "static\u002Fchunks\u002Fpages\u002Fdynamic-90075b4c21021b3e.js"
   ],
   "/edge-ssr": [
-    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-51ea5deb6c2a65b3.js"
+    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-3261abe9cc912fa4.js"
   ],
-  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-61934f59d0339a54.js"],
-  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-9e047c8dbc4ce238.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-32c502a02b84af1c.js"],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-5fa8d1451f7b64eb.js"],
+  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-9b6b3b9d22946395.js"],
+  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-b64051b6ffd303d7.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-0b8da099f740d47e.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-fbc73d8c60483d1f.js"],
   "/routerDirect": [
-    "static\u002Fchunks\u002Fpages\u002FrouterDirect-46e61e002d5fd6ae.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-1e5f0e87b060242d.js"
   ],
-  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-79a818b59c0dd2a9.js"],
+  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-0cd1c9f84d9592a8.js"],
   "/withRouter": [
-    "static\u002Fchunks\u002Fpages\u002FwithRouter-1bdb810c596673f9.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-2a904d5d78caadaf.js"
   ],
   sortedPages: [
     "\u002F",
Diff for _app-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [888],
   {
-    /***/ 8351: /***/ function(
+    /***/ 7006: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_app",
         function() {
-          return __webpack_require__(9836);
+          return __webpack_require__(2728);
         }
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [179], function() {
-      return __webpack_exec__(8351), __webpack_exec__(975);
+      return __webpack_exec__(7006), __webpack_exec__(7523);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for _error-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [820],
   {
-    /***/ 9548: /***/ function(
+    /***/ 3020: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_error",
         function() {
-          return __webpack_require__(9586);
+          return __webpack_require__(28);
         }
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(9548);
+      return __webpack_exec__(3020);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for amp-HASH.js
@@ -1,17 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [216],
   {
-    /***/ 3485: /***/ function(
+    /***/ 7481: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(4061);
+      module.exports = __webpack_require__(6286);
 
       /***/
     },
 
-    /***/ 6530: /***/ function(
+    /***/ 2880: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -19,7 +19,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/amp",
         function() {
-          return __webpack_require__(1790);
+          return __webpack_require__(2331);
         }
       ]);
       if (false) {
@@ -28,7 +28,7 @@
       /***/
     },
 
-    /***/ 4061: /***/ function(module, exports, __webpack_require__) {
+    /***/ 6286: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -37,9 +37,9 @@
       exports.useAmp = useAmp;
       var _interop_require_default = __webpack_require__(7022) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(9453));
-      var _ampContext = __webpack_require__(4075);
-      var _ampMode = __webpack_require__(3298);
+      var _react = _interop_require_default(__webpack_require__(1058));
+      var _ampContext = __webpack_require__(3494);
+      var _ampMode = __webpack_require__(1422);
       function useAmp() {
         // Don't assign the context value to a variable to save bytes
         return (0, _ampMode).isInAmpMode(
@@ -61,7 +61,7 @@
       /***/
     },
 
-    /***/ 1790: /***/ function(
+    /***/ 2331: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -78,7 +78,7 @@
         /* harmony export */
       });
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        3485
+        7481
       );
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(
         next_amp__WEBPACK_IMPORTED_MODULE_0__
@@ -102,7 +102,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(6530);
+      return __webpack_exec__(2880);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [706],
   {
-    /***/ 631: /***/ function(
+    /***/ 1737: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function() {
-          return __webpack_require__(51);
+          return __webpack_require__(7649);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 51: /***/ function(
+    /***/ 7649: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,10 +26,10 @@
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        690
+        1761
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        3636
+        2551
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -49,14 +49,14 @@
       /***/
     },
 
-    /***/ 3636: /***/ function(module) {
+    /***/ 2551: /***/ function(module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__qqNwY" };
 
       /***/
     },
 
-    /***/ 3561: /***/ function(
+    /***/ 6052: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -71,7 +71,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      var f = __webpack_require__(9453),
+      var f = __webpack_require__(1058),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -106,7 +106,7 @@
       /***/
     },
 
-    /***/ 690: /***/ function(
+    /***/ 1761: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -114,7 +114,7 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(3561);
+        module.exports = __webpack_require__(6052);
       } else {
       }
 
@@ -127,7 +127,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(631);
+      return __webpack_exec__(1737);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [739],
   {
-    /***/ 8963: /***/ function(
+    /***/ 9051: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function() {
-          return __webpack_require__(9318);
+          return __webpack_require__(1698);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2024: /***/ function(module, exports, __webpack_require__) {
+    /***/ 14: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -29,8 +29,8 @@
       var _extends = __webpack_require__(5506) /* ["default"] */.Z;
       var _interop_require_default = __webpack_require__(7022) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(9453));
-      var _loadable = _interop_require_default(__webpack_require__(2990));
+      var _react = _interop_require_default(__webpack_require__(1058));
+      var _loadable = _interop_require_default(__webpack_require__(1038));
       function dynamic(dynamicOptions, options) {
         let loadableFn = _loadable.default;
         let loadableOptions = (options == null
@@ -128,7 +128,7 @@
       /***/
     },
 
-    /***/ 135: /***/ function(
+    /***/ 5401: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -141,7 +141,7 @@
       exports.LoadableContext = void 0;
       var _interop_require_default = __webpack_require__(7022) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(9453));
+      var _react = _interop_require_default(__webpack_require__(1058));
       const LoadableContext = _react.default.createContext(null);
       exports.LoadableContext = LoadableContext;
       if (false) {
@@ -150,7 +150,7 @@
       /***/
     },
 
-    /***/ 2990: /***/ function(
+    /***/ 1038: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -164,9 +164,9 @@
       var _extends = __webpack_require__(5506) /* ["default"] */.Z;
       var _interop_require_default = __webpack_require__(7022) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(9453));
-      var _loadableContext = __webpack_require__(135);
-      const { useSyncExternalStore } = true ? __webpack_require__(9453) : 0;
+      var _react = _interop_require_default(__webpack_require__(1058));
+      var _loadableContext = __webpack_require__(5401);
+      const { useSyncExternalStore } = true ? __webpack_require__(1058) : 0;
       const ALL_INITIALIZERS = [];
       const READY_INITIALIZERS = [];
       let initialized = false;
@@ -416,7 +416,7 @@
       /***/
     },
 
-    /***/ 9318: /***/ function(
+    /***/ 1698: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -430,10 +430,10 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        690
+        1761
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        6706
+        9477
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -442,11 +442,11 @@
       const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         () =>
           __webpack_require__
-            .e(/* import() */ 328)
-            .then(__webpack_require__.bind(__webpack_require__, 328)),
+            .e(/* import() */ 258)
+            .then(__webpack_require__.bind(__webpack_require__, 3258)),
         {
           loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 328]
+            webpack: () => [/*require.resolve*/ 3258]
           }
         }
       );
@@ -473,7 +473,7 @@
       /***/
     },
 
-    /***/ 3561: /***/ function(
+    /***/ 6052: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -488,7 +488,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      var f = __webpack_require__(9453),
+      var f = __webpack_require__(1058),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -523,7 +523,7 @@
       /***/
     },
 
-    /***/ 690: /***/ function(
+    /***/ 1761: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -531,19 +531,19 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(3561);
+        module.exports = __webpack_require__(6052);
       } else {
       }
 
       /***/
     },
 
-    /***/ 6706: /***/ function(
+    /***/ 9477: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(2024);
+      module.exports = __webpack_require__(14);
 
       /***/
     }
@@ -554,7 +554,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(8963);
+      return __webpack_exec__(9051);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [800],
   {
-    /***/ 529: /***/ function(
+    /***/ 3839: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/edge-ssr",
         function() {
-          return __webpack_require__(258);
+          return __webpack_require__(6726);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 258: /***/ function(
+    /***/ 6726: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -50,7 +50,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(529);
+      return __webpack_exec__(3839);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [645],
   {
-    /***/ 8780: /***/ function(
+    /***/ 2116: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/head",
         function() {
-          return __webpack_require__(5835);
+          return __webpack_require__(8231);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5835: /***/ function(
+    /***/ 8231: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -32,10 +32,10 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        690
+        1761
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8722
+        8631
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -69,7 +69,7 @@
       /***/
     },
 
-    /***/ 3561: /***/ function(
+    /***/ 6052: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -84,7 +84,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      var f = __webpack_require__(9453),
+      var f = __webpack_require__(1058),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -119,7 +119,7 @@
       /***/
     },
 
-    /***/ 690: /***/ function(
+    /***/ 1761: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -127,19 +127,19 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(3561);
+        module.exports = __webpack_require__(6052);
       } else {
       }
 
       /***/
     },
 
-    /***/ 8722: /***/ function(
+    /***/ 8631: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(1519);
+      module.exports = __webpack_require__(3488);
 
       /***/
     }
@@ -150,7 +150,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(8780);
+      return __webpack_exec__(2116);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [757],
   {
-    /***/ 4076: /***/ function(
+    /***/ 1042: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/hooks",
         function() {
-          return __webpack_require__(9740);
+          return __webpack_require__(7568);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 9740: /***/ function(
+    /***/ 7568: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,10 +26,10 @@
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        690
+        1761
       );
       /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        9453
+        1058
       );
 
       /* harmony default export */ __webpack_exports__["default"] = () => {
@@ -77,7 +77,7 @@
       /***/
     },
 
-    /***/ 3561: /***/ function(
+    /***/ 6052: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -92,7 +92,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      var f = __webpack_require__(9453),
+      var f = __webpack_require__(1058),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -127,7 +127,7 @@
       /***/
     },
 
-    /***/ 690: /***/ function(
+    /***/ 1761: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -135,7 +135,7 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(3561);
+        module.exports = __webpack_require__(6052);
       } else {
       }
 
@@ -148,7 +148,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(4076);
+      return __webpack_exec__(1042);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [358],
   {
-    /***/ 7735: /***/ function(
+    /***/ 7865: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function() {
-          return __webpack_require__(3281);
+          return __webpack_require__(8710);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 9258: /***/ function(module, exports, __webpack_require__) {
+    /***/ 4558: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -34,12 +34,12 @@
       var _object_without_properties_loose = __webpack_require__(
         5997
       ) /* ["default"] */.Z;
-      var _react = _interop_require_wildcard(__webpack_require__(9453));
-      var _head = _interop_require_default(__webpack_require__(1519));
-      var _imageBlurSvg = __webpack_require__(1356);
-      var _imageConfig = __webpack_require__(2953);
-      var _imageConfigContext = __webpack_require__(8169);
-      var _utils = __webpack_require__(4917);
+      var _react = _interop_require_wildcard(__webpack_require__(1058));
+      var _head = _interop_require_default(__webpack_require__(3488));
+      var _imageBlurSvg = __webpack_require__(746);
+      var _imageConfig = __webpack_require__(1374);
+      var _imageConfigContext = __webpack_require__(3811);
+      var _utils = __webpack_require__(9814);
       function Image(_param) {
         var {
             src,
@@ -637,7 +637,7 @@
       /***/
     },
 
-    /***/ 1356: /***/ function(__unused_webpack_module, exports) {
+    /***/ 746: /***/ function(__unused_webpack_module, exports) {
       "use strict";
 
       Objec
Post job cleanup.
[command]/usr/bin/git version
git version 2.38.1
Temporarily overriding HOME='/home/runner/work/_temp/067ca10d-98b0-4595-93a9-16ed778af182' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/bin/git config --global --add safe.directory /home/runner/work/next.js/next.js
[command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :
[command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
http.https://github.com/.extraheader
[command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :
Cleaning up orphan processes
Commit: b83e7fa549338c87c8cb00aa82c2b9c4915347f1

@Kikobeats Kikobeats force-pushed the add-tests-for-body-reading branch 7 times, most recently from 181d308 to b83e7fa Compare October 21, 2022 09:13
shuding and others added 21 commits October 24, 2022 11:12
Rename `optoutServerComponentsBundle` to `serverComponentsExternalPackages` which describes the feature better.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)


Response to vercel#29165


Co-authored-by: Balázs Orbán <18369201+balazsorban44@users.noreply.github.com>
## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)


The template repository can be found [here](https://github.com/saurabhburade/with-evm-chains)
Public reviews, and improvement suggestions are welcome!
## Supported Blockchains
1. ETHEREUM
2. ROPSTEN
3. RINKEBY
4. GÖRLI
5. KOVAN
6. MATIC
7. MATIC_TESTNET
8. FANTOM
9. FANTOM_TESTNET
10. XDAI
11. BSC
12. BSC_TESTNET
13. ARBITRUM
14. ARBITRUM_TESTNET
15. MOONBEAM_TESTNET
16. AVALANCHE
and more


### Note 
- This template has the flexibility to seamlessly extend to other EVM Blockchains.
- It has web3.js and wallet connection modules.
- It supports blockchain Read and Write functionalities.


Co-authored-by: Balázs Orbán <18369201+balazsorban44@users.noreply.github.com>
## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)

This PR fixes the npm/pnpm/yarn commands to use with-xata instead of Contentful.
Re-lands vercel#40335 but without modifying the lock file.


## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Finds the root layout segments for flight requests. If those segments doesn't match the FlightRouterState it's a new root layout and a full page reload is required.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)


Co-authored-by: Tim Neutkens <6324199+timneutkens@users.noreply.github.com>
Reverts vercel#40016.

`pageExtensions` is not frequently used – as is mostly a workaround
until the Layouts RFC lands. Thus, it doesn't make sense to place a note
on the Middleware page and expect readers to need to connect the dots
and understand `pageExtensions`.

Further, the example docs linked could be more specific about Middleware
to prevent this confusion. I will also make that change here.

Co-authored-by: Balázs Orbán <info@balazsorban.com>
Currently, we use the `isClient ? 'deterministic' : 'named'` condition
for module IDs. We did that because in the context of server compiler,
the server graph (RSC) can directly know the module ID of the referenced
module in the client graph (SSR). The client module's ID _is_ the module
reference module's resource path. However, that makes the server bundle
and the manifest file larger because these module IDs cannot be
minified.

In this PR we are changing it to `deterministic`, with another mapping
for server SSR.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Fixes local weight type which could break if you wrote "regular" instead of 400. Adds `variable` property to google font loader to let you define the name of the CSS variable.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Stringify into one json object instead. Previously parsing would break if a string included a semicolon.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
## Changes

see commits

## Additional Info

Since this example is quite complex I tried to remove additional noise
(unused type inference).

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)

## Related

Closes: vercel#40975
<!--
Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change that you're making:
-->

This PR utilizes cargo's new feature from latest release (1.64.0),
inheriting dependency from a workspace.

In short, top-level workspace cargo manifest can specify a version of
dependency to use, then actual packages uses it without re-declaring
version per each via workspace = true. This will help to dedupe
different versions of packages, also potentially avoid conflicts if
forgot to bump up specific versions.

In this pr only touches swc_core, which is a base dependency we use in
several place. One another benefit for this is bump up PR can be lot
more simplified, only need to update single Cargo.toml when we bump up.

Note rust-toolchain has updated to use nightly version after 1.64.0 to
enable this.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Fixing the image URL in the meta property og:image

<!--
Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change that you're making:
-->
## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Follow up for vercel#40132

Do not apply pages lint rule `@next/next/no-html-link-for-pages` for
appDir
Fixes: https://vercel.slack.com/archives/C03KAR5DCKC/p1664581332858249

## Bug

- [x] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`
## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)

**Note**: `pnpm lint` fails on code unrelated to the changes in this PR.

This PR updates the [Prismic](https://prismic.io/) CMS example
(`examples/cms-prismic`) to use the latest Prismic libraries, tools, and
conventions.

- Uses `npx @slicemachine/init` to bootstrap new Prismic accounts and
content repositories.

- Uses [Slice
Machine](https://prismic.io/docs/technologies/slice-machine) to model
content.

- Uses [Slices](https://prismic.io/docs/technologies/slice) to write
post content.

- Uses the latest versions of the following packages:

  - `@prismicio/client`
  - `@prismicio/helpers`
  - `@prismicio/react`
  - `@prismicio/next`

- Adds generated TypeScript types for Prismic content. The example
remains as a JavaScript codebase (i.e. not TypeScript), but makes use of
the types via JSDoc.

Co-authored-by: Balázs Orbán <info@balazsorban.com>
…ercel#40639)

Added examples to `getStaticProps` & `getServerSideProps` explicit and implicit typings for TypeScript.

Related issues: fixes vercel#40607

Co-authored-by: Balázs Orbán <18369201+balazsorban44@users.noreply.github.com>
Lands vercel#39048 with lint fixes. Needed to open a new PR, because GitHub
does not allow maintainers to edit organization forks.

https://github.com/orgs/community/discussions/5634

Closes vercel#39048

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)

Co-authored-by: Chris Fisher <chris.i.fisher@gmail.com>
Lands vercel#38163 with merge conflict fixes. Needed to open a new PR, because
GitHub does not allow maintainers to edit organization forks.

https://github.com/orgs/community/discussions/5634

Closes vercel#38163


## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)

Co-authored-by: sherazmalik06 <sherazmalik06@gmail.com>
Co-authored-by: Tony Spiro <tspiro@tonyspiro.com>
shuding and others added 19 commits October 24, 2022 11:12
This PR updates app configurations from `export const config = { ... }`
to be directly exported.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)

Co-authored-by: JJ Kasper <jj@jjsweb.site>
This PR adds a list of popular packages that should always opt-out
bundling in the server layer.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
I stumbled upon a lack of clarity when using `<Link />` where I believed it didn't execute the server methods before navigation. This change makes it a bit more clear

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)


Co-authored-by: Balázs Orbán <18369201+balazsorban44@users.noreply.github.com>
Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
Related discussion:
https://vercel.slack.com/archives/C043ANYDB24/p1666208186363099?thread_ts=1664676119.265829&cid=C043ANYDB24.

Tl;dr: RSC already renders and serializes things dynamically, there is
no need to manually do that in RSC and embed them via
dangerouslySetInnerHTML.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
This PR adds a feature in middleware to add, modify, or delete request headers. This feature is quite useful to pass data from middleware to Serverless/Edge API routes.

### Questions for Reviewers

- Should we deny modifying standard request headers like `Transfer-Encoding`?
- Should we throw an error if the header is too large? Real-world HTTP servers will accept up to only 8KB - 32KB.

### New APIs

Adds a new option `request.headers` to the `MiddlewareResponseInit` parameter in `NextResponse.next()` and `NextResponse.rewrite()`. It's a [`Header`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object holding *all* request headers. Specifically:

```ts
interface MiddlewareResponseInit extends ResponseInit {
  request?: {
    headers?: Headers
  }
}
```

### Example

```ts
// pages/api/hello.ts
export default (req, res) => {
  const valueFromMiddleware = req.headers['x-hello-from-middleware']
  return res.send(valueFromMiddleware)
}

// middleware.ts
import { NextRequest, NextResponse } from 'next/server'

export default function middleware(request: NextRequest) {
  // Clone request headers
  const headers = new Headers(request.headers);
  // Add a new request header
  headers.set('x-hello-from-middleware', 'foo');
  // Delete a request header from the client
  headers.delete('x-from-client');

  const resp = NextResponse.next({
    // New option `request.headers` which accepts a Headers object
    // overrides request headers with the specified new ones.
    request: {
      headers
    }
  });

  // You can still set *response* headers to the client, as before.
  resp.headers.set('x-hello-client', 'bar');
  return resp;
}
```

### New middleware headers

- `x-middleware-override-headers`: A comma separated list of *all* request header names. Headers not listed will be deleted.
- `x-middleware-request-<name>`: A new value for the header `<name>`.

## Related Discussions

- vercel#31188
- vercel#39300

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [x] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [x] Integration tests added
- [x] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Moves the logic that checks if there's a new root layout to the client.
Adds test for static and dynamic catchall.

Related: vercel#41457

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)

Co-authored-by: Tim Neutkens <tim@timneutkens.nl>
Co-authored-by: JJ Kasper <jj@jjsweb.site>
Make `useSelectedLayoutSegment` include the remaining segments from the current level to the leaf node.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Co-authored-by: Thibault Beyou <37510686+ThibaultBee@users.noreply.github.com>
I'm investigating the runtime perf of the node server and this was one of the hot spot I stumbled upon.

This diff:
- refactors getPagePath to not throw when it doesn't find a path: this function is used to check if a path exists, we don't want that kind of overhead there
- adds a LRU cache to cache the result of the evaluation

Results:

before:
> 110k requests in 11.01s, 285 MB read

after
>135k requests in 11.01s, 348 MB read

on an autocannon run



## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
This is a new experimental feature to specify a list of packages (or
subpaths in packages, like `pkg/src/index.ts`), to opt-in Next.js
transpilation in the server build.

cc @jescalan 

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
Make local and google font loaders more similar. Both should define `weight: string` and `style: string`.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
<!--
Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change that you're making:




## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
-->

Updating size-adjust calc to use azAvgWidth instead of xAvgCharWidth

Co-authored-by: Hannes Bornö <hannes.borno@vercel.com>
Co-authored-by: Balázs Orbán <info@balazsorban.com>
Co-authored-by: JJ Kasper <jj@jjsweb.site>
We can't directly put `filePath` in the generated code as it can contain in valid JavaScript string such as `"\2"` in `"C:\Users\foo\2022\bar.js"`. Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal

Reported issue in Next.js:

![image](https://user-images.githubusercontent.com/3676859/196962933-0a3bf4b4-9142-426f-9ac5-bdcfb3c5ebf0.png)

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
This PR adds a test fixture `e2e/app-dir/next-image` to ensure `next/image` works with the `app` dir.
Remove head as required in root layout.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
@ijjk ijjk added create-next-app Related to our CLI tool for quickly starting a new Next.js application. area: documentation examples Issue/PR related to examples type: next labels Oct 24, 2022
@Kikobeats Kikobeats force-pushed the add-tests-for-body-reading branch 2 times, most recently from c7735ec to 0ac32b6 Compare October 24, 2022 09:40
@Kikobeats Kikobeats closed this Oct 24, 2022
@Kikobeats Kikobeats deleted the add-tests-for-body-reading branch October 24, 2022 09:44
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
create-next-app Related to our CLI tool for quickly starting a new Next.js application. examples Issue/PR related to examples type: next
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet