use napi_derive::napi;
#[napi(object)]
pub struct JsAssetInfoRelated {
pub source_map: Option<String>,
}
impl From<JsAssetInfoRelated> for rspack_core::AssetInfoRelated {
fn from(i: JsAssetInfoRelated) -> Self {
Self {
source_map: i.source_map,
}
}
}
#[napi(object)]
pub struct JsAssetInfo {
pub immutable: Option<bool>,
pub minimized: Option<bool>,
pub fullhash: Vec<String>,
pub chunkhash: Vec<String>,
pub contenthash: Vec<String>,
pub source_filename: Option<String>,
pub copied: Option<bool>,
pub development: Option<bool>,
pub hot_module_replacement: Option<bool>,
pub javascript_module: Option<bool>,
pub related: JsAssetInfoRelated,
pub css_unused_idents: Option<Vec<String>>,
pub extras: serde_json::Map<String, serde_json::Value>,
pub is_over_size_limit: Option<bool>,
}
impl From<JsAssetInfo> for rspack_core::AssetInfo {
fn from(i: JsAssetInfo) -> Self {
Self {
immutable: i.immutable,
minimized: i.minimized,
development: i.development,
hot_module_replacement: i.hot_module_replacement,
chunk_hash: i.chunkhash.into_iter().collect(),
related: i.related.into(),
full_hash: i.fullhash.into_iter().collect(),
content_hash: i.contenthash.into_iter().collect(),
version: String::from(""),
source_filename: i.source_filename,
copied: i.copied,
javascript_module: i.javascript_module,
css_unused_idents: i.css_unused_idents.map(|i| i.into_iter().collect()),
extras: i.extras,
is_over_size_limit: i.is_over_size_limit,
}
}
}
#[napi(object)]
pub struct JsAsset {
pub name: String,
pub info: JsAssetInfo,
}
impl From<rspack_core::AssetInfoRelated> for JsAssetInfoRelated {
fn from(related: rspack_core::AssetInfoRelated) -> Self {
Self {
source_map: related.source_map,
}
}
}
impl From<rspack_core::AssetInfo> for JsAssetInfo {
fn from(info: rspack_core::AssetInfo) -> Self {
Self {
immutable: info.immutable,
minimized: info.minimized,
development: info.development,
hot_module_replacement: info.hot_module_replacement,
related: info.related.into(),
chunkhash: info.chunk_hash.into_iter().collect(),
fullhash: info.full_hash.into_iter().collect(),
contenthash: info.content_hash.into_iter().collect(),
source_filename: info.source_filename,
copied: info.copied,
javascript_module: info.javascript_module,
css_unused_idents: info.css_unused_idents.map(|i| i.into_iter().collect()),
extras: info.extras,
is_over_size_limit: info.is_over_size_limit,
}
}
}
#[napi(object)]
pub struct JsAssetEmittedArgs {
pub filename: String,
pub output_path: String,
pub target_path: String,
}