Skip to content

Conversation

@huozhi
Copy link
Member

@huozhi huozhi commented Oct 31, 2024

No description provided.

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. tests labels Oct 31, 2024
Copy link
Member Author

huozhi commented Oct 31, 2024

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @huozhi and the rest of your teammates on Graphite Graphite

@ijjk
Copy link
Member

ijjk commented Oct 31, 2024

Failing test suites

Commit: 6510d98

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

  • Error overlay - RSC build errors > Skipped in webpack > should handle successive HMR changes with errors correctly
Expand output

● Error overlay - RSC build errors › Skipped in webpack › should handle successive HMR changes with errors correctly

Application is in inconsistent state: timeout.

  91 |           }
  92 |           if (status !== 'pending') {
> 93 |             throw new Error(`Application is in inconsistent state: ${status}.`)
     |                   ^
  94 |           }
  95 |
  96 |           await waitFor(30)

  at Object.patch (lib/development-sandbox.ts:93:19)
  at Object.<anonymous> (development/acceptance-app/app-hmr-changes.test.ts:44:9)

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

Application is in inconsistent state: timeout.

  91 |           }
  92 |           if (status !== 'pending') {
> 93 |             throw new Error(`Application is in inconsistent state: ${status}.`)
     |                   ^
  94 |           }
  95 |
  96 |           await waitFor(30)

  at Object.patch (lib/development-sandbox.ts:93:19)
  at Object.<anonymous> (development/acceptance-app/editor-links.test.ts:60:5)

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

pnpm test-dev-turbo test/development/acceptance-app/error-message-url.test.ts (turbopack)

  • Error overlay - error message urls > should be possible to click url in build error
Expand output

● Error overlay - error message urls › should be possible to click url in build error

Application is in inconsistent state: timeout.

  91 |           }
  92 |           if (status !== 'pending') {
> 93 |             throw new Error(`Application is in inconsistent state: ${status}.`)
     |                   ^
  94 |           }
  95 |
  96 |           await waitFor(30)

  at Object.patch (lib/development-sandbox.ts:93:19)
  at Object.<anonymous> (development/acceptance-app/error-message-url.test.ts:17:5)

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

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

  • Error Overlay version staleness > should show version staleness in build error
Expand output

● Error Overlay version staleness › should show version staleness in build error

Application is in inconsistent state: timeout.

  91 |           }
  92 |           if (status !== 'pending') {
> 93 |             throw new Error(`Application is in inconsistent state: ${status}.`)
     |                   ^
  94 |           }
  95 |
  96 |           await waitFor(30)

  at Object.patch (lib/development-sandbox.ts:93:19)
  at Object.<anonymous> (development/acceptance-app/version-staleness.test.ts:114:5)

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

pnpm test-dev test/development/app-dir/missing-required-html-tags/index.test.ts

  • app-dir - missing required html tags > should hmr when you fix the error
Expand output

● app-dir - missing required html tags › should hmr when you fix the error

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

