diff options
Diffstat (limited to 'cli/npm/resolvers/mod.rs')
-rw-r--r-- | cli/npm/resolvers/mod.rs | 53 |
1 files changed, 35 insertions, 18 deletions
diff --git a/cli/npm/resolvers/mod.rs b/cli/npm/resolvers/mod.rs index 19dd726f5..efaad93ee 100644 --- a/cli/npm/resolvers/mod.rs +++ b/cli/npm/resolvers/mod.rs @@ -23,7 +23,10 @@ use deno_runtime::deno_fs::FileSystem; use deno_runtime::deno_node::NodePermissions; use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NpmResolver; +use deno_semver::npm::NpmPackageNvReference; +use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageNv; +use deno_semver::package::PackageNvReference; use deno_semver::package::PackageReq; use global::GlobalNpmPackageResolver; use serde::Deserialize; @@ -98,6 +101,19 @@ impl CliNpmResolver { .unwrap_or(false) } + pub fn resolve_pkg_nv_ref_from_pkg_req_ref( + &self, + req_ref: &NpmPackageReqReference, + ) -> Result<NpmPackageNvReference, PackageReqNotFoundError> { + let pkg_nv = self + .resolve_pkg_id_from_pkg_req(req_ref.req()) + .map(|id| id.nv)?; + Ok(NpmPackageNvReference::new(PackageNvReference { + nv: pkg_nv, + sub_path: req_ref.sub_path().map(|s| s.to_string()), + })) + } + pub fn resolve_pkg_id_from_pkg_req( &self, req: &PackageReq, @@ -127,7 +143,7 @@ impl CliNpmResolver { /// Resolve the root folder of the package the provided specifier is in. /// /// This will error when the provided specifier is not in an npm package. - pub fn resolve_package_folder_from_specifier( + pub fn resolve_pkg_folder_from_specifier( &self, specifier: &ModuleSpecifier, ) -> Result<Option<PathBuf>, AnyError> { @@ -145,8 +161,24 @@ impl CliNpmResolver { Ok(Some(path)) } + pub fn resolve_pkg_folder_from_deno_module_req( + &self, + req: &PackageReq, + ) -> Result<PathBuf, AnyError> { + let pkg_id = self.resolve_pkg_id_from_pkg_req(req)?; + self.resolve_pkg_folder_from_pkg_id(&pkg_id) + } + + pub fn resolve_pkg_folder_from_deno_module( + &self, + nv: &PackageNv, + ) -> Result<PathBuf, AnyError> { + let pkg_id = self.resolution.resolve_pkg_id_from_deno_module(nv)?; + self.resolve_pkg_folder_from_pkg_id(&pkg_id) + } + /// Resolves the package nv from the provided specifier. - pub fn resolve_package_id_from_specifier( + pub fn resolve_pkg_id_from_specifier( &self, specifier: &ModuleSpecifier, ) -> Result<Option<NpmPackageId>, AnyError> { @@ -266,22 +298,7 @@ impl NpmResolver for CliNpmResolver { &self, specifier: &ModuleSpecifier, ) -> Result<Option<PathBuf>, AnyError> { - self.resolve_package_folder_from_specifier(specifier) - } - - fn resolve_package_folder_from_deno_module( - &self, - pkg_nv: &PackageNv, - ) -> Result<PathBuf, AnyError> { - let pkg_id = self.resolution.resolve_pkg_id_from_deno_module(pkg_nv)?; - self.resolve_pkg_folder_from_pkg_id(&pkg_id) - } - - fn resolve_pkg_id_from_pkg_req( - &self, - req: &PackageReq, - ) -> Result<NpmPackageId, PackageReqNotFoundError> { - self.resolution.resolve_pkg_id_from_pkg_req(req) + self.resolve_pkg_folder_from_specifier(specifier) } fn in_npm_package(&self, specifier: &ModuleSpecifier) -> bool { |