Skip to content

Commit

Permalink
Added start of rpc implemention for Rust <-> JS plugins (#9777)
Browse files Browse the repository at this point in the history
* Added start of rpc implemention to talk to JS plugins

* Removing [lib]

* Changed naming order

* unit tests

* warnings and tests
  • Loading branch information
alshdavid authored Jun 7, 2024
1 parent a323b03 commit 466c61e
Show file tree
Hide file tree
Showing 34 changed files with 489 additions and 325 deletions.
11 changes: 11 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/node-bindings/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ openssl = ["sentry/native-tls"]
napi-derive = "2.16.3"
parcel-js-swc-core = { path = "../../packages/transformers/js/core" }
parcel-resolver = { path = "../../packages/utils/node-resolver-rs" }
parcel_plugin_rpc = { path = "../parcel_plugin_rpc", features = ["nodejs"] }
parcel = { path = "../parcel" }
dashmap = "5.4.0"
xxhash-rust = { version = "0.8.2", features = ["xxh3"] }
Expand Down
8 changes: 7 additions & 1 deletion crates/node-bindings/src/parcel/parcel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use napi_derive::napi;
use parcel::file_system::FileSystemRef;
use parcel::Parcel;
use parcel::ParcelOptions;
use parcel_plugin_rpc::nodejs::RpcHostNodejs;

use crate::file_system::FileSystemNapi;

Expand All @@ -24,14 +25,19 @@ impl ParcelNapi {
let thread_id = std::thread::current().id();
tracing::trace!(?thread_id, "parcel-napi initialize");

let rpc_host_nodejs = RpcHostNodejs::new();

let mut fs = None::<FileSystemRef>;

if options.has_named_property("fs")? {
let fs_raw: JsObject = options.get_named_property("fs")?;
fs.replace(Arc::new(FileSystemNapi::new(&env, fs_raw)?));
}

let parcel = Parcel::new(ParcelOptions { fs });
let parcel = Parcel::new(ParcelOptions {
fs,
rpc: Some(Arc::new(rpc_host_nodejs)),
});

Ok(Self {
internal: Arc::new(parcel),
Expand Down
1 change: 1 addition & 0 deletions crates/parcel/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ parcel_filesystem = { path = "../parcel_filesystem" }
parcel_package_manager = { path = "../parcel_package_manager" }
parcel_plugin_resolver = { path = "../parcel_plugin_resolver" }
parcel_plugin_transformer_js = { path = "../parcel_plugin_transformer_js" }
parcel_plugin_rpc = { path = "../parcel_plugin_rpc" }

anyhow = "1.0.82"
2 changes: 0 additions & 2 deletions crates/parcel/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

#[allow(dead_code)]
#[allow(unused_variables)]
mod napi;

pub mod parcel;
pub use parcel::*;
pub use parcel_filesystem as file_system;
Expand Down
27 changes: 0 additions & 27 deletions crates/parcel/src/napi/napi_bundler_plugin.rs

This file was deleted.

25 changes: 0 additions & 25 deletions crates/parcel/src/napi/napi_compressor_plugin.rs

This file was deleted.

28 changes: 0 additions & 28 deletions crates/parcel/src/napi/napi_namer_plugin.rs

This file was deleted.

24 changes: 0 additions & 24 deletions crates/parcel/src/napi/napi_optimizer_plugin.rs

This file was deleted.

24 changes: 0 additions & 24 deletions crates/parcel/src/napi/napi_packager_plugin.rs

This file was deleted.

23 changes: 0 additions & 23 deletions crates/parcel/src/napi/napi_reporter_plugin.rs

This file was deleted.

20 changes: 0 additions & 20 deletions crates/parcel/src/napi/napi_resolver_plugin.rs

This file was deleted.

29 changes: 0 additions & 29 deletions crates/parcel/src/napi/napi_runtime_plugin.rs

This file was deleted.

57 changes: 0 additions & 57 deletions crates/parcel/src/napi/napi_transformer_plugin.rs

This file was deleted.

9 changes: 8 additions & 1 deletion crates/parcel/src/parcel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,29 @@ use std::sync::Arc;
use parcel_filesystem::os_file_system::OsFileSystem;
use parcel_filesystem::FileSystemRef;
use parcel_package_manager::NodePackageManager;
use parcel_plugin_rpc::RpcHostRef;

pub struct Parcel {
pub fs: FileSystemRef,
pub rpc: Option<RpcHostRef>,
}

pub struct ParcelOptions {
pub fs: Option<FileSystemRef>,
pub rpc: Option<RpcHostRef>,
}

impl Parcel {
pub fn new(options: ParcelOptions) -> Self {
let fs = options
.fs
.unwrap_or_else(|| Arc::new(OsFileSystem::default()));

let _node_package_manager = NodePackageManager::new("project_root", fs.clone());

Self { fs }
Self {
fs,
rpc: options.rpc,
}
}
}
Loading

0 comments on commit 466c61e

Please sign in to comment.