Conversation
📝 WalkthroughWalkthroughThe PR updates Node.js runtime from version 25.x to 26.0.0 across CI workflows and build scripts. Additionally, the Jest TypeScript transformer is refactored to use ChangesNode.js Runtime Version Upgrade
Jest TypeScript Transform Enhancement
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
Node.js v26 removed the `transform` mode and `sourceMap` option from `module.stripTypeScriptTypes`. Switch the Jest transform to call `amaro.transformSync` directly (the same wasm transformer Node.js wraps) so we keep inline source maps for tests.
Node 26.0.0 GA shipped May 2026. pnpm 11.0.6 (May 2026) is the matching pnpm release with the @pnpm/exe binaries built against Node 25.x; pnpm's own Node 26 transition is in flight upstream (pnpm/pnpm#11472, open). Changes: - `.gitmodules`: bump comment to `# node-26.0.0 sha256:db0b0db9...` (the source-tarball sha256 from nodejs.org/dist/v26.0.0/SHASUMS256). - `xport.json`: pinned_tag v25.9.0 → v26.0.0, pinned_sha 9f5a2c92... → 1eaf8a9b... (the v26.0.0 commit). - Submodule itself moved to 1eaf8a9bd9b (Node v26.0.0). - `package.json` engines.node: >=18.20.8 → >=26.0.0, engines.pnpm: >=11.0.0 → >=11.0.6, packageManager: pnpm@11.0.3 → pnpm@11.0.6+sha512.97f906e1... (corepack hex form, not SRI base64 — RFC 2018 spec mandates hex). The packageManager field now carries integrity for corepack to verify the downloaded pnpm tarball against. Different encoding from external-tools.json's SRI form because corepack's parser only accepts hex; this is documented in the canonical CLAUDE.md.
There was a problem hiding this comment.
Pull request overview
Updates the repository’s Node.js version targets to 26.0.0 for CI/release workflows and the @pnpm/exe embedded runtime, and adjusts Jest’s TypeScript-stripping transformer to stay compatible with Node 26’s stripTypeScriptTypes changes.
Changes:
- Bump GitHub Actions CI matrix and release/benchmark workflows to use Node.js 26.0.0.
- Update
@pnpm/exeartifact build script to embednode@26.0.0. - Switch Jest transform type-stripping to use
amaroand add it to the workspace catalog/lockfile.
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
pnpm/artifacts/exe/scripts/build-artifacts.ts |
Updates the embedded SEA runtime to node@26.0.0. |
pnpm-workspace.yaml |
Adds amaro to the workspace catalog. |
pnpm-lock.yaml |
Records amaro@1.1.9 in catalogs/importers/packages/snapshots. |
.github/workflows/release.yml |
Updates release workflow Node version to 26.0.0. |
.github/workflows/ci.yml |
Updates CI matrix to test Node 26.0.0 instead of 25.0.0. |
.github/workflows/benchmark.yml |
Updates benchmark workflow Node version to 26.0.0. |
__utils__/jest-config/package.json |
Adds amaro dependency for the Jest transformer. |
__utils__/jest-config/jest.transform.js |
Replaces module.stripTypeScriptTypes usage with amaro to preserve inline source maps. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Node.js v26 removed the `transform` mode and `sourceMap` option from | ||
| // `module.stripTypeScriptTypes`, so we call into `amaro` (the same | ||
| // wasm-backed transformer Node.js uses internally) directly. `transform` | ||
| // mode is required to keep inline source maps — without them, interactive | ||
| // debuggers can't map type-stripped test files back to their on-disk | ||
| // location. For background, see https://github.com/pnpm/pnpm/pull/11024. | ||
| const { code: stripped, map } = stripTypes(sourceText, { | ||
| mode: 'transform', | ||
| sourceMap: true, | ||
| sourceUrl: sourcePath | ||
| filename: sourcePath, | ||
| }) |
* chore: update Node.js to 26.0.0 * fix(jest-config): use amaro for type stripping on Node.js 26 Node.js v26 removed the `transform` mode and `sourceMap` option from `module.stripTypeScriptTypes`. Switch the Jest transform to call `amaro.transformSync` directly (the same wasm transformer Node.js wraps) so we keep inline source maps for tests.
Summary
.github/workflows/ci.yml)@pnpm/exebuild-artifacts script tonode@26.0.0Test plan
@pnpm/exebuild-artifacts succeeds once unofficial-builds.nodejs.org publishes the v26.0.0 musl tarballs (currently only headers are available — musl builds typically appear within hours of an official release)Summary by CodeRabbit
Release Notes