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

Remove invalid fallback revalidate value #69990

Merged
merged 4 commits into from
Sep 11, 2024
Merged

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Sep 11, 2024

This removes our invalid revalidate default fallback when a revalidate value isn't returned from render as render should always return a valid value. We also already have an invariant when an invalid revalidate value is returned we just need to ensure that case could be hit properly. This also fixes some invalid test cases which were sending invalid headers.

x-ref: slack thread

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. type: next labels Sep 11, 2024
@ijjk
Copy link
Member Author

ijjk commented Sep 11, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
buildDuration 17.6s 16s N/A
buildDurationCached 8.7s 7.5s N/A
nodeModulesSize 358 MB 358 MB ⚠️ +626 B
nextStartRea..uration (ms) 426ms 413ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
1062.HASH.js gzip 169 B 168 B N/A
2cd9da90-HASH.js gzip 52 kB 52 kB N/A
5867-HASH.js gzip 42.5 kB 42.5 kB N/A
8503-HASH.js gzip 5.25 kB 5.25 kB N/A
framework-HASH.js gzip 56.9 kB 56.9 kB N/A
main-app-HASH.js gzip 225 B 224 B N/A
main-HASH.js gzip 32.6 kB 32.6 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 191 B 191 B
amp-HASH.js gzip 511 B 510 B N/A
css-HASH.js gzip 342 B 343 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 265 B 266 B N/A
head-HASH.js gzip 362 B 364 B N/A
hooks-HASH.js gzip 392 B 392 B
image-HASH.js gzip 4.4 kB 4.4 kB
index-HASH.js gzip 268 B 267 B N/A
link-HASH.js gzip 2.81 kB 2.81 kB N/A
routerDirect..HASH.js gzip 329 B 327 B N/A
script-HASH.js gzip 398 B 396 B N/A
withRouter-HASH.js gzip 325 B 324 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 5.28 kB 5.28 kB
Client Build Manifests
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
_buildManifest.js gzip 749 B 749 B
Overall change 749 B 749 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
index.html gzip 522 B 522 B
link.html gzip 535 B 537 B N/A
withRouter.html gzip 518 B 518 B
Overall change 1.04 kB 1.04 kB
Edge SSR bundle Size
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
edge-ssr.js gzip 128 kB 128 kB N/A
page.js gzip 180 kB 180 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
middleware-b..fest.js gzip 673 B 668 B N/A
middleware-r..fest.js gzip 156 B 157 B N/A
middleware.js gzip 29.9 kB 29.9 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
973-experime...dev.js gzip 322 B 322 B
973.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 317 kB 317 kB
app-page-exp..prod.js gzip 125 kB 125 kB
app-page-tur..prod.js gzip 139 kB 139 kB
app-page-tur..prod.js gzip 134 kB 134 kB
app-page.run...dev.js gzip 305 kB 305 kB
app-page.run..prod.js gzip 121 kB 121 kB
app-route-ex...dev.js gzip 31.2 kB 31.2 kB
app-route-ex..prod.js gzip 21.1 kB 21.1 kB
app-route-tu..prod.js gzip 21.1 kB 21.1 kB
app-route-tu..prod.js gzip 20.9 kB 20.9 kB
app-route.ru...dev.js gzip 32.9 kB 32.9 kB
app-route.ru..prod.js gzip 20.9 kB 20.9 kB
pages-api-tu..prod.js gzip 9.62 kB 9.62 kB
pages-api.ru...dev.js gzip 11.5 kB 11.5 kB
pages-api.ru..prod.js gzip 9.61 kB 9.61 kB
pages-turbo...prod.js gzip 20.8 kB 20.8 kB N/A
pages.runtim...dev.js gzip 26.4 kB 26.4 kB N/A
pages.runtim..prod.js gzip 20.8 kB 20.8 kB N/A
server.runti..prod.js gzip 57.7 kB 57.7 kB N/A
Overall change 1.32 MB 1.32 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js ijjk/cleanup-invalid-default Change
0.pack gzip 1.66 MB 1.65 MB N/A
index.pack gzip 131 kB 132 kB ⚠️ +559 B
Overall change 131 kB 132 kB ⚠️ +559 B
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
       /***/
     },
 
-    /***/ 1661: /***/ (
+    /***/ 1167: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -30,7 +30,7 @@
         default: () => /* binding */ nHandler,
       });
 
-      // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsKbgh33%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsKbgh33%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
       var page_next_edge_ssr_entry_namespaceObject = {};
       __webpack_require__.r(page_next_edge_ssr_entry_namespaceObject);
       __webpack_require__.d(page_next_edge_ssr_entry_namespaceObject, {
@@ -69,35 +69,35 @@
         tree: () => tree,
       });
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/web/globals.js
-      var globals = __webpack_require__(578);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
-      var adapter = __webpack_require__(8519);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
-      var render = __webpack_require__(2492);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
-      var incremental_cache = __webpack_require__(729);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
-      var app_render = __webpack_require__(1993);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
-      var module_compiled = __webpack_require__(7055);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/route-kind.js
-      var route_kind = __webpack_require__(1384);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/client/components/error-boundary.js
-      var error_boundary = __webpack_require__(8292);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/app-render/entry-base.js + 9 modules
-      var entry_base = __webpack_require__(9147); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsKbgh33%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/web/globals.js
+      var globals = __webpack_require__(1603);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+      var adapter = __webpack_require__(6148);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
+      var render = __webpack_require__(301);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
+      var incremental_cache = __webpack_require__(6802);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
+      var app_render = __webpack_require__(1887);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+      var module_compiled = __webpack_require__(6217);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/route-kind.js
+      var route_kind = __webpack_require__(8636);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/client/components/error-boundary.js
+      var error_boundary = __webpack_require__(746);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/app-render/entry-base.js + 9 modules
+      var entry_base = __webpack_require__(6729); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsKbgh33%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
       const component0 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 6908)
+          __webpack_require__.bind(__webpack_require__, 176)
         );
       const component1 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 4482)
+          __webpack_require__.bind(__webpack_require__, 5078)
         );
       const page2 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 3073)
+          __webpack_require__.bind(__webpack_require__, 2934)
         );
 
       // We inject the tree and pages here so that we can use them in the route
@@ -163,12 +163,12 @@
       });
 
       //# sourceMappingURL=app-page.js.map
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/lib/page-types.js
-      var page_types = __webpack_require__(5067);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/app-render/encryption-utils.js
-      var encryption_utils = __webpack_require__(9845);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/esm/server/app-render/action-utils.js
-      var action_utils = __webpack_require__(4670); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRzS2JnaDMzL3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHNLYmdoMzMvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6ZmFsc2UsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzS2JnaDMzL3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzS2JnaDMzJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/lib/page-types.js
+      var page_types = __webpack_require__(7743);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+      var encryption_utils = __webpack_require__(659);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/esm/server/app-render/action-utils.js
+      var action_utils = __webpack_require__(778); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRzS2JnaDMzL3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHNLYmdoMzMvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6ZmFsc2UsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzS2JnaDMzL3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzS2JnaDMzJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
       var _self___RSC_MANIFEST;
 
       const incrementalCacheHandler = null;
@@ -432,50 +432,50 @@
       /***/
     },
 
-    /***/ 2243: /***/ (
+    /***/ 5450: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8585)
+        __webpack_require__.bind(__webpack_require__, 753)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9467)
+        __webpack_require__.bind(__webpack_require__, 6866)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1744)
+        __webpack_require__.bind(__webpack_require__, 7099)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9329)
+        __webpack_require__.bind(__webpack_require__, 2064)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7969)
+        __webpack_require__.bind(__webpack_require__, 7531)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4252)
+        __webpack_require__.bind(__webpack_require__, 8704)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5685)
+        __webpack_require__.bind(__webpack_require__, 1335)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 853)
+        __webpack_require__.bind(__webpack_require__, 2618)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1843)
+        __webpack_require__.bind(__webpack_require__, 7794)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8149)
+        __webpack_require__.bind(__webpack_require__, 7094)
       );
 
       /***/
     },
 
-    /***/ 5315: /***/ () => {
+    /***/ 9641: /***/ () => {
       /***/
     },
 
-    /***/ 3073: /***/ (
+    /***/ 2934: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -495,7 +495,7 @@
       /***/
     },
 
-    /***/ 6908: /***/ (
+    /***/ 176: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -507,7 +507,7 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(7669);
+        __webpack_require__(2843);
 
       function RootLayout({ children }) {
         return /*#__PURE__*/ (0,
@@ -526,7 +526,7 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [319, 704], () => __webpack_exec__(1661));
+    /******/ __webpack_require__.O(0, [819, 397], () => __webpack_exec__(1167));
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ (_ENTRIES = typeof _ENTRIES === "undefined" ? {} : _ENTRIES)[
       "middleware_app/app-edge-ssr/page"
Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [8358],
   {
-    /***/ 8908: /***/ (
+    /***/ 8176: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(2111);
+          return __webpack_require__(934);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 6308: /***/ (module, exports, __webpack_require__) => {
+    /***/ 5057: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(1955)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2383)
+        __webpack_require__(7163)
       );
-      const _getimgprops = __webpack_require__(5640);
-      const _imageconfig = __webpack_require__(2758);
-      const _imageconfigcontextsharedruntime = __webpack_require__(899);
-      const _warnonce = __webpack_require__(3878);
-      const _routercontextsharedruntime = __webpack_require__(869);
+      const _getimgprops = __webpack_require__(5447);
+      const _imageconfig = __webpack_require__(1650);
+      const _imageconfigcontextsharedruntime = __webpack_require__(1953);
+      const _warnonce = __webpack_require__(5054);
+      const _routercontextsharedruntime = __webpack_require__(4445);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6501)
+        __webpack_require__(7406)
       );
-      const _usemergedref = __webpack_require__(3994);
+      const _usemergedref = __webpack_require__(3303);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 3994: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3303: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -440,7 +440,7 @@
       /***/
     },
 
-    /***/ 5640: /***/ (
+    /***/ 5447: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -456,9 +456,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(3878);
-      const _imageblursvg = __webpack_require__(4317);
-      const _imageconfig = __webpack_require__(2758);
+      const _warnonce = __webpack_require__(5054);
+      const _imageblursvg = __webpack_require__(1731);
+      const _imageconfig = __webpack_require__(1650);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -830,7 +830,7 @@
       /***/
     },
 
-    /***/ 4317: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1731: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -885,7 +885,7 @@
       /***/
     },
 
-    /***/ 8580: /***/ (
+    /***/ 9833: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -912,10 +912,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(9608);
-      const _getimgprops = __webpack_require__(5640);
-      const _imagecomponent = __webpack_require__(6308);
+      const _getimgprops = __webpack_require__(5447);
+      const _imagecomponent = __webpack_require__(5057);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6501)
+        __webpack_require__(7406)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -947,7 +947,7 @@
       /***/
     },
 
-    /***/ 6501: /***/ (__unused_webpack_module, exports) => {
+    /***/ 7406: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -982,7 +982,7 @@
       /***/
     },
 
-    /***/ 2111: /***/ (
+    /***/ 934: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -999,8 +999,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-7771d3a7-20240827/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(5815);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_h4bgdqagqtli4q7bnw2ajnn4vm/node_modules/next/image.js
-      var next_image = __webpack_require__(1878);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-7771d3a7-20240827_re_qz7eh3ruj3cscolfxbcb265hza/node_modules/next/image.js
+      var next_image = __webpack_require__(7649);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1030,12 +1030,12 @@
       /***/
     },
 
-    /***/ 1878: /***/ (
+    /***/ 7649: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(8580);
+      module.exports = __webpack_require__(9833);
 
       /***/
     },
@@ -1045,7 +1045,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(8908)
+      __webpack_exec__(8176)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 5867-HASH.js

Diff too large to display

