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

use npm pack instead of yarn pack #52563

Merged
merged 3 commits into from
Jul 11, 2023
Merged

use npm pack instead of yarn pack #52563

merged 3 commits into from
Jul 11, 2023

Conversation

gnoff
Copy link
Contributor

@gnoff gnoff commented Jul 11, 2023

yarn pack does not pack the same way that npm pack does. There is at least one bug with how files are treated where node_modules are ignored even inside folders defined by the files config. While this is not currently used in next.js an upcoming change will rely on it. The reason this change makes sense otherwise is we use npm to publish next and during a publish the pack from npm is used. For consistency we should use the same pack for our actions and other code that does repo setup such as create-next-install which is used for tests

The implementation is slightly more complicated than just replacing the pack command however. npm pack respects gitignore files whereas yarn pack does not (or at least not nested ones). For some packages the "files" property in package.json is set which overrides any gitignore rules however the @next/swc package uses a gitignore to prevent the committing of native binaries but does not use files and thus npm pack does not includes native binaries when yarn pack does. To address this the PR adds a temporary rename of the next-swc/native/.gitignore file which allows npm pack to mimic the yarn pack behavior. The reason I did not just add "files" is that this package actually publishes to many different package names on npm for each architecture and I was unsure about making changes to the package.json that would potentially affect this codepath.

In addition to those changes there are 2 .gitignore files that appear to be outdated and unnecessary. I removed them.

@gnoff gnoff requested review from a team as code owners July 11, 2023 17:07
@gnoff gnoff requested review from manovotny and lydiahallie July 11, 2023 17:07
@ijjk ijjk added the created-by: Next.js team PRs by the Next.js team. label Jul 11, 2023
@ijjk
Copy link
Member

ijjk commented Jul 11, 2023

Tests Passed

@gnoff gnoff force-pushed the use-npm-pack branch 2 times, most recently from f72905c to 36f15f2 Compare July 11, 2023 20:30
… at least one bug with how files are treated where node_modules are ignroed even inside folders defined by the files config. While this is not currently used in next.js an upcoming change will rely on it. The reason this change makes sense otherwise is we use npm to publish next and during a publish the pack from npm is used. For consistency we should use the same pack for our actions and other code that does repo setup such as `create-next-install` which is used for tests
@ijjk
Copy link
Member

ijjk commented Jul 11, 2023

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary gnoff/next.js use-npm-pack Change
buildDuration 51.9s 52.5s ⚠️ +585ms
buildDurationCached 15.5s 16.4s ⚠️ +814ms
nodeModulesSize 137 MB 137 MB ⚠️ +48 B
nextStartRea..uration (ms) 520ms 529ms ⚠️ +9ms
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary gnoff/next.js use-npm-pack Change
0d536507-HASH.js gzip 50.5 kB 50.5 kB
174-HASH.js gzip 25.2 kB 25.2 kB ⚠️ +20 B
511.HASH.js gzip 180 B 183 B ⚠️ +3 B
framework-HASH.js gzip 45.2 kB 45.2 kB
main-app-HASH.js gzip 217 B 215 B -2 B
main-HASH.js gzip 28.4 kB 28.4 kB
webpack-HASH.js gzip 1.7 kB 1.7 kB ⚠️ +1 B
Overall change 151 kB 151 kB ⚠️ +22 B
Legacy Client Bundles (polyfills)
vercel/next.js canary gnoff/next.js use-npm-pack Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall decrease ✓
vercel/next.js canary gnoff/next.js use-npm-pack Change
_app-HASH.js gzip 195 B 195 B
_error-HASH.js gzip 183 B 182 B -1 B
amp-HASH.js gzip 503 B 504 B ⚠️ +1 B
css-HASH.js gzip 321 B 323 B ⚠️ +2 B
dynamic-HASH.js gzip 1.82 kB 1.82 kB -2 B
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 349 B 351 B ⚠️ +2 B
hooks-HASH.js gzip 369 B 368 B -1 B
image-HASH.js gzip 4.17 kB 4.18 kB ⚠️ +2 B
index-HASH.js gzip 255 B 256 B ⚠️ +1 B
link-HASH.js gzip 2.63 kB 2.62 kB -4 B
routerDirect..HASH.js gzip 312 B 312 B
script-HASH.js gzip 385 B 384 B -1 B
withRouter-HASH.js gzip 309 B 308 B -1 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 12.2 kB 12.2 kB -2 B
Client Build Manifests
vercel/next.js canary gnoff/next.js use-npm-pack Change
_buildManifest.js gzip 483 B 483 B
Overall change 483 B 483 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary gnoff/next.js use-npm-pack Change
index.html gzip 511 B 510 B -1 B
link.html gzip 525 B 524 B -1 B
withRouter.html gzip 504 B 505 B ⚠️ +1 B
Overall change 1.54 kB 1.54 kB -1 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary gnoff/next.js use-npm-pack Change
edge-ssr.js gzip 89.6 kB 89.6 kB ⚠️ +2 B
page.js gzip 146 kB 146 kB ⚠️ +17 B
Overall change 236 kB 236 kB ⚠️ +19 B
Middleware size Overall increase ⚠️
vercel/next.js canary gnoff/next.js use-npm-pack Change
middleware-b..fest.js gzip 626 B 622 B -4 B
middleware-r..fest.js gzip 150 B 152 B ⚠️ +2 B
middleware.js gzip 16.6 kB 16.6 kB ⚠️ +3 B
edge-runtime..pack.js gzip 1.83 kB 1.83 kB
Overall change 19.2 kB 19.2 kB ⚠️ +1 B

Diffs

Diff for page.js

Diff too large to display

Diff for middleware-b..-manifest.js
@@ -7,96 +7,96 @@ self.__BUILD_MANIFEST = {
     "static/BUILD_ID/_ssgManifest.js",
   ],
   rootMainFiles: [
-    "static/chunks/webpack-735eb851a26a56f3.js",
-    "static/chunks/0d536507-730746fee67b2885.js",
-    "static/chunks/174-1c60c6fa1f1ca197.js",
-    "static/chunks/main-app-58a0a7322cb02418.js",
+    "static/chunks/webpack-3059af3822a3ea04.js",
+    "static/chunks/c9a40420-04236801760bd2a4.js",
+    "static/chunks/365-c5bdfa450d59cf5a.js",
+    "static/chunks/main-app-a9c995c46f989804.js",
   ],
   pages: {
     "/": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/index-3eeb184a3b01069a.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/index-42327f7ac4cb0b58.js",
     ],
     "/_app": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/_app-ce5ab6de9e19c26b.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/_app-a739417fb3ebd628.js",
     ],
     "/_error": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/_error-1ca214e380344f72.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/_error-a1fe554f661ca2f4.js",
     ],
     "/amp": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/amp-add4644085c74c96.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/amp-30c8a1780ede07c9.js",
     ],
     "/css": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
       "static/css/ded6b86ab9cc0a1f.css",
-      "static/chunks/pages/css-5378d3d7af820c29.js",
+      "static/chunks/pages/css-aa735f5e2aa226b3.js",
     ],
     "/dynamic": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/dynamic-42da64dc2c2fce13.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/dynamic-b10d57b71862877f.js",
     ],
     "/edge-ssr": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/edge-ssr-a2fee5412c431f04.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/edge-ssr-8503741982090fd1.js",
     ],
     "/head": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/head-2b297fce1a4227af.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/head-83fa8b512be5ddac.js",
     ],
     "/hooks": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/hooks-fd524b5719dd436b.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/hooks-ccc88816344bfb3b.js",
     ],
     "/image": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/image-886584a4c844df2f.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/image-3473bd902fc3f53b.js",
     ],
     "/link": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/link-703b373f2d606656.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/link-ddfe4479277cba32.js",
     ],
     "/routerDirect": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/routerDirect-21c04c160c1f5f7e.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/routerDirect-ec52a13385b3d2cd.js",
     ],
     "/script": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/script-7bebe95abbd437dc.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/script-d4167f0109c5dc8f.js",
     ],
     "/withRouter": [
-      "static/chunks/webpack-735eb851a26a56f3.js",
+      "static/chunks/webpack-3059af3822a3ea04.js",
       "static/chunks/framework-114cbddc60b679b8.js",
-      "static/chunks/main-ef7e77f58608e884.js",
-      "static/chunks/pages/withRouter-8bb2114b113c11ef.js",
+      "static/chunks/main-b3fc4deaa3df8ce4.js",
+      "static/chunks/pages/withRouter-c8f30e923eada3a5.js",
     ],
   },
   ampFirstPages: [],
