Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend support of Pages router to React 18 #70219

Open
wants to merge 5 commits into
base: graphite-base/70219
Choose a base branch
from

Conversation

eps1lon
Copy link
Member

@eps1lon eps1lon commented Sep 18, 2024

Relands #69484

dev, prod, turbopack dev, and turbopack prod now run an additional time with React 18 installed. It's not trivial to find tests that are relevant to React 18 so we just increase our CI spending for now.

Integration tests don't run with React 18 since those tests use the React version that's installed in ~/package.json. It's not trivial to run with a different version like it is for e2e tests. If we find bugs that integration tests would've found, we should just move those to e2e tests.

Hydration errors are worth in React 18 with Pages router but it's hard to tell if that is new or old since we didn't have those tests back then. If hydration errors are a big issue, a upgrade to React 19 should be preferred.

Copy link
Member Author

eps1lon commented Sep 18, 2024

@eps1lon eps1lon changed the title Run tests with all major supported React versions Extend support of Pages router to React 18 Sep 18, 2024
@ijjk
Copy link
Member

ijjk commented Sep 18, 2024

Failing test suites

Commit: 80c9998

pnpm test-start test/production/pages-dir/production/test/index.test.ts

  • Production Usage > should navigate through history after query update
  • Production Usage > should handle query/hash correctly during query updating #hello? $search
  • Production Usage > should handle query/hash correctly during query updating #? $search
  • Production Usage > should handle query/hash correctly during query updating ## $search
  • Production Usage > should handle query/hash correctly during query updating ##? $search
  • Production Usage > should handle query/hash correctly during query updating ##hello? $search
  • Production Usage > should handle query/hash correctly during query updating ##hello $search
  • Production Usage > should handle query/hash correctly during query updating #hello?world $search
  • Production Usage > should handle query/hash correctly during query updating #a ?hello=world
  • Production Usage > should handle query/hash correctly during query updating #a ?hello
  • Production Usage > should handle query/hash correctly during query updating #a ?hello=
  • Production Usage > should not show target deprecation warning
  • Production Usage > should respond with 405 for POST to static page
  • Production Usage > should contain generated page count in output
  • Production Usage > should output traces
  • Production Usage > should not contain currentScript usage for publicPath
  • Production Usage > should not contain amp, rsc APIs in main chunk
  • Production Usage > should navigate to external site and back
  • Production Usage > should navigate to page with CSS and back
  • Production Usage > should navigate to external site and back (with query)
  • Production Usage > should change query correctly
  • Production Usage > should not expose the compiled page file in development
  • Production Usage > should not put backslashes in pages-manifest.json
  • Production Usage > should handle failed param decoding
  • Production Usage > should replace static pages with HTML files
  • Production Usage > should not replace non-static pages with HTML files
  • Production Usage > should handle AMP correctly in IE
  • Production Usage > should warn when prefetch is true
  • Production Usage > should not emit stats
  • Production Usage > should contain the Next.js version in window export
  • Production Usage > should clear all core performance marks
  • Production Usage > should not clear custom performance marks
  • Production Usage > should have defer on all script tags
  • Production Usage > should only have one DOCTYPE
  • Production Usage > should preserve query when hard navigating from page 404
  • Production Usage > should remove placeholder for next/image correctly
  • Production Usage > API routes > should work with pages/api/index.js
  • Production Usage > API routes > should work with pages/api/hello.js
  • Production Usage > API routes > does not work with pages/api/readfile-dirname.js
  • Production Usage > API routes > should work with pages/api/readfile-processcwd.js
  • Production Usage > API routes > should work with dynamic params and search string
  • Production Usage > Dynamic import > custom loading > should render custom loading on the server side when ssr:false and loading is provided
  • Production Usage > Dynamic import > custom loading > should render the component on client side
  • Production Usage > Dynamic import > default behavior > should render dynamic import components
  • Production Usage > Dynamic import > default behavior > should render one dynamically imported component and load its css files
  • Production Usage > Dynamic import > default behavior > should render three dynamically imported components and load their css files
  • Production Usage > Dynamic import > default behavior > should bundle two css modules for one dynamically imported component into one css file
  • Production Usage > Dynamic import > default behavior > should bundle two css modules for nested components into one css file
  • Production Usage > Dynamic import > default behavior > should not remove css styles for same css file between page transitions
  • Production Usage > Dynamic import > default behavior > should output two css files even in case of three css module files while one is shared across files
  • Production Usage > Dynamic import > default behavior > should render one dynamically imported component without any css files
  • Production Usage > Dynamic import > default behavior > should render even there are no physical chunk exists
  • Production Usage > Dynamic import > ssr:false option > should not render loading on the server side
  • Production Usage > Dynamic import > ssr:false option > should render the component on client side
  • Production Usage > Dynamic import > ssr:true option > should render the component on the server side
  • Production Usage > Dynamic import > ssr:true option > should render the component on client side
  • Production Usage > Misc > should handle already finished responses
  • Production Usage > Misc > should allow to access /static/ and /_next/
  • Production Usage > Misc > Should allow access to public files
  • Production Usage > Misc > should reload the page on page script error
  • Production Usage > Misc > should have default runtime values when not defined
  • Production Usage > Misc > should not have runtimeConfig in NEXT_DATA
  • Production Usage > Misc > should add autoExport for auto pre-rendered pages
  • Production Usage > Misc > should not add autoExport for non pre-rendered pages
  • Production Usage > Misc > should add prefetch tags when Link prefetch prop is used
  • Production Usage > Misc > It does not add a timestamp to link tags with prefetch attribute
  • Production Usage > Misc > should reload the page on page script error with prefetch
  • Production Usage > Runtime errors > should render a server side error on the client side
  • Production Usage > Runtime errors > should render a client side component error
  • Production Usage > Runtime errors > should call getInitialProps on _error page during a client side component error
  • Production Usage > With Security Related Issues > should only access files inside .next directory
  • Production Usage > With Security Related Issues > should not allow accessing files outside .next/static directory
  • Production Usage > With Security Related Issues > should not leak the user's home directory into the build
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using single quotes
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using double quotes
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using semicolons and double quotes
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using semicolons and single quotes
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using src
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using querystring
  • Production Usage > With Security Related Issues > should prevent URI based XSS attacks using querystring and quotes
  • Production Usage > With Security Related Issues > should handle encoded value in the pathname correctly \
  • Production Usage > With Security Related Issues > should handle encoded value in the pathname correctly %
  • Production Usage > With Security Related Issues > should handle encoded value in the query correctly
  • Production Usage > With Security Related Issues > should handle encoded value in the pathname correctly /
  • Production Usage > With Security Related Issues > should handle encoded value in the pathname to query correctly (/)
  • Production Usage > With Security Related Issues > should handle encoded / value for trailing slash correctly
  • Production Usage > With Security Related Issues > should not execute script embedded inside svg image, even if dangerouslyAllowSVG=true
  • Production Usage > With basic usage > should render the page
  • Production Usage > With basic usage > should polyfill Node.js modules
  • Production Usage > With basic usage > should allow etag header support
  • Production Usage > With basic usage > should allow etag header support with getStaticProps
  • Production Usage > With basic usage > should have X-Powered-By header support
  • Production Usage > With basic usage > should render 404 for routes that do not exist
  • Production Usage > With basic usage > should render 404 for /_next/static route
  • Production Usage > With basic usage > should render 200 for POST on page
  • Production Usage > With basic usage > should render 404 for POST on missing page
  • Production Usage > With basic usage > should render 404 for _next routes that do not exist
  • Production Usage > With basic usage > should render 404 even if the HTTP method is not GET or HEAD
  • Production Usage > With basic usage > should render 404 for dotfiles in /static
  • Production Usage > With basic usage > should return 405 method on static then GET and HEAD
  • Production Usage > With basic usage > should return 412 on static file when If-Unmodified-Since is provided and file is modified
  • Production Usage > With basic usage > should return 200 on static file if If-Unmodified-Since is invalid date
  • Production Usage > With basic usage > should set Content-Length header
  • Production Usage > With basic usage > should set Cache-Control header
  • Production Usage > With basic usage > should set correct Cache-Control header for static 404s
  • Production Usage > With basic usage > should block special pages
  • Production Usage > With basic usage > should not contain customServer in NEXT_DATA
  • Production Usage > With navigation > should navigate via client side
  • Production Usage > With navigation > should navigate to nested index via client side
  • Production Usage > With navigation > should reload page successfully (on bad link)
  • Production Usage > With navigation > should reload page successfully (on bad data fetch)
  • Production Usage > process.browser > should eliminate server only code on the client
  • Production Usage > process.browser > should eliminate client only code on the server
  • Production Usage > process.env > should set process.env.NODE_ENV in production
