next.js icon indicating copy to clipboard operation
next.js copied to clipboard

Build deterministic server bundles (2nd attempt)

Open unstubbable opened this issue 1 year ago • 5 comments

My failed attempt in #66299 to make server bundles deterministic was grounded in an embarrassing misunderstanding of some Webpack internals. Thankfully, @sokra pointed out my wrong assumptions/conclusions in detail. This is the most important bit, which pointed me in the right direction:

The conflict avoidance is deterministic, so you even get deterministic IDs even in case of conflicts. (https://github.com/webpack/webpack/blob/400db90db807d630b6c9f5e7ccde2b8f01690f3b/lib/ids/IdHelpers.js#L386)

More on that in a bit. But first let me comment on this quickly:

Different IDs might be caused by different identifiers that are hashed.

In my testing, this turned out not to be true. I've observed different module IDs between two builds despite the full list of module identifiers being identical.

Back to the sorting of the modules: This must be deterministic so that module IDs are assigned deterministically even when there are ID collisions. It turns out that in the case of a failed "deterministic build" test, the sorting was indeed different between the two runs.

Here are the details recorded as diffs between the two runs (shown as rows of "<moduleName>: <moduleId>"):

modulesSortedByPreOrderIndexOrIdentifier (as used in the plugin, shows the different order)
--- a/modulesSortedByPreOrderIndexOrIdentifier.json
+++ b/modulesSortedByPreOrderIndexOrIdentifier.json
@@ -47,48 +47,6 @@
   "./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[7].use[0]!./node_modules/.pnpm/[email protected][email protected]/node_modules/styled-jsx/dist/index/index.js: 3037",
   "./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/client-only/index.js: 7361",
   "./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[7].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/strip-ansi/index.js: 3769",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js?absolutePagePath=private-next-app-dir%2Fapp-route%2Fedge%2Froute.js&page=%2Fapp-route%2Fedge%2Froute&appDirLoader=bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLXJvdXRlJTJGZWRnZSUyRnJvdXRlJnBhZ2U9JTJGYXBwLXJvdXRlJTJGZWRnZSUyRnJvdXRlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGYXBwLXJvdXRlJTJGZWRnZSUyRnJvdXRlLmpzJmFwcERpcj0lMkZwcml2YXRlJTJGdmFyJTJGZm9sZGVycyUyRnFzJTJGZzJiOTRuZmo3OTUzOGhnXzF5NnQyZzUwMDAwMGduJTJGVCUyRm5leHQtaW5zdGFsbC05ZjRkZDA1MWNmMGM4M2NkZWM1Y2I5MjFiNTEwZmE4MmUxMzhkODcyNmJlNmYwMzI0Zjk0YTAxNmVlMzhmMDk4JTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1yb3V0ZSUyRmVkZ2UlMkZyb3V0ZSZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE%3D&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!|rsc|ca2c03f3bffaa547: 4203",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/utils.js|rsc: 3439",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/lib/constants.js|rsc: 4970",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/cookies.js|rsc: 3409",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js|rsc: 6791",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js|rsc: 8440",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/app-router-headers.js|rsc: 5245",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js|rsc: 5262",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js|rsc|fb7e3b95f1c3a0ee: 1698",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js|rsc: 1829",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js|rsc: 2371",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/lib/trace/tracer.js|rsc: 3711",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/lib/trace/constants.js|rsc: 9402",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/@opentelemetry/api/index.js|rsc: 6722",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/cookie/index.js|rsc: 8893",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/p-queue/index.js|rsc: 2923",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/invariant-error.js|rsc: 1422",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/experimental/testmode/server-edge.js|rsc: 2909",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/experimental/testmode/context.js|rsc: 4902",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/experimental/testmode/fetch.js|rsc: 4096",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/lru-cache/index.js|rsc: 2509",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/isomorphic/path.js|rsc: 298",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/path-browserify/index.js|rsc: 2922",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/native-url/index.js|rsc: 7560",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/querystring-es3/index.js|rsc: 3413",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/path-to-regexp/index.js|rsc: 4800",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-modules/app-route/module.compiled.js|rsc: 9255",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-modules/app-route/module.js|rsc|5912d6217ddb4801: 1859",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js|rsc|972f78b85102b4b4: 317",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react/react.react-server.js|rsc: 1523",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react/cjs/react.react-server.production.js|rsc: 7647",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/hooks-server-context.js|rsc: 437",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/static-generation-bailout.js|rsc: 4486",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/lib/patch-fetch.js|rsc: 3931",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/build/output/log.js|rsc|535519012cda665c: 6093",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[7].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/action-async-storage.external.js|shared|15d7c78b52a4fca8: 7862",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/build/webpack/loaders/next-flight-loader/module-proxy.js|rsc: 2924",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-server-dom-webpack/server.edge.js|rsc: 414",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js|rsc: 5869",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-dom/react-dom.react-server.js|rsc: 6502",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-dom/cjs/react-dom.react-server.production.js|rsc: 9651",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-kind.js|rsc: 391",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/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-page/edge/page.js\",\"dev\":false,\"isServerComponent\":true,\"page\":\"/app-page/edge/page\",\"stringifiedConfig\":\"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJkZWZhdWx0IiwidXNlRmlsZVN5c3RlbVB1YmxpY1JvdXRlcyI6dHJ1ZSwiZ2VuZXJhdGVFdGFncyI6dHJ1ZSwicGFnZUV4dGVuc2lvbnMiOlsidHN4IiwidHMiLCJqc3giLCJqcyJdLCJwb3dlcmVkQnlIZWFkZXIiOnRydWUsImNvbXByZXNzIjp0cnVlLCJpbWFnZXMiOnsiZGV2aWNlU2l6ZXMiOls2NDAsNzUwLDgyOCwxMDgwLDEyMDAsMTkyMCwyMDQ4LDM4NDBdLCJpbWFnZVNpemVzIjpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLCJwYXRoIjoiL19uZXh0L2ltYWdlIiwibG9hZGVyIjoiZGVmYXVsdCIsImxvYWRlckZpbGUiOiIiLCJkb21haW5zIjpbXSwiZGlzYWJsZVN0YXRpY0ltYWdlcyI6ZmFsc2UsIm1pbmltdW1DYWNoZVRUTCI6NjAsImZvcm1hdHMiOlsiaW1hZ2Uvd2VicCJdLCJkYW5nZXJvdXNseUFsbG93U1ZHIjpmYWxzZSwiY29udGVudFNlY3VyaXR5UG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IHNhbmRib3g7IiwiY29udGVudERpc3Bvc2l0aW9uVHlwZSI6ImF0dGFjaG1lbnQiLCJyZW1vdGVQYXR0ZXJucyI6W10sInVub3B0aW1pemVkIjpmYWxzZX0sImRldkluZGljYXRvcnMiOnsiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJvcHRpbWl6ZUZvbnRzIjp0cnVlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJodHRwQWdlbnRPcHRpb25zIjp7ImtlZXBBbGl2ZSI6dHJ1ZX0sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwiZXhwZXJpbWVudGFsIjp7ImZseWluZ1NodXR0bGUiOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxMSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii9wcml2YXRlL3Zhci9mb2xkZXJzL3FzL2cyYjk0bmZqNzk1MzhoZ18xeTZ0Mmc1MDAwMDBnbi9UL25leHQtaW5zdGFsbC05ZjRkZDA1MWNmMGM4M2NkZWM1Y2I5MjFiNTEwZmE4MmUxMzhkODcyNmJlNmYwMzI0Zjk0YTAxNmVlMzhmMDk4Iiwic3djVHJhY2VQcm9maWxpbmciOmZhbHNlLCJmb3JjZVN3Y1RyYW5zZm9ybXMiOmZhbHNlLCJsYXJnZVBhZ2VEYXRhQnl0ZXMiOjEyODAwMCwiYWRqdXN0Rm9udEZhbGxiYWNrcyI6ZmFsc2UsImFkanVzdEZvbnRGYWxsYmFja3NXaXRoU2l6ZUFkanVzdCI6ZmFsc2UsInR5cGVkUm91dGVzIjpmYWxzZSwiaW5zdHJ1bWVudGF0aW9uSG9vayI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwid2VicGFja01lbW9yeU9wdGltaXphdGlvbnMiOmZhbHNlLCJvcHRpbWl6ZVNlcnZlclJlYWN0Ijp0cnVlLCJ1c2VFYXJseUltcG9ydCI6ZmFsc2UsInN0YWxlVGltZXMiOnsiZHluYW1pYyI6MCwic3RhdGljIjozMDB9LCJhZnRlciI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlTmFtZSI6Im5leHQuY29uZmlnLmpzIn0=\",\"pagesType\":\"app\",\"appDirLoader\":\"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLXBhZ2UlMkZlZGdlJTJGcGFnZSZwYWdlPSUyRmFwcC1wYWdlJTJGZWRnZSUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtcGFnZSUyRmVkZ2UlMkZwYWdlLmpzJmFwcERpcj0lMkZwcml2YXRlJTJGdmFyJTJGZm9sZGVycyUyRnFzJTJGZzJiOTRuZmo3OTUzOGhnXzF5NnQyZzUwMDAwMGduJTJGVCUyRm5leHQtaW5zdGFsbC05ZjRkZDA1MWNmMGM4M2NkZWM1Y2I5MjFiNTEwZmE4MmUxMzhkODcyNmJlNmYwMzI0Zjk0YTAxNmVlMzhmMDk4JTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1wYWdlJTJGZWRnZSUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0Qh\",\"sriEnabled\":false,\"middlewareConfig\":\"e30=\"}!|ssr|e712fb3bda90b9ba: 4068",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/error.js|ssr: 712",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/utils.js|ssr: 2935",
@@ -160,6 +118,7 @@
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/hooks-server-context.js|ssr: 6129",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/static-generation-bailout.js|ssr: 6749",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/redirect.js|ssr: 8876",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[7].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/action-async-storage.external.js|shared|15d7c78b52a4fca8: 7862",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/string-hash/index.js|ssr: 8927",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/lazy-dynamic/bailout-to-csr.js|ssr: 2711",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/export/helpers/is-navigation-signal-error.js|ssr: 9125",
@@ -180,6 +139,26 @@
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-modules/app-page/module.js|ssr|fdcb0955f0061e1a: 7752",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/app-router-context.shared-runtime.js|ssr: 7569",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/hooks-client-context.shared-runtime.js|ssr: 7236",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-kind.js|rsc: 391",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/build/webpack/loaders/next-flight-loader/module-proxy.js|rsc: 2924",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-server-dom-webpack/server.edge.js|rsc: 414",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js|rsc: 5869",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-dom/react-dom.react-server.js|rsc: 6502",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react-dom/cjs/react-dom.react-server.production.js|rsc: 9651",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react/react.react-server.js|rsc: 1523",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react/cjs/react.react-server.production.js|rsc: 7647",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js|rsc|972f78b85102b4b4: 317",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/hooks-server-context.js|rsc: 437",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/static-generation-bailout.js|rsc: 4486",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/app-router-headers.js|rsc: 5245",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js|rsc: 8440",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/lib/patch-fetch.js|rsc: 3931",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/lib/trace/constants.js|rsc: 9402",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/lib/trace/tracer.js|rsc: 3711",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/@opentelemetry/api/index.js|rsc: 6722",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/lib/constants.js|rsc: 3439",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/build/output/log.js|rsc|535519012cda665c: 6093",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/invariant-error.js|rsc: 1422",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./app/app-page/edge/page.js|rsc: 2476",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./app/layout.js|rsc: 2062",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/react/jsx-runtime.react-server.js|rsc: 9411",
@@ -201,5 +180,26 @@
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/layout-router.js|ssr|692069f9cbce605d: 6503",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/not-found-boundary.js|ssr: 7482",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[6].use[1]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/render-from-template-context.js|ssr: 6212",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true!|ssr: 1238"
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true!|ssr: 1238",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js?absolutePagePath=private-next-app-dir%2Fapp-route%2Fedge%2Froute.js&page=%2Fapp-route%2Fedge%2Froute&appDirLoader=bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLXJvdXRlJTJGZWRnZSUyRnJvdXRlJnBhZ2U9JTJGYXBwLXJvdXRlJTJGZWRnZSUyRnJvdXRlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGYXBwLXJvdXRlJTJGZWRnZSUyRnJvdXRlLmpzJmFwcERpcj0lMkZwcml2YXRlJTJGdmFyJTJGZm9sZGVycyUyRnFzJTJGZzJiOTRuZmo3OTUzOGhnXzF5NnQyZzUwMDAwMGduJTJGVCUyRm5leHQtaW5zdGFsbC05ZjRkZDA1MWNmMGM4M2NkZWM1Y2I5MjFiNTEwZmE4MmUxMzhkODcyNmJlNmYwMzI0Zjk0YTAxNmVlMzhmMDk4JTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1yb3V0ZSUyRmVkZ2UlMkZyb3V0ZSZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE%3D&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!|rsc|ca2c03f3bffaa547: 4203",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/utils.js|rsc: 5316",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/cookies.js|rsc: 3409",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js|rsc: 6791",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js|rsc: 5262",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js|rsc|fb7e3b95f1c3a0ee: 1698",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js|rsc: 1829",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js|rsc: 2371",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/cookie/index.js|rsc: 8893",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/p-queue/index.js|rsc: 2923",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/experimental/testmode/server-edge.js|rsc: 2909",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/experimental/testmode/context.js|rsc: 4902",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/experimental/testmode/fetch.js|rsc: 4096",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/lru-cache/index.js|rsc: 2509",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/isomorphic/path.js|rsc: 298",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/path-browserify/index.js|rsc: 2922",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/native-url/index.js|rsc: 7560",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/querystring-es3/index.js|rsc: 3413",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/compiled/path-to-regexp/index.js|rsc: 4800",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-modules/app-route/module.compiled.js|rsc: 9255",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-modules/app-route/module.js|rsc|5912d6217ddb4801: 1859"
 ]