Diff for middleware-r..-manifest.js
@@ -1,2 +1,2 @@
 self.__REACT_LOADABLE_MANIFEST =
-  '{"dynamic.js -> ../components/hello":{"id":5511,"files":["static/chunks/511.403860df3d0944c6.js"]}}';
+  '{"dynamic.js -> ../components/hello":{"id":3685,"files":["static/chunks/370.bb05f43a23695be1.js"]}}';
Diff for middleware.js
@@ -2,7 +2,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [826],
   {
-    /***/ 2539: /***/ (
+    /***/ 9188: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -22,7 +22,7 @@
       __webpack_require__.r(middleware_namespaceObject);
       __webpack_require__.d(middleware_namespaceObject, {
         default: () => middleware,
-      }); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/globals.js
+      }); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/globals.js
 
       async function registerInstrumentation() {
         if (
@@ -92,7 +92,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         // Eagerly fire instrumentation hook to make the startup faster.
         void ensureInstrumentationRegistered();
       }
-      enhanceGlobals(); //# sourceMappingURL=globals.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/error.js
+      enhanceGlobals(); //# sourceMappingURL=globals.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/error.js
 
       class PageSignatureError extends Error {
         constructor({ page }) {
@@ -119,7 +119,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
   Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent
   `);
         }
-      } //# sourceMappingURL=error.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/utils.js
+      } //# sourceMappingURL=error.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/utils.js
 
       /**
        * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any
@@ -254,7 +254,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
             }
           );
         }
-      } //# sourceMappingURL=utils.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js
+      } //# sourceMappingURL=utils.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js
 
       const responseSymbol = Symbol("response");
       const passThroughSymbol = Symbol("passThrough");
@@ -300,7 +300,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
             page: this.sourcePage,
           });
         }
-      } //# sourceMappingURL=fetch-event.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js
+      } //# sourceMappingURL=fetch-event.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js
 
       function detectDomainLocale(domainItems, hostname, detectedLocale) {
         if (!domainItems) return;
@@ -326,7 +326,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
             return item;
           }
         }
-      } //# sourceMappingURL=detect-domain-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.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
@@ -336,7 +336,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
        *   - `/` -> `/`
        */ 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_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+next-packed.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
@@ -364,7 +364,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           query: "",
           hash: "",
         };
-      } //# sourceMappingURL=parse-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.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
@@ -375,7 +375,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         }
         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_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+next-packed.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
@@ -387,7 +387,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         }
         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_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+next-packed.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
@@ -401,7 +401,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         }
         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_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+next-packed.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
@@ -420,7 +420,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         }
         // Add the locale prefix to the path.
         return addPathPrefix(path, "/" + locale);
-      } //# sourceMappingURL=add-locale.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js
 
       function formatNextPathnameInfo(info) {
         let pathname = addLocale(
@@ -444,7 +444,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
             ? 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_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+next-packed.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
@@ -464,7 +464,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           hostname = parsed.hostname;
         } else return;
         return hostname.toLowerCase();
-      } //# sourceMappingURL=get-hostname.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.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
@@ -494,7 +494,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           pathname,
           detectedLocale,
         };
-      } //# sourceMappingURL=normalize-locale-path.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.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
@@ -528,7 +528,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         // If the path without the prefix doesn't start with a `/` we need to add it
         // back to the path to make sure it's a valid path.
         return "/" + withoutPrefix;
-      } //# sourceMappingURL=remove-path-prefix.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js
 
       function getNextPathnameInfo(pathname, options) {
         var _options_nextConfig;
@@ -579,7 +579,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
               : info.pathname;
         }
         return info;
-      } //# sourceMappingURL=get-next-pathname-info.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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+next-packed.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)/;
@@ -806,8 +806,8 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         }
       } //# sourceMappingURL=next-url.js.map
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js
-      var cookies = __webpack_require__(7560); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies.js // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/request.js
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js
+      var cookies = __webpack_require__(909); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/cookies.js // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/request.js
       //# sourceMappingURL=cookies.js.map
 
       const INTERNALS = Symbol("internal request");
@@ -883,7 +883,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         get url() {
           return this[INTERNALS].url;
         }
-      } //# sourceMappingURL=request.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/response.js
+      } //# sourceMappingURL=request.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/spec-extension/response.js
 
       const response_INTERNALS = Symbol("internal response");
       const REDIRECTS = new Set([301, 302, 303, 307, 308]);
@@ -982,7 +982,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
             headers,
           });
         }
-      } //# sourceMappingURL=response.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js
+      } //# sourceMappingURL=response.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js
 
       /**
        * Given a URL as a string and a base URL it will make the URL relative
@@ -995,7 +995,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         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_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/client/components/app-router-headers.js
+      } //# sourceMappingURL=relativize-url.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/client/components/app-router-headers.js
 
       const RSC = "RSC";
       const ACTION = "Next-Action";
@@ -1011,7 +1011,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         [NEXT_ROUTER_STATE_TREE],
         [NEXT_ROUTER_PREFETCH],
       ];
-      const NEXT_RSC_UNION_QUERY = "_rsc"; //# sourceMappingURL=app-router-headers.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/internal-utils.js
+      const NEXT_RSC_UNION_QUERY = "_rsc"; //# sourceMappingURL=app-router-headers.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/internal-utils.js
 
       const INTERNAL_QUERY_NAMES = [
         "__nextFallback",
@@ -1039,7 +1039,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           }
         }
         return isStringUrl ? instance.toString() : instance;
-      } //# sourceMappingURL=internal-utils.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js
+      } //# sourceMappingURL=internal-utils.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js
 
       /**
        * Normalizes an app route so it represents the actual request path. Essentially
@@ -1090,7 +1090,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
        * Since this function is used on full urls it checks `?` for searchParams handling.
        */ function normalizeRscPath(pathname, enabled) {
         return enabled ? pathname.replace(/\.rsc($|\?)/, "$1") : pathname;
-      } //# sourceMappingURL=app-paths.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/lib/constants.js
+      } //# sourceMappingURL=app-paths.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/lib/constants.js
 
       const NEXT_QUERY_PARAM_PREFIX = "nxtP";
       const PRERENDER_REVALIDATE_HEADER = "x-prerender-revalidate";
@@ -1207,7 +1207,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
         metadata: "__next_metadata__",
         metadataRoute: "__next_metadata_route__",
         metadataImageMeta: "__next_metadata_image_meta__",
-      }; //# sourceMappingURL=constants.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/adapter.js
+      }; //# sourceMappingURL=constants.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/adapter.js
 
       class NextRequestHint extends NextRequest {
         constructor(params) {
@@ -1436,14 +1436,14 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
           response: finalResponse,
           waitUntil: Promise.all(event[waitUntilSymbol]),
         };
-      } //# sourceMappingURL=adapter.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/exports/next-response.js // CONCATENATED MODULE: ./middleware.js
+      } //# sourceMappingURL=adapter.js.map // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/dist/esm/server/web/exports/next-response.js // CONCATENATED MODULE: ./middleware.js
 
       // This file is for modularized imports for next/server to get fully-treeshaking.
       //# sourceMappingURL=next-response.js.map
 
       async function middleware() {
         return NextResponse.next();
-      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.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-statsytYeEg%2Fstats-app&matchers=&preferredRegion=&middlewareConfig=e30%3D!
+      } // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.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-statsytYeEg%2Fstats-app&matchers=&preferredRegion=&middlewareConfig=e30%3D!
 
       const mod = { ...middleware_namespaceObject };
       const handler = mod.middleware || mod.default;
@@ -1467,7 +1467,7 @@ Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;
       /***/
     },
 
-    /***/ 7560: /***/ (module) => {
+    /***/ 909: /***/ (module) => {
       "use strict";
 
       var __defProp = Object.defineProperty;
@@ -1864,7 +1864,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__(2539);
+    /******/ var __webpack_exports__ = __webpack_exec__(9188);
     /******/ (_ENTRIES =
       typeof _ENTRIES === "undefined" ? {} : _ENTRIES).middleware_middleware =
       __webpack_exports__;
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-3eeb184a3b01069a.js"],
-  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-1ca214e380344f72.js"],
-  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-add4644085c74c96.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-42327f7ac4cb0b58.js"],
+  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-a1fe554f661ca2f4.js"],
+  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-30c8a1780ede07c9.js"],
   "/css": [
     "static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
-    "static\u002Fchunks\u002Fpages\u002Fcss-5378d3d7af820c29.js",
+    "static\u002Fchunks\u002Fpages\u002Fcss-aa735f5e2aa226b3.js",
   ],
   "/dynamic": [
-    "static\u002Fchunks\u002Fpages\u002Fdynamic-42da64dc2c2fce13.js",
+    "static\u002Fchunks\u002Fpages\u002Fdynamic-b10d57b71862877f.js",
   ],
   "/edge-ssr": [
-    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-a2fee5412c431f04.js",
+    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-8503741982090fd1.js",
   ],
-  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-2b297fce1a4227af.js"],
-  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-fd524b5719dd436b.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-886584a4c844df2f.js"],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-703b373f2d606656.js"],
+  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-83fa8b512be5ddac.js"],
+  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-ccc88816344bfb3b.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-3473bd902fc3f53b.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-ddfe4479277cba32.js"],
   "/routerDirect": [
-    "static\u002Fchunks\u002Fpages\u002FrouterDirect-21c04c160c1f5f7e.js",
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-ec52a13385b3d2cd.js",
   ],
-  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-7bebe95abbd437dc.js"],
+  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-d4167f0109c5dc8f.js"],
   "/withRouter": [
-    "static\u002Fchunks\u002Fpages\u002FwithRouter-8bb2114b113c11ef.js",
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-c8f30e923eada3a5.js",
   ],
   sortedPages: [
     "\u002F",
Diff for _app-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [888],
   {
-    /***/ 3115: /***/ function (
+    /***/ 1113: /***/ 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__(1821);
+          return __webpack_require__(8908);
         },
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 179], function () {
-      return __webpack_exec__(3115), __webpack_exec__(8853);
+      return __webpack_exec__(1113), __webpack_exec__(5233);
     });
     /******/ 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],
   {
-    /***/ 5374: /***/ function (
+    /***/ 3363: /***/ 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__(8665);
+          return __webpack_require__(7433);
         },
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(5374);
+      return __webpack_exec__(3363);
     });
     /******/ 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],
   {
-    /***/ 8510: /***/ function (
+    /***/ 8753: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(9386);
+      module.exports = __webpack_require__(8861);
 
       /***/
     },
 
-    /***/ 7010: /***/ function (
+    /***/ 5348: /***/ 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__(264);
+          return __webpack_require__(313);
         },
       ]);
       if (false) {
@@ -28,7 +28,7 @@
       /***/
     },
 
-    /***/ 9386: /***/ function (module, exports, __webpack_require__) {
+    /***/ 8861: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -44,8 +44,8 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(959)
       );
-      const _ampcontext = __webpack_require__(5810);
-      const _ampmode = __webpack_require__(9433);
+      const _ampcontext = __webpack_require__(6101);
+      const _ampmode = __webpack_require__(443);
       function useAmp() {
         // Don't assign the context value to a variable to save bytes
         return (0, _ampmode.isInAmpMode)(
@@ -67,7 +67,7 @@
       /***/
     },
 
-    /***/ 264: /***/ function (
+    /***/ 313: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -84,7 +84,7 @@
         /* harmony export */
       });
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(8510);
+        __webpack_require__(8753);
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_amp__WEBPACK_IMPORTED_MODULE_0__
@@ -108,7 +108,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(7010);
+      return __webpack_exec__(5348);
     });
     /******/ 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],
   {
-    /***/ 860: /***/ function (
+    /***/ 6437: /***/ 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__(9006);
+          return __webpack_require__(9670);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 9006: /***/ function (
+    /***/ 9670: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -28,7 +28,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4790);
+        __webpack_require__(3935);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -48,7 +48,7 @@
       /***/
     },
 
-    /***/ 4790: /***/ function (module) {
+    /***/ 3935: /***/ function (module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__aUdUq" };
 
@@ -61,7 +61,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(860);
+      return __webpack_exec__(6437);
     });
     /******/ 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],
   {
-    /***/ 3995: /***/ function (
+    /***/ 7753: /***/ 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__(2060);
+          return __webpack_require__(651);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 684: /***/ function (module, exports, __webpack_require__) {
+    /***/ 4253: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -45,7 +45,7 @@
         __webpack_require__(959)
       );
       const _loadable = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1295)
+        __webpack_require__(7139)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -146,7 +146,7 @@
       /***/
     },
 
-    /***/ 3441: /***/ function (
+    /***/ 5185: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -173,7 +173,7 @@
       /***/
     },
 
-    /***/ 1295: /***/ function (
+    /***/ 7139: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -215,7 +215,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(959)
       );
-      const _loadablecontext = __webpack_require__(3441);
+      const _loadablecontext = __webpack_require__(5185);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -450,7 +450,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 2060: /***/ function (
+    /***/ 651: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -466,7 +466,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(6113);
+        __webpack_require__(2677);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -475,11 +475,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         () =>
           __webpack_require__
-            .e(/* import() */ 511)
-            .then(__webpack_require__.bind(__webpack_require__, 5511)),
+            .e(/* import() */ 370)
+            .then(__webpack_require__.bind(__webpack_require__, 3685)),
         {
           loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 5511],
+            webpack: () => [/*require.resolve*/ 3685],
           },
         }
       );
@@ -506,12 +506,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 6113: /***/ function (
+    /***/ 2677: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(684);
+      module.exports = __webpack_require__(4253);
 
       /***/
     },
@@ -522,7 +522,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(3995);
+      return __webpack_exec__(7753);
     });
     /******/ 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],
   {
-    /***/ 6219: /***/ function (
+    /***/ 1902: /***/ 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__(2102);
+          return __webpack_require__(5892);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2102: /***/ function (
+    /***/ 5892: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -48,7 +48,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(6219);
+      return __webpack_exec__(1902);
     });
     /******/ 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],
   {
-    /***/ 2899: /***/ function (
+    /***/ 6955: /***/ 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__(145);
+          return __webpack_require__(9910);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 145: /***/ function (
+    /***/ 9910: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(8412);
+        __webpack_require__(9046);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -68,12 +68,12 @@
       /***/
     },
 
-    /***/ 8412: /***/ function (
+    /***/ 9046: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(2379);
+      module.exports = __webpack_require__(4337);
 
       /***/
     },
@@ -84,7 +84,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(2899);
+      return __webpack_exec__(6955);
     });
     /******/ 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],
   {
-    /***/ 2304: /***/ function (
+    /***/ 7819: /***/ 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__(5715);
+          return __webpack_require__(1052);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5715: /***/ function (
+    /***/ 1052: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -79,7 +79,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(2304);
+      return __webpack_exec__(7819);
     });
     /******/ 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],
   {
-    /***/ 5885: /***/ function (
+    /***/ 801: /***/ 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__(410);
+          return __webpack_require__(7011);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 678: /***/ function (module, exports, __webpack_require__) {
+    /***/ 1690: /***/ function (module, exports, __webpack_require__) {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -36,14 +36,14 @@
         __webpack_require__(959)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2379)
+        __webpack_require__(4337)
       );
-      const _getimgprops = __webpack_require__(884);
-      const _imageconfig = __webpack_require__(4543);
-      const _imageconfigcontext = __webpack_require__(7393);
-      const _warnonce = __webpack_require__(6403);
+      const _getimgprops = __webpack_require__(8800);
+      const _imageconfig = __webpack_require__(942);
+      const _imageconfigcontext = __webpack_require__(5037);
+      const _warnonce = __webpack_require__(2910);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7610)
+        __webpack_require__(8713)
       );
       // This is replaced by webpack define plugin
       const configEnv = {
@@ -346,7 +346,7 @@
       /***/
     },
 
-    /***/ 884: /***/ function (
+    /***/ 8800: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -362,9 +362,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(6403);
-      const _imageblursvg = __webpack_require__(7101);
-      const _imageconfig = __webpack_require__(4543);
+      const _warnonce = __webpack_require__(2910);
+      const _imageblursvg = __webpack_require__(609);
+      const _imageconfig = __webpack_require__(942);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -729,7 +729,7 @@
       /***/
     },
 
-    /***/ 7101: /***/ function (__unused_webpack_module, exports) {
+    /***/ 609: /***/ function (__unused_webpack_module, exports) {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -791,7 +791,7 @@
       /***/
     },
 
-    /***/ 8054: /***/ function (
+    /***/ 3744: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -818,11 +818,11 @@
         },
       });
       const _interop_require_default = __webpack_require__(8266);
-      const _getimgprops = __webpack_require__(884);
-      const _warnonce = __webpack_require__(6403);
-      const _imagecomponent = __webpack_require__(678);
+      const _getimgprops = __webpack_require__(8800);
+      const _warnonce = __webpack_require__(2910);
+      const _imagecomponent = __webpack_require__(1690);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7610)
+        __webpack_require__(8713)
       );
       const unstable_getImgProps = (imgProps) => {
         (0, _warnonce.warnOnce)(
@@ -854,7 +854,7 @@
       /***/
     },
 
-    /***/ 7610: /***/ function (__unused_webpack_module, exports) {
+    /***/ 8713: /***/ function (__unused_webpack_module, exports) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -889,7 +889,7 @@
       /***/
     },
 
-    /***/ 410: /***/ function (
+    /***/ 7011: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -910,8 +910,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(1527);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/image.js
-      var next_image = __webpack_require__(3960);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/image.js
+      var next_image = __webpack_require__(8249);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ var nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -941,12 +941,12 @@
       /***/
     },
 
-    /***/ 3960: /***/ function (
+    /***/ 8249: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(8054);
+      module.exports = __webpack_require__(3744);
 
       /***/
     },
@@ -957,7 +957,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(5885);
+      return __webpack_exec__(801);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [405],
   {
-    /***/ 3558: /***/ function (
+    /***/ 6481: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/",
         function () {
-          return __webpack_require__(8391);
+          return __webpack_require__(8121);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 8391: /***/ function (
+    /***/ 8121: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -44,7 +44,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(3558);
+      return __webpack_exec__(6481);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [644],
   {
-    /***/ 8662: /***/ function (
+    /***/ 7014: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function () {
-          return __webpack_require__(5181);
+          return __webpack_require__(6513);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 4506: /***/ function (module, exports) {
+    /***/ 1385: /***/ function (module, exports) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -86,7 +86,7 @@
       /***/
     },
 
-    /***/ 2918: /***/ function (module, exports, __webpack_require__) {
+    /***/ 4900: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -98,7 +98,7 @@
           return getDomainLocale;
         },
       });
-      const _normalizetrailingslash = __webpack_require__(5311);
+      const _normalizetrailingslash = __webpack_require__(8810);
       const basePath =
         /* unused pure expression or super */ null && (false || "");
       function getDomainLocale(path, locale, locales, domainLocales) {
@@ -122,7 +122,7 @@
       /***/
     },
 
-    /***/ 3461: /***/ function (module, exports, __webpack_require__) {
+    /***/ 3916: /***/ function (module, exports, __webpack_require__) {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -138,17 +138,17 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(959)
       );
-      const _resolvehref = __webpack_require__(3613);
-      const _islocalurl = __webpack_require__(7746);
-      const _formaturl = __webpack_require__(4462);
-      const _utils = __webpack_require__(2195);
-      const _addlocale = __webpack_require__(8033);
-      const _routercontext = __webpack_require__(6508);
-      const _approutercontext = __webpack_require__(6493);
-      const _useintersection = __webpack_require__(8581);
-      const _getdomainlocale = __webpack_require__(2918);
-      const _addbasepath = __webpack_require__(2419);
-      const _routerreducertypes = __webpack_require__(4506);
+      const _resolvehref = __webpack_require__(7691);
+      const _islocalurl = __webpack_require__(7076);
+      const _formaturl = __webpack_require__(3838);
+      const _utils = __webpack_require__(6625);
+      const _addlocale = __webpack_require__(7134);
+      const _routercontext = __webpack_require__(912);
+      const _approutercontext = __webpack_require__(7542);
+      const _useintersection = __webpack_require__(1848);
+      const _getdomainlocale = __webpack_require__(4900);
+      const _addbasepath = __webpack_require__(3657);
+      const _routerreducertypes = __webpack_require__(1385);
       const prefetched = new Set();
       function prefetch(router, href, as, options, appOptions, isAppRouter) {
         if (false) {
@@ -567,7 +567,7 @@
       /***/
     },
 
-    /***/ 8581: /***/ function (module, exports, __webpack_require__) {
+    /***/ 1848: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -580,7 +580,7 @@
         },
       });
       const _react = __webpack_require__(959);
-      const _requestidlecallback = __webpack_require__(3211);
+      const _requestidlecallback = __webpack_require__(2944);
       const hasIntersectionObserver =
         typeof IntersectionObserver === "function";
       const observers = new Map();
@@ -693,7 +693,7 @@
       /***/
     },
 
-    /***/ 5181: /***/ function (
+    /***/ 6513: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -709,7 +709,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4595);
+        __webpack_require__(9495);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -740,12 +740,12 @@
       /***/
     },
 
-    /***/ 4595: /***/ function (
+    /***/ 9495: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(3461);
+      module.exports = __webpack_require__(3916);
 
       /***/
     },
@@ -756,7 +756,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(8662);
+      return __webpack_exec__(7014);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [58],
   {
-    /***/ 2188: /***/ function (
+    /***/ 7288: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/routerDirect",
         function () {
-          return __webpack_require__(4769);
+          return __webpack_require__(762);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 4769: /***/ function (
+    /***/ 762: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5866);
+        __webpack_require__(5664);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -54,12 +54,12 @@
       /***/
     },
 
-    /***/ 5866: /***/ function (
+    /***/ 5664: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(8853);
+      module.exports = __webpack_require__(5233);
 
       /***/
     },
@@ -70,7 +70,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(2188);
+      return __webpack_exec__(7288);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [797],
   {
-    /***/ 1136: /***/ function (
+    /***/ 6695: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/script",
         function () {
-          return __webpack_require__(8013);
+          return __webpack_require__(3486);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 8013: /***/ function (
+    /***/ 3486: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(9096);
+        __webpack
Post job cleanup.
[command]/usr/bin/git version
git version 2.41.0
Temporarily overriding HOME='/home/runner/work/_temp/84901eb5-78e3-40af-977b-36c2cdd8fd78' 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: c075e10a362b284e9f0dfa90e9d89ca5ab261a48

Copy link
Member

Choose a reason for hiding this comment

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

Was this intended to be deleted?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yeah /lib/ is old from how it was published 3 years ago

Copy link
Member

Choose a reason for hiding this comment

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

Same question here - Was this intended to be deleted?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yeah, the gitignore for /dist covers this entirely now.

@gnoff
Copy link
Contributor Author

gnoff commented Jul 11, 2023

@styfle those removals are to clean up unused/unnecessary gitignore rules. Ideally the top level gitignore would suffice for the whole repo. In some cases that isn't yet possible but these two should be good to retire because other updates in the past few years have made them obsolete

@kodiakhq kodiakhq bot merged commit 6839ef3 into vercel:canary Jul 11, 2023
@gnoff gnoff deleted the use-npm-pack branch July 11, 2023 23:36
kodiakhq bot pushed a commit that referenced this pull request Aug 4, 2023
## Vendoring

Updates all module resolvers (node, webpack, nft for entrypoints, and nft for next-server) to consider whether vendored packages are suitable for a given resolve request and resolves them in an import semantics preserving way.

### Problem

Prior to the proposed change, vendoring has been accomplished but aliasing module requests from one specifier to a different specifier. For instance if we are using the built-in react packages for a build/runtime we might replace `require('react')` with `require('next/dist/compiled/react')`.

However this aliasing introduces a subtle bug. The React package has an export map that considers the condition `react-server` and when you require/import `'react'` the conditions should be considered and the underlying implementation of react may differ from one environment to another. In particular if you are resolving with the `react-server` condition you will be resolving the `react.shared-subset.js` implementation of React. This aliasing however breaks these semantics because it turns a bare specifier resolution of `react` with path `'.'` into a resolution with bare specifier `next` with path `'/dist/compiled/react'`. Module resolvers consider export maps of the package being imported from but in the case of `next` there is no consideration for the condition `react-server` and this resolution ends up pulling in the `index.js` implementation inside the React package by doing a simple path resolution to that package folder.

To work around this bug there is a prevalence of encoding the "right" resolution into the import itself. We for instance directly alias `react` to `next/dist/compiled/react/react.shared-subset.js` in certain cases. Other times we directly specify the runtime variant for instance `react-server-dom-webpack/server.edge` rather than `react-server-dom-wegbpack/server`, bypassing the export map altogether by selecting the runtime specific variant. However some code is meant to run in more than one runtime, for instance anything that is part of the client bundle which executes on the server during SSR and in the browser. There are workaround like using `require` conditionally or `import(...)` dynamically but these all have consequences for bundling and treeshaking and they still require careful consideration of the environment you are running in and which variant needs to load.

The result is that there is a large amount of manual pinning of aliases and additional complexity in the code and an inability to trust the package to specify the right resolution potentially causing conflicts in future versions as packages are updated.

It should be noted that aliasing is not in and of itself problematic when we are trying to implement a sort of lightweight forking based on build or runtime conditions. We have good examples of this for instance with the `next/head` package which within App Router should export a noop function. The problem is when we are trying to vendor an entire package and have the package behave semantically the same as if you had installed it yourself via node_modules

### Solution

The fix is seemingly straight forward. We need to stop aliasing these module specifiers and instead customize the resolution process to resolve from a location that will contain the desired vendored packages. We can then start simplifying our imports to use top level package resources and generally and let import conditions control the process of providing the right variant in the right context.

It should be said that vendoring is conditional. Currently we only vendor react pacakges for App Router runtimes. The implementation needs to be able to conditionally determine where a package resolves based on whether we're in an App Router context vs a Page Router one.

Additionally the implementation needs to support alternate packages such as supporting the experimental channel for React when using features that require this version.

### Implementation

The first step is to put the vendored packages inside a node_modules folder. This is essential to the correct resolving of packages by most tools that implement module resolution. For packages that are meant to be vendored, meaning whole package substitution we move the from `next/(src|dist)/compiled/...` to `next/(src|dist)/vendored/node_modules`. The purpose of this move is to clarify that vendored packages operate with a different implementation. This initial PR moves the react dependencies for App Router and `client-only` and `server-only` packages into this folder. In the future we can decide which other precompiled dependencies are best implemented as vendored packages and move them over.

It should be noted that because of our use of `JestWorker` we can get warnings for duplicate package names so we modify the vendored pacakges for react adding either `-vendored` or `-experimental-vendored` depending on which release channel the package came from. While this will require us to alter the request string for a module specifier it will still be treating the react package as the bare specifier and thus use the export map as required.

#### module resolvers
The next thing we need to do is have all systems that do module resolution implement an custom module resolution step. There are five different resolvers that need to be considered

##### node runtime
Updated the require-hook to resolve from the vendored directory without rewriting the request string to alter which package is identified in the bare specifier. For react packages we only do this vendoring if the `process.env.__NEXT_PRIVATE_PREBUNDLED_REACT` envvar is set indicating the runtime is server App Router builds. If we need a single node runtime to be able to conditionally resolve to both vendored and non vendored versions we will need to combine this with aliasing and encode whether the request is for the vendored version in the request string. Our current architecture does not require this though so we will just rely on the envvar for now

##### webpack runtime
Removed all aliases configured for react packages. Rely on the node-runtime to properly alias external react dependencies. Add a resolver plugin `NextAppResolverPlugin` to preempt perform resolution from the context of the vendored directory when encountering a vendored eligible package.

##### turbopack runtime
updated the aliasing rules for react packages to resolve from the vendored directory when in an App Router context. This implementation is all essentially config b/c the capability of doing the resolve from any position (i.e. the vendored directory) already exists

##### nft entrypoints runtime
track chunks to trace for App Router separate from Pages Router. For the trace for App Router chunks use a custom resolve hook in nft which performs the resolution from the vendored directory when appropriate.

##### nft next-server runtime
The current implementation for next-server traces both node_modules and vendored version of packages so all versions are included. This is necessary because the next server can run in either context (App vs Page router) and may depend on any possible variants. We could in theory make two traces rather than a combined one but this will require additional downstream changes so for now it is the most conservative thing to do and is correct

Once we have the correct resolution semantics for all resolvers we can start to remove instances targeting our precompiled instances for instance making `import ... from "next/dist/compiled/react-server-dom-webpack/client"` and replacing with `import ... from "react-server-dom-webpack/client"`

We can also stop requiring runtime specific variants like `import ... from "react-server-dom-webpack/client.edge"` replacing it with the generic export `"react-server-dom-webpack/client"`

There are still two special case aliases related to react
1. In profiling mode (browser only) we rewrite `react-dom` to `react-dom/profiling` and `scheduler/tracing` to `scheduler/tracing-profiling`. This can be moved to using export maps and conditions once react publishses updates that implement this on the package side.
2. When resolving `react-dom` on the server we rewrite this to `react-dom/server-rendering-stub`. This is to avoid loading the entire react-dom client bundle on the server when most of it goes unused. In the next major react will update this top level export to only contain the parts that are usable in any runtime and this alias can be dropped entirely

There are two non-react packages currently be vendored that I have maintained but think we ought to discuss the validity of vendoring. The `client-only` and `server-only` packages are vendored so you can use them without having to remember to install them into your project. This is convenient but does perhaps become surprising if you don't realize what is happening. We should consider not doing this but we can make that decision in another discussion/PR.

#### Webpack Layers
One of the things our webpack config implements for App Router is layers which allow us to have separate instances of packages for the server components graph and the client (ssr) graph. The way we were managing layer selection was a but arbitrary so in addition to the other webpack changes the way you cause a file to always end up in a specific layer is to end it with `.serverlayer`, `.clientlayer` or `.sharedlayer`. These act as layer portals so something in the server layer can import `foo.clientlayer` and that module will in fact be bundled in the client layer.

#### Packaging Changes
Most package managers are fine with this resolution redirect however yarn berry (yarn 2+ with PnP) will not resolve packages that are not defined in a package.json as a dependency. This was not a problem with the prior strategy because it was never resolving these vendored packages it was always resolving the next package and then just pointing to a file within it that happened to be from react or a related package.

To get around this issue vendored packages are both committed in src and packed as a tgz file. Then in the next package.json we define these vendored packages as `optionalDependency` pointing to these tarballs. For yarn PnP these packed versions will get used and resolved rather than the locally commited src files. For other package managers the optional dependencies may or may not get installed but the resolution will still resolve to the checked in src files. This isn't a particularly satisfying implemenation and if pnpm were to be updated to have consistent behavior installing from tarballs we could actually move the vendoring entirely to dependencies and simplify our resolvers a fair bit. But this will require an upstream chagne in pnpm and would take time to propogate in the community since many use older versions

#### Upstream Changes

As part of this work I landed some other changes upstream that were necessary. One was to make our packing use `npm` to match our publishing step. This also allows us to pack `node_modules` folders which is normally not supported but is possible if you define the folder in the package.json's files property.

See: #52563

Additionally nft did not provide a way to use the internal resolver if you were going to use the resolve hook so that is now exposed

See: vercel/nft#354

#### additional PR trivia
* When we prepare to make an isolated next install for integration tests we exclude node_modules by default so we have a special case to allow `/vendored/node_modules`

* The webpack module rules were refactored to be a little easier to reason about and while they do work as is it would be better for some of them to be wrapped in a `oneOf` rule however there is a bug in our css loader implementation that causes these oneOf rules to get deleted. We should fix this up in a followup to make the rules a little more robuts.


## Edits
* I removed `.sharedlayer` since this concept is leaky (not really related to the client/server boundary split) and it is getting refactored anyway soon into a precompiled runtime.
mldchan pushed a commit to mldchan/ml-website that referenced this pull request Aug 7, 2023
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade next from
13.3.0 to 13.4.10.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
<hr/>

- The recommended version is **147 versions** ahead of your current
version.
- The recommended version was released **24 days ago**, on 2023-07-14.


<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>next</b></summary>
    <ul>
      <li>
<b>13.4.10</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10">2023-07-14</a></br><a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10">
Read more </a>
      </li>
      <li>
<b>13.4.10-canary.8</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.8">2023-07-14</a></br><h3>Core
Changes</h3>
<ul>
<li>Catch layout error in global-error: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1803338866" data-permission-text="Title is private"
data-url="vercel/next.js#52654"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52654/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52654">#52654</a></li>
<li>Fix per-entry client reference manifest for grouped and named
segments: <a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1803803255" data-permission-text="Title is private"
data-url="vercel/next.js#52664"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52664/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52664">#52664</a></li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/huozhi/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/huozhi">@ huozhi</a> and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/shuding/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/shuding">@ shuding</a> for
helping!</p>
      </li>
      <li>
<b>13.4.10-canary.7</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.7">2023-07-13</a></br><h3>Core
Changes</h3>
<ul>
<li>Turbopack: OutputAsset trait: <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1801615297"
data-permission-text="Title is private"
data-url="vercel/next.js#52606"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52606/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52606">#52606</a></li>
<li>chore(deps): bump
<code>react@18.3.0-canary-9377e1010-20230712</code>: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1803164219" data-permission-text="Title is private"
data-url="vercel/next.js#52649"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52649/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52649">#52649</a></li>
<li>Ensure root layout only render once per request: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1800689355" data-permission-text="Title is private"
data-url="vercel/next.js#52589"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52589/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52589">#52589</a></li>
<li>Fix bundle path normalization for /index routes: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1803189020" data-permission-text="Title is private"
data-url="vercel/next.js#52650"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52650/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52650">#52650</a></li>
<li>Turobpack: Next.rs API (part 1): <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1789687777"
data-permission-text="Title is private"
data-url="vercel/next.js#52259"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52259/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52259">#52259</a></li>
<li>Clean up promises after resolving: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1803403620" data-permission-text="Title is private"
data-url="vercel/next.js#52656"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52656/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52656">#52656</a></li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/sokra/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/sokra">@ sokra</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/styfle/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/styfle">@ styfle</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/huozhi/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/huozhi">@ huozhi</a>, and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/shuding/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/shuding">@ shuding</a> for
helping!</p>
      </li>
      <li>
<b>13.4.10-canary.6</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.6">2023-07-13</a></br><h3>Core
Changes</h3>
<ul>
<li>Move App Pages rendering into bundle: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1790381278" data-permission-text="Title is private"
data-url="vercel/next.js#52290"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52290/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52290">#52290</a></li>
<li>feat(turbopack): support native webp: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1790305672" data-permission-text="Title is private"
data-url="vercel/next.js#52285"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52285/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52285">#52285</a></li>
<li>Set sizes prop to any for svg icons: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1801863410" data-permission-text="Title is private"
data-url="vercel/next.js#52609"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52609/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52609">#52609</a></li>
</ul>
<h3>Documentation Changes</h3>
<ul>
<li>docs: fix typo in CSS Modules Description: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1801317881" data-permission-text="Title is private"
data-url="vercel/next.js#52599"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52599/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52599">#52599</a></li>
<li>docs: Fix typo in generate-static-params.mdx: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1801088084" data-permission-text="Title is private"
data-url="vercel/next.js#52595"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52595/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52595">#52595</a></li>
<li>docs: move MUI to supported list: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1800579646" data-permission-text="Title is private"
data-url="vercel/next.js#52584"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52584/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52584">#52584</a></li>
<li>docs: Add missing closing tag for react hydration error message.: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1801771615" data-permission-text="Title is private"
data-url="vercel/next.js#52607"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52607/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52607">#52607</a></li>
</ul>
<h3>Misc Changes</h3>
<ul>
<li>Remove unnecessary <code>body-parser</code>: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1800208239" data-permission-text="Title is private"
data-url="vercel/next.js#52580"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52580/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52580">#52580</a></li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/Ryan-Dia/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Ryan-Dia">@ Ryan-Dia</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/Terro216/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/Terro216">@ Terro216</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/wyattjoh/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/wyattjoh">@ wyattjoh</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/kwonoj/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/kwonoj">@ kwonoj</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/balazsorban44/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/balazsorban44">@
balazsorban44</a>, <a class="user-mention notranslate"
data-hovercard-type="user"
data-hovercard-url="/users/anthonyshew/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/anthonyshew">@ anthonyshew</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/suhaotian/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/suhaotian">@ suhaotian</a>, and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/huozhi/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/huozhi">@ huozhi</a> for
helping!</p>
      </li>
      <li>
<b>13.4.10-canary.5</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.5">2023-07-12</a></br><h3>Core
Changes</h3>
<ul>
<li>fix(next/jest): jest can not load server-only code: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1793595885" data-permission-text="Title is private"
data-url="vercel/next.js#52393"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52393/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52393">#52393</a></li>
<li>Turbopack: App Router build POC: <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1782453231"
data-permission-text="Title is private"
data-url="vercel/next.js#52036"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52036/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52036">#52036</a></li>
<li>Avoid loading Next.js config again in render workers: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1800616758" data-permission-text="Title is private"
data-url="vercel/next.js#52587"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52587/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52587">#52587</a></li>
<li>Add more extensions to <code>next-types-plugin</code> for
<code>Node16</code>/<code>NodeNext</code>: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1799374654" data-permission-text="Title is private"
data-url="vercel/next.js#52562"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52562/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52562">#52562</a></li>
<li>feat(<a class="issue-link js-issue-link notranslate" rel="noopener
noreferrer nofollow"
href="https://linear.app/vercel/issue/NEXT-swc">next-swc</a>): report
native bindings load err code: <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1799731510"
data-permission-text="Title is private"
data-url="vercel/next.js#52570"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52570/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52570">#52570</a></li>
</ul>
<h3>Documentation Changes</h3>
<ul>
<li>Fixed grammar in 03-react-essentials.mdx: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1801215960" data-permission-text="Title is private"
data-url="vercel/next.js#52597"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52597/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52597">#52597</a></li>
</ul>
<h3>Example Changes</h3>
<ul>
<li>Update examples: counter.tsx - Don't need empty space: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1800050935" data-permission-text="Title is private"
data-url="vercel/next.js#52576"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52576/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52576">#52576</a></li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/feugy/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/feugy">@ feugy</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/alexkirsz/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/alexkirsz">@ alexkirsz</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/shuding/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/shuding">@ shuding</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/karlhorky/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/karlhorky">@ karlhorky</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/starunaway/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/starunaway">@ starunaway</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/FernandVEYRIER/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/FernandVEYRIER">@
FernandVEYRIER</a>, and <a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/kwonoj/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/kwonoj">@ kwonoj</a> for
helping!</p>
      </li>
      <li>
<b>13.4.10-canary.4</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.4">2023-07-12</a></br><h3>Core
Changes</h3>
<ul>
<li>Turbopack: Source trait: <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1797001553"
data-permission-text="Title is private"
data-url="vercel/next.js#52511"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52511/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52511">#52511</a></li>
<li>Update id handling for fonts: <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1799307870"
data-permission-text="Title is private"
data-url="vercel/next.js#52559"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52559/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52559">#52559</a></li>
<li>feat(turbopack): support swc transform plugins : <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1728115527" data-permission-text="Title is private"
data-url="vercel/next.js#50401"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/50401/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/50401">#50401</a></li>
<li>feat(babel-loader): provide migration help message for babel config:
<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1799423777" data-permission-text="Title is private"
data-url="vercel/next.js#52565"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52565/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52565">#52565</a></li>
<li>Support global-error for ssr fallback: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1799902157" data-permission-text="Title is private"
data-url="vercel/next.js#52573"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52573/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52573">#52573</a></li>
<li>Fix ISR case with bot requests: <a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1800258243"
data-permission-text="Title is private"
data-url="vercel/next.js#52581"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52581/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52581">#52581</a></li>
</ul>
<h3>Documentation Changes</h3>
<ul>
<li>chore(docs): fix a few typos in image loader docs: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1796882111" data-permission-text="Title is private"
data-url="vercel/next.js#52508"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52508/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52508">#52508</a></li>
<li>docs: fix grammar on Server Actions: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1799256469" data-permission-text="Title is private"
data-url="vercel/next.js#52556"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52556/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52556">#52556</a></li>
</ul>
<h3>Misc Changes</h3>
<ul>
<li>fix: <code>not-found.tsx</code> with <code>output: export</code>: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1797728778" data-permission-text="Title is private"
data-url="vercel/next.js#52526"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52526/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52526">#52526</a></li>
<li>use <code>npm pack</code> instead of <code>yarn pack</code>: <a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1799375569" data-permission-text="Title is private"
data-url="vercel/next.js#52563"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52563/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52563">#52563</a></li>
<li>ci: skip build-native for docs only change: <a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="1799828397" data-permission-text="Title is private"
data-url="vercel/next.js#52571"
data-hovercard-type="pull_request"
data-hovercard-url="/vercel/next.js/pull/52571/hovercard"
href="https://snyk.io/redirect/github/vercel/next.js/pull/52571">#52571</a></li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a class="user-mention notranslate"
data-hovercard-type="user" data-hovercard-url="/users/styfle/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/styfle">@ styfle</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/sokra/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/sokra">@ sokra</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/ijjk/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/ijjk">@ ijjk</a>, @ djreillo, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/kwonoj/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/kwonoj">@ kwonoj</a>, <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/gnoff/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/gnoff">@ gnoff</a>, and <a
class="user-mention notranslate" data-hovercard-type="user"
data-hovercard-url="/users/huozhi/hovercard"
data-octo-click="hovercard-link-click"
data-octo-dimensions="link_type:self"
href="https://snyk.io/redirect/github/huozhi">@ huozhi</a> for
helping!</p>
      </li>
      <li>
<b>13.4.10-canary.3</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.3">2023-07-10</a></br><a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.3">
Read more </a>
      </li>
      <li>
<b>13.4.10-canary.2</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.2">2023-07-10</a></br><a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.2">
Read more </a>
      </li>
      <li>
<b>13.4.10-canary.1</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.1">2023-07-10</a></br><a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.1">
Read more </a>
      </li>
      <li>
<b>13.4.10-canary.0</b> - <a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.0">2023-07-07</a></br><a
href="https://snyk.io/redirect/github/vercel/next.js/releases/tag/v13.4.10-canary.0">
Read more </a>
      </li>
      <li>
        <b>13.4.9</b> - 2023-07-06
      </li>
      <li>
        <b>13.4.9-canary.3</b> - 2023-07-06
      </li>
      <li>
        <b>13.4.9-canary.2</b> - 2023-07-05
      </li>
      <li>
        <b>13.4.9-canary.1</b> - 2023-07-04
      </li>
      <li>
        <b>13.4.9-canary.0</b> - 2023-07-04
      </li>
      <li>
        <b>13.4.8</b> - 2023-07-03
      </li>
      <li>
        <b>13.4.8-canary.15</b> - 2023-07-03
      </li>
      <li>
        <b>13.4.8-canary.14</b> - 2023-06-30
      </li>
      <li>
        <b>13.4.8-canary.13</b> - 2023-06-30
      </li>
      <li>
        <b>13.4.8-canary.12</b> - 2023-06-29
      </li>
      <li>
        <b>13.4.8-canary.11</b> - 2023-06-29
      </li>
      <li>
        <b>13.4.8-canary.10</b> - 2023-06-29
      </li>
      <li>
        <b>13.4.8-canary.9</b> - 2023-06-29
      </li>
      <li>
        <b>13.4.8-canary.8</b> - 2023-06-28
      </li>
      <li>
        <b>13.4.8-canary.7</b> - 2023-06-27
      </li>
      <li>
        <b>13.4.8-canary.6</b> - 2023-06-27
      </li>
      <li>
        <b>13.4.8-canary.5</b> - 2023-06-26
      </li>
      <li>
        <b>13.4.8-canary.4</b> - 2023-06-26
      </li>
      <li>
        <b>13.4.8-canary.3</b> - 2023-06-26
      </li>
      <li>
        <b>13.4.8-canary.2</b> - 2023-06-24
      </li>
      <li>
        <b>13.4.8-canary.1</b> - 2023-06-22
      </li>
      <li>
        <b>13.4.8-canary.0</b> - 2023-06-22
      </li>
      <li>
        <b>13.4.7</b> - 2023-06-21
      </li>
      <li>
        <b>13.4.7-canary.4</b> - 2023-06-21
      </li>
      <li>
        <b>13.4.7-canary.3</b> - 2023-06-21
      </li>
      <li>
        <b>13.4.7-canary.2</b> - 2023-06-20
      </li>
      <li>
        <b>13.4.7-canary.1</b> - 2023-06-16
      </li>
      <li>
        <b>13.4.7-canary.0</b> - 2023-06-16
      </li>
      <li>
        <b>13.4.6</b> - 2023-06-15
      </li>
      <li>
        <b>13.4.6-canary.8</b> - 2023-06-15
      </li>
      <li>
        <b>13.4.6-canary.7</b> - 2023-06-15
      </li>
      <li>
        <b>13.4.6-canary.6</b> - 2023-06-15
      </li>
      <li>
        <b>13.4.6-canary.5</b> - 2023-06-14
      </li>
      <li>
        <b>13.4.6-canary.4</b> - 2023-06-14
      </li>
      <li>
        <b>13.4.6-canary.3</b> - 2023-06-14
      </li>
      <li>
        <b>13.4.6-canary.2</b> - 2023-06-13
      </li>
      <li>
        <b>13.4.6-canary.0</b> - 2023-06-12
      </li>
      <li>
        <b>13.4.5</b> - 2023-06-10
      </li>
      <li>
        <b>13.4.5-canary.12</b> - 2023-06-10
      </li>
      <li>
        <b>13.4.5-canary.11</b> - 2023-06-10
      </li>
      <li>
        <b>13.4.5-canary.9</b> - 2023-06-09
      </li>
      <li>
        <b>13.4.5-canary.8</b> - 2023-06-08
      </li>
      <li>
        <b>13.4.5-canary.7</b> - 2023-06-07
      </li>
      <li>
        <b>13.4.5-canary.6</b> - 2023-06-05
      </li>
      <li>
        <b>13.4.5-canary.5</b> - 2023-06-05
      </li>
      <li>
        <b>13.4.5-canary.4</b> - 2023-06-02
      </li>
      <li>
        <b>13.4.5-canary.3</b> - 2023-06-01
      </li>
      <li>
        <b>13.4.5-canary.2</b> - 2023-05-30
      </li>
      <li>
        <b>13.4.5-canary.1</b> - 2023-05-30
      </li>
      <li>
        <b>13.4.5-canary.0</b> - 2023-05-26
      </li>
      <li>
        <b>13.4.4</b> - 2023-05-25
      </li>
      <li>
        <b>13.4.4-canary.13</b> - 2023-05-25
      </li>
      <li>
        <b>13.4.4-canary.12</b> - 2023-05-25
      </li>
      <li>
        <b>13.4.4-canary.11</b> - 2023-05-25
      </li>
      <li>
        <b>13.4.4-canary.10</b> - 2023-05-25
      </li>
      <li>
        <b>13.4.4-canary.9</b> - 2023-05-24
      </li>
      <li>
        <b>13.4.4-canary.8</b> - 2023-05-24
      </li>
      <li>
        <b>13.4.4-canary.7</b> - 2023-05-24
      </li>
      <li>
        <b>13.4.4-canary.6</b> - 2023-05-23
      </li>
      <li>
        <b>13.4.4-canary.5</b> - 2023-05-23
      </li>
      <li>
        <b>13.4.4-canary.4</b> - 2023-05-23
      </li>
      <li>
        <b>13.4.4-canary.3</b> - 2023-05-23
      </li>
      <li>
        <b>13.4.4-canary.2</b> - 2023-05-23
      </li>
      <li>
        <b>13.4.4-canary.1</b> - 2023-05-22
      </li>
      <li>
        <b>13.4.4-canary.0</b> - 2023-05-19
      </li>
      <li>
        <b>13.4.3</b> - 2023-05-19
      </li>
      <li>
        <b>13.4.3-canary.3</b> - 2023-05-19
      </li>
      <li>
        <b>13.4.3-canary.2</b> - 2023-05-17
      </li>
      <li>
        <b>13.4.3-canary.1</b> - 2023-05-16
      </li>
      <li>
        <b>13.4.3-canary.0</b> - 2023-05-12
      </li>
      <li>
        <b>13.4.2</b> - 2023-05-11
      </li>
      <li>
        <b>13.4.2-canary.6</b> - 2023-05-11
      </li>
      <li>
        <b>13.4.2-canary.5</b> - 2023-05-11
      </li>
      <li>
        <b>13.4.2-canary.4</b> - 2023-05-10
      </li>
      <li>
        <b>13.4.2-canary.3</b> - 2023-05-09
      </li>
      <li>
        <b>13.4.2-canary.2</b> - 2023-05-08
      </li>
      <li>
        <b>13.4.2-canary.1</b> - 2023-05-08
      </li>
      <li>
        <b>13.4.2-canary.0</b> - 2023-05-08
      </li>
      <li>
        <b>13.4.1</b> - 2023-05-05
      </li>
      <li>
        <b>13.4.1-canary.2</b> - 2023-05-05
      </li>
      <li>
        <b>13.4.1-canary.1</b> - 2023-05-04
      </li>
      <li>
        <b>13.4.1-canary.0</b> - 2023-05-04
      </li>
      <li>
        <b>13.4.0</b> - 2023-05-04
      </li>
      <li>
        <b>13.3.5-canary.12</b> - 2023-05-04
      </li>
      <li>
        <b>13.3.5-canary.11</b> - 2023-05-04
      </li>
      <li>
        <b>13.3.5-canary.10</b> - 2023-05-04
      </li>
      <li>
        <b>13.3.5-canary.9</b> - 2023-05-04
      </li>
      <li>
        <b>13.3.5-canary.8</b> - 2023-05-04
      </li>
      <li>
        <b>13.3.5-canary.7</b> - 2023-05-03
      </li>
      <li>
        <b>13.3.5-canary.6</b> - 2023-05-03
      </li>
      <li>
        <b>13.3.5-canary.5</b> - 2023-05-03
      </li>
      <li>
        <b>13.3.5-canary.4</b> - 2023-05-03
      </li>
      <li>
        <b>13.3.5-canary.3</b> - 2023-05-02
      </li>
      <li>
        <b>13.3.5-canary.2</b> - 2023-05-02
      </li>
      <li>
        <b>13.3.5-canary.1</b> - 2023-05-01
      </li>
      <li>
        <b>13.3.5-canary.0</b> - 2023-05-01
      </li>
      <li>
        <b>13.3.4</b> - 2023-05-01
      </li>
      <li>
        <b>13.3.4-canary.0</b> - 2023-05-01
      </li>
      <li>
        <b>13.3.3</b> - 2023-05-01
      </li>
      <li>
        <b>13.3.3-canary.2</b> - 2023-05-01
      </li>
      <li>
        <b>13.3.3-canary.1</b> - 2023-04-30
      </li>
      <li>
        <b>13.3.3-canary.0</b> - 2023-04-30
      </li>
      <li>
        <b>13.3.2</b> - 2023-04-29
      </li>
      <li>
        <b>13.3.2-canary.14</b> - 2023-04-29
      </li>
      <li>
        <b>13.3.2-canary.13</b> - 2023-04-29
      </li>
      <li>
        <b>13.3.2-canary.12</b> - 2023-04-28
      </li>
      <li>
        <b>13.3.2-canary.11</b> - 2023-04-27
      </li>
      <li>
        <b>13.3.2-canary.10</b> - 2023-04-27
      </li>
      <li>
        <b>13.3.2-canary.9</b> - 2023-04-27
      </li>
      <li>
        <b>13.3.2-canary.8</b> - 2023-04-27
      </li>
      <li>
        <b>13.3.2-canary.7</b> - 2023-04-26
      </li>
      <li>
        <b>13.3.2-canary.6</b> - 2023-04-25
      </li>
      <li>
        <b>13.3.2-canary.5</b> - 2023-04-25
      </li>
      <li>
        <b>13.3.2-canary.4</b> - 2023-04-24
      </li>
      <li>
        <b>13.3.2-canary.3</b> - 2023-04-24
      </li>
      <li>
        <b>13.3.2-canary.2</b> - 2023-04-24
      </li>
      <li>
        <b>13.3.1</b> - 2023-04-21
      </li>
      <li>
        <b>13.3.1-canary.19</b> - 2023-04-21
      </li>
      <li>
        <b>13.3.1-canary.18</b> - 2023-04-21
      </li>
      <li>
        <b>13.3.1-canary.17</b> - 2023-04-20
      </li>
      <li>
        <b>13.3.1-canary.16</b> - 2023-04-19
      </li>
      <li>
        <b>13.3.1-canary.15</b> - 2023-04-19
      </li>
      <li>
        <b>13.3.1-canary.14</b> - 2023-04-18
      </li>
      <li>
        <b>13.3.1-canary.13</b> - 2023-04-18
      </li>
      <li>
        <b>13.3.1-canary.12</b> - 2023-04-18
      </li>
      <li>
        <b>13.3.1-canary.11</b> - 2023-04-17
      </li>
      <li>
        <b>13.3.1-canary.10</b> - 2023-04-17
      </li>
      <li>
        <b>13.3.1-canary.9</b> - 2023-04-17
      </li>
      <li>
        <b>13.3.1-canary.8</b> - 2023-04-15
      </li>
      <li>
        <b>13.3.1-canary.7</b> - 2023-04-14
      </li>
      <li>
        <b>13.3.1-canary.6</b> - 2023-04-13
      </li>
      <li>
        <b>13.3.1-canary.5</b> - 2023-04-12
      </li>
      <li>
        <b>13.3.1-canary.4</b> - 2023-04-10
      </li>
      <li>
        <b>13.3.1-canary.3</b> - 2023-04-08
      </li>
      <li>
        <b>13.3.1-canary.2</b> - 2023-04-07
      </li>
      <li>
        <b>13.3.1-canary.1</b> - 2023-04-07
      </li>
      <li>
        <b>13.3.1-canary.0</b> - 2023-04-07
      </li>
      <li>
        <b>13.3.0</b> - 2023-04-06
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/vercel/next.js/releases">next
GitHub release notes</a>
  </details>
</details>


<details>
  <summary><b>Commit messages</b></summary>
  </br>
  <details>
    <summary>Package name: <b>next</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/c2a54aaecb77050962803af0947be276e4835a90">c2a54aa</a>
v13.4.10</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/62aa2d221c6fbd943ad43a6010990bc31b78d281">62aa2d2</a>
v13.4.10-canary.8</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/b957f52be3987abe958254bc5fa27bf04ffbeb6d">b957f52</a>
Fix per-entry client reference manifest for grouped and named segments
(#52664)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/79227ee74a09e17fb71658afe99e41d7ddb60adb">79227ee</a>
Catch layout error in global-error (#52654)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/3cde104d642b1448d32d7fc18598300992affe39">3cde104</a>
v13.4.10-canary.7</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/8822630dd6ac28d6fe4e8c3b643756964aa57f1c">8822630</a>
Clean up promises after resolving (#52656)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/ca1129c46310708cf721eeeb55599b2635c93e7b">ca1129c</a>
Turobpack: Next.rs API (part 1) (#52259)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/88084e6b7a5e1cbf5445d1374bf6ca27e9058a0a">88084e6</a>
Fix bundle path normalization for /index routes (#52650)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/9313c51bc424aa29b683138ba09e519c2c16b550">9313c51</a>
Ensure root layout only render once per request (#52589)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/76cb8cf361a90ba2d74c56c29937a17519376f1d">76cb8cf</a>
chore(deps): bump &#x60;react@18.3.0-canary-9377e1010-20230712&#x60;
(#52649)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/ee28f947fb91c56b54ad3001a65dc52ba050c15d">ee28f94</a>
Turbopack: OutputAsset trait (#52606)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/c56915842a41ce5cd1328b36dff44004352c9f15">c569158</a>
v13.4.10-canary.6</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/76eec86a6b08c6bdf43b03202b32c351597ce5c6">76eec86</a>
Set sizes prop to any for svg icons (#52609)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/4c4bee7112a8b8fa28e8efc5560094e6fa24801f">4c4bee7</a>
Remove unnecessary &#x60;body-parser&#x60; (#52580)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/b89424e46171bfc3686f2d8085ec1070eb351bf3">b89424e</a>
docs: Add missing closing tag for react hydration error message.
(#52607)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/82cf9a670e8346687872f613a73db3ad2cc47a7c">82cf9a6</a>
docs: move MUI to supported list (#52584)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/e1baffcec2cab3afd6efed69dfa3939275f6276f">e1baffc</a>
feat(turbopack): support native webp (#52285)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/bb0fecc68f998f8df59a759dc86db563d49583d1">bb0fecc</a>
Move App Pages rendering into bundle (#52290)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/f321864c5e42a8dac74540ccf05997d6a53d8a57">f321864</a>
docs: Fix typo in generate-static-params.mdx (#52595)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/967c501c7b3a9f6d505593cd9310d7782fd07ef6">967c501</a>
docs: fix typo in CSS Modules Description (#52599)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/22cb1bf0279ddfc1c584bb38335d699a5e959c1f">22cb1bf</a>
v13.4.10-canary.5</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/d93231eb195235b4d05c7aee5cb89eff9b949482">d93231e</a>
feat(next-swc): report native bindings load err code (#52570)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/1989f4943d6abd6bcae0c82144fb05103d322f87">1989f49</a>
Fixed grammar in 03-react-essentials.mdx (#52597)</li>
<li><a
href="https://snyk.io/redirect/github/vercel/next.js/commit/3c3f50ddde5aa937e7bbbed6091715cc531a34f0">3c3f50d</a>
Update examples: counter.tsx - Don&#x27;t need empty space (#52576)</li>
    </ul>

<a
href="https://snyk.io/redirect/github/vercel/next.js/compare/79031e608a1b871ab4f3f3228cc1a66d93bf470b...c2a54aaecb77050962803af0947be276e4835a90">Compare</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJmNzY4ZDYyNi1kMzI2LTQ0OTQtYTdmMS02MDc1MGQ5MDM2YWUiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImY3NjhkNjI2LWQzMjYtNDQ5NC1hN2YxLTYwNzUwZDkwMzZhZSJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/mldkyt/project/3ccd7b12-4b33-4fd0-b25e-55cacf6ab277?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/mldkyt/project/3ccd7b12-4b33-4fd0-b25e-55cacf6ab277/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/mldkyt/project/3ccd7b12-4b33-4fd0-b25e-55cacf6ab277/settings/integration?pkg&#x3D;next&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"f768d626-d326-4494-a7f1-60750d9036ae","prPublicId":"f768d626-d326-4494-a7f1-60750d9036ae","dependencies":[{"name":"next","from":"13.3.0","to":"13.4.10"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/mldkyt/project/3ccd7b12-4b33-4fd0-b25e-55cacf6ab277?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"3ccd7b12-4b33-4fd0-b25e-55cacf6ab277","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":147,"publishedDate":"2023-07-14T09:21:07.604Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 11, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
created-by: Next.js team PRs by the Next.js team. locked
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants