fix(swc_core): Correctly expose plugin with host (#7427)

**Description:**

Following up https://github.com/swc-project/swc/pull/7422, `swc_core::plugin` itself is not exposed to `__plugin_transform_host`, so still not able to access the inner plugin proxy.
This commit is contained in:
OJ Kwon 2023-05-21 22:27:01 -07:00 committed by GitHub
parent 7964e1cb78
commit 558ca40b99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 69 additions and 9 deletions

View File

@ -12,8 +12,18 @@ pub mod quote;
pub extern crate swc_ecma_quote_macros;
// Plugins
#[cfg(feature = "__common_plugin_transform")]
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
#[cfg(any(
docsrs,
feature = "__common_plugin_transform",
feature = "__plugin_transform_host"
))]
#[cfg_attr(
docsrs,
doc(cfg(any(
feature = "__common_plugin_transform",
feature = "__plugin_transform_host"
)))
)]
pub mod plugin;
#[cfg(feature = "__ecma")]

View File

@ -1,7 +1,32 @@
// #[plugin_transform] macro
#[cfg(any(docsrs, feature = "__common_plugin_transform"))]
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
pub use swc_plugin_macro::{css_plugin_transform, plugin_transform};
#[cfg(any(
docsrs,
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
))]
#[cfg_attr(
docsrs,
doc(cfg(any(
feature = "__common_plugin_transform",
feature = "__css_plugin_transform"
)))
)]
pub use swc_plugin_macro::css_plugin_transform;
#[cfg(any(
docsrs,
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
feature = "__ecma_plugin_transform"
))]
#[cfg_attr(
docsrs,
doc(cfg(any(
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
feature = "__ecma_plugin_transform"
)))
)]
pub use swc_plugin_macro::plugin_transform;
/// exported __alloc / __free fn for the guest (plugin)
/// allows to allocate memory from the host side.
@ -13,8 +38,20 @@ pub mod memory {
/// Global HANDLER implementation for the plugin
/// for error reporting.
#[cfg(any(docsrs, feature = "__common_plugin_transform"))]
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
#[cfg(any(
docsrs,
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
feature = "__ecma_plugin_transform"
))]
#[cfg_attr(
docsrs,
doc(cfg(any(
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
feature = "__ecma_plugin_transform"
)))
)]
pub mod errors {
/// global context HANDLER in plugin's transform function.
pub static HANDLER: swc_plugin::pseudo_scoped_key::PseudoScopedKey<
@ -25,14 +62,27 @@ pub mod errors {
}
/// Plugin's environment metadata context.
#[cfg(any(docsrs, feature = "__common_plugin_transform"))]
#[cfg_attr(docsrs, doc(cfg(feature = "__common_plugin_transform")))]
#[cfg(any(
docsrs,
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
feature = "__ecma_plugin_transform"
))]
#[cfg_attr(
docsrs,
doc(cfg(any(
feature = "__common_plugin_transform",
feature = "__css_plugin_transform",
feature = "__ecma_plugin_transform"
)))
)]
pub mod metadata {
pub use swc_common::plugin::metadata::TransformPluginMetadataContextKind;
pub use swc_plugin_proxy::TransformPluginProgramMetadata;
}
/// Proxy to the host's data not attached to the AST, like sourcemap / comments.
/// Or interfaces to setup the plugin's environment from the host.
#[cfg(any(
docsrs,
feature = "__common_plugin_transform",