Don't import internally from types in next-env.d.ts#34394
Don't import internally from types in next-env.d.ts#34394balazsorban44 merged 4 commits intovercel:canaryfrom
next-env.d.ts#34394Conversation
ijjk
left a comment
There was a problem hiding this comment.
Are we able to add a test case to prevent regressing on this? If the test needs to be run outside the Next.js repo we can use a production test which is isolated
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@ijjk If the change is added in the future again it will be caught by our type checking before publishing next, because it's now excluded in tsconfig and so trying to import from there won't work, this is the same behavior as the I tried doing the same for |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
|
||
| declare module '*.png' { | ||
| const content: StaticImageData | ||
| const content: import('../dist/client/image').StaticImageData |
There was a problem hiding this comment.
TIL if I add a root import in this file TS will no longer treat it as a global declaration file, but using import within the ambient declaration works
Failing test suitesCommit: 3f68785
Expand output● next/jest › should work ● Test suite failed to run Read more about building and testing Next.js in contributing.md. |
Stats from current PRDefault Build (Decrease detected ✓)General Overall increase
|
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| buildDuration | 19.1s | 18.9s | -222ms |
| buildDurationCached | 7.1s | 7.2s | |
| nodeModulesSize | 368 MB | 368 MB |
Page Load Tests Overall decrease ⚠️
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 4.123 | 4.233 | |
| / avg req/sec | 606.33 | 590.55 | |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 2.093 | 2.148 | |
| /error-in-render avg req/sec | 1194.38 | 1163.91 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| 450.HASH.js gzip | 179 B | 179 B | ✓ |
| framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
| main-HASH.js gzip | 27.9 kB | 27.9 kB | ✓ |
| webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
| Overall change | 71.5 kB | 71.5 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 1.36 kB | 1.36 kB | ✓ |
| _error-HASH.js gzip | 194 B | 194 B | ✓ |
| amp-HASH.js gzip | 312 B | 312 B | ✓ |
| css-HASH.js gzip | 326 B | 326 B | ✓ |
| dynamic-HASH.js gzip | 2.57 kB | 2.57 kB | ✓ |
| head-HASH.js gzip | 350 B | 350 B | ✓ |
| hooks-HASH.js gzip | 919 B | 919 B | ✓ |
| image-HASH.js gzip | 5.01 kB | 5.01 kB | ✓ |
| index-HASH.js gzip | 263 B | 263 B | ✓ |
| link-HASH.js gzip | 2.26 kB | 2.26 kB | ✓ |
| routerDirect..HASH.js gzip | 321 B | 321 B | ✓ |
| script-HASH.js gzip | 383 B | 383 B | ✓ |
| withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
| 85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
| Overall change | 14.7 kB | 14.7 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 459 B | 459 B | ✓ |
| Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| index.html gzip | 532 B | 532 B | ✓ |
| link.html gzip | 545 B | 545 B | ✓ |
| withRouter.html gzip | 526 B | 526 B | ✓ |
| Overall change | 1.6 kB | 1.6 kB | ✓ |
Default Build with SWC (Decrease detected ✓)
General Overall increase ⚠️
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| buildDuration | 23s | 23.5s | |
| buildDurationCached | 7.2s | 7.3s | |
| nodeModulesSize | 368 MB | 368 MB |
Page Load Tests Overall decrease ⚠️
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 4.181 | 4.215 | |
| / avg req/sec | 597.91 | 593.18 | |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 2.09 | 2.088 | 0 |
| /error-in-render avg req/sec | 1195.96 | 1197.23 | +1.27 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| 450.HASH.js gzip | 179 B | 179 B | ✓ |
| framework-HASH.js gzip | 42.1 kB | 42.1 kB | ✓ |
| main-HASH.js gzip | 27.9 kB | 27.9 kB | ✓ |
| webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
| Overall change | 71.6 kB | 71.6 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
| _error-HASH.js gzip | 180 B | 180 B | ✓ |
| amp-HASH.js gzip | 305 B | 305 B | ✓ |
| css-HASH.js gzip | 321 B | 321 B | ✓ |
| dynamic-HASH.js gzip | 2.56 kB | 2.56 kB | ✓ |
| head-HASH.js gzip | 342 B | 342 B | ✓ |
| hooks-HASH.js gzip | 911 B | 911 B | ✓ |
| image-HASH.js gzip | 5.05 kB | 5.05 kB | ✓ |
| index-HASH.js gzip | 256 B | 256 B | ✓ |
| link-HASH.js gzip | 2.28 kB | 2.28 kB | ✓ |
| routerDirect..HASH.js gzip | 314 B | 314 B | ✓ |
| script-HASH.js gzip | 375 B | 375 B | ✓ |
| withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
| 85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
| Overall change | 14.7 kB | 14.7 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 458 B | 458 B | ✓ |
| Overall change | 458 B | 458 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | lfades/next.js fix/unexpected-type-import | Change | |
|---|---|---|---|
| index.html gzip | 533 B | 533 B | ✓ |
| link.html gzip | 547 B | 547 B | ✓ |
| withRouter.html gzip | 528 B | 528 B | ✓ |
| Overall change | 1.61 kB | 1.61 kB | ✓ |
Fixes #29788
This PR fixes an issue where
StaticImageDatais declared inside a global declaration file (image-types/global.d.ts) but it's not available in the published package.Having
StaticImageDatadefined globally works when working inside the Next.js repo because TypeScript takes care of adding global declarations to the scope, however the same isn't true when the package is published, the declaration file doesn't get included by default and therefore using theStaticImageDatafails inside the image component types.With this change the type is now defined in the Image component and the global declaration file is importing it from there instead, this file is also excluded in tsconfig to make sure it doesn't break when developing inside the Next.js repo, because the import goes to
/distBug
fixes #numbercontributing.md