1#![cfg_attr(not(feature = "__rkyv"), allow(warnings))]
2
3use std::sync::Arc;
4
5use swc_common::{plugin::metadata::TransformPluginMetadataContext, SourceMap};
6use transform_executor::TransformExecutor;
7
8pub mod cache;
9mod host_environment;
10#[cfg(feature = "__rkyv")]
11mod imported_fn;
12#[cfg(feature = "__rkyv")]
13mod memory_interop;
14pub mod plugin_module_bytes;
15mod transform_executor;
16pub mod wasix_runtime;
17
18use plugin_module_bytes::PluginModuleBytes;
19
20#[cfg(feature = "__rkyv")]
24pub fn create_plugin_transform_executor(
25 source_map: &Arc<SourceMap>,
26 unresolved_mark: &swc_common::Mark,
27 metadata_context: &Arc<TransformPluginMetadataContext>,
28 plugin_env_vars: Option<Arc<Vec<swc_atoms::Atom>>>,
29 plugin_module: Box<dyn PluginModuleBytes>,
30 plugin_config: Option<serde_json::Value>,
31 runtime: Option<Arc<dyn wasmer_wasix::Runtime + Send + Sync>>,
32) -> TransformExecutor {
33 TransformExecutor::new(
34 plugin_module,
35 source_map,
36 unresolved_mark,
37 metadata_context,
38 plugin_env_vars,
39 plugin_config,
40 runtime,
41 )
42}
43
44#[cfg(not(feature = "__rkyv"))]
45pub fn create_plugin_transform_executor(
46 source_map: &Arc<SourceMap>,
47 unresolved_mark: &swc_common::Mark,
48 metadata_context: &Arc<TransformPluginMetadataContext>,
49 plugin_env_vars: Option<Arc<Vec<swc_atoms::Atom>>>,
50 plugin_module: Box<dyn PluginModuleBytes>,
51 plugin_config: Option<serde_json::Value>,
52 runtime: Option<()>,
53) -> TransformExecutor {
54 unimplemented!("Transform plugin cannot be used without serialization support")
55}