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

Add support for tsconfig 'nodenext' | 'node16' #44177

Merged
merged 25 commits into from
Jan 28, 2023

Conversation

loettz
Copy link
Contributor

@loettz loettz commented Dec 20, 2022

ESM: support module option for tsconfig.json

With TypeScript 4.7 providing ECMAScript Module Support, we can now set this in our tsconfig.json file for the module option.

Webpack added "extensionAlias" to solve importing ts files with .js extension -> webpack/enhanced-resolve#351

@loettz loettz changed the title Add support for tsconfig | nodenext | node16 Add support for tsconfig 'nodenext' | 'node16' Dec 20, 2022
@imranbarbhuiya
Copy link
Contributor

We need to add the extension when using node16 module resolution. Since we can't use .ts extension in ts, we need to use .js and iirc nextjs can't resolve files with the .js extension when the actual file is a .tsx file.

@loettz loettz requested a review from padmaia as a code owner December 20, 2022 11:04
@kachkaev
Copy link
Contributor

kachkaev commented Dec 20, 2022

Somewhat related: microsoft/TypeScript#50058 (could be a blocker)

@loettz
Copy link
Contributor Author

loettz commented Dec 20, 2022

We need to add the extension when using node16 module resolution. Since we can't use .ts extension in ts, we need to use .js and iirc nextjs can't resolve files with the .js extension when the actual file is a .tsx file.

In my last commit I added the extensionAlias option in webpack.config (webpack/enhanced-resolve#351). Tested with my current repository thats using next and that solved the issue.

ijjk
ijjk previously approved these changes Jan 4, 2023
Copy link
Member

@ijjk ijjk left a comment

Choose a reason for hiding this comment

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

Changes and added test look good for the tsconfig change, can you also add a test related to the extensionAlias change?

@ijjk
Copy link
Member

ijjk commented Jan 4, 2023

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
buildDuration 41.1s 41.5s ⚠️ +399ms
buildDurationCached 9.7s 10.4s ⚠️ +704ms
nodeModulesSize 102 MB 102 MB ⚠️ +1.68 kB
nextStartRea..uration (ms) 276ms 275ms -1ms
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
296.HASH.js gzip 181 B 181 B
90-HASH.js gzip 80.6 kB 80.7 kB ⚠️ +28 B
main-app-HASH.js gzip 216 B 218 B ⚠️ +2 B
main-HASH.js gzip 78.8 kB 78.8 kB -6 B
webpack-HASH.js gzip 1.7 kB 1.7 kB
Overall change 162 kB 162 kB ⚠️ +24 B
Legacy Client Bundles (polyfills)
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
_app-HASH.js gzip 193 B 192 B -1 B
_error-HASH.js gzip 178 B 179 B ⚠️ +1 B
amp-HASH.js gzip 480 B 483 B ⚠️ +3 B
css-HASH.js gzip 803 B 805 B ⚠️ +2 B
dynamic-HASH.js gzip 2.31 kB 2.31 kB ⚠️ +3 B
edge-ssr-HASH.js gzip 258 B 259 B ⚠️ +1 B
head-HASH.js gzip 827 B 830 B ⚠️ +3 B
hooks-HASH.js gzip 845 B 850 B ⚠️ +5 B
image-HASH.js gzip 4.27 kB 4.28 kB ⚠️ +6 B
index-HASH.js gzip 253 B 254 B ⚠️ +1 B
link-HASH.js gzip 2.69 kB 2.69 kB ⚠️ +4 B
routerDirect..HASH.js gzip 777 B 780 B ⚠️ +3 B
script-HASH.js gzip 853 B 854 B ⚠️ +1 B
withRouter-HASH.js gzip 780 B 776 B -4 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 15.6 kB 15.7 kB ⚠️ +28 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
_buildManifest.js gzip 482 B 483 B ⚠️ +1 B
Overall change 482 B 483 B ⚠️ +1 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
index.html gzip 489 B 491 B ⚠️ +2 B
link.html gzip 504 B 506 B ⚠️ +2 B
withRouter.html gzip 484 B 485 B ⚠️ +1 B
Overall change 1.48 kB 1.48 kB ⚠️ +5 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
edge-ssr.js gzip 110 kB 110 kB ⚠️ +17 B
page.js gzip 216 kB 216 kB ⚠️ +5 B
Overall change 327 kB 327 kB ⚠️ +22 B
Middleware size Overall increase ⚠️
vercel/next.js canary loettz/next.js tsconfig-module-nodenext-node16 Change
middleware-b..fest.js gzip 582 B 586 B ⚠️ +4 B
middleware-r..fest.js gzip 145 B 145 B
middleware.js gzip 27.1 kB 27.1 kB -2 B
edge-runtime..pack.js gzip 1.83 kB 1.83 kB
Overall change 29.6 kB 29.6 kB ⚠️ +2 B

Diffs

Diff for page.js

Diff too large to display

Diff for middleware-b..-manifest.js
@@ -7,81 +7,81 @@ self.__BUILD_MANIFEST = {
     "static/BUILD_ID/_ssgManifest.js"
   ],
   rootMainFiles: [
-    "static/chunks/webpack-cfb71177d5e2315f.js",
-    "static/chunks/90-740523e0e8a0f446.js",
-    "static/chunks/main-app-f90966045c72c0b0.js"
+    "static/chunks/webpack-9e73a8f0275b7b0d.js",
+    "static/chunks/269-cd1eb6fab5d715e8.js",
+    "static/chunks/main-app-8798c1e8752bc3ca.js"
   ],
   pages: {
     "/": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/index-ff4a78f0cd6d8604.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/index-452fd3381b081c82.js"
     ],
     "/_app": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/_app-522e8366a4f81a86.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/_app-c0c5ef51258aeb67.js"
     ],
     "/_error": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/_error-60a86ec4e3f88bfc.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/_error-a97cf465c41b3270.js"
     ],
     "/amp": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/amp-88a189216855cd5b.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/amp-64ed516406b3e5b6.js"
     ],
     "/css": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
       "static/css/94fdbc56eafa2039.css",
