summaryrefslogtreecommitdiff
path: root/cli/npm/managed/mod.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-25 19:08:14 -0400
committerGitHub <noreply@github.com>2024-07-25 19:08:14 -0400
commit3bf147fe287ac779b20d318daba56b336f356adf (patch)
tree3b5bfe2a1ad918b275a2cd08f7dcc05f90a180ab /cli/npm/managed/mod.rs
parent0cf7f268a7df7711ac6ab8c2c67b4d7abf454fcd (diff)
refactor: decouple node resolution from deno_core (#24724)
Diffstat (limited to 'cli/npm/managed/mod.rs')
-rw-r--r--cli/npm/managed/mod.rs37
1 files changed, 26 insertions, 11 deletions
diff --git a/cli/npm/managed/mod.rs b/cli/npm/managed/mod.rs
index 602733cab..1561d3969 100644
--- a/cli/npm/managed/mod.rs
+++ b/cli/npm/managed/mod.rs
@@ -20,12 +20,14 @@ use deno_npm::NpmPackageId;
use deno_npm::NpmResolutionPackage;
use deno_npm::NpmSystemInfo;
use deno_runtime::deno_fs::FileSystem;
-use deno_runtime::deno_node::errors::PackageFolderResolveError;
-use deno_runtime::deno_node::errors::PackageFolderResolveIoError;
use deno_runtime::deno_node::NodePermissions;
-use deno_runtime::deno_node::NpmResolver;
+use deno_runtime::deno_node::NodeRequireResolver;
+use deno_runtime::deno_node::NpmProcessStateProvider;
use deno_semver::package::PackageNv;
use deno_semver::package::PackageReq;
+use node_resolver::errors::PackageFolderResolveError;
+use node_resolver::errors::PackageFolderResolveIoError;
+use node_resolver::NpmResolver;
use resolution::AddPkgReqsResult;
use crate::args::CliLockfile;
@@ -531,14 +533,6 @@ fn npm_process_state(
}
impl NpmResolver for ManagedCliNpmResolver {
- /// Gets the state of npm for the process.
- fn get_npm_process_state(&self) -> String {
- npm_process_state(
- self.resolution.serialized_valid_snapshot(),
- self.fs_resolver.node_modules_path().map(|p| p.as_path()),
- )
- }
-
fn resolve_package_folder_from_package(
&self,
name: &str,
@@ -563,7 +557,9 @@ impl NpmResolver for ManagedCliNpmResolver {
debug_assert!(root_dir_url.as_str().ends_with('/'));
specifier.as_ref().starts_with(root_dir_url.as_str())
}
+}
+impl NodeRequireResolver for ManagedCliNpmResolver {
fn ensure_read_permission(
&self,
permissions: &mut dyn NodePermissions,
@@ -573,11 +569,30 @@ impl NpmResolver for ManagedCliNpmResolver {
}
}
+impl NpmProcessStateProvider for ManagedCliNpmResolver {
+ fn get_npm_process_state(&self) -> String {
+ npm_process_state(
+ self.resolution.serialized_valid_snapshot(),
+ self.fs_resolver.node_modules_path().map(|p| p.as_path()),
+ )
+ }
+}
+
impl CliNpmResolver for ManagedCliNpmResolver {
fn into_npm_resolver(self: Arc<Self>) -> Arc<dyn NpmResolver> {
self
}
+ fn into_require_resolver(self: Arc<Self>) -> Arc<dyn NodeRequireResolver> {
+ self
+ }
+
+ fn into_process_state_provider(
+ self: Arc<Self>,
+ ) -> Arc<dyn NpmProcessStateProvider> {
+ self
+ }
+
fn clone_snapshotted(&self) -> Arc<dyn CliNpmResolver> {
// create a new snapshotted npm resolution and resolver
let npm_resolution = Arc::new(NpmResolution::new(