Expand output

● Production Usage › should navigate through history after query update

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating #hello? $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating #? $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating ## $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating ##? $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating ##hello? $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating ##hello $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating #hello?world $search

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating #a ?hello=world

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating #a ?hello

next build failed with code/signal 1

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

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

● Production Usage › should handle query/hash correctly during query updating #a ?hello=

next build failed with code/signal 1

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

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

● Production Usage › should not show target deprecation warning

next build failed with code/signal 1

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

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

● Production Usage › should respond with 405 for POST to static page

next build failed with code/signal 1

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

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

● Production Usage › should contain generated page count in output

next build failed with code/signal 1

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

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

● Production Usage › should output traces

next build failed with code/signal 1

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

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

● Production Usage › should not contain currentScript usage for publicPath

next build failed with code/signal 1

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

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

● Production Usage › should not contain amp, rsc APIs in main chunk

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render the page

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should polyfill Node.js modules

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should allow etag header support

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should allow etag header support with getStaticProps

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should allow etag header support with getServerSideProps

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should have X-Powered-By header support

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 404 for routes that do not exist

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 404 for /_next/static route

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 200 for POST on page

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 404 for POST on missing page

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 404 for _next routes that do not exist

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 404 even if the HTTP method is not GET or HEAD

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should render 404 for dotfiles in /static

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should return 405 method on static then GET and HEAD

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should return 412 on static file when If-Unmodified-Since is provided and file is modified

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should return 200 on static file if If-Unmodified-Since is invalid date

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should set Content-Length header

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should set Cache-Control header

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should set correct Cache-Control header for static 404s

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should block special pages

next build failed with code/signal 1

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

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

● Production Usage › With basic usage › should not contain customServer in NEXT_DATA

next build failed with code/signal 1

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

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

● Production Usage › API routes › should work with pages/api/index.js

next build failed with code/signal 1

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

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

● Production Usage › API routes › should work with pages/api/hello.js

next build failed with code/signal 1

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

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

● Production Usage › API routes › does not work with pages/api/readfile-dirname.js

next build failed with code/signal 1

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

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

● Production Usage › API routes › should work with pages/api/readfile-processcwd.js

next build failed with code/signal 1

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

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

● Production Usage › API routes › should work with dynamic params and search string

next build failed with code/signal 1

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

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

● Production Usage › With navigation › should navigate via client side

next build failed with code/signal 1

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

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

● Production Usage › With navigation › should navigate to nested index via client side

next build failed with code/signal 1

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

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

● Production Usage › With navigation › should reload page successfully (on bad link)

next build failed with code/signal 1

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

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

● Production Usage › With navigation › should reload page successfully (on bad data fetch)

next build failed with code/signal 1

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

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

● Production Usage › should navigate to external site and back

next build failed with code/signal 1

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

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

● Production Usage › should navigate to page with CSS and back

next build failed with code/signal 1

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

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

● Production Usage › should navigate to external site and back (with query)

next build failed with code/signal 1

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

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

● Production Usage › should change query correctly

