summaryrefslogtreecommitdiff
path: root/resolvers/node/env.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-09-28 19:17:48 -0400
committerGitHub <noreply@github.com>2024-09-28 19:17:48 -0400
commit5faf769ac61b627d14710cdf487de7cd4eb3f9d3 (patch)
tree2cc4ab975522b3c8845ab3040c010fd998a769a6 /resolvers/node/env.rs
parent3138478f66823348eb745c7f0c2d34eed378a3f0 (diff)
refactor: extract out sloppy imports resolution from CLI crate (#25920)
This is slow progress towards creating a `deno_resolver` crate. Waiting on: * https://github.com/denoland/deno/pull/25918 * https://github.com/denoland/deno/pull/25916
Diffstat (limited to 'resolvers/node/env.rs')
-rw-r--r--resolvers/node/env.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/resolvers/node/env.rs b/resolvers/node/env.rs
new file mode 100644
index 000000000..b520ece0f
--- /dev/null
+++ b/resolvers/node/env.rs
@@ -0,0 +1,39 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+use std::path::Path;
+use std::path::PathBuf;
+
+use crate::sync::MaybeSend;
+use crate::sync::MaybeSync;
+
+pub struct NodeResolverFsStat {
+ pub is_file: bool,
+ pub is_dir: bool,
+ pub is_symlink: bool,
+}
+
+pub trait NodeResolverEnv: std::fmt::Debug + MaybeSend + MaybeSync {
+ fn is_builtin_node_module(&self, specifier: &str) -> bool;
+
+ fn realpath_sync(&self, path: &Path) -> std::io::Result<PathBuf>;
+
+ fn stat_sync(&self, path: &Path) -> std::io::Result<NodeResolverFsStat>;
+
+ fn exists_sync(&self, path: &Path) -> bool;
+
+ fn is_file_sync(&self, path: &Path) -> bool {
+ self
+ .stat_sync(path)
+ .map(|stat| stat.is_file)
+ .unwrap_or(false)
+ }
+
+ fn is_dir_sync(&self, path: &Path) -> bool {
+ self
+ .stat_sync(path)
+ .map(|stat| stat.is_dir)
+ .unwrap_or(false)
+ }
+
+ fn pkg_json_fs(&self) -> &dyn deno_package_json::fs::DenoPkgJsonFs;
+}