pub struct PackagistRegistry { /* private fields */ }Expand description
Client for interacting with the Packagist registry.
Uses the Packagist v2 API for package metadata and search. All requests are cached via the provided HttpCache.
Implementations§
Source§impl PackagistRegistry
impl PackagistRegistry
Sourcepub fn new(cache: Arc<HttpCache>) -> PackagistRegistry
pub fn new(cache: Arc<HttpCache>) -> PackagistRegistry
Creates a new Packagist registry client with the given HTTP cache.
Sourcepub async fn get_versions(
&self,
name: &str,
) -> Result<Vec<ComposerVersion>, DepsError>
pub async fn get_versions( &self, name: &str, ) -> Result<Vec<ComposerVersion>, DepsError>
Fetches all versions for a package from the Packagist v2 API.
Filters out dev versions (starting with dev- or ending with -dev).
Returns versions in the order returned by the API (newest first).
§Errors
Returns an error if the HTTP request or JSON parsing fails.
Sourcepub async fn get_latest_matching(
&self,
name: &str,
req_str: &str,
) -> Result<Option<ComposerVersion>, DepsError>
pub async fn get_latest_matching( &self, name: &str, req_str: &str, ) -> Result<Option<ComposerVersion>, DepsError>
Finds the latest non-abandoned version satisfying the given requirement.
Applies the same minimum-stability: stable default as
Registry::select_latest_matching
(#421): an alpha/beta/RC release is excluded unless req_str itself is
prerelease-bearing. Under a wildcard/empty req_str (see
deps_core::is_existence_wildcard_str) this is an existence check, not an upgrade
recommendation, so it falls back to deps_core::select_latest_for_existence —
matching deps-cargo/deps-pypi/deps-dart/deps-npm — rather than returning None
for a package whose only releases so far are all prerelease.
Equivalent to
get_latest_matching_for_manifest with no
manifest minimum-stability (None) — use that method instead when the caller has a
parsed composer.json available (#424).
§Errors
Returns an error if the HTTP request fails.
Sourcepub async fn get_latest_matching_for_manifest(
&self,
name: &str,
req_str: &str,
minimum_stability: Option<&str>,
) -> Result<Option<ComposerVersion>, DepsError>
pub async fn get_latest_matching_for_manifest( &self, name: &str, req_str: &str, minimum_stability: Option<&str>, ) -> Result<Option<ComposerVersion>, DepsError>
composer.json-aware counterpart of
get_latest_matching: minimum_stability is the
manifest’s own top-level minimum-stability field
(ComposerParseResult::minimum_stability),
used as the default stability floor whenever req_str carries neither an explicit
per-dependency @stability flag nor a directly pinned prerelease version — both of
which still take priority over the manifest default, exactly as they do for
get_latest_matching (#424).
§Errors
Returns an error if the HTTP request fails.
Sourcepub fn select_latest_matching_for_manifest(
&self,
versions: &[Box<dyn Version>],
req: &VersionReq,
minimum_stability: Option<&str>,
) -> Option<usize>
pub fn select_latest_matching_for_manifest( &self, versions: &[Box<dyn Version>], req: &VersionReq, minimum_stability: Option<&str>, ) -> Option<usize>
composer.json-aware counterpart of
Registry::select_latest_matching:
minimum_stability is the manifest’s own top-level minimum-stability field
(ComposerParseResult::minimum_stability),
used as the default stability floor whenever req carries neither an explicit
per-dependency @stability flag nor a directly pinned prerelease version — both of
which still take priority over the manifest default, exactly as they do for the plain
trait method (#424).
Trait Implementations§
Source§impl Clone for PackagistRegistry
impl Clone for PackagistRegistry
Source§fn clone(&self) -> PackagistRegistry
fn clone(&self) -> PackagistRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Registry for PackagistRegistry
impl Registry for PackagistRegistry
Source§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>>
Routes to PackagistRegistry::get_latest_matching_for_manifest — see that method
for the full priority order. This is the trait-level hook a generic LSP fetch loop
downcasting Arc<dyn Registry> cannot bypass by calling
get_latest_matching instead (#424 S1).
Source§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>
Picks the latest version satisfying req, applying Composer’s default
minimum-stability: stable semantics (#421): an alpha/beta/RC release is
excluded from “latest” unless req itself names an unstable version (e.g. an
exact 2.0.0-beta1 pin or a lower bound like >=2.0.0-beta1) — mirroring
deps-nuget’s prerelease-bearing-requirement exception (registry.rs’s
pick_latest_matching). dev-*/*-dev branches never reach here at all:
expand_minified_versions already filters them out of every Registry::get_versions
result.
Under a wildcard/empty req (see deps_core::is_existence_wildcard) this is an
existence check, not an upgrade recommendation, so it defers to
select_latest_for_existence_composer instead — matching the shape of
deps-cargo/deps-pypi/deps-dart/deps-npm (a package whose only releases so far
are all prerelease still resolves to its newest one rather than None), while keeping
Composer’s own #347 ranking rule that abandoned never demotes a version.
Does not read composer.json’s own minimum-stability field — this trait method has
no manifest context to read it from. A caller with a parsed manifest available should
use PackagistRegistry::select_latest_matching_for_manifest instead, which this
method is equivalent to with no manifest minimum-stability (None) (#424).
Source§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>
Routes to PackagistRegistry::select_latest_matching_for_manifest — the trait-level
hook a generic LSP fetch loop downcasting Arc<dyn Registry> cannot bypass by calling
the plain select_latest_matching instead (#424 S1).
Source§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>>
Source§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>>
Source§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>>
Source§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 moreSource§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Source§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 moreSource§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_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 moreAuto Trait Implementations§
impl !RefUnwindSafe for PackagistRegistry
impl !UnwindSafe for PackagistRegistry
impl Freeze for PackagistRegistry
impl Send for PackagistRegistry
impl Sync for PackagistRegistry
impl Unpin for PackagistRegistry
impl UnsafeUnpin for PackagistRegistry
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