next.js/crates/next-napi-bindings/src/css/mod.rs
mod.rs37 lines1.2 KB
use napi::{CallContext, JsObject, JsUnknown};
use napi_derive::{js_function, module_exports, napi};
use next_core::next_config::lightningcss_feature_names_to_mask;

#[allow(clippy::not_unsafe_ptr_arg_deref)]
#[js_function(1)]
fn transform(ctx: CallContext) -> napi::Result<JsUnknown> {
    lightningcss_napi::transform(ctx)
}

#[allow(clippy::not_unsafe_ptr_arg_deref)]
#[js_function(1)]
fn transform_style_attribute(ctx: CallContext) -> napi::Result<JsUnknown> {
    lightningcss_napi::transform_style_attribute(ctx)
}

/// Convert an array of dash-case feature name strings to a lightningcss
/// `Features` bitmask (u32). Called from the webpack lightningcss-loader to
/// avoid duplicating the name-to-bit mapping in JavaScript.
#[napi]
#[allow(dead_code)]
fn lightningcss_feature_names_to_mask_napi(names: Vec<String>) -> napi::Result<u32> {
    lightningcss_feature_names_to_mask(&names)
        .map_err(|e| napi::Error::from_reason(format!("{}", e)))
}

#[cfg_attr(not(target_arch = "wasm32"), module_exports)]
fn init(mut exports: JsObject) -> napi::Result<()> {
    exports.create_named_method("lightningCssTransform", transform)?;
    exports.create_named_method(
        "lightningCssTransformStyleAttribute",
        transform_style_attribute,
    )?;

    Ok(())
}
Quest for Codev2.0.0
/
SIGN IN