next build failed with code/signal 1

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

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

● Production Usage › Runtime errors › should render a server side error on the client side

next build failed with code/signal 1

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

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

● Production Usage › Runtime errors › should render a client side component error

next build failed with code/signal 1

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

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

● Production Usage › Runtime errors › should call getInitialProps on _error page during a client side component error

next build failed with code/signal 1

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

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

● Production Usage › Misc › should handle already finished responses

next build failed with code/signal 1

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

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

● Production Usage › Misc › should allow to access /static/ and /_next/

next build failed with code/signal 1

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

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

● Production Usage › Misc › Should allow access to public files

next build failed with code/signal 1

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

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

● Production Usage › Misc › should reload the page on page script error

next build failed with code/signal 1

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

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

● Production Usage › Misc › should have default runtime values when not defined

next build failed with code/signal 1

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

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

● Production Usage › Misc › should not have runtimeConfig in NEXT_DATA

next build failed with code/signal 1

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

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

● Production Usage › Misc › should add autoExport for auto pre-rendered pages

next build failed with code/signal 1

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

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

● Production Usage › Misc › should not add autoExport for non pre-rendered pages

next build failed with code/signal 1

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

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

● Production Usage › Misc › should add prefetch tags when Link prefetch prop is used

next build failed with code/signal 1

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

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

● Production Usage › Misc › It does not add a timestamp to link tags with prefetch attribute

next build failed with code/signal 1

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

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

● Production Usage › Misc › should reload the page on page script error with prefetch

next build failed with code/signal 1

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

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

● Production Usage › should not expose the compiled page file in development

next build failed with code/signal 1

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

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

● Production Usage › should not put backslashes in pages-manifest.json

next build failed with code/signal 1

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

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

● Production Usage › should handle failed param decoding

next build failed with code/signal 1

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

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

● Production Usage › should replace static pages with HTML files

next build failed with code/signal 1

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

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

● Production Usage › should not replace non-static pages with HTML files

next build failed with code/signal 1

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

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

● Production Usage › should handle AMP correctly in IE

next build failed with code/signal 1

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

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

● Production Usage › should warn when prefetch is true

next build failed with code/signal 1

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

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

● Production Usage › should not emit stats

next build failed with code/signal 1

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

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

● Production Usage › should contain the Next.js version in window export

next build failed with code/signal 1

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

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

● Production Usage › should clear all core performance marks

next build failed with code/signal 1

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

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

● Production Usage › should not clear custom performance marks

next build failed with code/signal 1

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

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

● Production Usage › should have defer on all script tags

next build failed with code/signal 1

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

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

● Production Usage › should only have one DOCTYPE

next build failed with code/signal 1

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

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

● Production Usage › should preserve query when hard navigating from page 404

next build failed with code/signal 1

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

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

● Production Usage › should remove placeholder for next/image correctly

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should render dynamic import components

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should render one dynamically imported component and load its css files

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should render three dynamically imported components and load their css files

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should bundle two css modules for one dynamically imported component into one css file

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should bundle two css modules for nested components into one css file

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should not remove css styles for same css file between page transitions

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should output two css files even in case of three css module files while one is shared across files

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should render one dynamically imported component without any css files

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › default behavior › should render even there are no physical chunk exists

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › ssr:false option › should not render loading on the server side

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › ssr:false option › should render the component on client side

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › ssr:true option › should render the component on the server side

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › ssr:true option › should render the component on client side

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › custom loading › should render custom loading on the server side when ssr:false and loading is provided

next build failed with code/signal 1

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

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

● Production Usage › Dynamic import › custom loading › should render the component on client side

next build failed with code/signal 1

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

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

● Production Usage › process.env › should set process.env.NODE_ENV in production

next build failed with code/signal 1

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

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

● Production Usage › process.browser › should eliminate server only code on the client

next build failed with code/signal 1

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

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

● Production Usage › process.browser › should eliminate client only code on the server

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle invalid URL properly

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should only access files inside .next directory

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should not allow accessing files outside .next/static directory

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should not leak the user's home directory into the build

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using single quotes

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using double quotes

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using semicolons and double quotes

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using semicolons and single quotes

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using src

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using querystring

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should prevent URI based XSS attacks using querystring and quotes

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle encoded value in the pathname correctly \

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle encoded value in the pathname correctly %

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle encoded value in the query correctly

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle encoded value in the pathname correctly /

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle encoded value in the pathname to query correctly (/)

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should handle encoded / value for trailing slash correctly

next build failed with code/signal 1

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

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

● Production Usage › With Security Related Issues › should not execute script embedded inside svg image, even if dangerouslyAllowSVG=true

next build failed with code/signal 1

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

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

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

TURBOPACK=1 pnpm test-dev test/development/app-hmr/hmr.test.ts (turbopack)

  • app-dir-hmr > filesystem changes > should update server components pages when env files is changed (node)
Expand output

● app-dir-hmr › filesystem changes › should update server components pages when env files is changed (node)

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