-      "static/chunks/pages/css-615eee7e27a6c3ca.js"
+      "static/chunks/pages/css-19c9a22ff9f28fd2.js"
     ],
     "/dynamic": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/dynamic-de89cc327a788b57.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/dynamic-9c0c404d921751f2.js"
     ],
     "/edge-ssr": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/edge-ssr-9939a443aa3350b1.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/edge-ssr-5b893df1dca83ae5.js"
     ],
     "/head": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/head-631b6b2e13208e6f.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/head-75611f12d1f42d77.js"
     ],
     "/hooks": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/hooks-fb4a676575d0522f.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/hooks-e74adaf59663ab32.js"
     ],
     "/image": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/image-2ac8c20cff9bda86.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/image-d900e1495a9960a9.js"
     ],
     "/link": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/link-9da4bf891ebd7a29.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/link-941c37681f342748.js"
     ],
     "/routerDirect": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/routerDirect-4507732e54f3c3bb.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/routerDirect-d4f3e188a1efb08f.js"
     ],
     "/script": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/script-c0f79f45d422d4ba.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/script-cdc377a1a2012a14.js"
     ],
     "/withRouter": [
-      "static/chunks/webpack-cfb71177d5e2315f.js",
-      "static/chunks/main-929fdaf3d96eac10.js",
-      "static/chunks/pages/withRouter-2595133dda6a34d6.js"
+      "static/chunks/webpack-9e73a8f0275b7b0d.js",
+      "static/chunks/main-43d0677d3b1198cf.js",
+      "static/chunks/pages/withRouter-e7c6362c4e7a0ebe.js"
     ]
   },
   ampFirstPages: []
Diff for middleware-r..-manifest.js
@@ -1,6 +1,6 @@
 self.__REACT_LOADABLE_MANIFEST = {
   "dynamic.js -> ../components/hello": {
-    id: 7296,
-    files: ["static/chunks/296.dc8564ea6e849fb1.js"]
+    id: 7615,
+    files: ["static/chunks/615.457941d412fec2d4.js"]
   }
 };
Diff for middleware.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [826],
   {
-    /***/ 7893: /***/ (
+    /***/ 2198: /***/ (
       __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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/error.js
+      }); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/utils.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/utils.js
 
       //# sourceMappingURL=error.js.map
       function fromNodeHeaders(object) {
@@ -157,7 +157,7 @@
             }
           );
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js
 
       //# sourceMappingURL=utils.js.map
       const responseSymbol = Symbol("response");
@@ -203,7 +203,7 @@
             page: this.sourcePage
           });
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js
 
       //# sourceMappingURL=fetch-event.js.map
       function detectDomainLocale(domainItems, hostname, detectedLocale) {
@@ -232,7 +232,7 @@
           }
         }
         return domainItem;
-      } //# sourceMappingURL=detect-domain-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -242,7 +242,7 @@
        *   - `/` -> `/`
        */ function removeTrailingSlash(route) {
         return route.replace(/\/$/, "") || "/";
-      } //# sourceMappingURL=remove-trailing-slash.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -270,7 +270,7 @@
           query: "",
           hash: ""
         };
