You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reject pnpm-lock.yaml entries whose remote tarball resolution: block is missing the integrity field. Previously the worker that extracts a downloaded tarball skipped hash verification when no integrity was supplied and minted a fresh one from the unverified bytes, so an attacker who could both alter the lockfile (e.g. via a pull request that strips integrity:) and serve modified content at the referenced tarball URL could install a tampered package without any error — including under --frozen-lockfile. pnpm now fails closed at lockfile-read time with ERR_PNPM_MISSING_TARBALL_INTEGRITY. Git-hosted tarballs (gitHosted: true or a URL on codeload.github.com / bitbucket.org / gitlab.com) and file: tarballs are exempt — the commit SHA in a git-host URL and the user-controlled local path already anchor the bytes.
Treat tarball-integrity mismatches against the lockfile as a hard failure by default. Previously, pnpm install (non-frozen) would log ERR_PNPM_TARBALL_INTEGRITY, silently re-resolve from the registry, and overwrite the locked integrity — which meant a compromised registry, proxy, or republished version could substitute attacker-controlled content on a clean machine even though the project shipped a committed lockfile.
pnpm install now exits with ERR_PNPM_TARBALL_INTEGRITY and a hint pointing at the new opt-in flag.
The only opt-in is pnpm install --update-checksums — narrowly scoped to refreshing the locked integrity values from what the registry currently serves. Mirrors yarn's flag of the same name. A warning still prints when the bypass takes effect so the operation is auditable.
--force and pnpm update deliberately do not bypass the integrity check. They are routine refresh operations; silently overwriting a locked integrity in those flows would erase the protection a committed lockfile is supposed to provide. --frozen-lockfile behavior is unchanged. --fix-lockfile keeps its documented purpose (filling in missing lockfile entries) and is also not a bypass.
Patch Changes
Pin unscoped per-registry settings (_authToken, _auth, username/_password, tokenHelper, inline cert/key) to the registry declared in the same config source at load time, so a later layer overriding registry= (workspace .npmrc, pnpm-workspace.yaml, CLI --registry) cannot redirect a credential or client certificate authored for a different host. A deprecation warning is emitted whenever an unscoped per-registry setting is encountered, naming the source and the URL it was pinned to. Reported by JUNYI LIU.
Fixed minimumReleaseAge handling when cached metadata is abbreviated. The npm registry returns abbreviated package metadata (without the per-version time field) by default, which made the maturity check throw ERR_PNPM_MISSING_TIME whenever cached abbreviated metadata was reused. pnpm now upgrades cached abbreviated metadata to the full document via a follow-up fetch when minimumReleaseAge is active, persists the upgrade to the on-disk cache so subsequent installs skip the extra fetch, and lets ERR_PNPM_MISSING_TIME from the cache fast-path fall through to the network fetch even under strict mode.
Reject git resolutions whose commit field is not a 40-character hexadecimal SHA before invoking git. A malicious lockfile could otherwise smuggle a value such as --upload-pack=<command> through git fetch / git checkout, which on SSH or local-file transports executes the supplied command.
Reject patch files whose diff --git headers reference paths outside the patched package directory. Previously a malicious .patch file added via a pull request could write, delete, or rename arbitrary files reachable by the user running pnpm install.
Fixed --prefix=<dir> not being honored when locating the workspace root. The --prefix → dir rename was applied after workspace detection, so workspace settings declared in <dir>/pnpm-workspace.yaml were not loaded when pnpm was invoked from outside <dir>#11535.
Reject dependency aliases that contain path-traversal segments (such as @x/../../../../../.git/hooks) when reading them from a package manifest or symlinking them into node_modules. A malicious registry package could otherwise use a transitive dependency key to make pnpm install create symlinks at attacker-chosen paths outside the intended node_modules directory.
Pin the integrity of git-hosted tarballs (codeload.github.com, gitlab.com, bitbucket.org) in the lockfile so that subsequent installs detect a tampered or substituted tarball and refuse to install it. Previously the lockfile only stored the tarball URL for git dependencies, so a compromised git host or a man-in-the-middle could serve arbitrary code on later installs without lockfile changes.
A new gitHosted: true field is recorded on git-hosted tarball resolutions in the lockfile, letting every reader/writer route them by a single typed check instead of pattern-matching the tarball URL in each call site. Lockfiles written by older pnpm versions are enriched on load (URL fallback) so the field can be relied on uniformly across the codebase.
Fix a regression where pnpm --recursive --filter '!<pkg>' run/exec/test/add would include the workspace root in the matched projects. The workspace root is now correctly excluded by default when only negative --filter arguments are provided, matching the documented behavior. To include the root, pass --include-workspace-root#11341.
Upgrade to Node.js 22.18.0 or later. Bun and Deno remain supported (experimental).
unrun is no longer bundled
If your environment relies on the unrun config loader (i.e. you're on a Node version without native TypeScript support and use the default auto loader), install it manually:
npm i -D unrun
# or, alternatively, the new tsx loader:
npm i -D tsx
If you use Node.js 22.18.0+ with native TypeScript support, no change is needed — the auto loader will pick native.
dts auto-enabled from tsconfig
If your tsconfig.json has compilerOptions.declaration: true but you do not want tsdown to emit .d.ts files, opt out explicitly:
Any entry chunk containing a shebang (e.g. #!/usr/bin/env node) now causes tsdown to write a bin field in package.json automatically. The semantics differ slightly from explicit bin: true:
renovateBot
changed the title
fix(deps): update all non-major dependencies
chore(deps): update dependency rolldown to v1.0.0-beta.9-commit.43425a0
May 20, 2025
renovateBot
changed the title
chore(deps): update dependency rolldown to v1.0.0-beta.9-commit.43425a0
fix(deps): update all non-major dependencies
May 20, 2025
renovateBot
changed the title
fix(deps): update all non-major dependencies
chore(deps): update dependency rolldown to v1.0.0-beta.9-commit.d91dfb5
Jun 5, 2025
renovateBot
changed the title
chore(deps): update dependency rolldown to v1.0.0-beta.9-commit.d91dfb5
fix(deps): update all non-major dependencies
Jun 6, 2025
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/@emnapi/runtime@1.11.1. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^0.127.0→^0.138.07.0.0-dev.20260422.1→7.0.0-dev.20260630.110.33.1→10.34.4^0.21.9→^0.22.0Release Notes
microsoft/typescript-go (@typescript/native-preview)
v7.0.0-dev.20260630.1Compare Source
v7.0.0-dev.20260629.1Compare Source
v7.0.0-dev.20260628.1Compare Source
v7.0.0-dev.20260627.2Compare Source
v7.0.0-dev.20260626.1Compare Source
v7.0.0-dev.20260624.1Compare Source
v7.0.0-dev.20260623.1Compare Source
v7.0.0-dev.20260622.1Compare Source
v7.0.0-dev.20260621.1Compare Source
v7.0.0-dev.20260620.1Compare Source
v7.0.0-dev.20260619.1Compare Source
v7.0.0-dev.20260618.1Compare Source
v7.0.0-dev.20260617.2Compare Source
v7.0.0-dev.20260616.1Compare Source
v7.0.0-dev.20260615.1Compare Source
v7.0.0-dev.20260614.1Compare Source
v7.0.0-dev.20260613.1Compare Source
v7.0.0-dev.20260612.1Compare Source
v7.0.0-dev.20260611.2Compare Source
v7.0.0-dev.20260610.1Compare Source
v7.0.0-dev.20260609.1Compare Source
v7.0.0-dev.20260608.1Compare Source
v7.0.0-dev.20260607.1Compare Source
v7.0.0-dev.20260606.1Compare Source
v7.0.0-dev.20260605.1Compare Source
v7.0.0-dev.20260604.1Compare Source
v7.0.0-dev.20260603.1Compare Source
v7.0.0-dev.20260602.1Compare Source
v7.0.0-dev.20260601.1Compare Source
v7.0.0-dev.20260527.2Compare Source
v7.0.0-dev.20260527.1Compare Source
v7.0.0-dev.20260526.1Compare Source
v7.0.0-dev.20260525.1Compare Source
v7.0.0-dev.20260524.1Compare Source
v7.0.0-dev.20260523.1Compare Source
v7.0.0-dev.20260522.1Compare Source
v7.0.0-dev.20260521.1Compare Source
v7.0.0-dev.20260519.1Compare Source
v7.0.0-dev.20260518.1Compare Source
v7.0.0-dev.20260517.1Compare Source
v7.0.0-dev.20260516.1Compare Source
v7.0.0-dev.20260515.1Compare Source
v7.0.0-dev.20260514.1Compare Source
v7.0.0-dev.20260513.1Compare Source
v7.0.0-dev.20260512.1Compare Source
v7.0.0-dev.20260511.1Compare Source
v7.0.0-dev.20260510.1Compare Source
v7.0.0-dev.20260509.2Compare Source
v7.0.0-dev.20260508.1Compare Source
v7.0.0-dev.20260507.1Compare Source
v7.0.0-dev.20260506.1Compare Source
v7.0.0-dev.20260505.1Compare Source
v7.0.0-dev.20260504.1Compare Source
v7.0.0-dev.20260503.1Compare Source
v7.0.0-dev.20260502.1Compare Source
v7.0.0-dev.20260501.1Compare Source
v7.0.0-dev.20260430.1Compare Source
v7.0.0-dev.20260429.1Compare Source
v7.0.0-dev.20260428.1Compare Source
v7.0.0-dev.20260427.1Compare Source
v7.0.0-dev.20260426.1Compare Source
v7.0.0-dev.20260425.1Compare Source
v7.0.0-dev.20260424.2Compare Source
v7.0.0-dev.20260424.1Compare Source
v7.0.0-dev.20260423.1Compare Source
pnpm/pnpm (pnpm)
v10.34.4Compare Source
v10.34.3Compare Source
v10.34.2Compare Source
v10.34.1: pnpm 10.34.1Compare Source
Patch Changes
pnpm-lock.yamlentries whose remote tarballresolution:block is missing theintegrityfield. Previously the worker that extracts a downloaded tarball skipped hash verification when no integrity was supplied and minted a fresh one from the unverified bytes, so an attacker who could both alter the lockfile (e.g. via a pull request that stripsintegrity:) and serve modified content at the referenced tarball URL could install a tampered package without any error — including under--frozen-lockfile. pnpm now fails closed at lockfile-read time withERR_PNPM_MISSING_TARBALL_INTEGRITY. Git-hosted tarballs (gitHosted: trueor a URL on codeload.github.com / bitbucket.org / gitlab.com) andfile:tarballs are exempt — the commit SHA in a git-host URL and the user-controlled local path already anchor the bytes.Platinum Sponsors
Gold Sponsors
v10.34.0: pnpm 10.34Compare Source
Minor Changes
Treat tarball-integrity mismatches against the lockfile as a hard failure by default. Previously,
pnpm install(non-frozen) would logERR_PNPM_TARBALL_INTEGRITY, silently re-resolve from the registry, and overwrite the locked integrity — which meant a compromised registry, proxy, or republished version could substitute attacker-controlled content on a clean machine even though the project shipped a committed lockfile.pnpm installnow exits withERR_PNPM_TARBALL_INTEGRITYand a hint pointing at the new opt-in flag.The only opt-in is
pnpm install --update-checksums— narrowly scoped to refreshing the locked integrity values from what the registry currently serves. Mirrors yarn's flag of the same name. A warning still prints when the bypass takes effect so the operation is auditable.--forceandpnpm updatedeliberately do not bypass the integrity check. They are routine refresh operations; silently overwriting a locked integrity in those flows would erase the protection a committed lockfile is supposed to provide.--frozen-lockfilebehavior is unchanged.--fix-lockfilekeeps its documented purpose (filling in missing lockfile entries) and is also not a bypass.Patch Changes
_authToken,_auth,username/_password,tokenHelper, inlinecert/key) to the registry declared in the same config source at load time, so a later layer overridingregistry=(workspace.npmrc,pnpm-workspace.yaml, CLI--registry) cannot redirect a credential or client certificate authored for a different host. A deprecation warning is emitted whenever an unscoped per-registry setting is encountered, naming the source and the URL it was pinned to. Reported by JUNYI LIU.minimumReleaseAgehandling when cached metadata is abbreviated. The npm registry returns abbreviated package metadata (without the per-versiontimefield) by default, which made the maturity check throwERR_PNPM_MISSING_TIMEwhenever cached abbreviated metadata was reused. pnpm now upgrades cached abbreviated metadata to the full document via a follow-up fetch whenminimumReleaseAgeis active, persists the upgrade to the on-disk cache so subsequent installs skip the extra fetch, and letsERR_PNPM_MISSING_TIMEfrom the cache fast-path fall through to the network fetch even under strict mode.commitfield is not a 40-character hexadecimal SHA before invokinggit. A malicious lockfile could otherwise smuggle a value such as--upload-pack=<command>throughgit fetch/git checkout, which on SSH or local-file transports executes the supplied command.diff --githeaders reference paths outside the patched package directory. Previously a malicious.patchfile added via a pull request could write, delete, or rename arbitrary files reachable by the user runningpnpm install.--prefix=<dir>not being honored when locating the workspace root. The--prefix → dirrename was applied after workspace detection, so workspace settings declared in<dir>/pnpm-workspace.yamlwere not loaded when pnpm was invoked from outside<dir>#11535.@x/../../../../../.git/hooks) when reading them from a package manifest or symlinking them intonode_modules. A malicious registry package could otherwise use a transitive dependency key to makepnpm installcreate symlinks at attacker-chosen paths outside the intendednode_modulesdirectory.Platinum Sponsors
Gold Sponsors
v10.33.4: pnpm 10.33.4Compare Source
Patch Changes
Pin the integrity of git-hosted tarballs (codeload.github.com, gitlab.com, bitbucket.org) in the lockfile so that subsequent installs detect a tampered or substituted tarball and refuse to install it. Previously the lockfile only stored the tarball URL for git dependencies, so a compromised git host or a man-in-the-middle could serve arbitrary code on later installs without lockfile changes.
A new
gitHosted: truefield is recorded on git-hosted tarball resolutions in the lockfile, letting every reader/writer route them by a single typed check instead of pattern-matching the tarball URL in each call site. Lockfiles written by older pnpm versions are enriched on load (URL fallback) so the field can be relied on uniformly across the codebase.Fix a regression where
pnpm --recursive --filter '!<pkg>' run/exec/test/addwould include the workspace root in the matched projects. The workspace root is now correctly excluded by default when only negative--filterarguments are provided, matching the documented behavior. To include the root, pass--include-workspace-root#11341.Platinum Sponsors
Gold Sponsors
v10.33.3Compare Source
v10.33.2Compare Source
rolldown/tsdown (tsdown)
v0.22.3Compare Source
🚨 Breaking Changes
🐞 Bug Fixes
🏎 Performance
View changes on GitHub
v0.22.2Compare Source
🐞 Bug Fixes
View changes on GitHub
v0.22.1Compare Source
🚀 Features
deps.dtsoption to override dependency bundling for declaration files - by @sxzz (881bf)🐞 Bug Fixes
View changes on GitHub
v0.22.0Compare Source
🚨 Breaking Changes
🚀 Features
🐞 Bug Fixes
🔄 Migration Guide
Node.js version
Upgrade to Node.js 22.18.0 or later. Bun and Deno remain supported (experimental).
unrunis no longer bundledIf your environment relies on the
unrunconfig loader (i.e. you're on a Node version without native TypeScript support and use the defaultautoloader), install it manually:npm i -D unrun # or, alternatively, the new tsx loader: npm i -D tsxIf you use Node.js 22.18.0+ with native TypeScript support, no change is needed — the
autoloader will picknative.dtsauto-enabled from tsconfigIf your
tsconfig.jsonhascompilerOptions.declaration: truebut you do not want tsdown to emit.d.tsfiles, opt out explicitly:exports.binauto-detectionAny entry chunk containing a shebang (e.g.
#!/usr/bin/env node) now causes tsdown to write abinfield inpackage.jsonautomatically. The semantics differ slightly from explicitbin: true:truefalseTo opt out entirely:
Links
v0.21.10Compare Source
🚀 Features
View changes on GitHub
Configuration
📅 Schedule: (UTC)
* 0-3 * * 1)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.