using System.Collections.Immutable; namespace NuGet; public class PackageSourceMapping(ImmutableArray sources) { private readonly ImmutableDictionary> _clients = sources.Select(b => new KeyValuePair>(b.Pattern, NuGetClient.CreateFromIndexUrlAsync(b.Url))) .ToImmutableDictionary(); public Task GetClientAsync(string packageId) => _clients.FirstOrDefault(b => packageId.StartsWith(b.Key)).Value; } public record PackageSource(string Pattern, string Url);