Skip to content

[turbopack] Optimize ESM Re-export bindings to avoid arrow functions#82764

Closed
lukesandberg wants to merge 1 commit into
use_dead_exports_analysisfrom
re_exports
Closed

[turbopack] Optimize ESM Re-export bindings to avoid arrow functions#82764
lukesandberg wants to merge 1 commit into
use_dead_exports_analysisfrom
re_exports

Conversation

@lukesandberg

@lukesandberg lukesandberg commented Aug 18, 2025

Copy link
Copy Markdown
Contributor

Closes PACK-5295

@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. labels Aug 18, 2025

lukesandberg commented Aug 18, 2025

Copy link
Copy Markdown
Contributor Author

@ijjk

ijjk commented Aug 19, 2025

Copy link
Copy Markdown
Member

Failing test suites

Commit: 1c8fe0bcf20304ccdece3e33db4b9899e7952f9f

pnpm test test/integration/compression/test/index.test.js (turbopack)

  • Compression > should compress responses by default
Expand output

● Compression › should compress responses by default

expect(received).toMatch(expected)

Matcher error: received value must be a string

Received has value: null

  25 |     const res = await fetchViaHTTP(context.appPort, '/')
  26 |
> 27 |     expect(res.headers.get('content-encoding')).toMatch(/gzip/)
     |                                                 ^
  28 |   })
  29 | })
  30 |

  at Object.toMatch (integration/compression/test/index.test.js:27:49)

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

pnpm test-start-turbo test/e2e/app-dir/app-rendering/rendering.test.ts (turbopack)

  • app dir rendering > should serve app/page.server.js at /
  • app dir rendering > ISR > should revalidate the page when revalidate is configured
  • app dir rendering > SSR only > should run data in layout and page
  • app dir rendering > SSR only > should run data fetch in parallel
  • app dir rendering > static only > should run data in layout and page
  • app dir rendering > static only > should run data in parallel and use cached version for production
Expand output

● app dir rendering › should serve app/page.server.js at /

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app dir rendering › SSR only › should run data in layout and page

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app dir rendering › SSR only › should run data fetch in parallel

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app dir rendering › static only › should run data in layout and page

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app dir rendering › static only › should run data in parallel and use cached version for production

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app dir rendering › ISR › should revalidate the page when revalidate is configured

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app dir rendering › mixed static and dynamic › should generate static data during build and use it

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test test/integration/config/test/index.test.js (turbopack)

  • Configuration > should have config available on the client
Expand output

● Configuration › should have config available on the client

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

Expected: ""
Received: "secret"

  69 |     const envValue = await browser.elementByCss('#env').text()
  70 |
> 71 |     expect(serverText).toBe('')
     |                        ^
  72 |     expect(serverClientText).toBe('/static')
  73 |     expect(envValue).toBe('hello')
  74 |     await browser.close()

  at Object.toBe (integration/config/test/index.test.js:71:24)

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

pnpm test test/integration/app-document-style-fragment/test/index.test.js (turbopack)

  • Custom Document Fragment Styles > production mode > correctly adds styles from fragment styles key
Expand output

● Custom Document Fragment Styles › production mode › correctly adds styles from fragment styles key

expect(received).toMatch(expected)

Expected pattern: /background:(.*|)hotpink/
Received string:  ""

  33 |       afterAll(() => stopApp(server))
  34 |
> 35 |       it('correctly adds styles from fragment styles key', async () => {
     |                            ^
  36 |         const html = await renderViaHTTP(appPort, '/')
  37 |         const $ = cheerio.load(html)
  38 |

  at Object.<anonymous> (integration/app-document-style-fragment/test/index.test.js:35:28)

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

pnpm test-start-turbo test/e2e/app-dir/actions-allowed-origins/app-action-allowed-origins.test.ts (turbopack)

  • app-dir action allowed origins > should pass if localhost is set as a safe origin
Expand output

● app-dir action allowed origins › should pass if localhost is set as a safe origin

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test test/integration/edge-runtime-streaming-error/test/index.test.ts (turbopack)

  • development mode > logs the error correctly
Expand output

● development mode › logs the error correctly

expect(received).toEqual(expected) // deep equality

Expected: "hello"
Received: "<!DOCTYPE html><html><head></head><body><div id=\"__next\"></div><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500,\"hostname\":\"[::]\"}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"TypeError\",\"source\":\"edge-server\",\"message\":\"r.TimeoutError is not a constructor\",\"stack\":\"TypeError: r.TimeoutError is not a constructor\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/[root-of-the-server]__b1bd5e2d._.js:3865:19)\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/[root-of-the-server]__b1bd5e2d._.js:4082:7)\\n    at __TURBOPACK__module__evaluation__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/[root-of-the-server]__b1bd5e2d._.js:4084:3)\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-streaming-error_edge-wrapper_7f81389f.js:896:13)\\n    at runModuleExecutionHooks (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-streaming-error_edge-wrapper_7f81389f.js:934:9)\\n    at instantiateModule (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-streaming-error_edge-wrapper_7f81389f.js:894:9)\\n    at getOrInstantiateModuleFromParent (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-streaming-error_edge-wrapper_7f81389f.js:847:12)\\n    at DevContext.esmImport [as i] (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-streaming-error_edge-wrapper_7f81389f.js:279:20)\\n    at __TURBOPACK__module__evaluation__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/[root-of-the-server]__b1bd5e2d._.js:4614:186)\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-streaming-error/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-streaming-error_edge-wrapper_7f81389f.js:896:13)\"},\"gip\":true}</script></body></html>"

  18 |   return async () => {
  19 |     const res = await fetchViaHTTP(context.appPort, '/api/test')
> 20 |     expect(await res.text()).toEqual('hello')
     |                              ^
  21 |     expect(res.status).toBe(200)
  22 |     await waitFor(200)
  23 |     await check(

  at Object.toEqual (integration/edge-runtime-streaming-error/test/index.test.ts:20:30)

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

pnpm test-start-turbo test/e2e/app-dir/app-a11y/index.test.ts (turbopack)

  • app a11y features > route announcer > should not announce the initital title
  • app a11y features > route announcer > should announce document.title changes
  • app a11y features > route announcer > should announce h1 changes
  • app a11y features > route announcer > should announce route changes when h1 changes inside an inner layout
Expand output

● app a11y features › route announcer › should not announce the initital title

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app a11y features › route announcer › should announce document.title changes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app a11y features › route announcer › should announce h1 changes

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app a11y features › route announcer › should announce route changes when h1 changes inside an inner layout

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test test/integration/css/test/css-and-styled-jsx.test.js (turbopack)

  • Ordering with styled-jsx (dev) > should have the correct color (css ordering)
Expand output

● Ordering with styled-jsx (dev) › should have the correct color (css ordering)

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Ordering with styled-jsx (dev) should have the correct color (css ordering) 1`

Snapshot: "rgb(0, 128, 0)"
Received: "rgb(0, 0, 0)"

  33 |       `window.getComputedStyle(document.querySelector('.my-text')).color`
  34 |     )
> 35 |     expect(currentColor).toMatchInlineSnapshot(`"rgb(0, 128, 0)"`)
     |                          ^
  36 |   })
  37 | })
  38 |

  at Object.toMatchInlineSnapshot (integration/css/test/css-and-styled-jsx.test.js:35:26)

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

pnpm test test/integration/css-features/test/css-modules.test.js (turbopack)

  • CSS Modules: Import Global CSS > production mode > should've emitted a single CSS file
Expand output

● CSS Modules: Import Global CSS › production mode › should've emitted a single CSS file

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

Expected: 1
Received: 0

   96 |
   97 |         const cssSheet = $('link[rel="stylesheet"]')
>  98 |         expect(cssSheet.length).toBe(1)
      |                                 ^
   99 |
  100 |         const stylesheet = cssSheet.attr('href')
  101 |

  at Object.toBe (integration/css-features/test/css-modules.test.js:98:33)

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

pnpm test-start-turbo test/e2e/app-dir/asset-prefix-absolute/asset-prefix-absolute.test.ts (turbopack)

  • app-dir absolute assetPrefix > bundles should return 200 on served assetPrefix
Expand output

● app-dir absolute assetPrefix › bundles should return 200 on served assetPrefix

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test-start-turbo test/e2e/app-dir/app-config-crossorigin/index.test.ts (turbopack)

  • app dir - crossOrigin config > skip in start mode
Expand output

● app dir - crossOrigin config › skip in start mode

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test-start-turbo test/e2e/app-dir/app-basepath-custom-server/index.test.ts (turbopack)

  • custom-app-server-action-redirect > redirects with basepath properly when server action handler uses redirect
  • custom-app-server-action-redirect > redirects with proper cookies set from both redirect response and post respose
Expand output

● custom-app-server-action-redirect › redirects with basepath properly when server action handler uses redirect

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● custom-app-server-action-redirect › redirects with proper cookies set from both redirect response and post respose

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test-start-turbo test/e2e/app-dir/app-fetch-deduping-errors/app-fetch-deduping-errors.test.ts (turbopack)

  • app-fetch-errors > should still successfully render when a fetch request that acquires a cache lock errors
Expand output

● app-fetch-errors › should still successfully render when a fetch request that acquires a cache lock errors

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test test/integration/edge-runtime-dynamic-code/test/index.test.js (turbopack)

  • Edge route usage of dynamic code evaluation > development mode > shows a warning when running code with eval
  • Edge route usage of dynamic code evaluation > development mode > does not show warning when no code uses eval
  • Edge route usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.compile
  • Edge route usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.instantiate with a buffer parameter
  • Edge route usage of dynamic code evaluation > development mode > does not show a warning when running WebAssembly.instantiate with a module parameter
  • Middleware usage of dynamic code evaluation > development mode > shows a warning when running code with eval
  • Middleware usage of dynamic code evaluation > development mode > does not show warning when no code uses eval
  • Middleware usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.compile
  • Middleware usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.instantiate with a buffer parameter
  • Middleware usage of dynamic code evaluation > development mode > does not show a warning when running WebAssembly.instantiate with a module parameter
  • Page using eval in development mode > does issue dynamic code evaluation warnings
Expand output

● Page using eval in development mode › does issue dynamic code evaluation warnings

expect(received).toMatch(expected)

Expected pattern: />.*?100.*?and.*?100.*?<\//
Received string:  "<!DOCTYPE html><html><head></head><body><div id=\"__next\"></div><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500,\"hostname\":\"[::]\"}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"TypeError\",\"source\":\"edge-server\",\"message\":\"r.TimeoutError is not a constructor\",\"stack\":\"TypeError: r.TimeoutError is not a constructor\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[root-of-the-server]__22ec4e54._.js:3865:19)\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[root-of-the-server]__22ec4e54._.js:4082:7)\\n    at __TURBOPACK__module__evaluation__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[root-of-the-server]__22ec4e54._.js:4084:3)\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-dynamic-code_edge-wrapper_fec599f9.js:896:13)\\n    at runModuleExecutionHooks (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-dynamic-code_edge-wrapper_fec599f9.js:934:9)\\n    at instantiateModule (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-dynamic-code_edge-wrapper_fec599f9.js:894:9)\\n    at getOrInstantiateModuleFromParent (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-dynamic-code_edge-wrapper_fec599f9.js:847:12)\\n    at DevContext.esmImport [as i] (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-dynamic-code_edge-wrapper_fec599f9.js:279:20)\\n    at __TURBOPACK__module__evaluation__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[root-of-the-server]__22ec4e54._.js:4614:193)\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/turbopack-test_integration_edge-runtime-dynamic-code_edge-wrapper_fec599f9.js:896:13)\"},\"gip\":true}</script></body></html>"

  46 |   it('does issue dynamic code evaluation warnings', async () => {
  47 |     const html = await renderViaHTTP(context.appPort, '/')
> 48 |     expect(html).toMatch(/>.*?100.*?and.*?100.*?<\//)
     |                  ^
  49 |     await waitFor(500)
  50 |     expect(output).not.toContain(EVAL_ERROR)
  51 |     expect(output).not.toContain(DYNAMIC_CODE_ERROR)

  at Object.toMatch (integration/edge-runtime-dynamic-code/test/index.test.js:48:18)

● Middleware usage of dynamic code evaluation › development mode › shows a warning when running code with eval

TypeError: Cannot read properties of null (reading 'value')

  62 |     },
  63 |     async extractValue(response) {
> 64 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  65 |     },
  66 |   },
  67 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:64:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:105:24)

● Middleware usage of dynamic code evaluation › development mode › does not show warning when no code uses eval

TypeError: Cannot read properties of null (reading 'value')

  62 |     },
  63 |     async extractValue(response) {
> 64 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  65 |     },
  66 |   },
  67 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:64:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:157:24)

● Middleware usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.compile

TypeError: Cannot read properties of null (reading 'value')

  62 |     },
  63 |     async extractValue(response) {
> 64 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  65 |     },
  66 |   },
  67 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:64:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:167:24)

● Middleware usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.instantiate with a buffer parameter

TypeError: Cannot read properties of null (reading 'value')

  62 |     },
  63 |     async extractValue(response) {
> 64 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  65 |     },
  66 |   },
  67 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:64:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:227:24)

● Middleware usage of dynamic code evaluation › development mode › does not show a warning when running WebAssembly.instantiate with a module parameter

TypeError: Cannot read properties of null (reading 'value')

  62 |     },
  63 |     async extractValue(response) {
> 64 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  65 |     },
  66 |   },
  67 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:64:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:278:24)

● Edge route usage of dynamic code evaluation › development mode › shows a warning when running code with eval

FetchError: invalid json response body at http://localhost:44619/api/route?case=using-eval reason: Unexpected token < in JSON at position 0

  71 |     },
  72 |     async extractValue(response) {
> 73 |       return (await response.json()).value
     |               ^
  74 |     },
  75 |   },
  76 | ])(

  at ../node_modules/.pnpm/node-fetch@2.6.7_encoding@0.1.13/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:73:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:105:18)

● Edge route usage of dynamic code evaluation › development mode › does not show warning when no code uses eval

FetchError: invalid json response body at http://localhost:44619/api/route?case=not-using-eval reason: Unexpected token < in JSON at position 0

  71 |     },
  72 |     async extractValue(response) {
> 73 |       return (await response.json()).value
     |               ^
  74 |     },
  75 |   },
  76 | ])(

  at ../node_modules/.pnpm/node-fetch@2.6.7_encoding@0.1.13/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:73:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:157:18)

● Edge route usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.compile

FetchError: invalid json response body at http://localhost:44619/api/route?case=using-webassembly-compile reason: Unexpected token < in JSON at position 0

  71 |     },
  72 |     async extractValue(response) {
> 73 |       return (await response.json()).value
     |               ^
  74 |     },
  75 |   },
  76 | ])(

  at ../node_modules/.pnpm/node-fetch@2.6.7_encoding@0.1.13/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:73:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:167:18)

● Edge route usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.instantiate with a buffer parameter

FetchError: invalid json response body at http://localhost:44619/api/route?case=using-webassembly-instantiate-with-buffer reason: Unexpected token < in JSON at position 0

  71 |     },
  72 |     async extractValue(response) {
> 73 |       return (await response.json()).value
     |               ^
  74 |     },
  75 |   },
  76 | ])(

  at ../node_modules/.pnpm/node-fetch@2.6.7_encoding@0.1.13/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:73:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:227:18)

● Edge route usage of dynamic code evaluation › development mode › does not show a warning when running WebAssembly.instantiate with a module parameter

FetchError: invalid json response body at http://localhost:44619/api/route?case=using-webassembly-instantiate reason: Unexpected token < in JSON at position 0

  71 |     },
  72 |     async extractValue(response) {
> 73 |       return (await response.json()).value
     |               ^
  74 |     },
  75 |   },
  76 | ])(

  at ../node_modules/.pnpm/node-fetch@2.6.7_encoding@0.1.13/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:73:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:278:18)

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

pnpm test test/integration/middleware-src/test/index.test.js (turbopack)

  • Middleware in src/ and / folders > development mode > loads and runs only root middleware
  • Middleware in src/ folder > development mode > loads an runs src middleware
Expand output

● Middleware in src/ folder › development mode › loads an runs src middleware

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

Expected: true
Received: false

  25 |     const response = await fetchViaHTTP(appPort, '/post-1')
  26 |     expect(response.headers.has(srcHeader)).toBe(false)
> 27 |     expect(response.headers.has(`${srcHeader}-TS`)).toBe(true)
     |                                                     ^
  28 |   })
  29 | }
  30 |

  at Object.toBe (integration/middleware-src/test/index.test.js:27:53)

● Middleware in src/ and / folders › development mode › loads and runs only root middleware

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

Expected: true
Received: false

  35 |     expect(response.headers.has(`${srcHeader}-TS`)).toBe(false)
  36 |     expect(response.headers.has(rootHeader)).toBe(false)
> 37 |     expect(response.headers.has(`${rootHeader}-TS`)).toBe(true)
     |                                                      ^
  38 |   })
  39 | }
  40 |

  at Object.toBe (integration/middleware-src/test/index.test.js:37:54)

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

pnpm test-start-turbo test/e2e/app-dir/app-compilation/index.test.ts (turbopack)

  • app dir - css with pageextensions > css support with pageextensions > page in app directory with pageextention, css should work > should support global css inside layout
Expand output

● app dir - css with pageextensions › css support with pageextensions › page in app directory with pageextention, css should work › should support global css inside layout

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test-start-turbo test/e2e/app-dir/actions-allowed-origins/app-action-disallowed-origins.test.ts (turbopack)

  • app-dir action disallowed origins > should error if x-forwarded-host does not match the origin
Expand output

● app-dir action disallowed origins › should error if x-forwarded-host does not match the origin

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test test/integration/custom-routes-i18n/test/index.test.js (turbopack)

  • Custom routes i18n > production mode > should navigate on the client with rewrites correctly
Expand output

● Custom routes i18n › production mode › should navigate on the client with rewrites correctly

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

Expected: 1
Received: undefined

  135 |
  136 |       await check(() => browser.eval('window.location.pathname'), locale || '/')
> 137 |       expect(await browser.eval('window.beforeNav')).toBe(1)
      |                                                      ^
  138 |
  139 |       await browser.elementByCss('#to-links').click()
  140 |

  at Object.toBe (integration/custom-routes-i18n/test/index.test.js:137:54)

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

pnpm test-start-turbo test/e2e/app-dir/app-routes-trailing-slash/app-routes-trailing-slash.test.ts (turbopack)

  • app-routes-trailing-slash > should handle trailing slash for edge runtime
  • app-routes-trailing-slash > should handle trailing slash for node runtime
Expand output

● app-routes-trailing-slash › should handle trailing slash for edge runtime

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

● app-routes-trailing-slash › should handle trailing slash for node runtime

next build failed with code/signal 1

  107 |             if (code || signal)
  108 |               reject(
> 109 |                 new Error(
      |                 ^
  110 |                   `next build failed with code/signal ${code || signal}`
  111 |                 )
  112 |               )

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

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

pnpm test test/integration/gssp-redirect-with-rewrites/test/index.test.js (turbopack)

  • getServerSideProps redirects > should use a client-side navigation for a rewritten URL
Expand output

● getServerSideProps redirects › should use a client-side navigation for a rewritten URL

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

Expected: true
Received: undefined

  43 |     await browser.waitForElementByCss('.refreshed')
  44 |
> 45 |     expect(await browser.eval('window.__SAME_PAGE')).toBe(true)
     |                                                      ^
  46 |   })
  47 |
  48 |   it('should fallback to browser navigation for an unknown URL', async () => {

  at Object.toBe (integration/gssp-redirect-with-rewrites/test/index.test.js:45:54)

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

pnpm test-dev-turbo test/development/app-dir/edge-errors-hmr/index.test.ts (turbopack)

  • develop - app-dir - edge errros hmr > should recover from build errors when server component error
  • develop - app-dir - edge errros hmr > should recover from build errors when client component error
Expand output

● develop - app-dir - edge errros hmr › should recover from build errors when server component error

Expected Redbox but found no visible one.

  15 |     })
  16 |
> 17 |     await assertHasRedbox(browser)
     |     ^
  18 |
  19 |     await next.patchFile('app/comp.server.js', clientComponentSource)
  20 |

  at Object.<anonymous> (development/app-dir/edge-errors-hmr/index.test.ts:17:5)

● develop - app-dir - edge errros hmr › should recover from build errors when client component error

Expected Redbox but found no visible one.

  30 |     })
  31 |
> 32 |     await assertHasRedbox(browser)
     |     ^
  33 |
  34 |     await next.patchFile('app/comp.client.js', clientComponentSource)
  35 |

  at Object.<anonymous> (development/app-dir/edge-errors-hmr/index.test.ts:32:5)

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

pnpm test-dev-turbo test/development/acceptance-app/editor-links.test.ts (turbopack)

  • Error overlay - editor links > should be possible to open source file on build error
Expand output

● Error overlay - editor links › should be possible to open source file on build error

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46825/", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance-app/editor-links.test.ts:36:27)

● Error overlay - editor links › opening links in import traces › should be possible to open import trace files on module not found error

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

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

pnpm test-dev-turbo test/development/app-dir/dynamic-error-trace/index.test.ts (turbopack)

  • app dir - dynamic error trace > should show the error trace
Expand output

● app dir - dynamic error trace › should show the error trace

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:43091/", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (development/app-dir/dynamic-error-trace/index.test.ts:11:21)

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

pnpm test-dev-turbo test/development/app-dir/hmr-asset-prefix-full-url/asset-prefix.test.ts (turbopack)

  • app-dir assetPrefix full URL > should not break HMR when asset prefix set to full URL
Expand output

● app-dir assetPrefix full URL › should not break HMR when asset prefix set to full URL

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:42597/", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (development/app-dir/hmr-asset-prefix-full-url/asset-prefix.test.ts:20:21)

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

pnpm test-dev-turbo test/development/acceptance-app/ReactRefreshModule.test.ts (turbopack)

  • ReactRefreshModule app > should allow any variable names
Expand output

● ReactRefreshModule app › should allow any variable names

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46841/", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance-app/ReactRefreshModule.test.ts:13:27)

● Test suite failed to run

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

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

pnpm test-dev-turbo test/development/acceptance-app/ReactRefreshLogBoxMisc.test.ts (turbopack)

  • ReactRefreshLogBox app > server-side only compilation errors
Expand output

● ReactRefreshLogBox app › server-side only compilation errors

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:44181/", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance-app/ReactRefreshLogBoxMisc.test.ts:13:27)

● Test suite failed to run

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

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

pnpm test-dev-turbo test/development/app-dir/cache-components-dev-cache-scope/cache-components-dev-cache-scope.test.ts (turbopack)

  • Cache Components Dev Errors > should not show a red box error on the SSR render
  • Cache Components Dev Errors > should show a red box error on the SSR render when data is uncached
Expand output

● Cache Components Dev Errors › should not show a red box error on the SSR render

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:38773/cached", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (development/app-dir/cache-components-dev-cache-scope/cache-components-dev-cache-scope.test.ts:15:21)

● Cache Components Dev Errors › should show a red box error on the SSR render when data is uncached

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:38773/uncached", waiting until "load"

  328 |     await opts?.beforePageLoad?.(page)
  329 |
> 330 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  331 |   }
  332 |
  333 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:330:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (development/app-dir/cache-components-dev-cache-scope/cache-components-dev-cache-scope.test.ts:74:21)

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

pnpm test-dev test/development/next-config-ts/turbo/index.test.ts

  • next-config-ts - turbopack > should work with Turbopack
Expand output

● next-config-ts - turbopack › should work with Turbopack

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

   7 |     startCommand: 'pnpm next dev --turbo',
   8 |   })
>  9 |   it('should work with Turbopack', async () => {
     |   ^
  10 |     const $ = await next.render$('/')
  11 |     expect($('p').text()).toBe('foo')
  12 |   })

  at it (development/next-config-ts/turbo/index.test.ts:9:3)
  at Object.describe (development/next-config-ts/turbo/index.test.ts:3:1)

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

@ijjk

ijjk commented Aug 19, 2025

Copy link
Copy Markdown
Member

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js re_exports Change
buildDuration 16.3s 14.7s N/A
buildDurationCached 13.9s 12.3s N/A
nodeModulesSize 447 MB 447 MB
nextStartRea..uration (ms) 393ms 398ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js re_exports Change
234bef07-HASH.js gzip 54.2 kB 54.2 kB N/A
5194.HASH.js gzip 169 B 169 B
8863-HASH.js gzip 5.27 kB 5.27 kB N/A
9304-HASH.js gzip 46 kB 45.3 kB N/A
framework-HASH.js gzip 57.7 kB 57.7 kB N/A
main-app-HASH.js gzip 253 B 253 B
main-HASH.js gzip 36.7 kB 36.5 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 422 B 422 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js re_exports 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 re_exports Change
_app-HASH.js gzip 194 B 193 B N/A
_error-HASH.js gzip 182 B 182 B
amp-HASH.js gzip 502 B 507 B N/A
css-HASH.js gzip 335 B 333 B N/A
dynamic-HASH.js gzip 1.83 kB 1.83 kB N/A
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 350 B 352 B N/A
hooks-HASH.js gzip 385 B 383 B N/A
image-HASH.js gzip 4.65 kB 4.66 kB N/A
index-HASH.js gzip 257 B 259 B N/A
link-HASH.js gzip 2.52 kB 2.52 kB N/A
routerDirect..HASH.js gzip 320 B 318 B N/A
script-HASH.js gzip 387 B 386 B N/A
withRouter-HASH.js gzip 315 B 313 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 543 B 543 B
Client Build Manifests
vercel/next.js canary vercel/next.js re_exports Change
_buildManifest.js gzip 753 B 751 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js re_exports Change
index.html gzip 524 B 523 B N/A
link.html gzip 538 B 538 B
withRouter.html gzip 519 B 519 B
Overall change 1.06 kB 1.06 kB
Edge SSR bundle Size
vercel/next.js canary vercel/next.js re_exports Change
edge-ssr.js gzip 120 kB 120 kB N/A
page.js gzip 224 kB 224 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js re_exports Change
middleware-b..fest.js gzip 675 B 675 B
middleware-r..fest.js gzip 156 B 155 B N/A
middleware.js gzip 33.1 kB 33 kB N/A
edge-runtime..pack.js gzip 853 B 853 B
Overall change 1.53 kB 1.53 kB
Next Runtimes
vercel/next.js canary vercel/next.js re_exports Change
app-page-exp...dev.js gzip 285 kB 285 kB N/A
app-page-exp..prod.js gzip 156 kB 156 kB
app-page-tur...dev.js gzip 285 kB 285 kB N/A
app-page-tur..prod.js gzip 156 kB 156 kB
app-page-tur...dev.js gzip 273 kB 273 kB
app-page-tur..prod.js gzip 151 kB 151 kB
app-page.run...dev.js gzip 273 kB 273 kB
app-page.run..prod.js gzip 151 kB 151 kB
app-route-ex...dev.js gzip 69.9 kB 69.9 kB
app-route-ex..prod.js gzip 49 kB 49 kB
app-route-tu...dev.js gzip 69.9 kB 69.9 kB
app-route-tu..prod.js gzip 49 kB 49 kB
app-route-tu...dev.js gzip 69.3 kB 69.3 kB
app-route-tu..prod.js gzip 48.7 kB 48.7 kB
app-route.ru...dev.js gzip 69.2 kB 69.2 kB
app-route.ru..prod.js gzip 48.7 kB 48.7 kB
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 328 B 328 B
dist_client_...dev.js gzip 320 B 320 B
dist_client_...dev.js gzip 318 B 318 B
pages-api-tu...dev.js gzip 42.3 kB 42.3 kB
pages-api-tu..prod.js gzip 32.5 kB 32.5 kB
pages-api.ru...dev.js gzip 42.2 kB 42.2 kB
pages-api.ru..prod.js gzip 32.5 kB 32.5 kB
pages-turbo....dev.js gzip 52.4 kB 52.4 kB
pages-turbo...prod.js gzip 40 kB 40 kB
pages.runtim...dev.js gzip 52.6 kB 52.6 kB
pages.runtim..prod.js gzip 40.1 kB 40.1 kB
server.runti..prod.js gzip 59.9 kB 59.9 kB
Overall change 2.03 MB 2.03 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js re_exports Change
0.pack gzip 2.91 MB 2.91 MB ⚠️ +2.63 kB
index.pack gzip 91.9 kB 93.1 kB ⚠️ +1.22 kB
Overall change 3 MB 3 MB ⚠️ +3.86 kB
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js
failed to diff
Diff for amp-HASH.js
@@ -1,17 +1,65 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5034],
   {
-    /***/ 4105: /***/ (
+    /***/ 6212: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ config: () => /* binding */ config,
+        /* harmony export */ default: () => /* binding */ Amp,
+        /* harmony export */
+      });
+      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(7023);
+      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_amp__WEBPACK_IMPORTED_MODULE_0__
+        );
+
+      const config = {
+        amp: "hybrid",
+      };
+      function Amp(props) {
+        return (0, next_amp__WEBPACK_IMPORTED_MODULE_0__.useAmp)()
+          ? "AMP mode"
+          : "normal mode";
+      }
+
+      /***/
+    },
+
+    /***/ 7023: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(4642);
+      module.exports = __webpack_require__(9926);
+
+      /***/
+    },
+
+    /***/ 8647: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/amp",
+        function () {
+          return __webpack_require__(6212);
+        },
+      ]);
+      if (false) {
+      }
 
       /***/
     },
 
-    /***/ 4642: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9926: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -27,8 +75,8 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(5977)
       );
-      const _ampcontextsharedruntime = __webpack_require__(8358);
-      const _ampmode = __webpack_require__(242);
+      const _ampcontextsharedruntime = __webpack_require__(5418);
+      const _ampmode = __webpack_require__(3494);
       function useAmp() {
         // Don't assign the context value to a variable to save bytes
         return (0, _ampmode.isInAmpMode)(
@@ -49,61 +97,13 @@
 
       /***/
     },
-
-    /***/ 5261: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/amp",
-        function () {
-          return __webpack_require__(9550);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 9550: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ config: () => /* binding */ config,
-        /* harmony export */ default: () => /* binding */ Amp,
-        /* harmony export */
-      });
-      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(4105);
-      /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_amp__WEBPACK_IMPORTED_MODULE_0__
-        );
-
-      const config = {
-        amp: "hybrid",
-      };
-      function Amp(props) {
-        return (0, next_amp__WEBPACK_IMPORTED_MODULE_0__.useAmp)()
-          ? "AMP mode"
-          : "normal mode";
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(5261)
+      __webpack_exec__(8647)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,7 +1,14 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9813],
   {
-    /***/ 5267: /***/ (
+    /***/ 1978: /***/ (module) => {
+      // extracted by mini-css-extract-plugin
+      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+      /***/
+    },
+
+    /***/ 6941: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -15,7 +22,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(7765);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(6320);
+        __webpack_require__(1978);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -35,14 +42,7 @@
       /***/
     },
 
-    /***/ 6320: /***/ (module) => {
-      // extracted by mini-css-extract-plugin
-      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
-
-      /***/
-    },
-
-    /***/ 9643: /***/ (
+    /***/ 8685: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -50,7 +50,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function () {
-          return __webpack_require__(5267);
+          return __webpack_require__(6941);
         },
       ]);
       if (false) {
@@ -64,7 +64,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9643)
+      __webpack_exec__(8685)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,17 +1,63 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 2406: /***/ (
-      module,
-      __unused_webpack_exports,
+    /***/ 2839: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(8949);
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
+      });
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(7765);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(7444);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
+        () =>
+          __webpack_require__
+            .e(/* import() */ 1376)
+            .then(__webpack_require__.bind(__webpack_require__, 1376))
+            .then((mod) => mod.Hello),
+        {
+          loadableGenerated: {
+            webpack: () => [/*require.resolve*/ 1376],
+          },
+        }
+      );
+      const Page = () =>
+        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
+          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
+          {
+            children: [
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
+                children: "testing next/dynamic size",
+              }),
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+                DynamicHello,
+                {}
+              ),
+            ],
+          }
+        );
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
 
       /***/
     },
 
-    /***/ 4466: /***/ (
+    /***/ 4478: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -53,7 +99,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(5977)
       );
-      const _loadablecontextsharedruntime = __webpack_require__(8452);
+      const _loadablecontextsharedruntime = __webpack_require__(5792);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -288,63 +334,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 4545: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
-      });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(7765);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(2406);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
-        () =>
-          __webpack_require__
-            .e(/* import() */ 5194)
-            .then(__webpack_require__.bind(__webpack_require__, 5194))
-            .then((mod) => mod.Hello),
-        {
-          loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 5194],
-          },
-        }
-      );
-      const Page = () =>
-        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
-          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
-          {
-            children: [
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
-                children: "testing next/dynamic size",
-              }),
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-                DynamicHello,
-                {}
-              ),
-            ],
-          }
-        );
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
-
-      /***/
-    },
-
-    /***/ 8452: /***/ (
+    /***/ 5792: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -371,24 +361,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 8931: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/dynamic",
-        function () {
-          return __webpack_require__(4545);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 8949: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6153: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -421,7 +394,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
         __webpack_require__(5977)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(4466)
+        __webpack_require__(4478)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -521,13 +494,40 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
 
       /***/
     },
+
+    /***/ 7444: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(6153);
+
+      /***/
+    },
+
+    /***/ 9805: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/dynamic",
+        function () {
+          return __webpack_require__(2839);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8931)
+      __webpack_exec__(9805)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [676],
   {
-    /***/ 4717: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/edge-ssr",
-        function () {
-          return __webpack_require__(7776);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7776: /***/ (
+    /***/ 170: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -37,13 +20,30 @@
 
       /***/
     },
+
+    /***/ 8079: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/edge-ssr",
+        function () {
+          return __webpack_require__(170);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(4717)
+      __webpack_exec__(8079)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5350],
   {
-    /***/ 943: /***/ (
+    /***/ 1177: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(2554);
+      module.exports = __webpack_require__(8366);
 
       /***/
     },
 
-    /***/ 3829: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/head",
-        function () {
-          return __webpack_require__(4662);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 4662: /***/ (
+    /***/ 1992: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -43,7 +26,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(7765);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(943);
+        __webpack_require__(1177);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
 
       /***/
     },
+
+    /***/ 8751: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/head",
+        function () {
+          return __webpack_require__(1992);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(3829)
+      __webpack_exec__(8751)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9804],
   {
-    /***/ 2452: /***/ (
+    /***/ 2227: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/hooks",
+        function () {
+          return __webpack_require__(2770);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 2770: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -59,30 +76,13 @@
 
       /***/
     },
-
-    /***/ 6105: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/hooks",
-        function () {
-          return __webpack_require__(2452);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6105)
+      __webpack_exec__(2227)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js

Diff too large to display

Diff for link-HASH.js
@@ -1,143 +1,82 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 1585: /***/ (module, exports, __webpack_require__) => {
+    /***/ 2346: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      Object.defineProperty(exports, "useIntersection", {
+      Object.defineProperty(exports, "errorOnce", {
         enumerable: true,
         get: function () {
-          return useIntersection;
+          return errorOnce;
         },
       });
-      const _react = __webpack_require__(5977);
-      const _requestidlecallback = __webpack_require__(356);
-      const hasIntersectionObserver =
-        typeof IntersectionObserver === "function";
-      const observers = new Map();
-      const idList = [];
-      function createObserver(options) {
-        const id = {
-          root: options.root || null,
-          margin: options.rootMargin || "",
-        };
-        const existing = idList.find(
-          (obj) => obj.root === id.root && obj.margin === id.margin
-        );
-        let instance;
-        if (existing) {
-          instance = observers.get(existing);
-          if (instance) {
-            return instance;
-          }
-        }
-        const elements = new Map();
-        const observer = new IntersectionObserver((entries) => {
-          entries.forEach((entry) => {
-            const callback = elements.get(entry.target);
-            const isVisible =
-              entry.isIntersecting || entry.intersectionRatio > 0;
-            if (callback && isVisible) {
-              callback(isVisible);
-            }
-          });
-        }, options);
-        instance = {
-          id,
-          observer,
-          elements,
-        };
-        idList.push(id);
-        observers.set(id, instance);
-        return instance;
-      }
-      function observe(element, callback, options) {
-        const { id, observer, elements } = createObserver(options);
-        elements.set(element, callback);
-        observer.observe(element);
-        return function unobserve() {
-          elements.delete(element);
-          observer.unobserve(element);
-          // Destroy observer when there's nothing left to watch:
-          if (elements.size === 0) {
-            observer.disconnect();
-            observers.delete(id);
-            const index = idList.findIndex(
-              (obj) => obj.root === id.root && obj.margin === id.margin
-            );
-            if (index > -1) {
-              idList.splice(index, 1);
-            }
-          }
-        };
-      }
-      function useIntersection(param) {
-        let { rootRef, rootMargin, disabled } = param;
-        const isDisabled = disabled || !hasIntersectionObserver;
-        const [visible, setVisible] = (0, _react.useState)(false);
-        const elementRef = (0, _react.useRef)(null);
-        const setElement = (0, _react.useCallback)((element) => {
-          elementRef.current = element;
-        }, []);
-        (0, _react.useEffect)(() => {
-          if (hasIntersectionObserver) {
-            if (isDisabled || visible) return;
-            const element = elementRef.current;
-            if (element && element.tagName) {
-              const unobserve = observe(
-                element,
-                (isVisible) => isVisible && setVisible(isVisible),
-                {
-                  root: rootRef == null ? void 0 : rootRef.current,
-                  rootMargin,
-                }
-              );
-              return unobserve;
-            }
-          } else {
-            if (!visible) {
-              const idleCallback = (0,
-              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
-              return () =>
-                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
-            }
-          }
-          // eslint-disable-next-line react-hooks/exhaustive-deps
-        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
-        const resetVisible = (0, _react.useCallback)(() => {
-          setVisible(false);
-        }, []);
-        return [setElement, visible, resetVisible];
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=use-intersection.js.map
+      let errorOnce = (_) => {};
+      if (false) {
+      } //# sourceMappingURL=error-once.js.map
 
       /***/
     },
 
-    /***/ 2621: /***/ (
+    /***/ 2783: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(5410);
+      module.exports = __webpack_require__(5926);
 
       /***/
     },
 
-    /***/ 5410: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4174: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
+      });
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(7765);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(2783);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_link__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      function aLink(props) {
+        return /*#__PURE__*/ (0,
+        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
+          children: [
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
+              children: "A Link page!",
+            }),
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
+              {
+                href: "/",
+                children: "Go to /",
+              }
+            ),
+          ],
+        });
+      }
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+
+      /***/
+    },
+
+    /***/ 5926: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -164,17 +103,17 @@
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(5977)
       );
-      const _resolvehref = __webpack_require__(224);
-      const _islocalurl = __webpack_require__(7746);
-      const _formaturl = __webpack_require__(315);
-      const _utils = __webpack_require__(8709);
-      const _addlocale = __webpack_require__(6358);
-      const _routercontextsharedruntime = __webpack_require__(4095);
-      const _useintersection = __webpack_require__(1585);
-      const _getdomainlocale = __webpack_require__(8802);
-      const _addbasepath = __webpack_require__(6151);
-      const _usemergedref = __webpack_require__(9100);
-      const _erroronce = __webpack_require__(9574);
+      const _resolvehref = __webpack_require__(6708);
+      const _islocalurl = __webpack_require__(6526);
+      const _formaturl = __webpack_require__(5575);
+      const _utils = __webpack_require__(3497);
+      const _addlocale = __webpack_require__(722);
+      const _routercontextsharedruntime = __webpack_require__(1235);
+      const _useintersection = __webpack_require__(8069);
+      const _getdomainlocale = __webpack_require__(9734);
+      const _addbasepath = __webpack_require__(4419);
+      const _usemergedref = __webpack_require__(6136);
+      const _erroronce = __webpack_require__(2346);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -563,43 +502,7 @@
       /***/
     },
 
-    /***/ 8802: /***/ (module, exports, __webpack_require__) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "getDomainLocale", {
-        enumerable: true,
-        get: function () {
-          return getDomainLocale;
-        },
-      });
-      const _normalizetrailingslash = __webpack_require__(1652);
-      const basePath =
-        /* unused pure expression or super */ null && (false || "");
-      function getDomainLocale(path, locale, locales, domainLocales) {
-        if (false) {
-        } else {
-          return false;
-        }
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=get-domain-locale.js.map
-
-      /***/
-    },
-
-    /***/ 9100: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6136: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -677,26 +580,7 @@
       /***/
     },
 
-    /***/ 9574: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
-        },
-      });
-      let errorOnce = (_) => {};
-      if (false) {
-      } //# sourceMappingURL=error-once.js.map
-
-      /***/
-    },
-
-    /***/ 9693: /***/ (
+    /***/ 7047: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -704,7 +588,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function () {
-          return __webpack_require__(9948);
+          return __webpack_require__(4174);
         },
       ]);
       if (false) {
@@ -713,48 +597,164 @@
       /***/
     },
 
-    /***/ 9948: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
+    /***/ 8069: /***/ (module, exports, __webpack_require__) => {
       "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
       });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(7765);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(2621);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_link__WEBPACK_IMPORTED_MODULE_1__
+      Object.defineProperty(exports, "useIntersection", {
+        enumerable: true,
+        get: function () {
+          return useIntersection;
+        },
+      });
+      const _react = __webpack_require__(5977);
+      const _requestidlecallback = __webpack_require__(3432);
+      const hasIntersectionObserver =
+        typeof IntersectionObserver === "function";
+      const observers = new Map();
+      const idList = [];
+      function createObserver(options) {
+        const id = {
+          root: options.root || null,
+          margin: options.rootMargin || "",
+        };
+        const existing = idList.find(
+          (obj) => obj.root === id.root && obj.margin === id.margin
         );
-
-      function aLink(props) {
-        return /*#__PURE__*/ (0,
-        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
-          children: [
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
-              children: "A Link page!",
-            }),
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
-              {
-                href: "/",
-                children: "Go to /",
-              }
-            ),
-          ],
+        let instance;
+        if (existing) {
+          instance = observers.get(existing);
+          if (instance) {
+            return instance;
+          }
+        }
+        const elements = new Map();
+        const observer = new IntersectionObserver((entries) => {
+          entries.forEach((entry) => {
+            const callback = elements.get(entry.target);
+            const isVisible =
+              entry.isIntersecting || entry.intersectionRatio > 0;
+            if (callback && isVisible) {
+              callback(isVisible);
+            }
+          });
+        }, options);
+        instance = {
+          id,
+          observer,
+          elements,
+        };
+        idList.push(id);
+        observers.set(id, instance);
+        return instance;
+      }
+      function observe(element, callback, options) {
+        const { id, observer, elements } = createObserver(options);
+        elements.set(element, callback);
+        observer.observe(element);
+        return function unobserve() {
+          elements.delete(element);
+          observer.unobserve(element);
+          // Destroy observer when there's nothing left to watch:
+          if (elements.size === 0) {
+            observer.disconnect();
+            observers.delete(id);
+            const index = idList.findIndex(
+              (obj) => obj.root === id.root && obj.margin === id.margin
+            );
+            if (index > -1) {
+              idList.splice(index, 1);
+            }
+          }
+        };
+      }
+      function useIntersection(param) {
+        let { rootRef, rootMargin, disabled } = param;
+        const isDisabled = disabled || !hasIntersectionObserver;
+        const [visible, setVisible] = (0, _react.useState)(false);
+        const elementRef = (0, _react.useRef)(null);
+        const setElement = (0, _react.useCallback)((element) => {
+          elementRef.current = element;
+        }, []);
+        (0, _react.useEffect)(() => {
+          if (hasIntersectionObserver) {
+            if (isDisabled || visible) return;
+            const element = elementRef.current;
+            if (element && element.tagName) {
+              const unobserve = observe(
+                element,
+                (isVisible) => isVisible && setVisible(isVisible),
+                {
+                  root: rootRef == null ? void 0 : rootRef.current,
+                  rootMargin,
+                }
+              );
+              return unobserve;
+            }
+          } else {
+            if (!visible) {
+              const idleCallback = (0,
+              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
+              return () =>
+                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
+            }
+          }
+          // eslint-disable-next-line react-hooks/exhaustive-deps
+        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
+        const resetVisible = (0, _react.useCallback)(() => {
+          setVisible(false);
+        }, []);
+        return [setElement, visible, resetVisible];
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
         });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=use-intersection.js.map
+
+      /***/
+    },
+
+    /***/ 9734: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "getDomainLocale", {
+        enumerable: true,
+        get: function () {
+          return getDomainLocale;
+        },
+      });
+      const _normalizetrailingslash = __webpack_require__(504);
+      const basePath =
+        /* unused pure expression or super */ null && (false || "");
+      function getDomainLocale(path, locale, locales, domainLocales) {
+        if (false) {
+        } else {
+          return false;
+        }
       }
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=get-domain-locale.js.map
 
       /***/
     },
@@ -764,7 +764,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9693)
+      __webpack_exec__(7047)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,34 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 3699: /***/ (
+    /***/ 1008: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(2817);
+
+      /***/
+    },
+
+    /***/ 6951: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/script",
+        function () {
+          return __webpack_require__(8889);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 8889: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +43,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(7765);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4802);
+        __webpack_require__(1008);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -48,40 +75,13 @@
 
       /***/
     },
-
-    /***/ 4802: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(8661);
-
-      /***/
-    },
-
-    /***/ 7861: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/script",
-        function () {
-          return __webpack_require__(3699);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(7861)
+      __webpack_exec__(6951)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 8863-HASH.js
@@ -1,8 +1,33 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [8863],
+  [7009],
   {
-    /***/ 22: /***/ (module, exports, __webpack_require__) => {
+    /***/ 414: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "AmpStateContext", {
+        enumerable: true,
+        get: function () {
+          return AmpStateContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2726);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2224)
+      );
+      const AmpStateContext = _react.default.createContext({});
+      if (false) {
+      } //# sourceMappingURL=amp-context.shared-runtime.js.map
+
+      /***/
+    },
+
+    /***/ 1912: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -12,7 +37,7 @@
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(2786);
+      const _react = __webpack_require__(2224);
       function useMergedRef(refA, refB) {
         const cleanupA = (0, _react.useRef)(null);
         const cleanupB = (0, _react.useRef)(null);
@@ -78,56 +103,99 @@
       /***/
     },
 
-    /***/ 936: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2843: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        VALID_LOADERS: function () {
-          return VALID_LOADERS;
+      Object.defineProperty(exports, "RouterContext", {
+        enumerable: true,
+        get: function () {
+          return RouterContext;
         },
-        imageConfigDefault: function () {
-          return imageConfigDefault;
+      });
+      const _interop_require_default = __webpack_require__(2726);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2224)
+      );
+      const RouterContext = _react.default.createContext(null);
+      if (false) {
+      } //# sourceMappingURL=router-context.shared-runtime.js.map
+
+      /***/
+    },
+
+    /***/ 3003: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
+          return _default;
         },
       });
-      const VALID_LOADERS = [
-        "default",
-        "imgix",
-        "cloudinary",
-        "akamai",
-        "custom",
-      ];
-      const imageConfigDefault = {
-        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-        imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
-        path: "/_next/image",
-        loader: "default",
-        loaderFile: "",
-        domains: [],
-        disableStaticImages: false,
-        minimumCacheTTL: 60,
-        formats: ["image/webp"],
-        dangerouslyAllowSVG: false,
-        contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
-        contentDispositionType: "attachment",
-        localPatterns: undefined,
-        remotePatterns: [],
-        qualities: undefined,
-        unoptimized: false,
-      }; //# sourceMappingURL=image-config.js.map
+      const DEFAULT_Q = 75;
+      function defaultLoader(param) {
+        let { config, src, width, quality } = param;
+        var _config_qualities;
+        if (false) {
+        }
+        const q =
+          quality ||
+          ((_config_qualities = config.qualities) == null
+            ? void 0
+            : _config_qualities.reduce((prev, cur) =>
+                Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q)
+                  ? cur
+                  : prev
+              )) ||
+          DEFAULT_Q;
+        return (
+          config.path +
+          "?url=" +
+          encodeURIComponent(src) +
+          "&w=" +
+          width +
+          "&q=" +
+          q +
+          (src.startsWith("/_next/static/media/") && false ? 0 : "")
+        );
+      }
+      // We use this to determine if the import is the default loader
+      // or a custom loader defined by the user in next.config.js
+      defaultLoader.__next_img_default = true;
+      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
 
       /***/
     },
 
-    /***/ 1268: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3810: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "isInAmpMode", {
+        enumerable: true,
+        get: function () {
+          return isInAmpMode;
+        },
+      });
+      function isInAmpMode(param) {
+        let {
+          ampFirst = false,
+          hybrid = false,
+          hasQuery = false,
+        } = param === void 0 ? {} : param;
+        return ampFirst || (hybrid && hasQuery);
+      } //# sourceMappingURL=amp-mode.js.map
+
+      /***/
+    },
+
+    /***/ 5218: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -181,7 +249,7 @@
       /***/
     },
 
-    /***/ 1796: /***/ (module, exports, __webpack_require__) => {
+    /***/ 5402: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -202,19 +270,19 @@
           return defaultHead;
         },
       });
-      const _interop_require_default = __webpack_require__(8182);
-      const _interop_require_wildcard = __webpack_require__(8319);
-      const _jsxruntime = __webpack_require__(1050);
+      const _interop_require_default = __webpack_require__(2726);
+      const _interop_require_wildcard = __webpack_require__(2527);
+      const _jsxruntime = __webpack_require__(8204);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(2786)
+        __webpack_require__(2224)
       );
       const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5581)
+        __webpack_require__(9319)
       );
-      const _ampcontextsharedruntime = __webpack_require__(3800);
-      const _headmanagercontextsharedruntime = __webpack_require__(4950);
-      const _ampmode = __webpack_require__(7824);
-      const _warnonce = __webpack_require__(2854);
+      const _ampcontextsharedruntime = __webpack_require__(414);
+      const _headmanagercontextsharedruntime = __webpack_require__(3100);
+      const _ampmode = __webpack_require__(3810);
+      const _warnonce = __webpack_require__(4504);
       function defaultHead(inAmpMode) {
         if (inAmpMode === void 0) inAmpMode = false;
         const head = [
@@ -379,7 +447,7 @@
       /***/
     },
 
-    /***/ 2843: /***/ (
+    /***/ 6745: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -393,9 +461,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(2854);
-      const _imageblursvg = __webpack_require__(1268);
-      const _imageconfig = __webpack_require__(936);
+      const _warnonce = __webpack_require__(4504);
+      const _imageblursvg = __webpack_require__(5218);
+      const _imageconfig = __webpack_require__(9278);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -823,245 +891,7 @@
       /***/
     },
 
-    /***/ 3800: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "AmpStateContext", {
-        enumerable: true,
-        get: function () {
-          return AmpStateContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(8182);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2786)
-      );
-      const AmpStateContext = _react.default.createContext({});
-      if (false) {
-      } //# sourceMappingURL=amp-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 5581: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return SideEffect;
-        },
-      });
-      const _react = __webpack_require__(2786);
-      const isServer = "object" === "undefined";
-      const useClientOnlyLayoutEffect = isServer
-        ? () => {}
-        : _react.useLayoutEffect;
-      const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
-      function SideEffect(props) {
-        const { headManager, reduceComponentsToState } = props;
-        function emitChange() {
-          if (headManager && headManager.mountedInstances) {
-            const headElements = _react.Children.toArray(
-              Array.from(headManager.mountedInstances).filter(Boolean)
-            );
-            headManager.updateHead(
-              reduceComponentsToState(headElements, props)
-            );
-          }
-        }
-        if (isServer) {
-          var _headManager_mountedInstances;
-          headManager == null
-            ? void 0
-            : (_headManager_mountedInstances = headManager.mountedInstances) ==
-              null
-            ? void 0
-            : _headManager_mountedInstances.add(props.children);
-          emitChange();
-        }
-        useClientOnlyLayoutEffect(() => {
-          var _headManager_mountedInstances;
-          headManager == null
-            ? void 0
-            : (_headManager_mountedInstances = headManager.mountedInstances) ==
-              null
-            ? void 0
-            : _headManager_mountedInstances.add(props.children);
-          return () => {
-            var _headManager_mountedInstances;
-            headManager == null
-              ? void 0
-              : (_headManager_mountedInstances =
-                  headManager.mountedInstances) == null
-              ? void 0
-              : _headManager_mountedInstances.delete(props.children);
-          };
-        });
-        // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
-        // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
-        // being rendered, we only trigger the method from the last one.
-        // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
-        // singleton in the layout effect pass, and actually trigger it in the effect pass.
-        useClientOnlyLayoutEffect(() => {
-          if (headManager) {
-            headManager._pendingUpdate = emitChange;
-          }
-          return () => {
-            if (headManager) {
-              headManager._pendingUpdate = emitChange;
-            }
-          };
-        });
-        useClientOnlyEffect(() => {
-          if (headManager && headManager._pendingUpdate) {
-            headManager._pendingUpdate();
-            headManager._pendingUpdate = null;
-          }
-          return () => {
-            if (headManager && headManager._pendingUpdate) {
-              headManager._pendingUpdate();
-              headManager._pendingUpdate = null;
-            }
-          };
-        });
-        return null;
-      } //# sourceMappingURL=side-effect.js.map
-
-      /***/
-    },
-
-    /***/ 7053: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "RouterContext", {
-        enumerable: true,
-        get: function () {
-          return RouterContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(8182);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2786)
-      );
-      const RouterContext = _react.default.createContext(null);
-      if (false) {
-      } //# sourceMappingURL=router-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 7281: /***/ (__unused_webpack_module, exports) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return _default;
-        },
-      });
-      const DEFAULT_Q = 75;
-      function defaultLoader(param) {
-        let { config, src, width, quality } = param;
-        var _config_qualities;
-        if (false) {
-        }
-        const q =
-          quality ||
-          ((_config_qualities = config.qualities) == null
-            ? void 0
-            : _config_qualities.reduce((prev, cur) =>
-                Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q)
-                  ? cur
-                  : prev
-              )) ||
-          DEFAULT_Q;
-        return (
-          config.path +
-          "?url=" +
-          encodeURIComponent(src) +
-          "&w=" +
-          width +
-          "&q=" +
-          q +
-          (src.startsWith("/_next/static/media/") && false ? 0 : "")
-        );
-      }
-      // We use this to determine if the import is the default loader
-      // or a custom loader defined by the user in next.config.js
-      defaultLoader.__next_img_default = true;
-      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
-
-      /***/
-    },
-
-    /***/ 7480: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "ImageConfigContext", {
-        enumerable: true,
-        get: function () {
-          return ImageConfigContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(8182);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2786)
-      );
-      const _imageconfig = __webpack_require__(936);
-      const ImageConfigContext = _react.default.createContext(
-        _imageconfig.imageConfigDefault
-      );
-      if (false) {
-      } //# sourceMappingURL=image-config-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 7824: /***/ (__unused_webpack_module, exports) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "isInAmpMode", {
-        enumerable: true,
-        get: function () {
-          return isInAmpMode;
-        },
-      });
-      function isInAmpMode(param) {
-        let {
-          ampFirst = false,
-          hybrid = false,
-          hasQuery = false,
-        } = param === void 0 ? {} : param;
-        return ampFirst || (hybrid && hasQuery);
-      } //# sourceMappingURL=amp-mode.js.map
-
-      /***/
-    },
-
-    /***/ 8863: /***/ (module, exports, __webpack_require__) => {
+    /***/ 7009: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -1072,27 +902,27 @@
           return Image;
         },
       });
-      const _interop_require_default = __webpack_require__(8182);
-      const _interop_require_wildcard = __webpack_require__(8319);
-      const _jsxruntime = __webpack_require__(1050);
+      const _interop_require_default = __webpack_require__(2726);
+      const _interop_require_wildcard = __webpack_require__(2527);
+      const _jsxruntime = __webpack_require__(8204);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(2786)
+        __webpack_require__(2224)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1407)
+        __webpack_require__(1345)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1796)
+        __webpack_require__(5402)
       );
-      const _getimgprops = __webpack_require__(2843);
-      const _imageconfig = __webpack_require__(936);
-      const _imageconfigcontextsharedruntime = __webpack_require__(7480);
-      const _warnonce = __webpack_require__(2854);
-      const _routercontextsharedruntime = __webpack_require__(7053);
+      const _getimgprops = __webpack_require__(6745);
+      const _imageconfig = __webpack_require__(9278);
+      const _imageconfigcontextsharedruntime = __webpack_require__(9690);
+      const _warnonce = __webpack_require__(4504);
+      const _routercontextsharedruntime = __webpack_require__(2843);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7281)
+        __webpack_require__(3003)
       );
-      const _usemergedref = __webpack_require__(22);
+      const _usemergedref = __webpack_require__(1912);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -1417,5 +1247,175 @@
 
       /***/
     },
+
+    /***/ 9278: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      0 && 0;
+      function _export(target, all) {
+        for (var name in all)
+          Object.defineProperty(target, name, {
+            enumerable: true,
+            get: all[name],
+          });
+      }
+      _export(exports, {
+        VALID_LOADERS: function () {
+          return VALID_LOADERS;
+        },
+        imageConfigDefault: function () {
+          return imageConfigDefault;
+        },
+      });
+      const VALID_LOADERS = [
+        "default",
+        "imgix",
+        "cloudinary",
+        "akamai",
+        "custom",
+      ];
+      const imageConfigDefault = {
+        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+        imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
+        path: "/_next/image",
+        loader: "default",
+        loaderFile: "",
+        domains: [],
+        disableStaticImages: false,
+        minimumCacheTTL: 60,
+        formats: ["image/webp"],
+        dangerouslyAllowSVG: false,
+        contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
+        contentDispositionType: "attachment",
+        localPatterns: undefined,
+        remotePatterns: [],
+        qualities: undefined,
+        unoptimized: false,
+      }; //# sourceMappingURL=image-config.js.map
+
+      /***/
+    },
+
+    /***/ 9319: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
+          return SideEffect;
+        },
+      });
+      const _react = __webpack_require__(2224);
+      const isServer = "object" === "undefined";
+      const useClientOnlyLayoutEffect = isServer
+        ? () => {}
+        : _react.useLayoutEffect;
+      const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
+      function SideEffect(props) {
+        const { headManager, reduceComponentsToState } = props;
+        function emitChange() {
+          if (headManager && headManager.mountedInstances) {
+            const headElements = _react.Children.toArray(
+              Array.from(headManager.mountedInstances).filter(Boolean)
+            );
+            headManager.updateHead(
+              reduceComponentsToState(headElements, props)
+            );
+          }
+        }
+        if (isServer) {
+          var _headManager_mountedInstances;
+          headManager == null
+            ? void 0
+            : (_headManager_mountedInstances = headManager.mountedInstances) ==
+              null
+            ? void 0
+            : _headManager_mountedInstances.add(props.children);
+          emitChange();
+        }
+        useClientOnlyLayoutEffect(() => {
+          var _headManager_mountedInstances;
+          headManager == null
+            ? void 0
+            : (_headManager_mountedInstances = headManager.mountedInstances) ==
+              null
+            ? void 0
+            : _headManager_mountedInstances.add(props.children);
+          return () => {
+            var _headManager_mountedInstances;
+            headManager == null
+              ? void 0
+              : (_headManager_mountedInstances =
+                  headManager.mountedInstances) == null
+              ? void 0
+              : _headManager_mountedInstances.delete(props.children);
+          };
+        });
+        // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
+        // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
+        // being rendered, we only trigger the method from the last one.
+        // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
+        // singleton in the layout effect pass, and actually trigger it in the effect pass.
+        useClientOnlyLayoutEffect(() => {
+          if (headManager) {
+            headManager._pendingUpdate = emitChange;
+          }
+          return () => {
+            if (headManager) {
+              headManager._pendingUpdate = emitChange;
+            }
+          };
+        });
+        useClientOnlyEffect(() => {
+          if (headManager && headManager._pendingUpdate) {
+            headManager._pendingUpdate();
+            headManager._pendingUpdate = null;
+          }
+          return () => {
+            if (headManager && headManager._pendingUpdate) {
+              headManager._pendingUpdate();
+              headManager._pendingUpdate = null;
+            }
+          };
+        });
+        return null;
+      } //# sourceMappingURL=side-effect.js.map
+
+      /***/
+    },
+
+    /***/ 9690: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "ImageConfigContext", {
+        enumerable: true,
+        get: function () {
+          return ImageConfigContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2726);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2224)
+      );
+      const _imageconfig = __webpack_require__(9278);
+      const ImageConfigContext = _react.default.createContext(
+        _imageconfig.imageConfigDefault
+      );
+      if (false) {
+      } //# sourceMappingURL=image-config-context.shared-runtime.js.map
+
+      /***/
+    },
   },
 ]);
Diff for 9304-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for main-app-HASH.js
@@ -1,64 +1,64 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4977],
   {
-    /***/ 152: /***/ (
+    /***/ 3550: /***/ () => {
+      /* (ignored) */
+      /***/
+    },
+
+    /***/ 8980: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2374, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2816, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2673, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3319, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4710, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3564, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9138, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4932, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9207, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4549, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4379, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3877, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 631, 23)
+        __webpack_require__.t.bind(__webpack_require__, 6769, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6231, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5521, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4706, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9520, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7121, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5947, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6594, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1720, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2231)
+        __webpack_require__.bind(__webpack_require__, 977)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9683, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7569, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 174, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1504, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 3496, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4186, 23)
       );
 
       /***/
     },
-
-    /***/ 3228: /***/ () => {
-      /* (ignored) */
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
@@ -66,8 +66,8 @@
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(
       0,
-      [5862, 9304],
-      () => (__webpack_exec__(7007), __webpack_exec__(152))
+      [3008, 2426],
+      () => (__webpack_exec__(6401), __webpack_exec__(8980))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Commit: 1c8fe0bcf20304ccdece3e33db4b9899e7952f9f

@lukesandberg lukesandberg changed the base branch from dead_exports to graphite-base/82764 August 19, 2025 21:57
@lukesandberg lukesandberg changed the base branch from graphite-base/82764 to use_dead_exports_analysis August 19, 2025 21:58
@lukesandberg lukesandberg force-pushed the use_dead_exports_analysis branch from 5765f57 to 30e486b Compare August 19, 2025 22:15
@lukesandberg lukesandberg force-pushed the use_dead_exports_analysis branch from 30e486b to 92b2814 Compare August 19, 2025 22:24
@lukesandberg lukesandberg force-pushed the use_dead_exports_analysis branch 2 times, most recently from a9c28f0 to acddcc3 Compare August 20, 2025 17:25
}

function createSetter(obj: Record<string | symbol, any>, key: string | symbol) {
return (v) => {

@vercel vercel Bot Aug 20, 2025

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
return (v) => {
return (v: unknown) => {

The createSetter function parameter v lacks a type annotation, making it implicitly any instead of the expected unknown type used elsewhere in the codebase.

View Details

Analysis

The createSetter function is defined with an untyped parameter v in the returned setter function:

function createSetter(obj: Record<string | symbol, any>, key: string | symbol) {
  return (v) => {  // 'v' parameter is implicitly 'any'
    obj[key] = v
  }
}

This is inconsistent with the EsmBindings type definition which explicitly types setter functions as ((v: unknown) => void). The missing type annotation makes the parameter implicitly any, which reduces type safety and could allow incorrect values to be passed without TypeScript catching the error. This is particularly important for ES module re-exports where type safety helps ensure correct module binding behavior.


Recommendation

Add explicit type annotation to match the expected signature:

function createSetter(obj: Record<string | symbol, any>, key: string | symbol) {
  return (v: unknown) => {
    obj[key] = v
  }
}

@codspeed-hq

codspeed-hq Bot commented Aug 20, 2025

Copy link
Copy Markdown

CodSpeed Performance Report

Merging #82764 will not alter performance

Comparing re_exports (4af1ad7) with canary (b7da0c5)1

Summary

✅ 9 untouched benchmarks

Footnotes

  1. No successful run was found on use_dead_exports_analysis (0cc8742) during the generation of this report, so canary (b7da0c5) was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@github-actions github-actions Bot added the locked label Sep 4, 2025
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Sep 4, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

created-by: Turbopack team PRs by the Turbopack team. locked Turbopack Related to Turbopack with Next.js.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants