summaryrefslogtreecommitdiff
path: root/cli/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'cli/standalone')
-rw-r--r--cli/standalone/binary.rs42
-rw-r--r--cli/standalone/mod.rs129
2 files changed, 72 insertions, 99 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index afe5a1b57..412cea12c 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -36,11 +36,8 @@ use crate::args::PackageJsonDepsProvider;
use crate::cache::DenoDir;
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;
use crate::util::progress_bar::ProgressBarStyle;
@@ -342,9 +339,6 @@ pub struct DenoCompileBinaryWriter<'a> {
file_fetcher: &'a FileFetcher,
client: &'a HttpClient,
deno_dir: &'a DenoDir,
- npm_api: &'a CliNpmRegistryApi,
- npm_cache: &'a NpmCache,
- npm_resolution: &'a NpmResolution,
npm_resolver: &'a dyn CliNpmResolver,
npm_system_info: NpmSystemInfo,
package_json_deps_provider: &'a PackageJsonDepsProvider,
@@ -356,9 +350,6 @@ impl<'a> DenoCompileBinaryWriter<'a> {
file_fetcher: &'a FileFetcher,
client: &'a HttpClient,
deno_dir: &'a DenoDir,
- npm_api: &'a CliNpmRegistryApi,
- npm_cache: &'a NpmCache,
- npm_resolution: &'a NpmResolution,
npm_resolver: &'a dyn CliNpmResolver,
npm_system_info: NpmSystemInfo,
package_json_deps_provider: &'a PackageJsonDepsProvider,
@@ -367,11 +358,8 @@ impl<'a> DenoCompileBinaryWriter<'a> {
file_fetcher,
client,
deno_dir,
- npm_api,
- npm_cache,
npm_resolver,
npm_system_info,
- npm_resolution,
package_json_deps_provider,
}
}
@@ -502,15 +490,22 @@ impl<'a> DenoCompileBinaryWriter<'a> {
.resolve_import_map(self.file_fetcher)
.await?
.map(|import_map| (import_map.base_url().clone(), import_map.to_json()));
- let (npm_vfs, npm_files) = if self.npm_resolution.has_packages() {
- let (root_dir, files) = self.build_vfs()?.into_dir_and_files();
- let snapshot = self
- .npm_resolution
- .serialized_valid_snapshot_for_system(&self.npm_system_info);
- eszip.add_npm_snapshot(snapshot);
- (Some(root_dir), files)
- } else {
- (None, Vec::new())
+ let (npm_vfs, npm_files) = match self.npm_resolver.as_inner() {
+ InnerCliNpmResolverRef::Managed(managed) => {
+ let snapshot =
+ managed.serialized_valid_snapshot_for_system(&self.npm_system_info);
+ if !snapshot.as_serialized().packages.is_empty() {
+ let (root_dir, files) = self.build_vfs()?.into_dir_and_files();
+ eszip.add_npm_snapshot(snapshot);
+ (Some(root_dir), files)
+ } else {
+ (None, Vec::new())
+ }
+ }
+ InnerCliNpmResolverRef::Byonm(_) => {
+ let (root_dir, files) = self.build_vfs()?.into_dir_and_files();
+ (Some(root_dir), files)
+ }
};
let metadata = Metadata {
@@ -555,8 +550,9 @@ impl<'a> DenoCompileBinaryWriter<'a> {
} 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 registry_url = npm_resolver.registry_base_url();
+ let root_path =
+ npm_resolver.registry_folder_in_global_cache(registry_url);
let mut builder = VfsBuilder::new(root_path)?;
for package in npm_resolver.all_system_packages(&self.npm_system_info)
{
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index 442334e39..64d56e6a5 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -14,14 +14,12 @@ use crate::http_util::HttpClient;
use crate::module_loader::CjsResolutionStore;
use crate::module_loader::NpmModuleLoader;
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::create_cli_npm_resolver;
+use crate::npm::CliNpmResolverCreateOptions;
+use crate::npm::CliNpmResolverManagedCreateOptions;
+use crate::npm::CliNpmResolverManagedPackageJsonInstallerOption;
+use crate::npm::CliNpmResolverManagedSnapshotOption;
use crate::npm::NpmCacheDir;
-use crate::npm::NpmResolution;
-use crate::npm::PackageJsonDepsInstaller;
use crate::resolver::MappedSpecifierResolver;
use crate::util::progress_bar::ProgressBar;
use crate::util::progress_bar::ProgressBarStyle;
@@ -40,7 +38,6 @@ use deno_core::ModuleLoader;
use deno_core::ModuleSpecifier;
use deno_core::ModuleType;
use deno_core::ResolutionKind;
-use deno_npm::NpmSystemInfo;
use deno_runtime::deno_fs;
use deno_runtime::deno_node::analyze::NodeCodeTranslator;
use deno_runtime::deno_node::NodeResolver;
@@ -309,82 +306,62 @@ pub async fn run(
.join(format!("deno-compile-{}", current_exe_name))
.join("node_modules");
let npm_cache_dir = NpmCacheDir::new(root_path.clone());
- let (fs, vfs_root, node_modules_path, snapshot) = if let Some(snapshot) =
- eszip.take_npm_snapshot()
- {
- let vfs_root_dir_path = if metadata.node_modules_dir {
- root_path
- } else {
- npm_cache_dir.registry_folder(&npm_registry_url)
- };
- let vfs = load_npm_vfs(vfs_root_dir_path.clone())
- .context("Failed to load npm vfs.")?;
- let node_modules_path = if metadata.node_modules_dir {
- Some(vfs.root().to_path_buf())
+ let npm_global_cache_dir = npm_cache_dir.get_cache_location();
+ let (fs, vfs_root, maybe_node_modules_path, maybe_snapshot) =
+ if let Some(snapshot) = eszip.take_npm_snapshot() {
+ let vfs_root_dir_path = if metadata.node_modules_dir {
+ root_path
+ } else {
+ npm_cache_dir.registry_folder(&npm_registry_url)
+ };
+ let vfs = load_npm_vfs(vfs_root_dir_path.clone())
+ .context("Failed to load npm vfs.")?;
+ let node_modules_path = if metadata.node_modules_dir {
+ Some(vfs.root().to_path_buf())
+ } else {
+ None
+ };
+ (
+ Arc::new(DenoCompileFileSystem::new(vfs))
+ as Arc<dyn deno_fs::FileSystem>,
+ Some(vfs_root_dir_path),
+ node_modules_path,
+ Some(snapshot),
+ )
} else {
- None
+ (
+ Arc::new(deno_fs::RealFs) as Arc<dyn deno_fs::FileSystem>,
+ None,
+ None,
+ None,
+ )
};
- (
- Arc::new(DenoCompileFileSystem::new(vfs)) as Arc<dyn deno_fs::FileSystem>,
- Some(vfs_root_dir_path),
- node_modules_path,
- Some(snapshot),
- )
- } else {
- (
- Arc::new(deno_fs::RealFs) as Arc<dyn deno_fs::FileSystem>,
- None,
- None,
- None,
- )
- };
- let npm_cache = Arc::new(NpmCache::new(
- npm_cache_dir,
- CacheSetting::Only,
- fs.clone(),
- http_client.clone(),
- progress_bar.clone(),
- ));
- let npm_api = Arc::new(CliNpmRegistryApi::new(
- npm_registry_url.clone(),
- npm_cache.clone(),
- http_client.clone(),
- progress_bar.clone(),
- ));
- let npm_resolution = Arc::new(NpmResolution::from_serialized(
- npm_api.clone(),
- snapshot,
- None,
- ));
- let has_node_modules_dir = node_modules_path.is_some();
- let npm_fs_resolver = create_npm_fs_resolver(
- fs.clone(),
- npm_cache,
- &progress_bar,
- npm_registry_url,
- npm_resolution.clone(),
- node_modules_path,
- NpmSystemInfo::default(),
- );
+ let has_node_modules_dir = maybe_node_modules_path.is_some();
let package_json_deps_provider = Arc::new(PackageJsonDepsProvider::new(
metadata
.package_json_deps
.map(|serialized| serialized.into_deps()),
));
- let package_json_installer = Arc::new(PackageJsonDepsInstaller::new(
- package_json_deps_provider.clone(),
- npm_api.clone(),
- npm_resolution.clone(),
- ));
- let npm_resolver = Arc::new(ManagedCliNpmResolver::new(
- npm_api.clone(),
- fs.clone(),
- npm_resolution.clone(),
- npm_fs_resolver,
- None,
- package_json_installer,
- )) as Arc<dyn CliNpmResolver>;
+ let npm_resolver = create_cli_npm_resolver(
+ CliNpmResolverCreateOptions::Managed(CliNpmResolverManagedCreateOptions {
+ snapshot: CliNpmResolverManagedSnapshotOption::Specified(maybe_snapshot),
+ maybe_lockfile: None,
+ fs: fs.clone(),
+ http_client: http_client.clone(),
+ npm_global_cache_dir,
+ cache_setting: CacheSetting::Only,
+ text_only_progress_bar: progress_bar,
+ maybe_node_modules_path,
+ package_json_installer:
+ CliNpmResolverManagedPackageJsonInstallerOption::ConditionalInstall(
+ package_json_deps_provider.clone(),
+ ),
+ npm_registry_url,
+ npm_system_info: Default::default(),
+ }),
+ )
+ .await?;
let node_resolver = Arc::new(NodeResolver::new(
fs.clone(),
npm_resolver.clone().into_npm_resolver(),