Expected: "The following tags are missing in the Root Layout: <html>.
Read more at https://nextjs.org/docs/messages/missing-root-layout-tags"
Received: null

  31 |     // Wait for the HMR to apply and the updated error to show.
  32 |     await retry(async () => {
> 33 |       expect(await getRedboxDescription(browser)).toEqual(outdent`
     |                                                   ^
  34 |         The following tags are missing in the Root Layout: <html>.
  35 |         Read more at https://nextjs.org/docs/messages/missing-root-layout-tags
  36 |       `)

  at toEqual (development/app-dir/missing-required-html-tags/index.test.ts:33:51)
  at retry (lib/next-test-utils.ts:806:14)
  at Object.<anonymous> (development/app-dir/missing-required-html-tags/index.test.ts:32:5)

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

pnpm test test/integration/next-image-new/app-dir-image-from-node-modules/test/index.test.ts (turbopack)

  • Image Component from node_modules development mode > should apply image config for node_modules
Expand output

● Image Component from node_modules development mode › should apply image config for node_modules

thrown: "Exceeded timeout of 60000 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."

  15 |
  16 | function runTests() {
> 17 |   it('should apply image config for node_modules', async () => {
     |   ^
  18 |     const browser = await webdriver(appPort, '/')
  19 |     const src = await browser
  20 |       .elementById('image-from-node-modules')

  at it (integration/next-image-new/app-dir-image-from-node-modules/test/index.test.ts:17:3)
  at runTests (integration/next-image-new/app-dir-image-from-node-modules/test/index.test.ts:58:3)
  at Object.describe (integration/next-image-new/app-dir-image-from-node-modules/test/index.test.ts:49:1)

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

pnpm test test/integration/next-image-new/app-dir/test/static.test.ts (turbopack)

  • Static Image Component Tests > development mode > Should allow an image with a static src to omit height and width
  • Static Image Component Tests > development mode > should load direct imported image
Expand output

● Static Image Component Tests › development mode › Should allow an image with a static src to omit height and width

thrown: "Exceeded timeout of 60000 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."

  23 |
  24 | const runTests = (isDev) => {
> 25 |   it('Should allow an image with a static src to omit height and width', async () => {
     |   ^
  26 |     expect(await browser.elementById('basic-static')).toBeTruthy()
  27 |     expect(await browser.elementById('blur-png')).toBeTruthy()
  28 |     expect(await browser.elementById('blur-webp')).toBeTruthy()

  at it (integration/next-image-new/app-dir/test/static.test.ts:25:3)
  at runTests (integration/next-image-new/app-dir/test/static.test.ts:284:7)
  at integration/next-image-new/app-dir/test/static.test.ts:271:58
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:253:1)

● Static Image Component Tests › development mode › should load direct imported image

thrown: "Exceeded timeout of 60000 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."

  211 |   })
  212 |
> 213 |   it('should load direct imported image', async () => {
      |   ^
  214 |     const src = await browser.elementById('basic-static').getAttribute('src')
  215 |     expect(src).toMatch(
  216 |       /_next\/image\?url=%2F_next%2Fstatic%2Fmedia%2Ftest-rect(.+)\.jpg&w=828&q=75/

  at it (integration/next-image-new/app-dir/test/static.test.ts:213:3)
  at runTests (integration/next-image-new/app-dir/test/static.test.ts:284:7)
  at integration/next-image-new/app-dir/test/static.test.ts:271:58
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:253:1)

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

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

  • Error overlay for hydration errors in App router > should show correct hydration error when extra attributes set on server
  • Error overlay for hydration errors in App router > should show correct hydration error when server renders an extra text node in an invalid place
  • Error overlay for hydration errors in App router > should show correct hydration error when server renders an extra whitespace in an invalid place
  • Error overlay for hydration errors in App router > should only show one hydration error when bad nesting happened - p under p
  • Error overlay for hydration errors in App router > should only show one hydration error when bad nesting happened - div under p
  • Error overlay for hydration errors in App router > should only show one hydration error when bad nesting happened - div > tr
  • Error overlay for hydration errors in App router > should show the highlighted bad nesting html snippet when bad nesting happened
  • Error overlay for hydration errors in App router > should show error if script is directly placed under html instead of body
Expand output

● Error overlay for hydration errors in App router › should show correct hydration error when extra attributes set on server

page.waitForSelector: Target crashed 
Call log:
  - waiting for locator('[data-nextjs-toast]')

  423 |     return this.chain(() => {
  424 |       return page
> 425 |         .waitForSelector(selector, { timeout, state: 'attached' })
      |          ^
  426 |         .then(async (el) => {
  427 |           // it seems selenium waits longer and tests rely on this behavior
  428 |           // so we wait for the load event fire before returning

  at waitForSelector (lib/browsers/playwright.ts:425:10)

● Error overlay for hydration errors in App router › should show correct hydration error when server renders an extra text node in an invalid place

page.waitForSelector: Timeout 5000ms exceeded.
Call log:
  - waiting for locator('[data-nextjs-toast]')

  423 |     return this.chain(() => {
  424 |       return page
> 425 |         .waitForSelector(selector, { timeout, state: 'attached' })
      |          ^
  426 |         .then(async (el) => {
  427 |           // it seems selenium waits longer and tests rely on this behavior
  428 |           // so we wait for the load event fire before returning

  at waitForSelector (lib/browsers/playwright.ts:425:10)

● Error overlay for hydration errors in App router › should show correct hydration error when server renders an extra whitespace in an invalid place

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Error overlay for hydration errors in App router should show correct hydration error when server renders an extra whitespace in an invalid place 1`

- Snapshot  - 21
+ Received  +  1

- In HTML, whitespace text nodes cannot be a child of <table>. Make sure you don't have any extra whitespace between tags on each line of your source code.
- This will cause a hydration error.
-
-   ...
-     <RenderFromTemplateContext>
-       <ScrollAndFocusHandler segmentPath={[...]}>
-         <InnerScrollAndFocusHandler segmentPath={[...]} focusAndScrollRef={{apply:false, ...}}>
-           <ErrorBoundary errorComponent={undefined} errorStyles={undefined} errorScripts={undefined}>
-             <LoadingBoundary hasLoading={false} loading={undefined} loadingStyles={undefined} loadingScripts={undefined}>
-               <NotFoundBoundary notFound={[...]} notFoundStyles={[...]}>
-                 <NotFoundErrorBoundary pathname="/" notFound={[...]} notFoundStyles={[...]} asNotFound={undefined} ...>
-                   <RedirectBoundary>
-                     <RedirectErrorBoundary router={{...}}>
-                       <InnerLayoutRouter parallelRouterKey="children" url="/" tree={[...]} childNodes={Map} ...>
-                         <ClientPageRoot Component={function Page} searchParams={{}} params={{}}>
-                           <Page params={Promise} searchParams={Promise}>
- >                           <table>
- >                             {" "}
-                               ...
-                         ...
-
+ TypeError: _react.default.captureOwnerStack is not a function

  448 |     })
  449 |
> 450 |     expect(await session.getRedboxDescription()).toMatchInlineSnapshot(`
      |                                                  ^
  451 |       "In HTML, whitespace text nodes cannot be a child of <table>. Make sure you don't have any extra whitespace between tags on each line of your source code.
  452 |       This will cause a hydration error.
  453 |

  at Object.toMatchInlineSnapshot (development/acceptance-app/hydration-error.test.ts:450:50)

● Error overlay for hydration errors in App router › should only show one hydration error when bad nesting happened - p under p

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

Expected: 2
Received: 1

  595 |
  596 |     await session.assertHasRedbox()
> 597 |     expect(await getRedboxTotalErrorCount(browser)).toBe(2)
      |                                                     ^
  598 |
  599 |     const description = await session.getRedboxDescription()
  600 |     expect(description).toContain(

  at Object.toBe (development/acceptance-app/hydration-error.test.ts:597:53)

● Error overlay for hydration errors in App router › should only show one hydration error when bad nesting happened - div under p

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

Expected: 2
Received: 1

  655 |
  656 |     await session.assertHasRedbox()
> 657 |     expect(await getRedboxTotalErrorCount(browser)).toBe(2)
      |                                                     ^
  658 |
  659 |     const description = await session.getRedboxDescription()
  660 |     expect(description).toContain(

  at Object.toBe (development/acceptance-app/hydration-error.test.ts:657:53)

● Error overlay for hydration errors in App router › should only show one hydration error when bad nesting happened - div > tr

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

Expected: 2
Received: 1

  695 |
  696 |     await session.assertHasRedbox()
> 697 |     expect(await getRedboxTotalErrorCount(browser)).toBe(2)
      |                                                     ^
  698 |
  699 |     const description = await session.getRedboxDescription()
  700 |     expect(description).toEqual(outdent`

  at Object.toBe (development/acceptance-app/hydration-error.test.ts:697:53)

● Error overlay for hydration errors in App router › should show the highlighted bad nesting html snippet when bad nesting happened

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

Expected: 2
Received: 1

  750 |
  751 |     await session.assertHasRedbox()
> 752 |     expect(await getRedboxTotalErrorCount(browser)).toBe(2)
      |                                                     ^
  753 |
  754 |     const description = await session.getRedboxDescription()
  755 |     expect(description).toContain(

  at Object.toBe (development/acceptance-app/hydration-error.test.ts:752:53)

● Error overlay for hydration errors in App router › should show error if script is directly placed under html instead of body

page.waitForSelector: Timeout 5000ms exceeded.
Call log:
  - waiting for locator('[data-nextjs-toast]')

  423 |     return this.chain(() => {
  424 |       return page
> 425 |         .waitForSelector(selector, { timeout, state: 'attached' })
      |          ^
  426 |         .then(async (el) => {
  427 |           // it seems selenium waits longer and tests rely on this behavior
  428 |           // so we wait for the load event fire before returning

  at waitForSelector (lib/browsers/playwright.ts:425:10)

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

pnpm test test/integration/next-image-new/app-dir/test/index.test.ts

  • Image Component Default Tests > development mode > should load the images
  • Image Component Default Tests > development mode > should update the image on src change
  • Image Component Default Tests > development mode > should callback onLoadingComplete when image is fully loaded
  • Image Component Default Tests > development mode > should callback native onError when error occurred while loading image
  • Image Component Default Tests > development mode > should callback native onError even when error before hydration
  • Image Component Default Tests > development mode > should work with image with blob src
  • Image Component Default Tests > development mode > should work with sizes and automatically use responsive srcset
  • Image Component Default Tests > development mode > should render no wrappers or sizers
  • Image Component Default Tests > development mode > should lazy load with placeholder=blur
  • Image Component Default Tests > development mode > should handle the styles prop appropriately
  • Image Component Default Tests > development mode > should show missing src error
  • Image Component Default Tests > development mode > should show empty string src error
  • Image Component Default Tests > development mode > should show null src error
  • Image Component Default Tests > development mode > should show missing alt error
  • Image Component Default Tests > development mode > should warn when using a very small image with placeholder=blur
  • Image Component Default Tests > development mode > should not warn when Image is child of p
  • Image Component Default Tests > development mode > should warn when priority prop is missing on LCP image
  • Image Component Default Tests > development mode > should warn when loader is missing width
  • Image Component Default Tests > development mode > should not warn when svg, even if with loader prop or without
  • Image Component Default Tests > development mode > should warn at most once even after state change
  • Image Component Default Tests > development mode > should correctly ignore prose styles
  • Image Component Default Tests > development mode > should apply filter style after image loads
  • Image Component Default Tests > development mode > should remove blurry placeholder after image loads
  • Image Component Default Tests > development mode > Fill-mode tests > should include a data-attribute on fill images
  • Image Component Default Tests > development mode > Fill-mode tests > should add position:absolute to fill images
  • Image Component Default Tests > development mode > Fill-mode tests > should add 100% width and height to fill images
  • Image Component Default Tests > development mode > Fill-mode tests > should add position styles to fill images
  • Image Component Default Tests > development mode > Fill-mode tests > should log warnings when using fill mode incorrectly
Expand output

● Image Component Default Tests › development mode › should load the images

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

Expected: true
Received: false

   97 |           `http://localhost:${appPort}/_next/image?url=%2Ftest.jpg&w=828&q=75`
   98 |         )
>  99 |       ).toBe(true)
      |         ^
  100 |     } finally {
  101 |       if (browser) {
  102 |         await browser.close()

  at Object.toBe (integration/next-image-new/app-dir/test/index.test.ts:99:9)

● Image Component Default Tests › development mode › should update the image on src change

TIMED OUT: /test\.jpg/

null

undefined

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:281:7)

● Image Component Default Tests › development mode › should callback onLoadingComplete when image is fully loaded

TIMED OUT: /test(.*)jpg/

null

undefined

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:306:5)

● Image Component Default Tests › development mode › should callback native onError when error occurred while loading image

TIMED OUT: no error occurred for img1

null

undefined

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:493:5)

● Image Component Default Tests › development mode › should callback native onError even when error before hydration

TIMED OUT: error state

null

undefined

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:525:5)

● Image Component Default Tests › development mode › should work with image with blob src

TIMED OUT: /^blob:/

null

undefined

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:536:7)

● Image Component Default Tests › development mode › should work with sizes and automatically use responsive srcset

thrown: "Exceeded timeout of 60000 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."

  593 |   })
  594 |
> 595 |   it('should work with sizes and automatically use responsive srcset', async () => {
      |   ^
  596 |     const browser = await webdriver(appPort, '/sizes')
  597 |     const id = 'sizes1'
  598 |     expect(await getSrc(browser, id)).toBe(

  at it (integration/next-image-new/app-dir/test/index.test.ts:595:3)
  at runTests (integration/next-image-new/app-dir/test/index.test.ts:1649:7)
  at integration/next-image-new/app-dir/test/index.test.ts:1638:58
  at Object.describe (integration/next-image-new/app-dir/test/index.test.ts:1637:1)

● Image Component Default Tests › development mode › should render no wrappers or sizers

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

Expected: 1
Received: null

  615 |         `document.getElementById('image-container1').children.length`
  616 |       )
> 617 |       expect(numberOfChildren).toBe(1)
      |                                ^
  618 |       const childElementType = await browser.eval(
  619 |         `document.getElementById('image-container1').children[0].nodeName`
  620 |       )

  at Object.toBe (integration/next-image-new/app-dir/test/index.test.ts:617:32)

● Image Component Default Tests › development mode › should lazy load with placeholder=blur

thrown: "Exceeded timeout of 60000 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."

  678 |   })
  679 |
> 680 |   it('should lazy load with placeholder=blur', async () => {
      |   ^
  681 |     const browser = await webdriver(appPort, '/placeholder-blur')
  682 |
  683 |     // blur1

  at it (integration/next-image-new/app-dir/test/index.test.ts:680:3)
  at runTests (integration/next-image-new/app-dir/test/index.test.ts:1649:7)
  at integration/next-image-new/app-dir/test/index.test.ts:1638:58
  at Object.describe (integration/next-image-new/app-dir/test/index.test.ts:1637:1)

● Image Component Default Tests › development mode › should handle the styles prop appropriately

thrown: "Exceeded timeout of 60000 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."

  772 |   })
  773 |
> 774 |   it('should handle the styles prop appropriately', async () => {
      |   ^
  775 |     const browser = await webdriver(appPort, '/style-prop')
  776 |
  777 |     expect(await browser.elementById('with-styles').getAttribute('style')).toBe(

  at it (integration/next-image-new/app-dir/test/index.test.ts:774:3)
  at runTests (integration/next-image-new/app-dir/test/index.test.ts:1649:7)
  at integration/next-image-new/app-dir/test/index.test.ts:1638:58
  at Object.describe (integration/next-image-new/app-dir/test/index.test.ts:1637:1)

● Image Component Default Tests › development mode › should show missing src error

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  884 |       const browser = await webdriver(appPort, '/missing-src')
  885 |
> 886 |       await assertNoRedbox(browser)
      |       ^
  887 |
  888 |       await check(async () => {
  889 |         return (await browser.log()).map((log) => log.message).join('\n')

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:886:7)

● Image Component Default Tests › development mode › should show empty string src error

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  894 |       const browser = await webdriver(appPort, '/empty-string-src')
  895 |
> 896 |       await assertNoRedbox(browser)
      |       ^
  897 |
  898 |       await check(async () => {
  899 |         return (await browser.log()).map((log) => log.message).join('\n')

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:896:7)

● Image Component Default Tests › development mode › should show null src error

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  904 |       const browser = await webdriver(appPort, '/invalid-src-null')
  905 |
> 906 |       await assertNoRedbox(browser)
      |       ^
  907 |
  908 |       await retry(async () => {
  909 |         expect(

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:906:7)

● Image Component Default Tests › development mode › should show missing alt error

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  986 |       const browser = await webdriver(appPort, '/missing-alt')
  987 |
> 988 |       await assertNoRedbox(browser)
      |       ^
  989 |
  990 |       await check(async () => {
  991 |         return (await browser.log()).map((log) => log.message).join('\n')

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:988:7)

● Image Component Default Tests › development mode › should warn when using a very small image with placeholder=blur

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  1047 |         .map((log) => log.message)
  1048 |         .join('\n')
> 1049 |       await assertNoRedbox(browser)
       |       ^
  1050 |       expect(warnings).toMatch(
  1051 |         /Image with src (.*)jpg(.*) is smaller than 40x40. Consider removing(.*)/gm
  1052 |       )

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1049:7)

● Image Component Default Tests › development mode › should not warn when Image is child of p

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  1059 |         .map((log) => log.message)
  1060 |         .join('\n')
> 1061 |       await assertNoRedbox(browser)
       |       ^
  1062 |       expect(warnings).not.toMatch(
  1063 |         /Expected server HTML to contain a matching/gm
  1064 |       )

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1061:7)

● Image Component Default Tests › development mode › should warn when priority prop is missing on LCP image

TIMED OUT: done

undefined

Error: Image not ready

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1072:9)

● Image Component Default Tests › development mode › should warn when loader is missing width

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  1098 |         .map((log) => log.message)
  1099 |         .join('\n')
> 1100 |       await assertNoRedbox(browser)
       |       ^
  1101 |       expect(warnings).toMatch(
  1102 |         /Image with src (.*)png(.*) has a "loader" property that does not implement width/gm
  1103 |       )

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1100:7)

● Image Component Default Tests › development mode › should not warn when svg, even if with loader prop or without

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.3-canary.1) is outdated (learn more)
Unhandled Runtime Error

TypeError: _react.default.captureOwnerStack is not a function
description: TypeError: _react.default.captureOwnerStack is not a function
source: null

  1133 |         .map((log) => log.message)
  1134 |         .join('\n')
> 1135 |       await assertNoRedbox(browser)
       |       ^
  1136 |       expect(warnings).not.toMatch(
  1137 |         /Image with src (.*) has a "loader" property that does not implement width/gm
  1138 |       )

  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1135:7)

● Image Component Default Tests › development mode › should warn at most once even after state change

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

Expected: "Count: 2"
Received: null

  1159 |         `document.querySelector("button").textContent`
  1160 |       )
> 1161 |       expect(count).toBe('Count: 2')
       |                     ^
  1162 |       await check(async () => {
  1163 |         const result = await browser.eval(
  1164 |           'document.getElementById("w").naturalWidth'

  at Object.toBe (integration/next-image-new/app-dir/test/index.test.ts:1161:21)

● Image Component Default Tests › development mode › should correctly ignore prose styles

TIMED OUT: /result-correct/

undefined

Error: Image not ready

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1227:7)

● Image Component Default Tests › development mode › should apply filter style after image loads

thrown: "Exceeded timeout of 60000 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."

  1289 |   })
  1290 |
> 1291 |   it('should apply filter style after image loads', async () => {
       |   ^
  1292 |     const browser = await webdriver(appPort, '/style-filter')
  1293 |     await check(() => getSrc(browser, 'img-plain'), /^\/_next\/image/)
  1294 |     await check(() => getSrc(browser, 'img-blur'), /^\/_next\/image/)

  at it (integration/next-image-new/app-dir/test/index.test.ts:1291:3)
  at runTests (integration/next-image-new/app-dir/test/index.test.ts:1649:7)
  at integration/next-image-new/app-dir/test/index.test.ts:1638:58
  at Object.describe (integration/next-image-new/app-dir/test/index.test.ts:1637:1)

● Image Component Default Tests › development mode › Fill-mode tests › should include a data-attribute on fill images

thrown: "Exceeded timeout of 60000 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."

  1335 |       browser = await webdriver(appPort, '/fill')
  1336 |     })
> 1337 |     it('should include a data-attribute on fill images', async () => {
       |     ^
  1338 |       expect(
  1339 |         await browser.elementById('fill-image-1').getAttribute('data-nimg')
  1340 |       ).toBe('fill')

  at it (integration/next-image-new/app-dir/test/index.test.ts:1337:5)
  at describe (integration/next-image-new/app-dir/test/index.test.ts:1332:3)
  at runTests (integration/next-image-new/app-dir/test/index.test.ts:1649:7)
  at integration/next-image-new/app-dir/test/index.test.ts:1638:58
  at Object.describe (integration/next-image-new/app-dir/test/index.test.ts:1637:1)

● Image Component Default Tests › development mode › Fill-mode tests › should add position:absolute to fill images

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

Expected: "absolute"
Received: null

  1341 |     })
  1342 |     it('should add position:absolute to fill images', async () => {
> 1343 |       expect(await getComputedStyle(browser, 'fill-image-1', 'position')).toBe(
       |                                                                           ^
  1344 |         'absolute'
  1345 |       )
  1346 |     })

  at Object.toBe (integration/next-image-new/app-dir/test/index.test.ts:1343:75)

● Image Component Default Tests › development mode › Fill-mode tests › should add 100% width and height to fill images

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

Expected: "100%"
Received: null

  1350 |           `document.getElementById("fill-image-1").style.height`
  1351 |         )
> 1352 |       ).toBe('100%')
       |         ^
  1353 |       expect(
  1354 |         await browser.eval(
  1355 |           `document.getElementById("fill-image-1").style.width`

  at Object.toBe (integration/next-image-new/app-dir/test/index.test.ts:1352:9)

● Image Component Default Tests › development mode › Fill-mode tests › should add position styles to fill images

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

Expected: "position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent"
Received: null

  1362 |           `document.getElementById("fill-image-1").getAttribute('style')`
  1363 |         )
> 1364 |       ).toBe(
       |         ^
  1365 |         'position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent'
  1366 |       )
  1367 |     })

  at Object.toBe (integration/next-image-new/app-dir/test/index.test.ts:1364:9)

● Image Component Default Tests › development mode › Fill-mode tests › should log warnings when using fill mode incorrectly

expect(received).toContain(expected) // indexOf

Expected substring: "Image with src \"/wide.png\" has \"fill\" and parent element with invalid \"position\". Provided \"static\" should be one of absolute,fixed,relative."
Received string:    "%cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold
%o·
%s TypeError: _react.default.captureOwnerStack is not a function

  at appendOwnerStack (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:19051:39)
  at createUnhandledError (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:17344:41)
  at handleClientError (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:19180:56)
  at console.error (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:5826:56)
  at ../http:/localhost:39775/_next/static/chunks/app/fill-warnings/page.js:1790:25
  at commitAttachRef (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44156:62)
  at runWithFiberInDEV (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:33697:16)
  at safelyAttachRef (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44174:9)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44674:26)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44672:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44672:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44728:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44728:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44561:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44561:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44728:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44728:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44728:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11)
  at commitLayoutEffectOnFiber (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:44556:11)
  at recursivelyTraverseLayoutEffects (../http:/localhost:39775/_next/static/chunks/main-app.js?v=1730406205584:45550:11) The above error occurred in the <img> component. It was handled by the <ReactDevOverlay> error boundary.
  connected to ws at ws://localhost:39775/_next/webpack-hmr
  Next.js page already hydrated
  received ws message {\"action\":\"sync\",\"hash\":\"f0115f663916ad74\",\"errors\":[],\"warnings\":[],\"versionInfo\":{\"staleness\":\"stale-prerelease\",\"expected\":\"15.0.3-canary.2\",\"installed\":\"15.0.3-canary.1\"},\"debug\":{}}
  received ws message {\"action\":\"appIsrManifest\",\"data\":{\"/\":true,\"/priority\":true,\"/drop-srcset\":true,\"/update\":true,\"/on-loading-complete\":true,\"/on-load\":true,\"/on-error\":true,\"/on-error-before-hydration\":true,\"/blob\":true,\"/flex\":true,\"/override-src\":true,\"/sizes\":true,\"/wrapper-div\":true,\"/placeholder-blur\":true,\"/style-prop\":true,\"/legacy-layout-fill\":true,\"/legacy-layout-responsive\":true,\"/picture\":true,\"/missing-src\":true,\"/empty-string-src\":true,\"/invalid-src-null\":true,\"/invalid-src\":true,\"/invalid-src-proto-relative\":true,\"/invalid-src-leading-space\":true,\"/invalid-src-trailing-space\":true,\"/invalid-placeholder-blur\":true,\"/invalid-width\":true,\"/invalid-Infinity-width\":true,\"/invalid-height\":true,\"/missing-alt\":true,\"/missing-width\":true,\"/missing-height\":true,\"/invalid-fill-width\":true,\"/invalid-fill-position\":true,\"/invalid-placeholder-blur-static\":true,\"/small-img-import\":true,\"/inside-paragraph\":true,\"/priority-missing-warning\":true,\"/invalid-loader\":true,\"/data-url-with-fill-and-sizes\":true,\"/loader-svg\":true,\"/warning-once\":true,\"/prose\":true,\"/style-inheritance\":true,\"/style-filter\":true,\"/dynamic-static-img\":true,\"/fill\":true,\"/fill-warnings\":true}}
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  Failed to load resource: the server responded with a status of 500 (Internal Server Error)"
  at Object.toContain (integration/next-image-new/app-dir/test/index.test.ts:1385:26)

● Image Component Default Tests › development mode › should remove blurry placeholder after image loads

TIMED OUT: none

null

undefined

  718 |
  719 |   if (hardError) {
> 720 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  721 |   }
  722 |   return false
  723 | }

  at check (lib/next-test-utils.ts:720:11)
  at Object.<anonymous> (integration/next-image-new/app-dir/test/index.test.ts:1521:5)

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

pnpm test-dev-turbo test/e2e/app-dir/use-cache/use-cache.test.ts (turbopack)

  • use-cache > should error when cookies/headers/draftMode is used inside "use cache"
Expand output

● use-cache › should error when cookies/headers/draftMode is used inside "use cache"

expect(received).toContain(expected) // indexOf

Expected substring: "Editing: false"
Received string:    "_react.default.captureOwnerStack is not a function"

  110 |         : GENERIC_RSC_ERROR
  111 |     )
> 112 |     expect(await browser.waitForElementByCss('#draft-mode').text()).toContain(
      |                                                                     ^
  113 |       'Editing: false'
  114 |     )
  115 |

  at Object.toContain (e2e/app-dir/use-cache/use-cache.test.ts:112:69)

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

@ijjk
Copy link
Member

ijjk commented Oct 31, 2024

Stats from current PR

Default Build
General Overall increase ⚠️
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
buildDuration 20.7s 17.5s N/A
buildDurationCached 16.7s 14.9s N/A
nodeModulesSize 403 MB 403 MB ⚠️ +894 B
nextStartRea..uration (ms) 456ms 455ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
4673-HASH.js gzip 45.4 kB 45.4 kB N/A
8760.HASH.js gzip 169 B 170 B N/A
9684-HASH.js gzip 5.27 kB 5.27 kB N/A
9d9f3bb1-HASH.js gzip 52.5 kB 52.5 kB N/A
framework-HASH.js gzip 57.3 kB 57.3 kB
main-app-HASH.js gzip 233 B 234 B N/A
main-HASH.js gzip 33.1 kB 33.2 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB
Overall change 59 kB 59 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js 10-31-share_test_util 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 10-31-share_test_util Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 192 B 191 B N/A
amp-HASH.js gzip 512 B 511 B N/A
css-HASH.js gzip 342 B 342 B
dynamic-HASH.js gzip 1.84 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 365 B 362 B N/A
hooks-HASH.js gzip 393 B 389 B N/A
image-HASH.js gzip 4.41 kB 4.41 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.78 kB 2.78 kB N/A
routerDirect..HASH.js gzip 327 B 329 B N/A
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 325 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.57 kB 1.57 kB
Client Build Manifests
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
_buildManifest.js gzip 747 B 745 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
index.html gzip 523 B 521 B N/A
link.html gzip 536 B 538 B N/A
withRouter.html gzip 518 B 519 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
edge-ssr.js gzip 128 kB 128 kB N/A
page.js gzip 189 kB 189 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
middleware-b..fest.js gzip 669 B 666 B N/A
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 31 kB 31 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 1 kB 1 kB
Next Runtimes
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
973-experime...dev.js gzip 322 B 322 B
973.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 318 kB 318 kB N/A
app-page-exp..prod.js gzip 122 kB 122 kB
app-page-tur..prod.js gzip 135 kB 135 kB
app-page-tur..prod.js gzip 130 kB 130 kB
app-page.run...dev.js gzip 309 kB 309 kB N/A
app-page.run..prod.js gzip 118 kB 118 kB
app-route-ex...dev.js gzip 35.9 kB 35.9 kB
app-route-ex..prod.js gzip 24.4 kB 24.4 kB
app-route-tu..prod.js gzip 24.4 kB 24.4 kB
app-route-tu..prod.js gzip 24.2 kB 24.2 kB
app-route.ru...dev.js gzip 37.5 kB 37.5 kB
app-route.ru..prod.js gzip 24.2 kB 24.2 kB
pages-api-tu..prod.js gzip 9.61 kB 9.61 kB
pages-api.ru...dev.js gzip 11.4 kB 11.4 kB
pages-api.ru..prod.js gzip 9.61 kB 9.61 kB
pages-turbo...prod.js gzip 20.9 kB 20.9 kB
pages.runtim...dev.js gzip 26.5 kB 26.5 kB
pages.runtim..prod.js gzip 20.9 kB 20.9 kB
server.runti..prod.js gzip 914 kB 914 kB
Overall change 1.69 MB 1.69 MB
build cache
vercel/next.js canary vercel/next.js 10-31-share_test_util Change
0.pack gzip 1.86 MB 1.85 MB N/A
index.pack gzip 145 kB 143 kB N/A
Overall change 0 B 0 B
Diff details
Diff for page.js
@@ -15,7 +15,7 @@
       /***/
     },
 
-    /***/ 2523: /***/ (
+    /***/ 5742: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -30,7 +30,7 @@
         default: () => /* binding */ nHandler,
       });
 
-      // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats9VDo3t%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // NAMESPACE OBJECT: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats9VDo3t%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
       var page_next_edge_ssr_entry_namespaceObject = {};
       __webpack_require__.r(page_next_edge_ssr_entry_namespaceObject);
       __webpack_require__.d(page_next_edge_ssr_entry_namespaceObject, {
@@ -82,35 +82,35 @@
         workUnitAsyncStorage: () => entry_base /* workUnitAsyncStorage */.Sz,
       });
 
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/web/globals.js
-      var globals = __webpack_require__(3964);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
-      var adapter = __webpack_require__(5699);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 86 modules
-      var render = __webpack_require__(7101);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 5 modules
-      var incremental_cache = __webpack_require__(9751);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/app-render/app-render.js + 63 modules
-      var app_render = __webpack_require__(5232);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
-      var module_compiled = __webpack_require__(2977);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/route-kind.js
-      var route_kind = __webpack_require__(3494);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/client/components/error-boundary.js
-      var error_boundary = __webpack_require__(7206);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/app-render/entry-base.js + 23 modules
-      var entry_base = __webpack_require__(8862); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats9VDo3t%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/web/globals.js
+      var globals = __webpack_require__(159);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/web/adapter.js + 3 modules
+      var adapter = __webpack_require__(5043);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/build/webpack/loaders/next-edge-ssr-loader/render.js + 86 modules
+      var render = __webpack_require__(2837);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/lib/incremental-cache/index.js + 5 modules
+      var incremental_cache = __webpack_require__(7652);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/app-render/app-render.js + 63 modules
+      var app_render = __webpack_require__(1778);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/route-modules/app-page/module.compiled.js
+      var module_compiled = __webpack_require__(3774);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/route-kind.js
+      var route_kind = __webpack_require__(5318);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/client/components/error-boundary.js
+      var error_boundary = __webpack_require__(28);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/app-render/entry-base.js + 23 modules
+      var entry_base = __webpack_require__(7011); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapp-edge-ssr%2Fpage&page=%2Fapp-edge-ssr%2Fpage&pagePath=private-next-app-dir%2Fapp-edge-ssr%2Fpage.js&appDir=%2Ftmp%2Fnext-stats9VDo3t%2Fstats-app%2Fapp&appPaths=%2Fapp-edge-ssr%2Fpage&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=&flyingShuttle=false&preferredRegion=&middlewareConfig=e30%3D!./app/app-edge-ssr/page.js?__next_edge_ssr_entry__
       const module0 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 6719)
+          __webpack_require__.bind(__webpack_require__, 1187)
         );
       const module1 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 2552)
+          __webpack_require__.bind(__webpack_require__, 408)
         );
       const page2 = () =>
         Promise.resolve(/* import() eager */).then(
-          __webpack_require__.bind(__webpack_require__, 5312)
+          __webpack_require__.bind(__webpack_require__, 2344)
         );
 
       // We inject the tree and pages here so that we can use them in the route
@@ -173,12 +173,12 @@
       });
 
       //# sourceMappingURL=app-page.js.map
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/lib/page-types.js
-      var page_types = __webpack_require__(8198);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/app-render/encryption-utils.js
-      var encryption_utils = __webpack_require__(7128);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/esm/server/app-render/action-utils.js
-      var action_utils = __webpack_require__(8219); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sImV4cGlyZVRpbWUiOjMxNTM2MDAwLCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii90bXAvbmV4dC1zdGF0czlWRG8zdC9zdGF0cy1hcHAiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjF9LCJtaW51dGVzIjp7InN0YWxlIjozMDAsInJldmFsaWRhdGUiOjYwLCJleHBpcmUiOjM2MDB9LCJob3VycyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjozNjAwLCJleHBpcmUiOjg2NDAwfSwiZGF5cyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo4NjQwMCwiZXhwaXJlIjo2MDQ4MDB9LCJ3ZWVrcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MDQ4MDAsImV4cGlyZSI6MjU5MjAwMH0sIm1heCI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjoyNTkyMDAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9fSwiY2FjaGVIYW5kbGVycyI6e30sIm11bHRpWm9uZURyYWZ0TW9kZSI6ZmFsc2UsImFwcE5hdkZhaWxIYW5kbGluZyI6ZmFsc2UsInByZXJlbmRlckVhcmx5RXhpdCI6dHJ1ZSwic2VydmVyTWluaWZpY2F0aW9uIjp0cnVlLCJzZXJ2ZXJTb3VyY2VNYXBzIjpmYWxzZSwibGlua05vVG91Y2hTdGFydCI6ZmFsc2UsImNhc2VTZW5zaXRpdmVSb3V0ZXMiOmZhbHNlLCJwcmVsb2FkRW50cmllc09uU3RhcnQiOnRydWUsImNsaWVudFJvdXRlckZpbHRlciI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyUmVkaXJlY3RzIjpmYWxzZSwiZmV0Y2hDYWNoZUtleVByZWZpeCI6IiIsIm1pZGRsZXdhcmVQcmVmZXRjaCI6ImZsZXhpYmxlIiwib3B0aW1pc3RpY0NsaWVudENhY2hlIjp0cnVlLCJtYW51YWxDbGllbnRCYXNlUGF0aCI6ZmFsc2UsImNwdXMiOjE5LCJtZW1vcnlCYXNlZFdvcmtlcnNDb3VudCI6ZmFsc2UsImltZ09wdENvbmN1cnJlbmN5IjpudWxsLCJpbWdPcHRUaW1lb3V0SW5TZWNvbmRzIjo3LCJpbWdPcHRNYXhJbnB1dFBpeGVscyI6MjY4NDAyNjg5LCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHM5VkRvM3Qvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInJlYWN0T3duZXJTdGFjayI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHM5VkRvM3Qvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzOVZEbzN0JTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30=","cacheHandlers":"{}"}!
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/lib/page-types.js
+      var page_types = __webpack_require__(7681);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/app-render/encryption-utils.js
+      var encryption_utils = __webpack_require__(4277);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/esm/server/app-render/action-utils.js
+      var action_utils = __webpack_require__(5786); // CONCATENATED MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"private-next-app-dir/app-edge-ssr/page.js","dev":false,"isServerComponent":true,"page":"/app-edge-ssr/page","stringifiedConfig":"eyJlbnYiOnt9LCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sImV4cGlyZVRpbWUiOjMxNTM2MDAwLCJzdGF0aWNQYWdlR2VuZXJhdGlvblRpbWVvdXQiOjYwLCJtb2R1bGFyaXplSW1wb3J0cyI6eyJAbXVpL2ljb25zLW1hdGVyaWFsIjp7InRyYW5zZm9ybSI6IkBtdWkvaWNvbnMtbWF0ZXJpYWwve3ttZW1iZXJ9fSJ9LCJsb2Rhc2giOnsidHJhbnNmb3JtIjoibG9kYXNoL3t7bWVtYmVyfX0ifX0sIm91dHB1dEZpbGVUcmFjaW5nUm9vdCI6Ii90bXAvbmV4dC1zdGF0czlWRG8zdC9zdGF0cy1hcHAiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjF9LCJtaW51dGVzIjp7InN0YWxlIjozMDAsInJldmFsaWRhdGUiOjYwLCJleHBpcmUiOjM2MDB9LCJob3VycyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjozNjAwLCJleHBpcmUiOjg2NDAwfSwiZGF5cyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo4NjQwMCwiZXhwaXJlIjo2MDQ4MDB9LCJ3ZWVrcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MDQ4MDAsImV4cGlyZSI6MjU5MjAwMH0sIm1heCI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjoyNTkyMDAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9fSwiY2FjaGVIYW5kbGVycyI6e30sIm11bHRpWm9uZURyYWZ0TW9kZSI6ZmFsc2UsImFwcE5hdkZhaWxIYW5kbGluZyI6ZmFsc2UsInByZXJlbmRlckVhcmx5RXhpdCI6dHJ1ZSwic2VydmVyTWluaWZpY2F0aW9uIjp0cnVlLCJzZXJ2ZXJTb3VyY2VNYXBzIjpmYWxzZSwibGlua05vVG91Y2hTdGFydCI6ZmFsc2UsImNhc2VTZW5zaXRpdmVSb3V0ZXMiOmZhbHNlLCJwcmVsb2FkRW50cmllc09uU3RhcnQiOnRydWUsImNsaWVudFJvdXRlckZpbHRlciI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyUmVkaXJlY3RzIjpmYWxzZSwiZmV0Y2hDYWNoZUtleVByZWZpeCI6IiIsIm1pZGRsZXdhcmVQcmVmZXRjaCI6ImZsZXhpYmxlIiwib3B0aW1pc3RpY0NsaWVudENhY2hlIjp0cnVlLCJtYW51YWxDbGllbnRCYXNlUGF0aCI6ZmFsc2UsImNwdXMiOjE5LCJtZW1vcnlCYXNlZFdvcmtlcnNDb3VudCI6ZmFsc2UsImltZ09wdENvbmN1cnJlbmN5IjpudWxsLCJpbWdPcHRUaW1lb3V0SW5TZWNvbmRzIjo3LCJpbWdPcHRNYXhJbnB1dFBpeGVscyI6MjY4NDAyNjg5LCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvdG1wL25leHQtc3RhdHM5VkRvM3Qvc3RhdHMtYXBwIn0sInR5cGVkUm91dGVzIjpmYWxzZSwidHlwZWRFbnYiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckNvbXBpbGVzIjpmYWxzZSwicGFyYWxsZWxTZXJ2ZXJCdWlsZFRyYWNlcyI6ZmFsc2UsInBwciI6ZmFsc2UsInJlYWN0T3duZXJTdGFjayI6ZmFsc2UsIndlYnBhY2tNZW1vcnlPcHRpbWl6YXRpb25zIjpmYWxzZSwib3B0aW1pemVTZXJ2ZXJSZWFjdCI6dHJ1ZSwidXNlRWFybHlJbXBvcnQiOmZhbHNlLCJzdGFsZVRpbWVzIjp7ImR5bmFtaWMiOjAsInN0YXRpYyI6MzAwfSwiYWZ0ZXIiOmZhbHNlLCJzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUiOnRydWUsInN0YXRpY0dlbmVyYXRpb25NYXhDb25jdXJyZW5jeSI6OCwic3RhdGljR2VuZXJhdGlvbk1pblBhZ2VzUGVyV29ya2VyIjoyNSwiZHluYW1pY0lPIjpmYWxzZSwib3B0aW1pemVQYWNrYWdlSW1wb3J0cyI6WyJsdWNpZGUtcmVhY3QiLCJkYXRlLWZucyIsImxvZGFzaC1lcyIsInJhbWRhIiwiYW50ZCIsInJlYWN0LWJvb3RzdHJhcCIsImFob29rcyIsIkBhbnQtZGVzaWduL2ljb25zIiwiQGhlYWRsZXNzdWkvcmVhY3QiLCJAaGVhZGxlc3N1aS1mbG9hdC9yZWFjdCIsIkBoZXJvaWNvbnMvcmVhY3QvMjAvc29saWQiLCJAaGVyb2ljb25zL3JlYWN0LzI0L3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9vdXRsaW5lIiwiQHZpc3gvdmlzeCIsIkB0cmVtb3IvcmVhY3QiLCJyeGpzIiwiQG11aS9tYXRlcmlhbCIsIkBtdWkvaWNvbnMtbWF0ZXJpYWwiLCJyZWNoYXJ0cyIsInJlYWN0LXVzZSIsImVmZmVjdCIsIkBlZmZlY3Qvc2NoZW1hIiwiQGVmZmVjdC9wbGF0Zm9ybSIsIkBlZmZlY3QvcGxhdGZvcm0tbm9kZSIsIkBlZmZlY3QvcGxhdGZvcm0tYnJvd3NlciIsIkBlZmZlY3QvcGxhdGZvcm0tYnVuIiwiQGVmZmVjdC9zcWwiLCJAZWZmZWN0L3NxbC1tc3NxbCIsIkBlZmZlY3Qvc3FsLW15c3FsMiIsIkBlZmZlY3Qvc3FsLXBnIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1ub2RlIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1idW4iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXdhc20iLCJAZWZmZWN0L3NxbC1zcXVsaXRlLXJlYWN0LW5hdGl2ZSIsIkBlZmZlY3QvcnBjIiwiQGVmZmVjdC9ycGMtaHR0cCIsIkBlZmZlY3QvdHlwZWNsYXNzIiwiQGVmZmVjdC9leHBlcmltZW50YWwiLCJAZWZmZWN0L29wZW50ZWxlbWV0cnkiLCJAbWF0ZXJpYWwtdWkvY29yZSIsIkBtYXRlcmlhbC11aS9pY29ucyIsIkB0YWJsZXIvaWNvbnMtcmVhY3QiLCJtdWktY29yZSIsInJlYWN0LWljb25zL2FpIiwicmVhY3QtaWNvbnMvYmkiLCJyZWFjdC1pY29ucy9icyIsInJlYWN0LWljb25zL2NnIiwicmVhY3QtaWNvbnMvY2kiLCJyZWFjdC1pY29ucy9kaSIsInJlYWN0LWljb25zL2ZhIiwicmVhY3QtaWNvbnMvZmE2IiwicmVhY3QtaWNvbnMvZmMiLCJyZWFjdC1pY29ucy9maSIsInJlYWN0LWljb25zL2dpIiwicmVhY3QtaWNvbnMvZ28iLCJyZWFjdC1pY29ucy9nciIsInJlYWN0LWljb25zL2hpIiwicmVhY3QtaWNvbnMvaGkyIiwicmVhY3QtaWNvbnMvaW0iLCJyZWFjdC1pY29ucy9pbyIsInJlYWN0LWljb25zL2lvNSIsInJlYWN0LWljb25zL2xpYSIsInJlYWN0LWljb25zL2xpYiIsInJlYWN0LWljb25zL2x1IiwicmVhY3QtaWNvbnMvbWQiLCJyZWFjdC1pY29ucy9waSIsInJlYWN0LWljb25zL3JpIiwicmVhY3QtaWNvbnMvcngiLCJyZWFjdC1pY29ucy9zaSIsInJlYWN0LWljb25zL3NsIiwicmVhY3QtaWNvbnMvdGIiLCJyZWFjdC1pY29ucy90ZmkiLCJyZWFjdC1pY29ucy90aSIsInJlYWN0LWljb25zL3ZzYyIsInJlYWN0LWljb25zL3dpIl19LCJidW5kbGVQYWdlc1JvdXRlckRlcGVuZGVuY2llcyI6ZmFsc2UsImNvbmZpZ0ZpbGUiOiIvdG1wL25leHQtc3RhdHM5VkRvM3Qvc3RhdHMtYXBwL25leHQuY29uZmlnLmpzIiwiY29uZmlnRmlsZU5hbWUiOiJuZXh0LmNvbmZpZy5qcyJ9","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBwLWVkZ2Utc3NyJTJGcGFnZSZwYWdlPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcHAtZWRnZS1zc3IlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LXN0YXRzOVZEbzN0JTJGc3RhdHMtYXBwJTJGYXBwJmFwcFBhdGhzPSUyRmFwcC1lZGdlLXNzciUyRnBhZ2UmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JmZseWluZ1NodXR0bGU9ZmFsc2UmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE=","sriEnabled":false,"middlewareConfig":"e30=","cacheHandlers":"{}"}!
       var _self___RSC_MANIFEST;
 
       const incrementalCacheHandler = null;
