swc_plugin_runner/
lib.rs

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/**
21 * Creates an executor to run plugin binaries.
22 */
23#[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}