modulesSortedByName (shows the effect: two module IDs changed)
--- a/modulesSortedByName.json
+++ b/modulesSortedByName.json
@@ -174,7 +174,7 @@
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/hooks-server-context.js|rsc: 437",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/not-found-error.js|rsc: 6887",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/client/components/static-generation-bailout.js|rsc: 4486",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/lib/constants.js|rsc: 4970",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/lib/constants.js|rsc: 3439",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js|rsc|972f78b85102b4b4: 317",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js|rsc|fb7e3b95f1c3a0ee: 1698",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/future/route-kind.js|rsc: 391",
@@ -188,7 +188,7 @@
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js|rsc: 8440",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js|rsc: 2371",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/spec-extension/cookies.js|rsc: 3409",
-  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/utils.js|rsc: 3439",
+  "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/server/web/utils.js|rsc: 5316",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/invariant-error.js|rsc: 1422",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/isomorphic/path.js|rsc: 298",
   "javascript/auto|./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[19].oneOf[3].use[0]!./node_modules/.pnpm/file+..+tmpdirname/node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js|rsc: 5262",

And notably, the compilation.entries were in a different order:

--- a/entries.json
+++ b/entries.json
@@ -1,6 +1,6 @@
 [
   "pages/api/pages-api/edge",
   "pages/pages-page/edge",
-  "app/app-route/edge/route",
-  "app/app-page/edge/page"
+  "app/app-page/edge/page",
+  "app/app-route/edge/route"
 ]

Without being too familiar with the Webpack internals, my understanding is that the order of the entries has an effect on how the preOrderIndex for each module is set in the module graph of the compilation. And the preOrderIndex controls the result of compareModulesByPreOrderIndexOrIdentifier which is used to sort the modules in the DeterministicModuleIdsPlugin.

Therefore, my conclusion is to try to make the order of the entries deterministic. Webpack allows either an array of strings for the entry config, or an object, but not an array of objects. So I think the only solution to fix this is on our site is to ensure that the insertion order into the entry object is deterministic. We can accomplish that by not modifying the original object in updatedEntry, but creating a new one instead.

With the fix, I ran the test 10 times in a loop without a failure. Without the fix, the test usually fails after only a few runs.

I hope I didn't make another wrong assumption along the way, but if I did, please point it out!

unstubbable avatar Jun 04 '24 21:06 unstubbable

Failing test suites

Commit: 81c6cff08089739f6721dd73408d76de6f90cf09

pnpm test test/integration/build-trace-extra-entries-turbo/test/index.test.js

  • build trace with extra entries > production mode > should build and trace correctly
Expand output

● build trace with extra entries › production mode › should build and trace correctly

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

Expected: true
Received: false

  57 |         ]
  58 |
> 59 |         expect(tracedFiles.some((file) => file.endsWith('hello.json'))).toBe(
     |                                                                         ^
  60 |           true
  61 |         )
  62 |         expect(

  at Object.toBe (integration/build-trace-extra-entries-turbo/test/index.test.js:59:73)

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

__NEXT_EXPERIMENTAL_PPR=true pnpm test-start test/e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts (PPR)

  • parallel-routes-and-interception with patching > should gracefully handle when two page segments match the children parallel slot
Expand output

● parallel-routes-and-interception with patching › should gracefully handle when two page segments match the children parallel slot

next build failed with code/signal 1

   97 |           if (code || signal)
   98 |             reject(
>  99 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  100 |             )
  101 |           else resolve()
  102 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:99:15)

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

ijjk avatar Jun 04 '24 21:06 ijjk

Totally forgot to mention: This would also explain why increasing the maxLength did fix the problem as well. Because then there are no ID collisions, and the deterministic ID assignment relies only on the module identifiers, which are in fact already deterministic, as written above.

unstubbable avatar Jun 04 '24 21:06 unstubbable

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
buildDuration 16.3s 14.9s N/A
buildDurationCached 8.2s 7s N/A
nodeModulesSize 359 MB 359 MB ⚠️ +674 B
nextStartRea..uration (ms) 395ms 396ms N/A
Client Bundles (main, webpack)
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
2358-HASH.js gzip 36.2 kB 36.1 kB N/A
2741.HASH.js gzip 171 B 170 B N/A
56e3f737-HASH.js gzip 51.4 kB 51.5 kB N/A
5751-HASH.js gzip 5.05 kB 5.04 kB N/A
framework-HASH.js gzip 56.5 kB 56.5 kB N/A
main-app-HASH.js gzip 222 B 221 B N/A
main-HASH.js gzip 32.3 kB 32.3 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 unstubbable/next.js the-real-deterministic-bundles Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 192 B 191 B N/A
amp-HASH.js gzip 511 B 506 B N/A
css-HASH.js gzip 342 B 343 B N/A
dynamic-HASH.js gzip 2.53 kB 2.52 kB N/A
edge-ssr-HASH.js gzip 266 B 264 B N/A
head-HASH.js gzip 364 B 365 B N/A
hooks-HASH.js gzip 392 B 390 B N/A
image-HASH.js gzip 4.27 kB 4.27 kB N/A
index-HASH.js gzip 267 B 268 B N/A
link-HASH.js gzip 2.68 kB 2.68 kB N/A
routerDirect..HASH.js gzip 327 B 328 B N/A
script-HASH.js gzip 396 B 397 B N/A
withRouter-HASH.js gzip 323 B 325 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 299 B 299 B
Client Build Manifests
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
_buildManifest.js gzip 486 B 484 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
index.html gzip 523 B 524 B N/A
link.html gzip 535 B 538 B N/A
withRouter.html gzip 519 B 520 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
edge-ssr.js gzip 124 kB 124 kB N/A
page.js gzip 166 kB 166 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
middleware-b..fest.js gzip 662 B 658 B N/A
middleware-r..fest.js gzip 158 B 156 B N/A
middleware.js gzip 29.4 kB 29.4 kB N/A
edge-runtime..pack.js gzip 1.03 kB 1.03 kB
Overall change 1.03 kB 1.03 kB
Next Runtimes
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
app-page-exp...dev.js gzip 185 kB 185 kB
app-page-exp..prod.js gzip 112 kB 112 kB
app-page-tur..prod.js gzip 122 kB 122 kB
app-page-tur..prod.js gzip 119 kB 119 kB
app-page.run...dev.js gzip 177 kB 177 kB
app-page.run..prod.js gzip 108 kB 108 kB
app-route-ex...dev.js gzip 24.9 kB 24.9 kB
app-route-ex..prod.js gzip 18.7 kB 18.7 kB
app-route-tu..prod.js gzip 18.7 kB 18.7 kB
app-route-tu..prod.js gzip 18.6 kB 18.6 kB
app-route.ru...dev.js gzip 24.6 kB 24.6 kB
app-route.ru..prod.js gzip 18.6 kB 18.6 kB
pages-api-tu..prod.js gzip 9.53 kB 9.53 kB
pages-api.ru...dev.js gzip 9.8 kB 9.8 kB
pages-api.ru..prod.js gzip 9.53 kB 9.53 kB
pages-turbo...prod.js gzip 21.5 kB 21.5 kB
pages.runtim...dev.js gzip 22.1 kB 22.1 kB
pages.runtim..prod.js gzip 21.5 kB 21.5 kB
server.runti..prod.js gzip 52.4 kB 52.4 kB
Overall change 1.09 MB 1.09 MB
build cache Overall increase ⚠️
vercel/next.js canary unstubbable/next.js the-real-deterministic-bundles Change
0.pack gzip 1.67 MB 1.67 MB N/A
index.pack gzip 129 kB 129 kB ⚠️ +489 B
Overall change 129 kB 129 kB ⚠️ +489 B
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
       /***/
     },
 
-    /***/ 2134: /***/ (
+    /***/ 9718: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -30,7 +30,7 @@
         default: () => /* binding */ nHandler,
       });
 
-      // NAMESPACE OBJECT: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/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-statsqJwIrL%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // NAMESPACE OBJECT: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/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-statsqJwIrL%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&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, {
@@ -71,35 +71,35 @@
         tree: () => tree,
       });
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/web/globals.js
-      var globals = __webpack_require__(6034);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
-      var adapter = __webpack_require__(7565);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 88 modules
-      var render = __webpack_require__(9520);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
-      var incremental_cache = __webpack_require__(3656);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/app-render/app-render.js + 51 modules
-      var app_render = __webpack_require__(887);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
-      var module_compiled = __webpack_require__(8993);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/route-kind.js
-      var route_kind = __webpack_require__(252);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/client/components/error-boundary.js
-      var error_boundary = __webpack_require__(2561);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/app-render/entry-base.js + 10 modules
-      var entry_base = __webpack_require__(4134); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/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-statsqJwIrL%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/web/globals.js
+      var globals = __webpack_require__(210);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+      var adapter = __webpack_require__(9203);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 88 modules
+      var render = __webpack_require__(53);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
+      var incremental_cache = __webpack_require__(3392);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/app-render/app-render.js + 51 modules
+      var app_render = __webpack_require__(5488);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+      var module_compiled = __webpack_require__(9771);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/route-kind.js
+      var route_kind = __webpack_require__(598);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/client/components/error-boundary.js
+      var error_boundary = __webpack_require__(7434);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/app-render/entry-base.js + 10 modules
+      var entry_base = __webpack_require__(7276); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/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-statsqJwIrL%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&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__, 8369)
+          __webpack_require__.bind(__webpack_require__, 2716)
         );
       const component1 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 6309)
+          __webpack_require__.bind(__webpack_require__, 4186)
         );
       const page2 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 2287)
+          __webpack_require__.bind(__webpack_require__, 8236)
         );
 
       // We inject the tree and pages here so that we can use them in the route
@@ -166,12 +166,12 @@
       });
 
       //# sourceMappingURL=app-page.js.map
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/lib/page-types.js
-      var page_types = __webpack_require__(8119);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/app-render/encryption-utils.js
-      var encryption_utils = __webpack_require__(3866);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/dist/esm/server/app-render/action-utils.js
-      var action_utils = __webpack_require__(1679); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImJ1aWxkQWN0aXZpdHkiOnRydWUsImJ1aWxkQWN0aXZpdHlQb3NpdGlvbiI6ImJvdHRvbS1yaWdodCJ9LCJvbkRlbWFuZEVudHJpZXMiOnsibWF4SW5hY3RpdmVBZ2UiOjYwMDAwLCJwYWdlc0J1ZmZlckxlbmd0aCI6NX0sImFtcCI6eyJjYW5vbmljYWxCYXNlIjoiIn0sImJhc2VQYXRoIjoiIiwic2Fzc09wdGlvbnMiOnt9LCJ0cmFpbGluZ1NsYXNoIjpmYWxzZSwiaTE4biI6bnVsbCwicHJvZHVjdGlvbkJyb3dzZXJTb3VyY2VNYXBzIjpmYWxzZSwib3B0aW1pemVGb250cyI6dHJ1ZSwiZXhjbHVkZURlZmF1bHRNb21lbnRMb2NhbGVzIjp0cnVlLCJzZXJ2ZXJSdW50aW1lQ29uZmlnIjp7fSwicHVibGljUnVudGltZUNvbmZpZyI6e30sInJlYWN0UHJvZHVjdGlvblByb2ZpbGluZyI6ZmFsc2UsInJlYWN0U3RyaWN0TW9kZSI6bnVsbCwiaHR0cEFnZW50T3B0aW9ucyI6eyJrZWVwQWxpdmUiOnRydWV9LCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sImV4cGVyaW1lbnRhbCI6eyJmbHlpbmdTaHV0dGxlIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaXNyRmx1c2hUb0Rpc2siOnRydWUsIndvcmtlclRocmVhZHMiOmZhbHNlLCJvcHRpbWl6ZUNzcyI6ZmFsc2UsIm5leHRTY3JpcHRXb3JrZXJzIjpmYWxzZSwic2Nyb2xsUmVzdG9yYXRpb24iOmZhbHNlLCJleHRlcm5hbERpciI6ZmFsc2UsImRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nIjpmYWxzZSwiZ3ppcFNpemUiOnRydWUsImNyYUNvbXBhdCI6ZmFsc2UsImVzbUV4dGVybmFscyI6dHJ1ZSwiZnVsbHlTcGVjaWZpZWQiOmZhbHNlLCJvdXRwdXRGaWxlVHJhY2luZ1Jvb3QiOiIvdG1wL25leHQtc3RhdHNxSndJckwvc3RhdHMtYXBwIiwic3djVHJhY2VQcm9maWxpbmciOmZhbHNlLCJmb3JjZVN3Y1RyYW5zZm9ybXMiOmZhbHNlLCJsYXJnZVBhZ2VEYXRhQnl0ZXMiOjEyODAwMCwiYWRqdXN0Rm9udEZhbGxiYWNrcyI6ZmFsc2UsImFkanVzdEZvbnRGYWxsYmFja3NXaXRoU2l6ZUFkanVzdCI6ZmFsc2UsInR5cGVkUm91dGVzIjpmYWxzZSwiaW5zdHJ1bWVudGF0aW9uSG9vayI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwid2VicGFja01lbW9yeU9wdGltaXphdGlvbnMiOmZhbHNlLCJvcHRpbWl6ZVNlcnZlclJlYWN0Ijp0cnVlLCJ1c2VFYXJseUltcG9ydCI6ZmFsc2UsInN0YWxlVGltZXMiOnsiZHluYW1pYyI6MCwic3RhdGljIjozMDB9LCJhZnRlciI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzcUp3SXJML3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzcUp3SXJMJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0Qh","sriEnabled":false,"middlewareConfig":"e30="}!
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/lib/page-types.js
+      var page_types = __webpack_require__(3431);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+      var encryption_utils = __webpack_require__(5289);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/dist/esm/server/app-render/action-utils.js
+      var action_utils = __webpack_require__(1863); // CONCATENATED MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImJ1aWxkQWN0aXZpdHkiOnRydWUsImJ1aWxkQWN0aXZpdHlQb3NpdGlvbiI6ImJvdHRvbS1yaWdodCJ9LCJvbkRlbWFuZEVudHJpZXMiOnsibWF4SW5hY3RpdmVBZ2UiOjYwMDAwLCJwYWdlc0J1ZmZlckxlbmd0aCI6NX0sImFtcCI6eyJjYW5vbmljYWxCYXNlIjoiIn0sImJhc2VQYXRoIjoiIiwic2Fzc09wdGlvbnMiOnt9LCJ0cmFpbGluZ1NsYXNoIjpmYWxzZSwiaTE4biI6bnVsbCwicHJvZHVjdGlvbkJyb3dzZXJTb3VyY2VNYXBzIjpmYWxzZSwib3B0aW1pemVGb250cyI6dHJ1ZSwiZXhjbHVkZURlZmF1bHRNb21lbnRMb2NhbGVzIjp0cnVlLCJzZXJ2ZXJSdW50aW1lQ29uZmlnIjp7fSwicHVibGljUnVudGltZUNvbmZpZyI6e30sInJlYWN0UHJvZHVjdGlvblByb2ZpbGluZyI6ZmFsc2UsInJlYWN0U3RyaWN0TW9kZSI6bnVsbCwiaHR0cEFnZW50T3B0aW9ucyI6eyJrZWVwQWxpdmUiOnRydWV9LCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sImV4cGVyaW1lbnRhbCI6eyJmbHlpbmdTaHV0dGxlIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaXNyRmx1c2hUb0Rpc2siOnRydWUsIndvcmtlclRocmVhZHMiOmZhbHNlLCJvcHRpbWl6ZUNzcyI6ZmFsc2UsIm5leHRTY3JpcHRXb3JrZXJzIjpmYWxzZSwic2Nyb2xsUmVzdG9yYXRpb24iOmZhbHNlLCJleHRlcm5hbERpciI6ZmFsc2UsImRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nIjpmYWxzZSwiZ3ppcFNpemUiOnRydWUsImNyYUNvbXBhdCI6ZmFsc2UsImVzbUV4dGVybmFscyI6dHJ1ZSwiZnVsbHlTcGVjaWZpZWQiOmZhbHNlLCJvdXRwdXRGaWxlVHJhY2luZ1Jvb3QiOiIvdG1wL25leHQtc3RhdHNxSndJckwvc3RhdHMtYXBwIiwic3djVHJhY2VQcm9maWxpbmciOmZhbHNlLCJmb3JjZVN3Y1RyYW5zZm9ybXMiOmZhbHNlLCJsYXJnZVBhZ2VEYXRhQnl0ZXMiOjEyODAwMCwiYWRqdXN0Rm9udEZhbGxiYWNrcyI6ZmFsc2UsImFkanVzdEZvbnRGYWxsYmFja3NXaXRoU2l6ZUFkanVzdCI6ZmFsc2UsInR5cGVkUm91dGVzIjpmYWxzZSwiaW5zdHJ1bWVudGF0aW9uSG9vayI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwid2VicGFja01lbW9yeU9wdGltaXphdGlvbnMiOmZhbHNlLCJvcHRpbWl6ZVNlcnZlclJlYWN0Ijp0cnVlLCJ1c2VFYXJseUltcG9ydCI6ZmFsc2UsInN0YWxlVGltZXMiOnsiZHluYW1pYyI6MCwic3RhdGljIjozMDB9LCJhZnRlciI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzcUp3SXJML3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzcUp3SXJMJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0Qh","sriEnabled":false,"middlewareConfig":"e30="}!
       var _self___RSC_MANIFEST;
 
       const incrementalCacheHandler = null;
