From c5302a0587bfdc8a78e8edf7429772f471c47304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 28 Mar 2023 23:52:08 +0200 Subject: refactor(ext/node): change extension type parameter (#18483) This commit changes the type parameter for "deno_node" extension, from `P: NodePermission` to `Env: NodeEnv`. `NodeEnv` is a new trait that has associated type `P: NodePermission`. This is a stepping stone to support swappable file system for the extension, that will be added as a second associated type to the `NodeEnv` trait. --- ext/node/lib.rs | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'ext/node/lib.rs') diff --git a/ext/node/lib.rs b/ext/node/lib.rs index 0507f4a88..1693a82ef 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -39,10 +39,21 @@ pub use resolution::NodeModuleKind; pub use resolution::NodeResolutionMode; pub use resolution::DEFAULT_CONDITIONS; +pub trait NodeEnv { + type P: NodePermissions; + // TODO(bartlomieju): + // type Fs: NodeFs; +} + pub trait NodePermissions { fn check_read(&mut self, path: &Path) -> Result<(), AnyError>; } +// TODO(bartlomieju): +// pub trait NodeFs { +// fn current_dir() -> Result; +// } + pub trait RequireNpmResolver { fn resolve_package_folder_from_package( &self, @@ -96,7 +107,7 @@ fn op_node_build_os() -> String { deno_core::extension!(deno_node, deps = [ deno_io, deno_fs ], - parameters = [P: NodePermissions], + parameters = [Env: NodeEnv], ops = [ crypto::op_node_create_decipheriv, crypto::op_node_cipheriv_encrypt, @@ -137,26 +148,26 @@ deno_core::extension!(deno_node, op_node_build_os, ops::op_require_init_paths, - ops::op_require_node_module_paths

, + ops::op_require_node_module_paths, ops::op_require_proxy_path, ops::op_require_is_deno_dir_package, ops::op_require_resolve_deno_dir, ops::op_require_is_request_relative, ops::op_require_resolve_lookup_paths, - ops::op_require_try_self_parent_path

, - ops::op_require_try_self

, - ops::op_require_real_path

, + ops::op_require_try_self_parent_path, + ops::op_require_try_self, + ops::op_require_real_path, ops::op_require_path_is_absolute, ops::op_require_path_dirname, - ops::op_require_stat

, + ops::op_require_stat, ops::op_require_path_resolve, ops::op_require_path_basename, - ops::op_require_read_file

, + ops::op_require_read_file, ops::op_require_as_file_path, - ops::op_require_resolve_exports

, - ops::op_require_read_closest_package_json

, - ops::op_require_read_package_scope

, - ops::op_require_package_imports_resolve

, + ops::op_require_resolve_exports, + ops::op_require_read_closest_package_json, + ops::op_require_read_package_scope, + ops::op_require_package_imports_resolve, ops::op_require_break_on_next_statement, ], esm_entry_point = "ext:deno_node/02_init.js", -- cgit v1.2.3