| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-07-13 | 3.8 kB | |
| v6.8.0 source code.tar.gz | 2026-07-13 | 4.1 MB | |
| v6.8.0 source code.zip | 2026-07-13 | 4.2 MB | |
| Totals: 3 Items | 8.3 MB | 0 | |
Minor Changes
-
962fba8: feat: add unpublish notification hooks
Port of #5920 (ref #5328). The
notifywebhook now also fires when a package is unpublished entirely and when a single version (tarball) is removed, not only on publish. Notification templates can distinguish the event through the new{{ publishType }}(publish|unpublish) and{{ publishedPackage }}variables, and the{{ publisher }}object exposes onlyname,groupsandreal_groups, so the remote user auth token can never leak to the notification endpoint (via@verdaccio/hooks8.0.4).
Patch Changes
-
f0684dc: fix: return 403 to client when uplink responds with 403 for tarball requests
Previously, any non-200/404 response from an uplink (e.g. a security proxy blocking a package download) would result in a generic 500 error being returned to the client. This change propagates 403 responses from the uplink through to the client, including any error detail from the response body, so callers can distinguish authorization failures from other upstream errors.
-
3a84578: chore: refactor eslint
-
b7a5db1: fix: rate limit and bound the npm search v1 endpoint
The
/-/v1/searchendpoint now applies theuserRateLimitrate limiting middleware (matching the login, token and profile endpoints), clamps thesize(max 250, like the public npm registry) andfrom(max 10000) pagination parameters, and stops evaluating package access as soon as the requested page is filled instead of running an auth check over the entire result set. The clamped values are also what gets forwarded to uplink registries (the raw request URL is no longer passed through), so the bounds hold end-to-end. This prevents cheap anonymous requests from triggering unbounded full-catalog scans. As part of this, pagination is fixed: results were sliced withslice(from, size)instead ofslice(from, from + size), so pages beyond the first were wrong.Search results for local packages also emit npm-search-compatible maintainers (
{ username, email }) — npm 11 on Node 24 crashes rendering entries withoutusername(The "str" argument must be of type string. Received undefined) — and thepublisherfield is now populated from_npmUserwhen the publishing client provided it, falling back to the first maintainer, so the npm CLI shows the publishing user instead ofby ???. -
808d916: fix: pick the right uplink for tarballs and heal missing distfile records
Uplink selection. With several uplinks configured for a package, tarball downloads used the last uplink whose package pattern matched, even when the tarball url belongs to a different one, which could make downloads fail against registries that require authentication. The uplink is now selected by matching the tarball url: the
registryrecorded on the distfile wins, then the uplink whose url serves the file; when none matches, an autogenerated uplink with default settings is used. Single-uplink setups keep the previous behavior for tarballs hosted on another host (a CDN).Missing distfile records. Storages written by other verdaccio versions can carry cached versions without their
_distfilesrecords, which made those tarballs permanently return404 no such file available. The tarball location is now resolved from the version'sdist.tarballmetadata when the record is missing, and the record is restored when the tarball is cached. -
a2de1d5: Update verdaccio dependencies to the
latestnpm dist-tag (@verdaccio/ui-themetracksnext-9):@verdaccio/ui-theme:9.0.0-next-9.20→9.0.0-next-9.21