summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-04-24 19:44:35 -0400
committerGitHub <noreply@github.com>2023-04-24 19:44:35 -0400
commitaa286fdecb15461ef8ddd4c372f5a13e01e1cb7b (patch)
tree47ddc4e428b650fae536c3c1eb73ae5a64c4fe6a /runtime
parentbb74e75a049768c2949aa08de6752a16813b97de (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.rs3
-rw-r--r--runtime/examples/hello_runtime.rs1
-rw-r--r--runtime/lib.rs1
-rw-r--r--runtime/web_worker.rs5
-rw-r--r--runtime/worker.rs6
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()),