summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-23 17:34:46 -0400
committerGitHub <noreply@github.com>2024-07-23 17:34:46 -0400
commit6055629ee7f48a4e887392ccac13788aa4008249 (patch)
tree453a06a5926a19814902ade6259ddc3631a1b181 /cli
parentf0df54fc70ec1781a3ffec232fefc38cabf39c37 (diff)
refactor: update to use deno_package_json (#24688)
This is in preparation for extracting out node resolution code from ext/node (which is something I'm going to do gradually over time). Uses https://github.com/denoland/deno_package_json
Diffstat (limited to 'cli')
-rw-r--r--cli/Cargo.toml3
-rw-r--r--cli/args/deno_json.rs56
-rw-r--r--cli/args/mod.rs5
-rw-r--r--cli/args/package_json.rs2
-rw-r--r--cli/factory.rs2
-rw-r--r--cli/lsp/config.rs10
-rw-r--r--cli/lsp/language_server.rs3
-rw-r--r--cli/npm/byonm.rs2
-rw-r--r--cli/resolver.rs2
-rw-r--r--cli/standalone/mod.rs4
-rw-r--r--cli/tools/registry/unfurl.rs2
11 files changed, 71 insertions, 20 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 6c185560d..3fa5b54ed 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -65,7 +65,7 @@ winres.workspace = true
[dependencies]
deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] }
deno_cache_dir = { workspace = true }
-deno_config = { workspace = true, features = ["workspace"] }
+deno_config = { version = "=0.26.1", features = ["workspace", "sync"] }
deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
deno_doc = { version = "=0.142.0", features = ["html", "syntect"] }
deno_emit = "=0.43.1"
@@ -73,6 +73,7 @@ deno_graph = { version = "=0.80.1", features = ["tokio_executor"] }
deno_lint = { version = "=0.60.1", features = ["docs"] }
deno_lockfile.workspace = true
deno_npm = "=0.21.4"
+deno_package_json.workspace = true
deno_runtime = { workspace = true, features = ["include_js_files_for_snapshotting"] }
deno_semver = "=0.5.7"
deno_task_shell = "=0.17.0"
diff --git a/cli/args/deno_json.rs b/cli/args/deno_json.rs
index 2b3261a0b..cbc33aa0b 100644
--- a/cli/args/deno_json.rs
+++ b/cli/args/deno_json.rs
@@ -7,6 +7,62 @@ use deno_semver::jsr::JsrDepPackageReq;
use deno_semver::jsr::JsrPackageReqReference;
use deno_semver::npm::NpmPackageReqReference;
+#[cfg(test)] // happens to only be used by the tests at the moment
+pub struct DenoConfigFsAdapter<'a>(
+ pub &'a dyn deno_runtime::deno_fs::FileSystem,
+);
+
+#[cfg(test)]
+impl<'a> deno_config::fs::DenoConfigFs for DenoConfigFsAdapter<'a> {
+ fn read_to_string_lossy(
+ &self,
+ path: &std::path::Path,
+ ) -> Result<String, std::io::Error> {
+ self
+ .0
+ .read_text_file_lossy_sync(path, None)
+ .map_err(|err| err.into_io_error())
+ }
+
+ fn stat_sync(
+ &self,
+ path: &std::path::Path,
+ ) -> Result<deno_config::fs::FsMetadata, std::io::Error> {
+ self
+ .0
+ .stat_sync(path)
+ .map(|stat| deno_config::fs::FsMetadata {
+ is_file: stat.is_file,
+ is_directory: stat.is_directory,
+ is_symlink: stat.is_symlink,
+ })
+ .map_err(|err| err.into_io_error())
+ }
+
+ fn read_dir(
+ &self,
+ path: &std::path::Path,
+ ) -> Result<Vec<deno_config::fs::FsDirEntry>, std::io::Error> {
+ self
+ .0
+ .read_dir_sync(path)
+ .map_err(|err| err.into_io_error())
+ .map(|entries| {
+ entries
+ .into_iter()
+ .map(|e| deno_config::fs::FsDirEntry {
+ path: path.join(e.name),
+ metadata: deno_config::fs::FsMetadata {
+ is_file: e.is_file,
+ is_directory: e.is_directory,
+ is_symlink: e.is_symlink,
+ },
+ })
+ .collect()
+ })
+ }
+}
+
pub fn deno_json_deps(
config: &deno_config::deno_json::ConfigFile,
) -> HashSet<JsrDepPackageReq> {
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index c2ea3be4d..ba2e06e06 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -25,8 +25,6 @@ use deno_npm::npm_rc::NpmRc;
use deno_npm::npm_rc::ResolvedNpmRc;
use deno_npm::resolution::ValidSerializedNpmResolutionSnapshot;
use deno_npm::NpmSystemInfo;
-use deno_runtime::deno_fs::DenoConfigFsAdapter;
-use deno_runtime::deno_fs::RealFs;
use deno_runtime::deno_permissions::PermissionsContainer;
use deno_runtime::deno_tls::RootCertStoreProvider;
use deno_semver::npm::NpmPackageReqReference;
@@ -835,7 +833,6 @@ impl CliOptions {
pub fn from_flags(flags: Flags) -> Result<Self, AnyError> {
let initial_cwd =
std::env::current_dir().with_context(|| "Failed getting cwd.")?;
- let config_fs_adapter = DenoConfigFsAdapter::new(&RealFs);
let maybe_vendor_override = flags.vendor.map(|v| match v {
true => VendorEnablement::Enable { cwd: &initial_cwd },
false => VendorEnablement::Disable,
@@ -860,7 +857,7 @@ impl CliOptions {
log::debug!("package.json auto-discovery is disabled");
}
WorkspaceDiscoverOptions {
- fs: &config_fs_adapter,
+ fs: Default::default(), // use real fs
deno_json_cache: None,
pkg_json_cache: Some(
&deno_runtime::deno_node::PackageJsonThreadLocalCache,
diff --git a/cli/args/package_json.rs b/cli/args/package_json.rs
index 170f8b677..eedd0a194 100644
--- a/cli/args/package_json.rs
+++ b/cli/args/package_json.rs
@@ -3,8 +3,8 @@
use std::path::PathBuf;
use std::sync::Arc;
-use deno_config::package_json::PackageJsonDepValue;
use deno_config::workspace::Workspace;
+use deno_package_json::PackageJsonDepValue;
use deno_semver::package::PackageReq;
#[derive(Debug)]
diff --git a/cli/factory.rs b/cli/factory.rs
index 15c36cfd2..18757cda6 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -55,12 +55,12 @@ use std::collections::BTreeSet;
use std::path::PathBuf;
use deno_config::deno_json::ConfigFile;
-use deno_config::package_json::PackageJsonDepValue;
use deno_config::workspace::PackageJsonDepResolution;
use deno_config::workspace::WorkspaceResolver;
use deno_core::error::AnyError;
use deno_core::futures::FutureExt;
use deno_core::FeatureChecker;
+use deno_package_json::PackageJsonDepValue;
use deno_lockfile::WorkspaceMemberConfig;
use deno_runtime::deno_fs;
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs
index 2757500d1..ec5430e8a 100644
--- a/cli/lsp/config.rs
+++ b/cli/lsp/config.rs
@@ -11,7 +11,6 @@ use deno_config::fs::DenoConfigFs;
use deno_config::fs::RealDenoConfigFs;
use deno_config::glob::FilePatterns;
use deno_config::glob::PathOrPatternSet;
-use deno_config::package_json::PackageJsonCache;
use deno_config::workspace::CreateResolverOptions;
use deno_config::workspace::PackageJsonDepResolution;
use deno_config::workspace::SpecifiedImportMap;
@@ -34,6 +33,7 @@ use deno_core::serde_json::Value;
use deno_core::ModuleSpecifier;
use deno_lint::linter::LintConfig as DenoLintConfig;
use deno_npm::npm_rc::ResolvedNpmRc;
+use deno_package_json::PackageJsonCache;
use deno_runtime::deno_node::PackageJson;
use deno_runtime::deno_permissions::PermissionsContainer;
use deno_runtime::fs_util::specifier_to_file_path;
@@ -1560,9 +1560,7 @@ impl ConfigData {
self.member_dir.maybe_deno_json()
}
- pub fn maybe_pkg_json(
- &self,
- ) -> Option<&Arc<deno_config::package_json::PackageJson>> {
+ pub fn maybe_pkg_json(&self) -> Option<&Arc<deno_package_json::PackageJson>> {
self.member_dir.maybe_pkg_json()
}
}
@@ -1793,7 +1791,7 @@ impl ConfigTree {
&config_path,
),
&deno_config::workspace::WorkspaceDiscoverOptions {
- fs: &deno_runtime::deno_fs::DenoConfigFsAdapter::new(&test_fs),
+ fs: &crate::args::deno_json::DenoConfigFsAdapter(&test_fs),
..Default::default()
},
)
@@ -1888,7 +1886,7 @@ impl deno_config::deno_json::DenoJsonCache for DenoJsonMemCache {
#[derive(Default)]
struct PackageJsonMemCache(Mutex<HashMap<PathBuf, Arc<PackageJson>>>);
-impl deno_config::package_json::PackageJsonCache for PackageJsonMemCache {
+impl deno_package_json::PackageJsonCache for PackageJsonMemCache {
fn get(&self, path: &Path) -> Option<Arc<PackageJson>> {
self.0.lock().get(path).cloned()
}
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 9680c63f9..0e65d8b25 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -15,7 +15,6 @@ use deno_core::url;
use deno_core::ModuleSpecifier;
use deno_graph::GraphKind;
use deno_graph::Resolution;
-use deno_runtime::deno_fs::DenoConfigFsAdapter;
use deno_runtime::deno_tls::rustls::RootCertStore;
use deno_runtime::deno_tls::RootCertStoreProvider;
use deno_semver::jsr::JsrPackageReqReference;
@@ -3539,7 +3538,7 @@ impl Inner {
initial_cwd.clone()
]),
&WorkspaceDiscoverOptions {
- fs: &DenoConfigFsAdapter::new(&deno_runtime::deno_fs::RealFs),
+ fs: Default::default(), // use real fs,
deno_json_cache: None,
pkg_json_cache: None,
workspace_cache: None,
diff --git a/cli/npm/byonm.rs b/cli/npm/byonm.rs
index 6f45648a8..f776b79c1 100644
--- a/cli/npm/byonm.rs
+++ b/cli/npm/byonm.rs
@@ -6,10 +6,10 @@ use std::path::PathBuf;
use std::sync::Arc;
use deno_ast::ModuleSpecifier;
-use deno_config::package_json::PackageJsonDepValue;
use deno_core::anyhow::bail;
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::PackageFolderResolveErrorKind;
diff --git a/cli/resolver.rs b/cli/resolver.rs
index 7c47795c4..c332878a2 100644
--- a/cli/resolver.rs
+++ b/cli/resolver.rs
@@ -4,7 +4,6 @@ use async_trait::async_trait;
use dashmap::DashMap;
use dashmap::DashSet;
use deno_ast::MediaType;
-use deno_config::package_json::PackageJsonDepValue;
use deno_config::workspace::MappedResolution;
use deno_config::workspace::MappedResolutionError;
use deno_config::workspace::WorkspaceResolver;
@@ -21,6 +20,7 @@ use deno_graph::source::DEFAULT_JSX_IMPORT_SOURCE_MODULE;
use deno_graph::NpmLoadError;
use deno_graph::NpmResolvePkgReqsResult;
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;
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index e0c8e66ff..14a857214 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -34,7 +34,6 @@ use crate::worker::CliMainWorkerOptions;
use crate::worker::ModuleLoaderAndSourceMapGetter;
use crate::worker::ModuleLoaderFactory;
use deno_ast::MediaType;
-use deno_config::package_json::PackageJsonDepValue;
use deno_config::workspace::MappedResolution;
use deno_config::workspace::MappedResolutionError;
use deno_config::workspace::WorkspaceResolver;
@@ -52,6 +51,7 @@ use deno_core::ModuleType;
use deno_core::RequestedModuleType;
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;
@@ -591,7 +591,7 @@ pub async fn run(
.to_file_path()
.unwrap();
let pkg_json =
- deno_config::package_json::PackageJson::load_from_value(path, json);
+ deno_package_json::PackageJson::load_from_value(path, json);
Arc::new(pkg_json)
})
.collect();
diff --git a/cli/tools/registry/unfurl.rs b/cli/tools/registry/unfurl.rs
index 63c773f01..f7c1049ca 100644
--- a/cli/tools/registry/unfurl.rs
+++ b/cli/tools/registry/unfurl.rs
@@ -3,7 +3,6 @@
use deno_ast::ParsedSource;
use deno_ast::SourceRange;
use deno_ast::SourceTextInfo;
-use deno_config::package_json::PackageJsonDepValue;
use deno_config::workspace::MappedResolution;
use deno_config::workspace::PackageJsonDepResolution;
use deno_config::workspace::WorkspaceResolver;
@@ -12,6 +11,7 @@ use deno_graph::DependencyDescriptor;
use deno_graph::DynamicTemplatePart;
use deno_graph::ParserModuleAnalyzer;
use deno_graph::TypeScriptReference;
+use deno_package_json::PackageJsonDepValue;
use deno_runtime::deno_node::is_builtin_node_module;
use crate::resolver::SloppyImportsResolver;