summaryrefslogtreecommitdiff
path: root/ext/node/lib.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-03-28 23:52:08 +0200
committerGitHub <noreply@github.com>2023-03-28 23:52:08 +0200
commitc5302a0587bfdc8a78e8edf7429772f471c47304 (patch)
treebbe82843bc2bad9bf1a86468a3413828c2f25e5e /ext/node/lib.rs
parent6fb6b0c1f302e8637c96131c9ffc4c4b9f3f5f0f (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.rs33
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",