Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

feat(next-swc): Implement CJS optimizer #49972

Merged
merged 45 commits into from
May 23, 2023
Merged

feat(next-swc): Implement CJS optimizer #49972

merged 45 commits into from
May 23, 2023

Conversation

kdy1
Copy link
Member

@kdy1 kdy1 commented May 18, 2023

What?

Implement a CJS optimizer for next-swc

Why?

x-ref: https://vercel.slack.com/archives/C02HY34AKME/p1684341093462309

Assuming most CJS files are transpiled from ESM, we can mimic tree-shaking using an AST transform.

How?

Closes WEB-1072
Fixes #48469

fix NEXT-1156

@kdy1 kdy1 self-assigned this May 18, 2023
@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. type: next labels May 18, 2023
@ijjk
Copy link
Member

ijjk commented May 18, 2023

Failing test suites

Commit: 3974cef

pnpm testheadless test/development/acceptance/ReactRefreshLogBox-builtins.test.ts

  • ReactRefreshLogBox default > Module not found (missing global CSS)
Expand output

● ReactRefreshLogBox default › Module not found (missing global CSS)

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

Expected substring: "index page"
Received string:    "<head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width\"><meta name=\"next-head-count\" content=\"2\"><noscript data-n-css=\"\"></noscript><script defer=\"\" nomodule=\"\" src=\"/_next/static/chunks/polyfills.js?ts=1684861215905\"></script><script src=\"/_next/static/chunks/fallback/webpack.js?ts=1684861215905\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/main.js?ts=1684861215905\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/pages/_app.js?ts=1684861215905\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/pages/_error.js?ts=1684861215905\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body style=\"\"><div id=\"__next\"></div><script src=\"/_next/static/chunks/fallback/react-refresh.js?ts=1684861215905\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"Module not found: Can't resolve './non-existent.css'\\n  1 | \\n\\u003e 2 |         import './non-existent.css'\\n    |        ^\\n  3 | \\n  4 |         export default function App({ Component, pageProps }) {\\n  5 |           return \\u003cComponent {...pageProps} /\\u003e\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\",\"stack\":\"Error: \\u001b[31m\\u001b[1mModule not found\\u001b[22m\\u001b[39m: Can't resolve '\\u001b[32m./non-existent.css\\u001b[39m'\\n\\u001b[0m \\u001b[90m 1 | \\u001b[39m\\u001b[0m\\n\\u001b[0m\\u001b[31m\\u001b[1m\\u003e\\u001b[22m\\u001b[39m\\u001b[90m 2 | \\u001b[39m        \\u001b[36mimport\\u001b[39m \\u001b[32m'./non-existent.css'\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m   | \\u001b[39m       \\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 3 | \\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 4 | \\u001b[39m        \\u001b[36mexport\\u001b[39m \\u001b[36mdefault\\u001b[39m \\u001b[36mfunction\\u001b[39m \\u001b[33mApp\\u001b[39m({ \\u001b[33mComponent\\u001b[39m\\u001b[33m,\\u001b[39m pageProps }) {\\u001b[0m\\n\\u001b[0m \\u001b[90m 5 | \\u001b[39m          \\u001b[36mreturn\\u001b[39m \\u001b[33m\\u003c\\u001b[39m\\u001b[33mComponent\\u001b[39m {\\u001b[33m...\\u001b[39mpageProps} \\u001b[33m/\\u001b[39m\\u001b[33m\\u003e\\u001b[39m\\u001b[0m\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n    at getNotFoundError (/tmp/next-install-30b4ef865f9429adb8b115ab2a555543adf95701fa158f0de4f2d94c098df321/node_modules/.pnpm/file+..+next-repo-e7bf3242f936f57b560d01b623239685_obn2ts3mxzhaaovlmlo6y7dlvq/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js:128:16)\\n    at processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at runNextTicks (node:internal/process/task_queues:64:3)\\n    at process.processImmediate (node:internal/timers:447:9)\\n    at async getModuleBuildError (/tmp/next-install-30b4ef865f9429adb8b115ab2a555543adf95701fa158f0de4f2d94c098df321/node_modules/.pnpm/file+..+next-repo-e7bf3242f936f57b560d01b623239685_obn2ts3mxzhaaovlmlo6y7dlvq/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/webpackModuleError.js:102:27)\\n    at async /tmp/next-install-30b4ef865f9429adb8b115ab2a555543adf95701fa158f0de4f2d94c098df321/node_modules/.pnpm/file+..+next-repo-e7bf3242f936f57b560d01b623239685_obn2ts3mxzhaaovlmlo6y7dlvq/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:21:49\\n    at async Promise.all (index 0)\\n    at async /tmp/next-install-30b4ef865f9429adb8b115ab2a555543adf95701fa158f0de4f2d94c098df321/node_modules/.pnpm/file+..+next-repo-e7bf3242f936f57b560d01b623239685_obn2ts3mxzhaaovlmlo6y7dlvq/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:19:21\"},\"gip\":true,\"scriptLoader\":[]}</script><div id=\"__next-build-watcher\" style=\"position: fixed; bottom: 10px; right: 20px; width: 0px; height: 0px; z-index: 99999;\"></div><next-route-announcer><p aria-live=\"assertive\" id=\"__next-route-announcer__\" role=\"alert\" style=\"border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; top: 0px; width: 1px; white-space: nowrap; overflow-wrap: normal;\"></p></next-route-announcer><nextjs-portal></nextjs-portal></body>"

  144 |       expect(
  145 |         await session.evaluate(() => document.documentElement.innerHTML)
> 146 |       ).toContain('index page')
      |         ^
  147 |
  148 |       await cleanup()
  149 |     })

  at Object.<anonymous> (development/acceptance/ReactRefreshLogBox-builtins.test.ts:146:9)

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

@ijjk
Copy link
Member

ijjk commented May 18, 2023

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
buildDuration 1m 7.6s 1m 4s -3.6s
buildDurationCached 13.2s 13.6s ⚠️ +343ms
nodeModulesSize 132 MB 132 MB ⚠️ +3.51 kB
nextStartRea..uration (ms) 568ms 585ms ⚠️ +17ms
Client Bundles (main, webpack) Overall decrease ✓
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
606-HASH.js gzip 24.7 kB 24.7 kB ⚠️ +1 B
9.HASH.js gzip 180 B 181 B ⚠️ +1 B
974ec2d0-HASH.js gzip 50.5 kB 50.5 kB
framework-HASH.js gzip 45.2 kB 45.2 kB
main-app-HASH.js gzip 218 B 215 B -3 B
main-HASH.js gzip 27.7 kB 27.6 kB -25 B
webpack-HASH.js gzip 1.7 kB 1.7 kB
Overall change 150 kB 150 kB -26 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall decrease ✓
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
_app-HASH.js gzip 195 B 194 B -1 B
_error-HASH.js gzip 182 B 182 B
amp-HASH.js gzip 504 B 507 B ⚠️ +3 B
css-HASH.js gzip 320 B 321 B ⚠️ +1 B
dynamic-HASH.js gzip 1.82 kB 1.82 kB -1 B
edge-ssr-HASH.js gzip 256 B 255 B -1 B
head-HASH.js gzip 350 B 351 B ⚠️ +1 B
hooks-HASH.js gzip 369 B 368 B -1 B
image-HASH.js gzip 3.83 kB 3.83 kB -1 B
index-HASH.js gzip 256 B 256 B
link-HASH.js gzip 2.61 kB 2.61 kB -2 B
routerDirect..HASH.js gzip 311 B 311 B
script-HASH.js gzip 385 B 385 B
withRouter-HASH.js gzip 309 B 307 B -2 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 11.8 kB 11.8 kB -4 B
Client Build Manifests
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
_buildManifest.js gzip 483 B 483 B
Overall change 483 B 483 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
index.html gzip 511 B 512 B ⚠️ +1 B
link.html gzip 524 B 528 B ⚠️ +4 B
withRouter.html gzip 505 B 507 B ⚠️ +2 B
Overall change 1.54 kB 1.55 kB ⚠️ +7 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
edge-ssr.js gzip 88.3 kB 88.3 kB ⚠️ +8 B
page.js gzip 144 kB 144 kB -3 B
Overall change 232 kB 232 kB ⚠️ +5 B
Middleware size Overall decrease ✓
vercel/next.js canary vercel/next.js kdy1/next-swc-opt Change
middleware-b..fest.js gzip 625 B 623 B -2 B
middleware-r..fest.js gzip 144 B 145 B ⚠️ +1 B
middleware.js gzip 21.3 kB 21 kB -239 B
edge-runtime..pack.js gzip 1.83 kB 1.83 kB
Overall change 23.9 kB 23.6 kB -240 B

Diffs

Diff for page.js

Diff too large to display

Diff for middleware-b..-manifest.js
@@ -7,97 +7,97 @@ self.__BUILD_MANIFEST = {
     "static/BUILD_ID/_ssgManifest.js",
   ],
   rootMainFiles: [
-    "static/chunks/webpack-aa3032f54a56dedc.js",
-    "static/chunks/framework-f36ad77a7a5c0ab0.js",
-    "static/chunks/974ec2d0-d7f52b4dad063e40.js",
-    "static/chunks/606-4dae050aadde594a.js",
-    "static/chunks/main-app-1eefed2ddecdfb53.js",
+    "static/chunks/webpack-47553a3eb0f031ba.js",
+    "static/chunks/framework-4c585c1ddda5a333.js",
+    "static/chunks/39549b6b-e31732129354aff9.js",
+    "static/chunks/7-b5043a496da30e49.js",
+    "static/chunks/main-app-d3b4213e3ce0f799.js",
   ],
   pages: {
     "/": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/index-73e61f551f6942fb.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/index-b27e261de6a98233.js",
     ],
     "/_app": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/_app-4ce47ffa64d5cee5.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/_app-9b05656d2c01065f.js",
     ],
     "/_error": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/_error-dc5dba09656e585f.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/_error-07e6ce9646113e18.js",
     ],
     "/amp": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/amp-adb784fc8419e472.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/amp-5b13834f1a6185c5.js",
     ],
     "/css": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
       "static/css/94fdbc56eafa2039.css",
-      "static/chunks/pages/css-9c2929f80dffa841.js",
+      "static/chunks/pages/css-a954fe90a591d776.js",
     ],
     "/dynamic": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/dynamic-b04ed3837db75eab.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/dynamic-5ec40dd0bfe5c9fe.js",
     ],
     "/edge-ssr": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/edge-ssr-f2aa541ccbb5616e.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/edge-ssr-d05e0e6c4b0f8c3c.js",
     ],
     "/head": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/head-e84a0745b30d7800.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/head-84516712a41e8774.js",
     ],
     "/hooks": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/hooks-67dc3793196997cf.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/hooks-098f77b3140ecce8.js",
     ],
     "/image": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/image-237e8fc3a7bdd8f2.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/image-b169e1386bd0843a.js",
     ],
     "/link": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/link-7bb5ea1a5a178db7.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/link-313bef9650226604.js",
     ],
     "/routerDirect": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/routerDirect-35dcdb6a65d3b21f.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/routerDirect-a4371e7bca96e027.js",
     ],
     "/script": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/script-57c7854259c205b6.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/script-eca1edb18604fceb.js",
     ],
     "/withRouter": [
-      "static/chunks/webpack-aa3032f54a56dedc.js",
-      "static/chunks/framework-f36ad77a7a5c0ab0.js",
-      "static/chunks/main-6282b2a5a96dee95.js",
-      "static/chunks/pages/withRouter-f375949da3842a3a.js",
+      "static/chunks/webpack-47553a3eb0f031ba.js",
+      "static/chunks/framework-4c585c1ddda5a333.js",
+      "static/chunks/main-e74af705c68fa910.js",
+      "static/chunks/pages/withRouter-05b7dc75b1131bd3.js",
     ],
   },
   ampFirstPages: [],
Diff for middleware-r..-manifest.js
@@ -1,6 +1,6 @@
 self.__REACT_LOADABLE_MANIFEST = {
   "dynamic.js -> ../components/hello": {
-    id: 3009,
-    files: ["static/chunks/9.61b34194ea8a102b.js"],
+    id: 3270,
+    files: ["static/chunks/270.21df5c6d1503180b.js"],
   },
 };
Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for _buildManifest.js
@@ -1,28 +1,28 @@
 self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
-  "/": ["static\u002Fchunks\u002Fpages\u002Findex-73e61f551f6942fb.js"],
-  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-dc5dba09656e585f.js"],
-  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-adb784fc8419e472.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-b27e261de6a98233.js"],
+  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-07e6ce9646113e18.js"],
+  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-5b13834f1a6185c5.js"],
   "/css": [
     "static\u002Fcss\u002F94fdbc56eafa2039.css",
-    "static\u002Fchunks\u002Fpages\u002Fcss-9c2929f80dffa841.js",
+    "static\u002Fchunks\u002Fpages\u002Fcss-a954fe90a591d776.js",
   ],
   "/dynamic": [
-    "static\u002Fchunks\u002Fpages\u002Fdynamic-b04ed3837db75eab.js",
+    "static\u002Fchunks\u002Fpages\u002Fdynamic-5ec40dd0bfe5c9fe.js",
   ],
   "/edge-ssr": [
-    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-f2aa541ccbb5616e.js",
+    "static\u002Fchunks\u002Fpages\u002Fedge-ssr-d05e0e6c4b0f8c3c.js",
   ],
-  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-e84a0745b30d7800.js"],
-  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-67dc3793196997cf.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-237e8fc3a7bdd8f2.js"],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-7bb5ea1a5a178db7.js"],
+  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-84516712a41e8774.js"],
+  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-098f77b3140ecce8.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-b169e1386bd0843a.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-313bef9650226604.js"],
   "/routerDirect": [
-    "static\u002Fchunks\u002Fpages\u002FrouterDirect-35dcdb6a65d3b21f.js",
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-a4371e7bca96e027.js",
   ],
-  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-57c7854259c205b6.js"],
+  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-eca1edb18604fceb.js"],
   "/withRouter": [
-    "static\u002Fchunks\u002Fpages\u002FwithRouter-f375949da3842a3a.js",
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-05b7dc75b1131bd3.js",
   ],
   sortedPages: [
     "\u002F",
Diff for _app-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [888],
   {
-    /***/ 3115: /***/ function (
+    /***/ 1113: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_app",
         function () {
-          return __webpack_require__(4943);
+          return __webpack_require__(7174);
         },
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 179], function () {
-      return __webpack_exec__(3115), __webpack_exec__(3985);
+      return __webpack_exec__(1113), __webpack_exec__(688);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for _error-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [820],
   {
-    /***/ 5374: /***/ function (
+    /***/ 3363: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_error",
         function () {
-          return __webpack_require__(8567);
+          return __webpack_require__(9911);
         },
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(5374);
+      return __webpack_exec__(3363);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for amp-HASH.js
@@ -1,17 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [216],
   {
-    /***/ 8510: /***/ function (
+    /***/ 8753: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(4660);
+      module.exports = __webpack_require__(4487);
 
       /***/
     },
 
-    /***/ 7010: /***/ function (
+    /***/ 5348: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -19,7 +19,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/amp",
         function () {
-          return __webpack_require__(6624);
+          return __webpack_require__(6539);
         },
       ]);
       if (false) {
@@ -28,7 +28,7 @@
       /***/
     },
 
-    /***/ 4660: /***/ function (module, exports, __webpack_require__) {
+    /***/ 4487: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -44,8 +44,8 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(959)
       );
-      const _ampcontext = __webpack_require__(382);
-      const _ampmode = __webpack_require__(2961);
+      const _ampcontext = __webpack_require__(2882);
+      const _ampmode = __webpack_require__(7069);
       function useAmp() {
         // Don't assign the context value to a variable to save bytes
         return (0, _ampmode.isInAmpMode)(
@@ -67,7 +67,7 @@
       /***/
     },
 
-    /***/ 6624: /***/ function (
+    /***/ 6539: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -84,7 +84,7 @@
         /* harmony export */
       });
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(8510);
+        __webpack_require__(8753);
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_amp__WEBPACK_IMPORTED_MODULE_0__
@@ -108,7 +108,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(7010);
+      return __webpack_exec__(5348);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [706],
   {
-    /***/ 860: /***/ function (
+    /***/ 6437: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function () {
-          return __webpack_require__(1234);
+          return __webpack_require__(8045);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 1234: /***/ function (
+    /***/ 8045: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -28,7 +28,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(1355);
+        __webpack_require__(1044);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -48,7 +48,7 @@
       /***/
     },
 
-    /***/ 1355: /***/ function (module) {
+    /***/ 1044: /***/ function (module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__qqNwY" };
 
@@ -61,7 +61,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(860);
+      return __webpack_exec__(6437);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [739],
   {
-    /***/ 3995: /***/ function (
+    /***/ 7753: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function () {
-          return __webpack_require__(3660);
+          return __webpack_require__(1802);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 8988: /***/ function (module, exports, __webpack_require__) {
+    /***/ 2406: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -45,7 +45,7 @@
         __webpack_require__(959)
       );
       const _loadable = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3262)
+        __webpack_require__(4114)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -146,7 +146,7 @@
       /***/
     },
 
-    /***/ 1343: /***/ function (
+    /***/ 795: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -173,7 +173,7 @@
       /***/
     },
 
-    /***/ 3262: /***/ function (
+    /***/ 4114: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -215,7 +215,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(959)
       );
-      const _loadablecontext = __webpack_require__(1343);
+      const _loadablecontext = __webpack_require__(795);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -450,7 +450,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 3660: /***/ function (
+    /***/ 1802: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -466,7 +466,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(6113);
+        __webpack_require__(2677);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -475,11 +475,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         () =>
           __webpack_require__
-            .e(/* import() */ 9)
-            .then(__webpack_require__.bind(__webpack_require__, 3009)),
+            .e(/* import() */ 270)
+            .then(__webpack_require__.bind(__webpack_require__, 3270)),
         {
           loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 3009],
+            webpack: () => [/*require.resolve*/ 3270],
           },
         }
       );
@@ -506,12 +506,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 6113: /***/ function (
+    /***/ 2677: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(8988);
+      module.exports = __webpack_require__(2406);
 
       /***/
     },
@@ -522,7 +522,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(3995);
+      return __webpack_exec__(7753);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [800],
   {
-    /***/ 6219: /***/ function (
+    /***/ 6027: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/edge-ssr",
         function () {
-          return __webpack_require__(3114);
+          return __webpack_require__(7338);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 3114: /***/ function (
+    /***/ 7338: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -48,7 +48,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(6219);
+      return __webpack_exec__(6027);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [645],
   {
-    /***/ 2899: /***/ function (
+    /***/ 6955: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/head",
         function () {
-          return __webpack_require__(6279);
+          return __webpack_require__(9343);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 6279: /***/ function (
+    /***/ 9343: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(8412);
+        __webpack_require__(9046);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -68,12 +68,12 @@
       /***/
     },
 
-    /***/ 8412: /***/ function (
+    /***/ 9046: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7305);
+      module.exports = __webpack_require__(3590);
 
       /***/
     },
@@ -84,7 +84,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(2899);
+      return __webpack_exec__(6955);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [757],
   {
-    /***/ 2304: /***/ function (
+    /***/ 7819: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/hooks",
         function () {
-          return __webpack_require__(8313);
+          return __webpack_require__(1780);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 8313: /***/ function (
+    /***/ 1780: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -79,7 +79,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(2304);
+      return __webpack_exec__(7819);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [358],
   {
-    /***/ 5885: /***/ function (
+    /***/ 801: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(8931);
+          return __webpack_require__(974);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 3655: /***/ function (module, exports, __webpack_require__) {
+    /***/ 997: /***/ function (module, exports, __webpack_require__) {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -36,14 +36,14 @@
         __webpack_require__(959)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7305)
+        __webpack_require__(3590)
       );
-      const _imageblursvg = __webpack_require__(8700);
-      const _imageconfig = __webpack_require__(2975);
-      const _imageconfigcontext = __webpack_require__(8415);
-      const _warnonce = __webpack_require__(717);
+      const _imageblursvg = __webpack_require__(2185);
+      const _imageconfig = __webpack_require__(4115);
+      const _imageconfigcontext = __webpack_require__(2111);
+      const _warnonce = __webpack_require__(6941);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2019)
+        __webpack_require__(3719)
       );
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -669,7 +669,7 @@
       /***/
     },
 
-    /***/ 8700: /***/ function (__unused_webpack_module, exports) {
+    /***/ 2185: /***/ function (__unused_webpack_module, exports) {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -731,7 +731,7 @@
       /***/
     },
 
-    /***/ 2019: /***/ function (__unused_webpack_module, exports) {
+    /***/ 3719: /***/ function (__unused_webpack_module, exports) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -765,7 +765,7 @@
       /***/
     },
 
-    /***/ 8931: /***/ function (
+    /***/ 974: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -786,8 +786,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(1527);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/image.js
-      var next_image = __webpack_require__(3960);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_biqbaboplfbrettd7655fr4n2y/node_modules/next/image.js
+      var next_image = __webpack_require__(8249);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ var nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -817,12 +817,12 @@
       /***/
     },
 
-    /***/ 3960: /***/ function (
+    /***/ 8249: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(3655);
+      module.exports = __webpack_require__(997);
 
       /***/
     },
@@ -833,7 +833,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(5885);
+      return __webpack_exec__(801);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [405],
   {
-    /***/ 3558: /***/ function (
+    /***/ 6481: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/",
         function () {
-          return __webpack_require__(5241);
+          return __webpack_require__(853);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5241: /***/ function (
+    /***/ 853: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -44,7 +44,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function () {
-      return __webpack_exec__(3558);
+      return __webpack_exec__(6481);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [644],
   {
-    /***/ 8662: /***/ function (
+    /***/ 7014: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function () {
-          return __webpack_require__(1488);
+          return __webpack_require__(1509);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 6994: /***/ function (module, exports) {
+    /***/ 7191: /***/ function (module, exports) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -86,7 +86,7 @@
       /***/
     },
 
-    /***/ 1310: /***/ function (module, exports) {
+    /***/ 5578: /***/ function (module, exports) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -121,7 +121,7 @@
       /***/
     },
 
-    /***/ 9213: /***/ function (module, exports, __webpack_require__) {
+    /***/ 3416: /***/ function (module, exports, __webpack_require__) {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -137,17 +137,17 @@
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(959)
       );
-      const _resolvehref = __webpack_require__(5453);
-      const _islocalurl = __webpack_require__(8293);
-      const _formaturl = __webpack_require__(9064);
-      const _utils = __webpack_require__(800);
-      const _addlocale = __webpack_require__(2621);
-      const _routercontext = __webpack_require__(3490);
-      const _approutercontext = __webpack_require__(4822);
-      const _useintersection = __webpack_require__(3261);
-      const _getdomainlocale = __webpack_require__(1310);
-      const _addbasepath = __webpack_require__(9747);
-      const _routerreducertypes = __webpack_require__(6994);
+      const _resolvehref = __webpack_require__(6336);
+      const _islocalurl = __webpack_require__(1087);
+      const _formaturl = __webpack_require__(4574);
+      const _utils = __webpack_require__(161);
+      const _addlocale = __webpack_require__(3144);
+      const _routercontext = __webpack_require__(5113);
+      const _approutercontext = __webpack_require__(8585);
+      const _useintersection = __webpack_require__(3922);
+      const _getdomainlocale = __webpack_require__(5578);
+      const _addbasepath = __webpack_require__(6376);
+      const _routerreducertypes = __webpack_require__(7191);
       const prefetched = new Set();
       function prefetch(router, href, as, options, appOptions, isAppRouter) {
         if (false) {
@@ -561,7 +561,7 @@
       /***/
     },
 
-    /***/ 3261: /***/ function (module, exports, __webpack_require__) {
+    /***/ 3922: /***/ function (module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -574,7 +574,7 @@
         },
       });
       const _react = __webpack_require__(959);
-      const _requestidlecallback = __webpack_require__(9839);
+      const _requestidlecallback = __webpack_require__(4124);
       const hasIntersectionObserver =
         typeof IntersectionObserver === "function";
       const observers = new Map();
@@ -687,7 +687,7 @@
       /***/
     },
 
-    /***/ 1488: /***/ function (
+    /***/ 1509: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -703,7 +703,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4595);
+        __webpack_require__(9495);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -734,12 +734,12 @@
       /***/
     },
 
-    /***/ 4595: /***/ function (
+    /***/ 9495: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(9213);
+      module.exports = __webpack_require__(3416);
 
       /***/
     },
@@ -750,7 +750,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(8662);
+      return __webpack_exec__(7014);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [58],
   {
-    /***/ 2188: /***/ function (
+    /***/ 7288: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/routerDirect",
         function () {
-          return __webpack_require__(3961);
+          return __webpack_require__(9003);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 3961: /***/ function (
+    /***/ 9003: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5866);
+        __webpack_require__(5664);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -54,12 +54,12 @@
       /***/
     },
 
-    /***/ 5866: /***/ function (
+    /***/ 5664: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(3985);
+      module.exports = __webpack_require__(688);
 
       /***/
     },
@@ -70,7 +70,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(2188);
+      return __webpack_exec__(7288);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [797],
   {
-    /***/ 1136: /***/ function (
+    /***/ 6695: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/script",
         function () {
-          return __webpack_require__(8563);
+          return __webpack_require__(8113);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 8563: /***/ function (
+    /***/ 8113: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(9096);
+        __webpack_require__(6071);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -67,12 +67,12 @@
       /***/
     },
 
-    /***/ 9096: /***/ function (
+    /***/ 6071: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(3507);
+      module.exports = __webpack_require__(4821);
 
       /***/
     },
@@ -83,7 +83,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(1136);
+      return __webpack_exec__(6695);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [807],
   {
-    /***/ 3551: /***/ function (
+    /***/ 8118: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/withRouter",
         function () {
-          return __webpack_require__(4094);
+          return __webpack_require__(991);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 4094: /***/ function (
+    /***/ 991: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -34,7 +34,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1527);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5866);
+        __webpack_require__(5664);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -53,12 +53,12 @@
       /***/
     },
 
-    /***/ 5866: /***/ function (
+    /***/ 5664: /***/ function (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(3985);
+      module.exports = __webpack_require__(688);
 
       /***/
     },
@@ -69,7 +69,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function () {
-      return __webpack_exec__(3551);
+      return __webpack_exec__(8118);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 606-HASH.js

Diff too large to display

Diff for 9.HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [9],
+  [270],
   {
-    /***/ 3009: /***/ function (
+    /***/ 3270: /***/ function (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
Diff for 974ec2d0-HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [961],
+  [972],
   {
-    /***/ 6392: /***/ function (
+    /***/ 8814: /***/ function (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -19,8 +19,8 @@
       /*
  Modernizr 3.0.0pre (Custom Build) | MIT
 */
-      var aa = __webpack_require__(6736),
-        ba = __webpack_require__(2100),
+      var aa = __webpack_require__(8510),
+        ba = __webpack_require__(4380),
         da = {
           usingClientEntryPoint: !1,
           Events: null,
Diff for page-b80bf5688f7e8387.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [760, 952, 185],
+  [760, 185, 952],
   {
-    /***/ 8372: /***/ function () {
+    /***/ 7746: /***/ function () {
       /***/
     },
   },
@@ -10,8 +10,8 @@
     /******/ var __webpack_exec__ = function (moduleId) {
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
-    /******/ __webpack_require__.O(0, [774, 961, 606, 744], function () {
-      return __webpack_exec__(8372);
+    /******/ __webpack_require__.O(0, [774, 972, 7, 744], function () {
+      return __webpack_exec__(7746);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for page-3aa0c16c128527ba.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [952, 185, 760],
   {
-    /***/ 8372: /***/ function () {
+    /***/ 7746: /***/ function () {
       /***/
     },
   },
@@ -10,8 +10,8 @@
     /******/ var __webpack_exec__ = function (moduleId) {
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
-    /******/ __webpack_require__.O(0, [774, 961, 606, 744], function () {
-      return __webpack_exec__(8372);
+    /******/ __webpack_require__.O(0, [774, 972, 7, 744], function () {
+      return __webpack_exec__(7746);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for layout-97e22..5c69f14c4.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [185, 952, 760],
   {
-    /***/ 8372: /***/ function () {
+    /***/ 7746: /***/ function () {
       /***/
     },
   },
@@ -10,8 +10,8 @@
     /******/ var __webpack_exec__ = function (moduleId) {
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
-    /******/ __webpack_require__.O(0, [774, 961, 606, 744], function () {
-      return __webpack_exec__(8372);
+    /******/ __webpack_require__.O(0, [774, 972, 7, 744], function () {
+      return __webpack_exec__(7746);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for framework-HASH.js
@@ -9528,7 +9528,7 @@
       exports,
       __webpack_require__
     ) {
-      var m = __webpack_require__(4351);
+      var m = __webpack_require__(4460);
       if (true) {
         exports.createRoot = m.createRoot;
         exports.hydrateRoot = m.hydrateRoot;
Diff for main-HASH.js

Diff too large to display

Diff for main-app-HASH.js
@@ -1,25 +1,25 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [744],
   {
-    /***/ 352: /***/ function (
+    /***/ 9323: /***/ function (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7658, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3518, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7466, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9269, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 8119, 23)
+        __webpack_require__.t.bind(__webpack_require__, 8612, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4656, 23)
+        __webpack_require__.t.bind(__webpack_require__, 249, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4417, 23)
+        __webpack_require__.t.bind(__webpack_require__, 432, 23)
       );
 
       /***/
@@ -30,8 +30,8 @@
     /******/ var __webpack_exec__ = function (moduleId) {
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
-    /******/ __webpack_require__.O(0, [774, 961, 606], function () {
-      return __webpack_exec__(3414), __webpack_exec__(352);
+    /******/ __webpack_require__.O(0, [774, 972, 7], function () {
+      return __webpack_exec__(8078), __webpack_exec__(9323);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for webpack-HASH.js
@@ -219,7 +219,7 @@
     /******/ __webpack_require__.u = function (chunkId) {
       /******/ // return url for filenames based on template
       /******/ return (
-        "static/chunks/" + chunkId + "." + "61b34194ea8a102b" + ".js"
+        "static/chunks/" + chunkId + "." + "21df5c6d1503180b" + ".js"
       );
       /******/
     };
Diff for index.html
@@ -11,23 +11,23 @@
       src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-aa3032f54a56dedc.js"
+      src="/_next/static/chunks/webpack-47553a3eb0f031ba.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-f36ad77a7a5c0ab0.js"
+      src="/_next/static/chunks/framework-4c585c1ddda5a333.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-6282b2a5a96dee95.js"
+      src="/_next/static/chunks/main-e74af705c68fa910.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-4ce47ffa64d5cee5.js"
+      src="/_next/static/chunks/pages/_app-9b05656d2c01065f.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/index-73e61f551f6942fb.js"
+      src="/_next/static/chunks/pages/index-b27e261de6a98233.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for link.html
@@ -11,23 +11,23 @@
       src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-aa3032f54a56dedc.js"
+      src="/_next/static/chunks/webpack-47553a3eb0f031ba.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-f36ad77a7a5c0ab0.js"
+      src="/_next/static/chunks/framework-4c585c1ddda5a333.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-6282b2a5a96dee95.js"
+      src="/_next/static/chunks/main-e74af705c68fa910.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-4ce47ffa64d5cee5.js"
+      src="/_next/static/chunks/pages/_app-9b05656d2c01065f.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-7bb5ea1a5a178db7.js"
+      src="/_next/static/chunks/pages/link-313bef9650226604.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for withRouter.html
@@ -11,23 +11,23 @@
       src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-aa3032f54a56dedc.js"
+      src="/_next/static/chunks/webpack-47553a3eb0f031ba.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-f36ad77a7a5c0ab0.js"
+      src="/_next/static/chunks/framework-4c585c1ddda5a333.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-6282b2a5a96dee95.js"
+      src="/_next/static/chunks/main-e74af705c68fa910.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-4ce47ffa64d5cee5.js"
+      src="/_next/static/chunks/pages/_app-9b05656d2c01065f.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/withRouter-f375949da3842a3a.js"
+      src="/_next/static/chunks/pages/withRouter-05b7dc75b1131bd3.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Commit: b34b5cf

@kdy1 kdy1 marked this pull request as ready for review May 19, 2023 05:18
@kdy1 kdy1 requested review from timneutkens, ijjk, shuding and a team as code owners May 19, 2023 05:18
Comment on lines 375 to 383
r###"
{
"packages": {
"next/server": {
"transform": "next/server/{{ kebabCase member }}"
}
}
}
"###
Copy link
Member

Choose a reason for hiding this comment

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

I guess we'll need a more granular configuration (or change our build outputs):

const serverExports = {
NextRequest: require('next/dist/server/web/spec-extension/request')
.NextRequest,
NextResponse: require('next/dist/server/web/spec-extension/response')
.NextResponse,
ImageResponse: require('next/dist/server/web/spec-extension/image-response')
.ImageResponse,
userAgentFromString: require('next/dist/server/web/spec-extension/user-agent')
.userAgentFromString,
userAgent: require('next/dist/server/web/spec-extension/user-agent')
.userAgent,
}

@kdy1 kdy1 requested a review from shuding May 22, 2023 03:12
Copy link
Member

@shuding shuding left a comment

Choose a reason for hiding this comment

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

Thanks a lot for this! I'll do some adjustments with a test case inside Next.js and ship it!

@shuding shuding requested review from huozhi and feedthejim as code owners May 22, 2023 16:45
@shuding
Copy link
Member

shuding commented May 22, 2023

⚠️ For reviewers: this PR isn't ready to merge though as some SyntaxContext related things need to be fixed first.

@kdy1 kdy1 marked this pull request as draft May 23, 2023 04:06
@kdy1 kdy1 marked this pull request as ready for review May 23, 2023 04:10
@shuding shuding merged commit ec8bf53 into canary May 23, 2023
@shuding shuding deleted the kdy1/next-swc-opt branch May 23, 2023 19:38
ijjk added a commit that referenced this pull request May 24, 2023
shuding added a commit that referenced this pull request May 24, 2023
### What?

This reverts commit 6ebc725 / #50247.

### Why?

#49972 is reverted due to bugs, and I'm retrying it.

### How?

Closes WEB-1072
Closes WEB-1097
Closes NEXT-1156 (as it's reopened by the revert PR)

fix #48469

---------

Co-authored-by: Shu Ding <g@shud.in>
hydRAnger pushed a commit to hydRAnger/next.js that referenced this pull request Jun 12, 2023
### What?


Implement a CJS optimizer for next-swc


### Why?

x-ref: https://vercel.slack.com/archives/C02HY34AKME/p1684341093462309

Assuming most CJS files are transpiled from ESM, we can mimic
tree-shaking using an AST transform.

### How?

Closes WEB-1072
Fixes vercel#48469


fix NEXT-1156

---------

Co-authored-by: Shu Ding <g@shud.in>
hydRAnger pushed a commit to hydRAnger/next.js that referenced this pull request Jun 12, 2023
### What?

This reverts commit 6ebc725 / vercel#50247.

### Why?

vercel#49972 is reverted due to bugs, and I'm retrying it.

### How?

Closes WEB-1072
Closes WEB-1097
Closes NEXT-1156 (as it's reopened by the revert PR)

fix vercel#48469

---------

Co-authored-by: Shu Ding <g@shud.in>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 23, 2023
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.

[NEXT-1156] Using an external package that imports next/server incorrectly bundles @vercel/og
3 participants