From c58a628e2ff449f8cbbdcd6bb8baeaba1ea95a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 4 Sep 2024 13:55:30 +0100 Subject: feat(add): strip package subpath when adding a package (#25419) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These now works: ``` $ deno add @std/dotenv/load $ deno add npm:preact/hooks ``` Previously we were erroring out, because this is a "package reference" including a subpath. Closes https://github.com/denoland/deno/issues/25385 --------- Signed-off-by: Bartek IwaƄczuk Co-authored-by: David Sherret --- cli/tools/registry/pm.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'cli') diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index 4a36b459a..e61da31d5 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -3,6 +3,8 @@ mod cache_deps; pub use cache_deps::cache_top_level_deps; +use deno_semver::jsr::JsrPackageReqReference; +use deno_semver::npm::NpmPackageReqReference; use std::borrow::Cow; use std::path::Path; @@ -501,14 +503,18 @@ impl AddPackageReq { match prefix { Prefix::Jsr => { - let package_req = PackageReq::from_str(entry_text)?; + let req_ref = + JsrPackageReqReference::from_str(&format!("jsr:{}", entry_text))?; + let package_req = req_ref.into_inner().req; Ok(AddPackageReq { alias: maybe_alias.unwrap_or_else(|| package_req.name.to_string()), value: AddPackageReqValue::Jsr(package_req), }) } Prefix::Npm => { - let package_req = PackageReq::from_str(entry_text)?; + let req_ref = + NpmPackageReqReference::from_str(&format!("npm:{}", entry_text))?; + let package_req = req_ref.into_inner().req; Ok(AddPackageReq { alias: maybe_alias.unwrap_or_else(|| package_req.name.to_string()), value: AddPackageReqValue::Npm(package_req), -- cgit v1.2.3