chore(deps): update dependency typescript to v6#910
Conversation
ddaaa1f to
e60f965
Compare
d48930d to
4a41d58
Compare
b70f7b1 to
84a2934
Compare
e1df464 to
178eeb1
Compare
There was a problem hiding this comment.
Summary
This PR updates TypeScript from ~5.9.2 to ~6.0.0 in the dashboard, along with corresponding pnpm-lock.yaml updates. While the TypeScript version bump itself is straightforward, there's a critical issue with how the pnpm lockfile was regenerated that causes the rollup override to be lost.
Verdict: Blocked - requires lockfile regeneration to preserve the rollup WASM override.
Research notes
- TypeScript 6.0 Announcement - Key breaking changes identified:
typesnow defaults to[](previously auto-included all@types/*packages)baseUrlis deprecated as a module resolution lookup rootrootDirnow defaults to.instead of being inferreddom.iterableis now included indomlib (making explicitDOM.Iterableredundant but harmless)
Suggested next steps
-
Blocking: Regenerate pnpm-lock.yaml to properly apply the
rollup: npm:@rollup/wasm-nodeoverride from package.json. Runpnpm installin the dashboard directory to regenerate the lockfile with overrides correctly applied. -
Non-blocking: Consider adding
"types": ["node"]totsconfig.app.jsonandtsconfig.node.jsonto prevent potential "Cannot find name" errors due to TypeScript 6.0's new default behavior. -
Non-blocking: The
baseUrldeprecation in TypeScript 6.0 affects this project. When ready, migrate path mappings to use explicit prefixes (e.g.,"@/*": ["./src/*"]without relying onbaseUrl).
General findings
Lockfile Override Loss (Blocking)
The pnpm-lock.yaml had an overrides section at the root level that was removed during regeneration. The package.json still contains:
"pnpm": {
"overrides": {
"rollup": "npm:@rollup/wasm-node",
"lodash": "^4.18.0",
"mdast-util-to-hast": "^13.2.1"
}
}However, the new lockfile resolves rollup to the native binary version (@rollup/rollup-* packages for each platform) instead of the WASM version (@rollup/wasm-node). This could cause issues in environments where native binaries are not supported or where the WASM version is specifically required.
The lodash and mdast-util-to-hast overrides appear to be correctly applied (versions 4.18.1 and 13.2.1 respectively), but the rollup override is completely missing.
TypeScript 6.0 Compatibility
The project should be compatible with TypeScript 6.0, but there are two configuration concerns:
-
Missing
typesfield: TypeScript 6.0 changed the default fortypesfrom "auto-include all @types packages" to an empty array[]. The project only specifiestypesintsconfig.test.json. If the build encounters "Cannot find name" errors for Node.js globals (process,Buffer, etc.), add"types": ["node"]to the affected config files. -
Deprecated
baseUrl: The project usesbaseUrl: "."in bothtsconfig.jsonandtsconfig.app.json. This is deprecated in TypeScript 6.0 but continues to work. The recommended migration is to removebaseUrland use explicit prefixes in path mappings.
| autoInstallPeers: true | ||
| excludeLinksFromLockfile: false | ||
|
|
||
| overrides: |
There was a problem hiding this comment.
Blocking: The pnpm overrides section was removed from the lockfile during regeneration, causing the rollup: npm:@rollup/wasm-node override to be lost.
Why it matters: The package.json still specifies "rollup": "npm:@rollup/wasm-node" in the pnpm.overrides section, but the new lockfile resolves to the native binary version (@rollup/rollup-* packages) instead of the WASM version. This can cause build failures in environments where native binaries don't work or aren't available.
The diff shows @rollup/wasm-node@4.60.3 was replaced with platform-specific packages like @rollup/rollup-linux-x64-gnu, @rollup/rollup-darwin-arm64, etc.
Suggested fix: Regenerate the lockfile by running pnpm install in the dashboard/ directory. This should properly apply the overrides from package.json. Verify the regenerated lockfile contains @rollup/wasm-node references.
| "rollup-plugin-visualizer": "^7.0.0", | ||
| "tailwindcss": "^4.1.12", | ||
| "typescript": "~5.9.2", | ||
| "typescript": "~6.0.0", |
There was a problem hiding this comment.
Non-blocking: TypeScript 6.0 introduces breaking changes that may affect this project.
Why it matters: According to the TypeScript 6.0 release notes, two key changes could impact this project:
-
typesdefaults to[]: Previously all@types/*packages were auto-included. Now you must explicitly specify them. The project only hastypesconfigured intsconfig.test.json. -
baseUrlis deprecated: Used intsconfig.jsonandtsconfig.app.jsonfor path mapping@/*→./src/*.
Suggested fix: Monitor for compilation errors after upgrading. If you see "Cannot find name 'process'" or similar errors, add "types": ["node"] to tsconfig.app.json and tsconfig.node.json. For the baseUrl deprecation, plan to migrate to explicit path prefixes when convenient.
There was a problem hiding this comment.
Summary
This PR updates TypeScript from ~5.9.2 to ~6.0.0 in the dashboard. While TypeScript 6.0 brings new features (Temporal types, RegExp.escape, improved type inference), there are critical issues with the pnpm lockfile regeneration that block approval.
Verdict: Blocked - The pnpm-lock.yaml changes introduce serious issues that must be addressed before merging.
Research Notes
I reviewed the TypeScript 6.0 release notes and official documentation. Key findings:
-
Breaking Changes: TypeScript 6.0 introduces several breaking changes including
typesdefaulting to[],rootDirdefaulting to., and deprecation ofbaseUrlfor module resolution. -
Security Advisory: The lockfile shows
@ungap/structured-clone@1.3.0is deprecated due to CWE-502 (deserialization vulnerability) and should be updated to 1.3.1+. -
pnpm Overrides Issue: The lockfile's
overridessection was removed, but package.json still specifies overrides forrollup,lodash, andmdast-util-to-hast. This means security patches and custom resolutions won't be applied.
Suggested Next Steps
-
Blocking: Regenerate pnpm-lock.yaml properly to preserve the overrides from package.json. Run
pnpm installin the dashboard directory to regenerate the lockfile with overrides intact. -
Blocking: Address the
@ungap/structured-clonesecurity vulnerability by updating to 1.3.1+ (may require updating a dependent package). -
Non-blocking: Review tsconfig files for TypeScript 6.0 compatibility, particularly the deprecated
baseUrlusage intsconfig.app.jsonand roottsconfig.json.
General Findings
pnpm Overrides Lost (Critical)
The package.json specifies these pnpm overrides:
"pnpm": {
"overrides": {
"rollup": "npm:@rollup/wasm-node",
"lodash": "^4.18.0",
"mdast-util-to-hast": "^13.2.1"
}
}However, the lockfile no longer contains the overrides section at the top. This is evident because:
- Lines 7-11 in the old lockfile had the overrides section, now removed
- The lockfile now resolves to
rollup@4.60.3instead of@rollup/wasm-node@4.60.3
Why it matters: The lodash override (^4.18.0) was likely added for security reasons (lodash has had multiple CVEs). The rollup WASM override may be intentional for cross-platform consistency. Losing these overrides could introduce security vulnerabilities or platform-specific build issues.
Suggested fix: Re-run pnpm install in the dashboard directory to regenerate the lockfile while preserving the overrides from package.json. Verify the regenerated lockfile includes the overrides section and resolves rollup to @rollup/wasm-node.
Security Advisory: @ungap/structured-clone@1.3.0
The lockfile marks @ungap/structured-clone@1.3.0 as deprecated with message: "Potential CWE-502 - Update to 1.3.1 or higher"
Why it matters: CWE-502 is "Deserialization of Untrusted Data" - a security vulnerability that could allow attackers to exploit deserialization logic.
Suggested fix: Identify which package depends on @ungap/structured-clone and update it, or add a pnpm override to force version 1.3.1+.
TypeScript 6.0 Breaking Changes (Future Concern)
The project uses baseUrl with paths in both tsconfig.json and tsconfig.app.json:
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}TypeScript 6.0 deprecates baseUrl when used for module resolution. The recommended migration is:
"paths": {
"@/*": ["./src/*"]
}
// Remove baseUrl entirelyAdditionally, types defaults to [] in TS 6.0. The tsconfig.test.json correctly specifies types explicitly, so this should be fine.
Why it matters: While this may work today, future TypeScript versions (especially 7.0) will remove support entirely. Early migration prevents technical debt.
Suggested fix: Consider removing baseUrl from tsconfig files and using explicit relative paths or keeping paths with full prefixes.
There was a problem hiding this comment.
Summary
This PR updates TypeScript from ~5.9.2 to ~6.0.0 in the dashboard. While the TypeScript version bump itself appears compatible with the project's existing configuration, there is a critical regression in how the pnpm lockfile was regenerated.
Verdict: Blocked - The lockfile regeneration has dropped important pnpm overrides that were intentionally configured for security/compatibility reasons.
Research Notes
- TypeScript 6.0 Release Notes - Key changes include new defaults (
strict: true,types: [],rootDir: .), deprecated options, and preparation for TypeScript 7.0's native port. - typescript-eslint v8 compatibility - The project uses typescript-eslint ^8.46.2 which supports TypeScript 6.0 (the docs show compatibility with TypeScript >=4.8.4 <6.1.0).
Suggested Next Steps
- Blocking: Re-run
pnpm installin the dashboard directory to properly regenerate the lockfile with the overrides frompackage.jsonrespected. - Verify that
@rollup/wasm-nodeappears in the regenerated lockfile instead of the standardrolluppackage. - Run
pnpm testandpnpm buildto confirm TypeScript 6.0 doesn't introduce any type errors or build issues.
General Findings
Critical: pnpm overrides lost during lockfile regeneration
The original pnpm-lock.yaml had an overrides section at the top level that redirected rollup to npm:@rollup/wasm-node. This override was intentionally added (see git history) to use the WASM version of Rollup instead of the native binary. The regenerated lockfile has:
- Removed the
overridessection entirely from the lockfile header - Changed from
@rollup/wasm-node@4.60.3to standardrollup@4.60.3
While the package.json still contains the overrides in pnpm.overrides, they were not applied during lockfile regeneration. This suggests Renovate may have run pnpm install in a way that didn't respect these overrides, or there's a pnpm version mismatch.
The same applies to the lodash and mdast-util-to-hast overrides which were likely added for security patching purposes.
TypeScript 6.0 Compatibility Assessment
The project's tsconfig files are well-positioned for TypeScript 6.0 adoption:
strict: trueis already explicitly set (TS 6.0 default)noUncheckedSideEffectImports: trueis already set (TS 6.0 default)moduleResolution: bundleris used (modern resolution strategy)typesarray is explicitly defined intsconfig.test.json- No deprecated compiler options are in use
The main TypeScript 6.0 breaking changes that could affect projects are:
typesnow defaults to[]instead of auto-discovery - this project handles it correctlyrootDirnow defaults to.- not an issue since no explicit rootDir inference is relied upon- Various deprecated options - none appear to be in use here
General findings (auto-demoted from inline due to pre-validation)
- Non-blocking
dashboard/package.json:104— This override is correctly specified in package.json, but it wasn't applied to the lockfile (see comment on pnpm-lock.yaml:7).- (demoted: line 104 (side=RIGHT) is not part of any diff hunk in dashboard/package.json)
| lodash: ^4.18.0 | ||
| mdast-util-to-hast: ^13.2.1 | ||
|
|
||
| importers: |
There was a problem hiding this comment.
Blocking: The overrides section that was present in the original lockfile has been removed. The original file had:
overrides:
rollup: npm:@rollup/wasm-node
lodash: ^4.18.0
mdast-util-to-hast: ^13.2.1These overrides were intentionally configured in package.json to:
- Use the WASM version of Rollup instead of native binaries (likely for security/compatibility)
- Patch lodash to a secure version
- Update mdast-util-to-hast for compatibility
The fact that these overrides aren't reflected in the regenerated lockfile indicates that pnpm install was run incorrectly, or the pnpm version used doesn't properly support the pnpm.overrides field in package.json.
Suggested fix: Re-run pnpm install in the dashboard directory to regenerate the lockfile with overrides properly applied. Verify by checking that @rollup/wasm-node appears in the packages section instead of standard rollup.
There was a problem hiding this comment.
Summary
This PR updates TypeScript from ~5.9.2 to ~6.0.0 in the dashboard package, along with corresponding pnpm-lock.yaml updates. While TypeScript 6.0 itself is compatible with the existing toolchain (typescript-eslint v8.58.1 supports TS 6.0), there's a critical issue with how the lock file was regenerated.
Verdict: Blocked - The pnpm overrides have been silently dropped from the lock file, removing important security constraints.
Research notes
- TypeScript 6.0 Release Notes - TypeScript 6.0 introduces breaking changes including
strictdefaulting totrue,typesdefaulting to[], and various deprecated options. - typescript-eslint compatibility - Version 8.58.1 supports TypeScript
>=4.8.4 <6.1.0, which includes 6.0.3.
Suggested next steps
- Blocking: Regenerate the lock file while preserving the pnpm overrides from
package.json. Runpnpm installin the dashboard directory with the overrides intact. - Test the build with TypeScript 6.0 to identify any new type errors from the stricter defaults (especially around
types: []potentially causing missing global type issues). - Verify that lodash 4.18.1 and mdast-util-to-hast 13.2.1+ are still being used after regenerating the lock file properly.
General findings
Critical: pnpm overrides removed from lock file
The original pnpm-lock.yaml contained these security overrides at the top level:
overrides:
rollup: npm:@rollup/wasm-node
lodash: ^4.18.0
mdast-util-to-hast: ^13.2.1These have been completely removed in the updated lock file, even though they still exist in package.json. This means:
-
Security vulnerability override lost: The
lodashoverride pins to ^4.18.0 due to known prototype pollution vulnerabilities in earlier versions. Without the override, transitive dependencies could resolve to vulnerable versions. -
Rollup WASM → Native swap: The project intentionally used
@rollup/wasm-node(likely for cross-platform consistency or sandboxing). The new lock file uses native platform-specific rollup packages instead (@rollup/rollup-linux-x64-gnu,@rollup/rollup-darwin-arm64, etc.). -
mdast-util-to-hast override lost: This override was likely added to fix a specific compatibility issue.
The lock file should always respect the overrides in package.json. This appears to be a regeneration issue where pnpm install was run without properly reading the overrides section.
There was a problem hiding this comment.
Summary
This PR upgrades TypeScript from ~5.9.2 to ~6.0.0 in the dashboard package. TypeScript 6.0 is a major version release that serves as a bridge to TypeScript 7.0 (the native port) and introduces several breaking changes and deprecations.
Verdict: Needs changes before merging — while the upgrade itself is reasonable, there are configuration issues that need to be addressed to avoid breakage.
Research notes
Fetched the TypeScript 6.0 announcement and typescript-eslint dependency versions. Key findings:
-
typescript-eslint v8.x supports TypeScript 6.0 — The lockfile shows typescript-eslint@8.58.1 with typescript@6.0.3, confirming compatibility.
-
Breaking changes in TypeScript 6.0 that may affect this project:
typesnow defaults to[]instead of auto-including all@types/*packagesbaseUrlis deprecated when used as a lookup root for module resolutionstrictdefaults totrue(already explicitly set in your configs)noUncheckedSideEffectImportsdefaults totrue(already explicitly set)- Various other deprecations targeting TypeScript 7.0 removal
-
The pnpm-lock.yaml shows the overrides section was removed — The original lockfile had
overridesforrollup,lodash, andmdast-util-to-hast. These should be preserved if still needed.
Suggested next steps
- Blocking: Preserve the
overridessection in pnpm-lock.yaml if those security patches are still needed (lodash ^4.18.0 suggests security fixes) - Blocking: Address the deprecated
baseUrlusage in tsconfig.json and tsconfig.app.json - Non-blocking: Consider adding
"types": ["node"]to tsconfig.app.json if Node.js globals are used - Run
pnpm install,pnpm lint, andpnpm testto verify no new type errors appear
General findings
Breaking Change: baseUrl Deprecation
TypeScript 6.0 deprecated baseUrl as a module resolution lookup root. Your config uses:
// tsconfig.json & tsconfig.app.json
{
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}In TypeScript 6.0+, this pattern should migrate to explicit path prefixes without baseUrl:
{
"paths": {
"@/*": ["./src/*"]
}
}The baseUrl acted as a catch-all that could resolve import x from "someModule" to ./someModule, which bundlers typically don't do. Since you're using moduleResolution: "bundler", removing baseUrl aligns better with runtime behavior.
Security Override Removal
The diff shows the overrides section was removed from pnpm-lock.yaml:
overrides:
rollup: npm:@rollup/wasm-node
lodash: ^4.18.0
mdast-util-to-hast: ^13.2.1The lodash: ^4.18.0 override specifically looks like a security patch (lodash had prototype pollution vulnerabilities). Verify these overrides are either:
- No longer needed due to transitive dependency updates, OR
- Preserved in package.json's
pnpm.overridesfield
TypeScript 6.0 Compatibility
The typescript-eslint@^8.46.2 in package.json resolves to 8.58.1 which does support TypeScript 6.0.3 per the lockfile. However, if you encounter version mismatch warnings, ensure all typescript-eslint packages are on compatible versions.
Testing Recommendation
After any TypeScript major version upgrade, run:
cd dashboard
pnpm install
pnpm lint
pnpm test
pnpm buildPay special attention to any new errors around:
- Missing global types (due to
types: []default) - Import resolution changes
- Union type ordering in declaration files (if you emit .d.ts files)
There was a problem hiding this comment.
Summary
This PR updates TypeScript from ~5.9.2 to ~6.0.0 in the dashboard package. While TypeScript 6.0 is compatible with the project's tooling (typescript-eslint@8.58.1 supports TS <6.1.0, MSW supports TS >=4.8), this PR introduces a critical regression: the pnpm overrides defined in package.json are no longer reflected in the regenerated lockfile.
Verdict: Blocked - The missing overrides represent security and compatibility regressions that must be addressed before merging.
Research notes
- Fetched TypeScript 6.0 announcement - confirmed breaking changes and deprecations
- Verified typescript-eslint@8.58.1 peer dependencies:
typescript: ">=4.8.4 <6.1.0"- TS 6.0.3 is within range - Verified MSW@2.13.2 peer dependencies:
typescript: ">= 4.8.x"- compatible - Checked pnpm lockfile format v9.0 - overrides section should appear at top level under
settings
Suggested next steps
-
Blocking: Restore pnpm overrides in the lockfile. Run
pnpm install --forceor investigate why pnpm is not respecting the overrides in package.json:"pnpm": { "overrides": { "rollup": "npm:@rollup/wasm-node", "lodash": "^4.18.0", "mdast-util-to-hast": "^13.2.1" } }
-
Non-blocking: Consider explicitly adding
"types": []to tsconfig files to acknowledge the TS 6.0 default change and avoid future confusion. -
Non-blocking: The
baseUrloption is deprecated in TypeScript 6.0 (will be removed in 7.0). Consider migrating path mappings to use explicit prefixes instead.
General findings
TypeScript 6.0 Breaking Changes Impact
The project's tsconfigs explicitly set most options that changed defaults in TS 6.0 (strict: true, noUncheckedSideEffectImports: true, target: "ES2022"), so most breaking changes are already accounted for. However:
typesfield: TS 6.0 now defaultstypesto[]instead of auto-including all@types/*packages. The test config explicitly specifiestypes: ["vitest/globals", "@testing-library/jest-dom"], which is correct. No global@types/nodeusage detected outside tests.baseUrldeprecation: Bothtsconfig.jsonandtsconfig.app.jsonusebaseUrl: "."which is deprecated. Migration path: removebaseUrland add./src/prefix to path mappings.
Rollup Override Loss
The original lockfile used @rollup/wasm-node (WASM-based Rollup) via pnpm override, likely to avoid native binding issues in CI/Docker environments. The new lockfile uses native platform-specific Rollup packages (@rollup/rollup-linux-x64-gnu, etc.). This may cause build failures in environments without proper native compilation support.
General findings (auto-demoted from inline due to pre-validation)
- Blocking
dashboard/pnpm-lock.yaml:66— Native Rollup packages are now installed instead of@rollup/wasm-node. Lines 66-138 show platform-specific native packages like@rollup/rollup-linux-x64-gnu,@rollup/rollup-darwin-arm64, etc.- (demoted: line 66 (side=RIGHT) is not part of any diff hunk in dashboard/pnpm-lock.yaml)
| autoInstallPeers: true | ||
| excludeLinksFromLockfile: false | ||
|
|
||
| overrides: |
There was a problem hiding this comment.
Blocking: The entire overrides section has been removed from the lockfile. This means the pnpm overrides specified in package.json are not being applied:
"pnpm": {
"overrides": {
"rollup": "npm:@rollup/wasm-node",
"lodash": "^4.18.0",
"mdast-util-to-hast": "^13.2.1"
}
}Why it matters:
- rollup: The WASM version was intentionally chosen, likely to avoid native binding issues in CI/Docker. Native rollup packages may fail in certain environments.
- lodash: The
^4.18.0override addresses CVE-2021-23337 (Command Injection) and other vulnerabilities in earlier versions. Without this, vulnerable lodash versions could be transitive dependencies. - mdast-util-to-hast: The
^13.2.1override fixes specific bugs or compatibility issues.
Suggested fix: Regenerate the lockfile ensuring pnpm respects the overrides. Try:
rm dashboard/pnpm-lock.yaml
cd dashboard && pnpm installIf overrides still don't appear, check pnpm version compatibility with lockfileVersion 9.0.
| "rollup-plugin-visualizer": "^7.0.0", | ||
| "tailwindcss": "^4.1.12", | ||
| "typescript": "~5.9.2", | ||
| "typescript": "~6.0.0", |
There was a problem hiding this comment.
Non-blocking: TypeScript version updated to ~6.0.0 (resolves to 6.0.3).
Why it matters: TypeScript 6.0 is compatible with your tooling chain:
- typescript-eslint@8.58.1 supports
typescript >=4.8.4 <6.1.0✓ - MSW@2.13.2 supports
typescript >= 4.8.x✓ - Vite, Vitest, and other dependencies are compatible
However, TS 6.0 introduces breaking changes. Your tsconfigs already handle most of them by explicitly setting:
strict: true(TS 6.0 default)noUncheckedSideEffectImports: true(TS 6.0 default)target: "ES2022"(overrides TS 6.0'ses2025default)
Caveat: The baseUrl option used in both tsconfig.json and tsconfig.app.json is deprecated in TS 6.0 and will be removed in TS 7.0. Consider migrating to explicit path prefixes:
"paths": {
"@/*": ["./src/*"]
}
// instead of baseUrl + pathsSuggested fix: No immediate action required, but plan to migrate away from baseUrl before adopting TypeScript 7.0.
There was a problem hiding this comment.
Summary
This PR updates TypeScript from ~5.9.2 to ~6.0.0 in the dashboard application. While TypeScript 6.0 is a major version upgrade with several breaking changes and deprecations, the project's current configuration appears well-positioned for most of these changes. However, there is a critical issue with the pnpm overrides being lost in the lock file that must be addressed before this can be merged.
Verdict: BLOCKED - The removal of pnpm overrides from the lock file introduces security vulnerabilities and potential compatibility issues that must be fixed.
Research notes
I reviewed the TypeScript 6.0 release notes and official documentation. Key changes include:
- Breaking changes:
baseUrlis deprecated,typesnow defaults to[],strictdefaults totrue - Deprecations:
target: es5,--downlevelIteration,--moduleResolution node/node10,amd/umd/systemjsmodule values,--esModuleInterop false,--alwaysStrict false,outFile, legacymodulesyntax for namespaces,assertskeyword on imports,no-default-libdirectives - New features:
es2025target/lib, Temporal types,getOrInsertMap methods,RegExp.escape, improved type inference forthis-less functions
Suggested next steps
- BLOCKING: Restore pnpm overrides in the lock file by regenerating it with
pnpm installto ensure security patches for lodash and mdast-util-to-hast are applied, and the WASM version of rollup is used - Consider removing the deprecated
baseUrloption from tsconfig files and updating path mappings to use explicit prefixes - Add explicit
typesarrays to tsconfig.app.json and tsconfig.node.json to avoid pulling in unnecessary @types packages - Run the full test suite after fixing the overrides to verify TypeScript 6.0 compatibility
General findings
Critical: pnpm overrides removed from lock file
The package.json specifies important pnpm overrides:
rollup: npm:@rollup/wasm-node- WASM version for cross-platform compatibilitylodash: ^4.18.0- Security patch for known vulnerabilitiesmdast-util-to-hast: ^13.2.1- Compatibility/security fix
These overrides are present in package.json but were removed from pnpm-lock.yaml. This means the lockfile will NOT enforce these security patches and compatibility fixes, potentially exposing the project to known vulnerabilities.
Additionally, the lock file now resolves to native platform-specific rollup binaries (@rollup/rollup-linux-x64-gnu, etc.) instead of the WASM version, which could cause issues in certain environments.
TypeScript 6.0 Breaking Changes Assessment
Good news: The project already explicitly sets strict: true, so that default change won't affect it. The test config already specifies types explicitly.
Needs attention:
baseUrlis deprecated in TypeScript 6.0. The project uses"baseUrl": "."with"paths": { "@/*": ["./src/*"] }in all three tsconfig files. Per TypeScript 6.0 docs, developers should removebaseUrland add explicit prefixes to paths:"@/*": ["./src/*"]becomes"@/*": ["src/*"](since baseUrl was ".").- The
typesfield defaults to[]in TS 6.0. While tsconfig.test.json explicitly sets types, tsconfig.app.json and tsconfig.node.json do not. This should generally be fine since they don't rely on global types, but it's worth verifying the build works correctly.
Rollup resolution change
The lock file changed from @rollup/wasm-node@4.60.3 to platform-specific native binaries. This is a consequence of losing the pnpm override. The native binaries should work fine for most cases, but the WASM version was likely chosen for specific compatibility reasons.
There was a problem hiding this comment.
Summary
This PR updates TypeScript from version 5.9.x to 6.0.0 in the dashboard package. TypeScript 6.0 is a significant release that serves as a bridge to TypeScript 7.0 (the native port). The update appears mostly straightforward, but there are some important considerations:
Verdict: Needs changes before merging - there's a mismatch between package.json overrides and the lockfile.
Research notes
I reviewed the TypeScript 6.0 announcement which highlights several breaking changes and deprecations:
baseUrlis deprecated - The project usesbaseUrlintsconfig.app.jsonandtsconfig.jsonwith path mappings (@/*). While this still works in 6.0, it will be removed in 7.0.typesdefaults to[]- Previously defaulted to loading all@typespackages. The project already explicitly setstypesintsconfig.test.json, so this won't affect tests.strictdefaults totrue- The project already hasstrict: trueexplicitly set, so no impact.- Rollup structure changes - The lockfile now resolves to native rollup packages instead of the WASM version.
Suggested next steps
-
Blocking: Resolve the mismatch between package.json pnpm overrides and the lockfile. Either:
- Remove the
rollup: "npm:@rollup/wasm-node"override from package.json if native rollup is intended (recommended) - Or re-run
pnpm installto ensure the lockfile matches the package.json overrides
- Remove the
-
Non-blocking: Consider migrating away from
baseUrlin tsconfig files to prepare for TypeScript 7.0. Replace:{ "baseUrl": ".", "paths": { "@/*": ["./src/*"] } }With just:
{ "paths": { "@/*": ["./src/*"] } } -
Run
pnpm installafter any changes to ensure lockfile consistency.
General findings
-
Dependency compatibility: typescript-eslint 8.58.1 supports TypeScript 6.0 (peer dependency range:
typescript: '>=4.8.4 <6.1.0'). MSW 2.13.2 also lists TypeScript 6.0 as an optional dependency. -
Lockfile overrides removed: The pnpm-lock.yaml had its top-level
overridessection removed during regeneration. This includes:rollup: npm:@rollup/wasm-nodelodash: ^4.18.0mdast-util-to-hast: ^13.2.1
However, these overrides are still present in package.json. This discrepancy needs resolution.
-
Rollup migration: The lockfile now uses native rollup (
rollup@4.60.3) with platform-specific optional dependencies instead of the WASM version. This is generally a positive change for performance, but should be intentional.
General findings (auto-demoted from inline due to pre-validation)
- Blocking
dashboard/package.json:104— There's a mismatch between this override and the pnpm-lock.yaml.- (demoted: line 104 (side=RIGHT) is not part of any diff hunk in dashboard/package.json)
- Non-blocking
dashboard/tsconfig.app.json:23—baseUrlis deprecated in TypeScript 6.0 and will be removed in 7.0.- (demoted: path "dashboard/tsconfig.app.json" is not in the PR diff)
There was a problem hiding this comment.
Summary
This PR upgrades the dashboard from TypeScript ~5.9.2 to ~6.0.0, a major version update that serves as a bridge to TypeScript 7.0's native port. The change affects package.json and regenerates pnpm-lock.yaml with updated peer dependency resolutions.
Verdict: Needs changes before merge — while the upgrade itself is reasonable, there are configuration deprecation warnings that should be addressed and a concerning removal of pnpm overrides that needs verification.
Research notes
I reviewed the official TypeScript 6.0 release notes and documentation. Key findings:
-
TypeScript 6.0 is a transition release preparing for TypeScript 7.0's native Go-based compiler. It introduces new defaults and deprecations to align with modern development practices.
-
Breaking default changes:
strictnow defaults totruetypesnow defaults to[](empty array) instead of auto-including all@types/*packagesrootDirnow defaults to.instead of being inferredmoduledefaults toesnextnoUncheckedSideEffectImportsdefaults totrue
-
Deprecations requiring attention:
baseUrlis deprecated — projects should add explicit prefixes topathsentriestarget: es5,--downlevelIteration,--moduleResolution node/classic, AMD/UMD/SystemJS modules,outFile, legacymodulesyntax for namespaces, importassertskeyword
-
Security note: The lockfile shows
@ungap/structured-clone@1.3.0has a deprecation warning about "Potential CWE-502" recommending update to 1.3.1+.
Suggested next steps
-
Blocking: Verify the removal of pnpm overrides in
pnpm-lock.yaml— the diff shows these were removed:overrides: rollup: npm:@rollup/wasm-node lodash: ^4.18.0 mdast-util-to-hast: ^13.2.1
These security/pinning overrides should be preserved in
package.jsonif still needed. -
Non-blocking: Address the deprecated
baseUrlusage intsconfig.app.jsonandtsconfig.jsonby migrating to explicit path prefixes. -
Non-blocking: Consider adding explicit
"types": ["node"]or similar to tsconfig files to avoid unintended global type inclusion and improve build performance.
General findings
pnpm Overrides Removal (Needs Investigation)
The diff shows the overrides section was completely removed from pnpm-lock.yaml. In the original package.json, these overrides are still present:
"pnpm": {
"overrides": {
"rollup": "npm:@rollup/wasm-node",
"lodash": "^4.18.0",
"mdast-util-to-hast": "^13.2.1"
}
}However, the lockfile no longer contains the overrides: section at the top level. This could indicate:
- The overrides were intentionally removed because they're no longer needed
- The pnpm version changed how overrides are represented
- There's a risk the security patches (lodash, structured-clone) are no longer enforced
Action required: Verify whether these overrides are still necessary and ensure they're properly represented in the regenerated lockfile.
Deprecated baseUrl Usage
Both tsconfig.app.json and tsconfig.json use baseUrl: "." which is deprecated in TypeScript 6.0. Per the official migration guidance, the fix is to remove baseUrl and add explicit prefixes to paths:
// Before (deprecated)
{
"baseUrl": ".",
"paths": { "@/*": ["./src/*"] }
}
// After
{
"paths": { "@/*": ["src/*"] }
}This won't break immediately but will show deprecation warnings and will fail in TypeScript 7.0.
Missing Explicit types Array
TypeScript 6.0 changes types to default to [] instead of auto-including all @types/* packages. While tsconfig.test.json correctly specifies "types": ["vitest/globals", "@testing-library/jest-dom"], the main tsconfig.app.json doesn't specify a types array. This is likely fine since the app probably doesn't need global types, but teams should be aware this could cause "Cannot find name" errors for previously-available globals like process or Node.js built-ins if they were implicitly relied upon.
Build Performance Impact
Per Microsoft's research, projects that explicitly set types to only what's needed (e.g., ["node"] or ["*"] to restore old behavior) see 20-50% build time improvements. This upgrade is an opportunity to audit global type dependencies.
This PR contains the following updates:
~5.9.2→~6.0.0Release Notes
microsoft/TypeScript (typescript)
v6.0.3Compare Source
v6.0.2Compare Source
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.