-
Notifications
You must be signed in to change notification settings - Fork 30k
[turbopack] Compute transitive side effects and use them to trim imports #86675
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
base: canary
Are you sure you want to change the base?
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Failing test suitesCommit: a5ab831 | About building and testing Next.js
Expand output● edge runtime node compatibility › [app] supports node:buffer ● edge runtime node compatibility › [pages/api] supports node:buffer ● edge runtime node compatibility › does not warn when using supported node modules
Expand output● app-dir static/dynamic handling › should respond correctly for dynamic route with dynamicParams false in layout ● app-dir static/dynamic handling › should respond correctly for dynamic route with dynamicParams false in layout ● app-dir static/dynamic handling › should respond correctly for partially dynamic route with dynamicParams false in layout ● app-dir static/dynamic handling › should respond correctly for partially dynamic route with dynamicParams false in layout ● app-dir static/dynamic handling › should use auto no cache when no fetch config ● app-dir static/dynamic handling › should use auto no cache when no fetch config ● app-dir static/dynamic handling › should correctly handle "default" cache statuses ● app-dir static/dynamic handling › should correctly handle "default" cache statuses ● app-dir static/dynamic handling › should still cache even though the W3C trace context headers ● app-dir static/dynamic handling › should still cache even though the W3C trace context headers ● app-dir static/dynamic handling › should warn for too many cache tags ● app-dir static/dynamic handling › should warn for too many cache tags ● app-dir static/dynamic handling › should propagate unstable_cache tags correctly ● app-dir static/dynamic handling › should propagate unstable_cache tags correctly ● app-dir static/dynamic handling › should infer a fetchCache of force-no-store when force-dynamic is used ● app-dir static/dynamic handling › should infer a fetchCache of force-no-store when force-dynamic is used ● app-dir static/dynamic handling › should infer a fetch cache of "force-cache" when force-dynamic is used on a fetch with revalidate ● app-dir static/dynamic handling › should infer a fetch cache of "force-cache" when force-dynamic is used on a fetch with revalidate ● app-dir static/dynamic handling › force-dynamic should supercede a "default" cache value ● app-dir static/dynamic handling › force-dynamic should supercede a "default" cache value ● app-dir static/dynamic handling › fetchCache config should supercede dynamic config when force-dynamic is used ● app-dir static/dynamic handling › fetchCache config should supercede dynamic config when force-dynamic is used ● app-dir static/dynamic handling › fetch ● app-dir static/dynamic handling › fetch ● app-dir static/dynamic handling › should honor force-static with fetch cache: no-store correctly ● app-dir static/dynamic handling › should honor force-static with fetch cache: no-store correctly ● app-dir static/dynamic handling › should correctly include headers instance in cache key ● app-dir static/dynamic handling › should correctly include headers instance in cache key ● app-dir static/dynamic handling › should correctly de-dupe fetch without next cache /react-fetch-deduping-node ● app-dir static/dynamic handling › should correctly de-dupe fetch without next cache /react-fetch-deduping-node ● app-dir static/dynamic handling › should correctly de-dupe fetch without next cache /react-fetch-deduping-edge ● app-dir static/dynamic handling › should correctly de-dupe fetch without next cache /react-fetch-deduping-edge ● app-dir static/dynamic handling › unstable-cache should work in pages/unstable-cache-node ● app-dir static/dynamic handling › unstable-cache should work in pages/unstable-cache-node ● app-dir static/dynamic handling › unstable-cache should work in pages/unstable-cache-edge ● app-dir static/dynamic handling › unstable-cache should work in pages/unstable-cache-edge ● app-dir static/dynamic handling › unstable-cache should work in pages/api/unstable-cache-node ● app-dir static/dynamic handling › unstable-cache should work in pages/api/unstable-cache-node ● app-dir static/dynamic handling › unstable-cache should work in pages/api/unstable-cache-edge ● app-dir static/dynamic handling › unstable-cache should work in pages/api/unstable-cache-edge ● app-dir static/dynamic handling › should not have cache tags header for non-minimal mode ● app-dir static/dynamic handling › should not have cache tags header for non-minimal mode ● app-dir static/dynamic handling › should correctly skip caching POST fetch for POST handler ● app-dir static/dynamic handling › should correctly skip caching POST fetch for POST handler ● app-dir static/dynamic handling › it should revalidate tag correctly with edge route handler ● app-dir static/dynamic handling › it should revalidate tag correctly with edge route handler ● app-dir static/dynamic handling › it should revalidate tag correctly with node route handler ● app-dir static/dynamic handling › it should revalidate tag correctly with node route handler ● app-dir static/dynamic handling › should not revalidate / when revalidate is not used ● app-dir static/dynamic handling › should not revalidate / when revalidate is not used ● app-dir static/dynamic handling › it should revalidate correctly with edge route handler ● app-dir static/dynamic handling › it should revalidate correctly with edge route handler ● app-dir static/dynamic handling › it should revalidate correctly with node route handler ● app-dir static/dynamic handling › it should revalidate correctly with node route handler ● app-dir static/dynamic handling › should revalidate all fetches during on-demand revalidate ● app-dir static/dynamic handling › should revalidate all fetches during on-demand revalidate ● app-dir static/dynamic handling › should correctly handle fetchCache = "force-no-store" ● app-dir static/dynamic handling › should correctly handle fetchCache = "force-no-store" ● app-dir static/dynamic handling › should revalidate correctly with config and fetch revalidate ● app-dir static/dynamic handling › should revalidate correctly with config and fetch revalidate ● app-dir static/dynamic handling › should not cache non-ok statusCode ● app-dir static/dynamic handling › should not cache non-ok statusCode ● app-dir static/dynamic handling › should not encode dynamic parameters as search parameters in RSC data ● app-dir static/dynamic handling › should not encode dynamic parameters as search parameters in RSC data ● app-dir static/dynamic handling › should output HTML/RSC files for static paths ● app-dir static/dynamic handling › should output HTML/RSC files for static paths ● app-dir static/dynamic handling › should have correct prerender-manifest entries ● app-dir static/dynamic handling › should have correct prerender-manifest entries ● app-dir static/dynamic handling › should output debug info for static bailouts ● app-dir static/dynamic handling › should output debug info for static bailouts ● app-dir static/dynamic handling › should log fetch metrics to the diagnostics directory ● app-dir static/dynamic handling › should log fetch metrics to the diagnostics directory ● app-dir static/dynamic handling › should have correct cache tags for prerendered path ● app-dir static/dynamic handling › should have correct cache tags for prerendered path ● app-dir static/dynamic handling › should correctly error and not update cache for ISR ● app-dir static/dynamic handling › should correctly error and not update cache for ISR ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving/app-page ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving/app-page ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving/route-handler ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving/route-handler ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving-edge/app-page ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving-edge/app-page ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving-edge/route-handler ● app-dir static/dynamic handling › should stream properly for /stale-cache-serving-edge/route-handler ● app-dir static/dynamic handling › should correctly handle statusCode with notFound + ISR ● app-dir static/dynamic handling › should correctly handle statusCode with notFound + ISR ● app-dir static/dynamic handling › should cache correctly for fetchCache = default-cache ● app-dir static/dynamic handling › should cache correctly for fetchCache = default-cache ● app-dir static/dynamic handling › should cache correctly when accessing search params opts into dynamic rendering ● app-dir static/dynamic handling › should cache correctly when accessing search params opts into dynamic rendering ● app-dir static/dynamic handling › should cache correctly for fetchCache = force-cache ● app-dir static/dynamic handling › should cache correctly for fetchCache = force-cache ● app-dir static/dynamic handling › should cache correctly for cache: "force-cache" and "revalidate" ● app-dir static/dynamic handling › should cache correctly for cache: "force-cache" and "revalidate" ● app-dir static/dynamic handling › should cache correctly for cache: no-store ● app-dir static/dynamic handling › should cache correctly for cache: no-store ● app-dir static/dynamic handling › should not error with dynamic server usage with force-static ● app-dir static/dynamic handling › should not error with dynamic server usage with force-static ● app-dir static/dynamic handling › should produce response with url from fetch ● app-dir static/dynamic handling › should produce response with url from fetch ● app-dir static/dynamic handling › should properly error when dynamic = "error" page uses dynamic ● app-dir static/dynamic handling › should properly error when dynamic = "error" page uses dynamic ● app-dir static/dynamic handling › should skip cache in draft mode ● app-dir static/dynamic handling › should skip cache in draft mode ● app-dir static/dynamic handling › should handle partial-gen-params with default dynamicParams correctly ● app-dir static/dynamic handling › should handle partial-gen-params with default dynamicParams correctly ● app-dir static/dynamic handling › should handle partial-gen-params with layout dynamicParams = false correctly ● app-dir static/dynamic handling › should handle partial-gen-params with layout dynamicParams = false correctly ● app-dir static/dynamic handling › should handle partial-gen-params with page dynamicParams = false correctly ● app-dir static/dynamic handling › should handle partial-gen-params with page dynamicParams = false correctly ● app-dir static/dynamic handling › should honor fetch cache in generateStaticParams ● app-dir static/dynamic handling › should honor fetch cache in generateStaticParams ● app-dir static/dynamic handling › should honor fetch cache correctly ● app-dir static/dynamic handling › should honor fetch cache correctly ● app-dir static/dynamic handling › should honor fetch cache correctly (edge) ● app-dir static/dynamic handling › should honor fetch cache correctly (edge) ● app-dir static/dynamic handling › should cache correctly with authorization header and revalidate ● app-dir static/dynamic handling › should cache correctly with authorization header and revalidate ● app-dir static/dynamic handling › should skip fetch cache when an authorization header is present after dynamic usage ● app-dir static/dynamic handling › should skip fetch cache when an authorization header is present after dynamic usage ● app-dir static/dynamic handling › should skip fetch cache when accessing request properties ● app-dir static/dynamic handling › should skip fetch cache when accessing request properties ● app-dir static/dynamic handling › should not cache correctly with POST method request init ● app-dir static/dynamic handling › should not cache correctly with POST method request init ● app-dir static/dynamic handling › should cache correctly with post method and revalidate ● app-dir static/dynamic handling › should cache correctly with post method and revalidate ● app-dir static/dynamic handling › should cache correctly with post method and revalidate edge ● app-dir static/dynamic handling › should cache correctly with post method and revalidate edge ● app-dir static/dynamic handling › should cache correctly with POST method and revalidate ● app-dir static/dynamic handling › should cache correctly with POST method and revalidate ● app-dir static/dynamic handling › should cache correctly with cookie header and revalidate ● app-dir static/dynamic handling › should cache correctly with cookie header and revalidate ● app-dir static/dynamic handling › should cache correctly with utf8 encoding ● app-dir static/dynamic handling › should cache correctly with utf8 encoding ● app-dir static/dynamic handling › should cache correctly with utf8 encoding edge ● app-dir static/dynamic handling › should cache correctly with utf8 encoding edge ● app-dir static/dynamic handling › should cache correctly handle JSON body ● app-dir static/dynamic handling › should cache correctly handle JSON body ● app-dir static/dynamic handling › should not throw Dynamic Server Usage error when using generateStaticParams with draftMode ● app-dir static/dynamic handling › should not throw Dynamic Server Usage error when using generateStaticParams with draftMode ● app-dir static/dynamic handling › should force SSR correctly for headers usage ● app-dir static/dynamic handling › should force SSR correctly for headers usage ● app-dir static/dynamic handling › should allow dynamic routes to access cookies ● app-dir static/dynamic handling › should allow dynamic routes to access cookies ● app-dir static/dynamic handling › should not error with generateStaticParams and dynamic data ● app-dir static/dynamic handling › should not error with generateStaticParams and dynamic data ● app-dir static/dynamic handling › should not error with force-dynamic and catch-all routes ● app-dir static/dynamic handling › should not error with force-dynamic and catch-all routes ● app-dir static/dynamic handling › should not error with generateStaticParams and authed data on revalidate ● app-dir static/dynamic handling › should not error with generateStaticParams and authed data on revalidate ● app-dir static/dynamic handling › should not filter out catch-all params with repeated segments in generateStaticParams ● app-dir static/dynamic handling › should not filter out catch-all params with repeated segments in generateStaticParams ● app-dir static/dynamic handling › should honor dynamic = "force-static" correctly ● app-dir static/dynamic handling › should honor dynamic = "force-static" correctly ● app-dir static/dynamic handling › should honor dynamic = "force-static" correctly (lazy) ● app-dir static/dynamic handling › should honor dynamic = "force-static" correctly (lazy) ● app-dir static/dynamic handling › should handle dynamicParams: false correctly ● app-dir static/dynamic handling › should handle dynamicParams: false correctly ● app-dir static/dynamic handling › should work with forced dynamic path ● app-dir static/dynamic handling › should work with forced dynamic path ● app-dir static/dynamic handling › should work with dynamic path no generateStaticParams ● app-dir static/dynamic handling › should work with dynamic path no generateStaticParams ● app-dir static/dynamic handling › should handle dynamicParams: true correctly ● app-dir static/dynamic handling › should handle dynamicParams: true correctly ● app-dir static/dynamic handling › should navigate to static path correctly ● app-dir static/dynamic handling › should navigate to static path correctly ● app-dir static/dynamic handling › should ssr dynamically when detected automatically with fetch cache option ● app-dir static/dynamic handling › should ssr dynamically when detected automatically with fetch cache option ● app-dir static/dynamic handling › should render not found pages correctly and fallback to the default one ● app-dir static/dynamic handling › should render not found pages correctly and fallback to the default one ● app-dir static/dynamic handling › should ssr dynamically when detected automatically with fetch revalidate option ● app-dir static/dynamic handling › should ssr dynamically when detected automatically with fetch revalidate option ● app-dir static/dynamic handling › should ssr dynamically when forced via config ● app-dir static/dynamic handling › should ssr dynamically when forced via config ● app-dir static/dynamic handling › useSearchParams › client › should bailout to client rendering - with suspense boundary ● app-dir static/dynamic handling › useSearchParams › client › should bailout to client rendering - with suspense boundary ● app-dir static/dynamic handling › useSearchParams › client › should have empty search params on force-static ● app-dir static/dynamic handling › useSearchParams › client › should have empty search params on force-static ● app-dir static/dynamic handling › useSearchParams › client › should have values from canonical url on rewrite ● app-dir static/dynamic handling › useSearchParams › client › should have values from canonical url on rewrite ● app-dir static/dynamic handling › useSearchParams › server response › should bailout to client rendering - with suspense boundary ● app-dir static/dynamic handling › useSearchParams › server response › should bailout to client rendering - with suspense boundary ● app-dir static/dynamic handling › useSearchParams › server response › should have empty search params on force-static ● app-dir static/dynamic handling › useSearchParams › server response › should have empty search params on force-static ● app-dir static/dynamic handling › usePathname › should have the correct values ● app-dir static/dynamic handling › usePathname › should have the correct values ● app-dir static/dynamic handling › usePathname › should have values from canonical url on rewrite ● app-dir static/dynamic handling › usePathname › should have values from canonical url on rewrite ● app-dir static/dynamic handling › unstable_noStore › should opt-out of static optimization ● app-dir static/dynamic handling › unstable_noStore › should opt-out of static optimization ● app-dir static/dynamic handling › unstable_noStore › should not opt-out of static optimization when used in next/cache ● app-dir static/dynamic handling › unstable_noStore › should not opt-out of static optimization when used in next/cache ● app-dir static/dynamic handling › unstable_cache › should retrieve the same value on second request ● app-dir static/dynamic handling › unstable_cache › should retrieve the same value on second request ● app-dir static/dynamic handling › unstable_cache › should bypass cache in draft mode ● app-dir static/dynamic handling › unstable_cache › should bypass cache in draft mode ● app-dir static/dynamic handling › unstable_cache › should not cache new result in draft mode ● app-dir static/dynamic handling › unstable_cache › should not cache new result in draft mode ● app-dir static/dynamic handling › unstable_cache › should be able to read the draft mode status ● app-dir static/dynamic handling › unstable_cache › should be able to read the draft mode status ● app-dir static/dynamic handling › unstable_cache › should not error when retrieving the value undefined ● app-dir static/dynamic handling › unstable_cache › should not error when retrieving the value undefined ● app-dir static/dynamic handling › unstable_cache › should not error when calling a fetch no-store ● app-dir static/dynamic handling › unstable_cache › should not error when calling a fetch no-store ● app-dir static/dynamic handling › unstable_cache › should not error when calling a fetch no-cache ● app-dir static/dynamic handling › unstable_cache › should not error when calling a fetch no-cache ● app-dir static/dynamic handling › should keep querystring on static page ● app-dir static/dynamic handling › should keep querystring on static page ● app-dir static/dynamic handling › Incremental cache limits › should load data only at build time even if response data size is greater than 2MB and FetchCache is possible ● app-dir static/dynamic handling › Incremental cache limits › should load data only at build time even if response data size is greater than 2MB and FetchCache is possible ● app-dir static/dynamic handling › should build dynamic param with edge runtime correctly ● app-dir static/dynamic handling › should build dynamic param with edge runtime correctly ● app-dir static/dynamic handling › updateTag/revalidateTag › should throw error when updateTag is called in route handler ● app-dir static/dynamic handling › updateTag/revalidateTag › should throw error when updateTag is called in route handler ● app-dir static/dynamic handling › updateTag/revalidateTag › should successfully update tag when called from server action ● app-dir static/dynamic handling › updateTag/revalidateTag › should successfully update tag when called from server action ● app-dir static/dynamic handling › updateTag/revalidateTag › revalidateTag work with max profile in server actions ● app-dir static/dynamic handling › updateTag/revalidateTag › revalidateTag work with max profile in server actions ● app-dir static/dynamic handling › updateTag/revalidateTag › should show deprecation warning for revalidateTag without second argument ● app-dir static/dynamic handling › updateTag/revalidateTag › should show deprecation warning for revalidateTag without second argument
Expand output● app-custom-routes › works with api prefix correctly › statically generates correctly with no dynamic usage ● app-custom-routes › works with api prefix correctly › does not statically generate with dynamic usage ● app-custom-routes › works with generateStaticParams correctly › responds correctly on /static/first/data.json ● app-custom-routes › works with generateStaticParams correctly › responds correctly on /static/second/data.json ● app-custom-routes › works with generateStaticParams correctly › responds correctly on /static/three/data.json ● app-custom-routes › works with generateStaticParams correctly › revalidates correctly on /revalidate-1/first/data.json ● app-custom-routes › works with generateStaticParams correctly › revalidates correctly on /revalidate-1/second/data.json ● app-custom-routes › works with generateStaticParams correctly › revalidates correctly on /revalidate-1/three/data.json ● app-custom-routes › basic fetch request with a response › made via a GET request › responds correctly on /basic/endpoint ● app-custom-routes › basic fetch request with a response › made via a GET request › responds correctly on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › made via a POST request › responds correctly on /basic/endpoint ● app-custom-routes › basic fetch request with a response › made via a POST request › responds correctly on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › made via a PUT request › responds correctly on /basic/endpoint ● app-custom-routes › basic fetch request with a response › made via a PUT request › responds correctly on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › made via a DELETE request › responds correctly on /basic/endpoint ● app-custom-routes › basic fetch request with a response › made via a DELETE request › responds correctly on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › made via a PATCH request › responds correctly on /basic/endpoint ● app-custom-routes › basic fetch request with a response › made via a PATCH request › responds correctly on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › abort via a GET request › aborts without error on /basic/endpoint ● app-custom-routes › basic fetch request with a response › abort via a GET request › aborts without error on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › abort via a POST request › aborts without error on /basic/endpoint ● app-custom-routes › basic fetch request with a response › abort via a POST request › aborts without error on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › abort via a PUT request › aborts without error on /basic/endpoint ● app-custom-routes › basic fetch request with a response › abort via a PUT request › aborts without error on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › abort via a DELETE request › aborts without error on /basic/endpoint ● app-custom-routes › basic fetch request with a response › abort via a DELETE request › aborts without error on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › abort via a PATCH request › aborts without error on /basic/endpoint ● app-custom-routes › basic fetch request with a response › abort via a PATCH request › aborts without error on /basic/vercel/endpoint ● app-custom-routes › basic fetch request with a response › route groups › routes to the correct handler ● app-custom-routes › basic fetch request with a response › request › can read query parameters ● app-custom-routes › basic fetch request with a response › request › can read query parameters (edge) ● app-custom-routes › basic fetch request with a response › response › supports the NextResponse.rewrite() helper ● app-custom-routes › basic fetch request with a response › response › supports the NextResponse.redirect() helper ● app-custom-routes › basic fetch request with a response › response › supports the NextResponse.json() helper ● app-custom-routes › body › can handle handle a streaming request and streaming response ● app-custom-routes › body › can handle handle a streaming request and streaming response (edge) ● app-custom-routes › body › can read a JSON encoded body ● app-custom-routes › body › can read a JSON encoded body (edge) ● app-custom-routes › body › can read a JSON encoded body for DELETE requests ● app-custom-routes › body › can read a JSON encoded body for OPTIONS requests ● app-custom-routes › body › can read a streamed JSON encoded body ● app-custom-routes › body › can read a streamed JSON encoded body (edge) ● app-custom-routes › body › can read the text body ● app-custom-routes › body › can read the text body (edge) ● app-custom-routes › context › provides params to routes with dynamic parameters ● app-custom-routes › context › provides params to routes with catch-all routes ● app-custom-routes › context › does not provide params to routes without dynamic parameters ● app-custom-routes › hooks › headers › gets the correct values ● app-custom-routes › hooks › cookies › gets the correct values ● app-custom-routes › hooks › req.cookies › gets the correct values ● app-custom-routes › hooks › (await cookies()).has() › gets the correct values ● app-custom-routes › hooks › redirect › can respond correctly ● app-custom-routes › hooks › permanentRedirect › can respond correctly ● app-custom-routes › hooks › notFound › can respond correctly in nodejs ● app-custom-routes › hooks › notFound › can respond correctly in edge ● app-custom-routes › error conditions › responds with 400 (Bad Request) when the requested method is not a valid HTTP method ● app-custom-routes › error conditions › responds with 405 (Method Not Allowed) when method is not implemented ● app-custom-routes › error conditions › responds with 500 (Internal Server Error) when the handler throws an error ● app-custom-routes › error conditions › responds with 500 (Internal Server Error) when the handler calls NextResponse.next() ● app-custom-routes › automatic implementations › implements HEAD on routes with GET already implemented ● app-custom-routes › automatic implementations › implements OPTIONS on routes ● app-custom-routes › edge functions › returns response using edge runtime ● app-custom-routes › edge functions › returns a response when headers are accessed ● app-custom-routes › dynamic = "force-static" › strips search, headers, and domain from request ● app-custom-routes › customized metadata routes › should work if conflict with metadata routes convention ● app-custom-routes › no response returned › should print an error when no response is returned ● app-custom-routes › no bundle error › should not print bundling warning about React
Expand output● after() in nodejs runtime › triggers revalidate from a page ● after() in nodejs runtime › triggers revalidate from a server action ● after() in nodejs runtime › triggers revalidate from a route handler ● after() in nodejs runtime › triggers revalidate from middleware ● after() in edge runtime › triggers revalidate from a page ● after() in edge runtime › triggers revalidate from a server action ● after() in edge runtime › triggers revalidate from a route handler ● after() in edge runtime › triggers revalidate from middleware
Expand output● standalone mode: runtimeServerDeploymentId › it should load app-page ● standalone mode: runtimeServerDeploymentId › it should load app-page-edge ● standalone mode: runtimeServerDeploymentId › it should load app-route ● standalone mode: runtimeServerDeploymentId › it should load app-route-edge ● standalone mode: runtimeServerDeploymentId › it should load pages-page ● standalone mode: runtimeServerDeploymentId › it should load pages-page-edge ● standalone mode: runtimeServerDeploymentId › it should load api/pages-route ● standalone mode: runtimeServerDeploymentId › it should load api/pages-route-edge |
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| buildDuration | 17.4s | 14.8s | N/A |
| buildDurationCached | 13.8s | 10.8s | N/A |
| nodeModulesSize | 457 MB | 457 MB | ✓ |
| nextStartRea..uration (ms) | 719ms | 721ms | N/A |
Client Bundles (main, webpack) Overall increase ⚠️
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| 4765.HASH.js gzip | 169 B | 169 B | ✓ |
| 6566-HASH.js gzip | 5.4 kB | 5.38 kB | N/A |
| 7740-HASH.js gzip | 53.2 kB | 52.5 kB | N/A |
| 8258-HASH.js gzip | 4.47 kB | 4.48 kB | N/A |
| b0b1acf2-HASH.js gzip | 62.3 kB | 62.3 kB | N/A |
| framework-HASH.js gzip | 59.7 kB | 59.7 kB | N/A |
| main-app-HASH.js gzip | 255 B | 252 B | N/A |
| main-HASH.js gzip | 38.5 kB | 38.8 kB | |
| webpack-HASH.js gzip | 1.69 kB | 1.69 kB | ✓ |
| Overall change | 40.4 kB | 40.6 kB |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | 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 use_side_effect_analysis | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 193 B | 192 B | N/A |
| _error-HASH.js gzip | 181 B | 182 B | N/A |
| css-HASH.js gzip | 335 B | 336 B | N/A |
| dynamic-HASH.js gzip | 1.81 kB | 1.8 kB | N/A |
| edge-ssr-HASH.js gzip | 254 B | 256 B | N/A |
| head-HASH.js gzip | 350 B | 350 B | ✓ |
| hooks-HASH.js gzip | 385 B | 383 B | N/A |
| image-HASH.js gzip | 580 B | 580 B | ✓ |
| index-HASH.js gzip | 259 B | 259 B | ✓ |
| link-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
| routerDirect..HASH.js gzip | 320 B | 317 B | N/A |
| script-HASH.js gzip | 386 B | 384 B | N/A |
| withRouter-HASH.js gzip | 315 B | 314 B | N/A |
| 1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
| Overall change | 1.29 kB | 1.29 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 737 B | 735 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| index.html gzip | 522 B | 524 B | N/A |
| link.html gzip | 537 B | 538 B | N/A |
| withRouter.html gzip | 518 B | 520 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size Overall increase ⚠️
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| edge-ssr.js gzip | 124 kB | 125 kB | |
| page.js gzip | 236 kB | 236 kB | N/A |
| Overall change | 124 kB | 125 kB |
Middleware size
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| middleware-b..fest.js gzip | 657 B | 657 B | ✓ |
| middleware-r..fest.js gzip | 155 B | 156 B | N/A |
| middleware.js gzip | 32.9 kB | 32.9 kB | N/A |
| edge-runtime..pack.js gzip | 846 B | 846 B | ✓ |
| Overall change | 1.5 kB | 1.5 kB | ✓ |
Next Runtimes
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| app-page-exp...dev.js gzip | 301 kB | 301 kB | ✓ |
| app-page-exp..prod.js gzip | 155 kB | 155 kB | ✓ |
| app-page-tur...dev.js gzip | 301 kB | 301 kB | ✓ |
| app-page-tur..prod.js gzip | 155 kB | 155 kB | ✓ |
| app-page-tur...dev.js gzip | 298 kB | 298 kB | N/A |
| app-page-tur..prod.js gzip | 153 kB | 153 kB | ✓ |
| app-page.run...dev.js gzip | 298 kB | 298 kB | N/A |
| app-page.run..prod.js gzip | 153 kB | 153 kB | ✓ |
| app-route-ex...dev.js gzip | 68.6 kB | 68.6 kB | ✓ |
| app-route-ex..prod.js gzip | 47.5 kB | 47.5 kB | ✓ |
| app-route-tu...dev.js gzip | 68.7 kB | 68.7 kB | ✓ |
| app-route-tu..prod.js gzip | 47.5 kB | 47.5 kB | ✓ |
| app-route-tu...dev.js gzip | 68.3 kB | 68.3 kB | ✓ |
| app-route-tu..prod.js gzip | 47.2 kB | 47.2 kB | ✓ |
| app-route.ru...dev.js gzip | 68.2 kB | 68.2 kB | ✓ |
| app-route.ru..prod.js gzip | 47.2 kB | 47.2 kB | ✓ |
| dist_client_...dev.js gzip | 326 B | 326 B | ✓ |
| dist_client_...dev.js gzip | 328 B | 328 B | ✓ |
| dist_client_...dev.js gzip | 320 B | 320 B | ✓ |
| dist_client_...dev.js gzip | 318 B | 318 B | ✓ |
| pages-api-tu...dev.js gzip | 41 kB | 41 kB | ✓ |
| pages-api-tu..prod.js gzip | 31.1 kB | 31.1 kB | ✓ |
| pages-api.ru...dev.js gzip | 41 kB | 41 kB | ✓ |
| pages-api.ru..prod.js gzip | 31.1 kB | 31.1 kB | ✓ |
| pages-turbo....dev.js gzip | 50.5 kB | 50.5 kB | ✓ |
| pages-turbo...prod.js gzip | 38 kB | 38 kB | ✓ |
| pages.runtim...dev.js gzip | 50.5 kB | 50.5 kB | ✓ |
| pages.runtim..prod.js gzip | 38 kB | 38 kB | ✓ |
| server.runti..prod.js gzip | 59.8 kB | 59.8 kB | ✓ |
| Overall change | 2.07 MB | 2.07 MB | ✓ |
build cache Overall increase ⚠️
| vercel/next.js canary | vercel/next.js use_side_effect_analysis | Change | |
|---|---|---|---|
| 0.pack gzip | 3.1 MB | 3.11 MB | |
| index.pack gzip | 94.4 kB | 93.2 kB | N/A |
| Overall change | 3.1 MB | 3.11 MB |
Diff details
Diff for page.js
Diff too large to display
Diff for middleware.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-8312816003c836ca.js"],
+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-0eb0f30aae464b15.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-108d239ccbd01df3.js",
+ "static\u002Fchunks\u002Fpages\u002F_error-7503b65793aeda9f.js",
],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-c7999ca7b397642c.js",
+ "static\u002Fchunks\u002Fpages\u002Fcss-14b4ec2febaa617d.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-1bf1b522b071e22a.js",
+ "static\u002Fchunks\u002Fpages\u002Fdynamic-24891a28ecfaf61d.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-9f01876339e3437b.js",
+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-f68757662e8cc4b5.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-edae0400cfdbe933.js"],
- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-c11320a657ec666d.js"],
+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-25d6de8fe25c2526.js"],
+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-34de3af84d413de3.js"],
"/image": [
- "static\u002Fchunks\u002F8258-9768ab794e68b1dc.js",
- "static\u002Fchunks\u002Fpages\u002Fimage-174112e04c93dfd7.js",
+ "static\u002Fchunks\u002F6316-07d5277e1ed2f1f9.js",
+ "static\u002Fchunks\u002Fpages\u002Fimage-7218f8bad067d350.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-69a06d3260afde67.js"],
+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-fb9703d62b3bdf85.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-eab8cdd319b4a9be.js",
+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-7a0b11345ff468cf.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-ae5bd9e9cf17793f.js",
+ "static\u002Fchunks\u002Fpages\u002Fscript-3fa0815377002305.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-b277df764694ea2e.js",
+ "static\u002Fchunks\u002Fpages\u002FwithRouter-608a306c0a09e667.js",
],
sortedPages: [
"\u002F",Diff for css-HASH.js
@@ -1,31 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[9813],
{
- /***/ 4131: /***/ (module) => {
- // extracted by mini-css-extract-plugin
- module.exports = { helloWorld: "css_helloWorld__aUdUq" };
-
- /***/
- },
-
- /***/ 6015: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/css",
- function () {
- return __webpack_require__(6854);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 6854: /***/ (
+ /***/ 1048: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -39,7 +15,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(1329);
/* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4131);
+ __webpack_require__(9541);
/* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
_css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -58,13 +34,37 @@
/***/
},
+
+ /***/ 4641: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/css",
+ function () {
+ return __webpack_require__(1048);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 9541: /***/ (module) => {
+ // extracted by mini-css-extract-plugin
+ module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6015)
+ __webpack_exec__(4641)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for dynamic-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 946: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(5104);
-
- /***/
- },
-
- /***/ 1036: /***/ (
+ /***/ 1266: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(1329);
/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(946);
+ __webpack_require__(1776);
/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -35,12 +25,12 @@
const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
() =>
__webpack_require__
- .e(/* import() */ 4765)
- .then(__webpack_require__.bind(__webpack_require__, 4765))
+ .e(/* import() */ 9715)
+ .then(__webpack_require__.bind(__webpack_require__, 9715))
.then((mod) => mod.Hello),
{
loadableGenerated: {
- webpack: () => [/*require.resolve*/ 4765],
+ webpack: () => [/*require.resolve*/ 9715],
},
}
);
@@ -67,7 +57,44 @@
/***/
},
- /***/ 3399: /***/ (
+ /***/ 1776: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(7760);
+
+ /***/
+ },
+
+ /***/ 3749: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ "use strict";
+ /* __next_internal_client_entry_do_not_use__ cjs */
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "LoadableContext", {
+ enumerable: true,
+ get: function () {
+ return LoadableContext;
+ },
+ });
+ const _interop_require_default = __webpack_require__(1532);
+ const _react = /*#__PURE__*/ _interop_require_default._(
+ __webpack_require__(7197)
+ );
+ const LoadableContext = _react.default.createContext(null);
+ if (false) {
+ } //# sourceMappingURL=loadable-context.shared-runtime.js.map
+
+ /***/
+ },
+
+ /***/ 6535: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -109,7 +136,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(7197)
);
- const _loadablecontextsharedruntime = __webpack_require__(9829);
+ const _loadablecontextsharedruntime = __webpack_require__(3749);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -342,7 +369,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
- /***/ 5104: /***/ (module, exports, __webpack_require__) => {
+ /***/ 7760: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -375,7 +402,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
__webpack_require__(7197)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(3399)
+ __webpack_require__(6535)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -475,7 +502,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
- /***/ 8695: /***/ (
+ /***/ 9585: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -483,7 +510,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
(window.__NEXT_P = window.__NEXT_P || []).push([
"/dynamic",
function () {
- return __webpack_require__(1036);
+ return __webpack_require__(1266);
},
]);
if (false) {
@@ -491,40 +518,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
-
- /***/ 9829: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- "use strict";
- /* __next_internal_client_entry_do_not_use__ cjs */
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "LoadableContext", {
- enumerable: true,
- get: function () {
- return LoadableContext;
- },
- });
- const _interop_require_default = __webpack_require__(1532);
- const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(7197)
- );
- const LoadableContext = _react.default.createContext(null);
- if (false) {
- } //# sourceMappingURL=loadable-context.shared-runtime.js.map
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(8695)
+ __webpack_exec__(9585)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for head-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 361: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/head",
- function () {
- return __webpack_require__(721);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 721: /***/ (
+ /***/ 5163: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -33,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(1329);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(5051);
+ __webpack_require__(7269);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -67,12 +50,29 @@
/***/
},
- /***/ 5051: /***/ (
+ /***/ 7269: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4981);
+ module.exports = __webpack_require__(2053);
+
+ /***/
+ },
+
+ /***/ 8563: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/head",
+ function () {
+ return __webpack_require__(5163);
+ },
+ ]);
+ if (false) {
+ }
/***/
},
@@ -82,7 +82,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(361)
+ __webpack_exec__(8563)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for hooks-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[9804],
{
- /***/ 1705: /***/ (
+ /***/ 1271: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/hooks",
+ function () {
+ return __webpack_require__(2631);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 2631: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -59,30 +76,13 @@
/***/
},
-
- /***/ 8637: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/hooks",
- function () {
- return __webpack_require__(1705);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(8637)
+ __webpack_exec__(1271)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for image-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2983],
{
- /***/ 798: /***/ (
+ /***/ 565: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/image",
+ function () {
+ return __webpack_require__(7813);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 7813: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -18,8 +35,8 @@
// EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(1329);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
- var next_image = __webpack_require__(8258);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
+ var next_image = __webpack_require__(6316);
var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
/* harmony default export */ const nextjs = {
src: "/_next/static/media/nextjs.cae0b805.png",
@@ -48,30 +65,13 @@
/***/
},
-
- /***/ 7643: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/image",
- function () {
- return __webpack_require__(798);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
- /******/ __webpack_require__.O(0, [8258, 636, 6593, 8792], () =>
- __webpack_exec__(7643)
+ /******/ __webpack_require__.O(0, [6316, 636, 6593, 8792], () =>
+ __webpack_exec__(565)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for link-HASH.js
@@ -1,43 +1,36 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 4183: /***/ (module, exports, __webpack_require__) => {
+ /***/ 443: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(2457);
+
+ /***/
+ },
+
+ /***/ 2185: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
- Object.defineProperty(exports, "getDomainLocale", {
+ Object.defineProperty(exports, "errorOnce", {
enumerable: true,
get: function () {
- return getDomainLocale;
+ return errorOnce;
},
});
- const _normalizetrailingslash = __webpack_require__(8887);
- const basePath =
- /* unused pure expression or super */ null && (false || "");
- function getDomainLocale(path, locale, locales, domainLocales) {
- if (false) {
- } else {
- return false;
- }
- }
- if (
- (typeof exports.default === "function" ||
- (typeof exports.default === "object" && exports.default !== null)) &&
- typeof exports.default.__esModule === "undefined"
- ) {
- Object.defineProperty(exports.default, "__esModule", {
- value: true,
- });
- Object.assign(exports.default, exports);
- module.exports = exports.default;
- } //# sourceMappingURL=get-domain-locale.js.map
+ let errorOnce = (_) => {};
+ if (false) {
+ } //# sourceMappingURL=error-once.js.map
/***/
},
- /***/ 5049: /***/ (module, exports, __webpack_require__) => {
+ /***/ 2457: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -64,17 +57,17 @@
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(7197)
);
- const _resolvehref = __webpack_require__(3575);
- const _islocalurl = __webpack_require__(4135);
- const _formaturl = __webpack_require__(3050);
- const _utils = __webpack_require__(6864);
- const _addlocale = __webpack_require__(1789);
- const _routercontextsharedruntime = __webpack_require__(1778);
- const _useintersection = __webpack_require__(7210);
- const _getdomainlocale = __webpack_require__(4183);
- const _addbasepath = __webpack_require__(6518);
- const _usemergedref = __webpack_require__(9011);
- const _erroronce = __webpack_require__(5193);
+ const _resolvehref = __webpack_require__(5687);
+ const _islocalurl = __webpack_require__(7127);
+ const _formaturl = __webpack_require__(58);
+ const _utils = __webpack_require__(2080);
+ const _addlocale = __webpack_require__(5709);
+ const _routercontextsharedruntime = __webpack_require__(4770);
+ const _useintersection = __webpack_require__(3290);
+ const _getdomainlocale = __webpack_require__(4615);
+ const _addbasepath = __webpack_require__(8422);
+ const _usemergedref = __webpack_require__(9667);
+ const _erroronce = __webpack_require__(2185);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -453,82 +446,7 @@
/***/
},
- /***/ 5193: /***/ (__unused_webpack_module, exports) => {
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "errorOnce", {
- enumerable: true,
- get: function () {
- return errorOnce;
- },
- });
- let errorOnce = (_) => {};
- if (false) {
- } //# sourceMappingURL=error-once.js.map
-
- /***/
- },
-
- /***/ 5529: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(5049);
-
- /***/
- },
-
- /***/ 6887: /***/ (
- __unused_webpack_module,
- __webpack_exports__,
- __webpack_require__
- ) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
- /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
- /* harmony export */
- });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
- __webpack_require__(1329);
- /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(5529);
- /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
- /*#__PURE__*/ __webpack_require__.n(
- next_link__WEBPACK_IMPORTED_MODULE_1__
- );
-
- function aLink(props) {
- return /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
- children: [
- /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
- children: "A Link page!",
- }),
- /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
- next_link__WEBPACK_IMPORTED_MODULE_1___default(),
- {
- href: "/",
- children: "Go to /",
- }
- ),
- ],
- });
- }
- var __N_SSP = true;
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
-
- /***/
- },
-
- /***/ 7210: /***/ (module, exports, __webpack_require__) => {
+ /***/ 3290: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -541,7 +459,7 @@
},
});
const _react = __webpack_require__(7197);
- const _requestidlecallback = __webpack_require__(1785);
+ const _requestidlecallback = __webpack_require__(6809);
const hasIntersectionObserver =
typeof IntersectionObserver === "function";
const observers = new Map();
@@ -653,7 +571,106 @@
/***/
},
- /***/ 9011: /***/ (module, exports, __webpack_require__) => {
+ /***/ 4615: /***/ (module, exports, __webpack_require__) => {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "getDomainLocale", {
+ enumerable: true,
+ get: function () {
+ return getDomainLocale;
+ },
+ });
+ const _normalizetrailingslash = __webpack_require__(903);
+ const basePath =
+ /* unused pure expression or super */ null && (false || "");
+ function getDomainLocale(path, locale, locales, domainLocales) {
+ if (false) {
+ } else {
+ return false;
+ }
+ }
+ if (
+ (typeof exports.default === "function" ||
+ (typeof exports.default === "object" && exports.default !== null)) &&
+ typeof exports.default.__esModule === "undefined"
+ ) {
+ Object.defineProperty(exports.default, "__esModule", {
+ value: true,
+ });
+ Object.assign(exports.default, exports);
+ module.exports = exports.default;
+ } //# sourceMappingURL=get-domain-locale.js.map
+
+ /***/
+ },
+
+ /***/ 6745: /***/ (
+ __unused_webpack_module,
+ __webpack_exports__,
+ __webpack_require__
+ ) => {
+ "use strict";
+ __webpack_require__.r(__webpack_exports__);
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+ /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+ /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+ /* harmony export */
+ });
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+ __webpack_require__(1329);
+ /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+ __webpack_require__(443);
+ /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
+ /*#__PURE__*/ __webpack_require__.n(
+ next_link__WEBPACK_IMPORTED_MODULE_1__
+ );
+
+ function aLink(props) {
+ return /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
+ children: [
+ /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
+ children: "A Link page!",
+ }),
+ /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+ next_link__WEBPACK_IMPORTED_MODULE_1___default(),
+ {
+ href: "/",
+ children: "Go to /",
+ }
+ ),
+ ],
+ });
+ }
+ var __N_SSP = true;
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+
+ /***/
+ },
+
+ /***/ 7595: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/link",
+ function () {
+ return __webpack_require__(6745);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 9667: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -730,30 +747,13 @@
/***/
},
-
- /***/ 9297: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/link",
- function () {
- return __webpack_require__(6887);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9297)
+ __webpack_exec__(7595)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for routerDirect-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 1576: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(5704);
-
- /***/
- },
-
- /***/ 7881: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/routerDirect",
- function () {
- return __webpack_require__(9851);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 9851: /***/ (
+ /***/ 3401: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(1329);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1576);
+ __webpack_require__(6702);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -62,13 +35,40 @@
/***/
},
+
+ /***/ 4787: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/routerDirect",
+ function () {
+ return __webpack_require__(3401);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 6702: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(728);
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(7881)
+ __webpack_exec__(4787)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for script-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 2777: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/script",
- function () {
- return __webpack_require__(9272);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 8662: /***/ (
+ /***/ 6868: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4550);
+ module.exports = __webpack_require__(1190);
/***/
},
- /***/ 9272: /***/ (
+ /***/ 7478: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(1329);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(8662);
+ __webpack_require__(6868);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -75,13 +58,30 @@
/***/
},
+
+ /***/ 7659: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/script",
+ function () {
+ return __webpack_require__(7478);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2777)
+ __webpack_exec__(7659)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for withRouter-HASH.js
@@ -1,17 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 1576: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(5704);
-
- /***/
- },
-
- /***/ 8478: /***/ (
+ /***/ 2528: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -26,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(1329);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(1576);
+ __webpack_require__(6702);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -45,7 +35,17 @@
/***/
},
- /***/ 9505: /***/ (
+ /***/ 6702: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(728);
+
+ /***/
+ },
+
+ /***/ 9763: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -53,7 +53,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/withRouter",
function () {
- return __webpack_require__(8478);
+ return __webpack_require__(2528);
},
]);
if (false) {
@@ -67,7 +67,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9505)
+ __webpack_exec__(9763)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for 6566-HASH.js
Diff too large to display
Diff for 7740-HASH.js
failed to diffDiff for 8258-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Diff for main-app-HASH.js
@@ -1,64 +1,64 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4977],
{
- /***/ 2584: /***/ () => {
- /* (ignored) */
- /***/
- },
-
- /***/ 5132: /***/ (
+ /***/ 1552: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6596, 23)
+ __webpack_require__.t.bind(__webpack_require__, 8958, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6101, 23)
+ __webpack_require__.t.bind(__webpack_require__, 711, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 7719, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7045, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 3524, 23)
+ __webpack_require__.t.bind(__webpack_require__, 266, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6044, 23)
+ __webpack_require__.t.bind(__webpack_require__, 3438, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 344, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7494, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6577, 23)
+ __webpack_require__.t.bind(__webpack_require__, 4627, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 7518, 23)
+ __webpack_require__.t.bind(__webpack_require__, 924, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 215, 23)
+ __webpack_require__.t.bind(__webpack_require__, 4766, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 8782, 23)
+ __webpack_require__.t.bind(__webpack_require__, 5564, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 3205, 23)
+ __webpack_require__.t.bind(__webpack_require__, 8095, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 576)
+ __webpack_require__.bind(__webpack_require__, 8350)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 766, 23)
+ __webpack_require__.t.bind(__webpack_require__, 8128, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 2283, 23)
+ __webpack_require__.t.bind(__webpack_require__, 5865, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 1257, 23)
+ __webpack_require__.t.bind(__webpack_require__, 4103, 23)
);
/***/
},
+
+ /***/ 6170: /***/ () => {
+ /* (ignored) */
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
@@ -66,8 +66,8 @@
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(
0,
- [9962, 7740],
- () => (__webpack_exec__(7620), __webpack_exec__(5132))
+ [4627, 8196],
+ () => (__webpack_exec__(1314), __webpack_exec__(1552))
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
CodSpeed Performance ReportMerging #86675 will not alter performanceComparing Summary
Footnotes
|
1fc4fb8 to
f544707
Compare
f544707 to
102d370
Compare
f281a83 to
f6e85cd
Compare
f6e85cd to
ec765fe
Compare
102d370 to
2f350c2
Compare
2f350c2 to
739fa8b
Compare
turbopack/crates/turbopack-core/src/module_graph/side_effect_module_info.rs
Outdated
Show resolved
Hide resolved
turbopack/crates/turbopack-core/src/module_graph/side_effect_module_info.rs
Show resolved
Hide resolved
.../src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs
Outdated
Show resolved
Hide resolved
turbopack/crates/turbopack-ecmascript/src/references/external_module.rs
Outdated
Show resolved
Hide resolved
...cution/turbopack/resolving/tsconfig-nodenext/issues/Error evaluating Node.js code-a1070b.txt
Outdated
Show resolved
Hide resolved
turbopack/crates/turbopack-ecmascript/src/tree_shake/side_effect_module.rs
Outdated
Show resolved
Hide resolved
1be5c4f to
e92c3d7
Compare
40ade7f to
432b0b8
Compare
432b0b8 to
fee30ab
Compare
e92c3d7 to
e7407a9
Compare
fee30ab to
89d4529
Compare
150bcd6 to
de24f72
Compare
ef939dd to
4227c7f
Compare
ff7a80a to
4798500
Compare
3d2ae59 to
6b9908f
Compare
4798500 to
fb7e305
Compare
6b9908f to
c54eda4
Compare
fb7e305 to
dc83467
Compare
dc83467 to
718268e
Compare
6c78c8f to
0d56058
Compare
turbopack/crates/turbopack-core/src/module_graph/side_effect_module_info.rs
Outdated
Show resolved
Hide resolved
0d56058 to
6f3358b
Compare
This commit adds analysis to remove imports that are only used for side effects when the target module is proven to be side-effect-free. Changes: - Integrate compute_side_effect_free_module_info() into binding_usage_info - Check ExportUsage::Evaluation to detect side-effect-only imports - Only remove imports when: 1. ImportUsage::SideEffects (no export-based tree-shaking) 2. ExportUsage::Evaluation (no exports used, only side effects) 3. Target module is in side_effect_free_modules set - Add debug logging to show which modules are side-effect-free - Fix typo: ModuleEvalutationIsSideEffectFree -> ModuleEvaluationIsSideEffectFree This enables more aggressive tree-shaking by removing unnecessary side-effect imports like 'import "./side-effect-free-module"'.
6f3358b to
a3e8303
Compare
c879985 to
92e2cc0
Compare

Use our new side effects analysis to statically analyze modules and integrate this into the
remove unused importslogic.If a module and its transitive dependencies have no side effects based on either declarations or static analysis then we can drop all 'ModuleEvaluation' imports. This can enhance tree shaking and bundle optimization.
From a performance perspective this is a regression since we need to perform an extra aggregation pass to compute side effects and then to trim edges
However, in practice the regression appears to be small
But how much does it save?
TODO