From 913e2875c1c31d5ffbc9c0c9ed0e8c63f6143024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Thu, 30 Mar 2023 03:20:31 +0200 Subject: refactor(ext/node): add NodeEnv::Fs associated type (#18484) This commit adds associated type to "NodeEnv" trait, called "Fs". The "Fs" type has a trait bound on "NodeFs", which specifies APIs required for all ops and resolution APIs to function. A "RealFs" implementation of "NodeFs" is exported from the "deno_node" crate, that provides a default implementation for the trait. All code in "deno_node" extension was changed to use the "NodeFs" trait to handle file system operations, instead of relying on APIs from the standard library. --- ext/node/package_json.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'ext/node/package_json.rs') diff --git a/ext/node/package_json.rs b/ext/node/package_json.rs index b0816dd85..60f50ad78 100644 --- a/ext/node/package_json.rs +++ b/ext/node/package_json.rs @@ -1,5 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +use crate::NodeFs; use crate::NodeModuleKind; use crate::NodePermissions; @@ -61,16 +62,16 @@ impl PackageJson { } } - pub fn load( + pub fn load( resolver: &dyn RequireNpmResolver, permissions: &mut dyn NodePermissions, path: PathBuf, ) -> Result { resolver.ensure_read_permission(permissions, &path)?; - Self::load_skip_read_permission(path) + Self::load_skip_read_permission::(path) } - pub fn load_skip_read_permission( + pub fn load_skip_read_permission( path: PathBuf, ) -> Result { assert!(path.is_absolute()); @@ -79,7 +80,7 @@ impl PackageJson { return Ok(CACHE.with(|cache| cache.borrow()[&path].clone())); } - let source = match std::fs::read_to_string(&path) { + let source = match Fs::read_to_string(&path) { Ok(source) => source, Err(err) if err.kind() == ErrorKind::NotFound => { return Ok(PackageJson::empty(path)); -- cgit v1.2.3