rspack_binding_api 0.101.5

Rspack shared binding API
Documentation
mod raw_incremental;

use napi_derive::napi;
pub use raw_incremental::RawIncremental;
use rspack_core::{Experiments, runtime_mode::RuntimeMode};
use rspack_regex::RspackRegex;

use super::WithFalse;

#[derive(Debug)]
#[napi(object, object_to_js = false)]
pub struct RawExperiments {
  #[napi(ts_type = "false | Array<RegExp>")]
  pub use_input_file_system: Option<WithFalse<Vec<RspackRegex>>>,
  pub css: Option<bool>,
  pub defer_import: bool,
  pub source_import: bool,
  pub pure_functions: bool,
  #[napi(ts_type = "\"webpack\" | \"rspack\"")]
  pub runtime_mode: Option<String>,
}

impl From<RawExperiments> for Experiments {
  fn from(value: RawExperiments) -> Self {
    let runtime_mode = if value.runtime_mode.as_deref() == Some("rspack") {
      RuntimeMode::Rspack
    } else {
      RuntimeMode::Webpack
    };

    Self {
      css: value.css.unwrap_or(false),
      defer_import: value.defer_import,
      source_import: value.source_import,
      pure_functions: value.pure_functions,
      runtime_mode,
    }
  }
}