@@ -460,105 +460,105 @@
       /***/
     },
 
-    /***/ 2833: /***/ (
+    /***/ 3409: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 6158)
+        __webpack_require__.bind(__webpack_require__, 1974)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5713)
+        __webpack_require__.bind(__webpack_require__, 8366)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 786)
+        __webpack_require__.bind(__webpack_require__, 5350)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7206)
+        __webpack_require__.bind(__webpack_require__, 28)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1122)
+        __webpack_require__.bind(__webpack_require__, 4742)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1641)
+        __webpack_require__.bind(__webpack_require__, 6261)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7817)
+        __webpack_require__.bind(__webpack_require__, 3956)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7251)
+        __webpack_require__.bind(__webpack_require__, 5267)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 289)
+        __webpack_require__.bind(__webpack_require__, 5698)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8527)
+        __webpack_require__.bind(__webpack_require__, 1885)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8016)
+        __webpack_require__.bind(__webpack_require__, 7470)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 3773)
+        __webpack_require__.bind(__webpack_require__, 6879)
       );
 
       /***/
     },
 
-    /***/ 6288: /***/ (
+    /***/ 9321: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9550)
+        __webpack_require__.bind(__webpack_require__, 848)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9667)
+        __webpack_require__.bind(__webpack_require__, 9491)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 8548)
+        __webpack_require__.bind(__webpack_require__, 5499)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 9549)
+        __webpack_require__.bind(__webpack_require__, 8213)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 1629)
+        __webpack_require__.bind(__webpack_require__, 120)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5202)
+        __webpack_require__.bind(__webpack_require__, 7194)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 7830)
+        __webpack_require__.bind(__webpack_require__, 2567)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 4776)
+        __webpack_require__.bind(__webpack_require__, 4009)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 52)
+        __webpack_require__.bind(__webpack_require__, 3209)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2118)
+        __webpack_require__.bind(__webpack_require__, 7619)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 2894)
+        __webpack_require__.bind(__webpack_require__, 6417)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 253)
+        __webpack_require__.bind(__webpack_require__, 72)
       );
 
       /***/
     },
 
