diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-25 19:08:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-25 19:08:14 -0400 |
commit | 3bf147fe287ac779b20d318daba56b336f356adf (patch) | |
tree | 3b5bfe2a1ad918b275a2cd08f7dcc05f90a180ab /cli/npm/managed/mod.rs | |
parent | 0cf7f268a7df7711ac6ab8c2c67b4d7abf454fcd (diff) |
refactor: decouple node resolution from deno_core (#24724)
Diffstat (limited to 'cli/npm/managed/mod.rs')
-rw-r--r-- | cli/npm/managed/mod.rs | 37 |
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( |