-
Notifications
You must be signed in to change notification settings - Fork 27k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(build): fix css modules out of order issue from libraries #70087
base: canary
Are you sure you want to change the base?
Conversation
Allow CI Workflow Run
Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer |
@piratetaco Thank you for submitting a PR! Is it possible to also add a test case for this? |
yeah of course, though I'm not quite sure where this functionality is tested today. If you could point me to where in the tree, I'd be happy to work through it! |
@piratetaco The |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
buildDuration | 29.9s | 27.8s | N/A |
buildDurationCached | 24.4s | 21.2s | N/A |
nodeModulesSize | 371 MB | 371 MB | N/A |
nextStartRea..uration (ms) | 779ms | 781ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
307bebc6-HASH.js gzip | 52.6 kB | 52.6 kB | N/A |
3620-HASH.js gzip | 43.7 kB | 43.7 kB | ✓ |
801.HASH.js gzip | 168 B | 169 B | N/A |
8962-HASH.js gzip | 5.26 kB | 5.26 kB | N/A |
framework-HASH.js gzip | 57.4 kB | 57.4 kB | N/A |
main-app-HASH.js gzip | 232 B | 231 B | N/A |
main-HASH.js gzip | 32.8 kB | 32.8 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 43.7 kB | 43.7 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
_app-HASH.js gzip | 192 B | 192 B | ✓ |
_error-HASH.js gzip | 193 B | 192 B | N/A |
amp-HASH.js gzip | 509 B | 509 B | ✓ |
css-HASH.js gzip | 341 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 266 B | 266 B | ✓ |
head-HASH.js gzip | 365 B | 364 B | N/A |
hooks-HASH.js gzip | 392 B | 391 B | N/A |
image-HASH.js gzip | 4.41 kB | 4.41 kB | N/A |
index-HASH.js gzip | 267 B | 268 B | N/A |
link-HASH.js gzip | 2.78 kB | 2.78 kB | N/A |
routerDirect..HASH.js gzip | 327 B | 327 B | ✓ |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 324 B | 322 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.64 kB | 3.64 kB | ✓ |
Client Build Manifests
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
_buildManifest.js gzip | 748 B | 750 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
index.html gzip | 521 B | 523 B | N/A |
link.html gzip | 536 B | 537 B | N/A |
withRouter.html gzip | 518 B | 519 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
edge-ssr.js gzip | 130 kB | 130 kB | N/A |
page.js gzip | 188 kB | 188 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 670 B | 671 B | N/A |
middleware-r..fest.js gzip | 154 B | 156 B | N/A |
middleware.js gzip | 30.7 kB | 30.7 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
973-experime...dev.js gzip | 322 B | 322 B | ✓ |
973.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 314 kB | 314 kB | ✓ |
app-page-exp..prod.js gzip | 120 kB | 120 kB | ✓ |
app-page-tur..prod.js gzip | 134 kB | 134 kB | ✓ |
app-page-tur..prod.js gzip | 129 kB | 129 kB | ✓ |
app-page.run...dev.js gzip | 304 kB | 304 kB | ✓ |
app-page.run..prod.js gzip | 116 kB | 116 kB | ✓ |
app-route-ex...dev.js gzip | 35 kB | 35 kB | ✓ |
app-route-ex..prod.js gzip | 23.7 kB | 23.7 kB | ✓ |
app-route-tu..prod.js gzip | 23.7 kB | 23.7 kB | ✓ |
app-route-tu..prod.js gzip | 23.5 kB | 23.5 kB | ✓ |
app-route.ru...dev.js gzip | 36.7 kB | 36.7 kB | ✓ |
app-route.ru..prod.js gzip | 23.5 kB | 23.5 kB | ✓ |
pages-api-tu..prod.js gzip | 9.61 kB | 9.61 kB | ✓ |
pages-api.ru...dev.js gzip | 11.4 kB | 11.4 kB | ✓ |
pages-api.ru..prod.js gzip | 9.61 kB | 9.61 kB | ✓ |
pages-turbo...prod.js gzip | 20.9 kB | 20.9 kB | ✓ |
pages.runtim...dev.js gzip | 26.5 kB | 26.5 kB | ✓ |
pages.runtim..prod.js gzip | 20.9 kB | 20.9 kB | ✓ |
server.runti..prod.js gzip | 60.1 kB | 60.1 kB | ✓ |
Overall change | 1.44 MB | 1.44 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | piratetaco/next.js fix/css-modules-in-packages | Change | |
---|---|---|---|
0.pack gzip | 1.84 MB | 1.84 MB | |
index.pack gzip | 143 kB | 142 kB | N/A |
Overall change | 1.84 MB | 1.84 MB |
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
/***/
},
- /***/ 2226: /***/ (
+ /***/ 9908: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -30,7 +30,7 @@
default: () => /* binding */ nHandler,
});
- // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsgRA10h%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+ // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsgRA10h%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
var page_next_edge_ssr_entry_namespaceObject = {};
__webpack_require__.r(page_next_edge_ssr_entry_namespaceObject);
__webpack_require__.d(page_next_edge_ssr_entry_namespaceObject, {
@@ -82,35 +82,35 @@
workUnitAsyncStorage: () => entry_base /* workUnitAsyncStorage */.Sz,
});
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/web/globals.js
- var globals = __webpack_require__(6622);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
- var adapter = __webpack_require__(3395);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 86 modules
- var render = __webpack_require__(8888);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
- var incremental_cache = __webpack_require__(1232);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/app-render/app-render.js + 62 modules
- var app_render = __webpack_require__(6741);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
- var module_compiled = __webpack_require__(2198);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/route-kind.js
- var route_kind = __webpack_require__(2873);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/client/components/error-boundary.js
- var error_boundary = __webpack_require__(2267);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/app-render/entry-base.js + 29 modules
- var entry_base = __webpack_require__(4940); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsgRA10h%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/web/globals.js
+ var globals = __webpack_require__(4081);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+ var adapter = __webpack_require__(8106);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 86 modules
+ var render = __webpack_require__(9208);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
+ var incremental_cache = __webpack_require__(2699);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/app-render/app-render.js + 62 modules
+ var app_render = __webpack_require__(5506);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+ var module_compiled = __webpack_require__(6518);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/route-kind.js
+ var route_kind = __webpack_require__(2429);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/client/components/error-boundary.js
+ var error_boundary = __webpack_require__(5322);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/app-render/entry-base.js + 29 modules
+ var entry_base = __webpack_require__(9345); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-statsgRA10h%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
const module0 = () =>
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 3336)
+ __webpack_require__.bind(__webpack_require__, 2968)
);
const module1 = () =>
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 5535)
+ __webpack_require__.bind(__webpack_require__, 5837)
);
const page2 = () =>
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 7988)
+ __webpack_require__.bind(__webpack_require__, 2566)
);
// We inject the tree and pages here so that we can use them in the route
@@ -173,12 +173,12 @@
});
//# sourceMappingURL=app-page.js.map
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/lib/page-types.js
- var page_types = __webpack_require__(7223);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/app-render/encryption-utils.js
- var encryption_utils = __webpack_require__(821);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/dist/esm/server/app-render/action-utils.js
- var action_utils = __webpack_require__(3960); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sImV4cGlyZVRpbWUiOjMxNTM2MDAwLCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii90bXAvbmV4dC1zdGF0c2dSQTEwaC9zdGF0cy1hcHAiLCJleHBlcmltZW50YWwiOnsibXVsdGlab25lRHJhZnRNb2RlIjpmYWxzZSwiYXBwTmF2RmFpbEhhbmRsaW5nIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaXNyRmx1c2hUb0Rpc2siOnRydWUsIndvcmtlclRocmVhZHMiOmZhbHNlLCJvcHRpbWl6ZUNzcyI6ZmFsc2UsIm5leHRTY3JpcHRXb3JrZXJzIjpmYWxzZSwic2Nyb2xsUmVzdG9yYXRpb24iOmZhbHNlLCJleHRlcm5hbERpciI6ZmFsc2UsImRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nIjpmYWxzZSwiZ3ppcFNpemUiOnRydWUsImNyYUNvbXBhdCI6ZmFsc2UsImVzbUV4dGVybmFscyI6dHJ1ZSwiZnVsbHlTcGVjaWZpZWQiOmZhbHNlLCJzd2NUcmFjZVByb2ZpbGluZyI6ZmFsc2UsImZvcmNlU3djVHJhbnNmb3JtcyI6ZmFsc2UsImxhcmdlUGFnZURhdGFCeXRlcyI6MTI4MDAwLCJ0dXJibyI6eyJyb290IjoiL3RtcC9uZXh0LXN0YXRzZ1JBMTBoL3N0YXRzLWFwcCJ9LCJ0eXBlZFJvdXRlcyI6ZmFsc2UsInR5cGVkRW52IjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJDb21waWxlcyI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQnVpbGRUcmFjZXMiOmZhbHNlLCJwcHIiOmZhbHNlLCJwcHJGYWxsYmFja3MiOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzZ1JBMTBoL3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzZ1JBMTBoJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/lib/page-types.js
+ var page_types = __webpack_require__(8665);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+ var encryption_utils = __webpack_require__(4446);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/dist/esm/server/app-render/action-utils.js
+ var action_utils = __webpack_require__(8177); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sImV4cGlyZVRpbWUiOjMxNTM2MDAwLCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii90bXAvbmV4dC1zdGF0c2dSQTEwaC9zdGF0cy1hcHAiLCJleHBlcmltZW50YWwiOnsibXVsdGlab25lRHJhZnRNb2RlIjpmYWxzZSwiYXBwTmF2RmFpbEhhbmRsaW5nIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaXNyRmx1c2hUb0Rpc2siOnRydWUsIndvcmtlclRocmVhZHMiOmZhbHNlLCJvcHRpbWl6ZUNzcyI6ZmFsc2UsIm5leHRTY3JpcHRXb3JrZXJzIjpmYWxzZSwic2Nyb2xsUmVzdG9yYXRpb24iOmZhbHNlLCJleHRlcm5hbERpciI6ZmFsc2UsImRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nIjpmYWxzZSwiZ3ppcFNpemUiOnRydWUsImNyYUNvbXBhdCI6ZmFsc2UsImVzbUV4dGVybmFscyI6dHJ1ZSwiZnVsbHlTcGVjaWZpZWQiOmZhbHNlLCJzd2NUcmFjZVByb2ZpbGluZyI6ZmFsc2UsImZvcmNlU3djVHJhbnNmb3JtcyI6ZmFsc2UsImxhcmdlUGFnZURhdGFCeXRlcyI6MTI4MDAwLCJ0dXJibyI6eyJyb290IjoiL3RtcC9uZXh0LXN0YXRzZ1JBMTBoL3N0YXRzLWFwcCJ9LCJ0eXBlZFJvdXRlcyI6ZmFsc2UsInR5cGVkRW52IjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJDb21waWxlcyI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQnVpbGRUcmFjZXMiOmZhbHNlLCJwcHIiOmZhbHNlLCJwcHJGYWxsYmFja3MiOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LXN0YXRzZ1JBMTBoL3N0YXRzLWFwcC9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzZ1JBMTBoJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
var _self___RSC_MANIFEST;
const incrementalCacheHandler = null;
@@ -443,56 +443,56 @@
/***/
},
- /***/ 8775: /***/ (
+ /***/ 4969: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 7063)
+ __webpack_require__.bind(__webpack_require__, 7765)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 2422)
+ __webpack_require__.bind(__webpack_require__, 1514)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 2610)
+ __webpack_require__.bind(__webpack_require__, 2991)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 648)
+ __webpack_require__.bind(__webpack_require__, 2495)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 9941)
+ __webpack_require__.bind(__webpack_require__, 2418)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 9060)
+ __webpack_require__.bind(__webpack_require__, 2304)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 3109)
+ __webpack_require__.bind(__webpack_require__, 1211)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 3747)
+ __webpack_require__.bind(__webpack_require__, 7431)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 6789)
+ __webpack_require__.bind(__webpack_require__, 3042)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 3277)
+ __webpack_require__.bind(__webpack_require__, 2615)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 8254)
+ __webpack_require__.bind(__webpack_require__, 4217)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 6972)
+ __webpack_require__.bind(__webpack_require__, 1847)
);
/***/
},
- /***/ 1942: /***/ () => {
+ /***/ 3446: /***/ () => {
/***/
},
- /***/ 7988: /***/ (
+ /***/ 2566: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -512,7 +512,7 @@
/***/
},
- /***/ 3336: /***/ (
+ /***/ 2968: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -524,7 +524,7 @@
/* harmony export */
});
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
- __webpack_require__(4021);
+ __webpack_require__(3003);
function RootLayout({ children }) {
return /*#__PURE__*/ (0,
@@ -543,7 +543,7 @@
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
- /******/ __webpack_require__.O(0, [268, 233], () => __webpack_exec__(2226));
+ /******/ __webpack_require__.O(0, [188, 79], () => __webpack_exec__(9908));
/******/ 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],
{
- /***/ 6441: /***/ (
+ /***/ 7486: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/image",
function () {
- return __webpack_require__(2563);
+ return __webpack_require__(5412);
},
]);
if (false) {
@@ -18,7 +18,7 @@
/***/
},
- /***/ 6730: /***/ (module, exports, __webpack_require__) => {
+ /***/ 9569: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
__webpack_require__(38)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(8624)
+ __webpack_require__(7269)
);
- const _getimgprops = __webpack_require__(2990);
- const _imageconfig = __webpack_require__(876);
- const _imageconfigcontextsharedruntime = __webpack_require__(2767);
- const _warnonce = __webpack_require__(5064);
- const _routercontextsharedruntime = __webpack_require__(3948);
+ const _getimgprops = __webpack_require__(6985);
+ const _imageconfig = __webpack_require__(8151);
+ const _imageconfigcontextsharedruntime = __webpack_require__(8836);
+ const _warnonce = __webpack_require__(9138);
+ const _routercontextsharedruntime = __webpack_require__(4654);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(5825)
+ __webpack_require__(2946)
);
- const _usemergedref = __webpack_require__(6956);
+ const _usemergedref = __webpack_require__(5658);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
/***/
},
- /***/ 6956: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5658: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
/***/
},
- /***/ 2990: /***/ (
+ /***/ 6985: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -448,9 +448,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(5064);
- const _imageblursvg = __webpack_require__(2243);
- const _imageconfig = __webpack_require__(876);
+ const _warnonce = __webpack_require__(9138);
+ const _imageblursvg = __webpack_require__(4901);
+ const _imageconfig = __webpack_require__(8151);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -823,7 +823,7 @@
/***/
},
- /***/ 2243: /***/ (__unused_webpack_module, exports) => {
+ /***/ 4901: /***/ (__unused_webpack_module, exports) => {
"use strict";
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -878,7 +878,7 @@
/***/
},
- /***/ 2470: /***/ (
+ /***/ 5731: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -905,10 +905,10 @@
},
});
const _interop_require_default = __webpack_require__(9608);
- const _getimgprops = __webpack_require__(2990);
- const _imagecomponent = __webpack_require__(6730);
+ const _getimgprops = __webpack_require__(6985);
+ const _imagecomponent = __webpack_require__(9569);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(5825)
+ __webpack_require__(2946)
);
function getImageProps(imgProps) {
const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -940,7 +940,7 @@
/***/
},
- /***/ 5825: /***/ (__unused_webpack_module, exports) => {
+ /***/ 2946: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -975,7 +975,7 @@
/***/
},
- /***/ 2563: /***/ (
+ /***/ 5412: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -992,8 +992,8 @@
// EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-cd22717c-20241013/node_modules/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(7125);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_a5fwrzcgiqxq7kbo7kpyzjc5ji/node_modules/next/image.js
- var next_image = __webpack_require__(9983);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-cd22717c-20241013_re_zq6nvqen5pqfmm5xeouxrlc4aq/node_modules/next/image.js
+ var next_image = __webpack_require__(9231);
var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
/* harmony default export */ const nextjs = {
src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1023,12 +1023,12 @@
/***/
},
- /***/ 9983: /***/ (
+ /***/ 9231: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(2470);
+ module.exports = __webpack_require__(5731);
/***/
},
@@ -1038,7 +1038,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
- __webpack_exec__(6441)
+ __webpack_exec__(7486)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4644],
{
- /***/ 6707: /***/ (
+ /***/ 9202: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/link",
function () {
- return __webpack_require__(940);
+ return __webpack_require__(2971);
},
]);
if (false) {
@@ -18,7 +18,7 @@
/***/
},
- /***/ 2387: /***/ (module, exports) => {
+ /***/ 8382: /***/ (module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -96,7 +96,7 @@
/***/
},
- /***/ 3025: /***/ (module, exports, __webpack_require__) => {
+ /***/ 1205: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -108,7 +108,7 @@
return getDomainLocale;
},
});
- const _normalizetrailingslash = __webpack_require__(5747);
+ const _normalizetrailingslash = __webpack_require__(3250);
const basePath =
/* unused pure expression or super */ null && (false || "");
function getDomainLocale(path, locale, locales, domainLocales) {
@@ -132,7 +132,7 @@
/***/
},
- /***/ 2051: /***/ (module, exports, __webpack_require__) => {
+ /***/ 3836: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -149,18 +149,18 @@
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(1299)
);
- const _resolvehref = __webpack_require__(3994);
- const _islocalurl = __webpack_require__(9486);
- const _formaturl = __webpack_require__(3261);
- const _utils = __webpack_require__(2625);
- const _addlocale = __webpack_require__(4546);
- const _routercontextsharedruntime = __webpack_require__(3948);
- const _approutercontextsharedruntime = __webpack_require__(9855);
- const _useintersection = __webpack_require__(2280);
- const _getdomainlocale = __webpack_require__(3025);
- const _addbasepath = __webpack_require__(5594);
- const _routerreducertypes = __webpack_require__(2387);
- const _usemergedref = __webpack_require__(6956);
+ const _resolvehref = __webpack_require__(8216);
+ const _islocalurl = __webpack_require__(1998);
+ const _formaturl = __webpack_require__(6261);
+ const _utils = __webpack_require__(5528);
+ const _addlocale = __webpack_require__(3774);
+ const _routercontextsharedruntime = __webpack_require__(4654);
+ const _approutercontextsharedruntime = __webpack_require__(92);
+ const _useintersection = __webpack_require__(4930);
+ const _getdomainlocale = __webpack_require__(1205);
+ const _addbasepath = __webpack_require__(7254);
+ const _routerreducertypes = __webpack_require__(8382);
+ const _usemergedref = __webpack_require__(5658);
const prefetched = new Set();
function prefetch(router, href, as, options, appOptions, isAppRouter) {
if (false) {
@@ -588,7 +588,7 @@
/***/
},
- /***/ 2280: /***/ (module, exports, __webpack_require__) => {
+ /***/ 4930: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -601,7 +601,7 @@
},
});
const _react = __webpack_require__(1299);
- const _requestidlecallback = __webpack_require__(8162);
+ const _requestidlecallback = __webpack_require__(7242);
const hasIntersectionObserver =
typeof IntersectionObserver === "function";
const observers = new Map();
@@ -714,7 +714,7 @@
/***/
},
- /***/ 6956: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5658: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -775,7 +775,7 @@
/***/
},
- /***/ 940: /***/ (
+ /***/ 2971: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -790,7 +790,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(7125);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(20);
+ __webpack_require__(2778);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -821,8 +821,12 @@
/***/
},
- /***/ 20: /***/ (module, __unused_webpack_exports, __webpack_require__) => {
- module.exports = __webpack_require__(2051);
+ /***/ 2778: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(3836);
/***/
},
@@ -832,7 +836,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
- __webpack_exec__(6707)
+ __webpack_exec__(9202)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 3620-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Failing test suitesCommit: 2afb9fc
Expand output● css-order strict › should load correct styles navigating back again first -> second -> first -> second
● css-order strict › should load correct styles navigating back again first -> third -> first -> third
● css-order strict › should load correct styles navigating back again first -> first-client -> first -> first-client
● css-order strict › should load correct styles navigating back again first -> second-client -> first -> second-client
● css-order strict › should load correct styles navigating back again second -> first -> second -> first
● css-order strict › should load correct styles navigating back again second -> third -> second -> third
● css-order strict › should load correct styles navigating back again second -> first-client -> second -> first-client
● css-order strict › should load correct styles navigating back again second -> second-client -> second -> second-client
● css-order strict › should load correct styles navigating back again third -> first -> third -> first
● css-order strict › should load correct styles navigating back again third -> second -> third -> second
● css-order strict › should load correct styles navigating back again third -> first-client -> third -> first-client
● css-order strict › should load correct styles navigating back again third -> second-client -> third -> second-client
● css-order strict › should load correct styles navigating back again first-client -> first -> first-client -> first
● css-order strict › should load correct styles navigating back again first-client -> second -> first-client -> second
● css-order strict › should load correct styles navigating back again first-client -> third -> first-client -> third
● css-order strict › should load correct styles navigating back again first-client -> second-client -> first-client -> second-client
● css-order strict › should load correct styles navigating back again second-client -> first -> second-client -> first
● css-order strict › should load correct styles navigating back again second-client -> second -> second-client -> second
● css-order strict › should load correct styles navigating back again second-client -> third -> second-client -> third
● css-order strict › should load correct styles navigating back again second-client -> first-client -> second-client -> first-client
● css-order strict › should load correct styles navigating back again interleaved-a -> interleaved-b -> interleaved-a -> interleaved-b
● css-order strict › should load correct styles navigating back again interleaved-b -> interleaved-a -> interleaved-b -> interleaved-a
● css-order strict › should load correct styles navigating back again big-interleaved-a -> big-interleaved-b -> big-interleaved-a -> big-interleaved-b
● css-order strict › should load correct styles navigating back again big-interleaved-b -> big-interleaved-a -> big-interleaved-b -> big-interleaved-a
● css-order strict › should load correct styles navigating back again pages-first -> pages-second -> pages-first -> pages-second
● css-order strict › should load correct styles navigating back again pages-first -> pages-third -> pages-first -> pages-third
● css-order strict › should load correct styles navigating back again pages-second -> pages-first -> pages-second -> pages-first
● css-order strict › should load correct styles navigating back again pages-second -> pages-third -> pages-second -> pages-third
● css-order strict › should load correct styles navigating back again pages-third -> pages-first -> pages-third -> pages-first
● css-order strict › should load correct styles navigating back again pages-third -> pages-second -> pages-third -> pages-second
● css-order strict › should load correct styles navigating back again pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b
● css-order strict › should load correct styles navigating back again pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a
● css-order strict › should load correct styles navigating back again pages-reversed-a -> pages-reversed-b -> pages-reversed-a -> pages-reversed-b
● css-order strict › should load correct styles navigating back again pages-reversed-b -> pages-reversed-a -> pages-reversed-b -> pages-reversed-a
● css-order strict › should load correct styles navigating back again pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b
● css-order strict › should load correct styles navigating back again pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a
● css-order loose › should load correct styles navigating back again first -> second -> first -> second
● css-order loose › should load correct styles navigating back again first -> third -> first -> third
● css-order loose › should load correct styles navigating back again first -> first-client -> first -> first-client
● css-order loose › should load correct styles navigating back again first -> second-client -> first -> second-client
● css-order loose › should load correct styles navigating back again second -> first -> second -> first
● css-order loose › should load correct styles navigating back again second -> third -> second -> third
● css-order loose › should load correct styles navigating back again second -> first-client -> second -> first-client
● css-order loose › should load correct styles navigating back again second -> second-client -> second -> second-client
● css-order loose › should load correct styles navigating back again third -> first -> third -> first
● css-order loose › should load correct styles navigating back again third -> second -> third -> second
● css-order loose › should load correct styles navigating back again third -> first-client -> third -> first-client
● css-order loose › should load correct styles navigating back again third -> second-client -> third -> second-client
● css-order loose › should load correct styles navigating back again first-client -> first -> first-client -> first
● css-order loose › should load correct styles navigating back again first-client -> second -> first-client -> second
● css-order loose › should load correct styles navigating back again first-client -> third -> first-client -> third
● css-order loose › should load correct styles navigating back again first-client -> second-client -> first-client -> second-client
● css-order loose › should load correct styles navigating back again second-client -> first -> second-client -> first
● css-order loose › should load correct styles navigating back again second-client -> second -> second-client -> second
● css-order loose › should load correct styles navigating back again second-client -> third -> second-client -> third
● css-order loose › should load correct styles navigating back again second-client -> first-client -> second-client -> first-client
● css-order loose › should load correct styles navigating back again interleaved-a -> interleaved-b -> interleaved-a -> interleaved-b
● css-order loose › should load correct styles navigating back again interleaved-b -> interleaved-a -> interleaved-b -> interleaved-a
● css-order loose › should load correct styles navigating back again big-interleaved-a -> big-interleaved-b -> big-interleaved-a -> big-interleaved-b
● css-order loose › should load correct styles navigating back again big-interleaved-b -> big-interleaved-a -> big-interleaved-b -> big-interleaved-a
● css-order loose › should load correct styles navigating back again pages-first -> pages-second -> pages-first -> pages-second
● css-order loose › should load correct styles navigating back again pages-first -> pages-third -> pages-first -> pages-third
● css-order loose › should load correct styles navigating back again pages-second -> pages-first -> pages-second -> pages-first
● css-order loose › should load correct styles navigating back again pages-second -> pages-third -> pages-second -> pages-third
● css-order loose › should load correct styles navigating back again pages-third -> pages-first -> pages-third -> pages-first
● css-order loose › should load correct styles navigating back again pages-third -> pages-second -> pages-third -> pages-second
● css-order loose › should load correct styles navigating back again pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b
● css-order loose › should load correct styles navigating back again pages-interleaved-b -> pages-interleaved-a -> pages-interleaved-b -> pages-interleaved-a
● css-order loose › should load correct styles navigating back again pages-reversed-a -> pages-reversed-b -> pages-reversed-a -> pages-reversed-b
● css-order loose › should load correct styles navigating back again pages-reversed-b -> pages-reversed-a -> pages-reversed-b -> pages-reversed-a
● css-order loose › should load correct styles navigating back again pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b
● css-order loose › should load correct styles navigating back again pages-partial-reversed-b -> pages-partial-reversed-a -> pages-partial-reversed-b -> pages-partial-reversed-a
● css-order strict › should load correct styles navigating first -> second
● css-order strict › should load correct styles navigating first -> third
● css-order strict › should load correct styles navigating first -> first-client
● css-order strict › should load correct styles navigating first -> second-client
● css-order strict › should load correct styles navigating second -> first
● css-order strict › should load correct styles navigating second -> third
● css-order strict › should load correct styles navigating second -> first-client
● css-order strict › should load correct styles navigating second -> second-client
● css-order strict › should load correct styles navigating third -> first
● css-order strict › should load correct styles navigating third -> second
● css-order strict › should load correct styles navigating third -> first-client
● css-order strict › should load correct styles navigating third -> second-client
● css-order strict › should load correct styles navigating first-client -> first
● css-order strict › should load correct styles navigating first-client -> second
● css-order strict › should load correct styles navigating first-client -> third
● css-order strict › should load correct styles navigating first-client -> second-client
● css-order strict › should load correct styles navigating second-client -> first
● css-order strict › should load correct styles navigating second-client -> second
● css-order strict › should load correct styles navigating second-client -> third
● css-order strict › should load correct styles navigating second-client -> first-client
● css-order strict › should load correct styles navigating interleaved-a -> interleaved-b
● css-order strict › should load correct styles navigating interleaved-b -> interleaved-a
● css-order strict › should load correct styles navigating big-interleaved-a -> big-interleaved-b
● css-order strict › should load correct styles navigating big-interleaved-b -> big-interleaved-a
● css-order strict › should load correct styles navigating pages-first -> pages-second
● css-order strict › should load correct styles navigating pages-first -> pages-third
● css-order strict › should load correct styles navigating pages-second -> pages-first
● css-order strict › should load correct styles navigating pages-second -> pages-third
● css-order strict › should load correct styles navigating pages-third -> pages-first
● css-order strict › should load correct styles navigating pages-third -> pages-second
● css-order strict › should load correct styles navigating pages-interleaved-a -> pages-interleaved-b
● css-order strict › should load correct styles navigating pages-interleaved-b -> pages-interleaved-a
● css-order strict › should load correct styles navigating pages-reversed-a -> pages-reversed-b
● css-order strict › should load correct styles navigating pages-reversed-b -> pages-reversed-a
● css-order strict › should load correct styles navigating pages-partial-reversed-a -> pages-partial-reversed-b
● css-order strict › should load correct styles navigating pages-partial-reversed-b -> pages-partial-reversed-a
● css-order loose › should load correct styles navigating first -> second
● css-order loose › should load correct styles navigating first -> third
● css-order loose › should load correct styles navigating first -> first-client
● css-order loose › should load correct styles navigating first -> second-client
● css-order loose › should load correct styles navigating second -> first
● css-order loose › should load correct styles navigating second -> third
● css-order loose › should load correct styles navigating second -> first-client
● css-order loose › should load correct styles navigating second -> second-client
● css-order loose › should load correct styles navigating third -> first
● css-order loose › should load correct styles navigating third -> second
● css-order loose › should load correct styles navigating third -> first-client
● css-order loose › should load correct styles navigating third -> second-client
● css-order loose › should load correct styles navigating first-client -> first
● css-order loose › should load correct styles navigating first-client -> second
● css-order loose › should load correct styles navigating first-client -> third
● css-order loose › should load correct styles navigating first-client -> second-client
● css-order loose › should load correct styles navigating second-client -> first
● css-order loose › should load correct styles navigating second-client -> second
● css-order loose › should load correct styles navigating second-client -> third
● css-order loose › should load correct styles navigating second-client -> first-client
● css-order loose › should load correct styles navigating interleaved-a -> interleaved-b
● css-order loose › should load correct styles navigating interleaved-b -> interleaved-a
● css-order loose › should load correct styles navigating big-interleaved-a -> big-interleaved-b
● css-order loose › should load correct styles navigating big-interleaved-b -> big-interleaved-a
● css-order loose › should load correct styles navigating pages-first -> pages-second
● css-order loose › should load correct styles navigating pages-first -> pages-third
● css-order loose › should load correct styles navigating pages-second -> pages-first
● css-order loose › should load correct styles navigating pages-second -> pages-third
● css-order loose › should load correct styles navigating pages-third -> pages-first
● css-order loose › should load correct styles navigating pages-third -> pages-second
● css-order loose › should load correct styles navigating pages-interleaved-a -> pages-interleaved-b
● css-order loose › should load correct styles navigating pages-interleaved-b -> pages-interleaved-a
● css-order loose › should load correct styles navigating pages-reversed-a -> pages-reversed-b
● css-order loose › should load correct styles navigating pages-reversed-b -> pages-reversed-a
● css-order loose › should load correct styles navigating pages-partial-reversed-a -> pages-partial-reversed-b
● css-order loose › should load correct styles navigating pages-partial-reversed-b -> pages-partial-reversed-a
● css-order strict › should load correct styles on first
● css-order strict › should load correct styles on second
● css-order strict › should load correct styles on third
● css-order strict › should load correct styles on first-client
● css-order strict › should load correct styles on second-client
● css-order strict › should load correct styles on interleaved-a
● css-order strict › should load correct styles on interleaved-b
● css-order strict › should load correct styles on big-interleaved-a
● css-order strict › should load correct styles on big-interleaved-b
● css-order strict › should load correct styles on reversed-a
● css-order strict › should load correct styles on reversed-b
● css-order strict › should load correct styles on partial-reversed-a
● css-order strict › should load correct styles on partial-reversed-b
● css-order strict › should load correct styles on pages-first
● css-order strict › should load correct styles on pages-second
● css-order strict › should load correct styles on pages-third
● css-order strict › should load correct styles on pages-interleaved-a
● css-order strict › should load correct styles on pages-interleaved-b
● css-order strict › should load correct styles on pages-reversed-a
● css-order strict › should load correct styles on pages-reversed-b
● css-order strict › should load correct styles on pages-partial-reversed-a
● css-order strict › should load correct styles on pages-partial-reversed-b
● css-order strict › should load correct styles on global-first
● css-order strict › should load correct styles on global-second
● css-order strict › should load correct styles on vendor
● css-order loose › should load correct styles on first
● css-order loose › should load correct styles on second
● css-order loose › should load correct styles on third
● css-order loose › should load correct styles on first-client
● css-order loose › should load correct styles on second-client
● css-order loose › should load correct styles on interleaved-a
● css-order loose › should load correct styles on interleaved-b
● css-order loose › should load correct styles on big-interleaved-a
● css-order loose › should load correct styles on big-interleaved-b
● css-order loose › should load correct styles on pages-first
● css-order loose › should load correct styles on pages-second
● css-order loose › should load correct styles on pages-third
● css-order loose › should load correct styles on pages-interleaved-a
● css-order loose › should load correct styles on pages-interleaved-b
● css-order loose › should load correct styles on pages-reversed-a
● css-order loose › should load correct styles on pages-reversed-b
● css-order loose › should load correct styles on pages-partial-reversed-a
● css-order loose › should load correct styles on pages-partial-reversed-b
● css-order loose › should load correct styles on vendor
● css-order strict › should load correct styles on vendor-side-effects-array
● css-order strict › should load correct styles on vendor-side-effects-array-client
● css-order strict › should load correct styles on vendor-side-effects-array-server-client
● css-order strict › should load correct styles on vendor-side-effects-true
● css-order strict › should load correct styles on vendor-side-effects-true-client
● css-order strict › should load correct styles on vendor-side-effects-true-server-client
● css-order strict › should load correct styles on vendor-side-effects-false
● css-order strict › should load correct styles on vendor-side-effects-false-client
● css-order strict › should load correct styles on vendor-side-effects-false-server-client
● css-order strict › should load correct styles on vendor-side-effects-global-array
● css-order strict › should load correct styles on vendor-side-effects-global-array-client
● css-order strict › should load correct styles on vendor-side-effects-global-array-server-client
● css-order strict › should load correct styles on pages-vendor-side-effects-true
● css-order strict › should load correct styles on pages-vendor-side-effects-false
● css-order strict › should load correct styles on pages-vendor-side-effects-global-array
● css-order loose › should load correct styles on vendor-side-effects-array
● css-order loose › should load correct styles on vendor-side-effects-array-client
● css-order loose › should load correct styles on vendor-side-effects-array-server-client
● css-order loose › should load correct styles on vendor-side-effects-true
● css-order loose › should load correct styles on vendor-side-effects-true-client
● css-order loose › should load correct styles on vendor-side-effects-true-server-client
● css-order loose › should load correct styles on vendor-side-effects-false
● css-order loose › should load correct styles on vendor-side-effects-false-client
● css-order loose › should load correct styles on vendor-side-effects-false-server-client
● css-order loose › should load correct styles on vendor-side-effects-global-array
● css-order loose › should load correct styles on vendor-side-effects-global-array-client
● css-order loose › should load correct styles on vendor-side-effects-global-array-server-client
● css-order loose › should load correct styles on pages-vendor-side-effects-true
● css-order loose › should load correct styles on pages-vendor-side-effects-false
● css-order loose › should load correct styles on pages-vendor-side-effects-global-array
Read more about building and testing Next.js in contributing.md.
Expand output● app-dir action handling › fetch actions › should handle redirects to routes that provide an invalid RSC response
Read more about building and testing Next.js in contributing.md. |
…ext.js into fix/css-modules-in-packages
I think Turbopack operates much differently pertaining to side effects compared to webpack from what I can see/sleuth out. Probably going to have to adjust these tests a bit to only be called for the webpack side of things. |
@samcx I'm sure there's some ways to further expand these tests, but I think this should be sufficient to demonstrate the problem and what it solves. For Webpack, css modules in 3rd party libraries are consistent only when NOT included in sideEffects OR when I ran into some strangeness with Turbopack as well and did my best initially to add cases for the incorrect styling, but it's inconsistent so I had to add skips in Turbopack instead. In Turbopack, css modules in 3rd party libraries are consistent ONLY when sideEffects = true. I haven't opened a ticket for this or checked if one exists, but someone probably should. |
Hi team, any update on when this will be merged? We're running into similar CSS issues on Next 14.2, so it would be great to have this fix in place and see if this fixes it. |
Seconding this, we'd love to get this fix in ASAP, backported to v14 if possible. This has been causing us a lot of grief. |
* WEBPACK: css modules are inconsistent when included as sideEffects | ||
* when not Boolean `true` or `false` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Weird that it works with "sideEffects": false
in package.json. That should have the same effect.
But technically it's within the spec'ed behavior. Flagged as module as side effect free also means it could be included in any order (since it has no side effects). That's why the idea was to force side effects to be true for any CSS related thing since they actually have the import order as side effect.
But a better solution would probably be to include them in the correct order when their exports are used.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What I believe to be happening is with webpack when it's false there is still some instability, but it is following each first tree reference deeply, seeing those stylesheets, adding them, and climbing back to the initial file and adding those stylesheets.
When only stylesheets are being included in side effects, the JS tree climbing is being ignored and the CSS files are being added in order that they are run into (top of tree to bottom, a complete inversion and broken behavior). When true, the CSS files are added according to the JS tree from bottom to top in full library order, rather than semi-random order like false.
export default function Page() { | ||
return ( | ||
<div> | ||
<SideEffectsArrayComponent id="vendor-side-effects-array"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It probably also has some influence whether these components are client components or server components. We might want to double the test case for client components too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
working on that!
I need ci approval again please :) |
@piratetaco Sorry for the delay! |
Thank you very much, @piratetaco, for this PR and all the work to figure that out. We are experiencing the same issue in a very big monorepo. I can confirm that this fix also resolves our ordering issues. Not setting the sideEffect in the rules is the correct way, in my opinion, as you can have packages that are either sideEffect:true or sideEffect:false. So it works for all of them. And yes, please backport to v14 🙏 |
For Contributors
sideEffects has many rich options besides true and false, and these were erroneously locked to true for css modules in v14.2.0.
I have verified this fixes out of order css from libraries in the repro linked in the issue below.
Regression was introduced in this PR, but it should not be limited to false, either.
This fix should likely be applied to loaders for global styles, too. But I haven't confirmed those yet. Many valid patterns other than true for limited-fashion sideEffects like
sideEffects: ['**/*.css']
This is desperately needed to be backported to v14 as well.
Fixing a bug