Struct SwiftRegistry
pub struct SwiftRegistry { /* private fields */ }Expand description
Client for fetching Swift package information from GitHub.
Implementations§
§impl SwiftRegistry
impl SwiftRegistry
pub fn new(cache: Arc<HttpCache>) -> SwiftRegistry
pub fn new(cache: Arc<HttpCache>) -> SwiftRegistry
Creates a new Swift registry client with the given HTTP cache.
Reads GITHUB_TOKEN from environment for authenticated requests
(5000 req/h vs 60 req/h unauthenticated).
pub async fn get_versions(
&self,
name: &str,
) -> Result<Vec<SwiftVersion>, DepsError>
pub async fn get_versions( &self, name: &str, ) -> Result<Vec<SwiftVersion>, DepsError>
Fetches all semver-tagged versions for a package.
Returns versions sorted newest-first. Non-semver tags are skipped.
Follows GitHub tags pagination up to MAX_TAG_PAGES pages, stopping
as soon as a page comes back with fewer than 100 entries (no further
pages exist).
pub async fn get_versions_with_release_dates(
&self,
name: &str,
) -> Result<Vec<SwiftVersion>, DepsError>
pub async fn get_versions_with_release_dates( &self, name: &str, ) -> Result<Vec<SwiftVersion>, DepsError>
Like SwiftRegistry::get_versions, but also attaches GitHub Release publish
times via SwiftRegistry::release_dates.
Runs the tags fetch and the release-dates fetch concurrently
(tokio::join!) — release_dates is infallible (empty map on any failure),
so it can never perturb get_versions’s error propagation. This removes one
round trip out of the tag-pagination loop’s P+1, not half the latency (#223
R7), and on a memo hit the join costs nothing at all.
pub async fn get_latest_matching(
&self,
name: &str,
req_str: &str,
) -> Result<Option<SwiftVersion>, DepsError>
pub async fn get_latest_matching( &self, name: &str, req_str: &str, ) -> Result<Option<SwiftVersion>, DepsError>
Finds the latest version satisfying the given semver requirement.
Trait Implementations§
§impl Clone for SwiftRegistry
impl Clone for SwiftRegistry
§fn clone(&self) -> SwiftRegistry
fn clone(&self) -> SwiftRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Registry for SwiftRegistry
impl Registry for SwiftRegistry
§fn select_latest_matching(
&self,
versions: &[Box<dyn Version>],
req: &VersionReq,
) -> Option<usize>
fn select_latest_matching( &self, versions: &[Box<dyn Version>], req: &VersionReq, ) -> Option<usize>
Under a wildcard/empty req (see deps_core::is_existence_wildcard) this is an
existence check, not an upgrade recommendation — deferred to
deps_core::select_latest_for_existence, matching
deps-cargo/deps-pypi/deps-dart/deps-npm. Without this gate, a package whose
only tags so far are prerelease could never resolve under *: the semver crate’s
VersionReq::parse("*") does not match a prerelease Version unless the requirement
itself carries a prerelease component (found via #421’s cross-ecosystem conformance
test in deps-lsp).
§fn get_versions<'a>(
&'a self,
name: &'a PackageName,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_versions<'a>( &'a self, name: &'a PackageName, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
§fn get_versions_with<'a>(
&'a self,
name: &'a PackageName,
freshness: FreshnessSettings,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_versions_with<'a>( &'a self, name: &'a PackageName, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_versions, but lets a registry that can obtain
Version::published_at only through an extra request gate that request behind
freshness.enabled instead of always paying for it. Read more§fn get_latest_matching<'a>(
&'a self,
name: &'a PackageName,
req: &'a VersionReq,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_latest_matching<'a>( &'a self, name: &'a PackageName, req: &'a VersionReq, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
§fn search<'a>(
&'a self,
query: &'a str,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Metadata>>, DepsError>> + Send + 'a>>
fn search<'a>( &'a self, query: &'a str, limit: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Metadata>>, DepsError>> + Send + 'a>>
§fn reports_yanked(&self) -> bool
fn reports_yanked(&self) -> bool
get_versions results carry meaningful
per-version yank/deprecation data via Version::removal_status. Read more§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Source§fn get_versions_from<'a>(
&'a self,
name: &'a PackageName,
source: &'a DependencySource,
freshness: FreshnessSettings,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_versions_from<'a>( &'a self, name: &'a PackageName, source: &'a DependencySource, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_versions_with, but additionally carries the
dependency’s resolved DependencySource, for a registry that routes a single
fetch across more than one underlying index (e.g. deps-cargo’s CargoRegistry,
which dispatches a DependencySource::AlternateRegistry to a private sparse index
instead of crates.io). Read moreSource§fn get_latest_matching_with_context<'a>(
&'a self,
name: &'a PackageName,
req: &'a VersionReq,
minimum_stability: Option<&'a str>,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_latest_matching_with_context<'a>( &'a self, name: &'a PackageName, req: &'a VersionReq, minimum_stability: Option<&'a str>, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_latest_matching, but lets a registry whose
“latest matching” selection can be refined by ecosystem-specific manifest state (e.g.
Composer’s minimum-stability field, #424) read it, alongside req. Read moreSource§fn get_latest_matching_from<'a>(
&'a self,
name: &'a PackageName,
source: &'a DependencySource,
req: &'a VersionReq,
minimum_stability: Option<&'a str>,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_latest_matching_from<'a>( &'a self, name: &'a PackageName, source: &'a DependencySource, req: &'a VersionReq, minimum_stability: Option<&'a str>, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_latest_matching_with_context,
but additionally carries the dependency’s resolved DependencySource — the
get_latest_matching-shaped counterpart to
get_versions_from, covering the fallback path a caller
takes when the list-based pick fails on a non-empty get_versions_from
result (see deps_core::lsp_helpers::hover’s list_fallback_latest and
deps-lsp’s background-fetch fallback for the two call sites this exists for). Read moreSource§fn select_latest_matching_with_context(
&self,
versions: &[Box<dyn Version>],
req: &VersionReq,
minimum_stability: Option<&str>,
) -> Option<usize>
fn select_latest_matching_with_context( &self, versions: &[Box<dyn Version>], req: &VersionReq, minimum_stability: Option<&str>, ) -> Option<usize>
select_latest_matching, but lets a registry
whose selection can be refined by ecosystem-specific manifest state (e.g. Composer’s
minimum-stability field, #424) read it, alongside versions and req. See
get_latest_matching_with_context for why
minimum_stability is an opaque per-ecosystem string rather than a shared type. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for SwiftRegistry
impl !UnwindSafe for SwiftRegistry
impl Freeze for SwiftRegistry
impl Send for SwiftRegistry
impl Sync for SwiftRegistry
impl Unpin for SwiftRegistry
impl UnsafeUnpin for SwiftRegistry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more