summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/jsr.rs14
-rw-r--r--cli/npm/mod.rs2
-rw-r--r--tests/testdata/jsr/registry/@denotest/add/meta.json3
3 files changed, 13 insertions, 6 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;
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index 08c15941a..c17918c67 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -119,7 +119,7 @@ impl NpmFetchResolver {
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.
+ // Find the first matching version of the package.
let mut versions = package_info.versions.keys().collect::<Vec<_>>();
versions.sort();
let version = versions
diff --git a/tests/testdata/jsr/registry/@denotest/add/meta.json b/tests/testdata/jsr/registry/@denotest/add/meta.json
index 2f4daa844..72aea80cc 100644
--- a/tests/testdata/jsr/registry/@denotest/add/meta.json
+++ b/tests/testdata/jsr/registry/@denotest/add/meta.json
@@ -1,5 +1,8 @@
{
"versions": {
+ "2.0.0": {
+ "yanked": true
+ },
"1.0.0": {},
"0.2.0": {}
}