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

[Backport v15] add additional x-middleware-set-cookie filtering (#75561) #75869

Merged
merged 1 commit into from
Feb 10, 2025

Conversation

ztanner
Copy link
Member

@ztanner ztanner commented Feb 10, 2025

Previously when we removed this from the response we only did so for
requests that flowed through middleware and static handlers. We should
ensure it's filtered in `sendResponse` as well. The header is only
needed internally.
@ijjk
Copy link
Member

ijjk commented Feb 10, 2025

Failing test suites

Commit: c4e8389

pnpm test-start test/e2e/app-dir/app-routes-client-component/app-routes-client-component.test.ts

  • referencing a client component in an app route > responds without error
Expand output

● referencing a client component in an app route › responds without 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)

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

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

  • Production Usage > should navigate through history after query update
  • 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 > 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 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 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 › 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)

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

pnpm test test/integration/amp-export-validation/test/index.test.js (turbopack)

  • AMP Validation on Export > production mode > should have shown errors during build
Expand output

● AMP Validation on Export › production mode › should have shown errors during build

expect(received).toMatch(expected)

Expected pattern: /error.*The mandatory attribute 'height' is missing in tag 'amp-video'\./
Received string:  "   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/amp-export-validation/next.config.js
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/amp-export-validation/next.config.js
   ▲ Next.js 15.1.6 (Turbopack)·
   Checking validity of types ...
   Creating an optimized production build ...
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/amp-export-validation/next.config.js
   Building (0/7) ...
   Building (1/7)··
   Building (3/7)··
   Building (5/7)··
 ✓ Building (7/7)
 ✓ Compiled successfully in 5.1s
   Collecting page data ...
   Generating static pages (0/8) ...
   Generating static pages (2/8)··
 ⚠ Linting is disabled.
Error occurred prerendering page \"/dog\". Read more: https://nextjs.org/docs/messages/prerender-error
AssertionError: Assertion failed: WebAssembly is uninitialized

  at new module$contents$goog$asserts_AssertionError (../evalmachine.<anonymous>:106:1695)
  at module$contents$goog$asserts_doAssertFailure (../evalmachine.<anonymous>:107:354)
  at goog.asserts.assertExists (../evalmachine.<anonymous>:109:142)
  at Object.module$contents$amp$validator_validateString [as validateString] (../evalmachine.<anonymous>:2663:108)
  at Validator.validateString (../packages/next/dist/compiled/amphtml-validator/index.js:1:20650)
  at validateAmp (../packages/next/dist/export/routes/pages.js:100:34)
  at async exportPagesPage (../packages/next/dist/export/routes/pages.js:117:13)
  at async Span.traceAsyncFn (../packages/next/dist/trace/trace.js:153:20)
  at async exportPage (../packages/next/dist/export/worker.js:335:18)
  Export encountered an error on /dog, exiting the build.
   ⨯ Static worker exited with code: 1 and signal: null
  "
  at Object.toMatch (integration/amp-export-validation/test/index.test.js:28:29)

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

@ijjk
Copy link
Member

ijjk commented Feb 10, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js backport/98d4bba Change
buildDuration 29.6s 26.7s N/A
buildDurationCached 24.5s 22.6s N/A
nodeModulesSize 392 MB 407 MB ⚠️ +14.9 MB
nextStartRea..uration (ms) 720ms 706ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js backport/98d4bba Change
5306-HASH.js gzip 54.2 kB 50.4 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.46 kB 5.39 kB N/A
bccd1874-HASH.js gzip 53 kB 53 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 240 B 235 B N/A
main-HASH.js gzip 34.5 kB 33.7 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js backport/98d4bba 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 backport/98d4bba Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.59 kB 4.52 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js backport/98d4bba Change
_buildManifest.js gzip 748 B 745 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js backport/98d4bba Change
index.html gzip 523 B 524 B N/A
link.html gzip 538 B 539 B N/A
withRouter.html gzip 519 B 520 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js backport/98d4bba Change
edge-ssr.js gzip 130 kB 128 kB N/A
page.js gzip 211 kB 203 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js backport/98d4bba Change
middleware-b..fest.js gzip 674 B 667 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31 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 backport/98d4bba Change
app-page-exp...dev.js gzip 394 kB 322 kB N/A
app-page-exp..prod.js gzip 132 kB 127 kB N/A
app-page-tur..prod.js gzip 145 kB 140 kB N/A
app-page-tur..prod.js gzip 141 kB 135 kB N/A
app-page.run...dev.js gzip 381 kB 313 kB N/A
app-page.run..prod.js gzip 128 kB 123 kB N/A
app-route-ex...dev.js gzip 39.3 kB 37.1 kB N/A
app-route-ex..prod.js gzip 25.6 kB 25.2 kB N/A
app-route-tu..prod.js gzip 25.6 kB 25.2 kB N/A
app-route-tu..prod.js gzip 25.4 kB 25 kB N/A
app-route.ru...dev.js gzip 40.9 kB 38.8 kB N/A
app-route.ru..prod.js gzip 25.4 kB 25 kB N/A
dist_client_...dev.js gzip 356 B N/A N/A
dist_client_...dev.js gzip 349 B N/A N/A
pages-api-tu..prod.js gzip 9.69 kB 9.56 kB N/A
pages-api.ru...dev.js gzip 11.8 kB 11.4 kB N/A
pages-api.ru..prod.js gzip 9.68 kB 9.56 kB N/A
pages-turbo...prod.js gzip 21.9 kB 21.3 kB N/A
pages.runtim...dev.js gzip 31.5 kB 27.1 kB N/A
pages.runtim..prod.js gzip 21.9 kB 21.3 kB N/A
server.runti..prod.js gzip 60.5 kB 916 kB ⚠️ +856 kB
523-experime...dev.js gzip N/A 322 B N/A
523.runtime.dev.js gzip N/A 314 B N/A
Overall change 60.5 kB 916 kB ⚠️ +856 kB
build cache
vercel/next.js canary vercel/next.js backport/98d4bba Change
0.pack gzip 2.1 MB 2.04 MB N/A
index.pack gzip 75.7 kB 72.7 kB N/A
Overall change 0 B 0 B
Diff details
Diff for page.js

Diff too large to display

Diff for middleware-b..-manifest.js
@@ -1,105 +1,105 @@
-globalThis.__BUILD_MANIFEST = {
+self.__BUILD_MANIFEST = {
   polyfillFiles: ["static/chunks/polyfills-42372ed130431b0a.js"],
   devFiles: [],
   ampDevFiles: [],
   lowPriorityFiles: [],
   rootMainFiles: [
-    "static/chunks/webpack-49409235d8d4b4b8.js",
-    "static/chunks/bccd1874-ffe3bec3a7e7597b.js",
-    "static/chunks/5306-e9df4e0292ca3a00.js",
-    "static/chunks/main-app-3d65d1c806248866.js",
+    "static/chunks/webpack-5c07bf7eb84f5597.js",
+    "static/chunks/2e869656-228a374b06afea23.js",
+    "static/chunks/6307-7d19cb30b97e12f1.js",
+    "static/chunks/main-app-9f9381fcd6ec5d1b.js",
   ],
   rootMainFilesTree: {},
   pages: {
     "/": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/index-8ddb641e7abbd098.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/index-cdd429fb8365e9a8.js",
     ],
     "/_app": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/_app-fa69b449c419b0c6.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/_app-7fd9860d39660416.js",
     ],
     "/_error": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/_error-84c334cbeba419ae.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/_error-f7ce2cc7967af745.js",
     ],
     "/amp": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/amp-74b464d4f9372170.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/amp-ca37d23fefdda376.js",
     ],
     "/css": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
       "static/css/ded6b86ab9cc0a1f.css",
-      "static/chunks/pages/css-efc17a2f68d7df99.js",
+      "static/chunks/pages/css-ed558eaae0d7c496.js",
     ],
     "/dynamic": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/dynamic-b4f934be4d1f87e7.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/dynamic-55e365045a16536a.js",
     ],
     "/edge-ssr": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/edge-ssr-9621763093ab7518.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/edge-ssr-bb6ac73a343f2268.js",
     ],
     "/head": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/head-dce8a9589fb12781.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/head-f3eefcc535f84847.js",
     ],
     "/hooks": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/hooks-be6f83048403d7ee.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/hooks-dad2f674087fcadb.js",
     ],
     "/image": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/image-cd6a5a2d70afc0f6.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/image-60f9db6a3b36b768.js",
     ],
     "/link": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/link-b5977fd83b8cad60.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/link-5592d5bdec88dcd3.js",
     ],
     "/routerDirect": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/routerDirect-6d4d4f091e53ea06.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/routerDirect-573e64eb53dde685.js",
     ],
     "/script": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/script-549a633f0e7c51ff.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/script-7d0e2904f84b1915.js",
     ],
     "/withRouter": [
-      "static/chunks/webpack-49409235d8d4b4b8.js",
-      "static/chunks/framework-2decaf6d95a02701.js",
-      "static/chunks/main-a1813a1b1200aede.js",
-      "static/chunks/pages/withRouter-ea8f8ca662ba9232.js",
+      "static/chunks/webpack-5c07bf7eb84f5597.js",
+      "static/chunks/framework-9577f7782ec2a388.js",
+      "static/chunks/main-578c48301851406a.js",
+      "static/chunks/pages/withRouter-eba2e3482d3f4173.js",
     ],
   },
   ampFirstPages: [],
 };
-globalThis.__BUILD_MANIFEST.lowPriorityFiles = [
+self.__BUILD_MANIFEST.lowPriorityFiles = [
   "/static/" + process.env.__NEXT_BUILD_ID + "/_buildManifest.js",
   ,
   "/static/" + process.env.__NEXT_BUILD_ID + "/_ssgManifest.js",
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([
   [2983],
   {
-    /***/ 3705: /***/ (
+    /***/ 8255: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(8448);
+          return __webpack_require__(8926);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7342: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4369: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(6049)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7196)
+        __webpack_require__(956)
       );
-      const _getimgprops = __webpack_require__(2661);
-      const _imageconfig = __webpack_require__(72);
-      const _imageconfigcontextsharedruntime = __webpack_require__(6386);
-      const _warnonce = __webpack_require__(4496);
-      const _routercontextsharedruntime = __webpack_require__(6443);
+      const _getimgprops = __webpack_require__(485);
+      const _imageconfig = __webpack_require__(4664);
+      const _imageconfigcontextsharedruntime = __webpack_require__(1250);
+      const _warnonce = __webpack_require__(1648);
+      const _routercontextsharedruntime = __webpack_require__(907);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3433)
+        __webpack_require__(6489)
       );
-      const _usemergedref = __webpack_require__(1942);
+      const _usemergedref = __webpack_require__(5942);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -377,7 +377,7 @@
       /***/
     },
 
-    /***/ 1942: /***/ (module, exports, __webpack_require__) => {
+    /***/ 5942: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -391,39 +391,22 @@
       });
       const _react = __webpack_require__(8101);
       function useMergedRef(refA, refB) {
-        const cleanupA = (0, _react.useRef)(null);
-        const cleanupB = (0, _react.useRef)(null);
-        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
-        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
-        // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),
-        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
-        // (because it hasn't been updated for React 19)
-        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
-        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
-        return (0, _react.useCallback)(
-          (current) => {
+        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) {
-              const cleanupFnA = cleanupA.current;
-              if (cleanupFnA) {
-                cleanupA.current = null;
-                cleanupFnA();
-              }
-              const cleanupFnB = cleanupB.current;
-              if (cleanupFnB) {
-                cleanupB.current = null;
-                cleanupFnB();
-              }
+              cleanupA.current();
+              cleanupB.current();
             } else {
-              if (refA) {
-                cleanupA.current = applyRef(refA, current);
-              }
-              if (refB) {
-                cleanupB.current = applyRef(refB, current);
-              }
+              cleanupA.current = applyRef(refA, current);
+              cleanupB.current = applyRef(refB, current);
             }
-          },
-          [refA, refB]
-        );
+          };
+        }, [refA, refB]);
       }
       function applyRef(refA, current) {
         if (typeof refA === "function") {
@@ -455,7 +438,7 @@
       /***/
     },
 
-    /***/ 2661: /***/ (
+    /***/ 485: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -471,9 +454,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(4496);
-      const _imageblursvg = __webpack_require__(4796);
-      const _imageconfig = __webpack_require__(72);
+      const _warnonce = __webpack_require__(1648);
+      const _imageblursvg = __webpack_require__(4812);
+      const _imageconfig = __webpack_require__(4664);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -646,15 +629,8 @@
           };
         }
         if (typeof defaultLoader === "undefined") {
-          throw Object.defineProperty(
-            new Error(
-              "images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"
-            ),
-            "__NEXT_ERROR_CODE",
-            {
-              value: "E163",
-              enumerable: false,
-            }
+          throw new Error(
+            "images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"
           );
         }
         let loader = rest.loader || defaultLoader;
@@ -666,18 +642,11 @@
         const isDefaultLoader = "__next_img_default" in loader;
         if (isDefaultLoader) {
           if (config.loader === "custom") {
-            throw Object.defineProperty(
-              new Error(
-                'Image with src "' +
-                  src +
-                  '" is missing "loader" prop.' +
-                  "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader"
-              ),
-              "__NEXT_ERROR_CODE",
-              {
-                value: "E252",
-                enumerable: false,
-              }
+            throw new Error(
+              'Image with src "' +
+                src +
+                '" is missing "loader" prop.' +
+                "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader"
             );
           }
         } else {
@@ -728,29 +697,15 @@
         if (isStaticImport(src)) {
           const staticImageData = isStaticRequire(src) ? src.default : src;
           if (!staticImageData.src) {
-            throw Object.defineProperty(
-              new Error(
-                "An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received " +
-                  JSON.stringify(staticImageData)
-              ),
-              "__NEXT_ERROR_CODE",
-              {
-                value: "E460",
-                enumerable: false,
-              }
+            throw new Error(
+              "An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received " +
+                JSON.stringify(staticImageData)
             );
           }
           if (!staticImageData.height || !staticImageData.width) {
-            throw Object.defineProperty(
-              new Error(
-                "An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received " +
-                  JSON.stringify(staticImageData)
-              ),
-              "__NEXT_ERROR_CODE",
-              {
-                value: "E48",
-                enumerable: false,
-              }
+            throw new Error(
+              "An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received " +
+                JSON.stringify(staticImageData)
             );
           }
           blurWidth = staticImageData.blurWidth;
@@ -881,7 +836,7 @@
       /***/
     },
 
-    /***/ 4796: /***/ (__unused_webpack_module, exports) => {
+    /***/ 4812: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -936,7 +891,7 @@
       /***/
     },
 
-    /***/ 1969: /***/ (
+    /***/ 8273: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -963,10 +918,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(173);
-      const _getimgprops = __webpack_require__(2661);
-      const _imagecomponent = __webpack_require__(7342);
+      const _getimgprops = __webpack_require__(485);
+      const _imagecomponent = __webpack_require__(4369);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3433)
+        __webpack_require__(6489)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -998,7 +953,7 @@
       /***/
     },
 
-    /***/ 3433: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6489: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -1045,7 +1000,7 @@
       /***/
     },
 
-    /***/ 8448: /***/ (
+    /***/ 8926: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -1062,8 +1017,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(5105);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
-      var next_image = __webpack_require__(8140);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
+      var next_image = __webpack_require__(5434);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1093,12 +1048,12 @@
       /***/
     },
 
-    /***/ 8140: /***/ (
+    /***/ 5434: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(1969);
+      module.exports = __webpack_require__(8273);
 
       /***/
     },
@@ -1108,7 +1063,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(3705)
+      __webpack_exec__(8255)
     );
     /******/ 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([
   [4672],
   {
-    /***/ 3679: /***/ (
+    /***/ 6613: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function () {
-          return __webpack_require__(8562);
+          return __webpack_require__(2488);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7597: /***/ (module, exports, __webpack_require__) => {
+    /***/ 58: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -30,7 +30,7 @@
           return getDomainLocale;
         },
       });
-      const _normalizetrailingslash = __webpack_require__(4858);
+      const _normalizetrailingslash = __webpack_require__(8650);
       const basePath =
         /* unused pure expression or super */ null && (false || "");
       function getDomainLocale(path, locale, locales, domainLocales) {
@@ -54,7 +54,7 @@
       /***/
     },
 
-    /***/ 3000: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9400: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -71,16 +71,16 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(8101)
       );
-      const _resolvehref = __webpack_require__(9978);
-      const _islocalurl = __webpack_require__(1762);
-      const _formaturl = __webpack_require__(9835);
-      const _utils = __webpack_require__(4781);
-      const _addlocale = __webpack_require__(5244);
-      const _routercontextsharedruntime = __webpack_require__(6443);
-      const _useintersection = __webpack_require__(1587);
-      const _getdomainlocale = __webpack_require__(7597);
-      const _addbasepath = __webpack_require__(7439);
-      const _usemergedref = __webpack_require__(1942);
+      const _resolvehref = __webpack_require__(5066);
+      const _islocalurl = __webpack_require__(5266);
+      const _formaturl = __webpack_require__(4507);
+      const _utils = __webpack_require__(3085);
+      const _addlocale = __webpack_require__(8172);
+      const _routercontextsharedruntime = __webpack_require__(907);
+      const _useintersection = __webpack_require__(9347);
+      const _getdomainlocale = __webpack_require__(58);
+      const _addbasepath = __webpack_require__(943);
+      const _usemergedref = __webpack_require__(5942);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -433,7 +433,7 @@
       /***/
     },
 
-    /***/ 1587: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9347: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -446,7 +446,7 @@
         },
       });
       const _react = __webpack_require__(8101);
-      const _requestidlecallback = __webpack_require__(7512);
+      const _requestidlecallback = __webpack_require__(5832);
       const hasIntersectionObserver =
         typeof IntersectionObserver === "function";
       const observers = new Map();
@@ -559,7 +559,7 @@
       /***/
     },
 
-    /***/ 1942: /***/ (module, exports, __webpack_require__) => {
+    /***/ 5942: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -573,39 +573,22 @@
       });
       const _react = __webpack_require__(8101);
       function useMergedRef(refA, refB) {
-        const cleanupA = (0, _react.useRef)(null);
-        const cleanupB = (0, _react.useRef)(null);
-        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
-        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
-        // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),
-        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
-        // (because it hasn't been updated for React 19)
-        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
-        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
-        return (0, _react.useCallback)(
-          (current) => {
+        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) {
-              const cleanupFnA = cleanupA.current;
-              if (cleanupFnA) {
-                cleanupA.current = null;
-                cleanupFnA();
-              }
-              const cleanupFnB = cleanupB.current;
-              if (cleanupFnB) {
-                cleanupB.current = null;
-                cleanupFnB();
-              }
+              cleanupA.current();
+              cleanupB.current();
             } else {
-              if (refA) {
-                cleanupA.current = applyRef(refA, current);
-              }
-              if (refB) {
-                cleanupB.current = applyRef(refB, current);
-              }
+              cleanupA.current = applyRef(refA, current);
+              cleanupB.current = applyRef(refB, current);
             }
-          },
-          [refA, refB]
-        );
+          };
+        }, [refA, refB]);
       }
       function applyRef(refA, current) {
         if (typeof refA === "function") {
@@ -637,7 +620,7 @@
       /***/
     },
 
-    /***/ 8562: /***/ (
+    /***/ 2488: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -652,7 +635,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(5105);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4101);
+        __webpack_require__(4779);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -683,12 +666,12 @@
       /***/
     },
 
-    /***/ 4101: /***/ (
+    /***/ 4779: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(3000);
+      module.exports = __webpack_require__(9400);
 
       /***/
     },
@@ -698,7 +681,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(3679)
+      __webpack_exec__(6613)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 5306-HASH.js

Diff too large to display

