Repository navigation
build: update dependency verdaccio to v7 (main) - #34547
angular-robot wants to merge 1 commit into
Conversation
See associated pull request for more information.
There was a problem hiding this comment.
Code Review
This pull request updates the 'verdaccio' dependency in package.json from version 6.10.6 to 7.0.2. The review feedback highlights that this major version upgrade introduces breaking changes, specifically requiring '_auth' entries in configuration files to be migrated to '_authToken', which will cause the end-to-end test suite to fail unless updated.
| "tslib": "2.8.1", | ||
| "undici": "8.12.3", | ||
| "verdaccio": "6.10.6", | ||
| "verdaccio": "7.0.2", |
There was a problem hiding this comment.
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
This PR contains the following updates:
6.10.6→7.0.2Release Notes
verdaccio/verdaccio (verdaccio)
v7.0.2Compare Source
Patch Changes
c017767: Remove theHEALTHCHECKfrom the Docker image.The probe used
localhost, which resolves to::1on Alpine, while the image listens on IPv4 only by default. The container was always reported asunhealthyeven though it served requests normally. The image no longer declares a health check, as in6.x.If you need one, add it yourself probing
127.0.0.1, for example indocker-compose.yaml:See Health check in the Docker documentation for the
docker runand HTTPS variants.v7.0.1Compare Source
Patch Changes
449ad6b: Restore the@verdaccio/package-filterplugin in theverdaccio7 package so the filter configuration works again.Verdaccio 7.0.0 shipped a default
config.yaml(also the one inside theverdaccio/verdaccio:7Docker image) with thefilters: '@verdaccio/package-filter'section enabled, but the package no longer declared the plugin as a dependency: it was dropped when the 7.x line moved to the published@verdaccio/*modules. On startup the plugin loader loggedpackage not found, try to install @verdaccio/package-filter with a package managerand continued without it, so anyminAgeDays,dateThresholdorblockrules configured underfilterswere silently not enforced.The plugin is a dependency of
verdaccioagain, as it is on the 6.x line, and the startup error is gone. No configuration change is needed; installations that worked around the problem by commenting out thefilterssection can enable it again. Affected:verdaccio@7.0.0and theverdaccio/verdaccio:7Docker image.14aaded: Show theverdacciopackage version in the web UI footer instead of the internal module version.verdaccio@7.0.0(and theverdaccio/verdaccio:7Docker image) displayed9.0.0-next-9.40in the bottom-right corner of the web UI. The 7 binary is a thin layer over the published@verdaccio/*9.x modules, and@verdaccio/serverfilled the version shown by the UI from its own package while the command line and the startup log already reported the right one.This release updates the
@verdaccio/*modules to9.0.0-next-9.41, whose@verdaccio/serverlets the embedding binary set that value, and passes theverdacciopackage version to it, so the UI now shows the same version asverdaccio --version. No configuration change is needed.v7.0.0Compare Source
Major Changes
d33944c: Verdaccio 7.0.0 is the first stable release of the 7.x line. It is published to npm aslatestand to Docker Hub asverdaccio/verdaccio:7,7.0andlatest; the 6.x line continues under thelatest-6npm dist-tag and the6image tag. The release post is at https://verdaccio.org/blog/2026/10/25/verdaccio-7-release, the migration guide at https://verdaccio.org/blog/2026/09/27/verdaccio-6-to-7-migration, and the complete tracker with every pull request and backport at #5680.Highlights
flags.stage, npm 11.17 or newer): a pipeline uploads a version, a maintainer reviews it, and only then it becomes installable (#6176).GET /-/package/{name}/version/{version}/statusreports whether a version ispublishedorstaged(#6365).flags.tfa): time-based one-time passwords for login, account operations and publishing (#6176).publish.check_ownersnow coversnpm deprecate, version unpublish and dist-tag changes (#6219); removing a version requires the unpublish permission on its own route (#6384); publish rejects invalid tarball attachment names before saving metadata and records an upload only after the tarball is fully written (#6367).web.assetFolder(#5653); home toolbar to filter, scope and sort, onboarding guide for empty registries,web.footer,web.poweredByandweb.help, package tabs in the URL andbunamong the package managers (#6400); per-language translation progress with a single translation source (#6395); password changes from the account menu (#6366).excludeDeprecated(#6028); notification hooks for publish and unpublish (#5920).ConfigBuildercovers web, listen, https, publish, flags, notify, middlewares, filters, maxBodySize, userRateLimit, urlPrefix and i18n (#5805); newserver.cors(#6255),server.dotfiles,server.hideStaticLogs,server.hidePingLogs(#6192) andserver.legacyAuthCache(#6133).verify_cache_mscaches successful password verifications for clients that send credentials on every request (#6351);npm login,yarn npm loginandpnpm loginkeep working through the Basic exception on the login routes (#6354).@verdaccio/proxyongot(#5646, #5746) with upstream errors mapped to registry errors (#6022);/-/v1/searchwith rate limits, bounded pagination and batched access checks, uplink results paginated before the client offset (#6235), configured uplink subpaths and headers preserved (#6209), ISO timestamps, version validation and original uplink errors preserved (#6263, #6264, #6265).@verdaccio/admin-cliships averdaccio-admin storagecommand group (#6231).Bug fixes
content-length(#6194, #6234); client-controlleddist.tarballURLs are not fetched off-uplink (#6225); the uplink cache is refreshed on304(#6276).401for invalid credentials onGET /-/user/(#5844); local storage no longer uses uncontrolled data in paths (#5847); the home directory resolves throughHOMEon Windows (#6247); missingHostheader handled (#5641).Breaking changes
/*splat,/{*splat}),res.sendFile(filename, { root })for absolute paths, andreq.bodyis already parsed when plugins run.config.self_pathwas replaced byconfig.configPath(#5850)._authentries in.npmrcmust move to_authToken;401responses advertise onlyBearer. The login routes accept Basic credentials whilesecurity.api.basicLoginis enabled (the default)./-/allsearch endpoint (use/-/v1/search),npm star/unstar(#5930), the deprecated AES encryption helpers (#5744), thesearchRemoteflag (#5801) and the debug-onlyPUT /:package/:version/-tag/:tagroute.runServer, which no longer accepts{ listenArg };await runServer(config)then call.listen(). ImportConfig,ConfigBuilder,getDefaultConfigandparseConfigFilefrom@verdaccio/core.@verdaccio/logger-commonsand@verdaccio/logger-prettifyare merged into@verdaccio/logger(#5657).exportschanged, so update deep imports.verdaccio-aws-s3-storage,verdaccio-google-cloudandverdaccio-active-directorymoved to their own repositories..sinopia-db.jsondatabases are no longer read.Also in 6.x
Dual ESM/CJS output, the package filter plugin, publish and unpublish notifications, the bounded
/-/v1/search, the@verdaccio/e2e-cliworkflow, the shared@verdaccio/ui-themeWeb UI, the htpasswd, name and search validation fixes and the new Web UI home were also backported to 6.x; the tracker lists the 6.x release that carries each one.Tooling and dependencies
pnpm 12 replaces Yarn for the workspace and CI (#5748, #6216); CI runs on Windows (#6248); end-to-end tests run through
@verdaccio/e2e-cli(#5678); the repository carriesAGENTS.mdand agent skills (#6252). Runtime dependencies move to Express 5.3,got15,js-yaml5, TypeScript 7 and Vite 8, with the published advisories inbody-parser,proxy-addr,compression,lodash-es,dompurifyandfast-uripatched (#6334, #6388).Upgrading
Back up the configuration, storage and
.verdaccio-db.json, update the runtime to Node.js 24, convert any JSON or JS configuration to YAML and test with a copy of the storage before switching. Do not run 6.x and 7.x against the same storage at the same time.Thanks to @juanpicado, @mbtools, @dianmorales, @jotadeveloper, @davidus27, @koliveira15, @moglerdev, @pranshuchittora, @ReemX, @RuneStone0, @tmota900 and @vsugrob for the work in this release line.
Minor Changes
ddf993c: Adopt@verdaccio/serverand drop the local api/web/storage forks. A thinStoragewrapper is kept to support legacy callback-based storage plugins, and the unused helpers insrc/lib/utils.tswere removed.Patch Changes
e404c82: Updates the runtime dependenciesexpressto 5.3.0 andsemverto 7.8.5, and movesbody-parser(used by Express to read request bodies) to 2.4.0.body-parser2.4.0 fixes a denial of service where trailing bytes after a compressed request body could keep the server busy (GHSA-27r3-jxmh-p828). Transitive dependencies with published advisories (fast-uri,qs,ip-address) are also moved to their patched releases. None of these change any API: no configuration or plugin changes are needed.The rest of the changes in this release only affect the development toolchain and the test suite (
@cypress/requestis no longer used by the tests).a307098: Migrate the 7.x release workflow to Changesets action v2 and CLI v3.256fd40: Disable dependency lifecycle scripts and require third-party dependencies to be at least three days old when installing Verdaccio in the final Docker image stage.The production installation now uses npm's
--ignore-scriptsand--min-release-age=3options. Verdaccio and packages matching@verdaccio/*orverdaccio-*are excluded from the age restriction so new Verdaccio releases can be built immediately. The final stage updates npm to support these exclusions and disables installation audit and funding output. Image builds still fail if another required dependency has no eligible version. No configuration changes are required for operators.The Docker base image uses Node.js 24.15.0 for compatibility with the updated npm.
f565393: Update the proxy address dependency to correctly match trusted proxy subnets when determining client IP addresses. Earlier 7.x prereleases using the affected dependency can misidentify clients with certain IPv6 trust configurations. No configuration migration is required.Update
@verdaccio/e2e-clito 4.0.0, which drops pnpm 10, and remove pnpm 10 from the CLI e2e matrix.6fd3e8a: Make/-/v1/searchwork for storage plugins that still use the callback API.Verdaccio 7 keeps callback-based storage plugins running through a compatibility
adapter. Its
searchcollected whatever the plugin streamed and handed the liststraight back, with two consequences for every such plugin.
The search query was dropped before it reached the plugin, and the adapter passed a
name predicate that always returned true, so the plugin emitted its whole catalogue and
nothing ever filtered it.
/-/v1/searchanswered with every package in the registryregardless of the text searched for, and paginated over that full list. It failed
silently: the endpoint returned 200 and the npm client still found what it asked for,
buried among everything else.
The adapter also passed the items through unchanged. The legacy contract emits the
package itself, while the store reads
item.package.name, so a plugin following thedocumented contract made the endpoint fail with a 500 instead.
The adapter now filters the collected results by the query text and wraps anything that
is not already in the store's shape. The filtering is done on the emitted name, never on
the name predicate a plugin is given: that one receives the basename, so rejecting there
would drop scoped packages whose full name does match. Operators running a callback-based
storage plugin get working search without touching the plugin; plugins already on the
promise-based API were never wrapped and are unaffected.
f1f5d34: chore: trigger releasea768d16: chore: replace eslint and prettier with oxlint and oxfmt594f438: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.88bd996: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.908ccbb: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.e862a9a: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.1aef95b: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.304f155: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.c461320: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.a4ced54: Update verdaccio dependencies (@verdaccio/*,verdaccio,verdaccio-*) to thenext-9npm dist-tag.v6.11.1Compare Source
Patch Changes
62d8556: Update verdaccio dependencies to thelatestnpm dist-tag (@verdaccio/ui-themetracksnext-9):@verdaccio/ui-theme:9.0.0-next-9.39→9.0.0-next-9.40v6.11.0Compare Source
Minor Changes
93010b3:web.showSearch: falsenow also disables the web search endpoint.Until now the option only hid the search box in the header, while
/-/verdaccio/data/searchkept answering. WithshowSearch: falsethe endpoint is no longer registered and answers 404, the same wayweb.login: falseremoves the web login endpoints. The npm search API used bynpm search(/-/v1/search) is not affected, and nothing changes for registries that leaveshowSearchunset or set it totrue.Patch Changes
a3a664b: Releases are published with npm provenance again.verdaccio 6.10.5, 6.10.6 and 6.10.7 reached the npm registry without a provenance attestation, while every release from 6.9.0 to 6.10.4 had one. The release pipeline switched from
npm publishtoyarn npm publish, and yarn ignored the setting that requested provenance, so those versions were published through trusted publishing but without a signed SLSA statement. The package contents were not affected.Package managers that compare trust evidence between versions, such as pnpm with
trustPolicy: no-downgrade, refuse to install those three versions withERR_PNPM_TRUST_DOWNGRADE. This release carries provenance again, so upgrading to it, or pinning 6.10.4 or earlier, installs cleanly; nothing else needs to change on the operator side.90fde27: Update the bundled@verdaccio/*modules to their latest releases, which forward the new web UI options to the UI and fix a denial-of-service in request body parsing.The web UI options
web.footer,web.poweredBy,web.helpandweb.showPackageListToolbarnow reach the UI (@verdaccio/ui-theme9.0.0-next-9.39); before this update the server dropped them.showPackageListToolbardefaults tofalse, so the home page looks the same after upgrading unless you turn it on, andbunis now listed among the default package managers shown on a package page.body-parsermoves to1.20.9, fixing a denial of service where trailing bytes after a compressed request body could tie up the server (GHSA-27r3-jxmh-p828). All 6.x releases that useexpress4.22.3 are affected; no configuration change is needed.v6.10.7Compare Source
Patch Changes
7bd480a: The Docker image no longer trusts certificates issued through the compromised eMudhra (emSign) intermediate CAs.In October 2026, eMudhra disclosed that the private keys of several of its intermediate certificate authorities had been compromised. Anyone holding those keys can issue a TLS certificate that a client trusting the eMudhra chain accepts as valid, for any host. Verdaccio connects to its uplinks (such as registry.npmjs.org) over HTTPS, so an attacker able to intercept that traffic could impersonate an uplink and serve tampered metadata or tarballs, which Verdaccio would then cache.
The image is now built on
node:24.22.1-alpineinstead ofnode:24.15.0-alpine. Node.js 24.22.1 updates its bundled root certificates to NSS 3.131.1, which removesemSign ECC Root CA - G3, and rejects chains that contain the compromised public keys. Node.js uses that bundled store for outgoing HTTPS by default. The image also upgrades Alpine'sca-certificatespackage at build time. That package matters only if you make Node.js read the system store, for example withNODE_EXTRA_CA_CERTSor--use-system-ca.Every earlier
verdaccio/verdaccio6.x image is affected. To get the fix, pull the new image. If you install Verdaccio from npm instead of Docker, upgrade Node.js to 22.23.4, 24.22.1, 26.12.1 or later.