chore(ci): upgrade built to ts7 rc#166
Conversation
Signed-off-by: Cory Rylan <crylan@nvidia.com>
📝 WalkthroughWalkthroughThis PR migrates TypeScript tooling from ChangesTypeScript 7 Catalog Migration
Starter Project Dependency Bumps
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@pnpm-workspace.yaml`:
- Around line 113-114: The pnpm age-policy exemption is incomplete because the
minimumReleaseAgeExclude list currently covers only the base TypeScript alias,
not the aliased package name used for the release candidate. Update the
workspace configuration so the same exclusion list explicitly includes the
typescript-7 alias alongside the existing typescript entry, ensuring installs
that resolve through typescript-7 are matched correctly by pnpm.
In `@projects/starters/vue/package.json`:
- Around line 27-29: The starter package dependency set is resolving vue-tsc
3.3.5 against a TypeScript 7 RC, which can break the build flow. Update the
dependency declarations in the Vue starter package so that vue-tsc is pinned to
a TypeScript 6-compatible release, or otherwise ensure the package does not
resolve `typescript` from the `typescript-7` catalog. Keep the fix localized to
the package.json dependency entries for `typescript` and `vue-tsc`.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Enterprise
Run ID: 3a519fd7-ec49-4766-b067-e3a30c861d21
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (6)
pnpm-workspace.yamlprojects/internals/eslint/package.jsonprojects/internals/vite/package.jsonprojects/internals/vite/src/plugins/tsc.jsprojects/starters/nuxt/package.jsonprojects/starters/vue/package.json
| typescript: 6.0.3 | ||
| typescript-7: npm:typescript@7.0.1-rc |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🌐 Web query:
pnpm minimumReleaseAgeExclude default minimumReleaseAge behavior
💡 Result:
In pnpm, minimumReleaseAgeExclude is a configuration setting used to exempt specific dependencies from the minimumReleaseAge restriction [1][2]. The minimumReleaseAge setting defines a "cooldown" period in minutes that must pass after a package version is published before pnpm will allow it to be installed [2][3]. As of pnpm v11, this defaults to 1440 minutes (1 day) to protect against supply chain attacks [4][5][6]. Regarding minimumReleaseAgeExclude: * Default Behavior: The default value is undefined [1]. When not configured, all dependencies must satisfy the minimumReleaseAge requirement [1][3]. * Functionality: When you list packages under minimumReleaseAgeExclude, those packages are exempted from the release age restriction and can be installed immediately, regardless of how recently they were published [1][7]. * Configuration Options: You can exclude packages by name, using glob patterns (such as scopes like @myorg/*), or by pinning to specific versions (e.g., webpack@4.47.0 || 5.102.1) [1][7]. If you set minimumReleaseAge explicitly in your configuration, pnpm automatically treats minimumReleaseAgeStrict as true (unless you manually set it to false), ensuring that if no version satisfies both the range and the age requirement, pnpm will not silently fall back to an immature version [8]. The built-in default of 1440 minutes remains non-strict for backward compatibility [8].
Citations:
- 1: https://pnpm.io/settings
- 2: https://pnpm.io/blog/releases/10.16
- 3: https://pnpm.io/supply-chain-security
- 4: https://pnpm.io/blog/releases/11.0
- 5: feat: set default minimumReleaseAge to 1 day (1440 minutes) pnpm/pnpm#11158
- 6: pnpm/pnpm@c7203b9
- 7: https://charpeni.com/blog/protecting-against-compromised-packages-with-minimum-release-age
- 8: pnpm/pnpm@e3ccf6b
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '\n== relevant files ==\n'
git ls-files | rg '(^|/)(pnpm-workspace\.yaml|\.npmrc|package\.json|pnpm-lock\.yaml|README\.md)$'
printf '\n== pnpm-workspace.yaml excerpt ==\n'
if [ -f pnpm-workspace.yaml ]; then
cat -n pnpm-workspace.yaml | sed -n '1,220p'
fi
printf '\n== search for minimumReleaseAge settings ==\n'
rg -n "minimumReleaseAge|typescript-7|typescript@7\.0\.1-rc|catalog" -S .Repository: NVIDIA/elements
Length of output: 50371
🌐 Web query:
pnpm minimumReleaseAgeExclude alias dependency name npm alias underlying package name
💡 Result:
In pnpm, when using the minimumReleaseAgeExclude configuration setting, the exclusion logic matches against the alias name used in your dependency definition, not the underlying package name [1][2]. If you have aliased a package—for instance, installing awesome-lodash as lodash via pnpm add lodash@npm:awesome-lodash—you must list the alias (lodash) in the minimumReleaseAgeExclude array to exempt it from the minimumReleaseAge restriction [1][3]. Key details regarding minimumReleaseAgeExclude behavior: - Scope and Matching: The setting supports exact package names, glob patterns (e.g., @myorg/*), and specific version pinning (e.g., webpack@4.47.0 || 5.102.1) [1][4]. - Alias Handling: Because pnpm resolves dependencies by alias, the minimumReleaseAgeExclude check is performed against the alias provided in the package.json [2]. - Usage: This feature is intended to allow specific dependencies to be installed immediately, bypassing the configured minimumReleaseAge (which defaults to 1440 minutes in pnpm v11+) [1][4]. If you are using aliases to maintain multiple versions of the same package, you must ensure that the specific alias names used in your project are included in the exclusion list if you wish to bypass the maturity requirement for those specific instances [1][3].
Citations:
- 1: https://pnpm.io/settings
- 2: https://github.com/pnpm/pnpm/blob/2b14c742/pkg-manager/resolve-dependencies/src/resolveDependencies.ts
- 3: https://pnpm.io/aliases
- 4: https://charpeni.com/blog/protecting-against-compromised-packages-with-minimum-release-age
Add typescript-7 to minimumReleaseAgeExclude. pnpm matches this list against the dependency alias, so the existing typescript entry does not exempt typescript-7; installs resolving typescript@7.0.1-rc can still be blocked by the age policy.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@pnpm-workspace.yaml` around lines 113 - 114, The pnpm age-policy exemption is
incomplete because the minimumReleaseAgeExclude list currently covers only the
base TypeScript alias, not the aliased package name used for the release
candidate. Update the workspace configuration so the same exclusion list
explicitly includes the typescript-7 alias alongside the existing typescript
entry, ensuring installs that resolve through typescript-7 are matched correctly
by pnpm.
| "typescript": "catalog:", | ||
| "vite": "catalog:", | ||
| "vue-tsc": "3.2.7" | ||
| "vue-tsc": "3.3.5" |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🌐 Web query:
Does vue-tsc 3.3.5 support TypeScript 7.0.1-rc?
💡 Result:
As of June 30, 2026, there is no official documentation stating that vue-tsc 3.3.5 has verified support for TypeScript 7.0.1-rc [1][2]. vue-tsc acts as a wrapper around the TypeScript compiler (tsc) [3], and it typically maintains compatibility with the TypeScript versions supported by the underlying Vue Language Tools [3]. While vue-tsc allows users to point to a custom tsc path [1][4], it is not designed to guarantee support for unreleased or release candidate (rc) versions of TypeScript unless explicitly stated in the release notes or compatibility matrices for the specific version of the vue-tsc package. To check for compatibility, you can attempt to use the specific TypeScript version by installing it alongside vue-tsc and verifying that your type checking processes (e.g., vue-tsc --noEmit) complete without errors. Given that vue-tsc 3.3.5 was released on June 13, 2026 [1][2], you should review the official vuejs/language-tools GitHub repository releases for any updates regarding experimental support for newer TypeScript versions [5].
Citations:
- 1: https://registry.npmjs.org/vue-tsc
- 2: https://newreleases.io/project/npm/vue-tsc/release/3.3.5
- 3: https://github.com/vuejs/docs/blob/5a1e8c27/src/guide/typescript/overview.md
- 4: https://www.npmjs.com/package/vue-tsc
- 5: https://github.com/vuejs/language-tools/releases
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '\n== package files ==\n'
git ls-files 'projects/starters/vue/package.json' 'package.json' '**/catalog*' '**/typescript*' | sed -n '1,120p'
printf '\n== starter package.json ==\n'
cat -n projects/starters/vue/package.json
printf '\n== search for typescript-7 catalog ==\n'
rg -n '"typescript-7"|typescript-7|catalog:' -S . --glob '!**/node_modules/**' --glob '!**/dist/**' --glob '!**/build/**' | sed -n '1,200p'Repository: NVIDIA/elements
Length of output: 14350
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
import json, urllib.request
for pkg, version in [('vue-tsc','3.3.5'), ('typescript','7.0.1-rc')]:
url = f'https://registry.npmjs.org/{pkg}/{version}'
try:
with urllib.request.urlopen(url, timeout=20) as r:
data = json.load(r)
print(f'== {pkg}@{version} ==')
for k in ['name','version','peerDependencies','dependencies','engines','keywords']:
if k in data:
print(k, data[k])
print()
except Exception as e:
print(f'FAILED {pkg}@{version}: {e}')
PYRepository: NVIDIA/elements
Length of output: 471
🌐 Web query:
vue-tsc 3.3.5 peerDependencies TypeScript 7 support
💡 Result:
As of June 30, 2026, vue-tsc version 3.3.5 does not provide official support for TypeScript 7 (often referred to as TypeScript Native or tsgo) [1][2]. The current TypeScript 7 project is a public preview port of the TypeScript compiler to Go [1]. Because vue-tsc relies on patching the standard TypeScript (tsc) JavaScript implementation to integrate Vue-specific type checking, it is not currently compatible with the Go-based TypeScript architecture, which lacks the same internal plugin and patching mechanisms [1][3]. Additionally, vue-tsc continues to maintain its peerDependencies based on the standard Node.js-based TypeScript releases (typically requiring >= 5.0.0) [4]. There have been no announcements or documentation in the vue-tsc 3.3.5 release notes indicating integration with or support for TypeScript 7 [5][6]. Work regarding the potential implications of a non-JavaScript-based TypeScript implementation on Vue Language Tools is still in the early, speculative, or discussion phases [1][2][3].
Citations:
- 1: TypeScript Native / TypeScript 7 (
@typescript/native-preview,tsgo) Support vuejs/language-tools#5381 - 2: TypeScript Native / TypeScript 7 (
@typescript/native-preview,tsgo) Support vuejs/language-tools#5381 - 3: Typescript is being rewritten in Go, will this be a problem for vue-tsc? vuejs/language-tools#5269
- 4: https://app.unpkg.com/vue-tsc@3.2.7/files/package.json
- 5: https://github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md
- 6: https://newreleases.io/project/npm/vue-tsc/release/3.3.5
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
import json, urllib.request
url='https://registry.npmjs.org/vue-tsc/3.3.5'
with urllib.request.urlopen(url, timeout=20) as r:
data=json.load(r)
print(json.dumps({
'peerDependencies': data.get('peerDependencies'),
'dependencies': data.get('dependencies'),
'engines': data.get('engines'),
'version': data.get('version'),
}, indent=2))
PYRepository: NVIDIA/elements
Length of output: 2747
Pin vue-tsc to a TypeScript 6-compatible release or keep typescript off typescript-7. vue-tsc 3.3.5 tracks the standard Node-based TypeScript compiler line; resolving typescript to 7.0.1-rc can break the vue-tsc --build step.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@projects/starters/vue/package.json` around lines 27 - 29, The starter package
dependency set is resolving vue-tsc 3.3.5 against a TypeScript 7 RC, which can
break the build flow. Update the dependency declarations in the Vue starter
package so that vue-tsc is pinned to a TypeScript 6-compatible release, or
otherwise ensure the package does not resolve `typescript` from the
`typescript-7` catalog. Keep the fix localized to the package.json dependency
entries for `typescript` and `vue-tsc`.
Summary by CodeRabbit
New Features
Bug Fixes