-    /***/ 2180: /***/ () => {
+    /***/ 4408: /***/ () => {
       /***/
     },
 
-    /***/ 8944: /***/ () => {
+    /***/ 3278: /***/ () => {
       /***/
     },
 
-    /***/ 5312: /***/ (
+    /***/ 2344: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -578,7 +578,7 @@
       /***/
     },
 
-    /***/ 6719: /***/ (
+    /***/ 1187: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -590,7 +590,7 @@
         /* harmony export */
       });
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(1220);
+        __webpack_require__(5391);
 
       function RootLayout({ children }) {
         return /*#__PURE__*/ (0,
@@ -609,7 +609,7 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [85, 619], () => __webpack_exec__(2523));
+    /******/ __webpack_require__.O(0, [145, 212], () => __webpack_exec__(5742));
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ (_ENTRIES = typeof _ENTRIES === "undefined" ? {} : _ENTRIES)[
       "middleware_app/app-edge-ssr/page"
Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [8358],
   {
-    /***/ 8672: /***/ (
+    /***/ 7631: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(4462);
+          return __webpack_require__(4037);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 4515: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1041: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(3651)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2336)
+        __webpack_require__(6947)
       );
-      const _getimgprops = __webpack_require__(7648);
-      const _imageconfig = __webpack_require__(8572);
-      const _imageconfigcontextsharedruntime = __webpack_require__(8277);
-      const _warnonce = __webpack_require__(9598);
-      const _routercontextsharedruntime = __webpack_require__(2366);
+      const _getimgprops = __webpack_require__(2736);
+      const _imageconfig = __webpack_require__(3066);
+      const _imageconfigcontextsharedruntime = __webpack_require__(8498);
+      const _warnonce = __webpack_require__(8553);
+      const _routercontextsharedruntime = __webpack_require__(54);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2625)
+        __webpack_require__(4599)
       );
-      const _usemergedref = __webpack_require__(7603);
+      const _usemergedref = __webpack_require__(3027);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 7603: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3027: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
       /***/
     },
 
-    /***/ 7648: /***/ (
+    /***/ 2736: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -448,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(9598);
-      const _imageblursvg = __webpack_require__(6541);
-      const _imageconfig = __webpack_require__(8572);
+      const _warnonce = __webpack_require__(8553);
+      const _imageblursvg = __webpack_require__(8684);
+      const _imageconfig = __webpack_require__(3066);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -824,7 +824,7 @@
       /***/
     },
 
-    /***/ 6541: /***/ (__unused_webpack_module, exports) => {
+    /***/ 8684: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -879,7 +879,7 @@
       /***/
     },
 
-    /***/ 6911: /***/ (
+    /***/ 2383: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -906,10 +906,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(9608);
-      const _getimgprops = __webpack_require__(7648);
-      const _imagecomponent = __webpack_require__(4515);
+      const _getimgprops = __webpack_require__(2736);
+      const _imagecomponent = __webpack_require__(1041);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2625)
+        __webpack_require__(4599)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -941,7 +941,7 @@
       /***/
     },
 
-    /***/ 2625: /***/ (__unused_webpack_module, exports) => {
+    /***/ 4599: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -976,7 +976,7 @@
       /***/
     },
 
-    /***/ 4462: /***/ (
+    /***/ 4037: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -993,8 +993,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(6091);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_hkctxqey4uoasz5bdrxodeqyxe/node_modules/next/image.js
-      var next_image = __webpack_require__(9306);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-603e6108-20241029_re_3hkrdvzmhg3z5hqggw7xkpavcq/node_modules/next/image.js
+      var next_image = __webpack_require__(1148);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1024,12 +1024,12 @@
       /***/
     },
 
-    /***/ 9306: /***/ (
+    /***/ 1148: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(6911);
+      module.exports = __webpack_require__(2383);
 
       /***/
     },
@@ -1039,7 +1039,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(8672)
+      __webpack_exec__(7631)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 4673-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

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

Diff too large to display

Diff for app-page.runtime.dev.js

Diff too large to display

Commit: 6510d98

@huozhi huozhi force-pushed the 10-31-share_test_util branch from 8cc8d92 to 6510d98 Compare October 31, 2024 19:56
@huozhi huozhi force-pushed the 10-31-array_key_warning branch 2 times, most recently from 86a10fe to 8f45e49 Compare November 4, 2024 20:08
@huozhi huozhi closed this Nov 4, 2024
@huozhi huozhi deleted the 10-31-share_test_util branch November 4, 2024 20:12
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 23, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants