Skip to content

Use Server/Client Manifests from Singleton in encryption-utils#70485

Merged
sebmarkbage merged 4 commits intovercel:canaryfrom
sebmarkbage:cacheflightmanifest
Sep 26, 2024
Merged

Use Server/Client Manifests from Singleton in encryption-utils#70485
sebmarkbage merged 4 commits intovercel:canaryfrom
sebmarkbage:cacheflightmanifest

Conversation

@sebmarkbage
Copy link
Copy Markdown
Contributor

The closure encryption utilities need the same module maps as use-cache-wrapper. We can share the same singletons.

Using singletons for this is sketchy because if concurrent requests switches to another page with a different manifest, it would potentially have missing entries. We should ideally use AsyncLocalStorage but this is not making anything worse and any solution should apply to both.

This doesn't actually make anything new work. Because you can't pass a Server References into these functions since React doesn't yet allow Server References inside the RSC layer to be encoded through encodeReply. We could. One thing to note there is that if we do allow that then the id of the Server Reference ideally includes the hash of its implementation (not just Cache IDs) because if the implementation can change without the id then passing a Server Reference as an argument to "use cache" and calling it within the cache should not reuse results if the implementation changes.

It also doesn't yet work to pass Client References out of these functions because the SSR manifest is missing. That is already missing for encryption too and we should pass the same thing into both there.

This clarifies that in either case we should always pass null for moduleLoading because that's only used for SSR and would lead to unnecessary preloads to be added if we replayed the preloads that are already covered by client references.

@sebmarkbage sebmarkbage requested review from ijjk and shuding September 25, 2024 22:23
@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. type: next labels Sep 25, 2024
These are already available as globals initialized by the handler.

This might be a little sketchy with concurrent requests so it should really
use AsyncLocalStorage but it's an existing issue.
…should be filled in

Both in encryption and use-cache-wrapper.
}
},
})
const clientReferenceManifestSingleton = getClientReferenceManifestSingleton()
Copy link
Copy Markdown
Member

@ijjk ijjk Sep 25, 2024

Choose a reason for hiding this comment

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

Is this singleton reliable? It looks like we are sharing it across requests although we could have concurrent requests in serverful environment/dev

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No I think it's not. That's why it's sketchy but it's not net-new broken. We should fix it for encryption too at the same time if we need to fix it. Unrelated to this pr because caches can be called in the same scopes as encrypted closures.

@ijjk
Copy link
Copy Markdown
Member

ijjk commented Sep 25, 2024

Failing test suites

Commit: 853a2ac

pnpm test-dev test/development/acceptance/hydration-error.test.ts

  • Error overlay for hydration errors in Pages router > should only show one hydration error when bad nesting happened - div > tr
Expand output

● Error overlay for hydration errors in Pages router › should only show one hydration error when bad nesting happened - div > tr

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

Expected: 3
Received: 2

  906 |
  907 |     await session.assertHasRedbox()
> 908 |     expect(await getRedboxTotalErrorCount(browser)).toBe(isReact18 ? 3 : 1)
      |                                                     ^
  909 |
  910 |     const description = await session.getRedboxDescription()
  911 |     if (isReact18) {

  at Object.toBe (development/acceptance/hydration-error.test.ts:908:53)

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

pnpm test-dev test/e2e/app-dir/logging/fetch-logging.test.ts

  • app-dir - logging > with fetches verbose logging > when logging.fetches.hmrRefreshes is true > should log requests for HMR refreshes
  • app-dir - logging > with verbose logging for edge runtime > when logging.fetches.hmrRefreshes is true > should log requests for HMR refreshes
Expand output

● app-dir - logging › with fetches verbose logging › when logging.fetches.hmrRefreshes is true › should log requests for HMR refreshes

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

Expected: "Hello Test!"
Received: "Hello World!"

  276 |                 return retry(async () => {
  277 |                   headline = await browser.waitForElementByCss('h1').text()
> 278 |                   expect(headline).toBe('Hello Test!')
      |                                    ^
  279 |
  280 |                   const logs = stripAnsi(
  281 |                     next.cliOutput.slice(outputIndex)

  at toBe (e2e/app-dir/logging/fetch-logging.test.ts:278:36)
  at retry (lib/next-test-utils.ts:806:14)
  at lib/next-modes/next-dev.ts:184:9
  at NextDevInstance.patchFile (lib/next-modes/base.ts:512:9)
  at Object.<anonymous> (e2e/app-dir/logging/fetch-logging.test.ts:268:13)

● app-dir - logging › with verbose logging for edge runtime › when logging.fetches.hmrRefreshes is true › should log requests for HMR refreshes

expect(received).toInclude(expected)

Expected string to include:
  " │ GET https://next-data-api-endpoint.vercel.app/api/random?request-input 200 in 1ms (HMR cache)"
Received:
  " ✓ Compiled in 1ms (595 modules)
 ○ Compiling /_not-found ...
 ✓ Compiled /_not-found in 1ms (525 modules)
 GET /fetch-no-store 404 in 1ms
 GET /fetch-no-store 200 in 1ms
 │ GET https://next-data-api-endpoint.vercel.app/api/random?request-input 200 in 1ms (cache skip)
 │ │ Cache skipped reason: (cache: no-store)
"

  283 |
  284 |                   expect(logs).toInclude(' GET /fetch-no-store')
> 285 |                   expect(logs).toInclude(
      |                                ^
  286 |                     ` │ GET ${expectedUrl}?request-input 200 in 1ms (HMR cache)`
  287 |                   )
  288 |                 })

  at toInclude (e2e/app-dir/logging/fetch-logging.test.ts:285:32)
  at retry (lib/next-test-utils.ts:806:14)
  at lib/next-modes/next-dev.ts:184:9
  at NextDevInstance.patchFile (lib/next-modes/base.ts:512:9)
  at Object.<anonymous> (e2e/app-dir/logging/fetch-logging.test.ts:268:13)

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

@ijjk
Copy link
Copy Markdown
Member

ijjk commented Sep 25, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
buildDuration 25.4s 22.1s N/A
buildDurationCached 12.1s 10.9s N/A
nodeModulesSize 370 MB 370 MB ⚠️ +10.8 kB
nextStartRea..uration (ms) 540ms 528ms N/A
Client Bundles (main, webpack)
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
439.HASH.js gzip 168 B 168 B
714-HASH.js gzip 5.26 kB 5.26 kB
7195-HASH.js gzip 41.1 kB 41.1 kB N/A
9aaa228b-HASH.js gzip 52.7 kB 52.7 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 229 B 231 B N/A
main-HASH.js gzip 32.7 kB 32.7 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 5.43 kB 5.43 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
_app-HASH.js gzip 192 B 194 B N/A
_error-HASH.js gzip 192 B 190 B N/A
amp-HASH.js gzip 510 B 510 B
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 266 B N/A
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 391 B 392 B N/A
image-HASH.js gzip 4.41 kB 4.41 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.78 kB 2.78 kB
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 396 B 395 B N/A
withRouter-HASH.js gzip 324 B 324 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 6.16 kB 6.16 kB
Client Build Manifests
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
_buildManifest.js gzip 751 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
index.html gzip 521 B 523 B N/A
link.html gzip 537 B 539 B N/A
withRouter.html gzip 518 B 521 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest 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 sebmarkbage/next.js cacheflightmanifest Change
middleware-b..fest.js gzip 666 B 668 B N/A
middleware-r..fest.js gzip 154 B 156 B N/A
middleware.js gzip 29.8 kB 29.8 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest 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 318 kB 318 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 309 kB 309 kB
app-page.run..prod.js gzip 121 kB 121 kB
app-route-ex...dev.js gzip 33.6 kB 33.6 kB
app-route-ex..prod.js gzip 22.3 kB 22.3 kB
app-route-tu..prod.js gzip 22.3 kB 22.3 kB
app-route-tu..prod.js gzip 22.1 kB 22.1 kB
app-route.ru...dev.js gzip 35.3 kB 35.3 kB
app-route.ru..prod.js gzip 22.1 kB 22.1 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.9 kB 20.9 kB
pages.runtim...dev.js gzip 26.5 kB 26.5 kB
pages.runtim..prod.js gzip 20.9 kB 20.9 kB
server.runti..prod.js gzip 57.1 kB 57.1 kB
Overall change 1.46 MB 1.46 MB
build cache Overall increase ⚠️
vercel/next.js canary sebmarkbage/next.js cacheflightmanifest Change
0.pack gzip 1.66 MB 1.66 MB ⚠️ +440 B
index.pack gzip 132 kB 131 kB N/A
Overall change 1.66 MB 1.66 MB ⚠️ +440 B
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
       /***/
     },
 
-    /***/ 4537: /***/ (
+    /***/ 3637: /***/ (
       __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-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.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-statskJeky7%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-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.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-statskJeky7%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, {
@@ -76,35 +76,35 @@
         tree: () => tree,
       });
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/web/globals.js
-      var globals = __webpack_require__(8399);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
-      var adapter = __webpack_require__(1961);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 87 modules
-      var render = __webpack_require__(6862);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
-      var incremental_cache = __webpack_require__(3020);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
-      var app_render = __webpack_require__(819);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
-      var module_compiled = __webpack_require__(4820);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/route-kind.js
-      var route_kind = __webpack_require__(9930);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/client/components/error-boundary.js
-      var error_boundary = __webpack_require__(2287);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/app-render/entry-base.js + 9 modules
-      var entry_base = __webpack_require__(3893); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.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-statskJeky7%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-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/web/globals.js
+      var globals = __webpack_require__(2327);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+      var adapter = __webpack_require__(9078);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 87 modules
+      var render = __webpack_require__(1786);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
+      var incremental_cache = __webpack_require__(4591);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
+      var app_render = __webpack_require__(2200);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+      var module_compiled = __webpack_require__(3);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/route-kind.js
+      var route_kind = __webpack_require__(6887);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/client/components/error-boundary.js
+      var error_boundary = __webpack_require__(9774);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/app-render/entry-base.js + 9 modules
+      var entry_base = __webpack_require__(8867); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.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-statskJeky7%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 module0 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 9905)
+          __webpack_require__.bind(__webpack_require__, 9807)
         );
       const module1 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 1265)
+          __webpack_require__.bind(__webpack_require__, 9536)
         );
       const page2 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 9712)
+          __webpack_require__.bind(__webpack_require__, 4283)
         );
 
       // We inject the tree and pages here so that we can use them in the route
@@ -167,12 +167,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-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/lib/page-types.js
-      var page_types = __webpack_require__(6663);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/app-render/encryption-utils.js
-      var encryption_utils = __webpack_require__(3313);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/dist/esm/server/app-render/action-utils.js
-      var action_utils = __webpack_require__(4585); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRza0pla3k3L3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHNrSmVreTcvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHNrSmVreTcvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRza0pla3k3JTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/lib/page-types.js
+      var page_types = __webpack_require__(2949);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+      var encryption_utils = __webpack_require__(991);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/dist/esm/server/app-render/action-utils.js
+      var action_utils = __webpack_require__(5784); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRza0pla3k3L3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHNrSmVreTcvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHNrSmVreTcvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRza0pla3k3JTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
       var _self___RSC_MANIFEST;
 
       const incrementalCacheHandler = null;
@@ -436,53 +436,53 @@
       /***/
     },
 
-    /***/ 8587: /***/ (
+    /***/ 913: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2189)
+        __webpack_require__.bind(__webpack_require__, 7172)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3412)
+        __webpack_require__.bind(__webpack_require__, 6590)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6801)
+        __webpack_require__.bind(__webpack_require__, 9085)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1528)
+        __webpack_require__.bind(__webpack_require__, 7301)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7081)
+        __webpack_require__.bind(__webpack_require__, 9724)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1938)
+        __webpack_require__.bind(__webpack_require__, 1370)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 775)
+        __webpack_require__.bind(__webpack_require__, 9624)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8052)
+        __webpack_require__.bind(__webpack_require__, 916)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5253)
+        __webpack_require__.bind(__webpack_require__, 8565)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6806)
+        __webpack_require__.bind(__webpack_require__, 2419)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8421)
+        __webpack_require__.bind(__webpack_require__, 282)
       );
 
       /***/
     },
 
