diff options
Diffstat (limited to 'ext/node/resolution.rs')
-rw-r--r-- | ext/node/resolution.rs | 40 |
1 files changed, 9 insertions, 31 deletions
diff --git a/ext/node/resolution.rs b/ext/node/resolution.rs index cb4fef405..65c2e1bcd 100644 --- a/ext/node/resolution.rs +++ b/ext/node/resolution.rs @@ -543,7 +543,7 @@ impl NodeResolver { let mut package_json_path = None; if let Some(package_config) = - self.get_package_scope_config(referrer, permissions)? + self.get_closest_package_json(referrer, permissions)? { if package_config.exists { package_json_path = Some(package_config.path.clone()); @@ -977,12 +977,12 @@ impl NodeResolver { let (package_name, package_subpath, _is_scoped) = parse_npm_pkg_name(specifier, referrer)?; - // ResolveSelf let Some(package_config) = - self.get_package_scope_config(referrer, permissions)? + self.get_closest_package_json(referrer, permissions)? else { return Ok(None); }; + // ResolveSelf if package_config.exists && package_config.name.as_ref() == Some(&package_name) { @@ -1086,24 +1086,7 @@ impl NodeResolver { } } - pub(super) fn get_package_scope_config( - &self, - referrer: &ModuleSpecifier, - permissions: &dyn NodePermissions, - ) -> Result<Option<PackageJson>, AnyError> { - let Some(root_folder) = self - .npm_resolver - .resolve_package_folder_from_path(referrer)? - else { - return Ok(None); - }; - let package_json_path = root_folder.join("package.json"); - self - .load_package_json(permissions, package_json_path) - .map(Some) - } - - pub(super) fn get_closest_package_json( + pub fn get_closest_package_json( &self, url: &ModuleSpecifier, permissions: &dyn NodePermissions, @@ -1121,7 +1104,9 @@ impl NodeResolver { &self, url: &ModuleSpecifier, ) -> Result<Option<PathBuf>, AnyError> { - let file_path = url.to_file_path().unwrap(); + let Ok(file_path) = url.to_file_path() else { + return Ok(None); + }; let current_dir = deno_core::strip_unc_prefix( self.fs.realpath_sync(file_path.parent().unwrap())?, ); @@ -1130,15 +1115,8 @@ 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( - &ModuleSpecifier::from_directory_path(current_dir).unwrap(), - )? - else { - return Ok(None); - }; - while current_dir.starts_with(&root_pkg_folder) { - current_dir = current_dir.parent().unwrap(); + while let Some(parent) = current_dir.parent() { + current_dir = parent; let package_json_path = current_dir.join("package.json"); if self.fs.exists_sync(&package_json_path) { return Ok(Some(package_json_path)); |