Expected: "mac"
Received: "ipad"

  145 |       async (page) => {
  146 |         const browser = await next.browser(`/env/${page}`)
> 147 |         expect(await browser.elementByCss('p').text()).toBe('mac')
      |                                                        ^
  148 |         await next.patchFile(envFile, 'MY_DEVICE="ipad"')
  149 |
  150 |         const logs = await browser.log()

  at toBe (development/app-hmr/hmr.test.ts:147:56)

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

pnpm test-dev test/development/acceptance/server-component-compiler-errors-in-pages.test.ts

  • Error Overlay for server components compiler errors in pages > importing 'server-only' in pages
Expand output

● Error Overlay for server components compiler errors in pages › importing 'server-only' in pages

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Error Overlay for server components compiler errors in pages importing 'server-only' in pages 1`

- Snapshot  - 2
+ Received  + 1

@@ -10,7 +10,6 @@
   3 | export default function Page() {
   4 |   return 'hello world'
     `----

  Import trace for requested module:
- ./components/Comp.js
- ./pages/index.js"
+ ./components/Comp.js"

  124 |     } else {
  125 |       expect(next.normalizeTestDirContent(await session.getRedboxSource()))
> 126 |         .toMatchInlineSnapshot(`
      |          ^
  127 |         "./components/Comp.js
  128 |         Error:   x You're importing a component that needs "server-only". That only works in a Server Component which is not supported in the pages/ directory. Read more: https://nextjs.org/docs/getting-started/
  129 |           | react-essentials#server-components

  at Object.toMatchInlineSnapshot (development/acceptance/server-component-compiler-errors-in-pages.test.ts:126:10)

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

@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from c081da5 to d2f3767 Compare September 18, 2024 13:52
@eps1lon eps1lon changed the base branch from sebbie/09-16-revert_separate_hydration_tests_for_pages_router_ to graphite-base/70219 September 18, 2024 14:02
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from d2f3767 to 186948c Compare September 18, 2024 15:27
@eps1lon eps1lon changed the base branch from graphite-base/70219 to canary September 18, 2024 15:27
@ijjk
Copy link
Member

ijjk commented Sep 18, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
buildDuration 18.8s 17.1s N/A
buildDurationCached 9.3s 8.1s N/A
nodeModulesSize 359 MB 359 MB ⚠️ +57.7 kB
nextStartRea..uration (ms) 447ms 446ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
1144-HASH.js gzip 43.1 kB 43.2 kB ⚠️ +173 B
1220-HASH.js gzip 5.26 kB 5.25 kB N/A
1753.HASH.js gzip 169 B 169 B
cc135666-HASH.js gzip 52.8 kB 52.8 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 228 B 229 B N/A
main-HASH.js gzip 32.7 kB 32.7 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 43.2 kB 43.4 kB ⚠️ +173 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 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 vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 192 B 191 B N/A
amp-HASH.js gzip 506 B 510 B N/A
css-HASH.js gzip 342 B 342 B
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 365 B 363 B N/A
hooks-HASH.js gzip 392 B 390 B N/A
image-HASH.js gzip 4.4 kB 4.4 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.79 kB 2.78 kB N/A
routerDirect..HASH.js gzip 328 B 327 B N/A
script-HASH.js gzip 398 B 394 B N/A
withRouter-HASH.js gzip 322 B 324 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.02 kB 3.02 kB
Client Build Manifests
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
_buildManifest.js gzip 748 B 748 B
Overall change 748 B 748 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
index.html gzip 518 B 523 B N/A
link.html gzip 533 B 536 B N/A
withRouter.html gzip 516 B 518 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
edge-ssr.js gzip 128 kB 153 kB ⚠️ +24.3 kB
page.js gzip 179 kB 179 kB N/A
Overall change 128 kB 153 kB ⚠️ +24.3 kB
Middleware size
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
middleware-b..fest.js gzip 667 B 669 B N/A
middleware-r..fest.js gzip 157 B 155 B N/A
middleware.js gzip 29.8 kB 29.8 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
973-experime...dev.js gzip 322 B 322 B
973.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 318 kB 318 kB ⚠️ +168 B
app-page-exp..prod.js gzip 126 kB 126 kB
app-page-tur..prod.js gzip 139 kB 139 kB
app-page-tur..prod.js gzip 134 kB 134 kB
app-page.run...dev.js gzip 308 kB 308 kB ⚠️ +166 B
app-page.run..prod.js gzip 121 kB 121 kB
app-route-ex...dev.js gzip 32.1 kB 32.1 kB
app-route-ex..prod.js gzip 21.7 kB 21.7 kB
app-route-tu..prod.js gzip 21.7 kB 21.7 kB
app-route-tu..prod.js gzip 21.5 kB 21.5 kB
app-route.ru...dev.js gzip 33.7 kB 33.7 kB
app-route.ru..prod.js gzip 21.5 kB 21.5 kB
pages-api-tu..prod.js gzip 9.62 kB 9.62 kB
pages-api.ru...dev.js gzip 11.5 kB 11.5 kB
pages-api.ru..prod.js gzip 9.61 kB 9.61 kB
pages-turbo...prod.js gzip 20.8 kB 20.9 kB ⚠️ +120 B
pages.runtim...dev.js gzip 26.4 kB 26.5 kB ⚠️ +122 B
pages.runtim..prod.js gzip 20.8 kB 20.9 kB ⚠️ +120 B
server.runti..prod.js gzip 57.9 kB 57.9 kB
Overall change 1.46 MB 1.46 MB ⚠️ +696 B
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/09-18-extend_support_of_pages_router_to_react_18 Change
0.pack gzip 1.65 MB 1.66 MB ⚠️ +5.19 kB
index.pack gzip 133 kB 132 kB N/A
Overall change 1.65 MB 1.66 MB ⚠️ +5.19 kB
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
       /***/
     },
 
-    /***/ 5053: /***/ (
+    /***/ 1988: /***/ (
       __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-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/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-stats6KP26E%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-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/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-stats6KP26E%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, {
@@ -70,35 +70,35 @@
         tree: () => tree,
       });
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/web/globals.js
-      var globals = __webpack_require__(4152);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
-      var adapter = __webpack_require__(1232);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
-      var render = __webpack_require__(4619);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
-      var incremental_cache = __webpack_require__(6600);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
-      var app_render = __webpack_require__(2797);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
-      var module_compiled = __webpack_require__(4999);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/route-kind.js
-      var route_kind = __webpack_require__(4394);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/client/components/error-boundary.js
-      var error_boundary = __webpack_require__(9900);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/app-render/entry-base.js + 10 modules
-      var entry_base = __webpack_require__(496); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/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-stats6KP26E%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-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/web/globals.js
+      var globals = __webpack_require__(7964);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+      var adapter = __webpack_require__(6211);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 85 modules
+      var render = __webpack_require__(2289);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 3 modules
+      var incremental_cache = __webpack_require__(9517);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/app-render/app-render.js + 74 modules
+      var app_render = __webpack_require__(1697);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+      var module_compiled = __webpack_require__(9959);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/route-kind.js
+      var route_kind = __webpack_require__(27);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/client/components/error-boundary.js
+      var error_boundary = __webpack_require__(9650);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/app-render/entry-base.js + 10 modules
+      var entry_base = __webpack_require__(1018); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/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-stats6KP26E%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__, 569)
+          __webpack_require__.bind(__webpack_require__, 3113)
         );
       const module1 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 7993)
+          __webpack_require__.bind(__webpack_require__, 9374)
         );
       const page2 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 4355)
+          __webpack_require__.bind(__webpack_require__, 1589)
         );
 
       // We inject the tree and pages here so that we can use them in the route
@@ -161,12 +161,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-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/lib/page-types.js
-      var page_types = __webpack_require__(6593);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/app-render/encryption-utils.js
-      var encryption_utils = __webpack_require__(8752);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/dist/esm/server/app-render/action-utils.js
-      var action_utils = __webpack_require__(5534); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRzNktQMjZFL3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHM2S1AyNkUvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHM2S1AyNkUvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzNktQMjZFJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/lib/page-types.js
+      var page_types = __webpack_require__(5657);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+      var encryption_utils = __webpack_require__(5517);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/dist/esm/server/app-render/action-utils.js
+      var action_utils = __webpack_require__(8989); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/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":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LXN0YXRzNktQMjZFL3N0YXRzLWFwcCIsImV4cGVyaW1lbnRhbCI6eyJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHM2S1AyNkUvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInBwckZhbGxiYWNrcyI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHM2S1AyNkUvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzNktQMjZFJTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30="}!
       var _self___RSC_MANIFEST;
 
       const incrementalCacheHandler = null;
@@ -430,53 +430,53 @@
       /***/
     },
 
-    /***/ 8213: /***/ (
+    /***/ 5283: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1286)
+        __webpack_require__.bind(__webpack_require__, 666)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6673)
+        __webpack_require__.bind(__webpack_require__, 4101)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6711)
+        __webpack_require__.bind(__webpack_require__, 8333)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4187)
+        __webpack_require__.bind(__webpack_require__, 4987)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6393)
+        __webpack_require__.bind(__webpack_require__, 5512)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8393)
+        __webpack_require__.bind(__webpack_require__, 5557)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4817)
+        __webpack_require__.bind(__webpack_require__, 4707)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1906)
+        __webpack_require__.bind(__webpack_require__, 3542)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3610)
+        __webpack_require__.bind(__webpack_require__, 696)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3740)
+        __webpack_require__.bind(__webpack_require__, 7055)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4844)
+        __webpack_require__.bind(__webpack_require__, 2792)
       );
 
       /***/
     },
 
-    /***/ 9994: /***/ () => {
+    /***/ 3409: /***/ () => {
       /***/
     },
 
-    /***/ 4355: /***/ (
+    /***/ 1589: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -496,7 +496,7 @@
       /***/
     },
 
-    /***/ 569: /***/ (
+    /***/ 3113: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -508,7 +508,7 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(1526);
+        __webpack_require__(2333);
 
       function RootLayout({ children }) {
         return /*#__PURE__*/ (0,
@@ -527,7 +527,7 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [391, 879], () => __webpack_exec__(5053));
+    /******/ __webpack_require__.O(0, [756, 459], () => __webpack_exec__(1988));
     /******/ 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],
   {
-    /***/ 1698: /***/ (
+    /***/ 6994: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(3215);
+          return __webpack_require__(9659);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2614: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1887: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(2480)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(4630)
+        __webpack_require__(3205)
       );
-      const _getimgprops = __webpack_require__(5719);
-      const _imageconfig = __webpack_require__(3910);
-      const _imageconfigcontextsharedruntime = __webpack_require__(838);
-      const _warnonce = __webpack_require__(148);
-      const _routercontextsharedruntime = __webpack_require__(3788);
+      const _getimgprops = __webpack_require__(3170);
+      const _imageconfig = __webpack_require__(6981);
+      const _imageconfigcontextsharedruntime = __webpack_require__(3295);
+      const _warnonce = __webpack_require__(8237);
+      const _routercontextsharedruntime = __webpack_require__(9066);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(342)
+        __webpack_require__(4819)
       );
-      const _usemergedref = __webpack_require__(8457);
+      const _usemergedref = __webpack_require__(9103);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,44 +371,36 @@
       /***/
     },
 
-    /***/ 8457: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9103: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        mergeRefs: function () {
-          return mergeRefs;
-        },
-        useMergedRef: function () {
+      Object.defineProperty(exports, "useMergedRef", {
+        enumerable: true,
+        get: function () {
           return useMergedRef;
         },
       });
       const _react = __webpack_require__(6063);
       function useMergedRef(refA, refB) {
-        return (0, _react.useMemo)(() => mergeRefs(refA, refB), [refA, refB]);
-      }
-      function mergeRefs(refA, refB) {
-        if (!refA || !refB) {
-          return refA || refB;
-        }
-        return (current) => {
-          const cleanupA = applyRef(refA, current);
-          const cleanupB = applyRef(refB, current);
-          return () => {
-            cleanupA();
-            cleanupB();
+        const cleanupA = (0, _react.useRef)(() => {});
+        const cleanupB = (0, _react.useRef)(() => {});
+        return (0, _react.useMemo)(() => {
+          if (!refA || !refB) {
+            return refA || refB;
+          }
+          return (current) => {
+            if (current === null) {
+              cleanupA.current();
+              cleanupB.current();
+            } else {
+              cleanupA.current = applyRef(refA, current);
+              cleanupB.current = applyRef(refB, current);
+            }
           };
-        };
+        }, [refA, refB]);
       }
       function applyRef(refA, current) {
         if (typeof refA === "function") {
@@ -440,7 +432,7 @@
       /***/
     },
 
-    /***/ 5719: /***/ (
+    /***/ 3170: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -456,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(148);
-      const _imageblursvg = __webpack_require__(2854);
-      const _imageconfig = __webpack_require__(3910);
+      const _warnonce = __webpack_require__(8237);
+      const _imageblursvg = __webpack_require__(5008);
+      const _imageconfig = __webpack_require__(6981);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -831,7 +823,7 @@
       /***/
     },
 
-    /***/ 2854: /***/ (__unused_webpack_module, exports) => {
+    /***/ 5008: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -886,7 +878,7 @@
       /***/
     },
 
-    /***/ 8220: /***/ (
+    /***/ 266: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -913,10 +905,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(9608);
-      const _getimgprops = __webpack_require__(5719);
-      const _imagecomponent = __webpack_require__(2614);
+      const _getimgprops = __webpack_require__(3170);
+      const _imagecomponent = __webpack_require__(1887);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(342)
+        __webpack_require__(4819)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -948,7 +940,7 @@
       /***/
     },
 
-    /***/ 342: /***/ (__unused_webpack_module, exports) => {
+    /***/ 4819: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -983,7 +975,7 @@
       /***/
     },
 
-    /***/ 3215: /***/ (
+    /***/ 9659: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -1000,8 +992,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.0.0-rc-e4953922-20240919/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(3860);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_xtwfyocev7s6zv2ianvu3guut4/node_modules/next/image.js
-      var next_image = __webpack_require__(5065);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-e4953922-20240919_re_c32de4smwbnuuisztjqlqwuynm/node_modules/next/image.js
+      var next_image = __webpack_require__(3007);
       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",
@@ -1031,12 +1023,12 @@
       /***/
     },
 
-    /***/ 5065: /***/ (
+    /***/ 3007: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(8220);
+      module.exports = __webpack_require__(266);
 
       /***/
     },
@@ -1046,7 +1038,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(1698)
+      __webpack_exec__(6994)
     );
     /******/ 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],
   {
-    /***/ 2977: /***/ (
+    /***/ 3079: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function () {
-          return __webpack_require__(5740);
+          return __webpack_require__(8140);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 3555: /***/ (module, exports) => {
+    /***/ 9912: /***/ (module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -96,7 +96,7 @@
       /***/
     },
 
-    /***/ 8634: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3684: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -108,7 +108,7 @@
           return getDomainLocale;
         },
       });
-      const _normalizetrailingslash = __webpack_require__(1083);
+      const _normalizetrailingslash = __webpack_require__(5091);
       const basePath =
         /* unused pure expression or super */ null && (false || "");
       function getDomainLocale(path, locale, locales, domainLocales) {
@@ -132,7 +132,7 @@
       /***/
     },
 
-    /***/ 6604: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6655: /***/ (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__(6063)
       );
-      const _resolvehref = __webpack_require__(2177);
-      const _islocalurl = __webpack_require__(7683);
-      const _formaturl = __webpack_require__(2206);
-      const _utils = __webpack_require__(9622);
-      const _addlocale = __webpack_require__(5309);
-      const _routercontextsharedruntime = __webpack_require__(3788);
-      const _approutercontextsharedruntime = __webpack_require__(3635);
-      const _useintersection = __webpack_require__(6342);
-      const _getdomainlocale = __webpack_require__(8634);
-      const _addbasepath = __webpack_require__(9402);
-      const _routerreducertypes = __webpack_require__(3555);
-      const _usemergedref = __webpack_require__(8457);
+      const _resolvehref = __webpack_require__(3800);
+      const _islocalurl = __webpack_require__(1626);
+      const _formaturl = __webpack_require__(6410);
+      const _utils = __webpack_require__(6319);
+      const _addlocale = __webpack_require__(7283);
+      const _routercontextsharedruntime = __webpack_require__(9066);
+      const _approutercontextsharedruntime = __webpack_require__(4415);
+      const _useintersection = __webpack_require__(1696);
+      const _getdomainlocale = __webpack_require__(3684);
+      const _addbasepath = __webpack_require__(1205);
+      const _routerreducertypes = __webpack_require__(9912);
+      const _usemergedref = __webpack_require__(9103);
       const prefetched = new Set();
       function prefetch(router, href, as, options, appOptions, isAppRouter) {
         if (false) {
@@ -588,7 +588,7 @@
       /***/
     },
 
-    /***/ 6342: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1696: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -601,7 +601,7 @@
         },
       });
       const _react = __webpack_require__(6063);
-      const _requestidlecallback = __webpack_require__(6552);
+      const _requestidlecallback = __webpack_require__(8907);
       const hasIntersectionObserver =
         typeof IntersectionObserver === "function";
       const observers = new Map();
@@ -714,44 +714,36 @@
       /***/
     },
 
-    /***/ 8457: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9103: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        mergeRefs: function () {
-          return mergeRefs;
-        },
-        useMergedRef: function () {
+      Object.defineProperty(exports, "useMergedRef", {
+        enumerable: true,
+        get: function () {
           return useMergedRef;
         },
       });
       const _react = __webpack_require__(6063);
       function useMergedRef(refA, refB) {
-        return (0, _react.useMemo)(() => mergeRefs(refA, refB), [refA, refB]);
-      }
-      function mergeRefs(refA, refB) {
-        if (!refA || !refB) {
-          return refA || refB;
-        }
-        return (current) => {
-          const cleanupA = applyRef(refA, current);
-          const cleanupB = applyRef(refB, current);
-          return () => {
-            cleanupA();
-            cleanupB();
+        const cleanupA = (0, _react.useRef)(() => {});
+        const cleanupB = (0, _react.useRef)(() => {});
+        return (0, _react.useMemo)(() => {
+          if (!refA || !refB) {
+            return refA || refB;
+          }
+          return (current) => {
+            if (current === null) {
+              cleanupA.current();
+              cleanupB.current();
+            } else {
+              cleanupA.current = applyRef(refA, current);
+              cleanupB.current = applyRef(refB, current);
+            }
           };
-        };
+        }, [refA, refB]);
       }
       function applyRef(refA, current) {
         if (typeof refA === "function") {
@@ -783,7 +775,7 @@
       /***/
     },
 
-    /***/ 5740: /***/ (
+    /***/ 8140: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -798,7 +790,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3860);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4595);
+        __webpack_require__(6977);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -829,12 +821,12 @@
       /***/
     },
 
-    /***/ 4595: /***/ (
+    /***/ 6977: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(6604);
+      module.exports = __webpack_require__(6655);
 
       /***/
     },
@@ -844,7 +836,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(2977)
+      __webpack_exec__(3079)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 1144-HASH.js

Diff too large to display

Diff for 1220-HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [1220],
+  [4227],
   {
-    /***/ 1220: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4227: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -13,27 +13,27 @@
           return Image;
         },
       });
-      const _interop_require_default = __webpack_require__(7513);
-      const _interop_require_wildcard = __webpack_require__(6481);
-      const _jsxruntime = __webpack_require__(3271);
+      const _interop_require_default = __webpack_require__(5707);
+      const _interop_require_wildcard = __webpack_require__(2899);
+      const _jsxruntime = __webpack_require__(8366);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(6437)
+        __webpack_require__(74)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6659)
+        __webpack_require__(5860)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(9043)
+        __webpack_require__(6585)
       );
-      const _getimgprops = __webpack_require__(8198);
-      const _imageconfig = __webpack_require__(274);
-      const _imageconfigcontextsharedruntime = __webpack_require__(2843);
-      const _warnonce = __webpack_require__(9820);
-      const _routercontextsharedruntime = __webpack_require__(3045);
+      const _getimgprops = __webpack_require__(654);
+      const _imageconfig = __webpack_require__(5107);
+      const _imageconfigcontextsharedruntime = __webpack_require__(3554);
+      const _warnonce = __webpack_require__(2753);
+      const _routercontextsharedruntime = __webpack_require__(3462);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(4042)
+        __webpack_require__(7904)
       );
-      const _usemergedref = __webpack_require__(9026);
+      const _usemergedref = __webpack_require__(5509);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -355,42 +355,34 @@
       /***/
     },
 
-    /***/ 9026: /***/ (module, exports, __webpack_require__) => {
+    /***/ 5509: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        mergeRefs: function () {
-          return mergeRefs;
-        },
-        useMergedRef: function () {
+      Object.defineProperty(exports, "useMergedRef", {
+        enumerable: true,
+        get: function () {
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(6437);
+      const _react = __webpack_require__(74);
       function useMergedRef(refA, refB) {
-        return (0, _react.useMemo)(() => mergeRefs(refA, refB), [refA, refB]);
-      }
-      function mergeRefs(refA, refB) {
-        if (!refA || !refB) {
-          return refA || refB;
-        }
-        return (current) => {
-          const cleanupA = applyRef(refA, current);
-          const cleanupB = applyRef(refB, current);
-          return () => {
-            cleanupA();
-            cleanupB();
+        const cleanupA = (0, _react.useRef)(() => {});
+        const cleanupB = (0, _react.useRef)(() => {});
+        return (0, _react.useMemo)(() => {
+          if (!refA || !refB) {
+            return refA || refB;
+          }
+          return (current) => {
+            if (current === null) {
+              cleanupA.current();
+              cleanupB.current();
+            } else {
+              cleanupA.current = applyRef(refA, current);
+              cleanupB.current = applyRef(refB, current);
+            }
           };
-        };
+        }, [refA, refB]);
       }
       function applyRef(refA, current) {
         if (typeof refA === "function") {
@@ -422,7 +414,7 @@
       /***/
     },
 
-    /***/ 5665: /***/ (
+    /***/ 4339: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -436,9 +428,9 @@
           return AmpStateContext;
         },
       });
-      const _interop_require_default = __webpack_require__(7513);
+      const _interop_require_default = __webpack_require__(5707);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6437)
+        __webpack_require__(74)
       );
       const AmpStateContext = _react.default.createContext({});
       if (false) {
@@ -447,7 +439,7 @@
       /***/
     },
 
-    /***/ 2871: /***/ (__unused_webpack_module, exports) => {
+    /***/ 4372: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -469,7 +461,7 @@
       /***/
     },
 
-    /***/ 8198: /***/ (
+    /***/ 654: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -483,9 +475,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(9820);
-      const _imageblursvg = __webpack_require__(4688);
-      const _imageconfig = __webpack_require__(274);
+      const _warnonce = __webpack_require__(2753);
+      const _imageblursvg = __webpack_require__(3508);
+      const _imageconfig = __webpack_require__(5107);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -858,8 +850,8 @@
       /***/
     },
 
-    /***/ 9043: /***/ (module, exports, __webpack_require__) => {
-      /* provided dependency */ var process = __webpack_require__(8728);
+    /***/ 6585: /***/ (module, exports, __webpack_require__) => {
+      /* provided dependency */ var process = __webpack_require__(7710);
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -880,19 +872,19 @@
           return defaultHead;
         },
       });
-      const _interop_require_default = __webpack_require__(7513);
-      const _interop_require_wildcard = __webpack_require__(6481);
-      const _jsxruntime = __webpack_require__(3271);
+      const _interop_require_default = __webpack_require__(5707);
+      const _interop_require_wildcard = __webpack_require__(2899);
+      const _jsxruntime = __webpack_require__(8366);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(6437)
+        __webpack_require__(74)
       );
       const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8480)
+        __webpack_require__(8904)
       );
-      const _ampcontextsharedruntime = __webpack_require__(5665);
-      const _headmanagercontextsharedruntime = __webpack_require__(3390);
-      const _ampmode = __webpack_require__(2871);
-      const _warnonce = __webpack_require__(9820);
+      const _ampcontextsharedruntime = __webpack_require__(4339);
+      const _headmanagercontextsharedruntime = __webpack_require__(8652);
+      const _ampmode = __webpack_require__(4372);
+      const _warnonce = __webpack_require__(2753);
       function defaultHead(inAmpMode) {
         if (inAmpMode === void 0) inAmpMode = false;
         const head = [
@@ -1076,7 +1068,7 @@
       /***/
     },
 
-    /***/ 4688: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3508: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -1130,7 +1122,7 @@
       /***/
     },
 
-    /***/ 2843: /***/ (
+    /***/ 3554: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1144,11 +1136,11 @@
           return ImageConfigContext;
         },
       });
-      const _interop_require_default = __webpack_require__(7513);
+      const _interop_require_default = __webpack_require__(5707);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6437)
+        __webpack_require__(74)
       );
-      const _imageconfig = __webpack_require__(274);
+      const _imageconfig = __webpack_require__(5107);
       const ImageConfigContext = _react.default.createContext(
         _imageconfig.imageConfigDefault
       );
@@ -1158,7 +1150,7 @@
       /***/
     },
 
-    /***/ 274: /***/ (__unused_webpack_module, exports) => {
+    /***/ 5107: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1205,7 +1197,7 @@
       /***/
     },
 
-    /***/ 4042: /***/ (__unused_webpack_module, exports) => {
+    /***/ 7904: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1238,7 +1230,7 @@
       /***/
     },
 
-    /***/ 3045: /***/ (
+    /***/ 3462: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1252,9 +1244,9 @@
           return RouterContext;
         },
       });
-      const _interop_require_default = __webpack_require__(7513);
+      const _interop_require_default = __webpack_require__(5707);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6437)
+        __webpack_require__(74)
       );
       const RouterContext = _react.default.createContext(null);
       if (false) {
@@ -1263,7 +1255,7 @@
       /***/
     },
 
-    /***/ 8480: /***/ (
+    /***/ 8904: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1277,7 +1269,7 @@
           return SideEffect;
         },
       });
-      const _react = __webpack_require__(6437);
+      const _react = __webpack_require__(74);
       const isServer = typeof window === "undefined";
       const useClientOnlyLayoutEffect = isServer
         ? () => {}
Diff for main-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js

Diff too large to display

Diff for app-page.runtime.dev.js

Diff too large to display

Diff for pages-turbo...time.prod.js

Diff too large to display

Diff for pages.runtime.dev.js

Diff too large to display

Diff for pages.runtime.prod.js

Diff too large to display

Commit: 80c9998

@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch 5 times, most recently from 66bb034 to af03f33 Compare September 23, 2024 12:38
@eps1lon eps1lon changed the base branch from canary to sebbie/09-19-remove_redundant_hydration_error_tests September 23, 2024 12:38
@eps1lon eps1lon force-pushed the sebbie/09-19-remove_redundant_hydration_error_tests branch from 3bbaa17 to 55eeeef Compare September 23, 2024 12:41
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from af03f33 to f5c0add Compare September 23, 2024 12:41
@eps1lon eps1lon force-pushed the sebbie/09-19-remove_redundant_hydration_error_tests branch from 55eeeef to 931c8d4 Compare September 23, 2024 13:53
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from f5c0add to 3a128e2 Compare September 23, 2024 13:53
@eps1lon eps1lon force-pushed the sebbie/09-19-remove_redundant_hydration_error_tests branch from 931c8d4 to 27d146f Compare September 24, 2024 09:59
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from 3a128e2 to 73069a3 Compare September 24, 2024 10:00
@eps1lon eps1lon force-pushed the sebbie/09-19-remove_redundant_hydration_error_tests branch from 27d146f to 4a7d666 Compare September 24, 2024 12:29
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from 73069a3 to c5ceb4f Compare September 24, 2024 12:29
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from c5ceb4f to 07a411b Compare September 24, 2024 13:39
Copy link
Member Author

Choose a reason for hiding this comment

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

@sokra Can I silence these warnings somewhere internally? It didn't look like these are observable from a user perspective but I might have missed some logs somewhere.

let ReactDOMServer

try {
ReactDOMServer = require('react-dom/server.edge')
Copy link
Member Author

Choose a reason for hiding this comment

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

This still produces warnings in Turbopack and Webpack.

Webpack we ignore via ignoreWarnings. Turbopack's seems to not surface to users.

@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from 07a411b to dfee400 Compare September 24, 2024 13:49
… is installed

React 18 has no `react-dom/server.edge`
Previously failed `NEXT_TEST_MODE=dev NEXT_TEST_REACT_VERSION="18.3.1" p test test/e2e/app-dir/app-edge/app-edge.test.ts`
@eps1lon eps1lon force-pushed the sebbie/09-18-extend_support_of_pages_router_to_react_18 branch from dfee400 to 80c9998 Compare September 24, 2024 13:57
@eps1lon eps1lon changed the base branch from sebbie/09-19-remove_redundant_hydration_error_tests to graphite-base/70219 September 24, 2024 14:51
@eps1lon eps1lon requested a review from huozhi September 24, 2024 15:13
@eps1lon eps1lon marked this pull request as ready for review September 24, 2024 15:13
// React 19 does not.
const normalizedMessage = message.startsWith('Warning: ')
? message
: `Warning: ${message}`
Copy link
Member

Choose a reason for hiding this comment

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

Maybe we should strip Warning prefix so everything is aligning with new format of react 19, will be easier to remove the 18 support later?

@@ -1974,6 +1974,14 @@ export default async function getBaseWebpackConfig(
)
),
].filter(Boolean as any as ExcludesFalse),
ignoreWarnings: [
(warning) => {
Copy link
Member

Choose a reason for hiding this comment

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

should we also test the module is react-dom?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants