summaryrefslogtreecommitdiff
path: root/cli/proc_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r--cli/proc_state.rs55
1 files changed, 36 insertions, 19 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs
index 6c3c407d8..3d7130e5a 100644
--- a/cli/proc_state.rs
+++ b/cli/proc_state.rs
@@ -24,9 +24,11 @@ use crate::graph_util::ModuleGraphContainer;
use crate::http_util::HttpClient;
use crate::node;
use crate::node::NodeResolution;
+use crate::npm::create_npm_fs_resolver;
use crate::npm::NpmCache;
use crate::npm::NpmPackageResolver;
use crate::npm::NpmRegistryApi;
+use crate::npm::NpmResolution;
use crate::npm::PackageJsonDepsInstaller;
use crate::resolver::CliGraphResolver;
use crate::tools::check;
@@ -91,8 +93,10 @@ pub struct Inner {
pub resolver: Arc<CliGraphResolver>,
maybe_file_watcher_reporter: Option<FileWatcherReporter>,
pub node_analysis_cache: NodeAnalysisCache,
+ pub npm_api: NpmRegistryApi,
pub npm_cache: NpmCache,
pub npm_resolver: NpmPackageResolver,
+ pub npm_resolution: NpmResolution,
pub package_json_deps_installer: PackageJsonDepsInstaller,
pub cjs_resolutions: Mutex<HashSet<ModuleSpecifier>>,
progress_bar: ProgressBar,
@@ -153,8 +157,10 @@ impl ProcState {
resolver: self.resolver.clone(),
maybe_file_watcher_reporter: self.maybe_file_watcher_reporter.clone(),
node_analysis_cache: self.node_analysis_cache.clone(),
+ npm_api: self.npm_api.clone(),
npm_cache: self.npm_cache.clone(),
npm_resolver: self.npm_resolver.clone(),
+ npm_resolution: self.npm_resolution.clone(),
package_json_deps_installer: self.package_json_deps_installer.clone(),
cjs_resolutions: Default::default(),
progress_bar: self.progress_bar.clone(),
@@ -210,30 +216,41 @@ impl ProcState {
let lockfile = cli_options.maybe_lock_file();
- let registry_url = NpmRegistryApi::default_url().to_owned();
+ let npm_registry_url = NpmRegistryApi::default_url().to_owned();
let npm_cache = NpmCache::from_deno_dir(
&dir,
cli_options.cache_setting(),
http_client.clone(),
progress_bar.clone(),
);
- let api = NpmRegistryApi::new(
- registry_url,
+ let npm_api = NpmRegistryApi::new(
+ npm_registry_url.clone(),
npm_cache.clone(),
http_client.clone(),
progress_bar.clone(),
);
- let npm_resolver = NpmPackageResolver::new_with_maybe_lockfile(
- npm_cache.clone(),
- api,
+ let npm_snapshot = cli_options
+ .resolve_npm_resolution_snapshot(&npm_api)
+ .await?;
+ let npm_resolution = NpmResolution::new(
+ npm_api.clone(),
+ npm_snapshot,
+ lockfile.as_ref().cloned(),
+ );
+ let npm_fs_resolver = create_npm_fs_resolver(
+ npm_cache,
+ npm_registry_url,
+ npm_resolution.clone(),
cli_options.node_modules_dir_path(),
- cli_options.get_npm_resolution_snapshot(),
+ );
+ let npm_resolver = NpmPackageResolver::new(
+ npm_resolution.clone(),
+ npm_fs_resolver,
lockfile.as_ref().cloned(),
- )
- .await?;
+ );
let package_json_deps_installer = PackageJsonDepsInstaller::new(
- npm_resolver.api().clone(),
- npm_resolver.resolution().clone(),
+ npm_api.clone(),
+ npm_resolution.clone(),
cli_options.maybe_package_json_deps(),
);
let maybe_import_map = cli_options
@@ -247,8 +264,8 @@ impl ProcState {
cli_options.to_maybe_jsx_import_source_config(),
maybe_import_map.clone(),
cli_options.no_npm(),
- npm_resolver.api().clone(),
- npm_resolver.resolution().clone(),
+ npm_api.clone(),
+ npm_resolution.clone(),
package_json_deps_installer.clone(),
));
@@ -299,8 +316,10 @@ impl ProcState {
resolver,
maybe_file_watcher_reporter,
node_analysis_cache,
+ npm_api,
npm_cache,
npm_resolver,
+ npm_resolution,
package_json_deps_installer,
cjs_resolutions: Default::default(),
progress_bar,
@@ -564,10 +583,8 @@ impl ProcState {
if let Ok(reference) =
NpmPackageReqReference::from_specifier(&specifier)
{
- let reference = self
- .npm_resolver
- .resolution()
- .pkg_req_ref_to_nv_ref(reference)?;
+ let reference =
+ self.npm_resolution.pkg_req_ref_to_nv_ref(reference)?;
return self
.handle_node_resolve_result(node::node_resolve_npm_reference(
&reference,
@@ -641,8 +658,8 @@ impl ProcState {
self.options.to_maybe_jsx_import_source_config(),
self.maybe_import_map.clone(),
self.options.no_npm(),
- self.npm_resolver.api().clone(),
- self.npm_resolver.resolution().clone(),
+ self.npm_api.clone(),
+ self.npm_resolution.clone(),
self.package_json_deps_installer.clone(),
);
let graph_resolver = cli_resolver.as_graph_resolver();