@@ -430,47 +430,47 @@
       /***/
     },
 
-    /***/ 8314: /***/ (
+    /***/ 2245: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2300)
+        __webpack_require__.bind(__webpack_require__, 7156)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3447)
+        __webpack_require__.bind(__webpack_require__, 209)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4596)
+        __webpack_require__.bind(__webpack_require__, 3612)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5542)
+        __webpack_require__.bind(__webpack_require__, 6231)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3314)
+        __webpack_require__.bind(__webpack_require__, 8106)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9654)
+        __webpack_require__.bind(__webpack_require__, 6002)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9870)
+        __webpack_require__.bind(__webpack_require__, 5585)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1713)
+        __webpack_require__.bind(__webpack_require__, 7135)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 959)
+        __webpack_require__.bind(__webpack_require__, 579)
       );
 
       /***/
     },
 
-    /***/ 3158: /***/ () => {
+    /***/ 3906: /***/ () => {
       /***/
     },
 
-    /***/ 2287: /***/ (
+    /***/ 8236: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -490,7 +490,7 @@
       /***/
     },
 
-    /***/ 8369: /***/ (
+    /***/ 2716: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -502,7 +502,7 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(3046);
+        __webpack_require__(5868);
 
       function RootLayout({ children }) {
         return /*#__PURE__*/ (0,
@@ -521,7 +521,7 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [160, 298], () => __webpack_exec__(2134));
+    /******/ __webpack_require__.O(0, [446, 6], () => __webpack_exec__(9718));
     /******/ 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],
   {
-    /***/ 4176: /***/ (
+    /***/ 5930: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(2010);
+          return __webpack_require__(3052);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 9626: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1892: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,15 +40,15 @@
         __webpack_require__(7141)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8940)
+        __webpack_require__(1951)
       );
-      const _getimgprops = __webpack_require__(1395);
-      const _imageconfig = __webpack_require__(2568);
-      const _imageconfigcontextsharedruntime = __webpack_require__(9067);
-      const _warnonce = __webpack_require__(3082);
-      const _routercontextsharedruntime = __webpack_require__(9818);
+      const _getimgprops = __webpack_require__(6033);
+      const _imageconfig = __webpack_require__(9782);
+      const _imageconfigcontextsharedruntime = __webpack_require__(3392);
+      const _warnonce = __webpack_require__(6433);
+      const _routercontextsharedruntime = __webpack_require__(3918);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3978)
+        __webpack_require__(646)
       );
       // This is replaced by webpack define plugin
       const configEnv = {
@@ -376,7 +376,7 @@
       /***/
     },
 
-    /***/ 1395: /***/ (
+    /***/ 6033: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -392,9 +392,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(3082);
-      const _imageblursvg = __webpack_require__(8846);
-      const _imageconfig = __webpack_require__(2568);
+      const _warnonce = __webpack_require__(6433);
+      const _imageblursvg = __webpack_require__(6547);
+      const _imageconfig = __webpack_require__(9782);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -769,7 +769,7 @@
       /***/
     },
 
-    /***/ 8846: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6547: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -824,7 +824,7 @@
       /***/
     },
 
-    /***/ 5626: /***/ (
+    /***/ 9915: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -851,10 +851,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(1478);
-      const _getimgprops = __webpack_require__(1395);
-      const _imagecomponent = __webpack_require__(9626);
+      const _getimgprops = __webpack_require__(6033);
+      const _imagecomponent = __webpack_require__(1892);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3978)
+        __webpack_require__(646)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -886,7 +886,7 @@
       /***/
     },
 
-    /***/ 3978: /***/ (__unused_webpack_module, exports) => {
+    /***/ 646: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -921,7 +921,7 @@
       /***/
     },
 
-    /***/ 2010: /***/ (
+    /***/ 3052: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -938,8 +938,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(5134);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_fxmik4ojtenl5wvndfh5uokf6a/node_modules/next/image.js
-      var next_image = __webpack_require__(7365);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-f994737d14-20240522_react_3yjmd2pnnuuncmihyqifk2hdsq/node_modules/next/image.js
+      var next_image = __webpack_require__(7027);
       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",
@@ -969,12 +969,12 @@
       /***/
     },
 
-    /***/ 7365: /***/ (
+    /***/ 7027: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(5626);
+      module.exports = __webpack_require__(9915);
 
       /***/
     },
@@ -984,7 +984,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(4176)
+      __webpack_exec__(5930)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 2358-HASH.js

Diff too large to display

Commit: 81c6cff08089739f6721dd73408d76de6f90cf09

ijjk avatar Jun 04 '24 21:06 ijjk

Converting it to a draft while I investigate the two test failures.

unstubbable avatar Jun 05 '24 16:06 unstubbable

@ztanner Regarding the test failure of parallel-routes-and-interception.test.ts, I have a question that relates to #59791.

Is the following example app supposed to throw with "You cannot have two parallel pages that resolve to the same path", or is it supposed to be handled gracefully?

test/e2e/app-dir/parallel-routes-collision/app
├── (group)
│   ├── @slot
│   │   ├── collision
│   │   │   └── page.tsx
│   │   ├── other
│   │   │   └── page.tsx
│   │   └── default.tsx
│   └── layout.tsx
├── collision
│   └── page.tsx
├── layout.tsx
└── page.tsx

I feel like it should throw, but the test you updated in #59791 states the opposite. But it only succeeds by accident, I believe. It seems that it implicitly relies on the order of the entries in appPathRoutes:

https://github.com/vercel/next.js/blob/6185444e0a944a82e7719ac37dad8becfed86acd/packages/next/src/build/index.ts#L2019-L2030

When for some reason /(group)/@slot/collision/page is earlier in the object than /collision/page (e.g. due to a slower file read for collision/page.tsx, or because the entries were sorted alphabetically), then it will try to prerender the wrong page for the /collision route. This leads to the error "Cannot read properties of undefined (reading 'clientModules')" in app-render.tsx:954 because no client manifest was created.

unstubbable avatar Jun 06 '24 14:06 unstubbable

Discussed offline with @sokra. Approach seems valid, but the PR is currently blocked on the aforementioned issue with parallel routes. This is not prioritised right now, so I'm closing it, and might revisit at a later point in time.

unstubbable avatar Sep 25 '24 06:09 unstubbable