summaryrefslogtreecommitdiff
path: root/cli/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'cli/standalone')
-rw-r--r--cli/standalone/binary.rs54
-rw-r--r--cli/standalone/mod.rs11
2 files changed, 38 insertions, 27 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index 48ef043da..38fb3b08f 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -38,6 +38,7 @@ use crate::file_fetcher::FileFetcher;
use crate::http_util::HttpClient;
use crate::npm::CliNpmRegistryApi;
use crate::npm::CliNpmResolver;
+use crate::npm::InnerCliNpmResolverRef;
use crate::npm::NpmCache;
use crate::npm::NpmResolution;
use crate::util::progress_bar::ProgressBar;
@@ -344,7 +345,7 @@ pub struct DenoCompileBinaryWriter<'a> {
npm_api: &'a CliNpmRegistryApi,
npm_cache: &'a NpmCache,
npm_resolution: &'a NpmResolution,
- npm_resolver: &'a CliNpmResolver,
+ npm_resolver: &'a dyn CliNpmResolver,
npm_system_info: NpmSystemInfo,
package_json_deps_provider: &'a PackageJsonDepsProvider,
}
@@ -358,7 +359,7 @@ impl<'a> DenoCompileBinaryWriter<'a> {
npm_api: &'a CliNpmRegistryApi,
npm_cache: &'a NpmCache,
npm_resolution: &'a NpmResolution,
- npm_resolver: &'a CliNpmResolver,
+ npm_resolver: &'a dyn CliNpmResolver,
npm_system_info: NpmSystemInfo,
package_json_deps_provider: &'a PackageJsonDepsProvider,
) -> Self {
@@ -545,28 +546,35 @@ impl<'a> DenoCompileBinaryWriter<'a> {
}
fn build_vfs(&self) -> Result<VfsBuilder, AnyError> {
- if let Some(node_modules_path) = self.npm_resolver.node_modules_path() {
- let mut builder = VfsBuilder::new(node_modules_path.clone())?;
- builder.add_dir_recursive(&node_modules_path)?;
- Ok(builder)
- } else {
- // DO NOT include the user's registry url as it may contain credentials,
- // but also don't make this dependent on the registry url
- let registry_url = self.npm_api.base_url();
- let root_path = self.npm_cache.registry_folder(registry_url);
- let mut builder = VfsBuilder::new(root_path)?;
- for package in self
- .npm_resolution
- .all_system_packages(&self.npm_system_info)
- {
- let folder = self
- .npm_resolver
- .resolve_pkg_folder_from_pkg_id(&package.id)?;
- builder.add_dir_recursive(&folder)?;
+ match self.npm_resolver.as_inner() {
+ InnerCliNpmResolverRef::Managed(npm_resolver) => {
+ if let Some(node_modules_path) = npm_resolver.node_modules_path() {
+ let mut builder = VfsBuilder::new(node_modules_path.clone())?;
+ builder.add_dir_recursive(&node_modules_path)?;
+ Ok(builder)
+ } else {
+ // DO NOT include the user's registry url as it may contain credentials,
+ // but also don't make this dependent on the registry url
+ let registry_url = self.npm_api.base_url();
+ let root_path = self.npm_cache.registry_folder(registry_url);
+ let mut builder = VfsBuilder::new(root_path)?;
+ for package in self
+ .npm_resolution
+ .all_system_packages(&self.npm_system_info)
+ {
+ let folder =
+ npm_resolver.resolve_pkg_folder_from_pkg_id(&package.id)?;
+ builder.add_dir_recursive(&folder)?;
+ }
+ // overwrite the root directory's name to obscure the user's registry url
+ builder.set_root_dir_name("node_modules".to_string());
+ Ok(builder)
+ }
+ }
+ InnerCliNpmResolverRef::Byonm(_) => {
+ // todo(#18967): should use the node_modules directory
+ todo!()
}
- // overwrite the root directory's name to obscure the user's registry url
- builder.set_root_dir_name("node_modules".to_string());
- Ok(builder)
}
}
}
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index e3ab448e3..30bbd7f8b 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -17,6 +17,7 @@ use crate::node::CliCjsCodeAnalyzer;
use crate::npm::create_npm_fs_resolver;
use crate::npm::CliNpmRegistryApi;
use crate::npm::CliNpmResolver;
+use crate::npm::ManagedCliNpmResolver;
use crate::npm::NpmCache;
use crate::npm::NpmCacheDir;
use crate::npm::NpmResolution;
@@ -365,14 +366,16 @@ pub async fn run(
node_modules_path,
NpmSystemInfo::default(),
);
- let npm_resolver = Arc::new(CliNpmResolver::new(
+ let npm_resolver = Arc::new(ManagedCliNpmResolver::new(
fs.clone(),
npm_resolution.clone(),
npm_fs_resolver,
None,
+ )) as Arc<dyn CliNpmResolver>;
+ let node_resolver = Arc::new(NodeResolver::new(
+ fs.clone(),
+ npm_resolver.clone().into_npm_resolver(),
));
- let node_resolver =
- Arc::new(NodeResolver::new(fs.clone(), npm_resolver.clone()));
let cjs_resolutions = Arc::new(CjsResolutionStore::default());
let cache_db = Caches::new(deno_dir_provider.clone());
let node_analysis_cache = NodeAnalysisCache::new(cache_db.node_analysis_db());
@@ -382,7 +385,7 @@ pub async fn run(
cjs_esm_code_analyzer,
fs.clone(),
node_resolver.clone(),
- npm_resolver.clone(),
+ npm_resolver.clone().into_npm_resolver(),
));
let package_json_deps_provider = Arc::new(PackageJsonDepsProvider::new(
metadata