diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-05-04 14:28:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-04 14:28:42 -0400 |
commit | 5270c43e412cc636cd9923182169d166d181f78a (patch) | |
tree | 640c90a70f7dd7bc91f5e942e1eaa5a7914ae46b /cli | |
parent | 4b645676d62fd595ecac47e24be1b83a3ba636c6 (diff) |
refactor(ext/fs): boxed deno_fs::FileSystem (#18945)
1. Boxed `File` and `FileSystem` to allow more easily passing this
through the CLI code (as shown within this pr).
2. `StdFileResource` is now `FileResource`. `FileResource` now contains
an `Rc<dyn File>`.
Diffstat (limited to 'cli')
-rw-r--r-- | cli/build.rs | 9 | ||||
-rw-r--r-- | cli/factory.rs | 4 | ||||
-rw-r--r-- | cli/standalone/mod.rs | 2 | ||||
-rw-r--r-- | cli/worker.rs | 36 |
4 files changed, 17 insertions, 34 deletions
diff --git a/cli/build.rs b/cli/build.rs index 21f8c229a..6cedb53ce 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -9,7 +9,6 @@ use deno_core::Extension; use deno_core::ExtensionFileSource; use deno_core::ExtensionFileSourceCode; use deno_runtime::deno_cache::SqliteBackedCache; -use deno_runtime::deno_fs::StdFs; use deno_runtime::deno_kv::sqlite::SqliteDbHandler; use deno_runtime::permissions::PermissionsContainer; use deno_runtime::*; @@ -361,11 +360,11 @@ fn create_cli_snapshot(snapshot_path: PathBuf) { deno_napi::deno_napi::init_ops::<PermissionsContainer>(), deno_http::deno_http::init_ops(), deno_io::deno_io::init_ops(Default::default()), - deno_fs::deno_fs::init_ops::<_, PermissionsContainer>(false, StdFs), - deno_node::deno_node::init_ops::<PermissionsContainer>( - None, - Some(Arc::new(deno_node::RealFs)), + deno_fs::deno_fs::init_ops::<PermissionsContainer>( + false, + Arc::new(deno_fs::RealFs), ), + deno_node::deno_node::init_ops::<PermissionsContainer>(None, None), cli::init_ops_and_esm(), // NOTE: This needs to be init_ops_and_esm! ]; diff --git a/cli/factory.rs b/cli/factory.rs index 73d0cb8ea..295794a51 100644 --- a/cli/factory.rs +++ b/cli/factory.rs @@ -42,6 +42,7 @@ use crate::worker::HasNodeSpecifierChecker; use deno_core::error::AnyError; use deno_core::parking_lot::Mutex; +use deno_runtime::deno_fs; use deno_runtime::deno_node; use deno_runtime::deno_node::analyze::NodeCodeTranslator; use deno_runtime::deno_node::NodeResolver; @@ -553,6 +554,7 @@ impl CliFactory { let node_code_translator = self.node_code_translator().await?.clone(); let options = self.cli_options().clone(); let main_worker_options = self.create_cli_main_worker_options()?; + let fs = Arc::new(deno_fs::RealFs); let node_fs = self.node_fs().clone(); let root_cert_store_provider = self.root_cert_store_provider().clone(); let node_resolver = self.node_resolver().await?.clone(); @@ -579,6 +581,7 @@ impl CliFactory { ), )), root_cert_store_provider.clone(), + fs.clone(), node_fs.clone(), maybe_inspector_server.clone(), main_worker_options.clone(), @@ -610,6 +613,7 @@ impl CliFactory { ), )), self.root_cert_store_provider().clone(), + Arc::new(deno_fs::RealFs), self.node_fs().clone(), self.maybe_inspector_server().clone(), self.create_cli_main_worker_options()?, diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 2ef21d417..0f65db679 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -30,6 +30,7 @@ use deno_core::ModuleSpecifier; use deno_core::ModuleType; use deno_core::ResolutionKind; use deno_graph::source::Resolver; +use deno_runtime::deno_fs; use deno_runtime::deno_node; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_tls::rustls::RootCertStore; @@ -253,6 +254,7 @@ pub async fn run( BlobStore::default(), Box::new(module_loader_factory), root_cert_store_provider, + Arc::new(deno_fs::RealFs), node_fs, None, CliMainWorkerOptions { diff --git a/cli/worker.rs b/cli/worker.rs index ae8822fe4..5216af263 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -18,6 +18,7 @@ use deno_core::SharedArrayBufferStore; use deno_core::SourceMapGetter; use deno_runtime::colors; use deno_runtime::deno_broadcast_channel::InMemoryBroadcastChannel; +use deno_runtime::deno_fs; use deno_runtime::deno_node; use deno_runtime::deno_node::NodeResolution; use deno_runtime::deno_node::NodeResolver; @@ -97,6 +98,7 @@ struct SharedWorkerState { compiled_wasm_module_store: CompiledWasmModuleStore, module_loader_factory: Box<dyn ModuleLoaderFactory>, root_cert_store_provider: Arc<dyn RootCertStoreProvider>, + fs: Arc<dyn deno_fs::FileSystem>, node_fs: Arc<dyn deno_node::NodeFs>, maybe_inspector_server: Option<Arc<InspectorServer>>, } @@ -308,6 +310,7 @@ impl CliMainWorkerFactory { blob_store: BlobStore, module_loader_factory: Box<dyn ModuleLoaderFactory>, root_cert_store_provider: Arc<dyn RootCertStoreProvider>, + fs: Arc<dyn deno_fs::FileSystem>, node_fs: Arc<dyn deno_node::NodeFs>, maybe_inspector_server: Option<Arc<InspectorServer>>, options: CliMainWorkerOptions, @@ -325,6 +328,7 @@ impl CliMainWorkerFactory { compiled_wasm_module_store: Default::default(), module_loader_factory, root_cert_store_provider, + fs, node_fs, maybe_inspector_server, }), @@ -445,6 +449,7 @@ impl CliMainWorkerFactory { should_break_on_first_statement: shared.options.inspect_brk, should_wait_for_inspector_session: shared.options.inspect_wait, module_loader, + fs: shared.fs.clone(), node_fs: Some(shared.node_fs.clone()), npm_resolver: Some(shared.npm_resolver.clone()), get_error_class_fn: Some(&errors::get_error_class_name), @@ -570,6 +575,7 @@ fn create_web_worker_callback( format_js_error_fn: Some(Arc::new(format_js_error)), source_map_getter: maybe_source_map_getter, module_loader, + fs: shared.fs.clone(), node_fs: Some(shared.node_fs.clone()), npm_resolver: Some(shared.npm_resolver.clone()), worker_type: args.worker_type, @@ -597,13 +603,8 @@ fn create_web_worker_callback( #[cfg(test)] mod tests { - use std::rc::Rc; - use super::*; use deno_core::resolve_path; - use deno_core::FsModuleLoader; - use deno_runtime::deno_broadcast_channel::InMemoryBroadcastChannel; - use deno_runtime::deno_web::BlobStore; use deno_runtime::permissions::Permissions; fn create_test_worker() -> MainWorker { @@ -612,31 +613,8 @@ mod tests { let permissions = PermissionsContainer::new(Permissions::default()); let options = WorkerOptions { - bootstrap: BootstrapOptions::default(), - extensions: vec![], startup_snapshot: Some(crate::js::deno_isolate_init()), - unsafely_ignore_certificate_errors: None, - root_cert_store_provider: None, - seed: None, - format_js_error_fn: None, - source_map_getter: None, - web_worker_preload_module_cb: Arc::new(|_| unreachable!()), - web_worker_pre_execute_module_cb: Arc::new(|_| unreachable!()), - create_web_worker_cb: Arc::new(|_| unreachable!()), - maybe_inspector_server: None, - should_break_on_first_statement: false, - should_wait_for_inspector_session: false, - module_loader: Rc::new(FsModuleLoader), - node_fs: Some(Arc::new(deno_node::RealFs)), - npm_resolver: None, - get_error_class_fn: None, - cache_storage_dir: None, - origin_storage_dir: None, - blob_store: BlobStore::default(), - broadcast_channel: InMemoryBroadcastChannel::default(), - shared_array_buffer_store: None, - compiled_wasm_module_store: None, - stdio: Default::default(), + ..Default::default() }; MainWorker::bootstrap_from_options(main_module, permissions, options) |