package registry import "sort" func (r *Registry) List() []Package { r.mu.RLock() defer r.mu.RUnlock() result := make([]Package, 0, len(r.packages)) for _, versions := range r.packages { if len(versions) == 0 { continue } keys := make([]string, 0, len(versions)) for version := range versions { keys = append(keys, version) } sort.Slice(keys, func(i, j int) bool { return CompareVersions(keys[i], keys[j]) > 0 }) result = append(result, versions[keys[0]]) } sort.Slice(result, func(i, j int) bool { return result[i].Name < result[j].Name }) return result }