diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-03-28 23:52:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-28 23:52:08 +0200 |
commit | c5302a0587bfdc8a78e8edf7429772f471c47304 (patch) | |
tree | bbe82843bc2bad9bf1a86468a3413828c2f25e5e /ext/node/lib.rs | |
parent | 6fb6b0c1f302e8637c96131c9ffc4c4b9f3f5f0f (diff) |
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.
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r-- | ext/node/lib.rs | 33 |
1 files changed, 22 insertions, 11 deletions
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<PathBuf, AnyError>; +// } + 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<P>, + ops::op_require_node_module_paths<Env>, 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<P>, - ops::op_require_try_self<P>, - ops::op_require_real_path<P>, + ops::op_require_try_self_parent_path<Env>, + ops::op_require_try_self<Env>, + ops::op_require_real_path<Env>, ops::op_require_path_is_absolute, ops::op_require_path_dirname, - ops::op_require_stat<P>, + ops::op_require_stat<Env>, ops::op_require_path_resolve, ops::op_require_path_basename, - ops::op_require_read_file<P>, + ops::op_require_read_file<Env>, ops::op_require_as_file_path, - ops::op_require_resolve_exports<P>, - ops::op_require_read_closest_package_json<P>, - ops::op_require_read_package_scope<P>, - ops::op_require_package_imports_resolve<P>, + ops::op_require_resolve_exports<Env>, + ops::op_require_read_closest_package_json<Env>, + ops::op_require_read_package_scope<Env>, + ops::op_require_package_imports_resolve<Env>, ops::op_require_break_on_next_statement, ], esm_entry_point = "ext:deno_node/02_init.js", |