Diff for pages-turbo...time.prod.js
@@ -28,5 +28,5 @@ See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerend
 To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
 To revalidate as soon as possible, you can set the value to \`1\`.`);e.revalidate>31536e3&&console.warn(`Warning: A page's revalidate option was set to more than a year for ${n.url}. This may have been done in error.
 To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),t=e.revalidate}else throw Error(`A page's revalidate option must be seconds expressed as a natural number for ${n.url}. Mixed numbers, such as '${e.revalidate}', cannot be used.
-Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`)}else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${n.url}`)}else t=!1;if(m.pageProps=Object.assign({},m.pageProps,"props"in e?e.props:void 0),v.revalidate=t,v.pageData=m,v.isNotFound)return new eT(null,{metadata:v})}if(M&&(m.__N_SSP=!0),M&&!ep){let e;let t=!1;try{e=await (0,eo.getTracer)().trace(es.xj.getServerSideProps,{spanName:`getServerSideProps ${a}`,attributes:{"next.route":a}},async()=>M({req:n,res:s,query:i,resolvedUrl:l.resolvedUrl,...ex?{params:F}:void 0,...!1!==h?{draftMode:!0,preview:!0,previewData:h}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale}))}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(R.Lx);e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${a}`);if(e.unstable_redirect)throw Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${a}`);if(r.length)throw Error(e0("getServerSideProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');return v.isNotFound=!0,new eT(null,{metadata:v})}if("redirect"in e&&"object"==typeof e.redirect&&(e1(e.redirect,n,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),v.isRedirect=!0),t&&(e.props=await e.props),(S||ef)&&!$(a,"getServerSideProps",e.props))throw Error("invariant: getServerSideProps did not return valid props. Please report this.");m.pageProps=Object.assign({},m.pageProps,e.props),v.pageData=m}if(D&&!em||v.isRedirect)return new eT(JSON.stringify(m),{metadata:v});if(ep&&(m.pageProps={}),Q(s)&&!em)return new eT(null,{metadata:v});let e4=E;if(eS&&ex){let e;let t=(e=(function(e){let t=/^\/index(\/|$)/.test(e)&&!G(e)?"/index"+e:"/"===e?"/index":U(e);{let{posix:e}=r("path"),n=e.normalize(t);if(n!==t)throw new Z("Requested and resolved page mismatch: "+t+" "+n)}return t})(a).replace(/\\/g,"/")).startsWith("/index/")&&!G(e)?e.slice(6):"/index"!==e?e:"/";t in e4.pages&&(e4={...e4,pages:{...e4.pages,[t]:[...e4.pages[t],...e4.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:e4.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let e2=({children:e})=>eE?e:(0,y.jsx)("div",{id:"__next",children:e}),e3=async()=>{let e,t;async function r(e){let t=async(t={})=>{if(eJ.err&&L)return e&&e(ea,ed),{html:await eZ((0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})})),head:eN};if(S&&(m.router||m.Component))throw Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props");let{App:r,Component:n}="function"==typeof t?{App:ea,Component:t(ed)}:{App:t.enhanceApp?t.enhanceApp(ea):ea,Component:t.enhanceComponent?t.enhanceComponent(ed):ed},o=await e(r,n);return await o.allReady,{html:await eu(o),head:eN}},r={...eJ,renderPage:t},n=await X(el,r);if(Q(s)&&!em)return null;if(!n||"string"!=typeof n.html)throw Error(`"${V(el)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`);return{docProps:n,documentCtx:r}}el.__NEXT_BUILTIN_DOCUMENT__;let n=(e,t)=>{let r=e||ea,n=t||ed;return eJ.err&&L?(0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})}):(0,y.jsx)(e2,{children:(0,y.jsx)(eW,{children:eK(r,n,{...m,router:eP})})})},o=async(e,t)=>{let r=n(e,t);return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eo.getTracer)().trace(es.k0.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:P(),element:r})},a=!!el.getInitialProps,[i,l]=await Promise.all([eZ(eX()),(async()=>{if(a){if(null===(e=await r(o)))return null;let{docProps:t}=e;return t.html}{e={};let t=await o(ea,ed);return await t.allReady,eu(t)}})()]);if(null===l)return null;let{docProps:d}=e||{};return a?(t=d.styles,eN=d.head):(t=eC.styles(),eC.flush()),{contentHTML:i+l,documentElement:e=>(0,y.jsx)(el,{...e,...d}),head:eN,headTags:[],styles:t}};null==(u=(0,eo.getTracer)().getRootSpanAttributes())||u.set("next.route",l.page);let e8=await (0,eo.getTracer)().trace(es.xj.renderDocument,{spanName:`render route (pages) ${l.page}`,attributes:{"next.route":l.page}},async()=>e3());if(!e8)return new eT(null,{metadata:v});let e9=new Set,e6=new Set;for(let e of eI){let t=T[e];t&&(e9.add(t.id),t.files.forEach(e=>{e6.add(e)}))}let e5=ej.hybrid,{assetPrefix:e7,buildId:te,customServer:tt,defaultLocale:tr,disableOptimizedLoading:tn,domainLocales:to,locale:ts,locales:ta,runtimeConfig:ti}=l,tl={__NEXT_DATA__:{props:m,page:a,query:i,buildId:te,assetPrefix:""===e7?void 0:e7,runtimeConfig:ti,nextExport:!0===eG||void 0,autoExport:!0===eS||void 0,isFallback:ep,isExperimentalCompile:ee,dynamicIds:0===e9.size?void 0:Array.from(e9),err:l.err?(p=l.err,S?(g="server",g=p[eV]||"server",{name:p.name,source:g,message:e$()(p.message),stack:p.stack,digest:p.digest}):{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}):void 0,gsp:!!N||void 0,gssp:!!M||void 0,customServer:tt,gip:!!ev||void 0,appGip:!eg||void 0,locale:ts,locales:ta,defaultLocale:tr,domainLocales:to,isPreview:!0===f||void 0,notFoundSrcPage:eh&&S?eh:void 0},strictNextHead:l.strictNextHead,buildManifest:e4,docComponentsRendered:{},dangerousAsPath:eP.asPath,canonicalBase:!l.ampPath&&et(n,"didStripLocale")?`${l.canonicalBase||""}/${l.locale}`:l.canonicalBase,ampPath:w,inAmpMode:eE,isDevelopment:!!S,hybridAmp:e5,dynamicImports:Array.from(e6),assetPrefix:e7,unstable_runtimeJS:C.unstable_runtimeJS,unstable_JsPreload:C.unstable_JsPreload,assetQueryString:ei,scriptLoader:eR,locale:ts,disableOptimizedLoading:tn,head:e8.head,headTags:e8.headTags,styles:e8.styles,crossOrigin:l.crossOrigin,optimizeCss:l.optimizeCss,nextConfigOutput:l.nextConfigOutput,nextScriptWorkers:l.nextScriptWorkers,runtime:K,largePageDataBytes:l.largePageDataBytes,nextFontManifest:l.nextFontManifest,experimentalClientTraceMetadata:l.experimental.clientTraceMetadata},td=(0,y.jsx)(A.Provider,{value:ej,children:(0,y.jsx)(Y.Provider,{value:tl,children:e8.documentElement(tl)})}),tu=await (0,eo.getTracer)().trace(es.xj.renderToString,async()=>eZ(td)),[tc,tp]=tu.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),th="";tu.startsWith(eQ)||(th+=eQ),th+=tc,eE&&(th+="<!-- __NEXT_DATA__ -->");let tm=th+e8.contentHTML+tp;return new eT(await o(a,tm,l,{inAmpMode:eE,hybridAmp:e5}),{metadata:v})}let e2=(e,t,r,n,o)=>e4(e,t,r,n,o,o),e3=S().createContext(null);function e8(e){let t=(0,b.useContext)(e3);t&&t(e)}class e9 extends v{constructor(e){super(e),this.components=e.components}render(e,t,r){return e4(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document})}}let e6={contexts:g},e5=e9})(),module.exports=n})();
+Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`)}else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${n.url}`)}else t=!1;if(m.pageProps=Object.assign({},m.pageProps,"props"in e?e.props:void 0),v.revalidate=t,v.pageData=m,v.isNotFound)return new eT(null,{metadata:v})}if(M&&(m.__N_SSP=!0),M&&!ep){let e;let t=!1;try{e=await (0,eo.getTracer)().trace(es.xj.getServerSideProps,{spanName:`getServerSideProps ${a}`,attributes:{"next.route":a}},async()=>M({req:n,res:s,query:i,resolvedUrl:l.resolvedUrl,...ex?{params:F}:void 0,...!1!==h?{draftMode:!0,preview:!0,previewData:h}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale})),v.revalidate=0}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(R.Lx);e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${a}`);if(e.unstable_redirect)throw Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${a}`);if(r.length)throw Error(e0("getServerSideProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');return v.isNotFound=!0,new eT(null,{metadata:v})}if("redirect"in e&&"object"==typeof e.redirect&&(e1(e.redirect,n,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),v.isRedirect=!0),t&&(e.props=await e.props),(S||ef)&&!$(a,"getServerSideProps",e.props))throw Error("invariant: getServerSideProps did not return valid props. Please report this.");m.pageProps=Object.assign({},m.pageProps,e.props),v.pageData=m}if(D&&!em||v.isRedirect)return new eT(JSON.stringify(m),{metadata:v});if(ep&&(m.pageProps={}),Q(s)&&!em)return new eT(null,{metadata:v});let e4=E;if(eS&&ex){let e;let t=(e=(function(e){let t=/^\/index(\/|$)/.test(e)&&!G(e)?"/index"+e:"/"===e?"/index":U(e);{let{posix:e}=r("path"),n=e.normalize(t);if(n!==t)throw new Z("Requested and resolved page mismatch: "+t+" "+n)}return t})(a).replace(/\\/g,"/")).startsWith("/index/")&&!G(e)?e.slice(6):"/index"!==e?e:"/";t in e4.pages&&(e4={...e4,pages:{...e4.pages,[t]:[...e4.pages[t],...e4.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:e4.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let e2=({children:e})=>eE?e:(0,y.jsx)("div",{id:"__next",children:e}),e3=async()=>{let e,t;async function r(e){let t=async(t={})=>{if(eJ.err&&L)return e&&e(ea,ed),{html:await eZ((0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})})),head:eN};if(S&&(m.router||m.Component))throw Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props");let{App:r,Component:n}="function"==typeof t?{App:ea,Component:t(ed)}:{App:t.enhanceApp?t.enhanceApp(ea):ea,Component:t.enhanceComponent?t.enhanceComponent(ed):ed},o=await e(r,n);return await o.allReady,{html:await eu(o),head:eN}},r={...eJ,renderPage:t},n=await X(el,r);if(Q(s)&&!em)return null;if(!n||"string"!=typeof n.html)throw Error(`"${V(el)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`);return{docProps:n,documentCtx:r}}el.__NEXT_BUILTIN_DOCUMENT__;let n=(e,t)=>{let r=e||ea,n=t||ed;return eJ.err&&L?(0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})}):(0,y.jsx)(e2,{children:(0,y.jsx)(eW,{children:eK(r,n,{...m,router:eP})})})},o=async(e,t)=>{let r=n(e,t);return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eo.getTracer)().trace(es.k0.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:P(),element:r})},a=!!el.getInitialProps,[i,l]=await Promise.all([eZ(eX()),(async()=>{if(a){if(null===(e=await r(o)))return null;let{docProps:t}=e;return t.html}{e={};let t=await o(ea,ed);return await t.allReady,eu(t)}})()]);if(null===l)return null;let{docProps:d}=e||{};return a?(t=d.styles,eN=d.head):(t=eC.styles(),eC.flush()),{contentHTML:i+l,documentElement:e=>(0,y.jsx)(el,{...e,...d}),head:eN,headTags:[],styles:t}};null==(u=(0,eo.getTracer)().getRootSpanAttributes())||u.set("next.route",l.page);let e8=await (0,eo.getTracer)().trace(es.xj.renderDocument,{spanName:`render route (pages) ${l.page}`,attributes:{"next.route":l.page}},async()=>e3());if(!e8)return new eT(null,{metadata:v});let e9=new Set,e6=new Set;for(let e of eI){let t=T[e];t&&(e9.add(t.id),t.files.forEach(e=>{e6.add(e)}))}let e5=ej.hybrid,{assetPrefix:e7,buildId:te,customServer:tt,defaultLocale:tr,disableOptimizedLoading:tn,domainLocales:to,locale:ts,locales:ta,runtimeConfig:ti}=l,tl={__NEXT_DATA__:{props:m,page:a,query:i,buildId:te,assetPrefix:""===e7?void 0:e7,runtimeConfig:ti,nextExport:!0===eG||void 0,autoExport:!0===eS||void 0,isFallback:ep,isExperimentalCompile:ee,dynamicIds:0===e9.size?void 0:Array.from(e9),err:l.err?(p=l.err,S?(g="server",g=p[eV]||"server",{name:p.name,source:g,message:e$()(p.message),stack:p.stack,digest:p.digest}):{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}):void 0,gsp:!!N||void 0,gssp:!!M||void 0,customServer:tt,gip:!!ev||void 0,appGip:!eg||void 0,locale:ts,locales:ta,defaultLocale:tr,domainLocales:to,isPreview:!0===f||void 0,notFoundSrcPage:eh&&S?eh:void 0},strictNextHead:l.strictNextHead,buildManifest:e4,docComponentsRendered:{},dangerousAsPath:eP.asPath,canonicalBase:!l.ampPath&&et(n,"didStripLocale")?`${l.canonicalBase||""}/${l.locale}`:l.canonicalBase,ampPath:w,inAmpMode:eE,isDevelopment:!!S,hybridAmp:e5,dynamicImports:Array.from(e6),assetPrefix:e7,unstable_runtimeJS:C.unstable_runtimeJS,unstable_JsPreload:C.unstable_JsPreload,assetQueryString:ei,scriptLoader:eR,locale:ts,disableOptimizedLoading:tn,head:e8.head,headTags:e8.headTags,styles:e8.styles,crossOrigin:l.crossOrigin,optimizeCss:l.optimizeCss,nextConfigOutput:l.nextConfigOutput,nextScriptWorkers:l.nextScriptWorkers,runtime:K,largePageDataBytes:l.largePageDataBytes,nextFontManifest:l.nextFontManifest,experimentalClientTraceMetadata:l.experimental.clientTraceMetadata},td=(0,y.jsx)(A.Provider,{value:ej,children:(0,y.jsx)(Y.Provider,{value:tl,children:e8.documentElement(tl)})}),tu=await (0,eo.getTracer)().trace(es.xj.renderToString,async()=>eZ(td)),[tc,tp]=tu.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),th="";tu.startsWith(eQ)||(th+=eQ),th+=tc,eE&&(th+="<!-- __NEXT_DATA__ -->");let tm=th+e8.contentHTML+tp;return new eT(await o(a,tm,l,{inAmpMode:eE,hybridAmp:e5}),{metadata:v})}let e2=(e,t,r,n,o)=>e4(e,t,r,n,o,o),e3=S().createContext(null);function e8(e){let t=(0,b.useContext)(e3);t&&t(e)}class e9 extends v{constructor(e){super(e),this.components=e.components}render(e,t,r){return e4(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document})}}let e6={contexts:g},e5=e9})(),module.exports=n})();
 //# sourceMappingURL=pages-turbo.runtime.prod.js.map