Diff for 8377-HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [8377],
+  [2727],
   {
-    /***/ 8377: /***/ (module, exports, __webpack_require__) => {
+    /***/ 2727: /***/ (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__(2952);
-      const _interop_require_wildcard = __webpack_require__(333);
-      const _jsxruntime = __webpack_require__(3094);
+      const _interop_require_default = __webpack_require__(384);
+      const _interop_require_wildcard = __webpack_require__(4261);
+      const _jsxruntime = __webpack_require__(7048);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(1446)
+        __webpack_require__(228)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8307)
+        __webpack_require__(9221)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8050)
+        __webpack_require__(1116)
       );
-      const _getimgprops = __webpack_require__(3201);
-      const _imageconfig = __webpack_require__(6678);
-      const _imageconfigcontextsharedruntime = __webpack_require__(578);
-      const _warnonce = __webpack_require__(1971);
-      const _routercontextsharedruntime = __webpack_require__(7795);
+      const _getimgprops = __webpack_require__(5763);
+      const _imageconfig = __webpack_require__(6224);
+      const _imageconfigcontextsharedruntime = __webpack_require__(6720);
+      const _warnonce = __webpack_require__(894);
+      const _routercontextsharedruntime = __webpack_require__(9093);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1315)
+        __webpack_require__(2809)
       );
-      const _usemergedref = __webpack_require__(592);
+      const _usemergedref = __webpack_require__(1329);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -361,7 +361,7 @@
       /***/
     },
 
-    /***/ 592: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1329: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -371,41 +371,24 @@
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(1446);
+      const _react = __webpack_require__(228);
       function useMergedRef(refA, refB) {
-        const cleanupA = (0, _react.useRef)(null);
-        const cleanupB = (0, _react.useRef)(null);
-        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
-        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
-        // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),
-        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
-        // (because it hasn't been updated for React 19)
-        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
-        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
-        return (0, _react.useCallback)(
-          (current) => {
+        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) {
-              const cleanupFnA = cleanupA.current;
-              if (cleanupFnA) {
-                cleanupA.current = null;
-                cleanupFnA();
-              }
-              const cleanupFnB = cleanupB.current;
-              if (cleanupFnB) {
-                cleanupB.current = null;
-                cleanupFnB();
-              }
+              cleanupA.current();
+              cleanupB.current();
             } else {
-              if (refA) {
-                cleanupA.current = applyRef(refA, current);
-              }
-              if (refB) {
-                cleanupB.current = applyRef(refB, current);
-              }
+              cleanupA.current = applyRef(refA, current);
+              cleanupB.current = applyRef(refB, current);
             }
-          },
-          [refA, refB]
-        );
+          };
+        }, [refA, refB]);
       }
       function applyRef(refA, current) {
         if (typeof refA === "function") {
@@ -437,7 +420,7 @@
       /***/
     },
 
-    /***/ 5318: /***/ (
+    /***/ 272: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -451,9 +434,9 @@
           return AmpStateContext;
         },
       });
-      const _interop_require_default = __webpack_require__(2952);
+      const _interop_require_default = __webpack_require__(384);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1446)
+        __webpack_require__(228)
       );
       const AmpStateContext = _react.default.createContext({});
       if (false) {
@@ -462,7 +445,7 @@
       /***/
     },
 
-    /***/ 1210: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1467: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -484,7 +467,7 @@
       /***/
     },
 
-    /***/ 3201: /***/ (
+    /***/ 5763: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -498,9 +481,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(1971);
-      const _imageblursvg = __webpack_require__(3482);
-      const _imageconfig = __webpack_require__(6678);
+      const _warnonce = __webpack_require__(894);
+      const _imageblursvg = __webpack_require__(5868);
+      const _imageconfig = __webpack_require__(6224);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -673,15 +656,8 @@
           };
         }
         if (typeof defaultLoader === "undefined") {
-          throw Object.defineProperty(
-            new Error(
-              "images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"
-            ),
-            "__NEXT_ERROR_CODE",
-            {
-              value: "E163",
-              enumerable: false,
-            }
+          throw new Error(
+            "images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"
           );
         }
         let loader = rest.loader || defaultLoader;
@@ -693,18 +669,11 @@
         const isDefaultLoader = "__next_img_default" in loader;
         if (isDefaultLoader) {
           if (config.loader === "custom") {
-            throw Object.defineProperty(
-              new Error(
-                'Image with src "' +
-                  src +
-                  '" is missing "loader" prop.' +
-                  "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader"
-              ),
-              "__NEXT_ERROR_CODE",
-              {
-                value: "E252",
-                enumerable: false,
-              }
+            throw new Error(
+              'Image with src "' +
+                src +
+                '" is missing "loader" prop.' +
+                "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader"
             );
           }
         } else {
@@ -755,29 +724,15 @@
         if (isStaticImport(src)) {
           const staticImageData = isStaticRequire(src) ? src.default : src;
           if (!staticImageData.src) {
-            throw Object.defineProperty(
-              new Error(
-                "An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received " +
-                  JSON.stringify(staticImageData)
-              ),
-              "__NEXT_ERROR_CODE",
-              {
-                value: "E460",
-                enumerable: false,
-              }
+            throw new Error(
+              "An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received " +
+                JSON.stringify(staticImageData)
             );
           }
           if (!staticImageData.height || !staticImageData.width) {
-            throw Object.defineProperty(
-              new Error(
-                "An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received " +
-                  JSON.stringify(staticImageData)
-              ),
-              "__NEXT_ERROR_CODE",
-              {
-                value: "E48",
-                enumerable: false,
-              }
+            throw new Error(
+              "An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received " +
+                JSON.stringify(staticImageData)
             );
           }
           blurWidth = staticImageData.blurWidth;
@@ -908,8 +863,8 @@
       /***/
     },
 
-    /***/ 8050: /***/ (module, exports, __webpack_require__) => {
-      /* provided dependency */ var process = __webpack_require__(6611);
+    /***/ 1116: /***/ (module, exports, __webpack_require__) => {
+      /* provided dependency */ var process = __webpack_require__(9829);
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -930,19 +885,19 @@
           return defaultHead;
         },
       });
-      const _interop_require_default = __webpack_require__(2952);
-      const _interop_require_wildcard = __webpack_require__(333);
-      const _jsxruntime = __webpack_require__(3094);
+      const _interop_require_default = __webpack_require__(384);
+      const _interop_require_wildcard = __webpack_require__(4261);
+      const _jsxruntime = __webpack_require__(7048);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(1446)
+        __webpack_require__(228)
       );
       const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(4607)
+        __webpack_require__(4101)
       );
-      const _ampcontextsharedruntime = __webpack_require__(5318);
-      const _headmanagercontextsharedruntime = __webpack_require__(7060);
-      const _ampmode = __webpack_require__(1210);
-      const _warnonce = __webpack_require__(1971);
+      const _ampcontextsharedruntime = __webpack_require__(272);
+      const _headmanagercontextsharedruntime = __webpack_require__(1790);
+      const _ampmode = __webpack_require__(1467);
+      const _warnonce = __webpack_require__(894);
       function defaultHead(inAmpMode) {
         if (inAmpMode === void 0) inAmpMode = false;
         const head = [
@@ -1126,7 +1081,7 @@
       /***/
     },
 
-    /***/ 3482: /***/ (__unused_webpack_module, exports) => {
+    /***/ 5868: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -1180,7 +1135,7 @@
       /***/
     },
 
-    /***/ 578: /***/ (
+    /***/ 6720: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1194,11 +1149,11 @@
           return ImageConfigContext;
         },
       });
-      const _interop_require_default = __webpack_require__(2952);
+      const _interop_require_default = __webpack_require__(384);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1446)
+        __webpack_require__(228)
       );
-      const _imageconfig = __webpack_require__(6678);
+      const _imageconfig = __webpack_require__(6224);
       const ImageConfigContext = _react.default.createContext(
         _imageconfig.imageConfigDefault
       );
@@ -1208,7 +1163,7 @@
       /***/
     },
 
-    /***/ 6678: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6224: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1257,7 +1212,7 @@
       /***/
     },
 
-    /***/ 1315: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2809: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1302,7 +1257,7 @@
       /***/
     },
 
-    /***/ 7795: /***/ (
+    /***/ 9093: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1316,9 +1271,9 @@
           return RouterContext;
         },
       });
-      const _interop_require_default = __webpack_require__(2952);
+      const _interop_require_default = __webpack_require__(384);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1446)
+        __webpack_require__(228)
       );
       const RouterContext = _react.default.createContext(null);
       if (false) {
@@ -1327,7 +1282,7 @@
       /***/
     },
 
-    /***/ 4607: /***/ (
+    /***/ 4101: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1341,7 +1296,7 @@
           return SideEffect;
         },
       });
-      const _react = __webpack_require__(1446);
+      const _react = __webpack_require__(228);
       const isServer = typeof window === "undefined";
       const useClientOnlyLayoutEffect = isServer
         ? () => {}
Diff for bccd1874-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for main-app-HASH.js
@@ -1,49 +1,46 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4977],
   {
-    /***/ 2871: /***/ (
+    /***/ 2532: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9656, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2273, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 5220, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1646, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6780, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5802, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2020, 23)
+        __webpack_require__.t.bind(__webpack_require__, 6022, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 589, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3071, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9341, 23)
+        __webpack_require__.t.bind(__webpack_require__, 8099, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9497, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1167, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7112, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2618, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4226)
+        __webpack_require__.t.bind(__webpack_require__, 4667, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2962, 23)
+        __webpack_require__.t.bind(__webpack_require__, 587, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 3017, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3110, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7272, 23)
-      );
-      Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4194, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2032, 23)
       );
 
       /***/
@@ -55,8 +52,8 @@
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(
       0,
-      [7629, 5306],
-      () => (__webpack_exec__(7241), __webpack_exec__(2871))
+      [1758, 6307],
+      () => (__webpack_exec__(8183), __webpack_exec__(2532))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 523-experime..ntime.dev.js
@@ -0,0 +1,2 @@
+"use strict";exports.id=523,exports.ids=[523],exports.modules={"./dist/client/dev/noop-turbopack-hmr.js":(module,exports1)=>{function connect(){}Object.defineProperty(exports1,"__esModule",{value:!0}),Object.defineProperty(exports1,"connect",{enumerable:!0,get:function(){return connect}}),("function"==typeof exports1.default||"object"==typeof exports1.default&&null!==exports1.default)&&void 0===exports1.default.__esModule&&(Object.defineProperty(exports1.default,"__esModule",{value:!0}),Object.assign(exports1.default,exports1),module.exports=exports1.default)}};
+//# sourceMappingURL=523-experimental.runtime.dev.js.map
\ No newline at end of file
Diff for 523.runtime.dev.js
@@ -0,0 +1,2 @@
+"use strict";exports.id=523,exports.ids=[523],exports.modules={"./dist/client/dev/noop-turbopack-hmr.js":(module,exports1)=>{function connect(){}Object.defineProperty(exports1,"__esModule",{value:!0}),Object.defineProperty(exports1,"connect",{enumerable:!0,get:function(){return connect}}),("function"==typeof exports1.default||"object"==typeof exports1.default&&null!==exports1.default)&&void 0===exports1.default.__esModule&&(Object.defineProperty(exports1.default,"__esModule",{value:!0}),Object.assign(exports1.default,exports1),module.exports=exports1.default)}};
+//# sourceMappingURL=523.runtime.dev.js.map
\ No newline at end of file
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js

Diff too large to display

Diff for app-route-ex..ntime.dev.js

Diff too large to display

Diff for app-route-ex..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route.runtime.dev.js

Diff too large to display

Diff for app-route.ru..time.prod.js

Diff too large to display

Diff for dist_client_..ntime.dev.js
deleted
Diff for dist_client_..ntime.dev.js
deleted
Diff for pages-api-tu..time.prod.js

Diff too large to display

Diff for pages-api.runtime.dev.js

Diff too large to display

Diff for pages-api.ru..time.prod.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

Diff for server.runtime.prod.js
failed to diff
Commit: c4e8389

@ztanner ztanner marked this pull request as ready for review February 10, 2025 18:34
@ztanner ztanner requested a review from ijjk February 10, 2025 18:34
@ztanner ztanner merged commit 2bd6588 into next-15-0 Feb 10, 2025
103 of 111 checks passed
@ztanner ztanner deleted the backport/98d4bba branch February 10, 2025 18:44
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 25, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants