Skip to content

Commit

Permalink
Add plugin loading (#9772)
Browse files Browse the repository at this point in the history
* Add plugin loading

* Remove adapters
  • Loading branch information
MonicaOlejniczak authored Jun 6, 2024
1 parent 1daabf5 commit 98a6b8e
Show file tree
Hide file tree
Showing 27 changed files with 631 additions and 134 deletions.
5 changes: 5 additions & 0 deletions Cargo.lock

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

6 changes: 6 additions & 0 deletions crates/parcel/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,11 @@ description = "Parcel Bundler"
path = "./src/lib.rs"

[dependencies]
parcel_config = { path = "../parcel_config" }
parcel_core = { path = "../parcel_core" }
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" }

anyhow = "1.0.82"
7 changes: 7 additions & 0 deletions crates/parcel/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
#![deny(unused_crate_dependencies)]

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

pub mod parcel;
pub use parcel::*;
pub use parcel_filesystem as file_system;

#[allow(dead_code)]
mod plugins;
26 changes: 26 additions & 0 deletions crates/parcel/src/napi.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
mod napi_bundler_plugin;
pub use napi_bundler_plugin::*;

mod napi_compressor_plugin;
pub use napi_compressor_plugin::*;

mod napi_namer_plugin;
pub use napi_namer_plugin::*;

mod napi_optimizer_plugin;
pub use napi_optimizer_plugin::*;

mod napi_packager_plugin;
pub use napi_packager_plugin::*;

mod napi_reporter_plugin;
pub use napi_reporter_plugin::*;

mod napi_resolver_plugin;
pub use napi_resolver_plugin::*;

mod napi_runtime_plugin;
pub use napi_runtime_plugin::*;

mod napi_transformer_plugin;
pub use napi_transformer_plugin::*;
27 changes: 27 additions & 0 deletions crates/parcel/src/napi/napi_bundler_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use parcel_config::PluginNode;
use parcel_core::bundle_graph::BundleGraph;
use parcel_core::plugin::BundlerPlugin;
use parcel_core::plugin::PluginContext;

#[derive(Debug)]
pub struct NapiBundlerPlugin {
name: String,
}

impl NapiBundlerPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiBundlerPlugin {
name: plugin.package_name.clone(),
})
}
}

impl BundlerPlugin for NapiBundlerPlugin {
fn bundle(&self, bundle_graph: &mut BundleGraph) -> Result<(), anyhow::Error> {
todo!()
}

fn optimize(&self, bundle_graph: &mut BundleGraph) -> Result<(), anyhow::Error> {
todo!()
}
}
25 changes: 25 additions & 0 deletions crates/parcel/src/napi/napi_compressor_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
use std::fs::File;

use parcel_config::PluginNode;
use parcel_core::plugin::CompressedFile;
use parcel_core::plugin::CompressorPlugin;
use parcel_core::plugin::PluginContext;

#[derive(Debug)]
pub struct NapiCompressorPlugin {
name: String,
}

impl NapiCompressorPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Self {
NapiCompressorPlugin {
name: plugin.package_name.clone(),
}
}
}

impl CompressorPlugin for NapiCompressorPlugin {
fn compress(&self, _file: &File) -> Result<Option<CompressedFile>, String> {
todo!()
}
}
28 changes: 28 additions & 0 deletions crates/parcel/src/napi/napi_namer_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
use parcel_config::PluginNode;
use parcel_core::bundle_graph::BundleGraph;
use parcel_core::plugin::NamerPlugin;
use parcel_core::plugin::PluginContext;
use parcel_core::types::Bundle;

#[derive(Debug)]
pub struct NapiNamerPlugin {
name: String,
}

impl NapiNamerPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiNamerPlugin {
name: plugin.package_name.clone(),
})
}
}

impl NamerPlugin for NapiNamerPlugin {
fn name(
&self,
bundle: &Bundle,
bundle_graph: &BundleGraph,
) -> Result<Option<std::path::PathBuf>, anyhow::Error> {
todo!()
}
}
24 changes: 24 additions & 0 deletions crates/parcel/src/napi/napi_optimizer_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
use parcel_config::PluginNode;
use parcel_core::plugin::OptimizeContext;
use parcel_core::plugin::OptimizedBundle;
use parcel_core::plugin::OptimizerPlugin;
use parcel_core::plugin::PluginContext;

#[derive(Debug)]
pub struct NapiOptimizerPlugin {
name: String,
}

impl NapiOptimizerPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiOptimizerPlugin {
name: plugin.package_name.clone(),
})
}
}