\ No newline at end of file
Diff for pages.runtime.dev.js
@@ -30,7 +30,7 @@ To never revalidate, you can set revalidate to \`false\` (only ran once at build
 To revalidate as soon as possible, you can set the value to \`1\`.`);data.revalidate>31536e3&&console.warn(`Warning: A page's revalidate option was set to more than a year for ${req.url}. This may have been done in error.
 To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),revalidate=data.revalidate}else throw Error(`A page's revalidate option must be seconds expressed as a natural number for ${req.url}. Mixed numbers, such as '${data.revalidate}', cannot be used.
 Try changing the value to '${Math.ceil(data.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`)}else if(!0===data.revalidate)revalidate=1;else if(!1===data.revalidate||void 0===data.revalidate)revalidate=!1;else throw Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(data.revalidate)}' for ${req.url}`)}else revalidate=!1;if(props.pageProps=Object.assign({},props.pageProps,"props"in data?data.props:void 0),metadata.revalidate=revalidate,metadata.pageData=props,metadata.isNotFound)return new RenderResult(null,{metadata})}if(getServerSideProps&&(props.__N_SSP=!0),getServerSideProps&&!isFallback){let data;let canAccessRes=!0,resOrProxy=res,deferredContent=!1;resOrProxy=new Proxy(res,{get:function(obj,prop){if(!canAccessRes){let message=`You should not access 'res' after getServerSideProps resolves.
-Read more: https://nextjs.org/docs/messages/gssp-no-mutating-res`;if(deferredContent)throw Error(message);warn(message)}return reflect.g.get(obj,prop,res)}});try{data=await (0,tracer_.getTracer)().trace(trace_constants.xj.getServerSideProps,{spanName:`getServerSideProps ${pathname}`,attributes:{"next.route":pathname}},async()=>getServerSideProps({req:req,res:resOrProxy,query,resolvedUrl:renderOpts.resolvedUrl,...pageIsDynamic?{params:params}:void 0,...!1!==previewData?{draftMode:!0,preview:!0,previewData:previewData}:void 0,locales:renderOpts.locales,locale:renderOpts.locale,defaultLocale:renderOpts.defaultLocale})),canAccessRes=!1}catch(serverSidePropsError){throw"object"==typeof serverSidePropsError&&null!==serverSidePropsError&&"name"in serverSidePropsError&&"message"in serverSidePropsError&&"ENOENT"===serverSidePropsError.code&&delete serverSidePropsError.code,serverSidePropsError}if(null==data)throw Error(constants.Lx);data.props instanceof Promise&&(deferredContent=!0);let invalidKeys=Object.keys(data).filter(key=>"props"!==key&&"redirect"!==key&&"notFound"!==key);if(data.unstable_notFound)throw Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}`);if(data.unstable_redirect)throw Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${pathname}`);if(invalidKeys.length)throw Error(invalidKeysMsg("getServerSideProps",invalidKeys));if("notFound"in data&&data.notFound){if("/404"===pathname)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');return metadata.isNotFound=!0,new RenderResult(null,{metadata})}if("redirect"in data&&"object"==typeof data.redirect&&(checkRedirectValues(data.redirect,req,"getServerSideProps"),data.props={__N_REDIRECT:data.redirect.destination,__N_REDIRECT_STATUS:getRedirectStatus(data.redirect)},void 0!==data.redirect.basePath&&(data.props.__N_REDIRECT_BASE_PATH=data.redirect.basePath),metadata.isRedirect=!0),deferredContent&&(data.props=await data.props),(dev||isBuildTimeSSG)&&!isSerializableProps(pathname,"getServerSideProps",data.props))throw Error("invariant: getServerSideProps did not return valid props. Please report this.");props.pageProps=Object.assign({},props.pageProps,data.props),metadata.pageData=props}if(!isSSG&&!getServerSideProps&&Object.keys((null==props?void 0:props.pageProps)||{}).includes("url")&&console.warn(`The prop \`url\` is a reserved prop in Next.js for legacy reasons and will be overridden on page ${pathname}
+Read more: https://nextjs.org/docs/messages/gssp-no-mutating-res`;if(deferredContent)throw Error(message);warn(message)}return reflect.g.get(obj,prop,res)}});try{data=await (0,tracer_.getTracer)().trace(trace_constants.xj.getServerSideProps,{spanName:`getServerSideProps ${pathname}`,attributes:{"next.route":pathname}},async()=>getServerSideProps({req:req,res:resOrProxy,query,resolvedUrl:renderOpts.resolvedUrl,...pageIsDynamic?{params:params}:void 0,...!1!==previewData?{draftMode:!0,preview:!0,previewData:previewData}:void 0,locales:renderOpts.locales,locale:renderOpts.locale,defaultLocale:renderOpts.defaultLocale})),canAccessRes=!1,metadata.revalidate=0}catch(serverSidePropsError){throw"object"==typeof serverSidePropsError&&null!==serverSidePropsError&&"name"in serverSidePropsError&&"message"in serverSidePropsError&&"ENOENT"===serverSidePropsError.code&&delete serverSidePropsError.code,serverSidePropsError}if(null==data)throw Error(constants.Lx);data.props instanceof Promise&&(deferredContent=!0);let invalidKeys=Object.keys(data).filter(key=>"props"!==key&&"redirect"!==key&&"notFound"!==key);if(data.unstable_notFound)throw Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}`);if(data.unstable_redirect)throw Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${pathname}`);if(invalidKeys.length)throw Error(invalidKeysMsg("getServerSideProps",invalidKeys));if("notFound"in data&&data.notFound){if("/404"===pathname)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');return metadata.isNotFound=!0,new RenderResult(null,{metadata})}if("redirect"in data&&"object"==typeof data.redirect&&(checkRedirectValues(data.redirect,req,"getServerSideProps"),data.props={__N_REDIRECT:data.redirect.destination,__N_REDIRECT_STATUS:getRedirectStatus(data.redirect)},void 0!==data.redirect.basePath&&(data.props.__N_REDIRECT_BASE_PATH=data.redirect.basePath),metadata.isRedirect=!0),deferredContent&&(data.props=await data.props),(dev||isBuildTimeSSG)&&!isSerializableProps(pathname,"getServerSideProps",data.props))throw Error("invariant: getServerSideProps did not return valid props. Please report this.");props.pageProps=Object.assign({},props.pageProps,data.props),metadata.pageData=props}if(!isSSG&&!getServerSideProps&&Object.keys((null==props?void 0:props.pageProps)||{}).includes("url")&&console.warn(`The prop \`url\` is a reserved prop in Next.js for legacy reasons and will be overridden on page ${pathname}
 See more info here: https://nextjs.org/docs/messages/reserved-page-prop`),isNextDataRequest&&!isSSG||metadata.isRedirect)return new RenderResult(JSON.stringify(props),{metadata});if(isFallback&&(props.pageProps={}),isResSent(res)&&!isSSG)return new RenderResult(null,{metadata});let filteredBuildManifest=buildManifest;if(isAutoExport&&pageIsDynamic){let _page;let page=(_page=(function(page){let normalized=/^\/index(\/|$)/.test(page)&&!isDynamicRoute(page)?"/index"+page:"/"===page?"/index":ensureLeadingSlash(page);{let{posix}=__webpack_require__("path"),resolvedPage=posix.normalize(normalized);if(resolvedPage!==normalized)throw new NormalizeError("Requested and resolved page mismatch: "+normalized+" "+resolvedPage)}return normalized})(pathname).replace(/\\/g,"/")).startsWith("/index/")&&!isDynamicRoute(_page)?_page.slice(6):"/index"!==_page?_page:"/";page in filteredBuildManifest.pages&&(filteredBuildManifest={...filteredBuildManifest,pages:{...filteredBuildManifest.pages,[page]:[...filteredBuildManifest.pages[page],...filteredBuildManifest.lowPriorityFiles.filter(f=>f.includes("_buildManifest"))]},lowPriorityFiles:filteredBuildManifest.lowPriorityFiles.filter(f=>!f.includes("_buildManifest"))})}let Body=({children})=>inAmpMode?children:(0,jsx_runtime_namespaceObject.jsx)("div",{id:"__next",children:children}),renderDocument=async()=>{let documentInitialPropsRes,styles;async function loadDocumentInitialProps(renderShell){let renderPage=async(options={})=>{if(ctx.err&&ErrorDebug)return renderShell&&renderShell(App,Component),{html:await renderToString((0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{error:ctx.err})})),head};if(dev&&(props.router||props.Component))throw Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props");let{App:EnhancedApp,Component:EnhancedComponent}="function"==typeof options?{App:App,Component:options(Component)}:{App:options.enhanceApp?options.enhanceApp(App):App,Component:options.enhanceComponent?options.enhanceComponent(Component):Component},stream=await renderShell(EnhancedApp,EnhancedComponent);return await stream.allReady,{html:await streamToString(stream),head}},documentCtx={...ctx,renderPage},docProps=await loadGetInitialProps(Document,documentCtx);if(isResSent(res)&&!isSSG)return null;if(!docProps||"string"!=typeof docProps.html)throw Error(`"${getDisplayName(Document)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`);return{docProps,documentCtx}}Document.__NEXT_BUILTIN_DOCUMENT__;let renderContent=(_App,_Component)=>{let EnhancedApp=_App||App,EnhancedComponent=_Component||Component;return ctx.err&&ErrorDebug?(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{error:ctx.err})}):(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(AppContainerWithIsomorphicFiberStructure,{children:renderPageTree(EnhancedApp,EnhancedComponent,{...props,router})})})},renderShell=async(EnhancedApp,EnhancedComponent)=>{let content=renderContent(EnhancedApp,EnhancedComponent);return await function({ReactDOMServer,element,streamOptions}){return(0,tracer_.getTracer)().trace(trace_constants.k0.renderToReadableStream,async()=>ReactDOMServer.renderToReadableStream(element,streamOptions))}({ReactDOMServer:server_edge_default(),element:content})},hasDocumentGetInitialProps=!!Document.getInitialProps,[rawStyledJsxInsertedHTML,content]=await Promise.all([renderToString(styledJsxInsertedHTML()),(async()=>{if(hasDocumentGetInitialProps){if(null===(documentInitialPropsRes=await loadDocumentInitialProps(renderShell)))return null;let{docProps}=documentInitialPropsRes;return docProps.html}{documentInitialPropsRes={};let stream=await renderShell(App,Component);return await stream.allReady,streamToString(stream)}})()]);if(null===content)return null;let{docProps}=documentInitialPropsRes||{};return hasDocumentGetInitialProps?(styles=docProps.styles,head=docProps.head):(styles=jsxStyleRegistry.styles(),jsxStyleRegistry.flush()),{contentHTML:rawStyledJsxInsertedHTML+content,documentElement:htmlProps=>(0,jsx_runtime_namespaceObject.jsx)(Document,{...htmlProps,...docProps}),head,headTags:[],styles}};null==(_getTracer_getRootSpanAttributes=(0,tracer_.getTracer)().getRootSpanAttributes())||_getTracer_getRootSpanAttributes.set("next.route",renderOpts.page);let documentResult=await (0,tracer_.getTracer)().trace(trace_constants.xj.renderDocument,{spanName:`render route (pages) ${renderOpts.page}`,attributes:{"next.route":renderOpts.page}},async()=>renderDocument());if(!documentResult)return new RenderResult(null,{metadata});let dynamicImportsIds=new Set,dynamicImports=new Set;for(let mod of reactLoadableModules){let manifestItem=reactLoadableManifest[mod];manifestItem&&(dynamicImportsIds.add(manifestItem.id),manifestItem.files.forEach(item=>{dynamicImports.add(item)}))}let hybridAmp=ampState.hybrid,docComponentsRendered={},{assetPrefix,buildId,customServer,defaultLocale,disableOptimizedLoading,domainLocales,locale,locales,runtimeConfig}=renderOpts,htmlProps={__NEXT_DATA__:{props,page:pathname,query,buildId,assetPrefix:""===assetPrefix?void 0:assetPrefix,runtimeConfig,nextExport:!0===nextExport||void 0,autoExport:!0===isAutoExport||void 0,isFallback,isExperimentalCompile,dynamicIds:0===dynamicImportsIds.size?void 0:Array.from(dynamicImportsIds),err:renderOpts.err?(err=renderOpts.err,dev?(source="server",source=err[symbolError]||"server",{name:err.name,source,message:strip_ansi_default()(err.message),stack:err.stack,digest:err.digest}):{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}):void 0,gsp:!!getStaticProps||void 0,gssp:!!getServerSideProps||void 0,customServer,gip:!!hasPageGetInitialProps||void 0,appGip:!defaultAppGetInitialProps||void 0,locale,locales,defaultLocale,domainLocales,isPreview:!0===isPreview||void 0,notFoundSrcPage:notFoundSrcPage&&dev?notFoundSrcPage:void 0},strictNextHead:renderOpts.strictNextHead,buildManifest:filteredBuildManifest,docComponentsRendered,dangerousAsPath:router.asPath,canonicalBase:!renderOpts.ampPath&&request_meta_getRequestMeta(req,"didStripLocale")?`${renderOpts.canonicalBase||""}/${renderOpts.locale}`:renderOpts.canonicalBase,ampPath,inAmpMode,isDevelopment:!!dev,hybridAmp,dynamicImports:Array.from(dynamicImports),assetPrefix,unstable_runtimeJS:void 0,unstable_JsPreload:pageConfig.unstable_JsPreload,assetQueryString,scriptLoader,locale,disableOptimizedLoading,head:documentResult.head,headTags:documentResult.headTags,styles:documentResult.styles,crossOrigin:renderOpts.crossOrigin,optimizeCss:renderOpts.optimizeCss,nextConfigOutput:renderOpts.nextConfigOutput,nextScriptWorkers:renderOpts.nextScriptWorkers,runtime:globalRuntime,largePageDataBytes:renderOpts.largePageDataBytes,nextFontManifest:renderOpts.nextFontManifest,experimentalClientTraceMetadata:renderOpts.experimental.clientTraceMetadata},document=(0,jsx_runtime_namespaceObject.jsx)(amp_context_shared_runtime_AmpStateContext.Provider,{value:ampState,children:(0,jsx_runtime_namespaceObject.jsx)(HtmlContext.Provider,{value:htmlProps,children:documentResult.documentElement(htmlProps)})}),documentHTML=await (0,tracer_.getTracer)().trace(trace_constants.xj.renderToString,async()=>renderToString(document));{let nonRenderedComponents=[];for(let comp of["Main","Head","NextScript","Html"])docComponentsRendered[comp]||nonRenderedComponents.push(comp);if(nonRenderedComponents.length){let missingComponentList=nonRenderedComponents.map(e=>`<${e} />`).join(", "),plural=1!==nonRenderedComponents.length?"s":"";console.warn(`Your custom Document (pages/_document) did not render all the required subcomponent${plural}.
 Missing component${plural}: ${missingComponentList}
 Read how to fix here: https://nextjs.org/docs/messages/missing-document-component`)}}let[renderTargetPrefix,renderTargetSuffix]=documentHTML.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),prefix="";documentHTML.startsWith(DOCTYPE)||(prefix+=DOCTYPE),prefix+=renderTargetPrefix,inAmpMode&&(prefix+="<!-- __NEXT_DATA__ -->");let content=prefix+documentResult.contentHTML+renderTargetSuffix;return new RenderResult(await postProcessHTML(pathname,content,renderOpts,{inAmpMode,hybridAmp}),{metadata})}let renderToHTML=(req,res,pathname,query,renderOpts)=>renderToHTMLImpl(req,res,pathname,query,renderOpts,renderOpts),ServerInsertedHTMLContext=external_react_default().createContext(null);function useServerInsertedHTML(callback){let addInsertedServerHTMLCallback=(0,external_react_namespaceObject.useContext)(ServerInsertedHTMLContext);addInsertedServerHTMLCallback&&addInsertedServerHTMLCallback(callback)}class PagesRouteModule extends RouteModule{constructor(options){super(options),this.components=options.components}render(req,res,context){return renderToHTMLImpl(req,res,context.page,context.query,context.renderOpts,{App:this.components.App,Document:this.components.Document})}}let vendored={contexts:entrypoints_namespaceObject},pages_module=PagesRouteModule})(),module.exports=__webpack_exports__})();
Diff for pages.runtime.prod.js
@@ -28,5 +28,5 @@ See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerend
 To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
 To revalidate as soon as possible, you can set the value to \`1\`.`);e.revalidate>31536e3&&console.warn(`Warning: A page's revalidate option was set to more than a year for ${n.url}. This may have been done in error.
 To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),t=e.revalidate}else throw Error(`A page's revalidate option must be seconds expressed as a natural number for ${n.url}. Mixed numbers, such as '${e.revalidate}', cannot be used.
-Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`)}else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${n.url}`)}else t=!1;if(m.pageProps=Object.assign({},m.pageProps,"props"in e?e.props:void 0),v.revalidate=t,v.pageData=m,v.isNotFound)return new eT(null,{metadata:v})}if(M&&(m.__N_SSP=!0),M&&!ep){let e;let t=!1;try{e=await (0,eo.getTracer)().trace(es.xj.getServerSideProps,{spanName:`getServerSideProps ${a}`,attributes:{"next.route":a}},async()=>M({req:n,res:s,query:i,resolvedUrl:l.resolvedUrl,...ex?{params:F}:void 0,...!1!==h?{draftMode:!0,preview:!0,previewData:h}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale}))}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(R.Lx);e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${a}`);if(e.unstable_redirect)throw Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${a}`);if(r.length)throw Error(e0("getServerSideProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');return v.isNotFound=!0,new eT(null,{metadata:v})}if("redirect"in e&&"object"==typeof e.redirect&&(e1(e.redirect,n,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),v.isRedirect=!0),t&&(e.props=await e.props),(S||ef)&&!$(a,"getServerSideProps",e.props))throw Error("invariant: getServerSideProps did not return valid props. Please report this.");m.pageProps=Object.assign({},m.pageProps,e.props),v.pageData=m}if(D&&!em||v.isRedirect)return new eT(JSON.stringify(m),{metadata:v});if(ep&&(m.pageProps={}),Q(s)&&!em)return new eT(null,{metadata:v});let e4=E;if(eS&&ex){let e;let t=(e=(function(e){let t=/^\/index(\/|$)/.test(e)&&!G(e)?"/index"+e:"/"===e?"/index":U(e);{let{posix:e}=r("path"),n=e.normalize(t);if(n!==t)throw new Z("Requested and resolved page mismatch: "+t+" "+n)}return t})(a).replace(/\\/g,"/")).startsWith("/index/")&&!G(e)?e.slice(6):"/index"!==e?e:"/";t in e4.pages&&(e4={...e4,pages:{...e4.pages,[t]:[...e4.pages[t],...e4.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:e4.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let e2=({children:e})=>eE?e:(0,y.jsx)("div",{id:"__next",children:e}),e3=async()=>{let e,t;async function r(e){let t=async(t={})=>{if(eJ.err&&L)return e&&e(ea,ed),{html:await eZ((0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})})),head:eN};if(S&&(m.router||m.Component))throw Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props");let{App:r,Component:n}="function"==typeof t?{App:ea,Component:t(ed)}:{App:t.enhanceApp?t.enhanceApp(ea):ea,Component:t.enhanceComponent?t.enhanceComponent(ed):ed},o=await e(r,n);return await o.allReady,{html:await eu(o),head:eN}},r={...eJ,renderPage:t},n=await X(el,r);if(Q(s)&&!em)return null;if(!n||"string"!=typeof n.html)throw Error(`"${V(el)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`);return{docProps:n,documentCtx:r}}el.__NEXT_BUILTIN_DOCUMENT__;let n=(e,t)=>{let r=e||ea,n=t||ed;return eJ.err&&L?(0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})}):(0,y.jsx)(e2,{children:(0,y.jsx)(eW,{children:eK(r,n,{...m,router:eP})})})},o=async(e,t)=>{let r=n(e,t);return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eo.getTracer)().trace(es.k0.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:P(),element:r})},a=!!el.getInitialProps,[i,l]=await Promise.all([eZ(eX()),(async()=>{if(a){if(null===(e=await r(o)))return null;let{docProps:t}=e;return t.html}{e={};let t=await o(ea,ed);return await t.allReady,eu(t)}})()]);if(null===l)return null;let{docProps:d}=e||{};return a?(t=d.styles,eN=d.head):(t=eC.styles(),eC.flush()),{contentHTML:i+l,documentElement:e=>(0,y.jsx)(el,{...e,...d}),head:eN,headTags:[],styles:t}};null==(u=(0,eo.getTracer)().getRootSpanAttributes())||u.set("next.route",l.page);let e8=await (0,eo.getTracer)().trace(es.xj.renderDocument,{spanName:`render route (pages) ${l.page}`,attributes:{"next.route":l.page}},async()=>e3());if(!e8)return new eT(null,{metadata:v});let e9=new Set,e6=new Set;for(let e of eI){let t=T[e];t&&(e9.add(t.id),t.files.forEach(e=>{e6.add(e)}))}let e5=ej.hybrid,{assetPrefix:e7,buildId:te,customServer:tt,defaultLocale:tr,disableOptimizedLoading:tn,domainLocales:to,locale:ts,locales:ta,runtimeConfig:ti}=l,tl={__NEXT_DATA__:{props:m,page:a,query:i,buildId:te,assetPrefix:""===e7?void 0:e7,runtimeConfig:ti,nextExport:!0===eG||void 0,autoExport:!0===eS||void 0,isFallback:ep,isExperimentalCompile:ee,dynamicIds:0===e9.size?void 0:Array.from(e9),err:l.err?(p=l.err,S?(g="server",g=p[eV]||"server",{name:p.name,source:g,message:e$()(p.message),stack:p.stack,digest:p.digest}):{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}):void 0,gsp:!!N||void 0,gssp:!!M||void 0,customServer:tt,gip:!!ev||void 0,appGip:!eg||void 0,locale:ts,locales:ta,defaultLocale:tr,domainLocales:to,isPreview:!0===f||void 0,notFoundSrcPage:eh&&S?eh:void 0},strictNextHead:l.strictNextHead,buildManifest:e4,docComponentsRendered:{},dangerousAsPath:eP.asPath,canonicalBase:!l.ampPath&&et(n,"didStripLocale")?`${l.canonicalBase||""}/${l.locale}`:l.canonicalBase,ampPath:w,inAmpMode:eE,isDevelopment:!!S,hybridAmp:e5,dynamicImports:Array.from(e6),assetPrefix:e7,unstable_runtimeJS:C.unstable_runtimeJS,unstable_JsPreload:C.unstable_JsPreload,assetQueryString:ei,scriptLoader:eR,locale:ts,disableOptimizedLoading:tn,head:e8.head,headTags:e8.headTags,styles:e8.styles,crossOrigin:l.crossOrigin,optimizeCss:l.optimizeCss,nextConfigOutput:l.nextConfigOutput,nextScriptWorkers:l.nextScriptWorkers,runtime:K,largePageDataBytes:l.largePageDataBytes,nextFontManifest:l.nextFontManifest,experimentalClientTraceMetadata:l.experimental.clientTraceMetadata},td=(0,y.jsx)(A.Provider,{value:ej,children:(0,y.jsx)(Y.Provider,{value:tl,children:e8.documentElement(tl)})}),tu=await (0,eo.getTracer)().trace(es.xj.renderToString,async()=>eZ(td)),[tc,tp]=tu.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),th="";tu.startsWith(eQ)||(th+=eQ),th+=tc,eE&&(th+="<!-- __NEXT_DATA__ -->");let tm=th+e8.contentHTML+tp;return new eT(await o(a,tm,l,{inAmpMode:eE,hybridAmp:e5}),{metadata:v})}let e2=(e,t,r,n,o)=>e4(e,t,r,n,o,o),e3=S().createContext(null);function e8(e){let t=(0,b.useContext)(e3);t&&t(e)}class e9 extends v{constructor(e){super(e),this.components=e.components}render(e,t,r){return e4(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document})}}let e6={contexts:g},e5=e9})(),module.exports=n})();
+Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`)}else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${n.url}`)}else t=!1;if(m.pageProps=Object.assign({},m.pageProps,"props"in e?e.props:void 0),v.revalidate=t,v.pageData=m,v.isNotFound)return new eT(null,{metadata:v})}if(M&&(m.__N_SSP=!0),M&&!ep){let e;let t=!1;try{e=await (0,eo.getTracer)().trace(es.xj.getServerSideProps,{spanName:`getServerSideProps ${a}`,attributes:{"next.route":a}},async()=>M({req:n,res:s,query:i,resolvedUrl:l.resolvedUrl,...ex?{params:F}:void 0,...!1!==h?{draftMode:!0,preview:!0,previewData:h}:void 0,locales:l.locales,locale:l.locale,defaultLocale:l.defaultLocale})),v.revalidate=0}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Error(R.Lx);e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${a}`);if(e.unstable_redirect)throw Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${a}`);if(r.length)throw Error(e0("getServerSideProps",r));if("notFound"in e&&e.notFound){if("/404"===a)throw Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!');return v.isNotFound=!0,new eT(null,{metadata:v})}if("redirect"in e&&"object"==typeof e.redirect&&(e1(e.redirect,n,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:en(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),v.isRedirect=!0),t&&(e.props=await e.props),(S||ef)&&!$(a,"getServerSideProps",e.props))throw Error("invariant: getServerSideProps did not return valid props. Please report this.");m.pageProps=Object.assign({},m.pageProps,e.props),v.pageData=m}if(D&&!em||v.isRedirect)return new eT(JSON.stringify(m),{metadata:v});if(ep&&(m.pageProps={}),Q(s)&&!em)return new eT(null,{metadata:v});let e4=E;if(eS&&ex){let e;let t=(e=(function(e){let t=/^\/index(\/|$)/.test(e)&&!G(e)?"/index"+e:"/"===e?"/index":U(e);{let{posix:e}=r("path"),n=e.normalize(t);if(n!==t)throw new Z("Requested and resolved page mismatch: "+t+" "+n)}return t})(a).replace(/\\/g,"/")).startsWith("/index/")&&!G(e)?e.slice(6):"/index"!==e?e:"/";t in e4.pages&&(e4={...e4,pages:{...e4.pages,[t]:[...e4.pages[t],...e4.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:e4.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let e2=({children:e})=>eE?e:(0,y.jsx)("div",{id:"__next",children:e}),e3=async()=>{let e,t;async function r(e){let t=async(t={})=>{if(eJ.err&&L)return e&&e(ea,ed),{html:await eZ((0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})})),head:eN};if(S&&(m.router||m.Component))throw Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props");let{App:r,Component:n}="function"==typeof t?{App:ea,Component:t(ed)}:{App:t.enhanceApp?t.enhanceApp(ea):ea,Component:t.enhanceComponent?t.enhanceComponent(ed):ed},o=await e(r,n);return await o.allReady,{html:await eu(o),head:eN}},r={...eJ,renderPage:t},n=await X(el,r);if(Q(s)&&!em)return null;if(!n||"string"!=typeof n.html)throw Error(`"${V(el)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`);return{docProps:n,documentCtx:r}}el.__NEXT_BUILTIN_DOCUMENT__;let n=(e,t)=>{let r=e||ea,n=t||ed;return eJ.err&&L?(0,y.jsx)(e2,{children:(0,y.jsx)(L,{error:eJ.err})}):(0,y.jsx)(e2,{children:(0,y.jsx)(eW,{children:eK(r,n,{...m,router:eP})})})},o=async(e,t)=>{let r=n(e,t);return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eo.getTracer)().trace(es.k0.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:P(),element:r})},a=!!el.getInitialProps,[i,l]=await Promise.all([eZ(eX()),(async()=>{if(a){if(null===(e=await r(o)))return null;let{docProps:t}=e;return t.html}{e={};let t=await o(ea,ed);return await t.allReady,eu(t)}})()]);if(null===l)return null;let{docProps:d}=e||{};return a?(t=d.styles,eN=d.head):(t=eC.styles(),eC.flush()),{contentHTML:i+l,documentElement:e=>(0,y.jsx)(el,{...e,...d}),head:eN,headTags:[],styles:t}};null==(u=(0,eo.getTracer)().getRootSpanAttributes())||u.set("next.route",l.page);let e8=await (0,eo.getTracer)().trace(es.xj.renderDocument,{spanName:`render route (pages) ${l.page}`,attributes:{"next.route":l.page}},async()=>e3());if(!e8)return new eT(null,{metadata:v});let e9=new Set,e6=new Set;for(let e of eI){let t=T[e];t&&(e9.add(t.id),t.files.forEach(e=>{e6.add(e)}))}let e5=ej.hybrid,{assetPrefix:e7,buildId:te,customServer:tt,defaultLocale:tr,disableOptimizedLoading:tn,domainLocales:to,locale:ts,locales:ta,runtimeConfig:ti}=l,tl={__NEXT_DATA__:{props:m,page:a,query:i,buildId:te,assetPrefix:""===e7?void 0:e7,runtimeConfig:ti,nextExport:!0===eG||void 0,autoExport:!0===eS||void 0,isFallback:ep,isExperimentalCompile:ee,dynamicIds:0===e9.size?void 0:Array.from(e9),err:l.err?(p=l.err,S?(g="server",g=p[eV]||"server",{name:p.name,source:g,message:e$()(p.message),stack:p.stack,digest:p.digest}):{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}):void 0,gsp:!!N||void 0,gssp:!!M||void 0,customServer:tt,gip:!!ev||void 0,appGip:!eg||void 0,locale:ts,locales:ta,defaultLocale:tr,domainLocales:to,isPreview:!0===f||void 0,notFoundSrcPage:eh&&S?eh:void 0},strictNextHead:l.strictNextHead,buildManifest:e4,docComponentsRendered:{},dangerousAsPath:eP.asPath,canonicalBase:!l.ampPath&&et(n,"didStripLocale")?`${l.canonicalBase||""}/${l.locale}`:l.canonicalBase,ampPath:w,inAmpMode:eE,isDevelopment:!!S,hybridAmp:e5,dynamicImports:Array.from(e6),assetPrefix:e7,unstable_runtimeJS:C.unstable_runtimeJS,unstable_JsPreload:C.unstable_JsPreload,assetQueryString:ei,scriptLoader:eR,locale:ts,disableOptimizedLoading:tn,head:e8.head,headTags:e8.headTags,styles:e8.styles,crossOrigin:l.crossOrigin,optimizeCss:l.optimizeCss,nextConfigOutput:l.nextConfigOutput,nextScriptWorkers:l.nextScriptWorkers,runtime:K,largePageDataBytes:l.largePageDataBytes,nextFontManifest:l.nextFontManifest,experimentalClientTraceMetadata:l.experimental.clientTraceMetadata},td=(0,y.jsx)(A.Provider,{value:ej,children:(0,y.jsx)(Y.Provider,{value:tl,children:e8.documentElement(tl)})}),tu=await (0,eo.getTracer)().trace(es.xj.renderToString,async()=>eZ(td)),[tc,tp]=tu.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),th="";tu.startsWith(eQ)||(th+=eQ),th+=tc,eE&&(th+="<!-- __NEXT_DATA__ -->");let tm=th+e8.contentHTML+tp;return new eT(await o(a,tm,l,{inAmpMode:eE,hybridAmp:e5}),{metadata:v})}let e2=(e,t,r,n,o)=>e4(e,t,r,n,o,o),e3=S().createContext(null);function e8(e){let t=(0,b.useContext)(e3);t&&t(e)}class e9 extends v{constructor(e){super(e),this.components=e.components}render(e,t,r){return e4(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document})}}let e6={contexts:g},e5=e9})(),module.exports=n})();
 //# sourceMappingURL=pages.runtime.prod.js.map
\ No newline at end of file
Diff for server.runtime.prod.js

Diff too large to display

Commit: 027bbf1

@ijjk ijjk added the tests label Sep 11, 2024
@ijjk ijjk marked this pull request as ready for review September 11, 2024 20:53
@ijjk ijjk requested a review from ztanner September 11, 2024 20:53
@ijjk ijjk merged commit 864e6a5 into canary Sep 11, 2024
102 of 107 checks passed
@ijjk ijjk deleted the ijjk/cleanup-invalid-default branch September 11, 2024 21:47
ijjk added a commit that referenced this pull request Sep 11, 2024
This removes our invalid revalidate default fallback when a revalidate
value isn't returned from render as render should always return a valid
value. We also already have an invariant when an invalid revalidate
value is returned we just need to ensure that case could be hit
properly. This also fixes some invalid test cases which were sending
invalid headers.

x-ref: [slack
thread](https://vercel.slack.com/archives/C0676QZBWKS/p1726061828198529?thread_ts=1720714625.621179&cid=C0676QZBWKS)
ijjk added a commit that referenced this pull request Sep 11, 2024
This removes our invalid revalidate default fallback when a revalidate
value isn't returned from render as render should always return a valid
value. We also already have an invariant when an invalid revalidate
value is returned we just need to ensure that case could be hit
properly. This also fixes some invalid test cases which were sending
invalid headers.

x-ref: [slack
thread](https://vercel.slack.com/archives/C0676QZBWKS/p1726061828198529?thread_ts=1720714625.621179&cid=C0676QZBWKS)
kodiakhq bot referenced this pull request in X-oss-byte/Canary-nextjs Sep 12, 2024
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@next/env](https://github.com/vercel/next.js) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/next-env)) | [`14.2.9` -> `14.2.10`](https://renovatebot.com/diffs/npm/@next%2fenv/14.2.9/14.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@next%2fenv/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@next%2fenv/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@next%2fenv/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@next%2fenv/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@next/eslint-plugin-next](https://github.com/vercel/next.js) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next)) | [`14.2.9` -> `14.2.10`](https://renovatebot.com/diffs/npm/@next%2feslint-plugin-next/14.2.9/14.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@next%2feslint-plugin-next/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@next%2feslint-plugin-next/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@next%2feslint-plugin-next/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@next%2feslint-plugin-next/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@next/polyfill-module](https://github.com/vercel/next.js) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/next-polyfill-module)) | [`14.2.9` -> `14.2.10`](https://renovatebot.com/diffs/npm/@next%2fpolyfill-module/14.2.9/14.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@next%2fpolyfill-module/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@next%2fpolyfill-module/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@next%2fpolyfill-module/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@next%2fpolyfill-module/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@next/polyfill-nomodule](https://github.com/vercel/next.js) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/next-polyfill-nomodule)) | [`14.2.9` -> `14.2.10`](https://renovatebot.com/diffs/npm/@next%2fpolyfill-nomodule/14.2.9/14.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@next%2fpolyfill-nomodule/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@next%2fpolyfill-nomodule/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@next%2fpolyfill-nomodule/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@next%2fpolyfill-nomodule/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@next/react-refresh-utils](https://github.com/vercel/next.js) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/react-refresh-utils)) | [`14.2.9` -> `14.2.10`](https://renovatebot.com/diffs/npm/@next%2freact-refresh-utils/14.2.9/14.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@next%2freact-refresh-utils/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@next%2freact-refresh-utils/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@next%2freact-refresh-utils/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@next%2freact-refresh-utils/14.2.9/14.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>vercel/next.js (@&#8203;next/env)</summary>

### [`v14.2.10`](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

</details>

<details>
<summary>vercel/next.js (@&#8203;next/eslint-plugin-next)</summary>

### [`v14.2.10`](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

</details>

<details>
<summary>vercel/next.js (@&#8203;next/polyfill-module)</summary>

### [`v14.2.10`](https://github.com/vercel/next.js/releases/tag/v14.2.10)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   Remove invalid fallback revalidate value ([https://github.com/vercel/next.js/pull/69990](https://github.com/vercel/next.js/pull/69990))
-   Revert server action optimization ([https://github.com/vercel/next.js/pull/69925](https://github.com/vercel/next.js/pull/69925))
-   Add ability to customize Cache-Control ([#&#8203;69802](https://github.com/vercel/next.js/issues/69802))

##### Credits

Huge thanks to  [@&#8203;huozhi](https://github.com/huozhi) and [@&#8203;ijjk](https://github.com/ijjk) for helping!

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Canary-nextjs).
kodiakhq bot referenced this pull request in cloudquery/cloudquery Sep 18, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [next](https://nextjs.org) ([source](https://github.com/vercel/next.js)) | dependencies | patch | [`14.2.3` -> `14.2.10`](https://renovatebot.com/diffs/npm/next/14.2.3/14.2.10) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

### GitHub Vulnerability Alerts

#### [CVE-2024-46982](https://github.com/vercel/next.js/security/advisories/GHSA-gp8f-8m3g-qvj9)

### Impact

By sending a crafted HTTP request, it is possible to poison the cache of a non-dynamic server-side rendered route in the pages router (this does not affect the app router). When this crafted request is sent it could coerce Next.js to cache a route that is meant to not be cached and send a `Cache-Control: s-maxage=1, stale-while-revalidate` header which some upstream CDNs may cache as well. 

To be potentially affected all of the following must apply: 

- Next.js between 13.5.1 and 14.2.9
- Using pages router
- Using non-dynamic server-side rendered routes e.g. `pages/dashboard.tsx` not `pages/blog/[slug].tsx`

The below configurations are unaffected:

- Deployments using only app router
- Deployments on [Vercel](https://vercel.com/) are not affected

### Patches

This vulnerability was resolved in Next.js v13.5.7, v14.2.10, and later. We recommend upgrading regardless of whether you can reproduce the issue or not.

### Workarounds

There are no official or recommended workarounds for this issue, we recommend that users patch to a safe version.

#### Credits

- Allam Rachid (zhero_)
- Henry Chen

---

### Release Notes

<details>
<summary>vercel/next.js (next)</summary>

### [`v14.2.10`](https://github.com/vercel/next.js/releases/tag/v14.2.10)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   Remove invalid fallback revalidate value ([https://github.com/vercel/next.js/pull/69990](https://github.com/vercel/next.js/pull/69990))
-   Revert server action optimization ([https://github.com/vercel/next.js/pull/69925](https://github.com/vercel/next.js/pull/69925))
-   Add ability to customize Cache-Control ([#&#8203;69802](https://github.com/vercel/next.js/issues/69802))

##### Credits

Huge thanks to  [@&#8203;huozhi](https://github.com/huozhi) and [@&#8203;ijjk](https://github.com/ijjk) for helping!

### [`v14.2.9`](https://github.com/vercel/next.js/releases/tag/v14.2.9)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   Revert "Fix esm property def in flight loader ([#&#8203;66990](https://github.com/vercel/next.js/issues/66990))" ([#&#8203;69749](https://github.com/vercel/next.js/issues/69749))
-   Disable experimental.optimizeServer by default to fix failed server action ([#&#8203;69788](https://github.com/vercel/next.js/issues/69788))
-   Fix middleware fallback: false case ([#&#8203;69799](https://github.com/vercel/next.js/issues/69799))
-   Fix status code for /\_not-found route ([#&#8203;64058](https://github.com/vercel/next.js/issues/64058)) ([#&#8203;69808](https://github.com/vercel/next.js/issues/69808))
-   Fix metadata prop merging ([#&#8203;69807](https://github.com/vercel/next.js/issues/69807))
-   create-next-app: fix font file corruption when using import alias ([#&#8203;69806](https://github.com/vercel/next.js/issues/69806))

##### Credits

Huge thanks to  [@&#8203;huozhi](https://github.com/huozhi), [@&#8203;ztanner](https://github.com/ztanner), [@&#8203;ijjk](https://github.com/ijjk), and [@&#8203;lubieowoce](https://github.com/lubieowoce) for helping!

### [`v14.2.8`](https://github.com/vercel/next.js/releases/tag/v14.2.8)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8)

#### What's Changed

> \[!NOTE]\
> This release is backporting bug fixes and minor improvements. It does **not** include all pending features/changes on canary.

##### Support `esmExternals` in app directory

-   Support esm externals in app router ([#&#8203;65041](https://github.com/vercel/next.js/issues/65041))
-   Turbopack: Allow client components from foreign code in app routes ([#&#8203;64751](https://github.com/vercel/next.js/issues/64751))
-   Turbopack: add support for esm externals in app dir ([#&#8203;64918](https://github.com/vercel/next.js/issues/64918))
-   other related PRs: [#&#8203;66990](https://github.com/vercel/next.js/issues/66990) [#&#8203;66727](https://github.com/vercel/next.js/issues/66727) [#&#8203;66286](https://github.com/vercel/next.js/issues/66286) [#&#8203;65519](https://github.com/vercel/next.js/issues/65519)

##### Reading cookies set in middleware in components and actions

-   initialize ALS with cookies in middleware ([#&#8203;65008](https://github.com/vercel/next.js/issues/65008))
-   fix middleware cookie initialization ([#&#8203;65820](https://github.com/vercel/next.js/issues/65820))
-   ensure cookies set in middleware can be read in a server action ([#&#8203;67924](https://github.com/vercel/next.js/issues/67924))
-   fix: merged middleware cookies should preserve options ([#&#8203;67956](https://github.com/vercel/next.js/issues/67956))

##### Metadata and icons

-   support facebook-specific metadata (`fb:app_id`, `fb:admins`) in generateMetaData ([#&#8203;65713](https://github.com/vercel/next.js/issues/65713))
-   Always collect static icons for all segments ([#&#8203;68712](https://github.com/vercel/next.js/issues/68712))
-   Fix favicon merging with customized icons ([#&#8203;67982](https://github.com/vercel/next.js/issues/67982))
-   Warn metadataBase missing in standalone mode or non vercel deployment ([#&#8203;66296](https://github.com/vercel/next.js/issues/66296))

##### Parallel routes fixes

-   fix missing stylesheets when parallel routes are present ([#&#8203;69507](https://github.com/vercel/next.js/issues/69507))

##### Draft mode and edge improvements

-   fix: unstable_cache should not cache new result in draft mode ([#&#8203;67772](https://github.com/vercel/next.js/issues/67772))
-   Add draft mode flag for multi-zone ([#&#8203;68997](https://github.com/vercel/next.js/issues/68997))
-   Fix edge preview props are not matched with cookie ([#&#8203;67779](https://github.com/vercel/next.js/issues/67779))
-   other related PRs: [#&#8203;65426](https://github.com/vercel/next.js/issues/65426), [#&#8203;67787](https://github.com/vercel/next.js/issues/67787), [#&#8203;64946](https://github.com/vercel/next.js/issues/64946), [#&#8203;64313](https://github.com/vercel/next.js/issues/64313), [#&#8203;64370](https://github.com/vercel/next.js/issues/64370)

##### `next/image` fixes

-   Allow external image urls with \_next/image pathname to be rendered via Image component ([#&#8203;69586](https://github.com/vercel/next.js/issues/69586))

##### Server actions improvements

-   optimize server actions ([#&#8203;66523](https://github.com/vercel/next.js/issues/66523))
-   Apply optimization for unused actions ([#&#8203;69178](https://github.com/vercel/next.js/issues/69178))
-   Improve SWC transform ID generation ([#&#8203;69183](https://github.com/vercel/next.js/issues/69183))

##### Other changes

-   Ensure we match comment minify behavior between terser and swc ([#&#8203;68372](https://github.com/vercel/next.js/issues/68372))
-   send initialCanonicalUrl in array format to prevent crawler confusion ([#&#8203;69509](https://github.com/vercel/next.js/issues/69509))

##### Create-next-app updates

-   enable [@&#8203;typescript-eslint/recommended](https://github.com/typescript-eslint/recommended) in create-next-app --typescript ([#&#8203;52845](https://github.com/vercel/next.js/issues/52845))
-   Update create-next-app template CSS ([#&#8203;66233](https://github.com/vercel/next.js/issues/66233))
-   Update `create-next-app` template CSS ([#&#8203;66043](https://github.com/vercel/next.js/issues/66043))
-   Update create-next-app template ([#&#8203;65803](https://github.com/vercel/next.js/issues/65803))
-   add font antialiasing to templates ([#&#8203;67425](https://github.com/vercel/next.js/issues/67425))
-   Move `create-next-app` public/ assets from local folder→ remote URL ([#&#8203;66931](https://github.com/vercel/next.js/issues/66931))
-   Use classnames to set font family in Tailwind create-next-app templates ([#&#8203;66374](https://github.com/vercel/next.js/issues/66374))
-   other related PRs: [#&#8203;64478](https://github.com/vercel/next.js/issues/64478), [#&#8203;68899](https://github.com/vercel/next.js/issues/68899), [#&#8203;68534](https://github.com/vercel/next.js/issues/68534), [#&#8203;69021](https://github.com/vercel/next.js/issues/69021), [#&#8203;67146](https://github.com/vercel/next.js/issues/67146), [#&#8203;66145](https://github.com/vercel/next.js/issues/66145)

**Full Changelog**: vercel/next.js@v14.2.7...v14.2.8

***

Huge thanks to everyone who contributed to this release:
[@&#8203;abhi12299](https://github.com/abhi12299), [@&#8203;delbaoliveira](https://github.com/delbaoliveira), [@&#8203;eps1lon](https://github.com/eps1lon), [@&#8203;ForsakenHarmony](https://github.com/ForsakenHarmony), [@&#8203;huozhi](https://github.com/huozhi), [@&#8203;ijjk](https://github.com/ijjk), [@&#8203;JoshuaKGoldberg](https://github.com/JoshuaKGoldberg), [@&#8203;leerob](https://github.com/leerob), [@&#8203;lubieowoce](https://github.com/lubieowoce), [@&#8203;Netail](https://github.com/Netail), [@&#8203;ronanru](https://github.com/ronanru), [@&#8203;samcx](https://github.com/samcx), [@&#8203;shuding](https://github.com/shuding), [@&#8203;sokra](https://github.com/sokra), [@&#8203;stylessh](https://github.com/stylessh), [@&#8203;timfuhrmann](https://github.com/timfuhrmann), [@&#8203;wbinnssmith](https://github.com/wbinnssmith), [@&#8203;wyattjoh](https://github.com/wyattjoh), [@&#8203;ypessoa](https://github.com/ypessoa), [@&#8203;ztanner](https://github.com/ztanner)

### [`v14.2.7`](https://github.com/vercel/next.js/releases/tag/v14.2.7)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.6...v14.2.7)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   Revert "chore: externalize undici for bundling" ([#&#8203;65727](https://github.com/vercel/next.js/issues/65727))
-   Refactor internal routing headers to use request meta ([#&#8203;66987](https://github.com/vercel/next.js/issues/66987))
-   fix(next): add cross origin in react dom preload ([#&#8203;67423](https://github.com/vercel/next.js/issues/67423))
-   build: upgrade edge-runtime ([#&#8203;67565](https://github.com/vercel/next.js/issues/67565))
-   GTM dataLayer parameter should take an object, not an array of strings ([#&#8203;66339](https://github.com/vercel/next.js/issues/66339))
-   fix: properly patch lockfile against swc bindings ([#&#8203;66515](https://github.com/vercel/next.js/issues/66515))
-   Add deployment id header for rsc payload if present ([#&#8203;67255](https://github.com/vercel/next.js/issues/67255))
-   Update font data ([#&#8203;68639](https://github.com/vercel/next.js/issues/68639))
-   fix i18n data pathname resolving ([#&#8203;68947](https://github.com/vercel/next.js/issues/68947))
-   pages router: ensure x-middleware-cache is respected ([#&#8203;67734](https://github.com/vercel/next.js/issues/67734))
-   Fix bad modRequest in flight entry manifest [#&#8203;68888](https://github.com/vercel/next.js/issues/68888)
-   Reject next image urls in image optimizer [#&#8203;68628](https://github.com/vercel/next.js/issues/68628)
-   Fix hmr assetPrefix escaping and reuse logic from other files [#&#8203;67983](https://github.com/vercel/next.js/issues/67983)

##### Credits

Huge thanks to [@&#8203;kjugi](https://github.com/kjugi), [@&#8203;huozhi](https://github.com/huozhi), [@&#8203;ztanner](https://github.com/ztanner), [@&#8203;SukkaW](https://github.com/SukkaW), [@&#8203;marlier](https://github.com/marlier), [@&#8203;Kikobeats](https://github.com/Kikobeats), [@&#8203;syi0808](https://github.com/syi0808), [@&#8203;ijjk](https://github.com/ijjk), and [@&#8203;samcx](https://github.com/samcx) for helping!

### [`v14.2.6`](https://github.com/vercel/next.js/releases/tag/v14.2.6)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.5...v14.2.6)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   Ensure fetch cache TTL is updated properly ([#&#8203;69164](https://github.com/vercel/next.js/issues/69164))

### [`v14.2.5`](https://github.com/vercel/next.js/releases/tag/v14.2.5)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.4...v14.2.5)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   avoid merging global css in a way that leaks into other chunk groups ([#&#8203;67373](https://github.com/vercel/next.js/issues/67373))
-   Fix server action edge redirect with middleware rewrite ([#&#8203;67148](https://github.com/vercel/next.js/issues/67148))
-   fix(next): reject protocol-relative URLs in image optimization ([#&#8203;65752](https://github.com/vercel/next.js/issues/65752))
-   fix(next-swc): correct path interop to filepath for wasm ([#&#8203;65633](https://github.com/vercel/next.js/issues/65633))
-   Use addDependency to track metadata route file changes ([#&#8203;66714](https://github.com/vercel/next.js/issues/66714))
-   Fix noindex is missing on static not-found page ([#&#8203;67135](https://github.com/vercel/next.js/issues/67135))
-   perf: improve retrieving versionInfo on Turbo HMR ([#&#8203;67309](https://github.com/vercel/next.js/issues/67309))
-   fix(next/image): handle invalid url ([#&#8203;67465](https://github.com/vercel/next.js/issues/67465))
-   fix(next): initial prefetch cache not set properly with different search params ([#&#8203;65977](https://github.com/vercel/next.js/issues/65977))
-   fix: Backport class properties fix ([#&#8203;67377](https://github.com/vercel/next.js/issues/67377))
-   Upgrade acorn ([#&#8203;67592](https://github.com/vercel/next.js/issues/67592))

##### Misc

-   Log stdio for pull-turbo-cache script ([#&#8203;66759](https://github.com/vercel/next.js/issues/66759))
-   Ensure turbo is setup when building in docker ([#&#8203;66804](https://github.com/vercel/next.js/issues/66804))

##### Credits

Huge thanks to [@&#8203;devjiwonchoi](https://github.com/devjiwonchoi), [@&#8203;ijjk](https://github.com/ijjk), [@&#8203;emmerich](https://github.com/emmerich), [@&#8203;huozhi](https://github.com/huozhi),  [@&#8203;kdy1](https://github.com/kdy1), [@&#8203;kwonoj](https://github.com/kwonoj), [@&#8203;styfle](https://github.com/styfle), and [@&#8203;sokra](https://github.com/sokra) for helping!

### [`v14.2.4`](https://github.com/vercel/next.js/releases/tag/v14.2.4)

[Compare Source](https://github.com/vercel/next.js/compare/v14.2.3...v14.2.4)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

-   fix: ensure route handlers properly track dynamic access ([#&#8203;66446](https://github.com/vercel/next.js/issues/66446))
-   fix NextRequest proxy in edge runtime ([#&#8203;66551](https://github.com/vercel/next.js/issues/66551))
-   Fix next/dynamic with babel and src dir ([#&#8203;65177](https://github.com/vercel/next.js/issues/65177))
-   Use vercel deployment url for metadataBase fallbacks ([#&#8203;65089](https://github.com/vercel/next.js/issues/65089))
-   fix(next/image): detect react@19 for fetchPriority prop ([#&#8203;65235](https://github.com/vercel/next.js/issues/65235))
-   Fix loading navigation with metadata and prefetch ([#&#8203;66447](https://github.com/vercel/next.js/issues/66447))
-   prevent duplicate RSC fetch when action redirects ([#&#8203;66620](https://github.com/vercel/next.js/issues/66620))
-   ensure router cache updates reference the latest cache values ([#&#8203;66681](https://github.com/vercel/next.js/issues/66681))
-   Prevent append of trailing slash in cases where path ends with a file extension ([#&#8203;66636](https://github.com/vercel/next.js/issues/66636))
-   Fix inconsistency with 404 getStaticProps cache-control ([#&#8203;66674](https://github.com/vercel/next.js/issues/66674))
-   Use addDependency to track metadata route file changes ([#&#8203;66714](https://github.com/vercel/next.js/issues/66714))
-   Add timeout/retry handling for fetch cache ([#&#8203;66652](https://github.com/vercel/next.js/issues/66652))
-   fix: app-router prefetch crash when an invalid URL is passed to Link ([#&#8203;66755](https://github.com/vercel/next.js/issues/66755))

##### Credits

Huge thanks to [@&#8203;ztanner](https://github.com/ztanner), [@&#8203;ijjk](https://github.com/ijjk), [@&#8203;wbinnssmith](https://github.com/wbinnssmith), [@&#8203;huozhi](https://github.com/huozhi), and [@&#8203;lubieowoce](https://github.com/lubieowoce) for helping!

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
simonknittel referenced this pull request in simonknittel/sinister-incorporated Sep 18, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [next](https://nextjs.org)
([source](https://github.com/vercel/next.js)) | dependencies |
patch | [`14.2.7` ->
`14.2.10`](https://renovatebot.com/diffs/npm/next/14.2.7/14.2.10) |

---

### Next.js Cache Poisoning
[CVE-2024-46982](https://nvd.nist.gov/vuln/detail/CVE-2024-46982) /
[GHSA-gp8f-8m3g-qvj9](https://github.com/advisories/GHSA-gp8f-8m3g-qvj9)

<details>
<summary>More information</summary>

#### Details
##### Impact

By sending a crafted HTTP request, it is possible to poison the cache of
a non-dynamic server-side rendered route in the pages router (this does
not affect the app router). When this crafted request is sent it could
coerce Next.js to cache a route that is meant to not be cached and send
a `Cache-Control: s-maxage=1, stale-while-revalidate` header which some
upstream CDNs may cache as well.

To be potentially affected all of the following must apply: 

- Next.js between 13.5.1 and 14.2.9
- Using pages router
- Using non-dynamic server-side rendered routes e.g.
`pages/dashboard.tsx` not `pages/blog/[slug].tsx`

The below configurations are unaffected:

- Deployments using only app router
- Deployments on [Vercel](https://vercel.com/) are not affected

##### Patches

This vulnerability was resolved in Next.js v13.5.7, v14.2.10, and later.
We recommend upgrading regardless of whether you can reproduce the issue
or not.

##### Workarounds

There are no official or recommended workarounds for this issue, we
recommend that users patch to a safe version.

##### Credits

- Allam Rachid (zhero_)
- Henry Chen

#### Severity
- CVSS Score: 7.5 / 10 (High)
- Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H`

#### References
-
[https://github.com/vercel/next.js/security/advisories/GHSA-gp8f-8m3g-qvj9](https://github.com/vercel/next.js/security/advisories/GHSA-gp8f-8m3g-qvj9)
-
[https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3](https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3)
-
[https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda](https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda)
-
[https://github.com/vercel/next.js](https://github.com/vercel/next.js)

This data is provided by
[OSV](https://osv.dev/vulnerability/GHSA-gp8f-8m3g-qvj9) and the [GitHub
Advisory Database](https://github.com/github/advisory-database)
([CC-BY
4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>vercel/next.js (next)</summary>

###
[`v14.2.10`](https://github.com/vercel/next.js/releases/tag/v14.2.10)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- Remove invalid fallback revalidate value
([https://github.com/vercel/next.js/pull/69990](https://github.com/vercel/next.js/pull/69990))
- Revert server action optimization
([https://github.com/vercel/next.js/pull/69925](https://github.com/vercel/next.js/pull/69925))
- Add ability to customize Cache-Control
([#&#8203;69802](https://github.com/vercel/next.js/issues/69802))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi) and
[@&#8203;ijjk](https://github.com/ijjk) for helping!

###
[`v14.2.9`](https://github.com/vercel/next.js/releases/tag/v14.2.9)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- Revert "Fix esm property def in flight loader
([#&#8203;66990](https://github.com/vercel/next.js/issues/66990))"
([#&#8203;69749](https://github.com/vercel/next.js/issues/69749))
- Disable experimental.optimizeServer by default to fix failed server
action
([#&#8203;69788](https://github.com/vercel/next.js/issues/69788))
- Fix middleware fallback: false case
([#&#8203;69799](https://github.com/vercel/next.js/issues/69799))
- Fix status code for /\_not-found route
([#&#8203;64058](https://github.com/vercel/next.js/issues/64058))
([#&#8203;69808](https://github.com/vercel/next.js/issues/69808))
- Fix metadata prop merging
([#&#8203;69807](https://github.com/vercel/next.js/issues/69807))
- create-next-app: fix font file corruption when using import alias
([#&#8203;69806](https://github.com/vercel/next.js/issues/69806))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi),
[@&#8203;ztanner](https://github.com/ztanner),
[@&#8203;ijjk](https://github.com/ijjk), and
[@&#8203;lubieowoce](https://github.com/lubieowoce) for
helping!

###
[`v14.2.8`](https://github.com/vercel/next.js/releases/tag/v14.2.8)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8)

#### What's Changed

> \[!NOTE]\
> This release is backporting bug fixes and minor improvements. It does
**not** include all pending features/changes on canary.

##### Support `esmExternals` in app directory

- Support esm externals in app router
([#&#8203;65041](https://github.com/vercel/next.js/issues/65041))
- Turbopack: Allow client components from foreign code in app routes
([#&#8203;64751](https://github.com/vercel/next.js/issues/64751))
- Turbopack: add support for esm externals in app dir
([#&#8203;64918](https://github.com/vercel/next.js/issues/64918))
- other related PRs:
[#&#8203;66990](https://github.com/vercel/next.js/issues/66990)
[#&#8203;66727](https://github.com/vercel/next.js/issues/66727)
[#&#8203;66286](https://github.com/vercel/next.js/issues/66286)
[#&#8203;65519](https://github.com/vercel/next.js/issues/65519)

##### Reading cookies set in middleware in components and actions

- initialize ALS with cookies in middleware
([#&#8203;65008](https://github.com/vercel/next.js/issues/65008))
- fix middleware cookie initialization
([#&#8203;65820](https://github.com/vercel/next.js/issues/65820))
- ensure cookies set in middleware can be read in a server action
([#&#8203;67924](https://github.com/vercel/next.js/issues/67924))
- fix: merged middleware cookies should preserve options
([#&#8203;67956](https://github.com/vercel/next.js/issues/67956))

##### Metadata and icons

- support facebook-specific metadata (`fb:app_id`, `fb:admins`) in
generateMetaData
([#&#8203;65713](https://github.com/vercel/next.js/issues/65713))
- Always collect static icons for all segments
([#&#8203;68712](https://github.com/vercel/next.js/issues/68712))
- Fix favicon merging with customized icons
([#&#8203;67982](https://github.com/vercel/next.js/issues/67982))
- Warn metadataBase missing in standalone mode or non vercel deployment
([#&#8203;66296](https://github.com/vercel/next.js/issues/66296))

##### Parallel routes fixes

- fix missing stylesheets when parallel routes are present
([#&#8203;69507](https://github.com/vercel/next.js/issues/69507))

##### Draft mode and edge improvements

- fix: unstable_cache should not cache new result in draft mode
([#&#8203;67772](https://github.com/vercel/next.js/issues/67772))
- Add draft mode flag for multi-zone
([#&#8203;68997](https://github.com/vercel/next.js/issues/68997))
- Fix edge preview props are not matched with cookie
([#&#8203;67779](https://github.com/vercel/next.js/issues/67779))
- other related PRs:
[#&#8203;65426](https://github.com/vercel/next.js/issues/65426),
[#&#8203;67787](https://github.com/vercel/next.js/issues/67787),
[#&#8203;64946](https://github.com/vercel/next.js/issues/64946),
[#&#8203;64313](https://github.com/vercel/next.js/issues/64313),
[#&#8203;64370](https://github.com/vercel/next.js/issues/64370)

##### `next/image` fixes

- Allow external image urls with \_next/image pathname to be rendered
via Image component
([#&#8203;69586](https://github.com/vercel/next.js/issues/69586))

##### Server actions improvements

- optimize server actions
([#&#8203;66523](https://github.com/vercel/next.js/issues/66523))
- Apply optimization for unused actions
([#&#8203;69178](https://github.com/vercel/next.js/issues/69178))
- Improve SWC transform ID generation
([#&#8203;69183](https://github.com/vercel/next.js/issues/69183))

##### Other changes

- Ensure we match comment minify behavior between terser and swc
([#&#8203;68372](https://github.com/vercel/next.js/issues/68372))
- send initialCanonicalUrl in array format to prevent crawler confusion
([#&#8203;69509](https://github.com/vercel/next.js/issues/69509))

##### Create-next-app updates

- enable
[@&#8203;typescript-eslint/recommended](https://github.com/typescript-eslint/recommended)
in create-next-app --typescript
([#&#8203;52845](https://github.com/vercel/next.js/issues/52845))
- Update create-next-app template CSS
([#&#8203;66233](https://github.com/vercel/next.js/issues/66233))
- Update `create-next-app` template CSS
([#&#8203;66043](https://github.com/vercel/next.js/issues/66043))
- Update create-next-app template
([#&#8203;65803](https://github.com/vercel/next.js/issues/65803))
- add font antialiasing to templates
([#&#8203;67425](https://github.com/vercel/next.js/issues/67425))
- Move `create-next-app` public/ assets from local folder→ remote URL
([#&#8203;66931](https://github.com/vercel/next.js/issues/66931))
- Use classnames to set font family in Tailwind create-next-app
templates
([#&#8203;66374](https://github.com/vercel/next.js/issues/66374))
- other related PRs:
[#&#8203;64478](https://github.com/vercel/next.js/issues/64478),
[#&#8203;68899](https://github.com/vercel/next.js/issues/68899),
[#&#8203;68534](https://github.com/vercel/next.js/issues/68534),
[#&#8203;69021](https://github.com/vercel/next.js/issues/69021),
[#&#8203;67146](https://github.com/vercel/next.js/issues/67146),
[#&#8203;66145](https://github.com/vercel/next.js/issues/66145)

**Full Changelog**:
vercel/next.js@v14.2.7...v14.2.8

***

Huge thanks to everyone who contributed to this release:
[@&#8203;abhi12299](https://github.com/abhi12299),
[@&#8203;delbaoliveira](https://github.com/delbaoliveira),
[@&#8203;eps1lon](https://github.com/eps1lon),
[@&#8203;ForsakenHarmony](https://github.com/ForsakenHarmony),
[@&#8203;huozhi](https://github.com/huozhi),
[@&#8203;ijjk](https://github.com/ijjk),
[@&#8203;JoshuaKGoldberg](https://github.com/JoshuaKGoldberg),
[@&#8203;leerob](https://github.com/leerob),
[@&#8203;lubieowoce](https://github.com/lubieowoce),
[@&#8203;Netail](https://github.com/Netail),
[@&#8203;ronanru](https://github.com/ronanru),
[@&#8203;samcx](https://github.com/samcx),
[@&#8203;shuding](https://github.com/shuding),
[@&#8203;sokra](https://github.com/sokra),
[@&#8203;stylessh](https://github.com/stylessh),
[@&#8203;timfuhrmann](https://github.com/timfuhrmann),
[@&#8203;wbinnssmith](https://github.com/wbinnssmith),
[@&#8203;wyattjoh](https://github.com/wyattjoh),
[@&#8203;ypessoa](https://github.com/ypessoa),
[@&#8203;ztanner](https://github.com/ztanner)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44Ny4wIiwidXBkYXRlZEluVmVyIjoiMzguODcuMSIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
kodiakhq bot referenced this pull request in weareinreach/InReach Sep 18, 2024
This PR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [@next/bundle-analyzer](https://github.com/vercel/next.js)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/next-bundle-analyzer))
| devDependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/@next%2fbundle-analyzer/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|
| [@next/bundle-analyzer](https://github.com/vercel/next.js)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/next-bundle-analyzer))
| dependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/@next%2fbundle-analyzer/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|
| [@next/eslint-plugin-next](https://github.com/vercel/next.js)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next))
| devDependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/@next%2feslint-plugin-next/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|
| [@next/third-parties](https://github.com/vercel/next.js)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/third-parties))
| peerDependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/@next%2fthird-parties/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|
| [@next/third-parties](https://github.com/vercel/next.js)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/third-parties))
| devDependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/@next%2fthird-parties/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|
| [@next/third-parties](https://github.com/vercel/next.js)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/third-parties))
| dependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/@next%2fthird-parties/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|
|
[eslint-config-next](https://nextjs.org/docs/app/building-your-application/configuring/eslint#eslint-config)
([source](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next))
| devDependencies | patch | [`14.2.8` ->
`14.2.12`](https://renovatebot.com/diffs/npm/eslint-config-next/14.2.8/14.2.12)
| [![OpenSSF
Scorecard](https://api.securityscorecards.dev/projects/github.com/vercel/next.js/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vercel/next.js)
|

---

### Release Notes

<details>
<summary>vercel/next.js (@&#8203;next/bundle-analyzer)</summary>

###
[`v14.2.12`](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

###
[`v14.2.11`](https://github.com/vercel/next.js/compare/v14.2.10...bfbc92aab5c727444ed21e0b84bd55cda2e22067)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.10...v14.2.11)

###
[`v14.2.10`](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

###
[`v14.2.9`](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

</details>

<details>
<summary>vercel/next.js (@&#8203;next/eslint-plugin-next)</summary>

###
[`v14.2.12`](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

###
[`v14.2.11`](https://github.com/vercel/next.js/compare/v14.2.10...bfbc92aab5c727444ed21e0b84bd55cda2e22067)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.10...v14.2.11)

###
[`v14.2.10`](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

###
[`v14.2.9`](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

</details>

<details>
<summary>vercel/next.js (@&#8203;next/third-parties)</summary>

###
[`v14.2.12`](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

###
[`v14.2.11`](https://github.com/vercel/next.js/releases/tag/v14.2.11)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.10...v14.2.11)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- fix: correct metadata url suffix
([https://github.com/vercel/next.js/pull/69959](https://github.com/vercel/next.js/pull/69959))
- fix: setting assetPrefix to URL format breaks HMR
([#&#8203;70040](https://github.com/vercel/next.js/issues/70040))
- Update revalidateTag to batch tags in one request
([#&#8203;65296](https://github.com/vercel/next.js/issues/65296))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi),
[@&#8203;devjiwonchoi](https://github.com/devjiwonchoi), and
[@&#8203;ijjk](https://github.com/ijjk) for helping!

###
[`v14.2.10`](https://github.com/vercel/next.js/releases/tag/v14.2.10)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- Remove invalid fallback revalidate value
([https://github.com/vercel/next.js/pull/69990](https://github.com/vercel/next.js/pull/69990))
- Revert server action optimization
([https://github.com/vercel/next.js/pull/69925](https://github.com/vercel/next.js/pull/69925))
- Add ability to customize Cache-Control
([#&#8203;69802](https://github.com/vercel/next.js/issues/69802))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi) and
[@&#8203;ijjk](https://github.com/ijjk) for helping!

###
[`v14.2.9`](https://github.com/vercel/next.js/releases/tag/v14.2.9)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- Revert "Fix esm property def in flight loader
([#&#8203;66990](https://github.com/vercel/next.js/issues/66990))"
([#&#8203;69749](https://github.com/vercel/next.js/issues/69749))
- Disable experimental.optimizeServer by default to fix failed server
action
([#&#8203;69788](https://github.com/vercel/next.js/issues/69788))
- Fix middleware fallback: false case
([#&#8203;69799](https://github.com/vercel/next.js/issues/69799))
- Fix status code for /\_not-found route
([#&#8203;64058](https://github.com/vercel/next.js/issues/64058))
([#&#8203;69808](https://github.com/vercel/next.js/issues/69808))
- Fix metadata prop merging
([#&#8203;69807](https://github.com/vercel/next.js/issues/69807))
- create-next-app: fix font file corruption when using import alias
([#&#8203;69806](https://github.com/vercel/next.js/issues/69806))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi),
[@&#8203;ztanner](https://github.com/ztanner),
[@&#8203;ijjk](https://github.com/ijjk), and
[@&#8203;lubieowoce](https://github.com/lubieowoce) for
helping!

</details>

<details>
<summary>vercel/next.js (eslint-config-next)</summary>

###
[`v14.2.12`](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.11...v14.2.12)

###
[`v14.2.11`](https://github.com/vercel/next.js/releases/tag/v14.2.11)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.10...v14.2.11)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- fix: correct metadata url suffix
([https://github.com/vercel/next.js/pull/69959](https://github.com/vercel/next.js/pull/69959))
- fix: setting assetPrefix to URL format breaks HMR
([#&#8203;70040](https://github.com/vercel/next.js/issues/70040))
- Update revalidateTag to batch tags in one request
([#&#8203;65296](https://github.com/vercel/next.js/issues/65296))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi),
[@&#8203;devjiwonchoi](https://github.com/devjiwonchoi), and
[@&#8203;ijjk](https://github.com/ijjk) for helping!

###
[`v14.2.10`](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.9...v14.2.10)

###
[`v14.2.9`](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

[Compare
Source](https://github.com/vercel/next.js/compare/v14.2.8...v14.2.9)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/weareinreach/InReach).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41OS4yIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6ImRldiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiLCJkZXBlbmRlbmNpZXMiLCJrb2RpYWs6IG1lcmdlLm1ldGhvZCA9ICdzcXVhc2gnIl19-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 27, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants