diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 1 | ||||
-rw-r--r-- | cli/args/mod.rs | 4 | ||||
-rw-r--r-- | cli/factory.rs | 7 | ||||
-rw-r--r-- | cli/lsp/analysis.rs | 2 | ||||
-rw-r--r-- | cli/lsp/resolver.rs | 10 | ||||
-rw-r--r-- | cli/module_loader.rs | 2 | ||||
-rw-r--r-- | cli/node.rs | 12 | ||||
-rw-r--r-- | cli/npm/byonm.rs | 71 | ||||
-rw-r--r-- | cli/npm/managed/mod.rs | 37 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/common.rs | 2 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/global.rs | 6 | ||||
-rw-r--r-- | cli/npm/managed/resolvers/local.rs | 8 | ||||
-rw-r--r-- | cli/npm/mod.rs | 8 | ||||
-rw-r--r-- | cli/resolver.rs | 24 | ||||
-rw-r--r-- | cli/standalone/mod.rs | 65 | ||||
-rw-r--r-- | cli/tools/registry/pm.rs | 2 | ||||
-rw-r--r-- | cli/tsc/mod.rs | 10 | ||||
-rw-r--r-- | cli/worker.rs | 23 |
18 files changed, 174 insertions, 120 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index a19dcbe3d..cda410c63 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -80,6 +80,7 @@ deno_task_shell = "=0.17.0" deno_terminal.workspace = true eszip = "=0.72.2" napi_sym.workspace = true +node_resolver.workspace = true async-trait.workspace = true base32.workspace = true diff --git a/cli/args/mod.rs b/cli/args/mod.rs index aea6ed8a8..ea79aaa46 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -820,9 +820,7 @@ impl CliOptions { WorkspaceDiscoverOptions { fs: Default::default(), // use real fs deno_json_cache: None, - pkg_json_cache: Some( - &deno_runtime::deno_node::PackageJsonThreadLocalCache, - ), + pkg_json_cache: Some(&node_resolver::PackageJsonThreadLocalCache), workspace_cache: None, config_parse_options, additional_config_file_names, diff --git a/cli/factory.rs b/cli/factory.rs index aeab3cbc4..3e618e239 100644 --- a/cli/factory.rs +++ b/cli/factory.rs @@ -62,13 +62,14 @@ use deno_core::futures::FutureExt; use deno_core::FeatureChecker; use deno_runtime::deno_fs; -use deno_runtime::deno_node::analyze::NodeCodeTranslator; +use deno_runtime::deno_node::DenoFsNodeResolverEnv; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_tls::rustls::RootCertStore; use deno_runtime::deno_tls::RootCertStoreProvider; use deno_runtime::deno_web::BlobStore; use deno_runtime::inspector_server::InspectorServer; use log::warn; +use node_resolver::analyze::NodeCodeTranslator; use once_cell::sync::OnceCell; use std::future::Future; use std::sync::Arc; @@ -553,7 +554,7 @@ impl CliFactory { .get_or_try_init_async( async { Ok(Arc::new(NodeResolver::new( - self.fs().clone(), + DenoFsNodeResolverEnv::new(self.fs().clone()), self.npm_resolver().await?.clone().into_npm_resolver(), ))) } @@ -577,7 +578,7 @@ impl CliFactory { Ok(Arc::new(NodeCodeTranslator::new( cjs_esm_analyzer, - self.fs().clone(), + DenoFsNodeResolverEnv::new(self.fs().clone()), self.node_resolver().await?.clone(), self.npm_resolver().await?.clone().into_npm_resolver(), ))) diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs index 97730ac7e..ec8bd4a28 100644 --- a/cli/lsp/analysis.rs +++ b/cli/lsp/analysis.rs @@ -23,7 +23,6 @@ use deno_core::serde::Serialize; use deno_core::serde_json; use deno_core::serde_json::json; use deno_core::ModuleSpecifier; -use deno_runtime::deno_node::NpmResolver; use deno_runtime::deno_node::PathClean; use deno_semver::jsr::JsrPackageNvReference; use deno_semver::jsr::JsrPackageReqReference; @@ -34,6 +33,7 @@ use deno_semver::package::PackageReq; use deno_semver::package::PackageReqReference; use deno_semver::Version; use import_map::ImportMap; +use node_resolver::NpmResolver; use once_cell::sync::Lazy; use regex::Regex; use std::cmp::Ordering; diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs index bdfd5fd3e..d6fc3096c 100644 --- a/cli/lsp/resolver.rs +++ b/cli/lsp/resolver.rs @@ -35,11 +35,7 @@ use deno_graph::GraphImport; use deno_graph::ModuleSpecifier; use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs; -use deno_runtime::deno_node::errors::ClosestPkgJsonError; -use deno_runtime::deno_node::NodeResolution; -use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NodeResolver; -use deno_runtime::deno_node::NpmResolver; use deno_runtime::deno_node::PackageJson; use deno_runtime::fs_util::specifier_to_file_path; use deno_semver::jsr::JsrPackageReqReference; @@ -47,6 +43,10 @@ use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageNv; use deno_semver::package::PackageReq; use indexmap::IndexMap; +use node_resolver::errors::ClosestPkgJsonError; +use node_resolver::NodeResolution; +use node_resolver::NodeResolutionMode; +use node_resolver::NpmResolver; use std::borrow::Cow; use std::collections::BTreeMap; use std::collections::BTreeSet; @@ -496,7 +496,7 @@ fn create_node_resolver( let npm_resolver = npm_resolver?; let fs = Arc::new(deno_fs::RealFs); let node_resolver_inner = Arc::new(NodeResolver::new( - fs.clone(), + deno_runtime::deno_node::DenoFsNodeResolverEnv::new(fs.clone()), npm_resolver.clone().into_npm_resolver(), )); Some(Arc::new(CliNodeResolver::new( diff --git a/cli/module_loader.rs b/cli/module_loader.rs index 2e047d36d..bda4e58d8 100644 --- a/cli/module_loader.rs +++ b/cli/module_loader.rs @@ -64,9 +64,9 @@ use deno_graph::Module; use deno_graph::ModuleGraph; use deno_graph::Resolution; use deno_runtime::code_cache; -use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_permissions::PermissionsContainer; use deno_semver::npm::NpmPackageReqReference; +use node_resolver::NodeResolutionMode; pub async fn load_top_level_deps(factory: &CliFactory) -> Result<(), AnyError> { let npm_resolver = factory.npm_resolver().await?; diff --git a/cli/node.rs b/cli/node.rs index 5ecbacdc7..0fd18e299 100644 --- a/cli/node.rs +++ b/cli/node.rs @@ -6,10 +6,11 @@ use deno_ast::MediaType; use deno_ast::ModuleSpecifier; use deno_core::error::AnyError; use deno_runtime::deno_fs; -use deno_runtime::deno_node::analyze::CjsAnalysis as ExtNodeCjsAnalysis; -use deno_runtime::deno_node::analyze::CjsAnalysisExports; -use deno_runtime::deno_node::analyze::CjsCodeAnalyzer; -use deno_runtime::deno_node::analyze::NodeCodeTranslator; +use deno_runtime::deno_node::DenoFsNodeResolverEnv; +use node_resolver::analyze::CjsAnalysis as ExtNodeCjsAnalysis; +use node_resolver::analyze::CjsAnalysisExports; +use node_resolver::analyze::CjsCodeAnalyzer; +use node_resolver::analyze::NodeCodeTranslator; use serde::Deserialize; use serde::Serialize; @@ -17,7 +18,8 @@ use crate::cache::CacheDBHash; use crate::cache::NodeAnalysisCache; use crate::util::fs::canonicalize_path_maybe_not_exists; -pub type CliNodeCodeTranslator = NodeCodeTranslator<CliCjsCodeAnalyzer>; +pub type CliNodeCodeTranslator = + NodeCodeTranslator<CliCjsCodeAnalyzer, DenoFsNodeResolverEnv>; /// Resolves a specifier that is pointing into a node_modules folder. /// diff --git a/cli/npm/byonm.rs b/cli/npm/byonm.rs index 86c9badac..a0f23fc66 100644 --- a/cli/npm/byonm.rs +++ b/cli/npm/byonm.rs @@ -11,14 +11,18 @@ use deno_core::error::AnyError; use deno_core::serde_json; use deno_package_json::PackageJsonDepValue; 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::errors::PackageNotFoundError; -use deno_runtime::deno_node::load_pkg_json; +use deno_runtime::deno_node::DenoPkgJsonFsAdapter; 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_runtime::deno_node::PackageJson; use deno_semver::package::PackageReq; +use node_resolver::errors::PackageFolderResolveError; +use node_resolver::errors::PackageFolderResolveIoError; +use node_resolver::errors::PackageJsonLoadError; +use node_resolver::errors::PackageNotFoundError; +use node_resolver::load_pkg_json; +use node_resolver::NpmResolver; use crate::args::NpmProcessState; use crate::args::NpmProcessStateKind; @@ -50,6 +54,15 @@ pub struct ByonmCliNpmResolver { } impl ByonmCliNpmResolver { + fn load_pkg_json( + &self, + path: &Path, + ) -> Result<Option<Arc<PackageJson>>, PackageJsonLoadError> { + load_pkg_json(&DenoPkgJsonFsAdapter(self.fs.as_ref()), path) + } +} + +impl ByonmCliNpmResolver { /// Finds the ancestor package.json that contains the specified dependency. pub fn find_ancestor_package_json_with_dep( &self, @@ -60,9 +73,7 @@ impl ByonmCliNpmResolver { let mut current_folder = referrer_path.parent()?; loop { let pkg_json_path = current_folder.join("package.json"); - if let Ok(Some(pkg_json)) = - load_pkg_json(self.fs.as_ref(), &pkg_json_path) - { + if let Ok(Some(pkg_json)) = self.load_pkg_json(&pkg_json_path) { if let Some(deps) = &pkg_json.dependencies { if deps.contains_key(dep_name) { return Some(pkg_json); @@ -119,9 +130,7 @@ impl ByonmCliNpmResolver { let mut current_path = file_path.as_path(); while let Some(dir_path) = current_path.parent() { let package_json_path = dir_path.join("package.json"); - if let Some(pkg_json) = - load_pkg_json(self.fs.as_ref(), &package_json_path)? - { + if let Some(pkg_json) = self.load_pkg_json(&package_json_path)? { if let Some(alias) = resolve_alias_from_pkg_json(req, pkg_json.as_ref()) { @@ -136,9 +145,7 @@ impl ByonmCliNpmResolver { if let Some(root_node_modules_dir) = &self.root_node_modules_dir { let root_pkg_json_path = root_node_modules_dir.parent().unwrap().join("package.json"); - if let Some(pkg_json) = - load_pkg_json(self.fs.as_ref(), &root_pkg_json_path)? - { + if let Some(pkg_json) = self.load_pkg_json(&root_pkg_json_path)? { if let Some(alias) = resolve_alias_from_pkg_json(req, pkg_json.as_ref()) { return Ok((pkg_json, alias)); @@ -158,17 +165,6 @@ impl ByonmCliNpmResolver { } impl NpmResolver for ByonmCliNpmResolver { - fn get_npm_process_state(&self) -> String { - serde_json::to_string(&NpmProcessState { - kind: NpmProcessStateKind::Byonm, - local_node_modules_path: self - .root_node_modules_dir - .as_ref() - .map(|p| p.to_string_lossy().to_string()), - }) - .unwrap() - } - fn resolve_package_folder_from_package( &self, name: &str, @@ -226,7 +222,9 @@ impl NpmResolver for ByonmCliNpmResolver { .to_ascii_lowercase() .contains("/node_modules/") } +} +impl NodeRequireResolver for ByonmCliNpmResolver { fn ensure_read_permission( &self, permissions: &mut dyn NodePermissions, @@ -242,11 +240,34 @@ impl NpmResolver for ByonmCliNpmResolver { } } +impl NpmProcessStateProvider for ByonmCliNpmResolver { + fn get_npm_process_state(&self) -> String { + serde_json::to_string(&NpmProcessState { + kind: NpmProcessStateKind::Byonm, + local_node_modules_path: self + .root_node_modules_dir + .as_ref() + .map(|p| p.to_string_lossy().to_string()), + }) + .unwrap() + } +} + impl CliNpmResolver for ByonmCliNpmResolver { 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> { Arc::new(Self { fs: self.fs.clone(), 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( diff --git a/cli/npm/managed/resolvers/common.rs b/cli/npm/managed/resolvers/common.rs index dffa1b75c..170dc2ae6 100644 --- a/cli/npm/managed/resolvers/common.rs +++ b/cli/npm/managed/resolvers/common.rs @@ -18,8 +18,8 @@ use deno_npm::NpmPackageCacheFolderId; use deno_npm::NpmPackageId; use deno_npm::NpmResolutionPackage; use deno_runtime::deno_fs::FileSystem; -use deno_runtime::deno_node::errors::PackageFolderResolveError; use deno_runtime::deno_node::NodePermissions; +use node_resolver::errors::PackageFolderResolveError; use crate::npm::managed::cache::TarballCache; diff --git a/cli/npm/managed/resolvers/global.rs b/cli/npm/managed/resolvers/global.rs index e7a57fc23..7f8f285f3 100644 --- a/cli/npm/managed/resolvers/global.rs +++ b/cli/npm/managed/resolvers/global.rs @@ -14,10 +14,10 @@ use deno_npm::NpmPackageCacheFolderId; use deno_npm::NpmPackageId; use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs::FileSystem; -use deno_runtime::deno_node::errors::PackageFolderResolveError; -use deno_runtime::deno_node::errors::PackageNotFoundError; -use deno_runtime::deno_node::errors::ReferrerNotFoundError; use deno_runtime::deno_node::NodePermissions; +use node_resolver::errors::PackageFolderResolveError; +use node_resolver::errors::PackageNotFoundError; +use node_resolver::errors::ReferrerNotFoundError; use super::super::cache::NpmCache; use super::super::cache::TarballCache; diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs index cda78548b..b741fd15d 100644 --- a/cli/npm/managed/resolvers/local.rs +++ b/cli/npm/managed/resolvers/local.rs @@ -32,12 +32,12 @@ use deno_npm::NpmPackageId; use deno_npm::NpmResolutionPackage; use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs; -use deno_runtime::deno_node::errors::PackageFolderResolveError; -use deno_runtime::deno_node::errors::PackageFolderResolveIoError; -use deno_runtime::deno_node::errors::PackageNotFoundError; -use deno_runtime::deno_node::errors::ReferrerNotFoundError; use deno_runtime::deno_node::NodePermissions; use deno_semver::package::PackageNv; +use node_resolver::errors::PackageFolderResolveError; +use node_resolver::errors::PackageFolderResolveIoError; +use node_resolver::errors::PackageNotFoundError; +use node_resolver::errors::ReferrerNotFoundError; use serde::Deserialize; use serde::Serialize; diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs index 8ae81de24..f883883aa 100644 --- a/cli/npm/mod.rs +++ b/cli/npm/mod.rs @@ -13,10 +13,12 @@ use deno_ast::ModuleSpecifier; use deno_core::error::AnyError; use deno_core::serde_json; use deno_npm::registry::NpmPackageInfo; -use deno_runtime::deno_node::NpmResolver; +use deno_runtime::deno_node::NodeRequireResolver; +use deno_runtime::deno_node::NpmProcessStateProvider; use deno_runtime::deno_permissions::PermissionsContainer; use deno_semver::package::PackageNv; use deno_semver::package::PackageReq; +use node_resolver::NpmResolver; use crate::args::npm_registry_url; use crate::file_fetcher::FileFetcher; @@ -63,6 +65,10 @@ pub enum InnerCliNpmResolverRef<'a> { pub trait CliNpmResolver: NpmResolver { fn into_npm_resolver(self: Arc<Self>) -> Arc<dyn NpmResolver>; + fn into_require_resolver(self: Arc<Self>) -> Arc<dyn NodeRequireResolver>; + fn into_process_state_provider( + self: Arc<Self>, + ) -> Arc<dyn NpmProcessStateProvider>; fn clone_snapshotted(&self) -> Arc<dyn CliNpmResolver>; diff --git a/cli/resolver.rs b/cli/resolver.rs index 5296b42b8..18804c025 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -23,23 +23,23 @@ use deno_npm::resolution::NpmResolutionError; use deno_package_json::PackageJsonDepValue; use deno_runtime::deno_fs; use deno_runtime::deno_fs::FileSystem; -use deno_runtime::deno_node::errors::ClosestPkgJsonError; -use deno_runtime::deno_node::errors::NodeResolveError; -use deno_runtime::deno_node::errors::NodeResolveErrorKind; -use deno_runtime::deno_node::errors::PackageFolderResolveErrorKind; -use deno_runtime::deno_node::errors::PackageFolderResolveIoError; -use deno_runtime::deno_node::errors::PackageNotFoundError; -use deno_runtime::deno_node::errors::PackageResolveErrorKind; -use deno_runtime::deno_node::errors::UrlToNodeResolutionError; use deno_runtime::deno_node::is_builtin_node_module; -use deno_runtime::deno_node::NodeModuleKind; -use deno_runtime::deno_node::NodeResolution; -use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NodeResolver; -use deno_runtime::deno_node::PackageJson; use deno_runtime::fs_util::specifier_to_file_path; use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageReq; +use node_resolver::errors::ClosestPkgJsonError; +use node_resolver::errors::NodeResolveError; +use node_resolver::errors::NodeResolveErrorKind; +use node_resolver::errors::PackageFolderResolveErrorKind; +use node_resolver::errors::PackageFolderResolveIoError; +use node_resolver::errors::PackageNotFoundError; +use node_resolver::errors::PackageResolveErrorKind; +use node_resolver::errors::UrlToNodeResolutionError; +use node_resolver::NodeModuleKind; +use node_resolver::NodeResolution; +use node_resolver::NodeResolutionMode; +use node_resolver::PackageJson; use std::borrow::Cow; use std::path::Path; use std::path::PathBuf; diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index c91f3bec9..1538807f1 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -5,34 +5,6 @@ #![allow(dead_code)] #![allow(unused_imports)] -use crate::args::create_default_npmrc; -use crate::args::get_root_cert_store; -use crate::args::npm_pkg_req_ref_to_binary_command; -use crate::args::CaData; -use crate::args::CacheSetting; -use crate::args::PackageJsonInstallDepsProvider; -use crate::args::StorageKeyResolver; -use crate::cache::Caches; -use crate::cache::DenoDirProvider; -use crate::cache::NodeAnalysisCache; -use crate::http_util::HttpClientProvider; -use crate::node::CliCjsCodeAnalyzer; -use crate::npm::create_cli_npm_resolver; -use crate::npm::CliNpmResolverByonmCreateOptions; -use crate::npm::CliNpmResolverCreateOptions; -use crate::npm::CliNpmResolverManagedCreateOptions; -use crate::npm::CliNpmResolverManagedSnapshotOption; -use crate::npm::NpmCacheDir; -use crate::resolver::CjsResolutionStore; -use crate::resolver::CliNodeResolver; -use crate::resolver::NpmModuleLoader; -use crate::util::progress_bar::ProgressBar; -use crate::util::progress_bar::ProgressBarStyle; -use crate::util::v8::construct_v8_flags; -use crate::worker::CliMainWorkerFactory; -use crate::worker::CliMainWorkerOptions; -use crate::worker::ModuleLoaderAndSourceMapGetter; -use crate::worker::ModuleLoaderFactory; use deno_ast::MediaType; use deno_config::workspace::MappedResolution; use deno_config::workspace::MappedResolutionError; @@ -53,8 +25,6 @@ use deno_core::ResolutionKind; use deno_npm::npm_rc::ResolvedNpmRc; use deno_package_json::PackageJsonDepValue; use deno_runtime::deno_fs; -use deno_runtime::deno_node::analyze::NodeCodeTranslator; -use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_permissions::Permissions; use deno_runtime::deno_permissions::PermissionsContainer; @@ -65,10 +35,41 @@ use deno_runtime::WorkerLogLevel; use deno_semver::npm::NpmPackageReqReference; use eszip::EszipRelativeFileBaseUrl; use import_map::parse_from_json; +use node_resolver::analyze::NodeCodeTranslator; +use node_resolver::NodeResolutionMode; use std::borrow::Cow; use std::rc::Rc; use std::sync::Arc; +use crate::args::create_default_npmrc; +use crate::args::get_root_cert_store; +use crate::args::npm_pkg_req_ref_to_binary_command; +use crate::args::CaData; +use crate::args::CacheSetting; +use crate::args::PackageJsonInstallDepsProvider; +use crate::args::StorageKeyResolver; +use crate::cache::Caches; +use crate::cache::DenoDirProvider; +use crate::cache::NodeAnalysisCache; +use crate::http_util::HttpClientProvider; +use crate::node::CliCjsCodeAnalyzer; +use crate::npm::create_cli_npm_resolver; +use crate::npm::CliNpmResolverByonmCreateOptions; +use crate::npm::CliNpmResolverCreateOptions; +use crate::npm::CliNpmResolverManagedCreateOptions; +use crate::npm::CliNpmResolverManagedSnapshotOption; +use crate::npm::NpmCacheDir; +use crate::resolver::CjsResolutionStore; +use crate::resolver::CliNodeResolver; +use crate::resolver::NpmModuleLoader; +use crate::util::progress_bar::ProgressBar; +use crate::util::progress_bar::ProgressBarStyle; +use crate::util::v8::construct_v8_flags; +use crate::worker::CliMainWorkerFactory; +use crate::worker::CliMainWorkerOptions; +use crate::worker::ModuleLoaderAndSourceMapGetter; +use crate::worker::ModuleLoaderFactory; + pub mod binary; mod file_system; mod virtual_fs; @@ -549,7 +550,7 @@ pub async fn run( let has_node_modules_dir = npm_resolver.root_node_modules_path().is_some(); let node_resolver = Arc::new(NodeResolver::new( - fs.clone(), + deno_runtime::deno_node::DenoFsNodeResolverEnv::new(fs.clone()), npm_resolver.clone().into_npm_resolver(), )); let cjs_resolutions = Arc::new(CjsResolutionStore::default()); @@ -559,7 +560,7 @@ pub async fn run( CliCjsCodeAnalyzer::new(node_analysis_cache, fs.clone()); let node_code_translator = Arc::new(NodeCodeTranslator::new( cjs_esm_code_analyzer, - fs.clone(), + deno_runtime::deno_node::DenoFsNodeResolverEnv::new(fs.clone()), node_resolver.clone(), npm_resolver.clone().into_npm_resolver(), )); diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index 233e68240..2986c1c2a 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -308,7 +308,7 @@ pub async fn add( .context("Failed to update configuration file")?; // clear the previously cached package.json from memory before reloading it - deno_node::PackageJsonThreadLocalCache::clear(); + node_resolver::PackageJsonThreadLocalCache::clear(); // make a new CliFactory to pick up the updated config file let cli_factory = CliFactory::from_flags(flags); // cache deps diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index 424b5c3d3..ac7fc48e3 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -30,14 +30,14 @@ use deno_graph::GraphKind; use deno_graph::Module; use deno_graph::ModuleGraph; use deno_graph::ResolutionResolved; -use deno_runtime::deno_node::errors::NodeJsErrorCode; -use deno_runtime::deno_node::errors::NodeJsErrorCoded; -use deno_runtime::deno_node::NodeModuleKind; -use deno_runtime::deno_node::NodeResolution; -use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NodeResolver; use deno_semver::npm::NpmPackageReqReference; use lsp_types::Url; +use node_resolver::errors::NodeJsErrorCode; +use node_resolver::errors::NodeJsErrorCoded; +use node_resolver::NodeModuleKind; +use node_resolver::NodeResolution; +use node_resolver::NodeResolutionMode; use once_cell::sync::Lazy; use std::borrow::Cow; use std::collections::HashMap; diff --git a/cli/worker.rs b/cli/worker.rs index 0d7e61c50..8673804ab 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -22,8 +22,7 @@ use deno_runtime::code_cache; use deno_runtime::deno_broadcast_channel::InMemoryBroadcastChannel; use deno_runtime::deno_fs; use deno_runtime::deno_node; -use deno_runtime::deno_node::NodeResolution; -use deno_runtime::deno_node::NodeResolutionMode; +use deno_runtime::deno_node::NodeExtInitServices; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_permissions::PermissionsContainer; use deno_runtime::deno_tls::RootCertStoreProvider; @@ -40,6 +39,8 @@ use deno_runtime::WorkerExecutionMode; use deno_runtime::WorkerLogLevel; use deno_semver::npm::NpmPackageReqReference; use deno_terminal::colors; +use node_resolver::NodeResolution; +use node_resolver::NodeResolutionMode; use tokio::select; use crate::args::CliLockfile; @@ -144,7 +145,17 @@ struct SharedWorkerState { } impl SharedWorkerState { - // Currently empty + pub fn create_node_init_services(&self) -> NodeExtInitServices { + NodeExtInitServices { + node_require_resolver: self.npm_resolver.clone().into_require_resolver(), + node_resolver: self.node_resolver.clone(), + npm_process_state_provider: self + .npm_resolver + .clone() + .into_process_state_provider(), + npm_resolver: self.npm_resolver.clone().into_npm_resolver(), + } + } } pub struct CliMainWorker { @@ -599,8 +610,7 @@ impl CliMainWorkerFactory { strace_ops: shared.options.strace_ops.clone(), module_loader, fs: shared.fs.clone(), - node_resolver: Some(shared.node_resolver.clone()), - npm_resolver: Some(shared.npm_resolver.clone().into_npm_resolver()), + node_services: Some(shared.create_node_init_services()), get_error_class_fn: Some(&errors::get_error_class_name), cache_storage_dir, origin_storage_dir, @@ -793,8 +803,7 @@ fn create_web_worker_callback( format_js_error_fn: Some(Arc::new(format_js_error)), module_loader, fs: shared.fs.clone(), - node_resolver: Some(shared.node_resolver.clone()), - npm_resolver: Some(shared.npm_resolver.clone().into_npm_resolver()), + node_services: Some(shared.create_node_init_services()), worker_type: args.worker_type, maybe_inspector_server, get_error_class_fn: Some(&errors::get_error_class_name), |