impl OptimizerPlugin for NapiOptimizerPlugin {
fn optimize(&self, ctx: OptimizeContext) -> Result<OptimizedBundle, anyhow::Error> {
todo!()
}
}
24 changes: 24 additions & 0 deletions crates/parcel/src/napi/napi_packager_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
use parcel_config::PluginNode;
use parcel_core::plugin::PackageContext;
use parcel_core::plugin::PackagedBundle;
use parcel_core::plugin::PackagerPlugin;
use parcel_core::plugin::PluginContext;

#[derive(Debug)]
pub struct NapiPackagerPlugin {
name: String,
}

impl NapiPackagerPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiPackagerPlugin {
name: plugin.package_name.clone(),
})
}
}

impl PackagerPlugin for NapiPackagerPlugin {
fn package(&self, ctx: PackageContext) -> Result<PackagedBundle, anyhow::Error> {
todo!()
}
}
23 changes: 23 additions & 0 deletions crates/parcel/src/napi/napi_reporter_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
use parcel_config::PluginNode;
use parcel_core::plugin::PluginContext;
use parcel_core::plugin::ReporterEvent;
use parcel_core::plugin::ReporterPlugin;

#[derive(Debug)]
pub struct NapiReporterPlugin {
name: String,
}

impl NapiReporterPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Self {
NapiReporterPlugin {
name: plugin.package_name.clone(),
}
}
}

impl ReporterPlugin for NapiReporterPlugin {
fn report(&self, event: ReporterEvent) -> Result<(), anyhow::Error> {
todo!()
}
}
20 changes: 20 additions & 0 deletions crates/parcel/src/napi/napi_resolver_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
use parcel_config::PluginNode;
use parcel_core::plugin::PluginContext;
use parcel_core::plugin::Resolution;
use parcel_core::plugin::ResolveContext;
use parcel_core::plugin::ResolverPlugin;

#[derive(Debug)]
pub struct NapiResolverPlugin {}

impl NapiResolverPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiResolverPlugin {})
}
}

impl ResolverPlugin for NapiResolverPlugin {
fn resolve(&self, ctx: &ResolveContext) -> Result<Resolution, anyhow::Error> {
todo!()
}
}
29 changes: 29 additions & 0 deletions crates/parcel/src/napi/napi_runtime_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
use parcel_config::PluginNode;
use parcel_core::bundle_graph::BundleGraph;
use parcel_core::plugin::PluginContext;
use parcel_core::plugin::RuntimeAsset;
use parcel_core::plugin::RuntimePlugin;
use parcel_core::types::Bundle;

#[derive(Debug)]
pub struct NapiRuntimePlugin {
name: String,
}

impl NapiRuntimePlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiRuntimePlugin {
name: plugin.package_name.clone(),
})
}
}

impl RuntimePlugin for NapiRuntimePlugin {
fn apply(
&self,
bundle: Bundle,
bundle_graph: BundleGraph,
) -> Result<Option<Vec<RuntimeAsset>>, anyhow::Error> {
todo!()
}
}
57 changes: 57 additions & 0 deletions crates/parcel/src/napi/napi_transformer_plugin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
use parcel_config::PluginNode;
use parcel_core::plugin::GenerateOutput;
use parcel_core::plugin::PluginConfig;
use parcel_core::plugin::PluginContext;
use parcel_core::plugin::Resolve;
use parcel_core::plugin::TransformerPlugin;
use parcel_core::plugin::AST;
use parcel_core::types::Asset;

#[derive(Debug)]
pub struct NapiTransformerPlugin {
name: String,
}

impl NapiTransformerPlugin {
pub fn new(ctx: &PluginContext, plugin: &PluginNode) -> Result<Self, anyhow::Error> {
Ok(NapiTransformerPlugin {
name: plugin.package_name.clone(),
})
}
}

impl TransformerPlugin for NapiTransformerPlugin {
fn can_reuse_ast(&self, ast: AST) -> bool {
todo!()
}

fn parse(
&mut self,
config: &PluginConfig,
asset: &Asset,
resolve: &Resolve,
) -> Result<AST, anyhow::Error> {
todo!()
}

fn transform(
&mut self,
config: &PluginConfig,
asset: &mut Asset,
resolve: &Resolve,
) -> Result<Vec<Asset>, anyhow::Error> {
todo!()
}

fn post_process(
&mut self,
config: &PluginConfig,
assets: Vec<&Asset>,
) -> Result<Vec<Asset>, anyhow::Error> {
todo!()
}

fn generate(&self, asset: Asset, ast: AST) -> Result<GenerateOutput, anyhow::Error> {
todo!()
}
}
Loading

0 comments on commit 98a6b8e

Please sign in to comment.