enhance(packages): implement npm single-version API and add per-version repository (#39267)

Signed-off-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
silverwind
2026-09-08 18:25:29 +00:00
committed by GitHub
co-authored by wxiaoguang Lunny Xiao
parent d93bd06d0c
commit 459fc13783
5 changed files with 81 additions and 23 deletions
+4 -3
View File
@@ -4,6 +4,7 @@
package npm
import (
"context"
"encoding/base64"
"encoding/hex"
"fmt"
@@ -13,7 +14,6 @@ import (
packages_model "gitea.dev/models/packages"
npm_module "gitea.dev/modules/packages/npm"
"gitea.dev/modules/setting"
)
func createPackageMetadataResponse(registryURL string, pds []*packages_model.PackageDescriptor) *npm_module.PackageMetadata {
@@ -78,6 +78,7 @@ func createPackageMetadataVersion(registryURL string, pd *packages_model.Package
Maintainers: []npm_module.User{{Name: pd.Owner.Name}},
Homepage: metadata.ProjectURL,
License: metadata.License,
Repository: metadata.Repository,
Keywords: metadata.Keywords,
Dependencies: metadata.Dependencies,
BundleDependencies: metadata.BundleDependencies,
@@ -104,7 +105,7 @@ func createPackageMetadataVersion(registryURL string, pd *packages_model.Package
}
}
func createPackageSearchResponse(pds []*packages_model.PackageDescriptor, total int64) *npm_module.PackageSearch {
func createPackageSearchResponse(ctx context.Context, pds []*packages_model.PackageDescriptor, total int64) *npm_module.PackageSearch {
objects := make([]*npm_module.PackageSearchObject, 0, len(pds))
for _, pd := range pds {
metadata := packages_model.DescriptorMetadata[*npm_module.Metadata](pd)
@@ -126,7 +127,7 @@ func createPackageSearchResponse(pds []*packages_model.PackageDescriptor, total
Maintainers: []npm_module.User{}, // npm cli needs this field
Keywords: metadata.Keywords,
Links: &npm_module.PackageSearchPackageLinks{
Registry: setting.AppURL + "api/packages/" + pd.Owner.Name + "/npm",
Registry: buildNpmRegistryURL(ctx, pd.Owner),
Homepage: metadata.ProjectURL,
},
},