diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2024-03-28 19:02:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-28 19:02:07 +0000 |
commit | d347e73f5aacf47f4ac75faccd06019ad29c6c78 (patch) | |
tree | 43523fb46d40ed1b22610dcd98b32f6ea6ce0840 /cli/jsr.rs | |
parent | bca0fe1cde3d30ce31c158862cc6764babf71a14 (diff) |
fix(jsr): exclude yanked versions from 'deno add' and completions (#23113)
Diffstat (limited to 'cli/jsr.rs')
-rw-r--r-- | cli/jsr.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/cli/jsr.rs b/cli/jsr.rs index 1f030ce70..1e194da71 100644 --- a/cli/jsr.rs +++ b/cli/jsr.rs @@ -207,14 +207,18 @@ impl JsrFetchResolver { let maybe_get_nv = || async { let name = req.name.clone(); let package_info = self.package_info(&name).await?; - // Find the first matching version of the package which is cached. - let mut versions = package_info.versions.keys().collect::<Vec<_>>(); - versions.sort(); + // Find the first matching version of the package. + let mut versions = package_info.versions.iter().collect::<Vec<_>>(); + versions.sort_by_key(|(v, _)| *v); let version = versions .into_iter() .rev() - .find(|v| req.version_req.tag().is_none() && req.version_req.matches(v)) - .cloned()?; + .find(|(v, i)| { + !i.yanked + && req.version_req.tag().is_none() + && req.version_req.matches(v) + }) + .map(|(v, _)| v.clone())?; Some(PackageNv { name, version }) }; let nv = maybe_get_nv().await; |