summaryrefslogtreecommitdiff
path: root/ext/node/lib.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-05-05 12:44:24 -0400
committerGitHub <noreply@github.com>2023-05-05 16:44:24 +0000
commita6c47ee74023f6ef683988cabc8caa95406e3c99 (patch)
tree74026c558a175b9cf6f881ec7229499878dd6a1a /ext/node/lib.rs
parent5270c43e412cc636cd9923182169d166d181f78a (diff)
refactor(ext/node): combine `deno_node::Fs` with `deno_fs::FileSystem` (#18991)
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r--ext/node/lib.rs70
1 files changed, 2 insertions, 68 deletions
diff --git a/ext/node/lib.rs b/ext/node/lib.rs
index 128f3a2fe..03ec730d8 100644
--- a/ext/node/lib.rs
+++ b/ext/node/lib.rs
@@ -14,7 +14,6 @@ use deno_semver::npm::NpmPackageReq;
use deno_semver::npm::NpmPackageReqReference;
use once_cell::sync::Lazy;
use std::collections::HashSet;
-use std::io;
use std::path::Path;
use std::path::PathBuf;
use std::rc::Rc;
@@ -51,71 +50,6 @@ impl NodePermissions for AllowAllNodePermissions {
}
}
-#[derive(Default, Clone)]
-pub struct NodeFsMetadata {
- pub is_file: bool,
- pub is_dir: bool,
-}
-
-pub trait NodeFs: std::fmt::Debug + Send + Sync {
- fn current_dir(&self) -> io::Result<PathBuf>;
- fn metadata(&self, path: &Path) -> io::Result<NodeFsMetadata>;
- fn is_file(&self, path: &Path) -> bool;
- fn is_dir(&self, path: &Path) -> bool;
- fn exists(&self, path: &Path) -> bool;
- fn read_to_string(&self, path: &Path) -> io::Result<String>;
- fn canonicalize(&self, path: &Path) -> io::Result<PathBuf>;
-}
-
-#[derive(Debug)]
-pub struct RealFs;
-
-impl NodeFs for RealFs {
- fn current_dir(&self) -> io::Result<PathBuf> {
- #[allow(clippy::disallowed_methods)]
- std::env::current_dir()
- }
-
- fn metadata(&self, path: &Path) -> io::Result<NodeFsMetadata> {
- #[allow(clippy::disallowed_methods)]
- std::fs::metadata(path).map(|metadata| {
- // on most systems, calling is_file() and is_dir() is cheap
- // and returns information already found in the metadata object
- NodeFsMetadata {
- is_file: metadata.is_file(),
- is_dir: metadata.is_dir(),
- }
- })
- }
-
- fn exists(&self, path: &Path) -> bool {
- #[allow(clippy::disallowed_methods)]
- std::fs::metadata(path).is_ok()
- }
-
- fn is_file(&self, path: &Path) -> bool {
- #[allow(clippy::disallowed_methods)]
- std::fs::metadata(path)
- .map(|m| m.is_file())
- .unwrap_or(false)
- }
-
- fn is_dir(&self, path: &Path) -> bool {
- #[allow(clippy::disallowed_methods)]
- std::fs::metadata(path).map(|m| m.is_dir()).unwrap_or(false)
- }
-
- fn read_to_string(&self, path: &Path) -> io::Result<String> {
- #[allow(clippy::disallowed_methods)]
- std::fs::read_to_string(path)
- }
-
- fn canonicalize(&self, path: &Path) -> io::Result<PathBuf> {
- #[allow(clippy::disallowed_methods)]
- std::path::Path::canonicalize(path)
- }
-}
-
pub trait NpmResolver: std::fmt::Debug + Send + Sync {
/// Resolves an npm package folder path from an npm package referrer.
fn resolve_package_folder_from_package(
@@ -516,10 +450,10 @@ deno_core::extension!(deno_node,
],
options = {
maybe_npm_resolver: Option<Arc<dyn NpmResolver>>,
- fs: Option<Arc<dyn NodeFs>>,
+ fs: Arc<dyn deno_fs::FileSystem>,
},
state = |state, options| {
- let fs = options.fs.unwrap_or_else(|| Arc::new(RealFs));
+ let fs = options.fs;
state.put(fs.clone());
if let Some(npm_resolver) = options.maybe_npm_resolver {
state.put(npm_resolver.clone());