diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-04-24 19:44:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-24 19:44:35 -0400 |
commit | aa286fdecb15461ef8ddd4c372f5a13e01e1cb7b (patch) | |
tree | 47ddc4e428b650fae536c3c1eb73ae5a64c4fe6a /runtime | |
parent | bb74e75a049768c2949aa08de6752a16813b97de (diff) |
refactor(ext/node): allow injecting `NodeFs` from CLI (#18829)
This allows providing a `NodeFs` as part of the `WorkerOptions`.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/build.rs | 3 | ||||
-rw-r--r-- | runtime/examples/hello_runtime.rs | 1 | ||||
-rw-r--r-- | runtime/lib.rs | 1 | ||||
-rw-r--r-- | runtime/web_worker.rs | 5 | ||||
-rw-r--r-- | runtime/worker.rs | 6 |
5 files changed, 9 insertions, 7 deletions
diff --git a/runtime/build.rs b/runtime/build.rs index d47bee941..358a30dc5 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -222,7 +222,6 @@ mod startup_snapshot { impl deno_node::NodeEnv for SnapshotNodeEnv { type P = Permissions; - type Fs = deno_node::RealFs; } deno_core::extension!(runtime, @@ -324,7 +323,7 @@ mod startup_snapshot { runtime::init_ops_and_esm(), // FIXME(bartlomieju): these extensions are specified last, because they // depend on `runtime`, even though it should be other way around - deno_node::deno_node::init_ops_and_esm::<SnapshotNodeEnv>(None), + deno_node::deno_node::init_ops_and_esm::<SnapshotNodeEnv>(None, None), #[cfg(not(feature = "snapshot_from_snapshot"))] runtime_main::init_ops_and_esm(), ]; diff --git a/runtime/examples/hello_runtime.rs b/runtime/examples/hello_runtime.rs index f44c774fb..f97c045b2 100644 --- a/runtime/examples/hello_runtime.rs +++ b/runtime/examples/hello_runtime.rs @@ -43,6 +43,7 @@ async fn main() -> Result<(), AnyError> { should_break_on_first_statement: false, should_wait_for_inspector_session: false, module_loader, + node_fs: None, npm_resolver: None, get_error_class_fn: Some(&get_error_class_name), cache_storage_dir: None, diff --git a/runtime/lib.rs b/runtime/lib.rs index 6745c4a56..878171913 100644 --- a/runtime/lib.rs +++ b/runtime/lib.rs @@ -39,5 +39,4 @@ pub use worker_bootstrap::BootstrapOptions; pub struct RuntimeNodeEnv; impl deno_node::NodeEnv for RuntimeNodeEnv { type P = permissions::PermissionsContainer; - type Fs = deno_node::RealFs; } diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 06540a9bb..9bc5ba011 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -37,7 +37,6 @@ use deno_core::SourceMapGetter; use deno_fs::StdFs; use deno_io::Stdio; use deno_kv::sqlite::SqliteDbHandler; -use deno_node::NpmResolver; use deno_tls::rustls::RootCertStore; use deno_web::create_entangled_message_port; use deno_web::BlobStore; @@ -333,7 +332,8 @@ pub struct WebWorkerOptions { pub root_cert_store: Option<RootCertStore>, pub seed: Option<u64>, pub module_loader: Rc<dyn ModuleLoader>, - pub npm_resolver: Option<Rc<dyn NpmResolver>>, + pub node_fs: Option<Arc<dyn deno_node::NodeFs>>, + pub npm_resolver: Option<Arc<dyn deno_node::NpmResolver>>, pub create_web_worker_cb: Arc<ops::worker_host::CreateWebWorkerCb>, pub preload_module_cb: Arc<ops::worker_host::WorkerEventCb>, pub pre_execute_module_cb: Arc<ops::worker_host::WorkerEventCb>, @@ -444,6 +444,7 @@ impl WebWorker { deno_fs::deno_fs::init_ops::<_, PermissionsContainer>(unstable, StdFs), deno_node::deno_node::init_ops::<crate::RuntimeNodeEnv>( options.npm_resolver, + options.node_fs, ), // Runtime ops that are always initialized for WebWorkers ops::web_worker::deno_web_worker::init_ops(), diff --git a/runtime/worker.rs b/runtime/worker.rs index 5cd60604d..56684e992 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -33,7 +33,6 @@ use deno_core::SourceMapGetter; use deno_fs::StdFs; use deno_io::Stdio; use deno_kv::sqlite::SqliteDbHandler; -use deno_node::NpmResolver; use deno_tls::rustls::RootCertStore; use deno_web::BlobStore; use log::debug; @@ -94,7 +93,8 @@ pub struct WorkerOptions { /// If not provided runtime will error if code being /// executed tries to load modules. pub module_loader: Rc<dyn ModuleLoader>, - pub npm_resolver: Option<Rc<dyn NpmResolver>>, + pub node_fs: Option<Arc<dyn deno_node::NodeFs>>, + pub npm_resolver: Option<Arc<dyn deno_node::NpmResolver>>, // Callbacks invoked when creating new instance of WebWorker pub create_web_worker_cb: Arc<ops::worker_host::CreateWebWorkerCb>, pub web_worker_preload_module_cb: Arc<ops::worker_host::WorkerEventCb>, @@ -164,6 +164,7 @@ impl Default for WorkerOptions { broadcast_channel: Default::default(), source_map_getter: Default::default(), root_cert_store: Default::default(), + node_fs: Default::default(), npm_resolver: Default::default(), blob_store: Default::default(), extensions: Default::default(), @@ -268,6 +269,7 @@ impl MainWorker { deno_fs::deno_fs::init_ops::<_, PermissionsContainer>(unstable, StdFs), deno_node::deno_node::init_ops::<crate::RuntimeNodeEnv>( options.npm_resolver, + options.node_fs, ), // Ops from this crate ops::runtime::deno_runtime::init_ops(main_module.clone()), |