chore: slight cleanup in npm resolvers (#20692)

This commit is contained in:
David Sherret 2023-09-26 16:42:39 -04:00 committed by GitHub
parent 50a3209fff
commit dcb00bb9b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 14 additions and 28 deletions

View file

@ -21,6 +21,7 @@ use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::ModuleSpecifier;
use deno_lint::rules::LintRule;
use deno_runtime::deno_node::NpmResolver;
use deno_runtime::deno_node::PackageJson;
use deno_runtime::deno_node::PathClean;
use deno_semver::package::PackageReq;

View file

@ -38,6 +38,7 @@ use deno_graph::ResolutionError;
use deno_graph::SpecifierError;
use deno_lint::rules::LintRule;
use deno_runtime::deno_node;
use deno_runtime::deno_node::NpmResolver;
use deno_runtime::tokio_util::create_basic_runtime;
use deno_semver::npm::NpmPackageReqReference;
use deno_semver::package::PackageReq;

View file

@ -49,6 +49,7 @@ use deno_core::JsRuntime;
use deno_core::ModuleSpecifier;
use deno_core::OpState;
use deno_core::RuntimeOptions;
use deno_runtime::deno_node::NpmResolver;
use deno_runtime::tokio_util::create_basic_runtime;
use lazy_regex::lazy_regex;
use log::error;

View file

@ -10,7 +10,6 @@ use std::path::PathBuf;
use std::sync::Arc;
use deno_ast::ModuleSpecifier;
use deno_core::anyhow::bail;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
use deno_core::serde_json;
@ -24,7 +23,6 @@ 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_runtime::deno_node::PathClean;
use deno_semver::package::PackageNv;
use deno_semver::package::PackageReq;
use global::GlobalNpmPackageResolver;
@ -174,13 +172,6 @@ impl CliNpmResolver {
Ok(crate::util::fs::dir_size(&package_folder)?)
}
/// Gets if the provided specifier is in an npm package.
pub fn in_npm_package(&self, specifier: &ModuleSpecifier) -> bool {
let root_dir_url = self.fs_resolver.root_dir_url();
debug_assert!(root_dir_url.as_str().ends_with('/'));
specifier.as_ref().starts_with(root_dir_url.as_str())
}
/// Adds package requirements to the resolver and ensures everything is setup.
pub async fn add_package_reqs(
&self,
@ -273,10 +264,9 @@ impl NpmResolver for CliNpmResolver {
fn resolve_package_folder_from_path(
&self,
path: &Path,
specifier: &ModuleSpecifier,
) -> Result<Option<PathBuf>, AnyError> {
let specifier = path_to_specifier(path)?;
self.resolve_package_folder_from_specifier(&specifier)
self.resolve_package_folder_from_specifier(specifier)
}
fn resolve_package_folder_from_deno_module(
@ -295,10 +285,9 @@ impl NpmResolver for CliNpmResolver {
}
fn in_npm_package(&self, specifier: &ModuleSpecifier) -> bool {
self
.resolve_package_folder_from_specifier(specifier)
.map(|p| p.is_some())
.unwrap_or(false)
let root_dir_url = self.fs_resolver.root_dir_url();
debug_assert!(root_dir_url.as_str().ends_with('/'));
specifier.as_ref().starts_with(root_dir_url.as_str())
}
fn ensure_read_permission(
@ -338,10 +327,3 @@ pub fn create_npm_fs_resolver(
)),
}
}
fn path_to_specifier(path: &Path) -> Result<ModuleSpecifier, AnyError> {
match ModuleSpecifier::from_file_path(path.to_path_buf().clean()) {
Ok(specifier) => Ok(specifier),
Err(()) => bail!("Could not convert '{}' to url.", path.display()),
}
}

View file

@ -87,7 +87,7 @@ pub trait NpmResolver: std::fmt::Debug + MaybeSend + MaybeSync {
/// Resolves the npm package folder path from the specified path.
fn resolve_package_folder_from_path(
&self,
path: &Path,
specifier: &ModuleSpecifier,
) -> Result<Option<PathBuf>, AnyError>;
/// Resolves an npm package folder path from a Deno module.

View file

@ -1133,7 +1133,7 @@ impl NodeResolver {
) -> Result<Option<PackageJson>, AnyError> {
let Some(root_folder) = self
.npm_resolver
.resolve_package_folder_from_path(&referrer.to_file_path().unwrap())?
.resolve_package_folder_from_path(referrer)?
else {
return Ok(None);
};
@ -1170,9 +1170,10 @@ impl NodeResolver {
if self.fs.exists_sync(&package_json_path) {
return Ok(Some(package_json_path));
}
let Some(root_pkg_folder) = self
.npm_resolver
.resolve_package_folder_from_path(current_dir)?
let Some(root_pkg_folder) =
self.npm_resolver.resolve_package_folder_from_path(
&ModuleSpecifier::from_directory_path(current_dir).unwrap(),
)?
else {
return Ok(None);
};