From d43e48c4e96b02289d505cd2558ba85d7d6cb57b Mon Sep 17 00:00:00 2001 From: David Sherret Date: Thu, 28 Sep 2023 16:43:45 -0400 Subject: refactor(ext/node): remove dependency on deno_npm and deno_semver (#20718) This is required from BYONM (bring your own node_modules). Part of #18967 --- cli/module_loader.rs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'cli/module_loader.rs') diff --git a/cli/module_loader.rs b/cli/module_loader.rs index 4a1e0b671..f1882d5d7 100644 --- a/cli/module_loader.rs +++ b/cli/module_loader.rs @@ -12,6 +12,7 @@ use crate::graph_util::ModuleGraphBuilder; use crate::graph_util::ModuleGraphContainer; use crate::node; use crate::node::CliNodeCodeTranslator; +use crate::npm::CliNpmResolver; use crate::resolver::CliGraphResolver; use crate::tools::check; use crate::tools::check::TypeChecker; @@ -646,6 +647,7 @@ pub struct NpmModuleLoader { node_code_translator: Arc, fs: Arc, node_resolver: Arc, + npm_resolver: Arc, } impl NpmModuleLoader { @@ -654,12 +656,14 @@ impl NpmModuleLoader { node_code_translator: Arc, fs: Arc, node_resolver: Arc, + npm_resolver: Arc, ) -> Self { Self { cjs_resolutions, node_code_translator, fs, node_resolver, + npm_resolver, } } @@ -693,9 +697,13 @@ impl NpmModuleLoader { nv_ref: &NpmPackageNvReference, permissions: &PermissionsContainer, ) -> Result { + let package_folder = self + .npm_resolver + .resolve_pkg_folder_from_deno_module(nv_ref.nv())?; self .handle_node_resolve_result(self.node_resolver.resolve_npm_reference( - nv_ref, + &package_folder, + nv_ref.sub_path(), NodeResolutionMode::Execution, permissions, )) @@ -704,16 +712,20 @@ impl NpmModuleLoader { pub fn resolve_req_reference( &self, - reference: &NpmPackageReqReference, + req_ref: &NpmPackageReqReference, permissions: &PermissionsContainer, ) -> Result { + let package_folder = self + .npm_resolver + .resolve_pkg_folder_from_deno_module_req(req_ref.req())?; self - .handle_node_resolve_result(self.node_resolver.resolve_npm_req_reference( - reference, + .handle_node_resolve_result(self.node_resolver.resolve_npm_reference( + &package_folder, + req_ref.sub_path(), NodeResolutionMode::Execution, permissions, )) - .with_context(|| format!("Could not resolve '{reference}'.")) + .with_context(|| format!("Could not resolve '{}'.", req_ref)) } pub fn maybe_prepare_load( -- cgit v1.2.3