-    /***/ 5385: /***/ () => {
+    /***/ 7858: /***/ () => {
       /***/
     },
 
-    /***/ 9712: /***/ (
+    /***/ 4283: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -502,7 +502,7 @@
       /***/
     },
 
-    /***/ 9905: /***/ (
+    /***/ 9807: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -514,7 +514,7 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(6401);
+        __webpack_require__(5162);
 
       function RootLayout({ children }) {
         return /*#__PURE__*/ (0,
@@ -533,7 +533,7 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [85, 703], () => __webpack_exec__(4537));
+    /******/ __webpack_require__.O(0, [774, 119], () => __webpack_exec__(3637));
     /******/ 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],
   {
-    /***/ 6940: /***/ (
+    /***/ 2537: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(1399);
+          return __webpack_require__(7510);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 896: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1364: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(9472)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6615)
+        __webpack_require__(3754)
       );
-      const _getimgprops = __webpack_require__(9241);
-      const _imageconfig = __webpack_require__(7318);
-      const _imageconfigcontextsharedruntime = __webpack_require__(9033);
-      const _warnonce = __webpack_require__(3273);
-      const _routercontextsharedruntime = __webpack_require__(1828);
+      const _getimgprops = __webpack_require__(1335);
+      const _imageconfig = __webpack_require__(5667);
+      const _imageconfigcontextsharedruntime = __webpack_require__(7537);
+      const _warnonce = __webpack_require__(1938);
+      const _routercontextsharedruntime = __webpack_require__(4971);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5319)
+        __webpack_require__(2853)
       );
-      const _usemergedref = __webpack_require__(5674);
+      const _usemergedref = __webpack_require__(7082);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 5674: /***/ (module, exports, __webpack_require__) => {
+    /***/ 7082: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
       /***/
     },
 
-    /***/ 9241: /***/ (
+    /***/ 1335: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -448,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(3273);
-      const _imageblursvg = __webpack_require__(926);
-      const _imageconfig = __webpack_require__(7318);
+      const _warnonce = __webpack_require__(1938);
+      const _imageblursvg = __webpack_require__(6461);
+      const _imageconfig = __webpack_require__(5667);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -823,7 +823,7 @@
       /***/
     },
 
-    /***/ 926: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6461: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -878,7 +878,7 @@
       /***/
     },
 
-    /***/ 5950: /***/ (
+    /***/ 653: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -905,10 +905,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(9608);
-      const _getimgprops = __webpack_require__(9241);
-      const _imagecomponent = __webpack_require__(896);
+      const _getimgprops = __webpack_require__(1335);
+      const _imagecomponent = __webpack_require__(1364);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5319)
+        __webpack_require__(2853)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -940,7 +940,7 @@
       /***/
     },
 
-    /***/ 5319: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2853: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -975,7 +975,7 @@
       /***/
     },
 
-    /***/ 1399: /***/ (
+    /***/ 7510: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -992,8 +992,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-778e1ed2-20240926/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(3447);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_ebxwuw64rrrjl5g3xvkzbm3k2i/node_modules/next/image.js
-      var next_image = __webpack_require__(6771);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-778e1ed2-20240926_re_fh4e5z7xrmfcbklhxaz7wo2zsy/node_modules/next/image.js
+      var next_image = __webpack_require__(9397);
       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",
@@ -1023,12 +1023,12 @@
       /***/
     },
 
-    /***/ 6771: /***/ (
+    /***/ 9397: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(5950);
+      module.exports = __webpack_require__(653);
 
       /***/
     },
@@ -1038,7 +1038,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(6940)
+      __webpack_exec__(2537)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Commit: 853a2ac

@sebmarkbage sebmarkbage enabled auto-merge (squash) September 26, 2024 15:37
@sebmarkbage sebmarkbage merged commit 80974df into vercel:canary Sep 26, 2024
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 11, 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.

2 participants