-      } //# sourceMappingURL=parse-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -281,7 +281,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -293,7 +293,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -307,7 +307,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -324,7 +324,7 @@
           return addPathPrefix(path, `/${locale}`);
         }
         return path;
-      } //# sourceMappingURL=add-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js
 
       function formatNextPathnameInfo(info) {
         let pathname = addLocale(
@@ -348,7 +348,7 @@
             ? addPathSuffix(pathname, "/")
             : pathname
           : removeTrailingSlash(pathname);
-      } //# sourceMappingURL=format-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/get-hostname.js
 
       /**
        * Takes an object with a hostname property (like a parsed URL) and some
@@ -363,7 +363,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -393,7 +393,7 @@
           pathname,
           detectedLocale
         };
-      } //# sourceMappingURL=normalize-locale-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -409,7 +409,7 @@
             : `/${withoutPrefix}`;
         }
         return path;
-      } //# sourceMappingURL=remove-path-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js
 
       function getNextPathnameInfo(pathname, options) {
         var _nextConfig;
@@ -446,7 +446,7 @@
             info.pathname;
         }
         return info;
-      } //# sourceMappingURL=get-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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) {
@@ -655,7 +655,7 @@
         clone() {
           return new NextURL(String(this), this[Internal].options);
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/serialize.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/serialize.js
 
       //# sourceMappingURL=next-url.js.map
       const SAME_SITE = ["strict", "lax", "none"];
@@ -739,7 +739,7 @@
           })
         };
         return compact(cookie);
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/request-cookies.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/request-cookies.js
 
       //# sourceMappingURL=serialize.js.map
       /**
@@ -832,7 +832,7 @@
             Object.fromEntries(this._parsed)
           )}`;
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/response-cookies.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/response-cookies.js
 
       //# sourceMappingURL=request-cookies.js.map
       function replace(bag, headers) {
@@ -927,7 +927,7 @@
             Object.fromEntries(this._parsed)
           )}`;
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/index.js // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/request.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies/index.js // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/request.js
 
       //# sourceMappingURL=response-cookies.js.map
       //# sourceMappingURL=index.js.map
@@ -1002,7 +1002,7 @@
         get url() {
           return this[INTERNALS].url.toString();
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/response.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/response.js
 
       //# sourceMappingURL=request.js.map
       const response_INTERNALS = Symbol("internal response");
@@ -1102,7 +1102,7 @@
             headers
           });
         }
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js
 
       //# sourceMappingURL=response.js.map
       /**
@@ -1116,7 +1116,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/internal-utils.js
+      } //# sourceMappingURL=relativize-url.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/internal-utils.js
 
       const INTERNAL_QUERY_NAMES = [
         "__nextFallback",
@@ -1140,7 +1140,7 @@
           }
         }
         return searchParams;
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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
@@ -1164,7 +1164,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/client/components/app-router-headers.js
+      } //# sourceMappingURL=app-paths.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/client/components/app-router-headers.js
 
       const RSC = "RSC";
       const NEXT_ROUTER_STATE_TREE = "Next-Router-State-Tree";
@@ -1175,7 +1175,7 @@
         [RSC],
         [NEXT_ROUTER_STATE_TREE],
         [NEXT_ROUTER_PREFETCH]
-      ]; //# sourceMappingURL=app-router-headers.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/adapter.js
+      ]; //# sourceMappingURL=app-router-headers.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/adapter.js
 
       class NextRequestHint extends NextRequest {
         constructor(params) {
@@ -1376,12 +1376,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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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+packed-next.tgz_biqbaboplfbrettd7655fr4n2y/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__(4620);
+      var mod = __webpack_require__(2652);
       var handler = mod.middleware || mod.default;
 
       if (typeof handler !== "function") {
@@ -1403,7 +1403,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 4620: /***/ (
+    /***/ 2652: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -1415,7 +1415,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__(
-        4601
+        7545
       );
       /* harmony import */ var next_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(
         next_server__WEBPACK_IMPORTED_MODULE_0__
@@ -1428,7 +1428,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 8980: /***/ (__unused_webpack_module, exports) => {
+    /***/ 5879: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1448,7 +1448,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7521: /***/ (__unused_webpack_module, exports) => {
+    /***/ 9530: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1486,7 +1486,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7892: /***/ (__unused_webpack_module, exports) => {
+    /***/ 7508: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1518,7 +1518,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 8962: /***/ (
+    /***/ 7752: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1529,8 +1529,8 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.addLocale = addLocale;
-      var _addPathPrefix = __webpack_require__(2185);
-      var _pathHasPrefix = __webpack_require__(5756);
+      var _addPathPrefix = __webpack_require__(4794);
+      var _pathHasPrefix = __webpack_require__(8633);
       function addLocale(path, locale, defaultLocale, ignorePrefix) {
         if (
           locale &&
@@ -1550,7 +1550,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 2185: /***/ (
+    /***/ 4794: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1561,7 +1561,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.addPathPrefix = addPathPrefix;
-      var _parsePath = __webpack_require__(2930);
+      var _parsePath = __webpack_require__(3699);
       function addPathPrefix(path, prefix) {
         if (!path.startsWith("/") || !prefix) {
           return path;
@@ -1573,7 +1573,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 880: /***/ (
+    /***/ 2064: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1584,7 +1584,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.addPathSuffix = addPathSuffix;
-      var _parsePath = __webpack_require__(2930);
+      var _parsePath = __webpack_require__(3699);
       function addPathSuffix(path, suffix) {
         if (!path.startsWith("/") || !suffix) {
           return path;
@@ -1596,7 +1596,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 328: /***/ (
+    /***/ 9989: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1607,10 +1607,10 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.formatNextPathnameInfo = formatNextPathnameInfo;
-      var _removeTrailingSlash = __webpack_require__(7601);
-      var _addPathPrefix = __webpack_require__(2185);
-      var _addPathSuffix = __webpack_require__(880);
-      var _addLocale = __webpack_require__(8962);
+      var _removeTrailingSlash = __webpack_require__(8000);
+      var _addPathPrefix = __webpack_require__(4794);
+      var _addPathSuffix = __webpack_require__(2064);
+      var _addLocale = __webpack_require__(7752);
       function formatNextPathnameInfo(info) {
         let pathname = (0, _addLocale).addLocale(
           info.pathname,
@@ -1641,7 +1641,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 9330: /***/ (
+    /***/ 1986: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1652,9 +1652,9 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.getNextPathnameInfo = getNextPathnameInfo;
-      var _normalizeLocalePath = __webpack_require__(7892);
-      var _removePathPrefix = __webpack_require__(6568);
-      var _pathHasPrefix = __webpack_require__(5756);
+      var _normalizeLocalePath = __webpack_require__(7508);
+      var _removePathPrefix = __webpack_require__(984);
+      var _pathHasPrefix = __webpack_require__(8633);
       function getNextPathnameInfo(pathname, options) {
         var _nextConfig;
         const { basePath, i18n, trailingSlash } =
@@ -1704,7 +1704,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 2930: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3699: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1738,7 +1738,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 5756: /***/ (
+    /***/ 8633: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1749,7 +1749,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.pathHasPrefix = pathHasPrefix;
-      var _parsePath = __webpack_require__(2930);
+      var _parsePath = __webpack_require__(3699);
       function pathHasPrefix(path, prefix) {
         if (typeof path !== "string") {
           return false;
@@ -1761,7 +1761,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 6568: /***/ (
+    /***/ 984: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1772,7 +1772,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       });
       exports.removePathPrefix = removePathPrefix;
-      var _pathHasPrefix = __webpack_require__(5756);
+      var _pathHasPrefix = __webpack_require__(8633);
       function removePathPrefix(path, prefix) {
         if ((0, _pathHasPrefix).pathHasPrefix(path, prefix)) {
           const withoutPrefix = path.slice(prefix.length);
@@ -1786,7 +1786,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7601: /***/ (__unused_webpack_module, exports) => {
+    /***/ 8000: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1800,7 +1800,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 6866: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6392: /***/ (module, exports, __webpack_require__) => {
       var __dirname = "/";
       var __WEBPACK_AMD_DEFINE_RESULT__;
       (() => {
@@ -2642,7 +2642,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 4378: /***/ (__unused_webpack_module, exports) => {
+    /***/ 650: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -2683,7 +2683,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 9153: /***/ (
+    /***/ 8065: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -2693,10 +2693,10 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       Object.defineProperty(exports, "__esModule", {
         value: true
       });
-      var _detectDomainLocale = __webpack_require__(7521);
-      var _formatNextPathnameInfo = __webpack_require__(328);
-      var _getHostname = __webpack_require__(8980);
-      var _getNextPathnameInfo = __webpack_require__(9330);
+      var _detectDomainLocale = __webpack_require__(9530);
+      var _formatNextPathnameInfo = __webpack_require__(9989);
+      var _getHostname = __webpack_require__(5879);
+      var _getNextPathnameInfo = __webpack_require__(1986);
       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(
@@ -2916,7 +2916,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 1545: /***/ (
+    /***/ 4098: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -2938,15 +2938,15 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           return _responseCookies.ResponseCookies;
         }
       });
-      var _requestCookies = __webpack_require__(781);
-      var _responseCookies = __webpack_require__(7085);
+      var _requestCookies = __webpack_require__(8814);
+      var _responseCookies = __webpack_require__(768);
 
       //# sourceMappingURL=index.js.map
 
       /***/
     },
 
-    /***/ 781: /***/ (
+    /***/ 8814: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -2956,7 +2956,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       Object.defineProperty(exports, "__esModule", {
         value: true
       });
-      var _serialize = __webpack_require__(8053);
+      var _serialize = __webpack_require__(1378);
       class RequestCookies {
         _parsed = new Map();
         constructor(requestHeaders) {
@@ -3053,7 +3053,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7085: /***/ (
+    /***/ 768: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3063,7 +3063,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       Object.defineProperty(exports, "__esModule", {
         value: true
       });
-      var _serialize = __webpack_require__(8053);
+      var _serialize = __webpack_require__(1378);
       function replace(bag, headers) {
         headers.delete("set-cookie");
         for (const [, value] of bag) {
@@ -3160,7 +3160,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 8053: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1378: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -3253,7 +3253,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 3186: /***/ (
+    /***/ 916: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3265,10 +3265,10 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         value: true
       };
       __webpack_unused_export__ = void 0;
-      var _nextUrl = __webpack_require__(9153);
-      var _utils = __webpack_require__(7960);
-      var _error = __webpack_require__(4378);
-      var _cookies = __webpack_require__(1545);
+      var _nextUrl = __webpack_require__(8065);
+      var _utils = __webpack_require__(953);
+      var _error = __webpack_require__(650);
+      var _cookies = __webpack_require__(4098);
       const INTERNALS = Symbol("internal request");
       __webpack_unused_export__ = INTERNALS;
       class NextRequest extends Request {
@@ -3349,7 +3349,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7292: /***/ (
+    /***/ 1346: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3360,9 +3360,9 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       __webpack_unused_export__ = {
         value: true
       };
-      var _nextUrl = __webpack_require__(9153);
-      var _utils = __webpack_require__(7960);
-      var _cookies = __webpack_require__(1545);
+      var _nextUrl = __webpack_require__(8065);
+      var _utils = __webpack_require__(953);
+      var _cookies = __webpack_require__(4098);
       const INTERNALS = Symbol("internal response");
       const REDIRECTS = new Set([301, 302, 303, 307, 308]);
       function handleMiddlewareField(init, headers) {
@@ -3471,7 +3471,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 2402: /***/ (
+    /***/ 4148: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -3485,7 +3485,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__(6866));
+      var _uaParserJs = _interopRequireDefault(__webpack_require__(6392));
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -3513,7 +3513,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7960: /***/ (__unused_webpack_module, exports) => {
+    /***/ 953: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -3630,14 +3630,14 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 4601: /***/ (module, exports, __webpack_require__) => {
+    /***/ 7545: /***/ (module, exports, __webpack_require__) => {
       const serverExports = {
-        NextRequest: __webpack_require__(3186) /* .NextRequest */.Im,
-        NextResponse: __webpack_require__(7292) /* .NextResponse */.x,
+        NextRequest: __webpack_require__(916) /* .NextRequest */.Im,
+        NextResponse: __webpack_require__(1346) /* .NextResponse */.x,
         userAgentFromString: __webpack_require__(
-          2402
+          4148
         ) /* .userAgentFromString */.Nf,
-        userAgent: __webpack_require__(2402) /* .userAgent */.WE
+        userAgent: __webpack_require__(4148) /* .userAgent */.WE
       };
 
       if (typeof URLPattern !== "undefined") {
@@ -3663,7 +3663,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__(7893);
+    /******/ var __webpack_exports__ = __webpack_exec__(2198);
     /******/ (_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-ff4a78f0cd6d8604.js"],
-  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-60a86ec4e3f88bfc.js"],
-  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-88a189216855cd5b.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-452fd3381b081c82.js"],
+  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-a97cf465c41b3270.js"],
+  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-64ed516406b3e5b6.js"],
   "/css": [
     "static\u002Fcss\u002F94fdbc56eafa2039.css",
-    "static\u002Fchunks\u002Fpages\u002Fcss-615eee7e27a6c3ca.js"
+    "static\u002Fchunks\u002Fpages\u002Fcss-19c9a22ff9f28fd2.js"
   ],
   "/dynamic": [
-    "static\u002Fchunks\u002Fpages\u002Fdynamic-de89cc327a788b57.js"
+    "static\u002Fchunks\u002Fpages\u002Fdynamic-9c0c404d921751f2.js"
   ],
   "/edge-ssr": [
-    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-9939a443aa3350b1.js"
+    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-5b893df1dca83ae5.js"
   ],
-  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-631b6b2e13208e6f.js"],
-  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-fb4a676575d0522f.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-2ac8c20cff9bda86.js"],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-9da4bf891ebd7a29.js"],
+  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-75611f12d1f42d77.js"],
+  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e74adaf59663ab32.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-d900e1495a9960a9.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-941c37681f342748.js"],
   "/routerDirect": [
-    "static\u002Fchunks\u002Fpages\u002FrouterDirect-4507732e54f3c3bb.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-d4f3e188a1efb08f.js"
   ],
-  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-c0f79f45d422d4ba.js"],
+  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-cdc377a1a2012a14.js"],
   "/withRouter": [
-    "static\u002Fchunks\u002Fpages\u002FwithRouter-2595133dda6a34d6.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-e7c6362c4e7a0ebe.js"
   ],
   sortedPages: [
     "\u002F",
Diff for _app-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [888],
   {
-    /***/ 4821: /***/ function(
+    /***/ 834: /***/ 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__(9319);
+          return __webpack_require__(5625);
         }
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [179], function() {
-      return __webpack_exec__(4821), __webpack_exec__(5616);
+      return __webpack_exec__(834), __webpack_exec__(9672);
     });
     /******/ 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],
   {
-    /***/ 8333: /***/ function(
+    /***/ 8785: /***/ 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__(8511);
+          return __webpack_require__(7416);
         }
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(8333);
+      return __webpack_exec__(8785);
     });
     /******/ 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],
   {
-    /***/ 8224: /***/ function(
+    /***/ 1490: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(6591);
+      module.exports = __webpack_require__(4697);
 
       /***/
     },
 
-    /***/ 4885: /***/ function(
+    /***/ 2906: /***/ 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__(1951);
+          return __webpack_require__(201);
         }
       ]);
       if (false) {
@@ -28,7 +28,7 @@
       /***/
     },
 
-    /***/ 6591: /***/ function(module, exports, __webpack_require__) {
+    /***/ 4697: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -37,9 +37,9 @@
       exports.useAmp = useAmp;
       var _interop_require_default = __webpack_require__(1322) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(7));
-      var _ampContext = __webpack_require__(9373);
-      var _ampMode = __webpack_require__(6363);
+      var _react = _interop_require_default(__webpack_require__(7700));
+      var _ampContext = __webpack_require__(8994);
+      var _ampMode = __webpack_require__(6781);
       function useAmp() {
         // Don't assign the context value to a variable to save bytes
         return (0, _ampMode).isInAmpMode(
@@ -61,7 +61,7 @@
       /***/
     },
 
-    /***/ 1951: /***/ function(
+    /***/ 201: /***/ 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__(
-        8224
+        1490
       );
       /* 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__(4885);
+      return __webpack_exec__(2906);
     });
     /******/ 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],
   {
-    /***/ 2106: /***/ function(
+    /***/ 4099: /***/ 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__(9370);
+          return __webpack_require__(5743);
         }
       ]);
       if (false) {
@@ -18,14 +18,14 @@
       /***/
     },
 
-    /***/ 3325: /***/ function(module) {
+    /***/ 9508: /***/ function(module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__qqNwY" };
 
       /***/
     },
 
-    /***/ 9370: /***/ function(
+    /***/ 5743: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -33,10 +33,10 @@
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        6913
+        2828
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        3325
+        9508
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -56,7 +56,7 @@
       /***/
     },
 
-    /***/ 7855: /***/ function(
+    /***/ 9634: /***/ 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__(7),
+      var f = __webpack_require__(7700),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -106,7 +106,7 @@
       /***/
     },
 
-    /***/ 6913: /***/ function(
+    /***/ 2828: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -114,7 +114,7 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(7855);
+        module.exports = __webpack_require__(9634);
       } else {
       }
 
@@ -127,7 +127,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(2106);
+      return __webpack_exec__(4099);
     });
     /******/ 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],
   {
-    /***/ 4811: /***/ function(
+    /***/ 3699: /***/ 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__(4657);
+          return __webpack_require__(9932);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7523: /***/ function(
+    /***/ 7328: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -32,8 +32,8 @@
       exports.NoSSR = NoSSR;
       var _interop_require_default = __webpack_require__(1322) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(7));
-      var _noSsrError = __webpack_require__(7108);
+      var _react = _interop_require_default(__webpack_require__(7700));
+      var _noSsrError = __webpack_require__(9783);
       function suspense() {
         const error = new Error(_noSsrError.NEXT_DYNAMIC_NO_SSR_CODE);
         error.digest = _noSsrError.NEXT_DYNAMIC_NO_SSR_CODE;
@@ -49,7 +49,7 @@
       /***/
     },
 
-    /***/ 9192: /***/ function(module, exports, __webpack_require__) {
+    /***/ 5374: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -59,8 +59,8 @@
       var _extends = __webpack_require__(5321) /* ["default"] */.Z;
       var _interop_require_default = __webpack_require__(1322) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(7));
-      var _loadable = _interop_require_default(__webpack_require__(8656));
+      var _react = _interop_require_default(__webpack_require__(7700));
+      var _loadable = _interop_require_default(__webpack_require__(6215));
       function dynamic(dynamicOptions, options) {
         let loadableFn = _loadable.default;
         let loadableOptions = {
@@ -137,7 +137,7 @@
       /***/
     },
 
-    /***/ 1923: /***/ function(
+    /***/ 3329: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -150,7 +150,7 @@
       exports.LoadableContext = void 0;
       var _interop_require_default = __webpack_require__(1322) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(7));
+      var _react = _interop_require_default(__webpack_require__(7700));
       const LoadableContext = _react.default.createContext(null);
       exports.LoadableContext = LoadableContext;
       if (false) {
@@ -159,7 +159,7 @@
       /***/
     },
 
-    /***/ 8656: /***/ function(
+    /***/ 6215: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -174,9 +174,9 @@
       var _extends = __webpack_require__(5321) /* ["default"] */.Z;
       var _interop_require_default = __webpack_require__(1322) /* ["default"] */
         .Z;
-      var _react = _interop_require_default(__webpack_require__(7));
-      var _dynamicNoSsr = __webpack_require__(7523);
-      var _loadableContext = __webpack_require__(1923);
+      var _react = _interop_require_default(__webpack_require__(7700));
+      var _dynamicNoSsr = __webpack_require__(7328);
+      var _loadableContext = __webpack_require__(3329);
       const ALL_INITIALIZERS = [];
       const READY_INITIALIZERS = [];
       let initialized = false;
@@ -422,7 +422,7 @@
       /***/
     },
 
-    /***/ 4657: /***/ function(
+    /***/ 9932: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -436,10 +436,10 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        6913
+        2828
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8283
+        2896
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -448,11 +448,11 @@
       const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         () =>
           __webpack_require__
-            .e(/* import() */ 296)
-            .then(__webpack_require__.bind(__webpack_require__, 7296)),
+            .e(/* import() */ 615)
+            .then(__webpack_require__.bind(__webpack_require__, 7615)),
         {
           loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 7296]
+            webpack: () => [/*require.resolve*/ 7615]
           }
         }
       );
@@ -479,7 +479,7 @@
       /***/
     },
 
-    /***/ 7855: /***/ function(
+    /***/ 9634: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -494,7 +494,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__(7),
+      var f = __webpack_require__(7700),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -529,7 +529,7 @@
       /***/
     },
 
-    /***/ 6913: /***/ function(
+    /***/ 2828: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -537,19 +537,19 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(7855);
+        module.exports = __webpack_require__(9634);
       } else {
       }
 
       /***/
     },
 
-    /***/ 8283: /***/ function(
+    /***/ 2896: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(9192);
+      module.exports = __webpack_require__(5374);
 
       /***/
     }
@@ -560,7 +560,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(4811);
+      return __webpack_exec__(3699);
     });
     /******/ 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],
   {
-    /***/ 7313: /***/ function(
+    /***/ 3623: /***/ 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__(3660);
+          return __webpack_require__(9731);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 3660: /***/ function(
+    /***/ 9731: /***/ 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__(7313);
+      return __webpack_exec__(3623);
     });
     /******/ 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],
   {
-    /***/ 1785: /***/ function(
+    /***/ 1039: /***/ 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__(7640);
+          return __webpack_require__(2076);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7640: /***/ function(
+    /***/ 2076: /***/ 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__(
-        6913
+        2828
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8654
+        7308
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -69,7 +69,7 @@
       /***/
     },
 
-    /***/ 7855: /***/ function(
+    /***/ 9634: /***/ 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__(7),
+      var f = __webpack_require__(7700),
         k = Symbol.for("react.element"),
         l = Symbol.for("react.fragment"),
         m = Object.prototype.hasOwnProperty,
@@ -119,7 +119,7 @@
       /***/
     },
 
-    /***/ 6913: /***/ function(
+    /***/ 2828: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
@@ -127,19 +127,19 @@
       "use strict";
 
       if (true) {
-        module.exports = __webpack_require__(7855);
+        module.exports = __webpack_require__(9634);
       } else {
       }
 
       /***/
     },
 
-    /***/ 8654: /***/ function(
+    /***/ 7308: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(6258);
+      module.exports = __webpack_require__(2625);
 
       /***/
     }
@@ -150,7 +150,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 179], function() {
-      return __webpack_exec__(1785);
+      return __webpack_exec__(1039);
     });
     /******/ 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],
   {
-    /***/ 2510: /***/ function(
+    /***/ 9532: /***/ 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__(7383);
+          return __webpack_require__(9741);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7383: /***/ function(
+    /***/ 9741: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,10 +26,10 @@
       "use strict";
       __webpack_require__.
Post job cleanup.
[command]/usr/bin/git version
git version 2.39.1
Temporarily overriding HOME='/home/runner/work/_temp/dbf652aa-7019-456d-b942-e4239401b2d9' 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 sh -c "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 sh -c "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: 74c252f41b6c479ecd7f8561bc65bf6d50c865e3

loettz and others added 2 commits January 10, 2023 15:26
…enext-node16

# Conflicts:
#	test/integration/tsconfig-verifier/test/index.test.js
@loettz
Copy link
Contributor Author

loettz commented Jan 10, 2023

Changes and added test look good for the tsconfig change, can you also add a test related to the extensionAlias change?

@ijjk i added the test for extensionAlias in webpack config

@loettz loettz requested review from ijjk and removed request for padmaia January 11, 2023 07:13
Copy link
Member

@styfle styfle left a comment

Choose a reason for hiding this comment

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

Great work, thanks! 🎉

Copy link
Member

@ijjk ijjk left a comment

Choose a reason for hiding this comment

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

Looks good, thanks!

@kodiakhq kodiakhq bot merged commit 67468f9 into vercel:canary Jan 28, 2023
@karlhorky
Copy link
Contributor

karlhorky commented Jan 28, 2023

@loettz thanks for this!

Looking at the diff for packages/next/src/build/webpack-config.ts (also copied below), I guess this doesn't support .mts, .cjs, .mtsx, .cjsx, etc extensions, right?

    extensions: isNodeServer
      ? ['.js', '.mjs', '.tsx', '.ts', '.jsx', '.json', '.wasm']
      : ['.mjs', '.js', '.tsx', '.ts', '.jsx', '.json', '.wasm'],
+   extensionAlias: {
+     '.js': ['.ts', '.tsx', '.js', '.jsx'],
+   },
    modules: [
      'node_modules',

I included these in Workaround 1 in #41961 when I reported that issue.

Maybe these extensions don't make sense in the context of a Next.js app?

@GabenGar
Copy link
Contributor

Meme extensions only make sense as a stopgap for migrating the codebase from CJS to ESM, otherwise the module system of the user code should be decided by "type" field in package.json.

ijjk added a commit that referenced this pull request Jan 31, 2023
This fixes a regression in our source map generating which got lost in
the big diff from the `src` folder restructure in
#44405

These invalid source maps broken plugins that attempted to leverage them
like `@sentry/nextjs` which only attempts in a production environment
https://github.com/getsentry/sentry-javascript/blob/15ec85bead77100413381be821f42841ae114f93/packages/nextjs/src/config/webpack.ts#L586

For a regression test in a follow-up we will need to investigate a
production test fixture with `@sentry/nextjs` although this requires a
DSN be configured.

This also ensures we setup `unhandledRejection` and `uncaughtException`
listeners during build so that we have proper stack information when
these occur and the process isn't left hanging.

This also moves the `extensionAlias` config from
#44177 to an experimental config
as it seems to cause conflicts with ESM packages that define `exports`
in their `package.json` which can be considered a breaking change.

## Bug

- [x] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

Fixes: #45419
x-ref: [slack
thread](https://vercel.slack.com/archives/C03DQ3QFV7C/p1674937545579229)
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 28, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
7 participants